How docs are organized for contributors and readers.
Русский (legacy; новые страницы — docs/ru/*.ru.md, гайд — эта страница EN).
| Path | Audience | MkDocs |
|---|---|---|
docs/user/ |
Operators (install, config, deploy, runbooks) | Yes — User Guide |
docs/contributor/ |
Developers (architecture, API, CI, security) | Yes — Contributor Guide |
docs/ru/ |
Russian (*.ru.md) |
Yes — Русский |
docs/index.md |
Doc home / cross-links | Yes — Home |
archive/internal/docs-legacy/ |
ML deep-dives, old flat names, checklists | No (repo-only) |
| Repo root | README*, CONTRIBUTING*, SECURITY*, release-readiness.md |
Linked from index |
Rule: new maintained pages go under user/, contributor/, or ru/ — not as docs/FOO.md at the top level.
- Add the Markdown file under the correct subtree.
- Register it in root
mkdocs.ymlnav(English and/or Русский). - Update docs/index.md or the section index (
user/index.md,contributor/index.md,ru/index.md). - Add a row to docs/_meta/docs_inventory.csv.
- Cross-link from related pages; keep EN + RU pairs in sync when both exist.
- Config: root
mkdocs.yml,docs_dir: docs. - App Python 3.11 vs MkDocs Python 3.12 — use
.venv-docs(requirements-docs.txt), not the app container. - Local:
python3 -m venv .venv-docs && .venv-docs/bin/pip install -r requirements-docs.txt && .venv-docs/bin/mkdocs serve - CI / release:
make ci-localrunsmkdocs build --strictvia.venv-docs. - Version banner: root
VERSIONmust matchmkdocs.ymlextra.site_version(scripts/check-docs-version.py).
Excluded from the site (exclude_docs in mkdocs.yml): archive/**, generated docs/api/**, docs/ui/**, and flat-name redirect stubs at docs/INSTALL.md, docs/CONFIGURATION.ru.md, etc. (generated by scripts/generate-doc-redirect-stubs.py).
Legacy URLs on GitHub Pages: mkdocs-redirects maps old flat names (e.g. INSTALL.md) to user/install.md. Regenerate stubs + redirect map after adding pages:
python3 scripts/generate-doc-redirect-stubs.py
python3 scripts/generate-doc-redirect-stubs.py --fix-changelog --no-stubsSITE_MAP guard: scripts/check_site_map_meta_paths.py skips when docs/SITE_MAP.md is absent or a redirect stub (legacy maps live under archive/internal/docs-legacy/).
- English is primary for new pages in
docs/user/anddocs/contributor/. - Russian uses
docs/ru/<name>.ru.mdwith a link to EN at the top when a pair exists. - Cross-links: prefer the same language; link to EN contributor pages when no RU file exists (e.g.
roadmap.md,ci-and-quality.md).
Use placeholders: YOUR_HOST, your-token, 203.0.113.10 (TEST-NET-3) — never production secrets or private IPs from deploy configs.
- EN updated;
*.ru.mdupdated when behavior or nav changes. - No new top-level
docs/LEGACY_NAME.mdwithout a migration plan. - Links use
user/,contributor/, orru/paths (or explicitarchive/internal/docs-legacy/for archived SSOT). -
mkdocs.ymlnav includes new public pages. -
docs/_meta/docs_inventory.csvrow added. - OpenAPI bulk regen (if any):
python3 scripts/merge_openapi_fragments.py+ contract tests.