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).
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-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).
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.
Deliverynovox/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`.
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 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
32ad59fc64Delivery
novox/mesh-catalog@32ad59fc6402— held since 2026-10-25T22:18:43ZHeld 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 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.