Repository navigation
CI fail-fast: cheap-gate early batch (SIMPLE declared membership + dissolution trigger) + event-scoped stop policy - #7088
Conversation
Run negligible-memory gates before compile-clean so layering/drift/authority violations fail in seconds, and scope cancel-in-progress off merge_group so queue checks are not killed by unrelated PR activity. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressed review 41563 in
Local: — sent from quiet-moth-636 |
|
review 41595 — observation 1 (plan roster parallel representation): Valid finding; addressed in the latest commit. review 41595 — observation 2 (concurrency cancel-in-progress vs FullLedger): Intentional orthogonality, not a conflict. These operate at different layers:
A superseded main push cancelling an in-flight run does not defeat FullLedger's purpose — FullLedger governs batch continuation inside the surviving run; concurrency governs which run survives. — sent from quiet-moth-636 |
Co-authored-by: Cursor <cursoragent@cursor.com>
Document claim_executor seed bridge in gunbc.ci_spec with Scaffold disposition, SCAFFOLD comment in claim_executor.rs, and roster enrollment witness (review 41597). Co-authored-by: Cursor <cursoragent@cursor.com>
CI run 29970856958 measured resolves_total=4 after cheap gates moved to batch 1 before compile-clean; update ci_floor_declared_resolve_count and regen ci.yml resolve-receipt gate per materialization discipline. Co-authored-by: Cursor <cursoragent@cursor.com>
…) — review 41712 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…us receipt (main-side, control-verified) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…7088 nfr roster sites (5th predict-skip occurrence), record on ts-lying-stamp
…non_fold_residue, host census reads through, registry enrolled (#7107) * Commit 1: native-routing frontier authority — 9 families, all InterpretedRetained{parity_window_open} NativeRouted | InterpretedRetained{reason, dissolve_on} per enrolled family (self-host-frontier pattern applied to execution routing). Witnesses: totality, exactly-one-per-family, unlisted-family RED, all-start-retained. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 2: parity window — receipt-gated routing flips (N=3 consecutive green, reset on red/cold) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 3: per-PR native batch consuming the routing frontier (empty at landing, zero behavior change) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 4 (R2): toolchain-identity segment in the durable native-cache root rustc -V derived at prelude time; a toolchain upgrade lands in a fresh root and cold-rebuilds. Realization-side backstop per the census R2 flag; the model-side key term is the declared construction end-state. Unresolvable rustc falls to a named sentinel segment; the falsifier cold control stays the backstop. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 5: P4 advisory-soundness law — derived bound vs observed peak, unknown never sound Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 6: P2/host fusion law — marker warmness must agree with store Share/Recompute (R6 tripwire) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 7 (R1): ComputationIdentity lattice landed in dag/std; v2.std.materialize first consumer Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 8: the flip — meet_join + complement NativeRouted via the family-crate pr_native leg Operator ruling 2026-07-22: receipts sourced from observed local runs (law unchanged). srv1 hermetic 4-run probe: 4/4 PASS, runs 2-4 fully warm — three consecutive green windows. The other 7 stay InterpretedRetained: their equals_eval legs are UNCACHED (sweep receipt), so the dissolve-on is a no-evict cached carrier per family. Per-PR batch now enrolls 2 hermetic entries; landing witnesses updated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 9: materialize rust-toolchain.toml into every emitted cargo workspace Fleet incident: runners without a rustup default refuse cargo builds in RUNNER_TOOL_CACHE workspaces (repo checkouts build only via the in-repo rust-toolchain.toml; srv1 masked this with a hand-set default — srv2 red). Pin row added to all 11 WorkspaceFile scaffolds; literal mirrors the sole authority with a declared derive-from-file dissolve-on. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 10: transport host-tool resolution — PATH, then CARGO_HOME/bin, then ~/.cargo/bin srv2 probe receipt: spawn cargo failed ENOENT — runner env has no cargo on PATH; emitted workspaces spawn with only process env. Resolution falls back to the cargo home bins; all-miss keeps the existing typed refusal. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Commit 11: toolchain pin in the shared rust_bool_fn_host_runtime_row scaffold (the logic-family path missed by commit 9's sweep) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Regen ci.yml at merged head (drift gate red: merge took theirs without re-emitting) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: group<u> * WIP: group<u> * WIP: group<u> * WIP: group<u> * WIP: group<u> * WIP: group<u> * Merge origin/main (#7091 flip revert) onto subject-keyed frontier Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: group<u> * WIP: group<u> * Rename decl helper to roster_decl (bare-name collision with design/material.dag css decl) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: group<u> * WIP: group<u> * WIP: group<u> * WIP: group<u> * WIP: group<u> * Restore sibling-lane files to origin/main (stale-merge sweep: pre-squash branch history reintroduced old content on merge) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: group<u> * Reconcile ROADMAP count to 125 rows (123 legacy + 2 fresh #7088 sites) — review 41712 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: group<u> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Brian Searls <briansearls1@gmail.com>
…+ use-symbol ownership) + re-probe wave carriers (#7097) * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * emit: never synthesize an import for a name the module itself declares (E0255 std_dup root) Seam probe by execution (04_infer cssl closure, raw emit pre-assembly): the E0255 'List defined multiple times' class is EMITTER-root — the reference-derived use-line pass consulted only the bare-name last-write-wins registry, so a dual-tree homonym (dag/std List/Map/GroupCompletion vs src/v2/std twins) steals the registry row and the pass synthesizes a pub-use that collides with the module's own declaration (std_types.rs List/Map, std_algebra.rs GroupCompletion). Fix: local-decl exclusion in reference_derived_use_lines — candidates fold local_type_names + authored item names into the exclusion map before registry lookup (containment binds a bare ref to the module's own declaration first). Byte-inert on the green seed by construction; regen_stage0 stage-2 divergence 0 (only v1_compiler_emit_rust.rs changes, the edit's own footprint). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * probe: full residual histogram + raw dup-pub-use census columns (classifier v3) Two new TSV columns per operator requirement (2026-07-22): residual_histogram (every rustc E-code + count — rustc masks later layers behind first_error) and raw_dup_pub_use (duplicate symbols across pub-use lines measured on the RAW emit BEFORE assembly rewrites — the by-execution census for dissolving the last cssl sanitize rule). Green verdict split: CARGO_GREEN for unshimmed builds; PHANTOM retained only where a lane shim replaced the cssl lib.rs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * review 41673 follow-ups: dissolve-on trigger for strip_repeated_use_symbols (advisory b) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * nfr roster backfill: two #7088 sites surfaced by this PR's whole-corpus receipt (main-side, control-verified) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave * WIP: Lane A: std_dup seam probe + fix + cargo-green flip wave --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…#7104) * WIP: UI roadmap structure discussion * WIP: UI roadmap structure discussion * WIP: UI roadmap structure discussion * WIP: UI roadmap structure discussion * WIP: UI roadmap structure discussion * WIP: UI roadmap structure discussion * WIP: UI roadmap structure discussion * Fix CI reds: re-pin authority strings + roadmap_css digest, backfill #7088 nfr roster sites (5th predict-skip occurrence), record on ts-lying-stamp * WIP: UI roadmap structure discussion --------- Co-authored-by: Brian Searls <briansrls@gunb.ai>
…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>
Summary
gunbc_ci_cheap_floor_gate_membership(layering-imports, extdeps external-authority, generated-artifact drift) as a Scaffold with dissolution trigger; schedule them in batch 0 before compile-clean so fast scans fail in seconds instead of after the ~4min compile anchor. Cheap gates are resource anchors so discovery-flip corpus→gate serialization does not deadlock the scheduler (cheap→compile→corpus cycle).FloorBatchStopPolicyingunbc.ci_spec(pull_request→StopBeforeDependents; main/falsifier/unknown →FullLedger).claim_executorevaluatesgunbc_ci_floor_batch_stop_policy_for_github_event+gunbc_ci_floor_plan_uses_batch_stop_policyfrom the resolved plan context and consumes the variant inrun_walk(seed bridge:gunbc_ci_floor_batch_stop_policy_claim_executor_seed_note+ Scaffold disposition; dissolve-on: self-emitted claim_executor).cancel-in-progressasgithub.event_name != 'merge_group'so PR/push runs supersede stale work but merge-queue checks are not killed.schedule_lensfor batch-0 cheap / batch-1 compile shape; enrolled-set preservation; RED control (compile gate absent from batch 0); stop-policy + roster witnesses;ci_concurrency_policy_witness_test; regenci.ymlconcurrency line.Test plan
claim_batch --entry src/v2/test/claim/ci_floor_plan_witness_test.dag --functions ci_floor_plan_witnesses— PASSclaim_batch --entry dag/test/claim/ci_concurrency_policy_witness_test.dag --functions ci_concurrency_policy_witness_holds— PASS