Documentation governance
This page defines how Vox documentation is organized and how to keep it from drifting.
Authority map
| Surface | Primary audience | Owns | Must not become |
|---|---|---|---|
README.md | evaluators, first-time visitors | short front door, quick start, tone, links into the book | a second FAQ or architecture dump |
docs/src/index.md | site visitors | site landing page, current product narrative, reader-first navigation | a contributor policy page |
docs/src/explanation/faq.md | readers and evaluators | common product and architecture questions | a troubleshooting runbook |
docs/src/how-to/troubleshooting-faq.md | operators and contributors | operational fixes and environment troubleshooting | the main public FAQ |
AGENTS.md | contributors and agents | required cross-tool contributor policy, secret-management entry point, short architecture pointers | the general table of contents for the whole repo or a tool-specific troubleshooting log |
docs/src/reference/ | readers and contributors | lookup material, contracts mirrored in prose, stable operational references | speculative planning or marketing copy |
docs/src/architecture/ | contributors | current architecture, authority maps, research, and roadmaps | quick-start or beginner onboarding |
docs/src/contributors/ | contributors | contributor hub, documentation governance, contributor-facing process guidance | public product marketing |
docs/agents/ | contributors and automation | inventories, governance, machine-oriented support docs | duplicated public documentation |
contracts/ | code and CI | machine-readable specs and schemas | long-form human explanation |
Taxonomy
Folder placement communicates ownership. Frontmatter communicates how a page should appear in the book.
Category vocabulary
Use one of these category values in frontmatter:
category | Meaning |
|---|---|
getting-started | first-stop pages and front-door onboarding |
tutorial | guided learning |
how-to | goal-oriented instructions |
explanation | conceptual understanding |
reference | stable lookup information |
adr | architecture decisions |
architecture | current architecture, authority maps, research indexes, roadmaps |
ci | CI and quality-specific references |
contributor | contributor-facing governance and process docs |
Alias compatibility exists for a few legacy values, but new docs should use the canonical forms above.
Status vocabulary
Use status when the distinction matters to readers:
status | Use for |
|---|---|
current | documented behavior or process the repo actively relies on |
experimental | implemented but intentionally unstable or gated |
legacy | still present but not the preferred path |
research | investigation, findings, or synthesis not equivalent to shipped behavior |
roadmap | future-facing implementation plans |
deprecated | retained only for migration or compatibility notice |
Do not use status to make aspirational pages sound shipped.
Frontmatter starter template
Use this template for new pages so docs lint passes on first run:
---
title: "Page title"
description: "One specific sentence about what this page covers."
category: "architecture"
status: "roadmap"
last_updated: 2026-04-06
training_eligible: true
---
Fast local lint loop:
cargo run -p vox-doc-pipeline -- --lint-only --paths architecture/my-page.mdcargo run -p vox-doc-pipeline -- --lint-only --paths architecture/my-page.md --fix
Authoring guardrail:
- Do not start a line with a single backtick in prose (for example
`vox ...at line start). Use normal prose with inline code or a full triple-backtick fence.
Authority tiers (A-D)
Use one authority tier per documentation domain. The canonical registry is
contracts/documentation/canonical-map.v1.yaml.
| Tier | Meaning | Typical location | CI expectation |
|---|---|---|---|
A-spec | normative machine-readable contract | contracts/, schema-backed registries | contract validator must pass |
B-canon | one canonical human page for the domain | usually docs/src/reference/ (or one ADR) | no second canon for same domain id |
C-generated | code-derived docs | *.generated.md and include fragments | generation verify command must pass |
D-index | navigation, index, compatibility stubs, research maps | architecture/ci pointers and index pages | must link to canon, not restate canonical behavior |
Rules:
- Do not label a page as "SSOT" unless it is the sole
B-canonpage for its domain id in the canonical map. D-indexpages should summarize links only. If behavior text duplicates aB-canonpage, remove it.
Placement guide
When adding or moving a page:
- If the source of truth is machine-readable, put the contract in
contracts/and link to it fromdocs/src/reference/. - Register the domain in
contracts/documentation/canonical-map.v1.yamlwithspec_paths, onecanon_doc, and any alias stubs. - If the subject is a communication protocol or transport boundary, make the machine-readable artifact discoverable from
contracts/index.yamland mirror it from one canonicaldocs/src/reference/page. - If the page teaches or explains the user-facing language, keep it in
docs/src/. - If the page is mainly for contributors or automation, prefer
docs/src/contributors/ordocs/agents/. - If the page is research or planning, keep it under
docs/src/architecture/and label it clearly withstatus: researchorstatus: roadmap. - If a page exists only as a compatibility stub, make it a short redirect and avoid duplicating the canonical content.
Claim policy
Forward-facing docs should describe the architecture that exists now.
Prefer:
- "Vox documents a compiler pipeline that generates Rust and TypeScript artifacts."
- "Mens currently defaults to code-oriented training lanes."
- "This page is research, not a claim that the capability is fully shipped."
Avoid:
- "Vox already does everything in this section automatically" unless the code path is current and documented.
- "Mens answers architecture questions" unless that retrieval or QA path is explicitly wired and tested.
- "SSOT" in titles when the page is only a convenience summary, pointer, or index.
Maintenance protocol
Use this lightweight review matrix for high-drift surfaces:
| If you change | Also review |
|---|---|
| authority ownership, stubs, or canonical pathing | contracts/documentation/canonical-map.v1.yaml, vox ci check-docs-ssot, and affected alias pages |
crates/vox-cli/src/** command surface | docs/src/reference/cli.md, command-compliance docs, contributor references that mention the command |
| secret or env handling | AGENTS.md, Clavis SSOT |
| agent instruction layering or shell-discipline policy | AGENTS.md, Agent instruction architecture, and relevant tool-specific overlays such as GEMINI.md |
| doc structure, nav, or new pages | this page, docs/src/adr/002-diataxis-doc-architecture.md, docs/src/SUMMARY.md |
| architecture claims | Doc-to-code acceptance checklist, relevant explanation/reference pages |
| contracts or schema-backed behavior | matching contracts/ files and the mirrored reference pages |
| communication protocols, transport routes, or streaming semantics | contracts/communication/protocol-catalog.yaml, Communication protocols reference, and the owning protocol page such as MCP / Populi / runtime docs |
| Mens training or corpus behavior | Mens native training SSOT, Mens training data contract |
Codex research_metrics, mesh/cost telemetry env knobs, or telemetry trust boundaries | Telemetry and research_metrics contract, env-vars, Telemetry trust SSOT |
vox-vscode/ (extension host, webview UI, Oratio/MCP wiring) | vox-vscode/README.md, VS Code to MCP compatibility; speech capture / Oratio pages when capture or tool surfaces change |
Review cadence
- Front door surfaces: review on every material product-language or contributor-experience change.
- Architecture and reference pages: review when the owning code path changes.
- Research and roadmap pages: keep their status current even if the implementation does not move.
- Contributor and governance pages: review whenever CI, inventory rules, or workflow expectations change.
Related
- Contributor hub
- Doc-to-code acceptance checklist
- Architectural governance (TOESTUB)
- Doc inventory verifier
Documentation Update Checklist
Before committing documentation to the repository, verify the following constraints:
- Syntax correctness: Code snippets must parse cleanly under current validation. Prefer
{{#include}}fromexamples/golden/where policy requires it. Machine-checked layout lives inexamples/examples.ssot.v1.yaml(mdbook_includes_resolve_to_existing_golden_voxinvox-compilertests). - Authority registration: New canonical pages must be reflected in
contracts/documentation/canonical-map.v1.yaml; aliases must remain link-only. - Status marker: Use
statusonly when needed (current,experimental,legacy,research,roadmap,deprecated). - Terminology: Use established nomenclature (Codex vs Arca, Mens vs Populi, Islands vs Components).
- Navigation integrity: If creating a user-facing document, verify
SUMMARY.mdis updated and passesvox-doc-pipeline --check.