nats removes a push consumer; gitea, mesh-conditions, mesh-issues and messenger drop what named the removed controller (issue 1126) #607

Merged
mesh-tools merged 7 commits from fix/consumer-remove-any into main 2026-11-04 10:36:41 +00:00
Member

Group fix/consumer-remove-any with mesh-delivery. Issue 1126 (notes 146-150); the operator asked 2026-11-04 to remove the old controller's consumers and every dead reference to the removed controller.

  • bff850f7 nats: nats_consumer_remove reads a push consumer as well as a pull one, before and after removing it (live failure: 'nats: consumer is not a pull consumer' for EVENTS/controller, EVENTS/controller-merges, CONTROL/controller).
  • 052fb473, 4f67143a, 080aed68 gitea: the verdict, plan and check-duration code bound to no event since ADR 0571 clause 13, and what only tests called; the merge refusal no longer promises how long a check takes.
  • bf4ce7ef mesh-conditions: the hold's controller special case.
  • b0b7dfc5 mesh-issues: mesh-controller is no registered or core owner; old issues keep their text.
  • 1572ab9b messenger: the old controller's walk decoder and plan-moved names.
    Left on purpose: the lab's builds from mesh-controller (issue 1816 note 3: deleting them would make its suites skip and read as passed).

Quick fix: none without a hand act. Thorough, chosen: the repair tool reads any consumer kind, and the dead code goes instead of misleading the next reader.

Tests: nats removal table rows (pull and push); gitea's whole suite 216/216 against the mesh-sdk package; go vet and go test per Go module.

On delivery (novox): nats moves its tools bundle only (the server container is not restarted; the bus is backed up first); gitea, mesh-conditions, mesh-issues, messenger move.

Reviewed-by: review-consumer-remove@shanks at 080aed6855

https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn

Group fix/consumer-remove-any with mesh-delivery. Issue 1126 (notes 146-150); the operator asked 2026-11-04 to remove the old controller's consumers and every dead reference to the removed controller. - bff850f7 nats: nats_consumer_remove reads a push consumer as well as a pull one, before and after removing it (live failure: 'nats: consumer is not a pull consumer' for EVENTS/controller, EVENTS/controller-merges, CONTROL/controller). - 052fb473, 4f67143a, 080aed68 gitea: the verdict, plan and check-duration code bound to no event since ADR 0571 clause 13, and what only tests called; the merge refusal no longer promises how long a check takes. - bf4ce7ef mesh-conditions: the hold's controller special case. - b0b7dfc5 mesh-issues: mesh-controller is no registered or core owner; old issues keep their text. - 1572ab9b messenger: the old controller's walk decoder and plan-moved names. Left on purpose: the lab's builds from mesh-controller (issue 1816 note 3: deleting them would make its suites skip and read as passed). Quick fix: none without a hand act. Thorough, chosen: the repair tool reads any consumer kind, and the dead code goes instead of misleading the next reader. Tests: nats removal table rows (pull and push); gitea's whole suite 216/216 against the mesh-sdk package; go vet and go test per Go module. On delivery (novox): nats moves its tools bundle only (the server container is not restarted; the bus is backed up first); gitea, mesh-conditions, mesh-issues, messenger move. Reviewed-by: review-consumer-remove@shanks at 080aed68556aab92354f52111f19497737213a92 https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
mesh-tools added 7 commits 2026-11-04 10:12:54 +00:00
js.Consumer refuses a push consumer ("consumer is not a pull consumer"), so the
controller's leftovers on EVENTS and CONTROL could not be read and were not
removed. The tool now reads a consumer of either kind (CONSUMER.INFO only, which
is all its grant gives), before the delete and for the confirmation after it.

Quick fix: this change, in the tool, one function, about an hour with its test
rows (a pull and a push consumer). Thorough fix: the same tool also needs its
grant to cover the KV_* streams' consumers (mesh-controller-take-in,
mesh-controller-config-follow), and that grant is composed by mesh-sdk's
BusRemovalGrants from a closed set (ControllerLeftoverConsumersOn), not by the
manifest, so it is not in this commit: it needs a change in mesh-sdk and a
group delivery. Chosen here: the quick fix for the read, since it is one place
and blocks the operator's removal now; the grant is reported to the lead.

Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
gitea: the merge refusal no longer says how long the last check took; nothing writes that record (issue 1126)
mesh/delivery merged: source.main moved to novox/mesh-catalog@7f626147be0c
mesh/delivery-group group fix/consumer-remove-any merged: every member is merged
mesh/check being carried to 080aed68556a on 7f626147be0c | from 7a7db0166ad2, mesh-delivery dd90a26251b9
080aed6855
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
Author
Member

Delivery novox/mesh-catalog@080aed68556a — merged since 2026-11-04T10:36:43Z

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

Group fix/consumer-remove-any: novox/mesh-catalog@080aed6855, novox/mesh-delivery@fc300216ec

  • composed together: pass — the checker's verdict at the members' heads (6ec71aebec67)

Transitions

  • 2026-11-04 10:12 (new) → proposed (announced): novox/mesh-catalog#607's head announced
  • 2026-11-04 10:12 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-04 10:36 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-catalog@080aed68556a` — **merged** since 2026-11-04T10:36:43Z **Source** — source.main moved to novox/mesh-catalog@7f626147be0c. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/consumer-remove-any`: novox/mesh-catalog@080aed68556a, novox/mesh-delivery@fc300216ecf7 - composed together: pass — the checker's verdict at the members' heads (6ec71aebec67) **Transitions** - 2026-11-04 10:12 (new) → proposed (announced): novox/mesh-catalog#607's head announced - 2026-11-04 10:12 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-04 10:36 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-tools merged commit 7f626147be into main 2026-11-04 10:36:41 +00:00
mesh-tools deleted branch fix/consumer-remove-any 2026-11-04 10:36:41 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#607