Issue 1279, decided by ADR 0443 (clauses 1, 2, 4).
Delivery group on branch fix/1279-consumers-from-now: mesh-sdk first, then this pull request, then mesh-delivery. No dependency change here (no go.mod change, no vendor change).
What changes: ConsumerFor (EVENTS) and heardConsumer (another module's stream) set FromNow; QueueConsumer and HolderConsumerFor stay as they were; the manifest parser refuses a consumes entry that is not an event name, naming its keys (from, start, deliver). Two integration tests asserted the old replay and are turned around: raise_live_test.go (TestAModulesConsumerCreatedAfterwardsStartsFromNow) and modstreams_live_test.go (the reader's pending counts).
1279/AC2 (integration): internal/broker/consumer_from_now_test.go TestAModulesConsumerDeliversNothingOfTheStreamsPast (EVENTS and another module's stream)
1279/AC3 (integration): same file, TestAnExistingConsumerKeepsItsPositionWhenAssertedAgain (no unit part: it needs a server)
Issue 1279, decided by ADR 0443 (clauses 1, 2, 4).
Delivery group on branch fix/1279-consumers-from-now: mesh-sdk first, then this pull request, then mesh-delivery. No dependency change here (no go.mod change, no vendor change).
What changes: `ConsumerFor` (EVENTS) and `heardConsumer` (another module's stream) set FromNow; `QueueConsumer` and `HolderConsumerFor` stay as they were; the manifest parser refuses a consumes entry that is not an event name, naming its keys (from, start, deliver). Two integration tests asserted the old replay and are turned around: raise_live_test.go (TestAModulesConsumerCreatedAfterwardsStartsFromNow) and modstreams_live_test.go (the reader's pending counts).
- 1279/AC1 (unit): internal/broker/derived_test.go TestAModulesConsumerIsMadeFromNow
- 1279/AC2 (integration): internal/broker/consumer_from_now_test.go TestAModulesConsumerDeliversNothingOfTheStreamsPast (EVENTS and another module's stream)
- 1279/AC3 (integration): same file, TestAnExistingConsumerKeepsItsPositionWhenAssertedAgain (no unit part: it needs a server)
- 1279/AC4 (unit): internal/catalogue/consumes_start_test.go TestAConsumesEntryAskingWhereItStartsIsRefused
The integration tests were compiled (`go vet -tags integration ./...`), not run, on the author's machine; the merge check runs them.
Reviewed-by: review-1279@shanks at a0c971cea92eba10c7f832826dbf6267ba5b43a1
mesh/merge-gate head a0c971cea92e merged into trunk 880207649956 — pass: group fix/1279-consumers-from-now composed: every machine composes with the change…
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before route-proxy, build-agent is judged on its first machine
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-controller on every machine running it: sent
mesh-delivery-indexer on every machine running it: sent
route-proxy on every machine running it: sent
build-agent on every machine running it: sent
mesh-delivery-forge-bridge on every machine running it: sent
Transitions
2026-10-19 19:57 (new) → proposed (announced): novox/mesh-controller#400's head announced
2026-10-19 20:02 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-19 20:02 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-19 20:45 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-19 20:45 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-19 20:58 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@a0c971cea92e` — **delivered** since 2026-10-19T20:58:09Z
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller, route-proxy
- tier 1: build-agent
- ace: receives route-proxy, build-agent
- g14: receives build-agent
- novox: receives mesh-controller, route-proxy, build-agent
- shanks: receives build-agent
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before route-proxy, build-agent is judged on its first machine
**Group** `fix/1279-consumers-from-now`: novox/mesh-controller@a0c971cea92e, novox/mesh-delivery@ca667af562b0, novox/mesh-sdk@4580d80a32d9
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-controller on every machine running it: sent
- mesh-delivery-indexer on every machine running it: sent
- route-proxy on every machine running it: sent
- build-agent on every machine running it: sent
- mesh-delivery-forge-bridge on every machine running it: sent
**Transitions**
- 2026-10-19 19:57 (new) → proposed (announced): novox/mesh-controller#400's head announced
- 2026-10-19 20:02 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-19 20:02 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-19 20:45 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-19 20:45 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-19 20:58 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `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.
Issue 1279, decided by ADR 0443 (clauses 1, 2, 4).
Delivery group on branch fix/1279-consumers-from-now: mesh-sdk first, then this pull request, then mesh-delivery. No dependency change here (no go.mod change, no vendor change).
What changes:
ConsumerFor(EVENTS) andheardConsumer(another module's stream) set FromNow;QueueConsumerandHolderConsumerForstay as they were; the manifest parser refuses a consumes entry that is not an event name, naming its keys (from, start, deliver). Two integration tests asserted the old replay and are turned around: raise_live_test.go (TestAModulesConsumerCreatedAfterwardsStartsFromNow) and modstreams_live_test.go (the reader's pending counts).The integration tests were compiled (
go vet -tags integration ./...), not run, on the author's machine; the merge check runs them.Reviewed-by: review-1279@shanks at
a0c971cea9Delivery
novox/mesh-controller@a0c971cea92e— delivered since 2026-10-19T20:58:09ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Group
fix/1279-consumers-from-now: novox/mesh-controller@a0c971cea9, novox/mesh-delivery@ca667af562, novox/mesh-sdk@4580d80a32Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.