Repository navigation
Stage0 mirrors are adjudicated on merge_group: the build lane as a step of the floor job - #12104
Conversation
…ep of the floor job Operator decision msg_f1ade7cf-77e4-4896-a8b3-476747692c37 (2026-09-23): merge_group only. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Control results: this PR must not land as it stands. Converted to draft. Positive control #12102 (clean tree, run 35810815149, floor job 107021735980):
Negative control #12103 was cancelled the same way, so it discriminates nothing beyond the positive control's red. Event gate (the parent's point (b)): on this PR's own pull_request run 35810834019, the floor job succeeded and Blocked on: (1) re-syncing the 32 mirrors, and (2) a cost decision, since the operator's merge_group ruling was priced at ~20 min. |
…ecision msg_4a9045fc Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…y the first control run) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…p, per operator decision msg_6e36a6a2 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
On the note in review 70794 about transcribed measurements: fair under DESIGN §6. Each figure in the rationale sits beside the run that produced it (35890770775 for the 22.5 min lane and ~58 min job; 35716368507 for the memory.high peak), so the producer is named and a reader can re-derive the figure there. I'm not re-pushing for it now, because a new head would restart CI right before re-queue. If you want the bare numbers removed and only the run IDs kept, it's a comment-only follow-up. — sent from neat-carp-265 |
…group run Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rge_group run 36008489185 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…de, regenerated next); the amendment bearing is historical after #12104 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s on merge_group); docs projection regenerated Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adds full stage0 regen coverage (the build lane, both generations) as a merge_group-only step. The sign-off is operator decision msg_6e36a6a2 (2026-09-23). It supersedes msg_4a9045fc (generation 1 only) and the ~20 min pricing of msg_f1ade7cf-77e4-4896-a8b3-476747692c37. It covers exactly this step on this event, and nothing wider.
Land AFTER #12157 (the stage0 mirror resync). Until #12157 lands, this step is red on main's drifted mirrors.
The first live merge_group run caught real drift. In its own merge_group run 35973487586, this PR's step refused the composed revision with
stage0-mirrors FAIL generated surface drift: v1_compiler_emit_rust.rs. Main had drifted again after #12157, because nothing enforced the mirrors yet, and the queue dropped the PR (failed_checks). The chicken-and-egg is resolved by carrying that resync in this PR:v1_compiler_emit_rust.rsis regenerated byclaim_executor --regen-round-cost(changed_paths=1, one convergence stage) on origin/main90bd54965cd. On the merged tree, the step's exact commandclaim_executor --required-ci --source-root dag --source-root src/v2 --required-lane buildthen givesstage0-mirrors first_generation_equal=true,generated-artifact OK,fixed_point_equal=true,phases_failed=0. The source commits touching the emitter since #12157 are #12180 (3e36b84e7b1) and36dd24afc38; I did not bisect which one moved the mirror.What changed
gunbc.compiler_gate_workflowcompiler_gate_stage0_regen_step: one step on the existingfloorjob, running the build lane's own command (gunbc.witness_floor_workflowbuild_lane_run_script→claim_executor --required-ci --source-root dag --source-root src/v2 --required-lane build). The binary's exhaustive partition decides which phases run: GeneratedArtifact adjudicates every stage0 mirror against the first generation, and RegenFixedPoint compares a second generation against it. No job had run this lane since CI: required witnesses check builds only the compiler, on a hosted runner #11742.!cancelled() && github.event_name == 'merge_group' && steps.build_witness_fold.outcome == 'success'. It runs as a separate process after the floor exits, which is the measured memory constraint. A floor red cannot disarm it.flooralready checks out the tree and buildsclaim_executor. The rationale is recorded atwitness_floor_lane_jobs. No timeout was raised.witnesses.ymlandDESIGN.mdwere regenerated withgenerated_artifact_gate main_wet, not hand-edited. The stale DESIGN "Building & checks" sentence is corrected atgunbc.design_document.test.claim.compiler_gate_workflow_witness_testw_RED_the_stage0_mirrors_are_adjudicated_on_merge_group_only_after_the_floor. It checks that the step runs--required-lanewith no measurement receipt, is gated on merge_group with!cancelled(), and comes after the floor's producer. Locally it returnstrue. It went RED on the real floor path (run 35890770775) on a branch whose step ran a different command, so it discriminates.Evidence (fleet runs; throwaway drafts widened the event gate to pull_request through the authority, and all are closed)
first_generation_equal=true, registry 49/49 match,fixed_point_equal=true,phases_failed=0; the floor job took ~58 min against its 90-min timeoutstd_measure.rs)FAIL generated surface drift: std_measure.rs(only that file),phases_failed=1floorsucceededThe ~30 min first generation measured earlier was inflated by the field-name re-export leak that #12100 fixed.
Along the way, the first attempt found 32 drifted mirrors on main. That drift traced to the #12089 emitter defect (fixed by #12100) and to an installer gap for the crate-less manifest (fixed by #12146). #12157 resyncs the remainder.
Rung drops: none retired
floor_cut_regen_second_generation_agreement: its trigger is second-generation refusal for EVERY phase that regenerates a committed population, shown by a red on a generation-unstable fixture. RegenFixedPoint compares a second generation for the stage0 mirrors only (it readstarget/stage0-regen-receipt.json). The registry projections get no second generation, and no unstable fixture was run. Not met.rust_unit_tests_off_the_merge_path(runner supply for the--libtests) andwitness_floor_off_the_required_gate(the whole witness population on the landing revision): not touched, not met.🤖 Generated with Claude Code