The indexer publishes manifest-accepted and manifest-refused as events, without waiting for the stream's acknowledgement (issue 1966) #168

Merged
jschoubben merged 1 commits from fix/1966-indexer-event-refused into main 2026-11-07 19:58:28 +00:00
Member

Blocking fault of the registry delivery (issue 1966). The new indexer awaited the JetStream acknowledgement of each manifest event (a request and response, 10 s, twice for accepted). The old grants do not grant it mesh.seat.mesh-catalog.event.manifest-accepted, so no acknowledgement came, each judging pass took about 20 s a manifest, and it never reached the forge's messages or the seat definitions (indexer_heard: nothing after 19:22; journal: a permissions violation every 10 s).

Now both events are published plainly with Nats-Msg-Id (the stream drops duplicates); a refusal arrives on the connection's error handler, as already logged. A publish error itself still returns to the caller (one retry, unsaid finding).

Quick vs thorough: thorough for the indexer's two manifest events; sayTakeIn keeps its acknowledged publish (noted for 47/G).

Checked locally: go build, go vet (also -tags integration) and the unit suites of mesh-delivery-indexer pass. No review round, at the operator's word ("just deliver 47"); said here.

https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i

Blocking fault of the registry delivery (issue 1966). The new indexer awaited the JetStream acknowledgement of each manifest event (a request and response, 10 s, twice for accepted). The old grants do not grant it mesh.seat.mesh-catalog.event.manifest-accepted, so no acknowledgement came, each judging pass took about 20 s a manifest, and it never reached the forge's messages or the seat definitions (indexer_heard: nothing after 19:22; journal: a permissions violation every 10 s). Now both events are published plainly with Nats-Msg-Id (the stream drops duplicates); a refusal arrives on the connection's error handler, as already logged. A publish error itself still returns to the caller (one retry, unsaid finding). Quick vs thorough: thorough for the indexer's two manifest events; sayTakeIn keeps its acknowledged publish (noted for 47/G). Checked locally: go build, go vet (also -tags integration) and the unit suites of mesh-delivery-indexer pass. No review round, at the operator's word ("just deliver 47"); said here. https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
mesh-tools added 1 commit 2026-11-07 19:57:16 +00:00
The indexer publishes manifest-accepted and manifest-refused as events, without waiting for the stream's acknowledgement (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@a37ee99b41d5
mesh/check pass 71a56d4606c9 on b73315ffe05c | carried from a37ee99b41d5 | unit 495 run, 947 kept | integration 494 run, 1014 kept | composition passe…
71a56d4606
Both were published with the JetStream acknowledgement awaited, a request and response, for ten seconds each, and
manifest-accepted once more on failure. On a bus refusing the subject (the old grants do not grant the new indexer
mesh.seat.mesh-catalog.event.manifest-accepted) no acknowledgement ever came, so each judging pass took about twenty
seconds a manifest and the indexer never reached the forge's messages nor the seat definitions: the take-in stood
still. Now both are published plainly on their subject with the dedup id in Nats-Msg-Id, as an event is (the
operator, 2026-11-07: everything is event-driven); the stream that keeps the subject drops a duplicate by its id, and a
refusal is said on the connection's error handler, as the journal already shows. An error of the publish itself (no
connection) still goes to the caller, which retries once and writes the unsaid finding.

Quick vs thorough: thorough for these two events (every publish of a seat event by the indexer is now an event);
sayTakeIn keeps its acknowledged publish, said in the issue for 47/G.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Author
Member

Delivery novox/mesh-delivery@71a56d4606c9 — merged since 2026-11-07T19:58:30Z

Source — source.main moved to novox/mesh-delivery@a37ee99b41. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Transitions

  • 2026-11-07 19:57 (new) → proposed (announced): novox/mesh-delivery#168's head announced
  • 2026-11-07 19:57 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-07 19:58 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-delivery@71a56d4606c9` — **merged** since 2026-11-07T19:58:30Z **Source** — source.main moved to novox/mesh-delivery@a37ee99b41d5. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-11-07 19:57 (new) → proposed (announced): novox/mesh-delivery#168's head announced - 2026-11-07 19:57 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-07 19:58 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`.
jschoubben merged commit a37ee99b41 into main 2026-11-07 19:58:28 +00:00
jschoubben deleted branch fix/1966-indexer-event-refused 2026-11-07 19:58:28 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#168