From 5688a2efa1fbcd86e477221d47f548a7159ae555 Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 5 Nov 2026 18:31:21 +0100 Subject: [PATCH] Design 47 names the try's events, so the indexer's path to a try is a stream it consumes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The checker says a whole try's start and end as try.started and try.ended on its stream checks, and the indexer recovers open tries through checker_tries; the record changing ADR 0637 §4 carries this and is cited until its number is known. Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i --- .../47-delivery-from-commit-to-delivered.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md b/03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md index c08118e2..abd25c87 100644 --- a/03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md +++ b/03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md @@ -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.` 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.` 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