Skip to content

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:

  1. Header table: status (proposed | agreed), the invariants and decisions it exercises, the milestone at which the outcome becomes testable.
  2. Inputs: real-shaped data, not placeholders. Enough of each source that a reader can check groundedness (D23) by eye.
  3. Expected: ingestion and extraction: sources, event, revision, partials with kind, claims with classification.
  4. Expected: resolution: search results, resolution items, links created or superseded, what the search projection returns afterwards.
  5. Variants: the same setup with one input changed, and how the outcome changes.
  6. 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.