# Style Invariants - Maximum line length is 80 characters. - Markdown and RST files must respect the 80-character line-length limit. - Keep changes minimal and focused on the requested scope. - Preserve existing naming and structure unless change is required. - Do not introduce unrelated refactors in the same patch. - Keep API and UI terminology aligned with `contract.md`. - Prefer explicit, descriptive names over abbreviations. - Do not add inline comments unless needed for non-obvious logic. ## Docstring Rules - Every source file must have a module-level docstring explaining what the file does. - Every Python function must have a docstring. - Route handlers: audience is the API user; use Markdown. Separate internal developer notes with a line containing `---`. - All other Python: Sphinx style (`:param:`, `:returns:`, `:raises:`). - TypeScript: JSDoc style. - Every test function must have a docstring starting with "Ensure…" that describes the behaviour being verified. ## Environment Variables All environment variables must use the `DOCROOT_` prefix and be declared as fields in `app.settings.Settings`. Never read environment variables directly via `os.environ` or `os.getenv`.