Read this first
This repository is documentation and decisions. The two application directories under app/ are gitlinks to independent repositories, and both now point at product commits: the Handler-facing application and the curator's workbench are built, and both repositories' gates are green. What is still unbuilt, and what is waiting on a person rather than on a ticket, is in Current state & blockers — which names the command behind every number it gives.
If you are here to review the design, start at The content split. It is the decision every other decision bends around.
The one rule this site follows
A guide page never states a decision. Rulings live in docs/adr/ and the guide links to them. A guide page says what question an area answers, draws how the pieces fit, and points at the document that decides.
The reason is mechanical rather than stylistic. The repository's traceability gate (scripts/coverage-check.sh) scans the research notes, the ADRs, the specification and the glossary — it does not scan the guide. A guide page that paraphrased a ruling would be a second source of truth that nothing watches, and on a product where a paraphrase can change which glove a person wears, that is the exact failure the design already refuses in its runtime.
So the guide is thin on purpose, and ignoreDeadLinks is set to false: link to an ADR and the build fails the day that ADR is renamed or removed.
How this site is organised
| Section | What it answers |
|---|
| The content split | Which output may be generated, which may not, and why the line is where it is |
| Curation | Where every irreversible judgement in the product is made |
| The Corpus lifecycle | How a document becomes an answer on a device with no signal |
| Identification & Routing | How a user gets from a drum in front of them to the right record |
| System architecture | What runs where, and what never crosses the network |
| Data model | What a Chemical Record is made of, and what is deliberately not merged |
| Sources & data | What the design was derived from, and what the built application is actually fed |
| Cost | Where the money and the time go, and which of the two decides the schedule |
| Current state & blockers | What is decided, what is built, and what is waiting on a person |
| Decision index | All 75 ADRs with status, superseded ones included |
The source documents
| Document | Role |
|---|
| CONTEXT.md | The glossary, and nothing else. Every term used anywhere must appear here. |
| Specification | The spec: user stories, implementation decisions, testing seams, declared gaps. |
| ADRs | The rulings. Accepted ones are binding; superseding requires a new document. |
| AGENTS.md | How work is done in this repository. |
| Session handoff | State-of-now for the next session. Read before anything but ./init.sh. |
A note on the numbers
Terms in this documentation are capitalised when they are glossary terms — Corpus, Source Span, Curation, Not Stated, Study Area. Each one is defined in CONTEXT.md and used in exactly that sense. Decision ids (D-nn), research findings (R-nn) and user stories (US-nn) are permanent and are never renumbered or reused.