Repository navigation
CI floor endgame: every priced lever + the cost wall (D1–D6) - #7128
Conversation
…-control shared index, discovery phase receipts, THE COST WALL, wet-lane re-homes (D1-D6) D1: batch-0's claim-backed gates share ONE pooled claim_batch child (tools.cheap_gate_pool — the union of the two concern authorities, ByDerivation; K sub-pools sized to the slot via cheap_gate_pool_max_claims_per_child, the section-9.1 cliff wall; child stays a separate process). New CheapClaimPoolGate runs it; layering/ extdeps gates became non-vacuous enrollment walls asserting chunk-transform totality (bare pool membership would be a tautology). Ingest's 4 mktemp overlay children stay — the genuine constraint, named in-row (ingest_pool_separation_note). D2: floor_terminal_fast_exit after receipts flush skips the 2.5-3.1min Drop walk of the ~16GB retained store (twice-confirmed). Exit code preserved (walk_exit_code, unit-pinned); truncated receipts still red (unwritable_receipt_base_reds_not_vanishes RED control). Terminal path only. D3: the selection-control step's 4m51s was three cold whole-pool index builds inside floor_skip_discovery_witness; the warmup case now rides resolve_entry_graph_shared (one shared build + the deliberately-cold Class-B control build, named). Step stays per-PR; ledger row added. D4: discovery pump phases land as typed rows in the floor resolve receipt (discovery_pump_wall_ms / roster_walk / diff_observe / frontier_attribution / shared_index_build / preresolve_calibration / runner_resolve + corpus resolve/eval serial sums). Lever-1 stays retired as priced; the fresh profile names the next mechanism before any spend. D5 THE COST WALL: per-batch wall budgets as data (gunbc.ci_spec.gunbc_ci_floor_batch_wall_budget_seconds, sum 53min under the 55min cap; per-batch never per-run — the plumbing-PR profile), read fail-closed at arm time, enforced as typed FLOOR-BATCH-OVER-BUDGET refusals (never a widen), recorded as typed receipt rows (target/floor-batch-wall-receipt.txt). Ruling reconciliation in the carrier note (budgets are admission/scheduling, never witness verdicts — the 5s-eval-law split; endgame brief operator is the sign-off). Raise requires an appended receipt note. RED control both directions proven by execution on the tighten-only injection fixture (budget_red_control_plan.dag). D6: bin_witness_wet_per_row_wall_budget_seconds=60; the two rows over it (floor_skip keystone 289s — also a per-PR duplicate of the selection-control step — and cross_shard_seam live-tree 183s) re-home to falsifier wet lane 5 as typed frontier rows (falsifier_rehomed_bin_wet_rows, reasons + dissolve_on, registry enrolled); 52 rows remain the per-PR smoke subset. Also: carries #7123's docs baseline (journey + attribution 9-9.2, now linked into the doc graph), appends attribution 9.3 with the <=30min post-merge prediction, retires completed lever rows, appends the cost-wall landing to the timeout-note bounce history, and heals ci.yml's stale fleet-converge.sh heal-line (its artifact and registration were deleted by #7121; the committed yml predated the regen). Proven by execution: executor battery 18/18; budget gate RED (witness PASSes, batch refusal fires, exit 1, OverBudget receipt row) and GREEN (exit 0, WithinBudget) on the fixture plan; ONE claim_batch child ran all 4 batch-0 gates with the ONE nested 12-claim pooled child (3 PASS + drift PASS post-regen); chunk-totality witnesses 4/4 incl. the RED discriminator; ci_floor_plan_witnesses PASS (membership 4, falsifier 5 lanes, budget coverage); whole-tree compile: zero new error identities vs main (main itself reds 2,647 pre-existing unlisted-import rows — the flagged non-goal); doc-reachability wall green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
The PR's first floor run failed exactly one gate: generated_artifact_drift on ROADMAP.md — main's committed copy (post-#7118) carries a trailing blank line its own generator does not emit, so the merge tree drifted. Regenerated via main_wet on the merged authorities; ci.yml converged byte-identical with main's auto-heal of the fleet-converge line this branch had healed independently. Budget-coverage witness re-proven true on the merged tree (7 batches, 7 budget rows). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
…omed rows name their executing consumer (Phase 0(b)) The a9744d3 floor red was WITNESS ADMISSION REFUSAL cause=UnexecutedDeferredWitness count=2: the D6 re-home removed the two rows from bin_witness_wet_entries but the admission machinery had no concept of the new falsifier lane, so the excluded witnesses read as enrolled-with-zero-consumers — the invariant working as built. Wired through every reader: std.witness_admission gains the FalsifierRehomedBinWet cadence variant; ci_layer_roots re-exports it, flips floor_skip_discovery_witness_test.dag's exclusion row onto it (with its own reason/dissolve strings; the seam file stays BinWitnessWet — its algebra row still backs it), and adds the witness_exclusion_row_is_rehomed_bin_wet predicate (all 7 existing cadence matches gain the arm); v2.workflow.witness_admission routes consumer_for_explicit_rosters and the explicit-consumer manifest through falsifier_rehomed_bin_wet_entries and adds rehomed backing to witness_exclusion_explicit_roster_rows_consistent (new param); cli_run's source-scan classifier gains the RehomedBinWetRow head and the classification roster gains the name; the refusal message names the lane. Proven by execution: reconciliation witnesses 5/5 green incl. the NEW RED control (an unbacked FalsifierRehomedBinWet row reds); witness_admission_invariant_holds green with the two new rows (the keystone row classifies FalsifierRehomedBinWet and the manifest covers it); Rust unit test pins the RehomedBinWetRow head parse. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
|
Review: Approve (qualitative — CI didn't complete on this head). Design-review verdict from the CI-audit session; run 30027001708's partial actuals are consistent with every prediction the PR makes. The red on run 30027001708 is not this PR. Since this branch's merge-base, main took exactly one merge (#7110), which changed ROADMAP.md's authority — the merge-ref's textually-merged ROADMAP.md is not the regen fixed point of the merged authority, so What the partial run already proved by execution:
Two flags carried as residue (neither blocking):
Sequencing: this PR should merge before the executor-eviction keystone PR (branch Merge on the clean rerun's green, with the per-batch receipt (all 7 Generated by Claude Code |
…omment scope fix, 9.3 process lesson + on-call notes - gunbc_ci_floor_batch_wall_budget_note gains the dated operator signature (briansrls 2026-07-23) affirming the admission/verdict reading — the declared human-signed exemption row the 2026-07-10 ruling requires — and the amended raise discipline (raising needs a dated operator-signed line naming run id + enrollment; tightening by ordinary receipt note; remedy is diagnose-or-signed-raise, never rerun), plus three named follow-up rows: the prelude coverage hole (~5min before batch-1 arms is outside every budget), identity-keyed budgets (index coupling rides the ComputationIdentity lane), and the K=16 union-RSS receipt (provisional until the pooled child's per-shard-peak-rss lands in a CI log; local proxy 1.82GB). - floor_terminal_fast_exit doc corrected: it is the common tail of run()'s walk path (all plan walks), not floor-only. - Attribution 9.3 gains the process lesson (every piece proven by execution except one full floor walk — the lane that redded, twice) and the on-call pre-positioning (batches 3/6 at 1.29x/1.45x headroom inside slot noise; first organic over-budget expected within days; diagnose-or-signed-raise, never pre-widen). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
|
Blocker ack — landed in Signature applied verbatim (dated, in Head is Generated by Claude Code |
…longer identifier is not a roster row Run 30033250697 panicked (exit 101, fail-closed as designed) because the raw substring scan matched bin_wet( inside the NEW predicate name witness_exclusion_row_is_rehomed_bin_wet(row: ...) — no entry: literal in the window, so the scanner stopped the line. The class fix: a head occurrence preceded by an identifier char is a longer name, skipped before parsing. Unit-pinned both ways (head_scan_ignores_longer_identifiers_containing_a_head; the live-file witness_admission_deferred_rows_have_consumers test now covers the exact CI path — it sat in the locally OOM-killed battery, which is how this escaped: the section-9.3 process lesson at unit grain). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
…cheap_gate_pool_test (864 -> 865) Run 30035504886's exit-101 was #7127's census refusal working correctly: the floor's witness_execution_leg_label refuses any discovery entry with no census TSV row, and this branch's new dag/test/claim/ cheap_gate_pool_test.dag postdated the committed census. Regenerated via scripts/witness_entry_eligibility_census.sh (the emit transport itself refused at 865 roster vs 864 declared — fail-closed both ways), witness_entry_eligibility_census_entry_count bumped 864 -> 865, and the three .dag sync witnesses proven green by execution through claim_batch (declared-count exposed, carrier paths, tsv sync). The Rust sync test is CWD-fragile by construction (relative witness_layer_roots under cargo's package-dir cwd — the same pre-existing local-suite class as the two scope-test failures reproduced on pristine main); the .dag witnesses are the CI-executing consumers. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
…-caching-xn4ynp # Conflicts: # docs/probes/witness_entry_eligibility_census.tsv # docs/probes/witness_entry_eligibility_histogram.txt # src/v2/compiler/self_host/witness_entry_eligibility_census.dag
main advanced (force-updated to 608749d, sharing the reconciled lineage) and its census regens collided with this branch's on the three generated census artifacts. cli_run.rs auto-merged cleanly (main's changes and the M2 ScheduleRetention / run_claims_in_process additions are in disjoint regions) — verified by a clean lib build and green RED controls post-merge. The census is a generated artifact, so the conflict is resolved by its single authority, not by hand: took main's side on all three files, then regenerated via witness_entry_eligibility_census_emit against the MERGED working tree. The merged roster is 880 (main's pinned count 876 was itself stale by ~3 vs main's real corpus, plus this branch's one new witness executor_schedule_retention); bumped witness_entry_eligibility_census_entry_count 876 -> 880 and regenerated TSV + histogram in lockstep. My new witness is present; count consistent. Note: #7128 is NOT yet in main, so its D1 cheap_gate_pool / D2 floor_terminal_fast_exit cli_run conflicts are still a future resolution — when #7128 lands, a fresh main merge resolves cli_run against its side (per the review's sequencing). This merge only brings current main + the census regen. Post-merge verification (green by execution): lib build clean; 6 schedule_ retention RED controls pass; claim_in_process_matches_spawn_verdict passes; census witness green via claim_batch; cargo fmt --all --check clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUqWZP4HTVyUfW4qRqWya1
fbd55eb's floor red was the census_count witness (from main's #7127) — witness_entry_eligibility_census_count_holds hardcodes the entry count as a literal (== 876) SEPARATE from the data constant this branch already bumped to 880, so 880 == 876 was false. The tsv-sync witness could not catch it (it checks declared == TSV-rows, both statically 880). Verified the true count is 880, not an emit artifact: tree clean (zero untracked test files), independent git-tracked find of *_test.dag with test fn/data = 880, TSV data rows = 880, cheap_gate_pool_test present. Decomposition: main's committed 876 is STALE — main's live find is 879 (git ls-tree find on origin/main), undetected because affected-set selection skips this witness on PRs that do not touch its import closure; this plumbing PR's affected set is the first to run it against the drifted tree. So 880 = main's true 879 + this PR's cheap_gate_pool (+1), and updating the literal HEALS main's 3-file latent census drift in passing. The count lives in four hand-synced copies (this literal, its note, witness_entry_eligibility_census_entry_count, the committed TSV) — a §3 parallel-representation main's carrier keeps in sync by hand; restructure is out of this PR's scope, noted in the witness note. Proven by execution: all census witnesses across census_test / classification_test / tsv_sync_test green through claim_batch (count_holds, the six classification rows incl. bulk-pending default for the new entry, tsv sync). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
…red cli_run #7128 (CI floor endgame D1–D6) landed on main. Merged it in per the review's sequencing note ("resolve cli_run against #7128's side"). In practice cli_run.rs AUTO-MERGED cleanly: #7128's D2 floor_terminal_fast_exit / terminal-path work and the M2 ScheduleRetention + run_discovery_rows eviction + run_claims_in_process additions live in disjoint regions — no textual conflict, and the two are complementary (eviction shrinks the retained store; the fast-exit skips the Drop of whatever remains). host_prelude's cheap_gate_pool likewise didn't collide. Verified the shared territory is sound, green by execution: - #7128's claim_executor battery: 18/18 (walk-exit-code pin, unwritable-receipt RED, batch-wall receipt both directions, lane-promotion battery) - M2 schedule_retention RED controls: 6/6 - claim_in_process_matches_spawn_verdict (D2 equivalence): pass - merged lib build clean; cargo fmt --all --check clean Only the two generated census artifacts conflicted; resolved via the single authority (witness_entry_eligibility_census_emit) against the merged tree — roster 880 -> 881 (#7128 added one net witness), constant bumped and TSV + histogram regenerated in lockstep, my witness present, count consistent. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUqWZP4HTVyUfW4qRqWya1
…ections Verification pass before operator review (2026-07-24): (1) D1 already LANDED on main — #7122 + #7128 pooled the 26 cold children to 6, verified by counting readiness probes in run 30052571652's ci log; plan re-framed, in-process activation split off as deferred D1b with its fail-open confirmed by direct read of cli_run.rs:9580. (2) D4 audit deletion now BLOCKED on falsifier health — the cadence is red 5/5 by crawl-timeout (run 30044928186: cgroup 16.1G pinned, swap saturated, 170m cap), so the per-PR audit is currently the only working selection control. (3) The 5s threshold reuses the existing fast-lane law carrier (thread-CPU budget, typed refusal) — no second authority. §10 checklist: 14 rows, each with status + how verified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg
… apart, two operator rulings recorded (#7132) * Roadmap 2b: interpreter-deletion endgame lane — the three deletions named apart, two operator rulings recorded (zero hand-maintained Rust; effects as emitted per-language providers) New section group 2b (Track B past strong self-host), reconciled against the verified state on main rather than memory: - ts-interp-endgame: the delete-v1 conflation split into its three finish lines — compiler (§1 gates, undisturbed), interpreter (2a bulk arc + this lane), host-physics (pinned v2-EMITTED kernel per seed census). - ts-zero-hand: operator ruling 2026-07-23 — hand-MAINTAINED Rust goes to exactly zero; the pinned kernel is emitted from cited models; the hand roster (25 files + module_path_index, growing) becomes a counted burn-down frontier with a new-additions-need-dissolution-triggers review bar; names the two doc contradictions to fix (interpreter-kernel-d collapse-vs-pin either-or resolves to collapse-then-emit; witness-realization P4's claim_executor not-an-emit-target corrected to not-YET per census). - ts-effects-providers: operator ruling — effects are per-language library models (effect providers) emitted like everything else; TargetModel runtime_row class carries the interface; 2 of ~9 host-effect families landed (#7099), rest are rows not architecture. - ts-store-econ: the durable BUDGETED artifact-store tier + floor consultation is the single gate on the 2a flip (every family retained on no_cached_no_evict_carrier); resolved_graph_cache and #7129 eviction dissolve INTO it per kernel-D. - ts-material-ci: materialization kernel in CI (the fold both substrates consume); unkeyed-collapse watch-flag (0.6 percent vs historic 47). - ts-interp-delete: the terminal conditions, with the 2a re-pricing (loud in-PR agreement, no drip-feed windows) and cli_run hollowing explicitly OFF the interpreter critical path. Also: ts-native-flip-revert row updated with the landed divergence carrier receipt (v2.std.native_agreement) — re-flip now gated only on the store. ROADMAP.md regenerated via main_wet (only ROADMAP.md + authority changed; all other artifacts byte-identical). roadmap_authority witnesses green (frame/reset/subgroup/emit-refs). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Roadmap 2b rework per review: bind to v1_deletion_plan authority, real dependency edges, corrections + new 2c lens-enforcement group Every review claim was verified against the tree before accepting; all load-bearing ones held. Changes: - 2b is now explicitly a PROJECTION of gunbc.v1_deletion_plan (which exists and declares itself the plan authority — the prior block was a partial fork); new ts-authority-converge row extends the carrier with the execution-track bricks (observation contract, divergence root cause, materialization-provider interface, evaluator completeness, executor seams, quarantine rehearsal) instead of restating them here. - Edges now encode the actual dependency graph (RoadmapEdge is dependency-gating per roadmap_spawner node_dep_done, not containment): store-econ -> material-ci and the 2a flip; observation-contract -> flip; evaluator/effects/material/seams -> quarantine -> delete; zero-hand after delete as its own terminal milestone. - ts-native-flip-revert corrected: re-flip is NOT gated only on the store — the frontier dissolve_on requires the divergence root-caused with member + both values named plus a fresh warm per-host receipt (the loudness carrier names failures, it does not resolve them). - ts-effects-providers: the three conflated populations named apart (2 EmittedEffectFamily variants / 9 witness families / ~35 host-fed entries); work item is a typed operation-keyed census; boundary enforcement (host_run_boundary_admission pending) called out so the agency problem does not move into generated providers. - ts-store-econ: provider-interface-first ordering; artifact store, resolved_graph_cache, and #7129 schedule-retention become SIBLING provider rows under the materialization kernel, never one merged store. - ts-material-ci: eval/realize/materialize kept distinct (materialize is analysis-side per its own note; realize_pack advisory); the 0.6 percent unkeyed receipt bounded properly (run 30027001708 partial-run vs committed whole-run ~47.6 — different denominators, record not reprice). - New rows: ts-observation-contract, ts-evaluator-complete (reject arms + missing CPU-deadline/call-depth guards), ts-executor-seams (critical slice vs full hollowing), ts-quarantine (deletion dress rehearsal). - New group 2c (operator request): lens enforcement live in CI — per-lens disposition + receipt (zero inert lenses, not 55-blocking; complexity is AuditOnly/NoConsumerWitness today), fn-body visibility as the real dependency (42 contracts pending reflection; space complexity re-homes off src/v1 before terminal deletion), coverage re-enrollment priced through the D5 budget wall. ROADMAP.md regenerated via main_wet (only ROADMAP.md + authority changed); roadmap_authority witnesses green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Roadmap 2b/2c: absorb the #7135 adversarial pass — synthesis of both review sets, with two claims adjudicated against the tree Integrates every verified correction from the adversarial pass (stacked as #7135 on the pre-rework commit, now absorbed here): - 9-of-11 precision on the frontier retention reasons (complement + meet_join at agreement_red_on_main; the store gates the other nine families' FIRST flip, not the reverted pair's re-flip). - Cache-root truth: ci.yml pins GUNBC_NATIVE_CACHE_ROOT to the runner tool-cache (durable, R2-keyed); what's missing is budget/eviction authority + the executor-grain consult, not 'no store at all'. - Gate-1 gloss corrected to the carrier definition (GateEmitterFixedPoint = the emitter re-emits itself) + prereq_drift_ruling_2026_07_23 cited. - interpreter_surviving_roles named as the roles carrier; the un-rostered wet-workflow surfaces (serve/belt, main_wet, gunbc ci, pre-push, probe bins) become an enrollment obligation AND a delete condition. - Third carrier contradiction recorded (^hand_queue_drain: 7-files prose vs live 25-file roster; pins-not-drain-targets vs the collapse ruling). - 2a census staleness: 876 entries not 744, first_error_class still CensusPending; totality denominator must be derived (group 5a). - ts-store-econ SIZED (IntricacyHigh/VolumeMedium) with Accept + RED, provider shape as ONE CacheLookupResult contract with N sibling provider rows (store tier, resolved_graph_cache, recorded_fixture, #7129 schedule-retention, W3). - 2c upgraded to the five-row v2-door lane (M-L1 door / M-L2 treewide store-priced / M-L3 contract truth / M-L4 complexity scope), keeping this branch's disposition taxonomy and the space-complexity re-home rider; cross-edge ts-lens-treewide -> ts-store-econ. Two adjudications where the reviews conflicted, settled by direct read: (1) Filesystem Delete/List EXIST (filesystem_io.dag operation Delete; artifact_fs_delete/artifact_fs_list in the fs transport) — review 1 was right; the artifact_store_fs transport NOTE is the stale artifact, and ts-store-econ now says wiring-counted-eviction, not modeling. (2) the zero-hand edge direction: full zero-hand stays AFTER the delete (its own terminal milestone); the narrower ^hand_queue_drain brick precedes QUARANTINE per the carrier's prereq ruling — both encoded, neither review's blanket edge taken. ROADMAP.md regenerated via main_wet; roadmap_authority witnesses green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Roadmap 2b/2c: apply the 9bfe09c re-review — safe ordering edges, converge-gated execution track, hardened store REDs, link-grain quarantine, 2c totality wall + terminal - Edges: flip now child of census + seams + flip-revert (root-cause precedes the bulk flip); quarantine child of flip; evaluator-complete / executor-seams / effects-providers child of authority-converge (option b: the projection claim true by construction until the carrier gains its bricks). - Hand-drain contradiction resolved: the kernel-D/hand_queue_drain carrier FIXES are ts-authority-converge's deliverable; material-ci re-pointed; terminal zero-hand burn-down stays after the delete. - Census literals de-literalized: histogram carrier is the denominator authority (876->880 in one day proved the point); snapshots dated. - ts-store-econ RED battery hardened: verdict-equality primary + byte-purity on the keyed artifact (sound per C.2 #6576 seed emitter map_keys-free by construction), same-key corruption refuses on read (content_verified_on_read flips true), concurrent puts atomic; the row named as the ForciblySerial bottleneck (2a flip + lens M-L2 + kernel converge on it). - Quarantine at LINK grain: v1_interpreter omitted from the built artifact (cfg/feature or crate split) — source-inaccessible proves nothing about a linked module. - 2c: anchor precision (no lens on the compile DOOR; witnesses run elsewhere); M-L1 scoped to all THREE seed-path compile sites (PR gate, falsifier cold control, regen); M-L2 names W3 typed-module tier as the specific provider; M-L3 counts verified (55 ids / 47 contracts / 44 AuditOnly / 9 uncovered incl. the LIVE Determinism gate) + the registry-contract totality wall first; ts-lens-terminal added as the fan-in node with edges from treewide + contract-truth + complexity-scope. Verification pushbacks recorded: authored_wi sizes with acceptance: ManualAcceptance (not empty — the belt cannot dispatch bar-less); the seed emitter HAS a determinism guarantee by construction (C.2 #6576), so the byte-purity oracle stands on the keyed artifact. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Roadmap 2b/2c: apply the green-verification review — five fixes, none structural 1. Flip-revert row twice-corrected: the pair's re-flip gate is EXACTLY the frontier's own dissolve_on (root-cause + fresh warm receipt, NO store clause — the pair rides the cached leg); my earlier correction over-gated in the opposite direction from the original under-gate. One authority: the carrier's strings, never a roadmap paraphrase. 2. ts-effects-providers: the stale ~35 host-fed literal replaced with the classified truth (6 so far, 700 pending, eventual count unknown; histogram carrier is the authority). 3. M-L3 counts reconciled: 46 contracts (44 AuditOnly + 2 Blocking), consistent with 55 − 9; the 47 was a grep over-count. 4. Wet-surfaces roles-roster enrollment now OWNED: added to ts-authority-converge's brick list (it was delete-blocking with no owner). 5. Dispatchability: ts-authority-converge sized (IntricacyMedium/ VolumeMedium — it is the sprint's entry point and concrete carrier work); the 2c anchor-grouping edges removed so ts-lens-door is not gated behind an umbrella that never completes (edges are for real deps only — the 2b block already followed this rule). Trivia: evaluator module path corrected to v2.extdeps.runtimes.*; cli_run line-count de-literalized (~28k and growing); 2b label reframed 'decoupled from strong self-host' to match the content. Regen byte-idempotent; roadmap_authority witnesses green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Roadmap 2d + plan doc: progress & observation — process→outcome discipline, one event model, N renderers docs/plans/progress-observation-design.md: the five operator-signed laws (process→outcome no orphans; heartbeat carries identity; recursive dwell escalation; quiet at arm's length; every response true), the P0 event model (Refused distinct from Failed; BlockedOn DERIVED from governor facts; one glyph/material authority incl. the reward-animal rows), and per-context FORMAT CONTRACTS: CI log (append-only, heartbeat+escalation first-class — the reference implementation's gap), interactive TTY, receipt/JSONL (replayable; existing receipts become derived views), dashboard (schema-only), pipe. Reference implementation gunb-ai/gunb.ai tools/terminal studied BY EXECUTION (tests green; driven live in TTY/CI/failure modes): lift contention/nesting/boxes/reward; fix CI silence, Failed/Refused conflation, hand-mirrored emoji duals. Roadmap 2d: ts-obs-anchor + sized ts-obs-model (P0) + sized ts-obs-ci-renderer (P1, flagship = re-render the captured crawl window of run 30044816605) + ts-obs-tty (P2) + ts-obs-census-wall (P3), edges encoding P0→P1/P2→P3. Doc-graph bind added; reachability witnesses 4/4 and roadmap witnesses green; ROADMAP.md regenerated via main_wet. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Plan: CI two-tier placement redesign — the 5-second rule Records the 2026-07-24 operator decisions: placement by measured warm cost (≤5s rides the PR path, wet admissible if fast + hermetic-classified), DELETE the per-PR selection-control audit step (falsifier cadence is the surviving control), Rust seed stays tested-by-execution in CI. Dependency order D0–D5 with the post-merge #7129 P1s folded into D0 and the run_claims_in_process activation blockers into D1. Doc bound to gunbc.ci_spec.gunbc_ci_spec; dissolves when D3's placement axis lands. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Plan: single-PR delivery structure + expectation sheet + sign-off checklist Operator directive 2026-07-24: no staged drag-out — pre-PR probe does all measurement, one redesign PR lands D1+D3+D4+D5 atomically (single revert), D0 close-out routed to the #7129 worker and sequenced first (shared cli_run.rs). Before/after sheet with falsification bounds per row; §9 decision checklist for reviewer sign-off. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Plan: issue-closure checklist worked through by execution; three corrections Verification pass before operator review (2026-07-24): (1) D1 already LANDED on main — #7122 + #7128 pooled the 26 cold children to 6, verified by counting readiness probes in run 30052571652's ci log; plan re-framed, in-process activation split off as deferred D1b with its fail-open confirmed by direct read of cli_run.rs:9580. (2) D4 audit deletion now BLOCKED on falsifier health — the cadence is red 5/5 by crawl-timeout (run 30044928186: cgroup 16.1G pinned, swap saturated, 170m cap), so the per-PR audit is currently the only working selection control. (3) The 5s threshold reuses the existing fast-lane law carrier (thread-CPU budget, typed refusal) — no second authority. §10 checklist: 14 rows, each with status + how verified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Plan + roadmap: apply the #7132 review round — fourth carrier contradiction, staleness, D5 brief in-tree All five findings verified against the tree before applying: (1) parity_window required_consecutive_green_windows=3 + frontier dissolve_on strings contradict the 2a re-pricing (no first flip writable with the falsifier red) — joins ts-authority-converge's stale-prose deliverables as the FOURTH contradiction; (2) ts-store-econ's '#7129 in flight' corrected to merged + PR-0 close-out; (3) rust-suite disposition miscite fixed at its authorities (design_document, ci_spec — DESIGN.md reprojects; actual decl commit_gate_rust_suite_removed_disposition); (4) roster rows corrected to post-pooling reality (6 = 1 union + 4 ingest-overlay by construction per ingest_pool_separation_note + 1 reads-class; batch-6 414s not 12.15m); zero-hand tag repointed at ts-seed-interim; (5) D4 leaves PR-1 — fast-follow micro-PR gated on first green cadence (§9.7). Implementer round folded in: D1b scope refinement (plain resolve_entry_graph — spawns removed, per-entry resolves not), 5s threshold-vs-mechanism caveat (§9.1), and §11 lands the DiffBaseline brief in-tree (previously chat-only). ROADMAP.md regenerated via main_wet. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * Split hub-file token fixes out of this PR; record the batch-3 budget finding Run 30063529282 refused batch 3 at 24m59s vs the 22m budget: the one-token miscite fixes in ci_spec.dag + design_document.dag are hub files, so selection legitimately ran the full corpus (2,315 witnesses, ALL PASS, RSS healthy) — the honest full-corpus wall exceeds the budget. Attribution clean: same branch without the hub files was green (0d54cdc). Fixes reverted here to ride PR-1 (which pays full corpus anyway); DESIGN.md re-projected from its reverted authority. Systemic implication recorded: PR-1 necessarily touches CiSpec and will face the same wall — §9.8 decision (receipt-noted raise sized by the D2 probe) + checklist row 15. The budget wall itself worked as designed; no widen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg --------- Co-authored-by: Claude <noreply@anthropic.com>
CI floor endgame: every priced lever + the cost wall (D1–D6)
Baseline: carries #7123's docs (
resolve-regression-journey.md, attribution doc §9–§9.2) as the fresher superset — #7123 closes as superseded after this merges (operator owns the close). Every number below has its receipt in those docs, the lever TSV, or run 30009199696.Model (each deliverable extends ONE existing authority)
tools.host_prelude→tools.cheap_gate_pool): batch-0's claim-backed gates shared source roots but each paid its own corpus-denominatedMultiEntryIndexchild (~88s + ~64s on run 30009199696). The pool = the DERIVED union of the two concern authorities (never a third roster;roster_registryByDerivation), run as ONEclaim_batchchild, K sub-pools sized to the slot (cheap_gate_pool_max_claims_per_child, the §9.1 memory-cliff wall) — the pooled child stays a separate process from the executor (wall (a)); per-claim verdicts stay named by claim_batch's PASS/FAIL-per-function loop (wall (b)). A newCheapClaimPoolGateruns the pool; the layering/extdeps gates became non-vacuous enrollment walls asserting chunk-transform totality (the pool is their union by construction, so bare membership would be an inert tautology — the K-chunker between pool and children is the code that could drop a claim, and that drop reds both concern gates; thecompile_clean_shard_totalitypattern). Ingest's 4 children stay — the mktemp overlay root-sets are the genuine constraint, stated in-row (ingest_pool_separation_note): distinct root-sets are structurally distinct index processes, and merging them re-opens the module-path-collision class the mktemp isolation closes.floor_terminal_fast_exitafter receipts flush skips the 2.5–3.1 min Drop walk of the ~16GB retained store (twice-confirmed: Pi swap-growth during Drop; run 30009199696's +3.1 min post-batch-7 tail). It is the common tail ofrun()'s walk path (every plan walk exits through it). Exit code preserved by construction (walk_exit_code, unit-pinned); receipts complete before the exit by construction (written insiderun_walk; their write failures fold intoany_failed), and the RED controlunwritable_receipt_base_reds_not_vanishesproves a truncated/unwritable receipt reds rather than vanishing. fix governor #7119/Finish 7043 (floor budget refusal): ground witness rows on existing FloorOutcome + plan-roster fact #7072's governor arm (FloorBudgetBelowMinimumFootprint, commit5cd0155149) touches ARM time — no overlap with this exit-path change; nothing forked (and its arm fired live during local validation on this memory-capped container).budget_roster_*cases called barebuild_multi_entry_index, then the first corpus case built the thread-shared index (R4 log: first control line at t+2m07s). The warmup case now ridesresolve_entry_graph_sharedso the suite pays ONE shared build;budget_roster_resolves_coldkeeps its bare build as the named cold control (the import-strip Class-B pool-coincidence witness — a resolution-correctness control, not un-finished pooling). The step stays per-PR (the widen-detector for theentry_file_touchedclass) and now has its redundancy-ledger row.discovery_pump_wall_ms,discovery_roster_walk_ms,discovery_diff_observe_ms,discovery_frontier_attribution_ms,discovery_shared_index_build_ms,discovery_preresolve_calibration_ms,discovery_runner_resolve_ms, plusdiscovery_corpus_resolve_ms/discovery_corpus_eval_msserial sums) — not prints. The fresh per-phase profile from this PR's own runs names the next mechanism; if it names the identity authority or the retention lane, the receipt + frontier row is the deliverable (no downhill patching) — the lever-TSV1-retiredrow records exactly that discipline.gunbc.ci_spec(one carrier):gunbc_ci_floor_batch_wall_budget_seconds= [240, 60, 1320, 420, 120, 600, 420] (per-batch, receipt basis per row in the note; sum 53 min under the 55-min cap).claim_executorreads it fail-closed at arm time (the fast-lane-budget pattern; length must cover the schedule exactly — witness-pinned), records every batch's wall as typed receipt rows (target/floor-batch-wall-receipt.txt: wall/budget/verdict per batch), and reds an over-budget batch with the typed, located refusalFLOOR-BATCH-OVER-BUDGET batch=N wall_ms=… budget_ms=… (budget row: …)— never a rerun, never a widen, never a silent cap raise. Denominated per-batch, never per-run (§9.2: plumbing PRs legitimately run 46/55 wet rows; a per-run wall reds them spuriously). Ruling reconciliation stated and operator-SIGNED in the carrier note (briansrls, 2026-07-23): "no wall-clock term in any verdict" governs WITNESS verdicts; batch budgets are admission/scheduling facts at the walk grain — the 5-second-eval-law split — with the signed line as the declared human-signed exemption row the 2026-07-10 ruling requires. Raise discipline as signed: RAISING requires a new dated operator-signed line naming run id + enrollment; TIGHTENING by ordinary receipt note; the on-call remedy forFLOOR-BATCH-OVER-BUDGETis diagnose-or-signed-raise, never rerun. RED control both directions viaGUNBC_FLOOR_BATCH_BUDGET_TIGHTEN_MS— a tighten-only injection (min), structurally unable to widen a budget. Named follow-up rows in the carrier: the prelude coverage hole (~5 min pre-batch-1 sits outside every budget), identity-keyed budgets, and the K=16 union-RSS receipt.bin_witness_wet_entriesfrontier (gunbc.ci_layer_roots): per-row wall budgetbin_witness_wet_per_row_wall_budget_seconds= 60s. Run 30009199696's per-row table: the 54-row pool's 561s eval was 94% three rows —floor_skip_discovery_keystone_holds289s (ALSO a per-PR duplicate of the selection-control step),cross_shard_seam_preservation_holds_on_live_tree183s,dag_compile_clean_perturb_receipts_holds53s (under budget, stays). The two over-budget rows re-home to a new falsifier wet lane (gunbc_falsifier_rehomed_bin_wet_batch, batch 5 — same mechanism as the other falsifier lanes) as typed frontier rows (falsifier_rehomed_bin_wet_rows: reason + dissolve_on each, enrolled ingunbc.roster_registry); the remaining 52 rows are the per-PR smoke subset (plumbing PRs keep a discriminating signal at ~1.6 min eval). The executable wall against silent regrowth is D5's batch-4 budget — a new heavy row blows it with a typed refusal even if review misses the per-row rule. The re-homed rows name their executing consumer through the newFalsifierRehomedBinWetcadence (std.witness_admission), wired through the exclusion-frontier classification, the v2 admission lens (consumer routing + manifest + backing check with its own unbacked-row RED control), and the Rust source-scan classifier (RehomedBinWetRowhead, unit-pinned) — the integration: module-identity Phase 0(b)/1 + qualified_name de-fork + emitter Ord unlock (single merge point) #6866 admission invariant untouched.Hard rules held
gunbc_ci_floor_step_timeout_minutes); the cost-wall landing is APPENDED to the timeout note's bounce history; 55 → 40 is proposed as a data change AFTER post-merge receipts (operator signs; not in this PR).falsifier.ymland the cold-control envs unchanged; the falsifier PLAN gains lane 5 (the D6 re-home destination — the brief's own instruction), enrolled through the samefalsifier_batches_append_if_enrolledfold as lanes 2–4.run_claimsemantics and the conjunction (no short-circuit — a v1 language fact, §9.2); the two re-homed rows run identically on the falsifier cadence; gate-grain attribution moves to the pool gate deliberately, with the failing CLAIM still naming itself (the finer grain).Test plan (proof by execution)
cargo test -p v1-compiler --bin claim_executor— 18/18: walk-exit-code pin, unwritable-receipt RED (unwritable_receipt_base_reds_not_vanishes), batch-wall receipt verdicts both directions, existing lane-promotion battery--target dagcompile: zero new error identities vs main — pristine main itself exits 1 with 2,647 unlisted-import errors (the flagged two-surface divergence, a named non-goal); the branch-vs-main error-set diff is line-number shifts plus files the merged main added. The twonon-exhaustive match: missing variant(s) CheapClaimPoolGatehard diagnostics the first compile caught (floor_materialization, merge_admission) were fixed, and the post-cadence-variant round-3 compile shows zero hard diagnostics — the construction wall doing its job.main_wetregen: falsifier.yml/DESIGN byte-identical; ci.yml healed (converged byte-identical with main's own auto-heal of the stale fleet-converge line) and ROADMAP.md healed on the merge tree (main's committed copy carried a trailing blank line its generator does not emit — the first floor red, reproduced locally and regenerated).claim_batchchild evaluated all 4 batch-0 gate fns —cheap_claim_pool_gate_passesPASS (its ONE nested pooled child ran all 12 claims, per-claim PASS lines), both enrollment walls PASS, drift gate PASS after regen; chunk-totality witnesses 4/4 incl. the RED discriminator (cheap_pool_chunk_totality_red_control_holds).budget_red_control_plan.dag: withGUNBC_FLOOR_BATCH_BUDGET_TIGHTEN_MS=0→ the witness itself PASSes (verdicts untouched — the admission split, live),✗ FLOOR-BATCH-OVER-BUDGET batch=1 wall_ms=35419 budget_ms=0 (budget row: …)prints, exit 1, receipt rowOverBudgetcounted; without the env → exit 0,WithinBudget. (Local runs neededGUNBC_MEMORY_BUDGET_BYTESabove the 12 GiB arm-time floor — this container trips the Finish 7043 (floor budget refusal): ground witness rows on existing FloorOutcome + plan-roster fact #7072FloorBudgetBelowMinimumFootprintarm otherwise, which is itself that refusal proven live.)ci_floor_plan_witnesses+ci_floor_optin_roster_witnessesPASS (schedule lens, cheap-membership now 4, falsifier 5-lane structure, budget-coverage witnesses); witness-admission + exclusion-reconciliation witnesses 6/6 incl. the new unbacked-rehomed RED controlPrediction (acceptance 3)
First post-merge ordinary-diff main floor ≤ ~30 min. Basis: 49.5 min (run 30009199696 floor step) − ~3.1 teardown (D2) − ~1 batch-0 pooling (D1) − wet-lane re-homes (D6; plumbing profile −7.9, ordinary diffs less because their wet baseline was already ~1.3 min) − selection-suite share where it appears, against the ordinary-diff discovery/wet profile of §2/§9.2. The actual gets recorded in attribution doc §9.3 post-merge — a miss is a receipt, not a silent pass.
Counted residue (named, not silent)
1-qualifiedmemory-cliff row — honored via the K-sub-pool cap; full pooling payoff waits on the retention lane (K=16 provisional until the pooled child's union-RSS receipt lands — follow-up row in the carrier note).🤖 Generated with Claude Code
https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44