Scenarios¶
Architecture tests in prose. Each scenario takes concrete inputs through the pipeline and
states what the model must produce at every stage. When the design cannot say what happens
in a scenario, the design is not finished; that gap is recorded in the scenario under
"Where the model is silent" and becomes the seed of a proposal. Once the fixture corpus
exists (PRD M1), each scenario becomes a fixture plus a golden test under tests/contract/,
and the scenario doc stays the spec the test asserts.
Created 2026-09-03. Updated 2026-09-03. Vocabulary: domain.md.
Format¶
One file per setup, variants inside it. Sections, in order:
- Header table: status (
proposed | agreed), the invariants and decisions it exercises, the milestone at which the outcome becomes testable. - Inputs: real-shaped data, not placeholders. Enough of each source that a reader can check groundedness (D23) by eye.
- Expected: ingestion and extraction: sources, event, revision, partials with
kind, claims with classification. - Expected: resolution: search results, resolution items, links created or superseded, what the search projection returns afterwards.
- Variants: the same setup with one input changed, and how the outcome changes.
- Where the model is silent (only when true): the outcome the docs do not determine, and which doc should.
Rules: cite the invariant or decision for every non-obvious outcome; never assert an
outcome the docs do not support, mark it silent instead; keep ids short and stable
(s1, e1, pe-1, E1 for entities) so tests can reuse them.
Index¶
Scenarios land one PR each, reviewed individually. The first eight, grounded in D1-D27, are under review in PR #5:
| # | Scenario | Exercises |
|---|---|---|
| 1 | Recording plus calendar event compose into one Event | I2, B1, D23, invariant 2 |
| 2 | Changed calendar event reconciles claims and relation claims | I4, D11, D24, invariant 1 |
| 3 | Two John Smiths at Acme | D4, D6, invariants 3, 4 |
| 4 | One email address on two people | D10, D23, invariants 5, 6 |
| 5 | A person leaves an organization | D19, D21, invariant 9 |
| 6 | A wrong merge undone six months later | D1, D12, invariants 1, 3, 6, 9 |
| 7 | The same unknown person in two concurrent events | D7, S3, invariant 7 |
| 8 | Bootstrap import, organizations first | D26, B5, D22, invariant 9 |
| 9 | Intake email with two attachments, one failing to parse (Agus, to write) | composition, summaries |
A scenario that is agreed gets a row here linking to its file.