Documentation Governance
September 5, 2026 · View on GitHub
Purpose
Define a single, explicit documentation hierarchy and update protocol to prevent drift across architecture, decisions, and onboarding docs.
The map
docs/README.md is the documentation index — the front door for adopters. Every user-facing doc must be reachable from it; anything not linked from its sections 1–7 is internal process material (specs, plans, handoffs, research) and is not maintained as a current reference.
Canonical Hierarchy
When documents disagree, use this precedence order:
docs/decisions/*.mdand ADR-status files indocs/architecture/(enforcement-boundary.md,trust-and-failure-model.md)docs/rfcs/*.mdwithStatus: Approvedfor active roadmap commitmentsPROJECT_DETAILS.mdfor architecture and system behavior- Generated artifacts (
docs/api-inventory.md,docs/openapi/*.json) for route-level facts — regenerate, never hand-edit README.md,QUICK-START.md, and the guides underdocs/(concepts, integrations, operations, troubleshooting) for onboarding and usageCLAUDE.md/AGENTS.mdfor coding-agent handoff notes (non-canonical, but kept current)
Architecture-governed docs (metadata header required)
PROJECT_DETAILS.mddocs/architecture/enforcement-boundary.mdanddocs/architecture/trust-and-failure-model.md(ADRs — change by superseding, not by editing)THESIS.mdfor the canonical product boundary and supported object modeldocs/decisions/*.mdand approved RFCsdocs/sdk-parity.md,docs/sdk-reference.mddocs/hosted-deployment-runbook.md,docs/instant-trial-vercel-setup.md
Every architecture-governed document must begin with:
---
source-of-truth: true|false
owner: <role-or-team>
last-verified: YYYY-MM-DD
doc-type: architecture|decision|rfc|status|governance|pointer
---
Handoff / onboarding docs (keep current when workflows change)
README.md,QUICK-START.md,CONTRIBUTING.mddocs/README.md(the index — update it when adding or retiring any user-facing doc)docs/concepts.md,docs/operations.md,docs/troubleshooting.mddocs/integrations/*.md,docs/agent-bootstrap.md,docs/client-setup-guide.mdCLAUDE.md
Update Protocol
- Update the canonical source first using the hierarchy above.
- If behavior changed, add or update a decision doc in
docs/decisions/(or supersede the relevant ADR). - Synchronize dependent docs in the same PR — and if a doc was added, retired, or renamed, update
docs/README.md. - Set
last-verifiedto the merge date of the change. - Counts (routes, SDK methods, MCP tools, policy types) are gated by
node scripts/check-doc-counts.mjs --strict— cite a derived number, then register the citation in that script'sCOUNT_CHECKSso it cannot rot silently. - Enforcement claims follow the copy rule in
docs/architecture/enforcement-boundary.md: say "blocks" without qualification only where enforcement is mechanical.