Design 47 cites ADR 0639 §9 for the hand drop, so both hand acts are said to clear take-in-waits
mesh/delivery merged: source.main moved to novox/hq@1ca5a3a1331f
mesh/check being carried to b926db338dcf on 1ca5a3a1331f | from 674f88f9abb8

ADR 0639 v9 gives the drop its own clause and moves the checks to clause 10.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
This commit is contained in:
2026-11-05 20:26:55 +01:00
parent d61e18de41
commit b926db338d
@@ -619,7 +619,7 @@ From its delivery, a check is this:
### A try: a delivery group's check at exact commits
*ADR 0637, ADR 0638; ADR 0593 §7, §9, ADR 0636 §4, ADR 0548 §5, ADR 0596 §1 to §3, ADR 0615, ADR 0639 §1 to
§6, §9.*
§6, §10.*
A try says beforehand whether a check will pass. It is the check's own code run on commits nobody pushed to a
pull request, and it owes the forge nothing.
@@ -709,7 +709,7 @@ pull request, and it owes the forge nothing.
retry on the next try event and by `indexer_recover_tries`); the checker's try test shows the retry until
acknowledgement, `try.ended` after a restart, the whole list of open tries (more than 64), the verdicts kept by a
try of some tests and of one level, the reason a waiting try gives, and an ended try's record kept 7 days and
removed after; the checker's manifest test shows that only its account publishes `try.*` (ADR 0639 §9). The registry group's review finds no copy of the shared
removed after; the checker's manifest test shows that only its account publishes `try.*` (ADR 0639 §10). The registry group's review finds no copy of the shared
names. Live, the registry group is tried whole before its push, and the checker's try read names each member,
the composition per node and every failure (ADR 0637 §9); during that try `indexer_try_candidates` reads its
candidate, and after `try.ended` it is gone (ADR 0638).
@@ -782,7 +782,7 @@ pull request, and it owes the forge nothing.
### Taken in by the indexer it names
*ADR 0633 with its progressive insights of 2026-11-05, which changes ADR 0603 §1, §4, §6 and §9; ADR 0639 §7, §8,
which change ADR 0633 §1; ADR 0636 §4, ADR 0614 §8, ADR 0601 §3, ADR 0632 §2, ADR 0441 §3, §4, ADR 0564 §2, ADR 0595
which change ADR 0633 §1, and ADR 0639 §9, §10; ADR 0636 §4, ADR 0614 §8, ADR 0601 §3, ADR 0632 §2, ADR 0441 §3, §4, ADR 0564 §2, ADR 0595
§11, ADR 0596 §3, ADR 0615.*
A change that brings a new manifest validator is judged by that validator: nothing else of it reaches the
@@ -849,8 +849,10 @@ timer. A group's merges arrive together.
(take the pending revisions, or a group gathered so far, in with the running indexer, when the named indexer can
never run or the group's end never comes) and `indexer_drop_pending` (drop a pending merge a later one replaced),
and the forge bridge's `bridge_groups` (read the groups it holds open) and `bridge_group_end_again` (publish a
group's end again from the gate's `merges` state) (ADR 0633 §5). A hand take-in emits `take-in.taken` as any
take-in does, so the condition clears (ADR 0633 §5).
group's end again from the gate's `merges` state) (ADR 0633 §5). Both of the indexer's hand acts emit
`take-in.taken`: a hand take-in as any take-in does, and a hand drop naming the drop, for a merge whose wait was
said pending, so the watchman's `take-in-waits` clears; a drop of a merge never said pending emits none (ADR 0633
§5, ADR 0639 §9).
- **The check refuses an indexer the running parts could not move.** For a change to the indexer's own module, the
check validates the new indexer's manifest, found as the manifest that claims the seat `mesh-catalog`, with the
trunk's manifest validator in its sandbox and the seat definitions of the members' heads, and refuses the change
@@ -865,7 +867,8 @@ timer. A group's merges arrive together.
bounds and its seeding, the view, the gate passing the end by, and each hand act; three cases cover the seat
definitions of the revision (accepted without a built-in seat list, a refusal in `refused`, the check accepting
the same candidate); and rows for an own build fixed at start (a composition answer that differs changes
nothing) and for `take-in.pending` with `own build unknown` (ADR 0639 §9). Live, the registry group's merge shows in `indexer_pending` waiting for the new indexer and
nothing), for `take-in.pending` with `own build unknown`, and for a hand drop (a merge said pending emits
`take-in.taken` naming the drop, one never said pending emits none) (ADR 0639 §10). Live, the registry group's merge shows in `indexer_pending` waiting for the new indexer and
is taken in when that indexer starts, and no node-engine reads distribution's new entry before the new indexer's
hold: `node_manifest_reads` and `indexer_holds` on every node (ADR 0633, How it is checked).
@@ -1541,7 +1544,7 @@ answers it:
| Domain | Found | Answered by |
|---|---|---|
| seams | the indexer said to read none of the checker's state, while it reads the checker's previews and the checker watches its candidates; the forge bridge's read of the gate's `merges` unmarked | *A try* (two reads that stay under ADR 0596 §3 until issue 1966); *Taken in by the indexer it names* (the bridge's read marked the same) |
| tools | the try's tools not listed against the four lines; the hand acts not said to clear the condition | *A try* (the table of the checker's and the indexer's tools, `indexer_recover_tries` new); *Taken in* (a hand take-in emits `take-in.taken`; a hand drop is open) |
| tools | the try's tools not listed against the four lines; the hand acts not said to clear the condition | *A try* (the table of the checker's and the indexer's tools, `indexer_recover_tries` new); *Taken in* (both hand acts emit `take-in.taken`, ADR 0639 §9) |
| bus forms | the form of `pending` and the try events' contract unsaid | *Taken in* (`pending` in the old form the grants part creates); *A try* (the package `tryevent` of mesh-delivery's sdk) |
| running qualities | `checker_tries` not answering; the new indexer before the new checker in this release; a lost try event; what a narrowed try keeps; a recovery cut at 64; how long tries are kept; a try waiting for its candidate | *A try* (nothing deleted, asked again, said in `indexer_try_candidates`, the ordering edge; publish with retry, `try.ended` on every end; the narrowed try's verdicts; every open try listed; 7 days; the reason in the try read, bounded by the step bound) |
| testing | ADR 0633's live case on the node-engines' reads lost; no live case for ADR 0638 | *Taken in* (`node_manifest_reads` and `indexer_holds` on every node); *A try* (the candidate read during the registry group's try, gone after `try.ended`) |