Repository navigation
FIX MAIN-RED: CI floor plan width = budget-responsive floor width (int_min fallback-witness regression from #6059) - #6070
Merged
Merged
Conversation
…ss regression) The int_min(floor, exec) form broke witness_floor_spawn_width_zero_budget_falls_back: exec_w (execution_corpus_spawn_width) is computed from the fixed 8 GiB runner cap and ignores the memory_budget param, so min(floor=4, exec=3)=3 != conservative_fallback(4) on an unreadable budget. The int_max form OOM'd (width 3); the int_min form fails the fallback witness. Neither is coherent because exec_w doesn't respond to the budget. Make gunbc_ci_plan_spawn_width return only the budget-responsive floor width (pre-#5975 semantics): 1 at the 8 GiB cap (memory-safe, no OOM — floor peak RSS 5.4 GiB, cgroup peak 7.6 GiB < 8 GiB in run 28488853720), conservative-fallback 4 on unreadable budget. Rename the witness to assert plan_w == floor_w; drop the now-unused int_min import. Note for the real fix (child B design PR #6062): the measured per-shard scalar is 4.24 GiB but run 28488853720 shows real per-shard peak 5.4 GiB at width 1 — the scalar underestimates reality, confirming the tautology; width 2 would OOM at 8 GiB. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
briansrls
added a commit
that referenced
this pull request
Jul 1, 2026
Takes main's witness update (== int_min(conservative_fallback, exec_w)) over our interim <= patch; the real function change (remove int_min from plan_spawn_width) landed in #6070 on main. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 of 3 tasks
briansrls
pushed a commit
that referenced
this pull request
Jul 1, 2026
…k, not exec-coupled min (#6079) MAIN-RED fix. witness_floor_spawn_width_zero_budget_falls_back asserted plan_spawn_width(0) == int_min(fallback, execution_corpus_spawn_width()) but #6070 removed the int_min clamp from gunbc_ci_plan_spawn_width, so plan_spawn_width(0) is now unconditionally the fallback width. The witness's int_min expectation reduces to (fallback <= exec_corpus_width) — a fragile, corpus-coupled property that passed at #6070 (exec >= fallback) then flipped red when a later corpus change pushed exec below fallback. Assert the stable invariant the name promises (zero budget -> conservative fallback width), matching the unclamped function. Verified green-by-execution: ci_floor_spawn_width_live_budget_witnesses + ci_floor_honest_width_fold_witnesses PASS. Co-authored-by: Brian Searls <briansearls1@gmail.com>
briansrls
added a commit
that referenced
this pull request
Jul 1, 2026
This was referenced Jul 1, 2026
briansrls
added a commit
that referenced
this pull request
Jul 1, 2026
…ict (#6042) * WIP: HAND lens E: retire non_fold_residue_project.rs — lens .dag owns verdict * fix: cargo fmt on cli_run.rs non_fold_residue block Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * WIP: HAND lens E: retire non_fold_residue_project.rs — lens .dag owns verdict * fix(non_fold_residue): port full extended API to cli_run, fix blank-line bug, redirect complexity files Addresses cursor REQUEST_CHANGES on PR #6042: - cli_run.rs: add NON_FOLD_MIGRATION_DEBT_ROSTER, NonFoldRosterBucket enum, 8 new pub fns (closed_coproduct_type_names, site_is_rostered, roster_bucket, migration_debt_live_count, irreducible_live_count, migration_debt_roster_slots, irreducible_roster_slots, stale_roster_count), update NonFoldReport to hold closed_coproduct_names BTreeSet; fix blank-line skip in nfr_closed_coproduct_names inner loop (depth<=0 && empty line was breaking multiline type decls, causing closed coproduct params to be invisible to the lens — DESIGN §5 fail-open) - complexity_linearity_audit_project.rs: all crate::non_fold_residue_project:: → crate::cli_run:: - complexity_linearity_audit.rs (bin): import non_fold_residue_* from v1_compiler::cli_run Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * class-3 thin bridge: move non_fold classification to complexity_linearity_audit_project, add perturb-RED witness Gate 1 — perturb-RED witness: dsl/test/claim/non_fold_residue_witness_test.dag - non_fold_residue_clean_holds(): unrostered==0 && stale==0 — flips RED if any unrostered site appears - non_fold_residue_universe_is_nonempty(): count>0 — discriminant proving scanner is live (not vacuously green) Gate 2 — thin bridge: cli_run.rs now gathers raw facts only - Removed from cli_run.rs: NON_FOLD_MIGRATION_DEBT_ROSTER, NonFoldRosterBucket enum, non_fold_residue_roster_bucket, migration_debt_live_count, irreducible_live_count, migration_debt_roster_slots, irreducible_roster_slots - Added to cli_run.rs: non_fold_residue_live_sites() and non_fold_residue_roster_size() (raw fact accessors — no classification) - Moved to complexity_linearity_audit_project.rs: NON_FOLD_MIGRATION_DEBT_ROSTER, NonFoldRosterBucket (private), nfr_roster_bucket() (private), classification counts; RosterFictionReport gains migration_debt_roster_slots + irreducible_roster_slots fields - complexity_linearity_audit.rs bin: uses fiction.* fields instead of direct cli_run imports Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * restore doc_reachability_tests module dropped in merge conflict resolution The merge that absorbed doc_reachability_project retirement (e22b13a) clobbered the 6 doc_reachability_tests unit controls (reachable_set_flags_orphan_node, reachable_set_inert_cluster_stays_unreached, reachable_set_transitive_chain, markdown_link_targets_basic, dangling_detection_flags_missing_md_only, bind_md_refs_basic) by placing non_fold_residue_tests in the same slot. Both mods are now siblings. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * port roster_partition_covers_every_entry_without_overlap invariant test Migration-debt sub-roster subset check + partition sum + live-sites partition — all three assertions from the deleted non_fold_residue_project.rs now live in complexity_linearity_audit_project (where both rosters are in scope). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * drop stale eval_bind_node_eval from non_fold_residue roster eval_bind_node_eval's wildcard arm was dissolved in #5996 (exhaustive RuntimeBehaviorInterpreter match); the existing test already asserted it should not fire syntactic_match_wildcard_arm. Remove it from both NON_FOLD_RESIDUE_ROSTER (cli_run) and NON_FOLD_MIGRATION_DEBT_ROSTER (complexity_linearity_audit_project) so stale_roster_count() == 0 and the floor witnesses pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * WIP: HAND lens E: retire non_fold_residue_project.rs — lens .dag owns verdict * merge origin/main: absorb bcbf464 (record_emit) + 0567321 (ci_floor fix) Takes main's witness update (== int_min(conservative_fallback, exec_w)) over our interim <= patch; the real function change (remove int_min from plan_spawn_width) landed in #6070 on main. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * merge origin/main: absorb inert_carrier_project retirement (f92a4a6) Inserts the inert carrier census block (cli_run.rs: 75 helper lines + 191 struct/compute/pub/tests lines) before our NFR block's doc-reachability section. Drops the now-dead module_path_index::inert_carrier_census and module_path_index::non_fold_residue_census imports from complexity_linearity_audit.rs (both replaced by cli_run paths or the fiction-report fields). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * drop accidental MODULE.bazel from PR scope Temporary BuildBuddy marker committed via a merge; absent from main. Unrelated to non_fold_residue retirement. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix witness oracle: universe_is_nonempty uses coproduct_universe_count not count non_fold_residue_count() = live residue sites (drains to 0 as debt migrates). non_fold_residue_coproduct_universe_count() = closed-coproduct type universe (the fail-open oracle: zero means the corpus walk found nothing). Sibling witnesses follow this pattern; matches the lens authority at src/v2/lens/non_fold_residue_test.dag:14-15. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * cargo fmt: remove trailing blank line in cli_run.rs inert carrier block Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * merge origin/main: absorb unwired-model census generalization (#6078) #6078 generalized the inert-carrier census to the broader unwired-model census and moved doc-utility fns (DOC_PLAN_ROOTS, doc_universe, etc.) to be shared between the two census blocks. Take main's header and struct name (UnwiredModelData); remove the duplicate doc-utility definitions that were previously in the doc-reachability section only. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * WIP: HAND lens E: retire non_fold_residue_project.rs — lens .dag owns verdict * ci_floor_plan: restore int_min clamp on zero-budget fallback width The zero-budget path (cgroup unreadable) previously returned int_min(conservative_fallback_width, execution_corpus_spawn_width()). The prior commit dropped int_min to fix a witness inconsistency introduced by #6079, but that constitutes a semantic change orthogonal to this PR's scope. Restore the clamp and update both witnesses to check int_min(conservative_fallback, exec_w) instead of fallback directly — function and witnesses now consistently agree, without changing the clamped-at-exec_w behavior. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(test): ignore func_env semantic oracle — baseline commit GC'd from GitHub 5722326 was from a squash-merged PR branch and no longer exists on GitHub's server; fetch-depth:0 can only fetch reachable objects, so CI fails on fresh runner workspaces. Marking ignored is more honest than the prior fake-pass-via-workspace-cache behaviour. Re-baseline path: run capture_func_env_semantic_oracle against a tagged reachable commit, update func_env_semantic_baseline.json, restore the #[test] attribute. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(merge): resolve cli_run.rs conflict — NFR + languages + extdeps census all present; restore oracle test The auto-committer left raw conflict markers in cli_run.rs (brace mismatches at lines 7059 and 7340). Resolved by placing NFR census (our block, from cec6d1f) before the languages-consumer census and extdeps-shape-transport-policy census that landed in main via #6038 and #6043. All four census blocks now in correct order: NFR → languages → inert-carrier → extdeps-shape-transport-policy. Removed the #[ignore] on func_env_whole_corpus_semantic_oracle: main already re-based the test to db559b4 which IS reachable from origin/main (confirmed via git branch -r --contains). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(nfr-census): port synthetic RED/GREEN detection unit tests into cli_run.rs The deleted non_fold_residue_census.rs carried 8 discriminating controls that proved the lexical detector does not false-RED/GREEN. The parallel inert_carrier fold kept its controls; this ports the equivalent set into the new cli_run.rs nfr_tests module: coproduct_index_finds_sums_not_records red_control_wildcard_over_closed_coproduct_is_residue green_control_total_fold_is_not_residue green_control_wildcard_over_open_domain_is_not_residue green_control_field_placeholder_underscore_is_not_a_wildcard_arm nested_match_wildcard_is_attributed_to_its_own_match green_control_wildcard_and_slashes_inside_string_literal_are_ignored red_control_real_wildcard_survives_an_in_string_decoy The corpus-pinning test (external_access_throttle.dag) is omitted: that file no longer exists in the corpus. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * style: cargo fmt (trailing blank line in nfr_tests module) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Brian Searls <briansrls@gunb.ai> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Main is red
#6059 squash-merged the
int_min(floor, exec)width form, which failsci_floor_spawn_width_live_budget_witnesseson main:witness_floor_spawn_width_zero_budget_falls_backassertsplan_spawn_width(0) == conservative_fallback_width (4), butexec_w(execution_corpus_spawn_width) is computed from the fixed 8 GiB cap and ignores the budget param, somin(floor=4, exec=3)=3 ≠ 4. (The earlierint_maxform OOM'd at width 3;int_minfixes the OOM but breaks the fallback witness — neither is coherent becauseexec_wdoesn't respond to the budget.)Fix
gunbc_ci_plan_spawn_widthreturns only the budget-responsive floor width (pre-#5975 semantics): width 1 at the 8 GiB cap (memory-safe — run 28488853720 measured floor peak RSS 5.4 GiB, cgroup peak 7.6 GiB < 8 GiB, no OOM), conservative-fallback 4 on unreadable budget. Witness renamed to assertplan_w == floor_w; unusedint_minimport dropped.Verified by execution (merged-with-main tree)
ci_floor_spawn_width_live_budget_witnesses→ PASS ·ci_floor_honest_width_fold_witnesses→ PASS ·ci_floor_spawn_width_from_budget_tree_witnesses→ PASS.Note for the real fix (design PR #6062)
Run 28488853720: real per-shard peak 5.4 GiB vs modeled scalar 4.24 GiB — the scalar underestimates reality, so width 2 would OOM at 8 GiB. That tautology is what the
compute_fabric-grounded N-dimensional envelope (#6062) replaces.