Merge pull request 'Design 47: the watchman's take-in seed ends waits the indexer no longer holds (issue 1966)' (#538) from design/47-seed-ends-stale-waits into main

This commit was merged in pull request #538.
This commit is contained in:
2026-11-10 22:45:34 +00:00
@@ -2511,7 +2511,11 @@ timer. A group's merges arrive together.
`refused` (ADR 0633 §1, §5). The watchman writes the finding `take-in-waits` when no `take-in.taken` follows
within 60 minutes for a revision or 30 minutes for a group, and the condition keeper raises the condition from
it and clears it on `take-in.taken` (ADR 0564 §2 as ADR 0590 §2 changes it). At its start the watchman seeds its
open waits from `indexer_pending`; the bounds only raise the condition, and nothing is taken in on a timer. The hand acts, each said in the journal and the audit, are the indexer's `indexer_take_in_pending`
open waits from `indexer_pending`, and ends every take-in wait and `take-in-waits` finding it holds whose key
`indexer_pending` no longer names, as a `take-in.taken` would: the indexer's pending state is what waits, so a wait
whose end was never heard is not kept (the operator, 2026-11-10; issue 1966 note 195). The indexer says
`take-in.taken` for every merge it takes in, under each key `indexer_pending` named it by as well as under the wait
it was said under. The bounds only raise the condition, and nothing is taken in on a timer. The hand acts, each said in the journal and the audit, are the indexer's `indexer_take_in_pending`
(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