repositoryStandards v1.1.20

What every shipped file is, and why

Generated, not written. Every row below comes from standard.manifest.json - the same data self-verify reads to decide whether your repo complies. A hand-written map would be a second description of the same thing, and second descriptions rot.

Read this when you are orienting: what is this folder, why does it exist, which rule made it so. The Rule column links the numbered rule in the spec that each entry enforces, so any row can be traced from "there is a file here" to "here is why the standard says so".

Adapt is how an entry lands in your repo when you align: copy arrives verbatim, merge is reconciled with what you already have, and fill-from-repo is a shell you author, because the standard never invents your content. Needed says whether a missing entry counts as drift, and at which profile (core is every repo; scale is teams).

This map is the index, not the manual. What each path is for, what belongs in it, what does not, and the decisions behind it are written up one page per path - open the path in the sidebar. Those pages live with the standard and are read at latest, rather than being copied into your repository as folder READMEs that then age in place.

At the root - what an agent and a reader meet first

PathWhat it is, and whyNeededAdaptRule
AGENTS.mdthe single agent entry pointrequired, corefill-from-repoR1
.standards-versionthe state this repo last aligned to - a bookmark the delta is measured from, never a version to stay at (ADR-025); written by align-to-standards / update-to-latestrequired, corefill-from-repoR2
standard.manifest.jsonthis manifest, matching the recorded state - what self-verify checks againstrequired, corecopyR2
SPEC.mdthe normative core this manifest projects - readable in placeoptional, corecopyR2
CLAUDE.md <br><small>or AGENTS.md</small>the file Claude Code loads first - points at AGENTS.md and carries the rule to check the skills before acting (R1); a non-Claude repo carries the same content in whatever its agent loads firstoptional, coremergeR1
specsliving capability specsrequired, corefill-from-repoR8
backlog.md <br><small>or docs/backlog.md</small>the work ledger; items leave only when their DoD is metrequired, corefill-from-repoR15
backlog-archive.md <br><small>or docs/backlog-archive.md</small>where a closed row goes, with a where cell naming what its content became; ships empty, and a repo that has closed nothing deletes it until the first row moves (ADR-051)optional, corefill-from-repoR15
CHANGELOG.md <br><small>or docs/CHANGELOG.md</small>the only home of history (ADR-018); a PR describes its change under ## Unreleased and bumps the version itself, PATCH by default unless the requester directs otherwise - R18/R25's one path, at every profilerequired, corefill-from-repoR18
.gitleaks.tomlsecret-scan config (the shipped scan SHOULD gate CI)optional, corecopyR19
.gitattributesforces LF on the shipped bash guards and Node scripts - a repo whose own setting is eol=crlf makes every hook exit 127 with empty stdout, which for a deny-guard is silence, not a refusalrequired, coremergeR19
README.mdthe repo's front door - authored from this repo's realityoptional, corefill-from-repoR3
CONTRIBUTING.mdcontribution mechanics pointer - defers to AGENTS.mdoptional, scalefill-from-repoR3
SECURITY.mdvulnerability-reporting contact and posture (placeholders filled at adoption)optional, corefill-from-repoR19
.nvmrcexact runtime version for the dependency-free guards and CI setupoptional, corecopyR21

docs/ - the knowledge the repo keeps

