Design 47 follows ADR 0633, 0637, 0638 and 0639: the take-in by the indexer it names, and the group try (issues 1966, 1921) #521

Merged
mesh-tools merged 6 commits from docs/47-try-and-take-in into main 2026-11-05 20:06:31 +00:00
Showing only changes of commit 5688a2efa1 - Show all commits
@@ -631,14 +631,15 @@ pull request, and it owes the forge nothing.
composition answer, the try ends as error, never as pass, naming what it could not validate. A check passes such
a node with a warning (ADR 0593 §9); a try cannot, because it would then not say whether the check will pass. A
try that ended as error keeps no verdict (ADR 0637 §3).
- **The indexer makes a try's candidate, on the checker's events.** The checker emits the checker's try events: one
when a whole try starts, carrying its members at their commits, and one when it ends. The indexer, the holder of
the seat `mesh-catalog`, consumes them and writes `candidates.<try id>` with one pull per member, its modules and
fingerprints from the previews, validated with the seat definitions the members carry, and deletes it at the
try's end. It reads no state of the checker's; at its start it recovers the tries still open through the
checker's tool that reads a try (ADR 0596 §1, §2, which a record changing ADR 0637 §4 is to carry). The
indexer's tools read and drop a try's candidate. The candidate is the try's alone: the check, the gate and the
forge bridge leave it alone, and the forge is owed no status and no Approve (ADR 0637 §4).
- **The indexer makes a try's candidate, on the checker's events.** For a whole try only, the checker emits
`try.started`, carrying the try's id and its members at their commits, and `try.ended`, carrying its id and its
state, on its stream `checks`. The indexer, the holder of the seat `mesh-catalog`, consumes them: on
`try.started` it writes `candidates.<try id>` with one pull per member, its modules and fingerprints from the
previews, validated with the seat definitions the members carry, and on `try.ended` it deletes it. It reads no
state of the checker's; at its start it recovers the tries still open through the checker's tool
`checker_tries` (ADR 0596 §1, §2; the record changing ADR 0637 §4). The indexer's tools read and drop a try's
candidate. The candidate is the try's alone: the check, the gate and the forge bridge leave it alone, and the
forge is owed no status and no Approve (ADR 0637 §4).
- **A try and a check share kept verdicts.** The try computes each package's digest as the check does and keeps
the verdict of each package it passed under that digest (ADR 0548 §5, ADR 0536 §1). The pull-request check of a
tried head runs only the packages with no kept verdict for their digest, those a moved trunk or a new head