The case store
case/ holds affirmatrix’s own safety evidence graph — the nodes, edges,
review events and proofs for this repository’s requirements, source markers
and test reports, sealed by the tool itself once the engine lands. It is an
artifact store, not a document, which is why it sits outside doc/.
Its persisted state is an independent commit lineage (ADR-0009): an orphan
branch, case, that shares no history with the code branch and is never
merged into it. In a working checkout, case/ is a git worktree of that
branch, and the directory is ignored by the code branch. The separation is
structural, not disciplinary — a commit on the store lineage can only touch
the case, because its tree contains nothing else, and a commit on the code
branch cannot touch the case at all. A commit to the lineage by an authorised
committer is a store act; the kind of store act that introduces review events
is an affirmation.
A fresh clone has no case. Building the tool and running its suite need none.
The published repository carries the code branch only; the maintainer keeps
the case lineage in a working repository of their own. A clone starts a
lineage of its own and adds the worktree (see the installation tutorial):
git switch --orphan case
git commit --allow-empty -m "case: initialise the affirmation lineage"
git switch main
git worktree add case case
The graph’s state is the committed state of that lineage; anything uncommitted is a draft.