Move the gate's source.main for a merge heard only from the forge, so the checker judges on the trunk that is (issue 888) #461

Merged
jschoubben merged 3 commits from fix/888-forge-merge-moves-source into main 2026-10-23 13:49:18 +00:00
Member

Fixes issue 888 (note 23): a merge made at the forge, not by the gate, left the gate's source.main at the old trunk (mesh-catalog 89e15c7b, mesh-delivery b714eab), so every later check and try of that repository merged onto a stale trunk, and gate merges were refused.

  • The gate moves source.main when the forge says a merge it did not make (modules/mesh-delivery-gate merges.go, model.go, ready.go), dating the head it holds so a late or repeated forge message never moves it back (review round 1).
  • Tests: issue888_test.go (a forge-heard merge moves source.main; an older one never moves it back).

Its try (try-1792757860780856696, 29 min) failed only on main's nats docker test, which feat/fastcheck's #460 fixes (cf071270); the 888 change itself passed its unit (4483) and every other integration test (4522). Merge after the fastcheck group, or with it.

Reviewed-by: review-888b@shanks at 8bc54a3e27 (the merge of main onto the reviewed dfcdf234 changes none of its lines; dfcdf234 reviewed by review-1894-888@shanks)
Pushed-by: lead-47@shanks

Fixes issue 888 (note 23): a merge made at the forge, not by the gate, left the gate's source.main at the old trunk (mesh-catalog 89e15c7b, mesh-delivery b714eab), so every later check and try of that repository merged onto a stale trunk, and gate merges were refused. - The gate moves source.main when the forge says a merge it did not make (modules/mesh-delivery-gate merges.go, model.go, ready.go), dating the head it holds so a late or repeated forge message never moves it back (review round 1). - Tests: issue888_test.go (a forge-heard merge moves source.main; an older one never moves it back). Its try (try-1792757860780856696, 29 min) failed only on main's nats docker test, which feat/fastcheck's #460 fixes (cf071270); the 888 change itself passed its unit (4483) and every other integration test (4522). Merge after the fastcheck group, or with it. Reviewed-by: review-888b@shanks at 8bc54a3e2764900b4d1bb2a716ae2a6a9e56ebf8 (the merge of main onto the reviewed dfcdf234 changes none of its lines; dfcdf234 reviewed by review-1894-888@shanks) Pushed-by: lead-47@shanks
mesh-tools added 3 commits 2026-10-23 13:10:45 +00:00
The checker reads the trunk only from the gate's source.main, and the gate moved it only in finish, for a merge it handed to
the forge bridge on an Approve. A pull request merged at the forge directly moved every other delivery's trunk (trunkMoved)
and left source.main behind, so the checker kept judging candidates on the trunk before it (catalogue 89e15c7b after
6c0024e4, 2026-10-23).

settleForgeMerges now writes such a merge into source.main by compare-and-set, never a merge replayed as history or older
than one of its repository already heard; an approved delivery merged at the forge before the gate handed it is moved by
finish with its group, once.
A merge the gate handed is known by the bridge's word before the forge's, and finish wrote it already; an older forge-only
merge heard in between overwrote it, since only the forge's word was dated and the write never compared with the head held.
A merge is now dated by either word, and the write leaves a head that is a later merge, or one the gate cannot date while
the merge is older than the records it keeps (a pruned newer merge).
Merge remote-tracking branch 'origin/main' into fix/888-forge-merge-moves-source
mesh/delivery covered after its failure: a later walk that contains it was delivered: plan-1792763407391518822 (novox/mesh-catalog at 2175b26c into main,…
mesh/check failed: integration: nats-tools/cmd/mesh-nats-snapshot.TestTheDeclaredDumpRunsInTheBussImage: image_test.go:141: docker run -d --rm --name …
8bc54a3e27
Author
Member

Delivery novox/mesh-catalog@8bc54a3e2764 — failed since 2026-10-23T13:51:11Z

Covered: covered after its failure: a later walk that contains it was delivered: plan-1792763407391518822 (novox/mesh-catalog at 2175b26c into main, done, contains its merge 2175b26c)

Delivery plan — builds mesh-delivery-gate → novox; no bus step

  • tier 0: mesh-delivery-gate
  • novox: receives mesh-delivery-gate

Machines

  • mesh-delivery-gate on every machine running it: sent

Transitions

  • 2026-10-23 13:10 (new) → proposed (announced): novox/mesh-catalog#461's head announced
  • 2026-10-23 13:36 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-23 13:36 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
  • 2026-10-23 13:49 rejected → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
  • 2026-10-23 13:49 held → delivering (release): the operator merged #461 (issue 888) by hand at the forge (15:49) to deliver the stuck changes; reviewed at 8bc54a3e (review-888b); its check failed only on main's nats docker test, which #460 fixes
  • 2026-10-23 13:51 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@8bc54a3e2764` — **failed** since 2026-10-23T13:51:11Z **Covered**: covered after its failure: a later walk that contains it was delivered: plan-1792763407391518822 (novox/mesh-catalog at 2175b26c into main, done, contains its merge 2175b26c) **Delivery plan** — builds mesh-delivery-gate → novox; no bus step - tier 0: mesh-delivery-gate - novox: receives mesh-delivery-gate **Machines** - mesh-delivery-gate on every machine running it: sent **Transitions** - 2026-10-23 13:10 (new) → proposed (announced): novox/mesh-catalog#461's head announced - 2026-10-23 13:36 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-23 13:36 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed - 2026-10-23 13:49 rejected → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on - 2026-10-23 13:49 held → delivering (release): the operator merged #461 (issue 888) by hand at the forge (15:49) to deliver the stuck changes; reviewed at 8bc54a3e (review-888b); its check failed only on main's nats docker test, which #460 fixes - 2026-10-23 13:51 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
jschoubben scheduled this pull request to auto merge when all checks succeed 2026-10-23 13:45:28 +00:00
jschoubben merged commit 2175b26c56 into main 2026-10-23 13:49:18 +00:00
jschoubben deleted branch fix/888-forge-merge-moves-source 2026-10-23 13:49:18 +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#461