Repository navigation
Main-latent nfr red: roster the two #7088 cheap-gate wildcard sites (unblocks PR floors) - #7114
Merged
Merged
Conversation
briansrls
added a commit
that referenced
this pull request
Jul 23, 2026
5 tasks done
briansrls
added a commit
that referenced
this pull request
Jul 23, 2026
…PR diff The layering batch-1 red on 652ec65 was caused by our redundant cli_run.rs NFR backfill (already landed on main as #7114), which forced a whole-tree compile-clean on .rs and a heavier batch-1 path. doc_graph_roots bind row checked: import-bearing file, module_path in string literal — no new layering edge (not 7080-class). PR diff vs main is now docs + doc_graph only. Co-authored-by: Cursor <cursoragent@cursor.com>
2 of 3 tasks
briansrls
pushed a commit
that referenced
this pull request
Jul 23, 2026
…cursion_limit into partition allow-block (both drift-by-hand-roster incidents; enrolled in roster_registry) Rebased onto post-#7114 main (rust_crate_partition rewritten around the CompilationUnit model): the hand roster fns survived, so the fix re-applies as the same one-line roster row + allow-block edit; module-dag edge rows are cross-unit only, and std_measure -> std_currency is intra-unit (std-primitives), so no edge row is owed. Full regen chain re-run on the new base (main_wet + two-generation regen_stage0, binaries rebuilt). Original finding unchanged: v1-stage0-std-core broken standalone since #6977 added the measure->currency closure edge (hand module roster never learned); v1-stage0-extdeps-languages failed serde json_internal recursion (allow-block lacked the monolith's recursion_limit). Nothing in CI builds the partition crate libs, so both drifted silently. Class enrolled: stage0_partition_crate_rows in gunbc.roster_registry as DeclaredFrontier (dissolve_on: the emitted-crate-partition thread derives membership ByDerivation; interim backstop = per-crate cargo-check consumer in CI). Sheet rows: ts-group-partition-drift + ts-group-dissolve-typed. By execution on the rebased base: all 8 partition crates build green; roster_registry suite 5/5 (RED controls discriminate); stage0_crate_layout_witnesses PASS; roadmap_authority_witnesses true; ROADMAP.md regenerated (main_wet, ExitSuccess). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg
briansrls
added a commit
that referenced
this pull request
Jul 23, 2026
…band) (#7106) * docs: attribute the CI floor 45-72min band by ci-job phase and batch. Log-diff receipts on fleet runs decompose workflow vs ci-job wall time and name discovery resolve, self-host gates, and #7030 effectful recovery as the dominant buckets. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: CI floor redundant-work ledger, phase TSV, and ranked levers. Re-derive run 29976989996 and five comparison arms; name per-stage duplicate work (per-entry resolve walks, ingest re-scan, cheap gates after compile) and price top levers in minutes without floor behavior changes. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: register ci-floor-time audit plan in doc_graph_roots. Unblocks doc_reachability pre-push gate for the measurement-only audit PR. Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: CI floor time audit: attribute the 45-72min band * WIP: CI floor time audit: attribute the 45-72min band * fix(ci): drop duplicate NFR roster + merge #7114 — restore docs-only PR diff The layering batch-1 red on 652ec65 was caused by our redundant cli_run.rs NFR backfill (already landed on main as #7114), which forced a whole-tree compile-clean on .rs and a heavier batch-1 path. doc_graph_roots bind row checked: import-bearing file, module_path in string literal — no new layering edge (not 7080-class). PR diff vs main is now docs + doc_graph only. Co-authored-by: Cursor <cursoragent@cursor.com> * docs(audit): add PR7110 270m timeout extreme-tail receipt Run 29986954853 (one-file v1_deletion_plan.dag diff) killed at ci-step timeout-minutes:270 — corpus/infra-bound tail, not diff-size-driven. TSV row + plan §1.1 + lever 5 sharpen + new lever 9 (silent ceiling ride). Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Brian Searls <briansrls@gunb.ai> Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls
added a commit
that referenced
this pull request
Jul 23, 2026
…tion (levers 2/3/8 of #7106) (#7122) * docs: attribute the CI floor 45-72min band by ci-job phase and batch. Log-diff receipts on fleet runs decompose workflow vs ci-job wall time and name discovery resolve, self-host gates, and #7030 effectful recovery as the dominant buckets. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: CI floor redundant-work ledger, phase TSV, and ranked levers. Re-derive run 29976989996 and five comparison arms; name per-stage duplicate work (per-entry resolve walks, ingest re-scan, cheap gates after compile) and price top levers in minutes without floor behavior changes. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: register ci-floor-time audit plan in doc_graph_roots. Unblocks doc_reachability pre-push gate for the measurement-only audit PR. Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: CI floor time audit: attribute the 45-72min band * WIP: CI floor time audit: attribute the 45-72min band * fix(ci): drop duplicate NFR roster + merge #7114 — restore docs-only PR diff The layering batch-1 red on 652ec65 was caused by our redundant cli_run.rs NFR backfill (already landed on main as #7114), which forced a whole-tree compile-clean on .rs and a heavier batch-1 path. doc_graph_roots bind row checked: import-bearing file, module_path in string literal — no new layering edge (not 7080-class). PR diff vs main is now docs + doc_graph only. Co-authored-by: Cursor <cursoragent@cursor.com> * One tree, one resolve: floor stages consume the compile-clean computation (redundant-work ledger levers 2/3/8) STEP-1 model (gunbc.ci_materialization ci_floor_resolve_receipt_note, Receipt 5): the compile-clean receipt's typed store — the main-thread process_shared_index the eager install warms — is the consumable fact; later floor stages consume it, and a stage that cannot be served is counted, never a silent re-walk. Declared cold-resolve count 4 -> 3 consciously (the note's own rewire discipline); ci.yml regenerated to match. Lever 3 (executor realization): batch_unit_lane clause (c) — a resolve-group sharing an (entry, execution_mode) some batch resolves on the memo path is colocated there, so the batch-0 cheap-gate group rides the store the eager compile-clean install warmed instead of re-deriving the same closure cold on a spawned thread (where thread-local process_shared_index is invisible); the compile anchor and emit-host then consume its walk_memo context as hits. No schedule fact added or reordered (#7088 batch-0 ordering untouched). Lever 2 (transport realization): run_gunbc_claims pools ONE gunbc child per call (gunbc.Cli.RunClaims; argv grammar gunbc.cli_invoke.cli_claim_spec 'ENTRY::FUNCTION', decoder parse_pooled_claim_spec — one grammar, both directions) instead of one child per claim row: N rows over K distinct entries pay one pool build + K entry resolves against the child's per-process shared store (resolve_entry_graph), full-ledger conjunction preserved by construction. Residue (one pool build per call; overlay manifests are composed input) counted in the redundancy ledger; dissolve-on the W3 cross-process content-keyed store. Dead per-claim argv helper gunbc_claim_run_args deleted (zero consumers). Lever 8 (partition authority): CompileCleanPartitionBoundary.entry_roots = witness_layer_roots — the roster enumerates exactly the tree the whole-tree gate compiles, never witness_layer_roots.first() ('dag' only). Closes both directions of the roster-subset asymmetry: src/v2-only .dag diffs scope to their entry closures instead of falling to the no-shard-intersection whole-tree baseline (run 29976989996's shape), and a dag-rooted touch now selects affected src/v2 importers on scoped runs. Totality glob follows the boundary (both roots; join fixed for newline-trimmed shell stdout). Every fail-closed arm unchanged. Proven by execution: executor lane tests (promotion + RED control + mode keying); pooled claim-spec grammar tests; floor_fast_plan_scopes_src_v2_entries_ both_directions on the live tree; live-tree shard totality over both roots; pooled overlay run of the real_ingest leg (3/3 PASS — stub supersession through the pooled resolve path); typed-op witnesses incl. RunClaims red control; cargo fmt clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * ci: retrigger pull_request run (empty) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * Phase-0(b) admission: enroll the two RunClaims typed-op witnesses on the bin_witness_wet roster typed_witness_invocation_test.dag is discovery-excluded by pattern; every fn in it rides the explicit bin_wet roster. The two pooled-op witnesses added with gunbc.Cli.RunClaims landed excluded-but-unrostered and the floor refused loudly (WITNESS ADMISSION REFUSAL cause=UnexecutedDeferredWitness count=2, run 29993198712) — the admission invariant working as designed; these rows give them their executing consumer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * Acceptance receipts: phase-attribution row + ledger flips + lever evidence (run 29995111208) Green pull_request floor on this branch, same probe format as the #7106 baseline: compile_clean 3.58 -> 2.89, cheap gates 10.15 -> 4.65, compile-gate consume 27s -> 8ms (walk-memo hit), ingest 12.15 -> 5.24, reads_real_bytes 3.30 -> 3.13, discovery unchanged by design (lever 1 out of mandate); resolves_total 3 == declared 3 (the resolve-receipt gate's own green line). Ledger rows cheap_gates_batch1 / compile_gate_consume flip to consumes-receipt; source_root_ingest_gate to necessary-first-touch (pooled), each with this run id as evidence. Batch-4 exec-corpus anomaly (52min, the interp_recorded_fixture row) is footnoted in the row's class and attributed in the PR thread — not a mandated stage; bisection in progress. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * Rework R1-R3: per-gate pooled claim_batch child (the section-9 cold-child class); interim gunbc-run claim grammar deleted as a duplicate; interp_recorded per-PR enrollment reverted R1 (child-pool lever, walls honored): run_gunbc_claims realizes as ONE claim_batch child per call — claim_batch's own pre-existing pooled --entry/--function grammar, one shared MultiEntryIndex per process, per-claim verdicts NAMED by its PASS/FAIL-per-function loop, no short-circuit, exit nonzero iff any failed. The gunbc run --claim flag, gunbc.Cli.RunClaims op, and the ENTRY::FUNCTION spec grammar this branch had introduced are deleted: claim_batch already owned the pooled-claims surface (one grammar, not two). Cheap-gate transports consolidate to one call per GATE (layering 7 rows -> 1 child, was 7 cold children; extdeps 5 -> 1, was 5; the former cross-call && short-circuit inside a gate is deliberately removed — every claim reports on every run, stated in the transport notes). The pooled child stays a SEPARATE process by design — never in-executor evaluation (the executor is the 16GiB-pinned process; the child dies and frees). extdeps' private roots datum dissolved into witness_layer_roots (a nickname). R2 (batch-4 disposition at the witness grain): interp_recorded_fixture's per-PR enrollment REVERTED to OfflineLocalRecipe — its ~13+ claim_batch children each cold-index the whole workspace root (2556s on run 29995111208, the dominating row of the 53.2min batch-4 wall); too heavy for the falsifier wet lane's 600s receipt budget as-is, so local-recipe with a pooled/scoped re-enrollment dissolve-on rather than an enshrined nightly refusal. Proven by execution: pooled child 10/10 PASS over 4 entries in one process (incl. the argv-shape witness pinning claim_batch_claims_argv's exact output); RED control exit 1 with the failing claim NAMED and later rows still reporting; ingest overlay leg 3/3 through the claim_batch loader (stub supersession held); whole-tree --target dag compile green; artifact drift clean; cargo fmt clean; executor lane + scope-plan test batteries green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * R4 re-measure: run 30009199696 phase row + ledger evidence (floor 49.5m fits the 55m cap; wet 53.2->10.82; cheap 3.08 and ingest 6.90 land as counted residue vs the 2min targets) Fresh phase-attribution row from the post-rework pull_request run 30009199696 (head 6fe8d02, all gates green, resolves_total 3 == declared 3, peak 15.0GiB cgroup-post): ci_job 99.2->61.1min, floor step 49.5min under the 55min cap; wet wall 53.20->10.82min from the interp_recorded de-enrollment (surviving pools 20+54 rows, eval 9.35min serial). The two R1 acceptance targets MISS and are recorded as counted residue in the redundancy ledger, mechanism named per row: cheap gates 4.65->3.08min (2 pooled children at ~88s/~64s — each claim_batch child pays a corpus-denominated MultiEntryIndex build regardless of roster size); source_root_ingest 5.24->6.90min, a +1.66min REGRESSION vs the interim vehicle (4 children at ~82-118s; the claim_batch child costs ~25-30s/process more than the deleted gunbc-run vehicle — loader-parity gap on top of the shared corpus-denominated index). Dissolve-on for both: the W3 cross-process content-keyed store (or claim_batch loader parity), never a silent re-widen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Claude <noreply@anthropic.com>
briansrls
added a commit
that referenced
this pull request
Jul 23, 2026
…cursion_limit into partition allow-block (both drift-by-hand-roster incidents; enrolled in roster_registry) (#7109) Rebased onto post-#7114 main (rust_crate_partition rewritten around the CompilationUnit model): the hand roster fns survived, so the fix re-applies as the same one-line roster row + allow-block edit; module-dag edge rows are cross-unit only, and std_measure -> std_currency is intra-unit (std-primitives), so no edge row is owed. Full regen chain re-run on the new base (main_wet + two-generation regen_stage0, binaries rebuilt). Original finding unchanged: v1-stage0-std-core broken standalone since #6977 added the measure->currency closure edge (hand module roster never learned); v1-stage0-extdeps-languages failed serde json_internal recursion (allow-block lacked the monolith's recursion_limit). Nothing in CI builds the partition crate libs, so both drifted silently. Class enrolled: stage0_partition_crate_rows in gunbc.roster_registry as DeclaredFrontier (dissolve_on: the emitted-crate-partition thread derives membership ByDerivation; interim backstop = per-crate cargo-check consumer in CI). Sheet rows: ts-group-partition-drift + ts-group-dissolve-typed. By execution on the rebased base: all 8 partition crates build green; roster_registry suite 5/5 (RED controls discriminate); stage0_crate_layout_witnesses PASS; roadmap_authority_witnesses true; ROADMAP.md regenerated (main_wet, ExitSuccess). Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg Co-authored-by: Claude <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.
Summary
Fixes the fleet-blocking
non_fold_residue_no_unrostered_or_stalered now failing every PR floor that reaches batch 3 (first surfaced on #7110's run; main is latent-red — its own recent runs died at exit 137 in batch 3 before this witness executed).Root, proven by worktree bisect with the real witness:
unrostered_count0 at #7092 → 2 at #7088. The introducing merge is #7088 (CI fail-fast cheap-gate early batch), which landedgate_in_cheap_floor_membershipandspec_enrolls_gateinsrc/v2/workflow/ci_floor_plan.dag— both hand-rolled Gate equality via nested match with off-variant_ =>arms, the exact structural-equality shape of the rostered*_eqrows. Same recurring masking class as every dated backfill block in the roster: the landing PR's affected-set selection predict-skipped the corpus-read nfr witness; #7085's always-on PR-time receipt is what surfaced it (working as designed).Fix shape: two roster rows with the dated-block reason + dissolution trigger (derived equality from inhabitance, or #7088's own membership-fold migration) — detection-only declaration, zero floor-behavior change. The construction fix (replace the hand-rolled matches with
==) belongs to the #7088 lane, not a hotfix.Test plan
non_fold_residue_no_unrostered_or_stale→ true by execution post-fix (was false, reproduced locally pre-fix)non_fold_residue_live_stale_roster_count→ 0 (rows match live sites exactly)non_fold_residue_synthetic_unrostered_red_holds→ true (ratchet still discriminates)🤖 Generated with Claude Code