Skip to content

Make emit-build a blocking lane on the fleet (operator sign-off 2026-10-02) - #13018

Merged
gunbai-bot[bot] merged 10 commits into
mainfrom
session/swift-koi-30
Oct 5, 2026
Merged

gunbai-bot[bot] merged 10 commits into
mainfrom
session/swift-koi-30

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Makes emit-build a blocking lane of the witnesses required 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_workflow compiler_gate_lane_rows: the emit-build row goes from LaneAnnouncedNotBlocking to LaneBlocks, with arm GateArmSkippableOnFork. Its needs edge, EMIT_BUILD env var and gate clauses all fold from that row.
  • The job moves to gunbc_ci_selected_runner_spec() (the fleet) and gets the fleet lanes' fork guard. The reason: compiler_gate_merge_path_runs_on_the_fleet refuses a hosted blocking lane. Its prelude is now the fleet prelude over gunbc only (compiler_gate_fleet_prelude_bound_steps_for).
  • The failure notice now says the lane BLOCKS. It is rendered from the row by emit_build_standing_notice_for.
  • Before this change, the aggregate's error suffix said every lane's absence meant "no witnesses fold and no generated-artifact verdict". It now reads "no verdict from that lane".
  • gunbc.required_lane_resolution_census_live: adds the roster row that the now-required job owes, covering the entry closures of 00_compile.dag and compile_cli.dag. Without it the coverage join refuses.
  • gunbc.rung_drop.v2_native_route_off_the_merge_path is 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.
  • Witness tests are updated: the lane blocks, it is in the established set, and the prelude has 6 steps.

Precondition measurements (requested by calm-boar-904)

These cover 58 merge_group runs on 2026-10-02:

  • emit-build passed 53 times and failed 5 times.
  • All 5 failures were structural EmissionRefused at the emit stage. Each one was in a queue group whose run also failed through another lane, so none landed.
  • There were no infra or flake signatures.
  • emit-build is green on current main.

Time budget

  • Hosted emit-build took about 31–32 min. It runs in parallel with 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.
  • The fleet wall is unmeasured until this PR's run. That figure will be read from this PR's own emit-build job.

Verification

  • This PR's run 37080320688 at head 99656ef: witnesses waited on emit-build (needs: emit-build, floor, generated). All lanes passed.
    • Fleet walls: emit-build 39m10s, floor 39m53s, generated 26m03s.
    • On the fleet, emit-build now finishes at roughly the same time as floor, so a landing still takes about 40 min. That figure is above the roadmap's ~35 min row, but floor alone was already above it before this change.
    • Peak memory is not reported by the lane, so it is not measured here.
  • Discriminating red on throwaway THROWAWAY: emit-build discriminating red for #13018 (do not merge) #13020 (closed), run 37080349136.
    • The seed emission route was deliberately broken: prepare_emitted_compiler refuses.
    • Result: required lanes: emit-build=failure floor=success generated=success, and witnesses FAILED.
    • Earlier attempts using source-level idioms all compiled. The ledger entries for them in accepted_source_emits_uncompilable_target are stale.
  • This lane caught a real defect in this PR's first push: an annotation placed inside a declaration body. It is fixed in 460f715.

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)

  • No hand warm row (dropped after Floor: derive cross-claim pure-share from planned claims' call-site demand; delete the hand roster #13043). An earlier head added gunbc.compiler_gate_workflow.compiler_gate_non_aggregate_job_ids to floor_cross_claim_pure_producers_warm because floor run 37213019300 refused the_emit_build_lane_is_a_job_and_is_rostered at 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, a floor_single_claim_fill_debt member follows.
  • Renamed claim: 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). It is now w_RED_the_deleted_unit_test_lane_reaches_neither_surface and keeps only the deleted unit-test lane's absence. emit-build's presence is asserted by the_emit_build_lane_blocks_and_is_read_by_the_gate.
  • Local evidence: claim_batch shows 42/42 PASS over both compiler-gate witness files. claim_batch does not model the cross-claim share, so the floor run is the receipt for the cost.

🤖 Generated with Claude Code

Census entry paths (review 75874)

The emit-build census row reads its two entries from gunbc.instrument_targets self_host_entry / v2_native_cli_entry, the instruments' own facts, instead of hand-copied literals. The seed's native_lane_runner constants are held equal to those rows by test.claim.compiler_gate_emit_build_lane_witness_test the_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 (as NativeClaimProgramProducer { entry } already does).

…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>
@gunbai-bot
gunbai-bot Bot marked this pull request as draft October 2, 2026 21:44
@gunbai-bot gunbai-bot Bot changed the title Make emit-build a blocking lane on the fleet (operator sign-off 2026-10-02) [DO-NOT-MERGE: hold] Make emit-build a blocking lane on the fleet (operator sign-off 2026-10-02) Oct 2, 2026
@gunbai-bot

gunbai-bot Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor Author

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.

gunbc-ci-auto-heal and others added 3 commits October 2, 2026 21:52
…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>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-03T00:50:08.338168Z 99656ef Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

gunbc-ci-auto-heal and others added 3 commits October 4, 2026 15:26
# 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>
@gunbai-bot

gunbai-bot Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

Floor fix pushed at 9934365 (main merged in, and witnesses.yml regenerated with no drift).

  • Over-budget claim. Floor run 37213019300 refused the_emit_build_lane_is_a_job_and_is_rostered at 84,850 marginal eval steps. Two claims read the live job ids, so gunbc.compiler_gate_workflow.compiler_gate_non_aggregate_job_ids now has a warm cross-claim share row; it is listed in the PR body under the amended freeze. Both claims still read the live workflow.
  • Stale claim. w_RED_the_live_announced_lanes_reach_neither_surface asserted that EMIT_BUILD is absent from the gate, which this PR makes false; it FAILs under local claim_batch. It is renamed to cover only the deleted unit-test lane. emit-build's presence is held by the_emit_build_lane_blocks_and_is_read_by_the_gate.
  • Local check: 42 of 42 claims pass across both compiler-gate witness files.

— sent from calm-boar-904

@gunbai-bot gunbai-bot Bot changed the title [DO-NOT-MERGE: hold] Make emit-build a blocking lane on the fleet (operator sign-off 2026-10-02) Make emit-build a blocking lane on the fleet (operator sign-off 2026-10-02) Oct 4, 2026
gunbc-ci-auto-heal and others added 2 commits October 4, 2026 21:44
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>
@gunbai-bot

gunbai-bot Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

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
@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Merged main (#13043's derived pure-share). The only conflict was src/v2/workflow/floor_pure_producer_share.dag, where this PR's sole change was the hand warm row for gunbc.compiler_gate_workflow.compiler_gate_non_aggregate_job_ids. Took main's file, so the row is DROPPED (the file is byte-identical to main). No fill-debt member was added. The workflow sources were untouched by main, so witnesses.yml needed no regeneration.

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

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 5, 2026
Merged via the queue into main with commit 6b7c693 Oct 5, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/swift-koi-30 branch October 5, 2026 08:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants