Skip to content

Fix affected-set-falsifier crash at plan setup: supply gunbc_falsifier_plan_spawn_width - #6393

Merged
briansrls merged 2 commits into
mainfrom
session/lively-koi-620
Jul 9, 2026
Merged

briansrls merged 2 commits into
mainfrom
session/lively-koi-620

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jul 9, 2026 •

Copy link
Copy Markdown
Contributor

Problem

All three scheduled affected-set-falsifier runs (2026-07-06, 07-07, 07-08) failed identically at plan setup:

claim_executor: spawn width eval failed (src/v2/workflow/ci_floor_plan.dag::gunbc_falsifier_plan_spawn_width): no main function found

The falsifier has never gone green — it crashed before recording a single divergence datum, so its dissolution counter (divergence rate 0 across 8 windows) never started.

Root cause

Second occurrence of the wiring-gap class already documented in ci_floor_plan.dag for the regen job (#6352): the claim_executor seed derives a plan's spawn-width function name from the plan-function name at runtime (spawn_width_function_name: strip _batches, append _plan_spawn_width), so gunbc_falsifier_batches reaches gunbc_falsifier_plan_spawn_width with no grep-visible reference — and that function did not exist.

Fix

  • src/v2/workflow/ci_floor_plan.dag: add gunbc_falsifier_plan_spawn_width, delegating to gunbc_ci_plan_spawn_width (the falsifier runs on the same self-hosted arm64 runners under the same memory budget; its discovery batch already carries the tree-derived spawn_width_cap). Note row documents the class and the receipt.
  • Executable witness witness_falsifier_plan_spawn_width_matches_ci_width, wired into src/v2/test/claim/ci_floor_plan_witness_test.dag (falsifier_plan_spawn_width_witnesses): executes the runtime-derived name in the corpus, so this gap is honest-red locally instead of crash-red on the next scheduled cadence run. Discriminating: red if the function is missing (resolve fails) or returns a width diverging from the ci plan width.

Verification

  • claim_batch --entry src/v2/test/claim/ci_floor_plan_witness_test.dag — new witness green with the existing suite.
  • Reproduced the exact CI invocation locally (claim_executor --plan-function gunbc_falsifier_batches with GUNBC_CI_DIFF_BASE/HEAD): plan setup now passes spawn-width eval (the previous crash point) and the batch launches.

🤖 Generated with Claude Code

@gunbai-bot gunbai-bot Bot changed the title CI investigation Fix affected-set-falsifier crash at plan setup: supply gunbc_falsifier_plan_spawn_width Jul 9, 2026
…ith ==

Restructured witness_falsifier_plan_spawn_width_matches_ci_width with let
bindings matching the neighboring witnesses' style. Verified locally:
claim_batch --entry src/v2/test/claim/ci_floor_plan_witness_test.dag
--function falsifier_plan_spawn_width_witnesses → PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 9, 2026 03:32
@briansrls
briansrls merged commit c7fd280 into main Jul 9, 2026
3 of 6 checks passed
@briansrls
briansrls deleted the session/lively-koi-620 branch July 9, 2026 04:07
briansrls added a commit that referenced this pull request Jul 9, 2026
gunbai-bot Bot pushed a commit that referenced this pull request Jul 11, 2026
…val, skip-masked)

claim_executor derives the spawn-width fn name from the plan-function
string (strip _batches, append _plan_spawn_width) and the eval is FATAL
when the fn is absent. ci_regen (#6393) and the falsifier got theirs;
gunbc_ci_emit_determinism_plan_spawn_width was never authored when #6472
split the job - and every green since was an affected-set SKIP, so the
job died at spawn-width eval ('no main function found', exit 1) on the
first diff to touch ci_floor_plan.dag and actually execute it (this
PR's run). Delegates to gunbc_ci_plan_spawn_width like the regen
variant. Receipt by execution: the emit-determinism plan now prints
spawn_width=4 from the derived name and enters its batch walk.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
briansrls pushed a commit that referenced this pull request Jul 11, 2026
…uthorities (#6503)

* Main drift-gate red: home Lane D's plan-doc cross-links in the .dag authorities

generated_artifact_drift_gate_passes has been red on main since #6474
(Lane D) hand-added the provisioning-window design links directly to the
GENERATED docs/plans/emission-ingestion-inverse.md and
docs/plans/shell-emission-model.md without the backing rows - the gate
correctly refuses a doc that its .dag authority does not derive (the red
was masked behind the s1/ci_deploy/witness-pin floor reds until
#6498/#6500/#6501 cleared them). Fix keeps Lane D's intent: the two link
sentences move into dag/gunbc/plans/{emission_ingestion_inverse,
shell_emission_model}.dag, from which main_wet now regenerates the
checked-in docs byte-identically (zero doc diff after regen).
generated_artifact_drift_gate_passes: false -> true by execution on this
head.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Docs-only CI shortcut: route through the executor plan path (fixes exit-2 on plan-artifact diffs)

The plan-artifact-only floor shortcut invoked claim_executor with
gunbc-run-style --entry/--function flags it does not parse - the arm
died 'unknown argument: --entry' exit 2 on the FIRST docs-only diff to
reach it (this PR's own run 29167744076; latent since the arm landed).
The gate also cannot run standalone: dag_compile_clean_gate_passes only
CONSUMES the executor's in-run whole-tree --target dag compile receipt
(standalone gunbc-run invocation refuses, proven by execution).

Fix: the shortcut is now claim_executor --plan-entry ci_floor_plan.dag
--plan-function gunbc_ci_plan_artifact_batches, where the new plan fn is
batch 1 of the existing floor schedule (the compile-clean anchor - the
plan's one structural fact) - same executor path, no parallel gate
runner. claim_executor arms the compile-clean lazy install for this plan
name alongside gunbc_ci_floor_batches. Shortcut witness repinned to the
plan-path invoke; ci.yml regenerated.

Receipts by execution: RED = run 29167744076 exit 2 + standalone refusal;
GREEN = local run of the exact new invoke (whole-tree compile receipt
ok=true, 1/1 node pass, exit 0); ci_spec_witnesses true; drift gate true.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* emit_determinism job: author its missing plan spawn-width fn (fatal eval, skip-masked)

claim_executor derives the spawn-width fn name from the plan-function
string (strip _batches, append _plan_spawn_width) and the eval is FATAL
when the fn is absent. ci_regen (#6393) and the falsifier got theirs;
gunbc_ci_emit_determinism_plan_spawn_width was never authored when #6472
split the job - and every green since was an affected-set SKIP, so the
job died at spawn-width eval ('no main function found', exit 1) on the
first diff to touch ci_floor_plan.dag and actually execute it (this
PR's run). Delegates to gunbc_ci_plan_spawn_width like the regen
variant. Receipt by execution: the emit-determinism plan now prints
spawn_width=4 from the derived name and enters its batch walk.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

1 participant