Core Concepts.
Everything is a Markdown document with YAML frontmatter and defined sections. Requirements are authored as linked items, which is what makes the whole set testable and traceable.
One shape for every document.
Every kind shares one shape: frontmatter (typed metadata a JSON Schema checks) and required sections (the audit checks they're present and complete). Plain Markdown a person can read and a diff can review. Examples use Aurora, the fictional sample project; its people are invented.
---kind: charterproject: PRJ-001-AURid: AUR-chartersponsor: jordan.leestatus: approved---## ObjectiveCut median onboarding time from 14 days to under 2 days.## Success Criteria- Median onboarding time drops below 48 hours. - Manual setup tickets fall by at least 80%.
Every document belongs to a project.
Documents are organized project-first, and each project has a self-identifying id such as PRJ-001-AUR, which pairs a unique sequence with a short code. A project.md anchors each folder.
project.md # id: PRJ-001-AUR · code: AUR · sponsorcharter.md # id: AUR-charterbrd.md # items: AUR-BR-001, AUR-BR-002prd.md # items: AUR-PR-014 (traces: AUR-BR-001)…
The AUR- code namespaces every id, so AUR-BR-001 and ATL-BR-001 are different requirements in different projects, each globally unique and each declaring its own project. A generated projects.yaml registers them all.
Requirements are linked items.
The unit of traceability is the item: a bullet with a stable ID and typed links to what it depends on. That turns a pile of documents into a queryable graph.
**AUR-BR-001**: The business shall reduce onboarding time to under 2 days.**AUR-PR-014** (traces: AUR-BR-001): The product shall provide a self-serve flow.**AUR-AC-001** (verifies: AUR-PR-014): Given a new customer…, then an active account exists.**AUR-TC-001** (tests: AUR-AC-001): Complete the wizard → account active, zero tickets.
BR → PR → FR/NFR → AC → TC. Every hop is a typed link the pipeline checks: broken references block, and the matrix is generated from them.
Two tiers of checks.
The same split runs on every document and across the whole graph.
Twenty-one kinds, one pattern.
Each kind is a template + schema + criteria trio. Adding a kind means adding a trio, with no new code for the common cases.