Data Model: docs/plans Tier 3 Closeout (Scope A)
Docs + a small vocabulary change. Entities and invariants:
doc_status vocabulary
DocStatus StrEnum (scripts/docs/frontmatter_backfill.py) mirrors it.
closeout is NOT a member (it is a point-in-time / archive-directory convention → deprecated).
- Represents: the documentation-lifecycle controlled vocabulary.
- Authority: directive
042-common-docs(closed set: draft/active/deprecated/superseded); the - New member:
durable— reserved, never-retire. - Invariant: every validation site accepts the full set;
durable ∉ point_in_time_markers;
Domain plan (throughline)
body in the canonical §1–§6 shape.
- Represents: a durable, version-spanning plan for one domain.
- Fields: frontmatter (
title,description≤180,doc_status: durable,updated,related:); - Location invariant: under
docs/plans/domains/; reachable in one hop fromdocs/plans/index.md. - Instances:
saas-hosted-sync,doctrine-charter(migrated),packs-extraction,api-dashboard(new). - Boundary invariant: packs-extraction non-goals doctrine-charter §3.2; api-dashboard non-goals §3.6.
Retire candidate
status (retired | deferred | not-retireable).
roadmap is deferred (C-001).
- Represents: a
docs/plansdocument/cluster proposed for retirement. - Fields: path; backing-evidence citation; retire mechanism (
deprecated-in-place | move-to-archive); - Invariant (NFR-002): content is never deleted; retirement preserves it + carries evidence. The