PathWhat it is, and whyNeededAdaptRule
docs/decision-recordsthe ADR/BDR decision logrequired, corefill-from-repoR5
docs/ideaspre-decision ideas - status-driven, graduate into records/specs on approval (ADR-010)optional, corefill-from-repoR14
docs/discoverydiscovery dossiers - provenance-stamped extracts per topic, never normative (ADR-024)optional, corefill-from-repoR5
docs/facts.jsonthe facts this repo restates: one home each, every restatement declaredoptional, corefill-from-repoR4
docs/facts.example.jsonthe shape of a declared fact, reference only - do not rename or copy its placeholder content into docs/facts.json; write docs/facts.json from scratch, in this shape, once this repo has its first fact worth declaring (R4)optional, corecopyR4
docs/PRINCIPLES.mdthe altitude apex R1 names - optional but expectedoptional, corefill-from-repoR1
docs/personas.mdthe persona roster the R10 gate checks specs against - without it the gate has nothing to holdrequired, corefill-from-repoR10
docs/adoption-intake.mdwhat Step 0 measured and asked before any align work proceeded - the record that makes intake checkable, not just performed (ADR-042)required, corefill-from-repoR26
docs/adoption-assessment.mdwhat Gate 2's eight-pass assessment found - maturity per pass, top risks, findings grouped by the owner role that must act; the evidence Gate 5's count is derived from (ADR-048)required, corefill-from-repoR27
docs/README.mdthe docs hub tableoptional, corefill-from-repoR3
docs/ARCHITECTURE.mdhow it is built - the altitude names it (filled from this repo)optional, corefill-from-repoR1
docs/PRODUCT.mdwhat it is and where it is going (filled from this repo)optional, corefill-from-repoR3
docs/conventions.mdcanonical conventions block - merged into AGENTS.md at adoptionoptional, coremergeR1
docs/analytics.mdevent-taxonomy tracking plan templateoptional, scalefill-from-repoR3
docs/journeysper-persona journey maps coupled to capabilitiesoptional, scalefill-from-repoR3
docs/researchanonymized research studies feeding personas, ideas and specsoptional, scalefill-from-repoR3
docs/runbooksoperational runbooks + postmortems - agent-followable at 3 a.m.optional, corefill-from-repoR3
docs/sprintswork sprints - what a team committed to and by when; an intent is in the pool or in exactly one sprint (ADR-028)optional, scalefill-from-repoR15

specs/ - behaviour, by capability

PathWhat it is, and whyNeededAdaptRule
specs/capability-map.jsoncapability -> code globs, so the coupling guard can bind spec to coderequired, corefill-from-repoR11

scripts/ - the guards, and the spec engine's runtime

PathWhat it is, and whyNeededAdaptRule
scripts/self-verify.mjsthe verify step - checks the repo against this manifestrequired, corecopyR16
scripts/spec-structure.mjsspec layout guardrequired, corecopyR16
scripts/facts-check.mjsa fact restated in prose still agrees with its source - declared homes and claims (R4)optional, corecopyR4
scripts/schema-pair.mjsthe DDL under database/schema/ and its typed twin stay 1:1 - the declared edge resolves and every name is coveredoptional, corecopyR24
scripts/decision-records-check.mjsthe ADR/BDR README index and the files on disk agree - no duplicate id, nothing indexed that is not there, nothing there that is not indexedrequired, corecopyR5
scripts/adoption-gates.mjsthe Gate 2 and Gate 5 artifacts carry what the gate is for - eight passes rated, the scope block's total equal to the sum of its categories, an owner role on every alignment itemrequired, corecopyR27
scripts/specthe spec engine runtime the skills invoke (gate, setup, templates, MIT licence)required, corecopyR22
scripts/libwhat more than one guard needs - glob matching, so two guards cannot answer the same question differentlyrequired, corecopyR16
scripts/verifyAgentGuards.shdrives every guard with real commands - they only emit output on a denial, so a broken guard is otherwise silentoptional, corecopyR19
scripts/spec-guard.mjscode<->spec coupling guard (+ --audit) - the tool ships at core, the blocking CI gate is scale (R11)required, corecopyR11
scripts/sprint-guard.mjsproves the one-place invariant the pool and the sprints depend onoptional, scalecopyR15
scripts/backlog-archive-check.mjsa closed row reached the archive with a pointer to what its content became, instead of being deleted (ADR-051)required, corecopyR15
scripts/generate-dashboardrenders the work state - pool, sprints, timeline, records, changelog - as one static page for the people who never open the repository; index.mjs is the generator, src/ the page and password-gate material it inlines. A projection, never a second place work is trackedoptional, corecopyR15

.claude/ - the procedures, in Claude Code's reference form

