Recovery fix (instruction recovery-fixes-merge-and-tell), issue 1966 notes 107 and 110; delivery group fix/1966-views-durable with mesh-delivery (same branch). mesh-sdk merges first.
Why. At 00:44 UTC 2026-11-09 the assigner's rules wrote every machine's node-engine want back to 411b21e4: its picture of the indexer's modules never took the 00:16:29 UTC event for c890e7e3 (proven from mesh-delivery's assigner code by lead-47). Grants missed an event the same way on 2026-11-08: the second time of a kind, fixed here for every reader.
The follower keeps the highest revision it heard per Created; an event heard before the first view or a gap heard while an ask runs is no longer dropped: the follower asks again by itself (backoff to a minute, ADR 0615 §5-6), every ask said in the log.
A consumer made 'from now' (ADR 0443) after the first view: EventHub.OnBound says when the bus made it, Follower.ConsumerMade marks an older picture behind and asks again. ProcessReader.Start wires it.
Status carries Heard, HeardCreated and Behind, written on every applied event, so the first-views read tools show the revision held and why a reader is behind; every silent return of Apply says itself.
Quick or thorough. Thorough: one place, every reader (the kind met twice). The cause of the 00:16 loss is the likeliest one, not proven (no tool reads a consumer's created time or EVENTS by subject; named as missing read tools on the issue).
Tests. New subtests in go/views fail without the change (mutation-checked by the reviewer); go vet, go vet -tags integration, go test ./... pass; -race on views and process.
Reviewed-by: mesh-code-reviewer@shanks at 38659c3937
Recovery fix (instruction recovery-fixes-merge-and-tell), issue 1966 notes 107 and 110; delivery group fix/1966-views-durable with mesh-delivery (same branch). mesh-sdk merges first.
**Why.** At 00:44 UTC 2026-11-09 the assigner's rules wrote every machine's node-engine want back to 411b21e4: its picture of the indexer's modules never took the 00:16:29 UTC event for c890e7e3 (proven from mesh-delivery's assigner code by lead-47). Grants missed an event the same way on 2026-11-08: the second time of a kind, fixed here for every reader.
**Change** (go/views follow.go, status.go; go/process event_hub.go):
- The follower keeps the highest revision it heard per Created; an event heard before the first view or a gap heard while an ask runs is no longer dropped: the follower asks again by itself (backoff to a minute, ADR 0615 §5-6), every ask said in the log.
- A consumer made 'from now' (ADR 0443) after the first view: EventHub.OnBound says when the bus made it, Follower.ConsumerMade marks an older picture behind and asks again. ProcessReader.Start wires it.
- Status carries Heard, HeardCreated and Behind, written on every applied event, so the first-views read tools show the revision held and why a reader is behind; every silent return of Apply says itself.
**Quick or thorough.** Thorough: one place, every reader (the kind met twice). The cause of the 00:16 loss is the likeliest one, not proven (no tool reads a consumer's created time or EVENTS by subject; named as missing read tools on the issue).
**Tests.** New subtests in go/views fail without the change (mutation-checked by the reviewer); go vet, go vet -tags integration, go test ./... pass; -race on views and process.
Reviewed-by: mesh-code-reviewer@shanks at 38659c3937e74869fd513ce3b4d20fbd751de61c
**Undo:** revert this merge (and mesh-delivery's).
https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
A follower passed over an event heard before its first view and dropped a gap heard while an ask ran, so a quiet
owner left the reader behind until a further event. It now keeps the highest revision heard and, when an ask ends
short of it, asks again on a pause of its own until it holds it. The status a read tool shows followed only the
asks, so it said a reader was behind that was not; it follows the events too.
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
A consumer is made from now (ADR 0443): an event said before it was made is never delivered to it and no later event
shows the loss. The event hub tells a part when the bus made its consumer, and a follower asked before that asks
again. Events passed over, at or below the held revision, or of a state not followed are now said in the log. The
status carries the highest revision heard and why the picture is behind it.
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Deliverynovox/mesh-sdk@38659c3937e7 — merged since 2026-11-09T07:04:20Z
Source — source.main moved to novox/mesh-sdk@55f71b7811. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: fail — the checker's verdict at the members' heads (603dd79ad282): unit: git.novox.be/novox/mesh-sdk/go/catalogue.TestTheResolverForwardsToFixedUpstreamsAndNeverReadsResolvConf
Transitions
2026-11-09 01:32 (new) → proposed (announced): novox/mesh-sdk#174's head announced
2026-11-09 01:32 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-09 07:04 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-sdk@38659c3937e7` — **merged** since 2026-11-09T07:04:20Z
**Source** — source.main moved to novox/mesh-sdk@55f71b78114f. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/1966-views-durable`: novox/mesh-delivery@173a7654ba61, novox/mesh-sdk@38659c3937e7
- composed together: fail — the checker's verdict at the members' heads (603dd79ad282): unit: git.novox.be/novox/mesh-sdk/go/catalogue.TestTheResolverForwardsToFixedUpstreamsAndNeverReadsResolvConf
**Transitions**
- 2026-11-09 01:32 (new) → proposed (announced): novox/mesh-sdk#174's head announced
- 2026-11-09 01:32 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-09 07:04 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Recovery fix (instruction recovery-fixes-merge-and-tell), issue 1966 notes 107 and 110; delivery group fix/1966-views-durable with mesh-delivery (same branch). mesh-sdk merges first.
Why. At 00:44 UTC 2026-11-09 the assigner's rules wrote every machine's node-engine want back to 411b21e4: its picture of the indexer's modules never took the 00:16:29 UTC event for c890e7e3 (proven from mesh-delivery's assigner code by lead-47). Grants missed an event the same way on 2026-11-08: the second time of a kind, fixed here for every reader.
Change (go/views follow.go, status.go; go/process event_hub.go):
Quick or thorough. Thorough: one place, every reader (the kind met twice). The cause of the 00:16 loss is the likeliest one, not proven (no tool reads a consumer's created time or EVENTS by subject; named as missing read tools on the issue).
Tests. New subtests in go/views fail without the change (mutation-checked by the reviewer); go vet, go vet -tags integration, go test ./... pass; -race on views and process.
Reviewed-by: mesh-code-reviewer@shanks at
38659c3937Undo: revert this merge (and mesh-delivery's).
https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Delivery
novox/mesh-sdk@38659c3937e7— merged since 2026-11-09T07:04:20ZSource — source.main moved to novox/mesh-sdk@55f71b7811. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1966-views-durable: novox/mesh-delivery@173a7654ba, novox/mesh-sdk@38659c3937Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.