Say which pull requests are open and drop every other candidate (issue 1279, ADR 0443) #7

Merged
mesh-tools merged 2 commits from fix/1279-consumers-from-now into main 2026-10-19 20:22:44 +00:00
Member

Issue 1279, decided by ADR 0443 (clause 5).

Delivery group on branch fix/1279-consumers-from-now: mesh-sdk first, then mesh-controller, then this pull request. The forge bridge's and the indexer's go.mod pin the mesh-sdk branch head 4580d80a32d9 (the open kind).

What changes: at start and at each reconnect the bridge reads the forge, writes a pull message only for a head FORGE does not hold (it reads FORGE through an ordered consumer; if that cannot be read it writes every pull message, as before, and logs it), then one open message naming every open pull request into trunk it read; events and the sync take turns on one mutex, so no event is heard between the read and the write. The indexer, on open, takes every pull request it does not name out of its group and deletes a group left empty (compare-and-set as for any message); it needs the store's Keys.

  • 1279/AC6 (unit, bridge): internal/bridge TestOpenMessageNamesEveryOpenPullIntoTheTrunk, TestOnlyAHeadFORGEDoesNotHoldIsWritten; cmd open_test.go TestSyncOpenWritesPullsForNewHeadsThenOneOpenMessageNamingAll, TestSyncOpenWritesAllWhenFORGECannotBeRead, TestNoForgeEventIsHeardWhileTheOpenPullsAreSaid
  • 1279/AC7 (unit, indexer): internal/index TestAnOpenMessageDropsEveryCandidateItDoesNotName
  • 1279/AC8 (integration, bridge started whole): cmd integration_test.go TestBridgeReadsTheForgeAtStartAndAfterAReconnectAndHearsNoOlderEvent (the other integration tests now make the bridge's consumer from now, as the controller will, and expect the open message)

The integration tests were compiled, not run, on the author's machine.

Reviewed-by: review-1279@shanks at ca667af562

Issue 1279, decided by ADR 0443 (clause 5). Delivery group on branch fix/1279-consumers-from-now: mesh-sdk first, then mesh-controller, then this pull request. The forge bridge's and the indexer's go.mod pin the mesh-sdk branch head 4580d80a32d9 (the open kind). What changes: at start and at each reconnect the bridge reads the forge, writes a pull message only for a head FORGE does not hold (it reads FORGE through an ordered consumer; if that cannot be read it writes every pull message, as before, and logs it), then one `open` message naming every open pull request into trunk it read; events and the sync take turns on one mutex, so no event is heard between the read and the write. The indexer, on `open`, takes every pull request it does not name out of its group and deletes a group left empty (compare-and-set as for any message); it needs the store's Keys. - 1279/AC6 (unit, bridge): internal/bridge TestOpenMessageNamesEveryOpenPullIntoTheTrunk, TestOnlyAHeadFORGEDoesNotHoldIsWritten; cmd open_test.go TestSyncOpenWritesPullsForNewHeadsThenOneOpenMessageNamingAll, TestSyncOpenWritesAllWhenFORGECannotBeRead, TestNoForgeEventIsHeardWhileTheOpenPullsAreSaid - 1279/AC7 (unit, indexer): internal/index TestAnOpenMessageDropsEveryCandidateItDoesNotName - 1279/AC8 (integration, bridge started whole): cmd integration_test.go TestBridgeReadsTheForgeAtStartAndAfterAReconnectAndHearsNoOlderEvent (the other integration tests now make the bridge's consumer from now, as the controller will, and expect the open message) The integration tests were compiled, not run, on the author's machine. Reviewed-by: review-1279@shanks at ca667af562b0849df9caf5f13dfa2007e4c13fba
mesh-tools added 1 commit 2026-10-19 19:57:05 +00:00
Say which pull requests are open and drop every other candidate, so the candidates hold only open pull requests (issue 1279, ADR 0443)
mesh/delivery-group group fix/1279-consumers-from-now rejected: a member's own check failed
mesh/merge-gate waits for its group's composed check
mesh/repo-check head 677f94e9012b merged into trunk 1325c8b452c8 beside mesh-controller#400@a0c971ce — fail: its merge-check.sh failed: --- FAIL: TestBridg…
mesh/delivery superseded: a newer head of the same pull request
677f94e901
Author
Member

Delivery novox/mesh-delivery@ca667af562b0 — delivered since 2026-10-19T20:58:09Z

Delivery plan — builds mesh-delivery-forge-bridge, mesh-delivery-indexer → novox; no bus step

  • tier 0: mesh-delivery-forge-bridge, mesh-delivery-indexer
  • novox: receives mesh-delivery-forge-bridge, mesh-delivery-indexer

Group fix/1279-consumers-from-now: novox/mesh-controller@a0c971cea9, novox/mesh-delivery@ca667af562, novox/mesh-sdk@4580d80a32

  • 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 20:09 (new) → proposed (announced): novox/mesh-delivery#7's head announced
  • 2026-10-19 20:15 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-19 20:15 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-delivery@ca667af562b0` — **delivered** since 2026-10-19T20:58:09Z **Delivery plan** — builds mesh-delivery-forge-bridge, mesh-delivery-indexer → novox; no bus step - tier 0: mesh-delivery-forge-bridge, mesh-delivery-indexer - novox: receives mesh-delivery-forge-bridge, mesh-delivery-indexer **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 20:09 (new) → proposed (announced): novox/mesh-delivery#7's head announced - 2026-10-19 20:15 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-19 20:15 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`.
jschoubben added 1 commit 2026-10-19 20:09:44 +00:00
Keep the head last written per pull request in a bucket of the bridge's own instead of scanning FORGE, and test the bridge under its composed permissions (issue 1279, ADR 0443)
mesh/repo-check head ca667af562b0 merged into trunk 1325c8b452c8 beside mesh-controller#400@a0c971ce — pass: its merge-check.sh passed
mesh/merge-gate head ca667af562b0 merged into trunk 1325c8b452c8 — pass: group fix/1279-consumers-from-now composed: every machine composes with the change…
mesh/delivery delivered
mesh/delivery-group group fix/1279-consumers-from-now delivered: every member is delivered
ca667af562
mesh-tools merged commit fa4be27c1e into main 2026-10-19 20:22:44 +00:00
mesh-tools deleted branch fix/1279-consumers-from-now 2026-10-19 20:22:45 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#7