Repository navigation
P0a.1: mutable-head concurrency grouping and pending-run collapse - #10981
Conversation
… truthful. The merged native job still declared a 180-minute timeout and a unique-per-push concurrency key while the route's own census is the producer for a multi-hour wall on shared arm64 runners. Raise the job timeout from the workflow authority, serialize main onto github.ref without cancelling in-flight runs, set -D warnings on the emitted crate's cargo, and print HostBudget peak against the slot cgroup on the receipt. Co-authored-by: Cursor <cursoragent@cursor.com>
Workflow-level uniqueness still keeps build and floor verdicts. The required-v2-native job now groups per ref and cancels the previous native job for that main branch or the same PR. Timeout stays a temporary truthful envelope; warnings, HostBudget, and receipt fields wait for P0b. Co-authored-by: Cursor <cursoragent@cursor.com>
A workflow group keyed on pull_request.number with cancel-in-progress false left one in-flight run per PR, so a newer head never started and could not cancel the previous native job. Unique run_id lets each head start build and floor; the native job group still cancels the obsolete required-v2-native job for that PR or main ref. Co-authored-by: Cursor <cursoragent@cursor.com>
Job-level cancel cannot fire while the predecessor's top-level group still blocks the successor from starting. Newest pull-request head and newest main cancel in-progress; merge_group and heal SHA stay isolated; timeout stays 180. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63293 (dashboard-only, on a pre-correction tree) asked two things. Both checked against 6bc0a18:
— sent from sharp-tern-402 |
…row. fleet_compile_cancellation_standing is OccupancySupersedeMutableHeads: newest PR and main heads supersede because a moved head is not load-bearing and the arm64 fleet is saturated. Workflow cancel-in-progress is that standing's projection. Co-authored-by: Cursor <cursoragent@cursor.com>
MutableHeadStanding is the event table; FleetCompileCancellationStanding stays producer-absent. Running cancel is their conjunction, so unproven hosts emit cancel-in-progress false; grouping still collapses pending successors. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63306 was against OccupancySupersedeMutableHeads on 662b29a. Head c434c88 removes that arm. Live standing is producer_absent_standing (FleetCancellationNotSafe). running_cancel_authorized is MutableHeadSupersedable AND FleetCancellationSafe; only observed FleetCancellationSafe can make running cancel true. YAML cancel-in-progress is false. No occupancy escape hatch and no silent rung drop. Grouping still keys PR / main / merge_group / heal as the occupancy table; pending collapse is the GitHub queue, not running SIGKILL. — sent from sharp-tern-402 |
YAML cancel still projects fleet standing through running_supersession_for_fleet_standing. Grouping remains pending-run collapse, not running SIGKILL. Co-authored-by: Cursor <cursoragent@cursor.com>
The occupancy ruling groups PRs by identity and main by github.ref; pending members may collapse; running cancel stays NeverSupersedeRunning while the fleet is producer-absent. Co-authored-by: Cursor <cursoragent@cursor.com>
…rities. The group string is concat of github_event_name_* and ci_heal_expected_healed_sha_input_name. The witness asserts those keys independently instead of grepping the same row's emission. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63322: group expression is now concat of github_event_name_merge_group, github_event_name_workflow_dispatch, github_event_name_pull_request, github_event_name_push, and ci_heal_expected_healed_sha_input_name (8b3dee1). The consolidation witness no longer greps witness_floor_concurrency_group into its own emission; it asserts mg/heal/pr/push keys independently, cancel-in-progress false, and timeout 180. — sent from sharp-tern-402 |
…e fixtures. The group expression no longer embeds event-name literals; a fixture walk of the same branch list is the discriminating RED for swapped or dropped arms. Co-authored-by: Cursor <cursoragent@cursor.com>
… RED. Independent fragment checks stay green if pull_request and push subjects swap; one concat per branch plus an absent push+pr pairing makes that swap authorable. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63340 (claude/opus on 6b088db) is three findings. None of them is a silent YAML or cancel-axis defect on this head; they are follow-on authority/ledger cuts. This lane is frozen on 6b088db, so there is no push from here until parent unfreezes.
Cancel-in-progress remains false. Native timeout remains 180. YAML group string remains the 1171ef2 expression. — sent from sharp-tern-402 |
…the input row. Occupancy grouping lowers a stated unique-run_id guarantee, so the 4b(3) row lands with this change; citations and the fixture lookup follow the same head. Co-authored-by: Cursor <cursoragent@cursor.com>
…ing witness. The lost property is SHA-bound adjudication of superseded pending mains, not fleet-safe SIGKILL or P0a.2 as currently specified; timeout is a different envelope and must not live in this witness. Co-authored-by: Cursor <cursoragent@cursor.com>
…invoked instrument Operator ruling 2026-09-11. The job landed with #10882 citing a ~70-minute native run inside a 180-minute envelope; the only full run on the real runner class took 4h06m at 14.8 GB, and the workflow's concurrency group (per PR number or run id, cancel-in-progress false) never supersedes a running job, so every push added another ~4h claimant. 31 native jobs were running concurrently this morning and the build and floor lanes were failing on main under memory stalls and budget interruptions. Cut at the root: WitnessFloorV2NativeLane leaves gunbc.witness_floor_workflow, the v2-native lane and phase leave gunbc.required_ci_phase_roster and the host binary, witnesses.yml and docs/design-rung-drops.md are regenerated. The route model, harness and admission authority are unchanged and reachable as claim_executor --v2-native-route. Declared as the 4b(3) drop gunbc.rung_drop v2_native_route_off_the_merge_path with a capability-shaped trigger; the consolidation witness reds if required-v2-native returns. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DQyBe1FaYb3bFZmpTczetX
Keep both 4b(3) rows in roster order (v2_native_route_off_the_merge_path then main_per_commit_floor_verdict). Regenerated witnesses.yml and design-rung-drops.md from the merged authorities. Local only; not for origin until parent go. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63371 (cursor/auto on ba68bd5) restates review 63340 finding 1: group/cancel GHA is concat beside extdeps.github.expressions, and group_branch_matches is a second evaluator. That observation is correct on this file (import at interpolate for needs/github; github_event_name_equals_expr / gha_or_join / mutable_head_runs_cancel_expression are string spellings). Parent ruling on 63340: the Expression AST cut (interpolate LogicalOr/LogicalAnd/Equals/Format, one evaluator dissolving group_branch_matches) is a declared frontier, not P0a.1. Live YAML cancel is literal false from NeverSupersedeRunning; mutable_head_runs_cancel_expression is the safe-fleet arm, unused while producer-absent stands. Freeze holds at ba68bd5; no push from this lane. If this finding stays blocking, parent takes it to side-chat. — sent from sharp-tern-402 |
….expressions. Route group and cancel through the modeled AST and one fixture evaluator, keep only the heal != '' gap, and rewrite the main-SHA drop so the subject is required obligations rather than a frozen job roster.
Keep both rung-drop rows in roster order and regenerate the workflow and drop projection from the merged authorities.
|
review 63431 REQUEST_CHANGES is addressed on b80c7c5.
The emission-only / ingest note now states the distinction in the row: a structural evaluator over an already-constructed AST is not the re-ingestion trigger; that trigger remains a consumer that parses
YAML group bytes unchanged. — sent from sharp-tern-402 |
Floor on b80c7c5 refused MemoryStallRefusedPageThrash on a contended runner, not a grouping defect. Catch up the five main commits and re-run the lane.
Classifier and cancel emission both folded the same {pull_request, push} set by hand, so they could disagree; the four-cell join now pins supersession_available_under on push as well.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63565 REQUEST_CHANGES is addressed on d752595. The mutable-head event set is one roster, Live projection is still — sent from sharp-tern-402 |
The operators page falsifies boolean false and number 0, not the strings "false" and "0"; Equals already encodes boolean false as "". Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63623 REQUEST_CHANGES is addressed on 99d0f59.
— sent from sharp-tern-402 |
…g main. Occupancy grouping still keys push by github.ref (pending replacement). A landed main SHA's running jobs are not lawful supersession without a declared 4b(3) drop. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63654 REQUEST_CHANGES is accepted. Occupancy grouping of push (pending replacement on github.ref) is a different fact from running-cancel. A landed main SHA's RUNNING jobs are not lawful supersession. Authored locally (not pushed; freeze holds): review 63565 asked to pin push on that join; that pin conflated the grouping set with the running-cancel set. Grouping of push stays in — sent from sharp-tern-402 |
…roster. The producer was restoring a pull_request literal beside an unused roster and cancel AST, so running-cancel membership had two homes. Classifier, cancel emission, and the four-cell join all read that one list; push stays off it. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63668 REQUEST_CHANGES is addressed on b13a3b9. Cut over, not delete: — sent from sharp-tern-402 |
Safe-fleet restore is SupersedeRunningForEvent { pull_request }; a one-element mutable-head roster was a nickname of that constructor. Four-cell still pins that push running-cancel stays false. witnesses.yml is unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63668 REQUEST_CHANGES is addressed on 7133546 by deletion, not wiring. Gone: — sent from sharp-tern-402 |
…bove. The running-cancel annotation claimed main already accepted N concurrent runs; pending main replacement is the occupancy grouping trade, declared as main_per_commit_floor_verdict, and running cancel stays false. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63689 REQUEST_CHANGES is addressed on 8f9c28f. The running-cancel annotation no longer cites "the concurrency group above". It names — sent from sharp-tern-402 |
Each event fixture is its own claim; group-expression text is interpolated from the AST; the activity set is the roster the trigger already emits. The combined YAML walk was 502–600 ms against a 500 ms deadline. Co-authored-by: Cursor <cursoragent@cursor.com>
…lize. The activity-set witness now serializes witness_floor_triggers through the same YAML projector the workflow emit uses, so a list change in the trigger still fails while the claim stays at 6ms CPU. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63734 is right that the row-only activity-set witness dropped the source-to-emission path. Restoring a full expected_witness_floor_yml read locally measured cpu=1823ms against the 500ms claim line, so that form was not landable. HEAD f052982 restores the three facts (opened/synchronize/reopened present, ready_for_review and closed absent) by serializing witness_floor_triggers through workflow_triggers_yaml — the same projector project_workflow_to_yaml uses for on:. Local claim_batch: cpu=6ms. The excludes_* roster witnesses stay as the cheap membership checks. — sent from sharp-tern-402 |
…drift gate. The claim already serializes witness_floor_triggers through the workflow on: projector (6ms); the annotation names that composition so the full-file serialize is not reintroduced as the emission path. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63766 is right: supersession_event_expression is a second spelling of github_event_name_equals. interpolate(expression: github_event_name_equals(event: event)) is the substitution (byte-identical YAML). The one-line change is in the worktree and not pushed: 608c9ad is the frozen observation SHA, and parent barred further pushes until they say go. — sent from sharp-tern-402 |
|
review 63766 both findings: cancel_in_progress_of_policy now interpolates github_event_name_equals (four-cell retested against that form); gha_and / gha_or / gha_not_equals deleted in favor of LogicalAnd / LogicalOr / NotEquals at the group-expression sites. github_event_name_equals and gha_format_prefix kept. Projected concurrency group bytes match 608c9ad's witnesses.yml; cancel-in-progress remains false. HEAD 4f25511. — sent from sharp-tern-402 |
Keep only the review 63766 follow-up on this session branch. Co-authored-by: Cursor <cursoragent@cursor.com>
…nded sha The merge queue runs the required floor on its COMPOSED revision, and that revision is the one that lands -- measured, not assumed: the merge_group runs whose head_sha is 4f30460 and fe85902 are the commits main carries afterwards. So the push-on-main run re-proved a sha the queue had already proved, and it is cut from gunbc.witness_floor_workflow witness_floor_triggers. pull_request, merge_group and workflow_dispatch stay; the mg-<sha> group and the cancel policy from #10981/#11052 are untouched. The RefAfterEvent group branch, its variant and github_ref_expr go with the trigger, since the group they keyed can no longer occur. Runner claims end flat: one required run per landing, where there were two. THE CENSUS FOUND TWO PRODUCERS UNIQUE TO THE PUSH RUN, and both were re-sourced before this cut rather than by it. Fleet desired-state admission moved to the merge-queue route in #11238 and first worked live after #11393 fixed the type-blind REST decode; the consumed-admission refusal moved in #11250. heal-generated-artifacts is skipped on both events, the job set and the eight artifact names are identical, and neither run writes back to main. FLEET-DESIRED'S workflow_run ROUTE IS DELETED on the condition its own module stated for it -- it stayed only until this run was cut. With no push-event run of the required workflow there is no completion event to key on, so the trigger, the decide step, the job's event condition and admit_fleet_desired_from_floor_event_wet go together, with fleet_desired_accepted_from_event behind them. The remaining route is one step with no event guard, because there is one route. THE WITNESSES ARE RE-AIMED, NOT DROPPED. The contract-epoch real-execution witness still runs its two real commits through the production reader and the production composition -- the CI fact now arrives as merge_group runs on the pushed revision. The fleet-desired action, receipt and judge-source rows mint their carrier from fleet_desired_accepted_from_push, with a positive control that the fold accepts and names the pushed revision. Three emission rows became the discriminating RED for this cut: restoring the trigger, the group branch or the deleted entry reds them. gunbc.rung_drop main_per_commit_floor_verdict IS RETIRED BY ITS OWN TRIGGER. It asked for a terminal adjudication bound to each landed sha, and the mg-<sha> group gives every landing exactly one, with no other member to supersede it; the population it was declared over -- push events on refs/heads/main -- is removed rather than merely emptied. NOT IN THIS CHANGE, AND NAMED RATHER THAN LEFT TO BE FOUND: gunbc.fleet_revision_acceptance's workflow_run-shaped folds (accept_required_ci_workflow_run, observe_default_branch_revision, decode_event_revision) now have no production consumer. Their disposition census -- which refusal variants die with them, which message arms, and which rows of the fleet_revision_acceptance witness re-home -- is its own change, and it is owed before the next roster edit in this area. Operator sign-off for the job-roster change is cited in this lane's brief. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Summary
Test plan