Gate: a merge learnt seconds late moves the trunk; and a setting check-gates-merge so the merge check can stop gating (operator 2026-10-25 22:56) #483

Merged
jschoubben merged 2 commits from fix/merge-without-check-gate into main 2026-10-25 22:18:42 +00:00
Member

Issue 1945.

1. Stale trunk (commit 93f655da). mesh-delivery #51 merged at 21:43:11 UTC; at 21:43:14 the gate read the forge's open-pull list before the merged event and took #51 as learnt late. That path set SourceMoved without writing source.main, and settleMerges skipped learnt-late members, so source.main kept mesh-delivery at 73be3df and every later check judged the old trunk (#52's re-check never came; the operator merged #52 by hand at 23:03, which moved it). Fix: a late merge landed under 15 minutes ago counts as heard as it happened; at the gate's start a delivery an older gate left this way is written to source.main (from the forge's merge commit, never the PR head; never backwards). delivery_status now answers source-main (no tool read that bucket before).

2. The operator's direction 22:56: "run the check locally only, but not as a gate, it loses us too much time". Setting check-gates-merge (default true: nothing changes until it is set) on mesh-delivery-gate and on gitea (trusted: the operator's Approve). False: a pull request is ready and its merge asked once its review is recorded at its head; a trunk move puts nothing out of date; a failed verdict rejects nothing; a verdict that arrives is shown. gitea's merge tool then merges the exact head the Approve names whatever mesh/check says; a moved head, an unguarded branch, a git conflict and a base still requiring a status are refused as before. Groups merge whole. delivery_status and show answer check-gates-merge. Where the check gated: table.go:136 (EvAccepted), table.go:166 (EvTrunkMoved), ready.go:340-372, events.go:70; gitea merge.ts:146-170.

Turned on after delivery: mesh-config.config set mesh-delivery-gate check-gates-merge=false on novox, and propose gitea check-gates-merge=false (operator Approve).

Checked locally (operator's direction): gate unit -race, go vet -tags integration, the gate's integration level once; gitea npm test 202/202 and its Go tests; catalogue checks config, templates, words. No new top-level tests (rows, each failing on the old code).

Reviewed-by: review-gate@shanks at 32ad59fc64

Issue 1945. **1. Stale trunk (commit 93f655da).** mesh-delivery #51 merged at 21:43:11 UTC; at 21:43:14 the gate read the forge's open-pull list before the merged event and took #51 as learnt late. That path set SourceMoved without writing source.main, and settleMerges skipped learnt-late members, so source.main kept mesh-delivery at 73be3df and every later check judged the old trunk (#52's re-check never came; the operator merged #52 by hand at 23:03, which moved it). Fix: a late merge landed under 15 minutes ago counts as heard as it happened; at the gate's start a delivery an older gate left this way is written to source.main (from the forge's merge commit, never the PR head; never backwards). delivery_status now answers source-main (no tool read that bucket before). **2. The operator's direction 22:56: "run the check locally only, but not as a gate, it loses us too much time".** Setting `check-gates-merge` (default true: nothing changes until it is set) on mesh-delivery-gate and on gitea (trusted: the operator's Approve). False: a pull request is ready and its merge asked once its review is recorded at its head; a trunk move puts nothing out of date; a failed verdict rejects nothing; a verdict that arrives is shown. gitea's merge tool then merges the exact head the Approve names whatever mesh/check says; a moved head, an unguarded branch, a git conflict and a base still requiring a status are refused as before. Groups merge whole. delivery_status and show answer check-gates-merge. Where the check gated: table.go:136 (EvAccepted), table.go:166 (EvTrunkMoved), ready.go:340-372, events.go:70; gitea merge.ts:146-170. Turned on after delivery: mesh-config.config set mesh-delivery-gate check-gates-merge=false on novox, and propose gitea check-gates-merge=false (operator Approve). Checked locally (operator's direction): gate unit -race, go vet -tags integration, the gate's integration level once; gitea npm test 202/202 and its Go tests; catalogue checks config, templates, words. No new top-level tests (rows, each failing on the old code). Reviewed-by: review-gate@shanks at 32ad59fc640253944f6bfb25ca0b5ec2d4f8535e
mesh-tools added 2 commits 2026-10-25 22:13:22 +00:00
mesh-delivery#51 merged 21:43:11 and the gate read the open list at 21:43:14, before the forge's merged event: taken as
learnt late, it moved no trunk and its group's finish left it out of source.main, so the checker kept judging every
mesh-delivery head on 73be3df. A late merge within replayLate of its landing is now taken as heard as it happened, and
one a gate before this left is written at the catch-up of the start (never backwards).
mesh-delivery-gate and gitea: a setting check-gates-merge; false asks a reviewed pull request's Approve and merges it without waiting for mesh/check
mesh/delivery held for a person: merged without a passing check: only a person decides what follows
mesh/check pass 32ad59fc6402 on 609013a2638f | unit 2010 run, 2322 kept, 5 skipped | integration 2032 run, 2341 kept, 9 skipped | over bound: unit, in…
32ad59fc64
The operator, 2026-10-25 22:56: "run the check locally only, but not as a gate, it loses us too much time". Tonight each
merge ask waited 3-7 minutes for mesh/check, and every merge into main refused the next approved merge for a check judged
on the trunk before (mesh-delivery#52). Both settings default to true, so nothing changes until the operator sets them.
False: the gate makes a reviewed pull request ready and asks its Approve with no verdict, a trunk's move puts nothing out
of date, a verdict is kept and shown, and a group still merges in one pass; the merge tool merges a head the Approve
names whatever its mesh/check says. delivery_status and show say the mode.
Author
Member

Delivery novox/mesh-catalog@32ad59fc6402 — held since 2026-10-25T22:18:43Z

Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check.

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

Transitions

  • 2026-10-25 22:13 (new) → proposed (announced): novox/mesh-catalog#483's head announced
  • 2026-10-25 22:18 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows

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@32ad59fc6402` — **held** since 2026-10-25T22:18:43Z Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check. **Source** — source.main moved to novox/mesh-catalog@609013a2638f. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-10-25 22:13 (new) → proposed (announced): novox/mesh-catalog#483's head announced - 2026-10-25 22:18 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
jschoubben merged commit 609013a263 into main 2026-10-25 22:18:42 +00:00
jschoubben deleted branch fix/merge-without-check-gate 2026-10-25 22:18:42 +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#483