Repository navigation
Make emit-build a blocking lane on the fleet (operator sign-off 2026-10-02) - #13018
Conversation
…10-02) Flip gunbc.compiler_gate_workflow's emit-build lane row to LaneBlocks, move the job onto the fleet runner with the fleet prelude, fork guard and skippable-on-fork arm, and regenerate witnesses.yml. Add the census roster row the now-required job owes, update the native-route rung drop's note. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
HOLD (operator ruling via the N7 manager, 2026-10-02). Do not merge or enqueue this PR. Trigger to flip: advisory steps 2–4 have landed (head readers on diagnostics_fatal, residue reported once per grammar, HeadGrain deleted). The reason: emit_host currently turns any advisory into a build failure, so a blocking emit-build would block merges on misattributed residue. Until then this PR stays prepared, and the fleet wall and peak are being measured on its own run. |
…de a body refused) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
# Conflicts: # .github/workflows/witnesses.yml # dag/gunbc/witness/compiler_gate_workflow.dag
… announced-lane claim The emit-build-is-a-job inhabitance claim refused COMPLETED-OVER-COST-REQUIREMENT (84850 marginal eval steps, floor run 37213019300) once emit-build moved onto the fleet prelude. Both live claims that read compiler_gate_non_aggregate_job_ids now share one warm evaluation of it, and still read the live workflow. w_RED_the_live_announced_lanes_reach_neither_surface asserted EMIT_BUILD absent from the gate, which this PR makes false (local claim_batch: FAIL). emit-build now blocks; the claim keeps the deleted unit-test lane's absence and is renamed for it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Floor fix pushed at 9934365 (main merged in, and witnesses.yml regenerated with no drift).
— sent from calm-boar-904 |
Review 75874: lane_resolution_roster's emit-build row hand-copied the two entry paths from the seed's native_lane_runner constants, a second authority that could go stale silently. The entries are now the instruments' own facts, gunbc.instrument_targets self_host_entry / v2_native_cli_entry, which the census reads. The seed's Rust constants cannot read a .dag row yet, so test.claim.compiler_gate_emit_build_lane_witness_test the_seed_lane_entries_are_the_instrument_rows joins each constant's whole declaration line to its row and reds on drift (mutating V2_NATIVE_CLI_ENTRY alone turns it FAIL; 37 eval steps). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Review 75874 addressed in 0d71014. The emit-build row of lane_resolution_roster no longer hand-copies its entry paths: the two entries are now the instruments' own facts in gunbc.instrument_targets (self_host_entry, v2_native_cli_entry), and the census reads them. The seed's native_lane_runner constants (NATIVE_COMPILE_ENTRY, V2_NATIVE_CLI_ENTRY) cannot read a .dag row yet, so the new witness the_seed_lane_entries_are_the_instrument_rows (test.claim.compiler_gate_emit_build_lane_witness_test) matches each constant's whole declaration line against its row and reds on drift. Evidence, local claim_batch: the new claim PASSes at 37 eval steps; with V2_NATIVE_CLI_ENTRY alone changed in the Rust source, it FAILs (file restored afterwards). The census module resolves and typechecks (NoSuchFunction probe). No Rust or stage0 mirror changed, so no regen is involved. Main merged first. Residual, stated: the Rust constants are still a second spelling, held by that parity witness rather than removed. Removing them needs the seed's instrument dispatch to read the entry from the .dag binding, the way NativeClaimProgramProducer { entry } already does. — sent from calm-boar-904 |
# Conflicts: # src/v2/workflow/floor_pure_producer_share.dag
|
Merged main (#13043's derived pure-share). The only conflict was Floor on f556182 (run 37267701134): PASS, with no warm row, so the over-budget claim now fits under the derived sharing. generated: pass. emit-build: pending. — sent from calm-boar-904 |
Makes
emit-builda blocking lane of thewitnessesrequired context.Operator sign-off: given 2026-10-02 to calm-boar-904 (N7 manager), step 10 of the advisory program. The job roster stays closed to growth. This changes one lane's blocking status and runner, and adds no job.
Change (in the emitting authority; YAML is regenerated, not hand-edited)
gunbc.compiler_gate_workflowcompiler_gate_lane_rows: the emit-build row goes fromLaneAnnouncedNotBlockingtoLaneBlocks, with armGateArmSkippableOnFork. Itsneedsedge,EMIT_BUILDenv var and gate clauses all fold from that row.gunbc_ci_selected_runner_spec()(the fleet) and gets the fleet lanes' fork guard. The reason:compiler_gate_merge_path_runs_on_the_fleetrefuses a hosted blocking lane. Its prelude is now the fleet prelude overgunbconly (compiler_gate_fleet_prelude_bound_steps_for).emit_build_standing_notice_for.gunbc.required_lane_resolution_census_live: adds the roster row that the now-required job owes, covering the entry closures of00_compile.dagandcompile_cli.dag. Without it the coverage join refuses.gunbc.rung_drop.v2_native_route_off_the_merge_pathis not retired. Its trigger requires the lane to execute//gunbc/instruments:v2-native-frontier, and it still runs only self-host and v2-native-cli. The row's note now records this.Precondition measurements (requested by calm-boar-904)
These cover 58 merge_group runs on 2026-10-02:
EmissionRefusedat the emit stage. Each one was in a queue group whose run also failed through another lane, so none landed.Time budget
floor, which took 40–55 min on the same runs (for example run 37058931055), so it is not on the critical path against the roadmap's ~35 min row.emit-buildjob.Verification
witnesseswaited onemit-build(needs: emit-build, floor, generated). All lanes passed.prepare_emitted_compilerrefuses.required lanes: emit-build=failure floor=success generated=success, andwitnessesFAILED.accepted_source_emits_uncompilable_targetare stale.HOLD
Per the operator ruling relayed by the N7 manager, this must not merge until advisory steps 2–4 land: head readers on diagnostics_fatal, residue reported once per grammar, and HeadGrain deleted.
Floor fixes (head 9934365)
gunbc.compiler_gate_workflow.compiler_gate_non_aggregate_job_idstofloor_cross_claim_pure_producers_warmbecause floor run 37213019300 refusedthe_emit_build_lane_is_a_job_and_is_rosteredat 84,850 eval steps against 72,300. Floor: derive cross-claim pure-share from planned claims' call-site demand; delete the hand roster #13043 made sharing derived from cross-claim demand, so that row is removed (the file is byte-identical to main). Two claims demand the same producer (the live standings join and the emit-build-is-a-job claim), so the derivation should serve it; the floor on this head is the evidence, and if it shows a single demander still over budget, afloor_single_claim_fill_debtmember follows.w_RED_the_live_announced_lanes_reach_neither_surfaceassertedEMIT_BUILDabsent from the gate, which this PR makes false (local claim_batch: FAIL). It is noww_RED_the_deleted_unit_test_lane_reaches_neither_surfaceand keeps only the deleted unit-test lane's absence. emit-build's presence is asserted bythe_emit_build_lane_blocks_and_is_read_by_the_gate.🤖 Generated with Claude Code
Census entry paths (review 75874)
The emit-build census row reads its two entries from
gunbc.instrument_targetsself_host_entry/v2_native_cli_entry, the instruments' own facts, instead of hand-copied literals. The seed'snative_lane_runnerconstants are held equal to those rows bytest.claim.compiler_gate_emit_build_lane_witness_testthe_seed_lane_entries_are_the_instrument_rows, which reds when either side moves alone (red run with one constant mutated). Residual: the constants remain a second spelling until the seed's instrument dispatch reads the entry from the binding (asNativeClaimProgramProducer { entry }already does).