mesh-delivery-gate: ask the operator's Approve only once the check has a verdict (issue 1733) — wait for its check before approving this one #530

Merged
mesh-tools merged 3 commits from fix/ask-after-check into main 2026-10-27 23:25:27 +00:00
Member

The operator, 2026-10-27 23:54 CET: "if you don't want me to approve it, don't send the approval request". With check-gates-merge false the gate asked the Approve as soon as a pull request opened, before its check ("its check has no verdict yet ... Approve merges it now"), and five changes were approved before their checks tonight.

Change (only while check-gates-merge is false; the check still gates no merge). The Approve is asked once the check has a verdict at the asked heads (for a group, the group's): on a pass ("passed its check") or a fail (with the failure's words; the operator may still merge). While the check runs, nothing is sent and mesh-delivery.show reads "waits its check before asking the operator's Approve ... asked anyway at HH:MM if it has not answered". After 60 minutes with no verdict, counted from the latest head (a member with no ready run counts from now; a check that starts running again or a verdict removed restarts it), it asks anyway and says so. A later verdict re-asks in its words. A placement change waits for every node's shadow answer through the checker's composition (ADR 0559 §5); a pass whose composition was not judged says so. Times in the operator's zone (Europe/Brussels).

No decision record changes: ADR 0421 §1 already says "as soon as the checks pass"; the early ask came from mesh-catalog #514's wording fix.

Quick or thorough. Quick: change only the words. Thorough (chosen): change when the gate asks, in the one place it is decided (ready.go).

Tests. Rows in the issue-1733 table and the ungated group test (pass, no verdict, running, past the bound, passed after the bound, failed; group re-push after 60 min not asked, failing with the old rule; placement uncomposed; local times). Gate suite, vet with and without the integration tag, words check clean. No new test functions.

Review: round 1 CHANGES (the bound counted from older group members), round 2 APPROVED dea390ac with a test gap, round 3 APPROVED the head (the re-push row now fails on the old rule).

Reviewed-by: review-ask@shanks at 354d62340d

The operator, 2026-10-27 23:54 CET: "if you don't want me to approve it, don't send the approval request". With check-gates-merge false the gate asked the Approve as soon as a pull request opened, before its check ("its check has no verdict yet ... Approve merges it now"), and five changes were approved before their checks tonight. **Change (only while check-gates-merge is false; the check still gates no merge).** The Approve is asked once the check has a verdict at the asked heads (for a group, the group's): on a pass ("passed its check") or a fail (with the failure's words; the operator may still merge). While the check runs, nothing is sent and mesh-delivery.show reads "waits its check before asking the operator's Approve ... asked anyway at HH:MM <local> if it has not answered". After 60 minutes with no verdict, counted from the latest head (a member with no ready run counts from now; a check that starts running again or a verdict removed restarts it), it asks anyway and says so. A later verdict re-asks in its words. A placement change waits for every node's shadow answer through the checker's composition (ADR 0559 §5); a pass whose composition was not judged says so. Times in the operator's zone (Europe/Brussels). No decision record changes: ADR 0421 §1 already says "as soon as the checks pass"; the early ask came from mesh-catalog #514's wording fix. **Quick or thorough.** Quick: change only the words. Thorough (chosen): change when the gate asks, in the one place it is decided (ready.go). **Tests.** Rows in the issue-1733 table and the ungated group test (pass, no verdict, running, past the bound, passed after the bound, failed; group re-push after 60 min not asked, failing with the old rule; placement uncomposed; local times). Gate suite, vet with and without the integration tag, words check clean. No new test functions. Review: round 1 CHANGES (the bound counted from older group members), round 2 APPROVED dea390ac with a test gap, round 3 APPROVED the head (the re-push row now fails on the old rule). Reviewed-by: review-ask@shanks at 354d62340d4d3d907d72146fc77f6fa49f12ef5e
mesh-tools added 3 commits 2026-10-27 23:08:04 +00:00
The operator, 2026-10-27 23:54: "if you don't want me to approve it, don't send
the approval request". The gate asked the Approve the moment a pull request
opened, before its check answered, and five changes were approved unchecked.

Now the ask waits for the checker's verdict at the heads it covers (a group's
verdict of all its heads together; a placement change's verdict ends only once
its nodes answered, ADR 0559 §5). A pass or a failure is asked, the failure in
its words, since check-gates-merge false lets the operator merge it anyway. A
check with no verdict 60 minutes after the heads became ready is asked anyway,
saying so, and asked again in new words when its verdict comes.

Quick fix (only the ask's wording) against thorough (the one place that decides
when to ask, ungatedWaits): thorough, which is one place here.
A group member made ready in an event handler has no ready run when its sibling
is looked at; the bound counted from the older sibling alone, so a re-push past
60 minutes asked at once as unanswered. Such a member now counts as ready now.

The bound also counts from a check starting again at the same heads, or its
verdict being taken away, so a pass that turns back into running never asks at
once as unanswered. Times in the wait and the ask are the operator's zone
(Europe/Brussels, as the messenger says them), and a placement change whose pass
holds no composition says that no node answered its placement.
mesh-delivery-gate: the group re-push row holds no verdict at the new heads, so only the missing-run rule keeps it unasked (issue 1733, review round 2)
mesh/delivery merged: source.main moved to novox/mesh-catalog@0c63b4c906c6
mesh/check being carried to 354d62340d4d on 0c63b4c906c6 | from 00d155da60f5
354d62340d
Author
Member

Delivery novox/mesh-catalog@354d62340d4d — merged since 2026-10-27T23:25:30Z

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

Transitions

  • 2026-10-27 23:08 (new) → proposed (announced): novox/mesh-catalog#530's head announced
  • 2026-10-27 23:08 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
  • 2026-10-27 23:25 ready → merged (merged): on the trunk its modules follow: merged there

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@354d62340d4d` — **merged** since 2026-10-27T23:25:30Z **Source** — source.main moved to novox/mesh-catalog@0c63b4c906c6. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-10-27 23:08 (new) → proposed (announced): novox/mesh-catalog#530's head announced - 2026-10-27 23:08 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false) - 2026-10-27 23:25 ready → merged (merged): on the trunk its modules follow: merged there 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-tools merged commit 0c63b4c906 into main 2026-10-27 23:25:27 +00:00
mesh-tools deleted branch fix/ask-after-check 2026-10-27 23:25:27 +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#530