The first live group try (try-1793908525626556582) wrote no candidate, so its composition was never judged (issue 1921 note 43). Two causes, both fixed here:
No open tries is an answer. The checker answered checker_tries with {"tries": null} when no try was open, and the indexer refused it, so its recovery at start never succeeded. The checker now answers [], and the indexer takes null as none; a missing tries key or a wrong shape is still refused.
The grants part adds a manifest's new event types, and only adds (ADR 0640, accepted; the operator, 2026-11-05: "yes, add new event types automatically"). The checker's stream on the bus was created before try.* existed, and the grants part never changed a held stream, so try.started could not be said and the indexer's consumer never heard it. Now a held stream gains the subjects its manifest adds, and a held consumer the filters its module's consumes adds, keeping every other setting, the delivery position and the stored messages; nothing is removed, narrowed, limited differently or recreated. Each addition is said once in the journal and in the event asserted (ADR 0547 §5 as of its 2026-11-05 insight); a refusal is said once and tried again at every pass. The grants part gets $JS.API.STREAM.UPDATE.<stream> for declared streams, and every composed consumer its create-or-update grant (one with a single filter included). The texts that said a held stream is never changed now say it only ever gains.
Tested: unit rows in the grants part, the checker and the indexer, and a row of the grants part's whole-module test against an embedded bus running the real updates (limits, retention, created time, sequences, the consumer's delivered sequence and ack floor unchanged). No test function added (mesh-delivery is over its budget). No manifest changed.
After delivery the stream CHECKS and the indexer's consumer on it gain the try events by themselves, with no hand act; then the registry group's try runs again.
Reviewed-by: mesh-code-reviewer@shanks at 39285c95bd
The first live group try (try-1793908525626556582) wrote no candidate, so its composition was never judged (issue 1921 note 43). Two causes, both fixed here:
- **No open tries is an answer.** The checker answered `checker_tries` with `{"tries": null}` when no try was open, and the indexer refused it, so its recovery at start never succeeded. The checker now answers `[]`, and the indexer takes `null` as none; a missing `tries` key or a wrong shape is still refused.
- **The grants part adds a manifest's new event types, and only adds** (ADR 0640, accepted; the operator, 2026-11-05: "yes, add new event types automatically"). The checker's stream on the bus was created before `try.*` existed, and the grants part never changed a held stream, so `try.started` could not be said and the indexer's consumer never heard it. Now a held stream gains the subjects its manifest adds, and a held consumer the filters its module's `consumes` adds, keeping every other setting, the delivery position and the stored messages; nothing is removed, narrowed, limited differently or recreated. Each addition is said once in the journal and in the event `asserted` (ADR 0547 §5 as of its 2026-11-05 insight); a refusal is said once and tried again at every pass. The grants part gets `$JS.API.STREAM.UPDATE.<stream>` for declared streams, and every composed consumer its create-or-update grant (one with a single filter included). The texts that said a held stream is never changed now say it only ever gains.
Tested: unit rows in the grants part, the checker and the indexer, and a row of the grants part's whole-module test against an embedded bus running the real updates (limits, retention, created time, sequences, the consumer's delivered sequence and ack floor unchanged). No test function added (mesh-delivery is over its budget). No manifest changed.
After delivery the stream CHECKS and the indexer's consumer on it gain the try events by themselves, with no hand act; then the registry group's try runs again.
Reviewed-by: mesh-code-reviewer@shanks at 39285c95bdaeed797e07f36988d12cac0cc1f18c
https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Deliverynovox/mesh-delivery@39285c95bdae — merged since 2026-11-05T21:04:30Z
Source — source.main moved to novox/mesh-delivery@fab533dfd0. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-05 20:59 (new) → proposed (announced): novox/mesh-delivery#157's head announced
2026-11-05 20:59 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-05 21: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-delivery@39285c95bdae` — **merged** since 2026-11-05T21:04:30Z
**Source** — source.main moved to novox/mesh-delivery@fab533dfd0cd. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-05 20:59 (new) → proposed (announced): novox/mesh-delivery#157's head announced
- 2026-11-05 20:59 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-05 21: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`.
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.
The first live group try (try-1793908525626556582) wrote no candidate, so its composition was never judged (issue 1921 note 43). Two causes, both fixed here:
checker_trieswith{"tries": null}when no try was open, and the indexer refused it, so its recovery at start never succeeded. The checker now answers[], and the indexer takesnullas none; a missingtrieskey or a wrong shape is still refused.try.*existed, and the grants part never changed a held stream, sotry.startedcould not be said and the indexer's consumer never heard it. Now a held stream gains the subjects its manifest adds, and a held consumer the filters its module'sconsumesadds, keeping every other setting, the delivery position and the stored messages; nothing is removed, narrowed, limited differently or recreated. Each addition is said once in the journal and in the eventasserted(ADR 0547 §5 as of its 2026-11-05 insight); a refusal is said once and tried again at every pass. The grants part gets$JS.API.STREAM.UPDATE.<stream>for declared streams, and every composed consumer its create-or-update grant (one with a single filter included). The texts that said a held stream is never changed now say it only ever gains.Tested: unit rows in the grants part, the checker and the indexer, and a row of the grants part's whole-module test against an embedded bus running the real updates (limits, retention, created time, sequences, the consumer's delivered sequence and ack floor unchanged). No test function added (mesh-delivery is over its budget). No manifest changed.
After delivery the stream CHECKS and the indexer's consumer on it gain the try events by themselves, with no hand act; then the registry group's try runs again.
Reviewed-by: mesh-code-reviewer@shanks at
39285c95bdhttps://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Delivery
novox/mesh-delivery@39285c95bdae— merged since 2026-11-05T21:04:30ZSource — source.main moved to novox/mesh-delivery@fab533dfd0. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.