This document defines the sustainable project layout for the mutable repository surface.
The repository root is intentionally narrow.
Mutable root files are limited to:
README.md.codex/AGENTS.mdCONTRIBUTING.mdCODE_OF_CONDUCT.md- build/config roots such as
pyproject.toml,Makefile,.gitignore,LICENSE
The repo also carries one allowed root metadata directory:
.ssot/— canonical machine-readable registry material for the package governance graph
Canonical current-state, delivery-note, and root-report material lives under:
docs/review/conformance/state/docs/review/conformance/delivery/docs/review/conformance/reports/
New operational, design, governance, or progress notes must not be added to root. New documentation belongs under docs/. The root is for package entrypoints and narrow community entrypoints only.
New mutable docs land in short, purpose-scoped folders:
docs/ops/— operator-facing CLI and public-surface docsdocs/gov/— governancedocs/comp/— comparison matricesdocs/notes/— mutable notes and current work trackingdocs/adr/— architecture decisionsdocs/review/— review and conformance materialdocs/protocols/— protocol-specific technical docsdocs/architecture/— architecture explanationsdocs/release-notes/- maintained release notes
Each mutable folder should carry:
MUT.json— folder mutability metadata- a pointer/index file such as
README.mdorIDX.md
These limits are mandatory for new or renamed mutable paths from this checkpoint onward:
- file name length:
<= 24 - folder name length:
<= 16 - full relative path length:
<= 120
Use abbreviations only when they remain obvious, searchable, and stable.
Pre-existing legacy paths are grandfathered until they are explicitly migrated. The root current-state, delivery-note, and RFC-report Markdown files have already been migrated into docs/review/conformance/. Remaining exceptions primarily cover:
- preserved release/conformance artifact trees
- pre-existing ADR names
- pre-existing example paths
- pre-existing test/tool paths
- pre-existing performance-artifact paths
- other legacy mutable support files explicitly listed in the root
MUT.json
Grandfathered paths are not a license to create new violations.
Every major mutable folder must have a human pointer file that answers:
- what belongs here
- what is immutable here
- where the canonical current-state source is
- what the next folder to read is
MUT.json is the canonical folder-state marker.
Nearest-ancestor-wins:
- look for
MUT.jsonin the target folder - if absent, walk upward
- the first marker found defines the folder state
Allowed states:
mutableimmutablemixed
README.md.codex/AGENTS.mddocs/review/conformance/state/CURRENT_REPOSITORY_STATE.mddocs/review/conformance/CERTIFICATION_BOUNDARY.mddocs/review/conformance/BOUNDARY_NON_GOALS.mddocs/review/conformance/README.md- the relevant folder
README.md/IDX.md
Run:
python tools/govchk.py state PATHpython tools/govchk.py scan
before closing a documentation/layout change.