PathWhat it is, and whyNeededAdaptRule
.claude/skills <br><small>or .agents/skills</small>the lifecycle skills - the standard as executable procedures (Claude reference form; a non-Claude repo ports them to its agent's own mechanism)required, corecopyR22
.claude/settings.jsonagent settings baseline - permission lists, and which guards runoptional, coremergeR19
.claude/hooksthe pre-execution guards themselves - remote-DB writes, force-push, CI secrets - behind one dispatcher that denies when any of them is missing or brokenoptional, corecopyR19

.github/ - templates, never enabled in this repo

PathWhat it is, and whyNeededAdaptRule
.github/workflows/gitleaks.ymlthe secret-scan workflow templateoptional, coremergeR19
.github/workflows/standards-update-watch.ymlweekly notification that a newer standard exists - opens one issue per release, never edits the recorded state (ADR-025)optional, coremergeR2
.github/workflows/spec-guard.ymlthe CI workflow that wires self-verify + both guards - how R16's gate actually runsrequired, coremergeR16
.github/pull_request_template.mdPR template - what/why, decision-record impact across both streams, test plan, checklistoptional, scalemergeR5
.github/workflows/dashboard.ymlbuilds the dashboard on every push to main; publishes it only when the repository is public or the build is locked with a password, because Pages on a private repository is served publiclyoptional, coremergeR15

Adopted by reference, never copied

These are not in your repo. They are read at their home in the standard, always latest (ADR-023, ADR-025) - so the method improves without a re-scaffold, and self-verify notes them rather than checking files.

DocumentWhat it covers
docs/method/taxonomy.mdwhere each kind of knowledge lands (ends 'ADR or rule?')
docs/method/checklist.mdthe forks every repo consciously decides, with paved-road defaults
docs/method/adoption.mdthe gated path from unaligned to aligned + the modernize pass
docs/method/repo-assessment.mdthe read-only assessment the transition agent runs, and the periodic health check
docs/method/ways-of-working.mdhow work flows around the spec (PO -> dev -> AI)
docs/method/changelog-process.mdthe two-outputs changelog model teams follow
docs/method/working-with-specs.mdreal situations -> the prompt -> what the standard does (specs day to day)
docs/method/discovery.mddiscovery dossiers: from a meeting to a spec with provenance (ADR-024)
docs/method/working-with-ai/README.mdevidence-checked practices for driving the agent: context, verification, review load, blast radius
docs/method/self-verify.mdwhat drift 0 does and does not certify - the tiers, the flags, the arithmetic
docs/method/prerequisites.mdwhat must be installed before an agent starts an adoption
docs/method/security-baseline.mdthe axes a repo decides once - a menu, answered in your own security ADR
docs/tree/specs.mdhow to write a capability spec - the tiers, the contracts, what makes buildable checkable (R8, R9)
docs/tree/docs-decision-records.mdthe ADR/BDR streams, the record test and the altitude hierarchy (R5)
docs/method/agent-work.mdwhat the agent starts on its own, what it refuses, and what it never decides for you
docs/method/dev-work.mdthe dev's job when building: intent in, a buildable spec plus its records out
docs/method/lead-work.mdrolling the standard out across more than one repo, consistently
docs/method/product-work.mdthe product owner's job: what should be true, and for whom
docs/method/tracking-work.mdthe three files that answer what is still owed, what is happening now, and when it lands
docs/method/tracker-sync.mdthe OPTIONAL tracker-sync extension - a per-capability sidecar core never reads; skip it entirely if you sync to no tracker (ADR-032)
docs/method/working-language.mdlanguage is a configuration, not a constraint - the reasoning and the guidance for a non-English team

Required headings

A file can exist and still be a shell. These headings are checked by name.

FileHeadingWhy it must be there
AGENTS.mdAltitudethe precedence order wins-on-conflict must be stated
CHANGELOG.mdUnreleasedR18/R25 - a PR describes its change here; nothing else holds history, and drift 0 must not be reachable with no changelog at all
AGENTS.mdThe loop runs itself (unprompted)the unprompted-behaviour contract survives deletion or a thin rewrite - it is what makes the loop self-triggering rather than merely documented
AGENTS.mdVolunteer, don't wait to be askedan ambiguous mention of a bug, a decision, or scope creep gets named and asked about, not silently actioned or silently dropped
AGENTS.mdSay where you arelong work reports itself every 60-120 seconds - what is happening and what it is waiting on - and never invents progress or a result that has not come back