Documentation Naming and Versioning
Status: Canonical Last Updated: 2026-02-06 Owner: Engineering
Purpose
This document defines the mandatory naming, versioning, and lifecycle rules
for all documentation within the /docs directory.
It ensures that documentation is:
- Discoverable
- Unambiguous
- Stable over time
- Safe for both human readers and AI execution agents
This document is authoritative and overrides all non-governance documents.
Scope
These rules apply to:
- All documentation under
/docs - All contributors (human and AI)
- All branches and environments
No exception exists unless explicitly documented here.
File Naming Standards
General Rules
- File names MUST be lowercase
- Words MUST be separated by hyphens
- File names MUST be descriptive and explicit
- Abbreviations SHOULD be avoided unless industry-standard
Examples:
- authz-and-roles.md
- data-retention.md
- rate-limits-and-abuse.md
Document Type Suffixes
The following suffixes are mandatory:
| Document Type | Required Suffix |
|---|---|
| Specification | .spec.md |
| User Flow | .flow.md |
| Architecture Decision Record | adr-XXXX-*.md |
| Templates | template.*.md |
| Draft / Placeholder | .new.md |
No other suffixes are permitted.
Directory-Based Semantics
Document meaning is determined by directory placement.
| Directory | Semantic Meaning |
|---|---|
| governance | How documentation works |
| contracts | System-wide invariants |
| architecture | Structural and technical design |
| specs | What is being built |
| flows | How users experience features |
| runbooks | Operational response |
| decisions | Historical context |
| testing | Verification artifacts |
| prompts | AI execution helpers |
Misplaced documents MUST be relocated.
Versioning Model
Default Rule
Documentation is versioned implicitly via Git history.
- No version numbers in filenames
- No semantic versioning in headers
- Git is the source of truth
Explicit Versioning (Exceptions)
Explicit version numbers MAY be used ONLY when:
- Required for regulatory or audit reasons
- Documenting external contracts or APIs
- Capturing immutable third-party terms
If used:
- Version MUST appear in the document header
- Version MUST NOT appear in the filename
- Version changes MUST be documented
Draft Lifecycle (.new.md)
Files suffixed with .new.md indicate:
- Draft or placeholder status
- Not yet authoritative
- Subject to change without migration guarantees
Rules:
.new.mdfiles MUST NOT be referenced as authoritative.new.mdfiles MUST be reviewed before promotion- Promotion occurs by removing
.newfrom filename
Promotion to Canonical
A document is considered canonical when:
- The
.newsuffix is removed (if present) - Status is marked as Canonical
- Content complies with governance and contracts
Canonical documents MUST NOT be renamed casually.
Renaming and Deprecation
Renaming Rules
- Renaming a canonical document requires justification
- References MUST be updated atomically
- Renames SHOULD preserve Git history
Deprecation Rules
When a document is deprecated:
- It MUST remain in the repo
- It MUST be clearly marked as Deprecated
- A replacement MUST be referenced if applicable
Documents MUST NOT be silently removed.
Cross-Document References
- References MUST use relative paths
- References MUST point to canonical documents
- Broken references are considered defects
Example reference format:
- docs/contracts/authz-and-roles.md
AI Execution Requirements
When used by Codex or other AI agents:
- File paths and names MUST be trusted
- Directory semantics MUST be respected
- AI agents MUST NOT invent filenames or locations
- Ambiguous references MUST halt execution
Non-Negotiable Rules
- Naming conveys meaning.
- Directory placement conveys authority.
.new.mdis non-authoritative by definition.- Git history is the version history.
- Governance documents override all others.
References
- docs/governance/doc-authority.new.md
End of Document