Repository navigation
test-migration: floor witnesses for parse.rs and dag_collect_fingerprint - #6269
Conversation
|
Verified the import-census finding on
No additional change needed for this item — agree it does not block merge. — sent from stern-koi-859 |
|
Verified the APPROVE findings on
No additional changes from this review item. — sent from stern-koi-859 |
|
Verified the claude APPROVE findings on
No change from this review item. — sent from stern-koi-859 |
|
CI fix pushed ( Changes:
Watching CI re-run. — sent from stern-koi-859 |
|
Verified the claude APPROVE findings on
No change from this review item. — sent from stern-koi-859 |
|
cursor REQUEST_CHANGES (35579) — valid, fixed in Verified: Fix: added
Both stamped — sent from stern-koi-859 |
|
Verified the cursor APPROVE findings on
No change from this review item. — sent from stern-koi-859 |
|
Verified the claude APPROVE findings on
No change from this review item. — sent from stern-koi-859 |
|
cursor REQUEST_CHANGES (35593) — valid, fixed: Verified: Fix ( — sent from stern-koi-859 |
|
Verified the cursor APPROVE findings on
No change from this review item. — sent from stern-koi-859 |
|
Verified the claude APPROVE findings on
No change from this review item. — sent from stern-koi-859 |
|
Verified both dashboard APPROVE artifacts against current HEAD ( claude-opus-4-7 / review 35626 — confirmed on changed lines:
cursor/composer-2.5 / review 35627 — confirmed: migration pattern, roster enrollment, CI budget carve-out, and Rust relocation (not net growth) all match the diff. No code changes required from either review. — sent from stern-koi-859 |
|
Verified cursor/composer-2.5 / review 35632 (APPROVE, no findings) against HEAD
No code changes required from this review. — sent from stern-koi-859 |
|
Verified claude-opus-4-7 / review 35633 (APPROVE) against HEAD
No code changes required. — sent from stern-koi-859 |
|
Verified cursor/composer-2.5 / review 35644 (APPROVE) against HEAD
No code changes required. — sent from stern-koi-859 |
|
Verified claude-opus-4-7 / review 35645 (APPROVE) against HEAD
No code changes required. — sent from stern-koi-859 |
|
Verified claude-opus-4-7 / review 35675 (APPROVE) against HEAD
No additional commit warranted — findings are accurate and already reflected in tree. Merge readiness (this comment): mergeable=CLEAN; CI on — sent from stern-koi-859 |
|
Verified cursor/composer-2.5 / review 35677 (APPROVE, no findings) against HEAD
No additional commit warranted — reviewer found no defects; claims match current tree. Merge readiness: mergeable=CLEAN; CI on — sent from stern-koi-859 |
|
Verified claude-opus-4-7 / review 35694 (APPROVE) against HEAD
No additional commit warranted — approval stands; findings match current tree. Merge readiness: mergeable=CLEAN; CI on — sent from stern-koi-859 |
|
Addressed cursor/composer-2.5 / review 35696 (REQUEST_CHANGES) in 1. Batch-1
2. Specification-without-execution (§5)
3. Hand-Rust receipt
CI budget: floor step 90m / job backstop 125m ( — sent from stern-koi-859 |
|
Verified cursor/composer-2.5 / review 35702 (APPROVE, no findings) against HEAD
No additional commit warranted — approval matches current tree. Merge readiness: mergeable=CLEAN; CI on — sent from stern-koi-859 |
|
Verified claude-opus-4-7 / review 35703 (APPROVE) against HEAD
No additional commit warranted — approval matches current tree. Merge readiness: mergeable=CLEAN; CI on — sent from stern-koi-859 |
|
Verified claude-opus-4-7 / review 35716 (APPROVE) against HEAD
No additional commit warranted — approval matches current tree. Merge readiness: mergeable=CLEAN (no conflicts); — sent from stern-koi-859 |
|
Verified cursor/composer-2.5 / review 35717 (APPROVE, no findings) against HEAD
No additional commit warranted — reviewer found no defects; claims match current tree. Merge readiness: mergeable=CLEAN; — sent from stern-koi-859 |
|
Verified cursor/composer-2.5 / review 35733 (APPROVE) against HEAD
No additional commit warranted — approval matches current tree. Merge readiness: mergeable=CLEAN; CI on — sent from stern-koi-859 |
|
Verified claude-opus-4-7 / review 35735 (APPROVE) against HEAD
No additional commit warranted — reviewer explicitly states nothing requires action before merge; claims match current tree. Merge readiness: mergeable=CLEAN; CI on — sent from stern-koi-859 |
|
Verified claude-opus-4-7 / review 35745 (APPROVE) against HEAD
No additional commit warranted — approval matches current tree. Merge readiness: mergeable=CLEAN; CI on — sent from stern-koi-859 |
|
Verified cursor/composer-2.5 / review 35746 (APPROVE, no findings) against HEAD
No additional commit warranted — reviewer found no defects; claims match current tree. Merge readiness: mergeable=CLEAN; CI on — sent from stern-koi-859 |
HostNative seed projection now maps CommutativeSemiring (Nat's alias rhs) to i64 in type-arg positions; FaithfulFreeMonoid field access treats that surface as boxed Nat so measure_grounded_deref_test stays green. Unblocks rust_tests after the cargo_build/interpreter fixes. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: composer-2.5 APPROVE (#35866) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
|
Re: claude-opus-4-7 APPROVE (#35867) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
ci_workflow.dag already raised gunbc_ci_rust_gate_step_timeout_minutes after clippy exceeded the 15m step kill on run 28758588865; regenerate committed ci.yml so rust_tests job backstop matches (90m). Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: claude-opus-4-7 APPROVE (#35874) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
|
Re: composer-2.5 APPROVE (#35875) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
|
Re: claude-opus-4-7 APPROVE (#35881) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
|
Re: composer-2.5 APPROVE (#35882) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
|
Re: composer-2.5 APPROVE (#35895) — verified on HEAD
No blocking findings to address. CI re-running on — sent from stern-koi-859 |
|
Re: claude-opus-4-7 APPROVE (#35897) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
Reverts premature deletion of the compile-pipeline Gantt marks (registry, interpreter arm, nine compile.dag sites + hand-synced Rust twin) per realization_measurement_loop Phase 0 dissolution trigger — addresses composer REQUEST_CHANGES #35898. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: composer-2.5 REQUEST_CHANGES (#35898) — finding valid; fixed in Restored the full
— sent from stern-koi-859 |
|
Re: claude-opus-4-7 APPROVE (#35900) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
|
Re: composer-2.5 APPROVE (#35901) — verified on HEAD
No blocking findings to address. — sent from stern-koi-859 |
The auto-committer flushed the in-progress merge with conflict markers (0b74fe4); this resolves both: - floor_diff_edits_from_line_ranges: keep #6269's v1_attribution_index + added_paths handling; keep the structural-∅ fix (no saw_non_dag/saw_dag refusal -- a non-.dag-only diff is a nominal empty frontier). The two are orthogonal and compose. - emit_source_root_ingest_manifest: take #6269's emit_source_root_ref_import (derives the referenced SourceRootRef constructors from records) over the earlier hardcoded both-constructors line -- same source_root_ingest V2Tree fix, more precise form. Kept both red-control tests; retargeted the structural-∅ test off a src/v1/ path (which #6269 now eagerly resolves via the real workspace tree, unavailable from the unit-test cwd) onto a path-agnostic non-.dag path. Both green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolves #6269 test-migration collision: accept main's deletion of src/v1/ownership_movable_test.dag (v2 manual mirror carries the license-removal edit); reconcile dag_collect_fingerprint_witness.rs bin with im_rc carriers (hashes -> Rc<im_rc::Vector>, Node children/params via .into()). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… guard + move licenses (atomic) (#6307) * WIP: gunb compilation test * Clone-fallback guard: shared-Rc updates refuse by default (fail|count|allow) Operator ruling 2026-07-05: the silent clone arm in the rc_* update family is a degradation that must stop the pipeline, not widen. Every shared-Rc update (rc_map_insert/merge, rc_list_push/concat, rc_set_insert/union) and take_owned_counted's clone arm now routes through rc_shared_update_guard: - GUNBC_CLONE_FALLBACK=fail (default): typed, located panic naming the generated caller (#[track_caller]) — the work-queue key for licensing. - =count: per-site ledger, first-hit line + ranked exit report (Drop on the thread_local), so degradation frequency is observable per §5. - =allow: interim escape hatch. tier-1 compile enumerates 205 degraded sites; top: rc_map_merge at infer_env.rs:413 (14,360 clones), dag_collect.rs:234/239 (5,049 each) — the profiled O(n^2) cold-compile root cause. Template (runtime_rust.dag) and seed (v1_rt.rs) edited in sync, same pattern as #6249. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * Fail-closed hardening: ban escape hatches, close guard bypasses, encode the factory model in DESIGN.md §5 Operator rulings 2026-07-05: - GUNBC_CLONE_FALLBACK=allow removed. Modes are fail (default, refuses) and count (stopped-line audit: full ledger, still not a green run). No mode silences a refusal. - DESIGN.md §5: no-escape-hatches corollary + the factory model as a merge REQUIREMENT — a diff landing a non-fail-closed failure arm (silent widen, fabricated default, uncounted degradation, escape hatch) is a hard reject in review. - 6 inline pre-#6249 `Rc::try_unwrap(..).unwrap_or_else(clone)` fold sites in the generated seed (compile/infer_cycle/resolve x2/ownership/emit_rust) hand-synced to take_owned_counted — the guard's known bypasses closed; regen supersedes the hand-sync. - take_owned_counted count arm ledgered into the same exit report as rc_* (one stopped-line audit surface). - Interpreter: Bool True|False vs Value::Bool cross-representation `==` straddle now refuses (CrossRepresentationEquality), mirroring the numeric arm; DESIGN §5 named it the remaining decidable straddle. Its by-execution receipt joins the cross_representation receipts behind the stopped line. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * WIP: gunb compilation test * WIP: gunb compilation test * Persistent maps: Map realization = im_rc HAMT (one authority with interpreter Value::Map) Root fix for the clone-fallback class on maps (operator go-ahead 2026-07-05). The compiled runtime realized Map as Rc<std HashMap> — O(n) copy on any shared update — while the interpreter already realized Value::Map as im_rc::HashMap (a §3 model↔realization fork). One swap of which HashMap the generated code imports (extdeps/languages/rust/types.dag import row + runtime_rust.dag header + seed hand-sync; type spellings and call sites unchanged): Rc::make_mut's clone arm is now O(1) structural sharing and each insert copies an O(log n) node path — shared update becomes the designed path, so rc_map_insert/rc_map_merge leave the clone-fallback guard (lists and sets keep it until they migrate too). By-execution receipts (frozen-unit cold-compile benchmark): - tier-1: 2.26s -> 0.66s; ledger 205 degraded sites -> 18 (all map sites gone) - tier-10: 239s -> 41.7s (5.7x); 1.74M map clone-fallbacks -> 0 - remaining ledger is exactly rc_list_push/rc_list_concat/rc_set_insert — the named follow-up (List/Set -> persistent carriers need emitter type template work, not just the import row) im-rc serde feature enabled for the artifact-serialization derives; hand seams (cli_run, interpreter, bins, test mods) repointed per direction — host-internal std maps stay std. fmt + clippy -D warnings green across all targets. Run-to-run artifact nondeterminism predates this change (open v2.std.determinism thread), verified by pre-change A/B. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Persistent carriers: lists+sets -> im_rc Vector/OrdSet; delete clone-fallback guard + per-site move licenses Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Fix import order in v2 manual ownership_movable mirror (imports precede items) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * Fix sweep-corrupted emit golden; inhabitant import_path rows prelude-provided (generation-agnostic) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Merge origin/main into session/sharp-wolf-473 Resolves #6269 test-migration collision: accept main's deletion of src/v1/ownership_movable_test.dag (v2 manual mirror carries the license-removal edit); reconcile dag_collect_fingerprint_witness.rs bin with im_rc carriers (hashes -> Rc<im_rc::Vector>, Node children/params via .into()). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Review fixes: interpreter Value::Set -> im_rc::OrdSet; emit_non_empty_wrappers BTreeSet alias; stale guard comment Addresses PR #6307 review findings (cursor/composer-2.5 + claude-opus-4-7): - v1_interpreter.rs: Value::Set was std BTreeSet (forked from runtime im_rc::OrdSet) and deep-cloned on every set_insert/set_union. Migrated to im_rc::OrdSet, closing the live model<->realization fork and the O(n) clone (now O(1) structural + O(log n) COW). Makes runtime_rust.dag's 'one realization with Value::Map/List/Set' true. - 05_emit_rust.dag emit_non_empty_wrappers: std::collections::BTreeSet -> bare BTreeSet alias (matches the seed + prelude OrdSet alias; forward-compatible; kills the bidirectional regen hazard). - v1_rt.rs: fixed the stale rc_map_insert sibling comment that still claimed lists/sets 'remain O(n)-copy carriers and keep the guard'. Seed-emitter import drift (emit_prelude/emit_main_mod_uses/rt_header/extdeps JSON still emit std) is the coherent-whole emitter-fix-needs-2-gens cutover: pre-existing on main (maps PR), tracked against RegenVerifyGate #5873, coordinated with regen lane (loyal-dove-903). Not fixable as isolated import swaps (emitted runtime bodies need focus/push_back/VecCompat + the trait emission itself). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nert-gate hole #1) (#6311) * WIP: Fork of realization * WIP: Fork of realization * WIP: Fork of realization * WIP: Fork of realization * Floor affected-set: non-.dag-only diff is structural-∅, not ignorance (unblock pure-.rs PRs) floor_diff_edits_from_line_ranges refused (Err) when a diff changed only non-.dag files (saw_non_dag && !saw_dag) — reddening the discovery-corpus batch for every pure-.rs PR (seed hand-syncs, Rust-only changes). That conflated a structural-∅ .dag frontier with an ignorance state. Per the operator's arity ruling: a successful git-diff observation whose .dag subset is empty is NOMINAL (present, empty) — the SAME outcome as an empty diff (every row takes the not-affected skip). The only ignorance state is a FAILED observation (UnifiedDiffFail, floor_diff_observe.dag), refused upstream in floor_git_diff_range. This mirrors the function's own departed-.dag-path arm, which already distinguishes structural-∅ (continue) from ignorance (refuse). Fix: drop the saw_non_dag/saw_dag refusal; a non-.dag-only diff falls through to the empty frontier. Observation layer (Ok/Fail + exit code) and the shell docs-only shortcut are unchanged (already correct / downstream- safe). Red control: non_dag_only_diff_is_structural_empty_frontier_not_refusal (was Err, now Ok empty). Also fixes the compile error at 32fac2e (auto-commit captured this edit mid-flight: declarations removed, refusal block not yet dropped). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: Fork of realization * Revert roster registration of test_claim_ownership_movable.rs (blocked by broken regen); keep source_root_ingest V2Tree fix The #6289 witness ownership_movable_test.dag emits test_claim_ownership_movable.rs, which references v1.compiler.ownership symbols (merge_branch_licenses, MoveLicenseAccum, LiveState, move_site_key, ...) that are NOT in the committed v1_compiler_ownership.rs seed. Registering it as a GENERATED file therefore breaks the seed crate's compile (E0432/E0425/E0061) -- 'just register it' cannot land in isolation. Measured blast radius: the fresh self-compile drifts from the committed seed across 33 files (the known-broken regen, emitter bugs #6298), so pulling in the fresh v1_compiler_ownership.rs cascades into the whole regen. Not a scoped fix; parked for the regen project (or exclude the off-auto-path witness from the emit closure). KEPT: the source_root_ingest_gate_passes main-red fix -- emit_source_root_ingest_manifest now imports v2.std.cross_tree.import_model { DagTree, V2Tree }. The manifest emitter hardcodes its import block and missed this when source_root became a grounded SourceRootRef (#5473/#5486), so every witness importing the manifest failed with 'undefined variable V2Tree'. Verified locally: all 3 real_ingest witnesses + the 2 runnable closure witnesses now return true (were compile errors). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Red-control test for source_root_ingest manifest cross_tree import manifest_imports_grounded_source_root_constructors: asserts the emitted manifest imports v2.std.cross_tree.import_model whenever it emits a grounded source_root value -- deleting the import line reddens this test (paired with the CI witness program_assembly_real_ingest_module_roots_parse_holds as the execution oracle). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Resolve merge with main #6269 in floor_diff_edits + manifest emitter The auto-committer flushed the in-progress merge with conflict markers (0b74fe4); this resolves both: - floor_diff_edits_from_line_ranges: keep #6269's v1_attribution_index + added_paths handling; keep the structural-∅ fix (no saw_non_dag/saw_dag refusal -- a non-.dag-only diff is a nominal empty frontier). The two are orthogonal and compose. - emit_source_root_ingest_manifest: take #6269's emit_source_root_ref_import (derives the referenced SourceRootRef constructors from records) over the earlier hardcoded both-constructors line -- same source_root_ingest V2Tree fix, more precise form. Kept both red-control tests; retargeted the structural-∅ test off a src/v1/ path (which #6269 now eagerly resolves via the real workspace tree, unavailable from the unit-test cwd) onto a path-agnostic non-.dag path. Both green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: regen * WIP: regen * Revert inert selective-import filter (ancestry bypasses type_env_for_import) The type_env_for_import specific_names filter was auto-committed to this PR but is a no-op: lookup_binding_by_name reads ancestry_str_bindings, which build_type_env fills from union_parent_type_env_caches (04_infer.dag:5507) and the single-import path (:133) -- both merge each import's full parent.type_env_cache, bypassing type_env_for_import (which only feeds the unused 'parents' field). Measured: dag_collect still resolves un-imported ErrorNode with the filter built in. Reverting so #6311 does not carry a fail-closed illusion; the real fix belongs in the ancestry-cache seam. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Brian Searls <briansrls@gunb.ai> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ontainer-dimension seeds (92->30 verify staleness) (#6322) * WIP: gunb compilation test * Clone-fallback guard: shared-Rc updates refuse by default (fail|count|allow) Operator ruling 2026-07-05: the silent clone arm in the rc_* update family is a degradation that must stop the pipeline, not widen. Every shared-Rc update (rc_map_insert/merge, rc_list_push/concat, rc_set_insert/union) and take_owned_counted's clone arm now routes through rc_shared_update_guard: - GUNBC_CLONE_FALLBACK=fail (default): typed, located panic naming the generated caller (#[track_caller]) — the work-queue key for licensing. - =count: per-site ledger, first-hit line + ranked exit report (Drop on the thread_local), so degradation frequency is observable per §5. - =allow: interim escape hatch. tier-1 compile enumerates 205 degraded sites; top: rc_map_merge at infer_env.rs:413 (14,360 clones), dag_collect.rs:234/239 (5,049 each) — the profiled O(n^2) cold-compile root cause. Template (runtime_rust.dag) and seed (v1_rt.rs) edited in sync, same pattern as #6249. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * Fail-closed hardening: ban escape hatches, close guard bypasses, encode the factory model in DESIGN.md §5 Operator rulings 2026-07-05: - GUNBC_CLONE_FALLBACK=allow removed. Modes are fail (default, refuses) and count (stopped-line audit: full ledger, still not a green run). No mode silences a refusal. - DESIGN.md §5: no-escape-hatches corollary + the factory model as a merge REQUIREMENT — a diff landing a non-fail-closed failure arm (silent widen, fabricated default, uncounted degradation, escape hatch) is a hard reject in review. - 6 inline pre-#6249 `Rc::try_unwrap(..).unwrap_or_else(clone)` fold sites in the generated seed (compile/infer_cycle/resolve x2/ownership/emit_rust) hand-synced to take_owned_counted — the guard's known bypasses closed; regen supersedes the hand-sync. - take_owned_counted count arm ledgered into the same exit report as rc_* (one stopped-line audit surface). - Interpreter: Bool True|False vs Value::Bool cross-representation `==` straddle now refuses (CrossRepresentationEquality), mirroring the numeric arm; DESIGN §5 named it the remaining decidable straddle. Its by-execution receipt joins the cross_representation receipts behind the stopped line. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * WIP: gunb compilation test * WIP: gunb compilation test * Persistent maps: Map realization = im_rc HAMT (one authority with interpreter Value::Map) Root fix for the clone-fallback class on maps (operator go-ahead 2026-07-05). The compiled runtime realized Map as Rc<std HashMap> — O(n) copy on any shared update — while the interpreter already realized Value::Map as im_rc::HashMap (a §3 model↔realization fork). One swap of which HashMap the generated code imports (extdeps/languages/rust/types.dag import row + runtime_rust.dag header + seed hand-sync; type spellings and call sites unchanged): Rc::make_mut's clone arm is now O(1) structural sharing and each insert copies an O(log n) node path — shared update becomes the designed path, so rc_map_insert/rc_map_merge leave the clone-fallback guard (lists and sets keep it until they migrate too). By-execution receipts (frozen-unit cold-compile benchmark): - tier-1: 2.26s -> 0.66s; ledger 205 degraded sites -> 18 (all map sites gone) - tier-10: 239s -> 41.7s (5.7x); 1.74M map clone-fallbacks -> 0 - remaining ledger is exactly rc_list_push/rc_list_concat/rc_set_insert — the named follow-up (List/Set -> persistent carriers need emitter type template work, not just the import row) im-rc serde feature enabled for the artifact-serialization derives; hand seams (cli_run, interpreter, bins, test mods) repointed per direction — host-internal std maps stay std. fmt + clippy -D warnings green across all targets. Run-to-run artifact nondeterminism predates this change (open v2.std.determinism thread), verified by pre-change A/B. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Persistent carriers: lists+sets -> im_rc Vector/OrdSet; delete clone-fallback guard + per-site move licenses Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Fix import order in v2 manual ownership_movable mirror (imports precede items) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * Fix sweep-corrupted emit golden; inhabitant import_path rows prelude-provided (generation-agnostic) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Merge origin/main into session/sharp-wolf-473 Resolves #6269 test-migration collision: accept main's deletion of src/v1/ownership_movable_test.dag (v2 manual mirror carries the license-removal edit); reconcile dag_collect_fingerprint_witness.rs bin with im_rc carriers (hashes -> Rc<im_rc::Vector>, Node children/params via .into()). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Review fixes: interpreter Value::Set -> im_rc::OrdSet; emit_non_empty_wrappers BTreeSet alias; stale guard comment Addresses PR #6307 review findings (cursor/composer-2.5 + claude-opus-4-7): - v1_interpreter.rs: Value::Set was std BTreeSet (forked from runtime im_rc::OrdSet) and deep-cloned on every set_insert/set_union. Migrated to im_rc::OrdSet, closing the live model<->realization fork and the O(n) clone (now O(1) structural + O(log n) COW). Makes runtime_rust.dag's 'one realization with Value::Map/List/Set' true. - 05_emit_rust.dag emit_non_empty_wrappers: std::collections::BTreeSet -> bare BTreeSet alias (matches the seed + prelude OrdSet alias; forward-compatible; kills the bidirectional regen hazard). - v1_rt.rs: fixed the stale rc_map_insert sibling comment that still claimed lists/sets 'remain O(n)-copy carriers and keep the guard'. Seed-emitter import drift (emit_prelude/emit_main_mod_uses/rt_header/extdeps JSON still emit std) is the coherent-whole emitter-fix-needs-2-gens cutover: pre-existing on main (maps PR), tracked against RegenVerifyGate #5873, coordinated with regen lane (loyal-dove-903). Not fixable as isolated import swaps (emitted runtime bodies need focus/push_back/VecCompat + the trait emission itself). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…: one-level visibility by construction (floor resolve 286.7s -> 2.4s) (#6331) * WIP: gunb compilation test * Clone-fallback guard: shared-Rc updates refuse by default (fail|count|allow) Operator ruling 2026-07-05: the silent clone arm in the rc_* update family is a degradation that must stop the pipeline, not widen. Every shared-Rc update (rc_map_insert/merge, rc_list_push/concat, rc_set_insert/union) and take_owned_counted's clone arm now routes through rc_shared_update_guard: - GUNBC_CLONE_FALLBACK=fail (default): typed, located panic naming the generated caller (#[track_caller]) — the work-queue key for licensing. - =count: per-site ledger, first-hit line + ranked exit report (Drop on the thread_local), so degradation frequency is observable per §5. - =allow: interim escape hatch. tier-1 compile enumerates 205 degraded sites; top: rc_map_merge at infer_env.rs:413 (14,360 clones), dag_collect.rs:234/239 (5,049 each) — the profiled O(n^2) cold-compile root cause. Template (runtime_rust.dag) and seed (v1_rt.rs) edited in sync, same pattern as #6249. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * Fail-closed hardening: ban escape hatches, close guard bypasses, encode the factory model in DESIGN.md §5 Operator rulings 2026-07-05: - GUNBC_CLONE_FALLBACK=allow removed. Modes are fail (default, refuses) and count (stopped-line audit: full ledger, still not a green run). No mode silences a refusal. - DESIGN.md §5: no-escape-hatches corollary + the factory model as a merge REQUIREMENT — a diff landing a non-fail-closed failure arm (silent widen, fabricated default, uncounted degradation, escape hatch) is a hard reject in review. - 6 inline pre-#6249 `Rc::try_unwrap(..).unwrap_or_else(clone)` fold sites in the generated seed (compile/infer_cycle/resolve x2/ownership/emit_rust) hand-synced to take_owned_counted — the guard's known bypasses closed; regen supersedes the hand-sync. - take_owned_counted count arm ledgered into the same exit report as rc_* (one stopped-line audit surface). - Interpreter: Bool True|False vs Value::Bool cross-representation `==` straddle now refuses (CrossRepresentationEquality), mirroring the numeric arm; DESIGN §5 named it the remaining decidable straddle. Its by-execution receipt joins the cross_representation receipts behind the stopped line. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * WIP: gunb compilation test * WIP: gunb compilation test * Persistent maps: Map realization = im_rc HAMT (one authority with interpreter Value::Map) Root fix for the clone-fallback class on maps (operator go-ahead 2026-07-05). The compiled runtime realized Map as Rc<std HashMap> — O(n) copy on any shared update — while the interpreter already realized Value::Map as im_rc::HashMap (a §3 model↔realization fork). One swap of which HashMap the generated code imports (extdeps/languages/rust/types.dag import row + runtime_rust.dag header + seed hand-sync; type spellings and call sites unchanged): Rc::make_mut's clone arm is now O(1) structural sharing and each insert copies an O(log n) node path — shared update becomes the designed path, so rc_map_insert/rc_map_merge leave the clone-fallback guard (lists and sets keep it until they migrate too). By-execution receipts (frozen-unit cold-compile benchmark): - tier-1: 2.26s -> 0.66s; ledger 205 degraded sites -> 18 (all map sites gone) - tier-10: 239s -> 41.7s (5.7x); 1.74M map clone-fallbacks -> 0 - remaining ledger is exactly rc_list_push/rc_list_concat/rc_set_insert — the named follow-up (List/Set -> persistent carriers need emitter type template work, not just the import row) im-rc serde feature enabled for the artifact-serialization derives; hand seams (cli_run, interpreter, bins, test mods) repointed per direction — host-internal std maps stay std. fmt + clippy -D warnings green across all targets. Run-to-run artifact nondeterminism predates this change (open v2.std.determinism thread), verified by pre-change A/B. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Persistent carriers: lists+sets -> im_rc Vector/OrdSet; delete clone-fallback guard + per-site move licenses Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Fix import order in v2 manual ownership_movable mirror (imports precede items) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * Fix sweep-corrupted emit golden; inhabitant import_path rows prelude-provided (generation-agnostic) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Merge origin/main into session/sharp-wolf-473 Resolves #6269 test-migration collision: accept main's deletion of src/v1/ownership_movable_test.dag (v2 manual mirror carries the license-removal edit); reconcile dag_collect_fingerprint_witness.rs bin with im_rc carriers (hashes -> Rc<im_rc::Vector>, Node children/params via .into()). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Review fixes: interpreter Value::Set -> im_rc::OrdSet; emit_non_empty_wrappers BTreeSet alias; stale guard comment Addresses PR #6307 review findings (cursor/composer-2.5 + claude-opus-4-7): - v1_interpreter.rs: Value::Set was std BTreeSet (forked from runtime im_rc::OrdSet) and deep-cloned on every set_insert/set_union. Migrated to im_rc::OrdSet, closing the live model<->realization fork and the O(n) clone (now O(1) structural + O(log n) COW). Makes runtime_rust.dag's 'one realization with Value::Map/List/Set' true. - 05_emit_rust.dag emit_non_empty_wrappers: std::collections::BTreeSet -> bare BTreeSet alias (matches the seed + prelude OrdSet alias; forward-compatible; kills the bidirectional regen hazard). - v1_rt.rs: fixed the stale rc_map_insert sibling comment that still claimed lists/sets 'remain O(n)-copy carriers and keep the guard'. Seed-emitter import drift (emit_prelude/emit_main_mod_uses/rt_header/extdeps JSON still emit std) is the coherent-whole emitter-fix-needs-2-gens cutover: pre-existing on main (maps PR), tracked against RegenVerifyGate #5873, coordinated with regen lane (loyal-dove-903). Not fixable as isolated import swaps (emitted runtime bodies need focus/push_back/VecCompat + the trait emission itself). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Revert speculative import addition in network_identity_subsumption (refusal is a pre-existing alias-expansion deficit, A/B-verified on the pre-diff binary) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * Back-port #6329's operator-signed DESIGN.md edits into design_document.dag; corpus import hygiene; artifact regens The compile-clean and artifact-drift gates, unmasked by #6331's floor speedup, found accumulated debt: 43 unlisted-import diagnostics (12 files, mechanical import-list additions), the network_identity param typed to the alias it actually receives (DhcpClientHostNameOption12), and DESIGN.md drifted from its generating authority because #6329 hand-edited the artifact without back-porting (receipt: main_wet now regenerates DESIGN.md byte-identical to the committed operator-signed version). falsifier.yml/.gitignore regens are main_wet output. The complexity_r1 citation-string repoints are reverted out of this PR: touching those files enrolls a fixture whose lens hits a pre-existing fold_list lambda-param typing deficit (no field 'label' on 'T'); moved to follow-up with that deficit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * complexity_r1 lens: type the children fold on the demand path (builtin fold idiom); keep truthful post-deletion citations The diff-scoped discovery frontier (enrolled via the v2.std.diagnostic import fix) demand-resolves this lens; fold_list<T,A> over n.children left T un-instantiated on that path (no field 'label' on 'T') while batch reconcile typed it fine — a batch/demand inference divergence. The children fold now uses the builtin fold idiom fact_density.dag already uses (resolves on both paths, receipt: complexity_r1_green_merge_envs_base_holds witness green by execution); the registry fold_list over a concrete FreeMonoid in the same module types fine and stays. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * Revert "WIP: emit -> realization" This reverts commit 3ad16c9. * WIP: emit -> realization --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* WIP: gunb compilation test * Clone-fallback guard: shared-Rc updates refuse by default (fail|count|allow) Operator ruling 2026-07-05: the silent clone arm in the rc_* update family is a degradation that must stop the pipeline, not widen. Every shared-Rc update (rc_map_insert/merge, rc_list_push/concat, rc_set_insert/union) and take_owned_counted's clone arm now routes through rc_shared_update_guard: - GUNBC_CLONE_FALLBACK=fail (default): typed, located panic naming the generated caller (#[track_caller]) — the work-queue key for licensing. - =count: per-site ledger, first-hit line + ranked exit report (Drop on the thread_local), so degradation frequency is observable per §5. - =allow: interim escape hatch. tier-1 compile enumerates 205 degraded sites; top: rc_map_merge at infer_env.rs:413 (14,360 clones), dag_collect.rs:234/239 (5,049 each) — the profiled O(n^2) cold-compile root cause. Template (runtime_rust.dag) and seed (v1_rt.rs) edited in sync, same pattern as #6249. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * Fail-closed hardening: ban escape hatches, close guard bypasses, encode the factory model in DESIGN.md §5 Operator rulings 2026-07-05: - GUNBC_CLONE_FALLBACK=allow removed. Modes are fail (default, refuses) and count (stopped-line audit: full ledger, still not a green run). No mode silences a refusal. - DESIGN.md §5: no-escape-hatches corollary + the factory model as a merge REQUIREMENT — a diff landing a non-fail-closed failure arm (silent widen, fabricated default, uncounted degradation, escape hatch) is a hard reject in review. - 6 inline pre-#6249 `Rc::try_unwrap(..).unwrap_or_else(clone)` fold sites in the generated seed (compile/infer_cycle/resolve x2/ownership/emit_rust) hand-synced to take_owned_counted — the guard's known bypasses closed; regen supersedes the hand-sync. - take_owned_counted count arm ledgered into the same exit report as rc_* (one stopped-line audit surface). - Interpreter: Bool True|False vs Value::Bool cross-representation `==` straddle now refuses (CrossRepresentationEquality), mirroring the numeric arm; DESIGN §5 named it the remaining decidable straddle. Its by-execution receipt joins the cross_representation receipts behind the stopped line. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * WIP: gunb compilation test * WIP: gunb compilation test * Persistent maps: Map realization = im_rc HAMT (one authority with interpreter Value::Map) Root fix for the clone-fallback class on maps (operator go-ahead 2026-07-05). The compiled runtime realized Map as Rc<std HashMap> — O(n) copy on any shared update — while the interpreter already realized Value::Map as im_rc::HashMap (a §3 model↔realization fork). One swap of which HashMap the generated code imports (extdeps/languages/rust/types.dag import row + runtime_rust.dag header + seed hand-sync; type spellings and call sites unchanged): Rc::make_mut's clone arm is now O(1) structural sharing and each insert copies an O(log n) node path — shared update becomes the designed path, so rc_map_insert/rc_map_merge leave the clone-fallback guard (lists and sets keep it until they migrate too). By-execution receipts (frozen-unit cold-compile benchmark): - tier-1: 2.26s -> 0.66s; ledger 205 degraded sites -> 18 (all map sites gone) - tier-10: 239s -> 41.7s (5.7x); 1.74M map clone-fallbacks -> 0 - remaining ledger is exactly rc_list_push/rc_list_concat/rc_set_insert — the named follow-up (List/Set -> persistent carriers need emitter type template work, not just the import row) im-rc serde feature enabled for the artifact-serialization derives; hand seams (cli_run, interpreter, bins, test mods) repointed per direction — host-internal std maps stay std. fmt + clippy -D warnings green across all targets. Run-to-run artifact nondeterminism predates this change (open v2.std.determinism thread), verified by pre-change A/B. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Persistent carriers: lists+sets -> im_rc Vector/OrdSet; delete clone-fallback guard + per-site move licenses Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Fix import order in v2 manual ownership_movable mirror (imports precede items) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * Fix sweep-corrupted emit golden; inhabitant import_path rows prelude-provided (generation-agnostic) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Merge origin/main into session/sharp-wolf-473 Resolves #6269 test-migration collision: accept main's deletion of src/v1/ownership_movable_test.dag (v2 manual mirror carries the license-removal edit); reconcile dag_collect_fingerprint_witness.rs bin with im_rc carriers (hashes -> Rc<im_rc::Vector>, Node children/params via .into()). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Review fixes: interpreter Value::Set -> im_rc::OrdSet; emit_non_empty_wrappers BTreeSet alias; stale guard comment Addresses PR #6307 review findings (cursor/composer-2.5 + claude-opus-4-7): - v1_interpreter.rs: Value::Set was std BTreeSet (forked from runtime im_rc::OrdSet) and deep-cloned on every set_insert/set_union. Migrated to im_rc::OrdSet, closing the live model<->realization fork and the O(n) clone (now O(1) structural + O(log n) COW). Makes runtime_rust.dag's 'one realization with Value::Map/List/Set' true. - 05_emit_rust.dag emit_non_empty_wrappers: std::collections::BTreeSet -> bare BTreeSet alias (matches the seed + prelude OrdSet alias; forward-compatible; kills the bidirectional regen hazard). - v1_rt.rs: fixed the stale rc_map_insert sibling comment that still claimed lists/sets 'remain O(n)-copy carriers and keep the guard'. Seed-emitter import drift (emit_prelude/emit_main_mod_uses/rt_header/extdeps JSON still emit std) is the coherent-whole emitter-fix-needs-2-gens cutover: pre-existing on main (maps PR), tracked against RegenVerifyGate #5873, coordinated with regen lane (loyal-dove-903). Not fixable as isolated import swaps (emitted runtime bodies need focus/push_back/VecCompat + the trait emission itself). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Revert speculative import addition in network_identity_subsumption (refusal is a pre-existing alias-expansion deficit, A/B-verified on the pre-diff binary) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * Back-port #6329's operator-signed DESIGN.md edits into design_document.dag; corpus import hygiene; artifact regens The compile-clean and artifact-drift gates, unmasked by #6331's floor speedup, found accumulated debt: 43 unlisted-import diagnostics (12 files, mechanical import-list additions), the network_identity param typed to the alias it actually receives (DhcpClientHostNameOption12), and DESIGN.md drifted from its generating authority because #6329 hand-edited the artifact without back-porting (receipt: main_wet now regenerates DESIGN.md byte-identical to the committed operator-signed version). falsifier.yml/.gitignore regens are main_wet output. The complexity_r1 citation-string repoints are reverted out of this PR: touching those files enrolls a fixture whose lens hits a pre-existing fold_list lambda-param typing deficit (no field 'label' on 'T'); moved to follow-up with that deficit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * complexity_r1 lens: type the children fold on the demand path (builtin fold idiom); keep truthful post-deletion citations The diff-scoped discovery frontier (enrolled via the v2.std.diagnostic import fix) demand-resolves this lens; fold_list<T,A> over n.children left T un-instantiated on that path (no field 'label' on 'T') while batch reconcile typed it fine — a batch/demand inference divergence. The children fold now uses the builtin fold idiom fact_density.dag already uses (resolves on both paths, receipt: complexity_r1_green_merge_envs_base_holds witness green by execution); the registry fold_list over a concrete FreeMonoid in the same module types fine and stays. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * Revert "WIP: emit -> realization" This reverts commit 3ad16c9. * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * intern_str build-green: list-get resolves Optional via free_monoid_collection get template Root cause of the list-get-by-index inference deficit: free_monoid_collection_templates (the List method table in dag/std/algebra.dag) declared first/last returning OptionalOf<ReceiverElement> but had NO get row — so `list |> get(index)` never resolved structurally and its result type defaulted to the receiver (FreeMonoid), leaving the match Bind arm un-Some-wrapped. Map-get works because PartialFunction declares get: fn(K) -> V?. - dag/std/algebra.dag: add get: [ReceiverSelf, Int] -> OptionalOf<ReceiverElement> row, mirroring the existing first/last rows (completes the model, mints nothing). [already committed] - src/v1/stage0/src/std_algebra.rs: splice the get template into the seed so the running binary's inference resolves list-get as Optional. - src/v1/00_core.dag: intern_str now matches explicit Present/Absent (was catch-all `other => other` which binds the whole Option); emits Some(s)/None, builds green. Fresh-crate cargo check: 26 -> 2 errors; the 2 remaining are the single std_integer Nat where-refinement alias-resolution root (Nat<Magnitude>). intern_str builds. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
… gate) + sorted_map_keys builtin (#6357) * WIP: gunb compilation test * Clone-fallback guard: shared-Rc updates refuse by default (fail|count|allow) Operator ruling 2026-07-05: the silent clone arm in the rc_* update family is a degradation that must stop the pipeline, not widen. Every shared-Rc update (rc_map_insert/merge, rc_list_push/concat, rc_set_insert/union) and take_owned_counted's clone arm now routes through rc_shared_update_guard: - GUNBC_CLONE_FALLBACK=fail (default): typed, located panic naming the generated caller (#[track_caller]) — the work-queue key for licensing. - =count: per-site ledger, first-hit line + ranked exit report (Drop on the thread_local), so degradation frequency is observable per §5. - =allow: interim escape hatch. tier-1 compile enumerates 205 degraded sites; top: rc_map_merge at infer_env.rs:413 (14,360 clones), dag_collect.rs:234/239 (5,049 each) — the profiled O(n^2) cold-compile root cause. Template (runtime_rust.dag) and seed (v1_rt.rs) edited in sync, same pattern as #6249. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * Fail-closed hardening: ban escape hatches, close guard bypasses, encode the factory model in DESIGN.md §5 Operator rulings 2026-07-05: - GUNBC_CLONE_FALLBACK=allow removed. Modes are fail (default, refuses) and count (stopped-line audit: full ledger, still not a green run). No mode silences a refusal. - DESIGN.md §5: no-escape-hatches corollary + the factory model as a merge REQUIREMENT — a diff landing a non-fail-closed failure arm (silent widen, fabricated default, uncounted degradation, escape hatch) is a hard reject in review. - 6 inline pre-#6249 `Rc::try_unwrap(..).unwrap_or_else(clone)` fold sites in the generated seed (compile/infer_cycle/resolve x2/ownership/emit_rust) hand-synced to take_owned_counted — the guard's known bypasses closed; regen supersedes the hand-sync. - take_owned_counted count arm ledgered into the same exit report as rc_* (one stopped-line audit surface). - Interpreter: Bool True|False vs Value::Bool cross-representation `==` straddle now refuses (CrossRepresentationEquality), mirroring the numeric arm; DESIGN §5 named it the remaining decidable straddle. Its by-execution receipt joins the cross_representation receipts behind the stopped line. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: gunb compilation test * WIP: gunb compilation test * WIP: gunb compilation test * Persistent maps: Map realization = im_rc HAMT (one authority with interpreter Value::Map) Root fix for the clone-fallback class on maps (operator go-ahead 2026-07-05). The compiled runtime realized Map as Rc<std HashMap> — O(n) copy on any shared update — while the interpreter already realized Value::Map as im_rc::HashMap (a §3 model↔realization fork). One swap of which HashMap the generated code imports (extdeps/languages/rust/types.dag import row + runtime_rust.dag header + seed hand-sync; type spellings and call sites unchanged): Rc::make_mut's clone arm is now O(1) structural sharing and each insert copies an O(log n) node path — shared update becomes the designed path, so rc_map_insert/rc_map_merge leave the clone-fallback guard (lists and sets keep it until they migrate too). By-execution receipts (frozen-unit cold-compile benchmark): - tier-1: 2.26s -> 0.66s; ledger 205 degraded sites -> 18 (all map sites gone) - tier-10: 239s -> 41.7s (5.7x); 1.74M map clone-fallbacks -> 0 - remaining ledger is exactly rc_list_push/rc_list_concat/rc_set_insert — the named follow-up (List/Set -> persistent carriers need emitter type template work, not just the import row) im-rc serde feature enabled for the artifact-serialization derives; hand seams (cli_run, interpreter, bins, test mods) repointed per direction — host-internal std maps stay std. fmt + clippy -D warnings green across all targets. Run-to-run artifact nondeterminism predates this change (open v2.std.determinism thread), verified by pre-change A/B. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Persistent carriers: lists+sets -> im_rc Vector/OrdSet; delete clone-fallback guard + per-site move licenses Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Fix import order in v2 manual ownership_movable mirror (imports precede items) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * Fix sweep-corrupted emit golden; inhabitant import_path rows prelude-provided (generation-agnostic) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Merge origin/main into session/sharp-wolf-473 Resolves #6269 test-migration collision: accept main's deletion of src/v1/ownership_movable_test.dag (v2 manual mirror carries the license-removal edit); reconcile dag_collect_fingerprint_witness.rs bin with im_rc carriers (hashes -> Rc<im_rc::Vector>, Node children/params via .into()). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Review fixes: interpreter Value::Set -> im_rc::OrdSet; emit_non_empty_wrappers BTreeSet alias; stale guard comment Addresses PR #6307 review findings (cursor/composer-2.5 + claude-opus-4-7): - v1_interpreter.rs: Value::Set was std BTreeSet (forked from runtime im_rc::OrdSet) and deep-cloned on every set_insert/set_union. Migrated to im_rc::OrdSet, closing the live model<->realization fork and the O(n) clone (now O(1) structural + O(log n) COW). Makes runtime_rust.dag's 'one realization with Value::Map/List/Set' true. - 05_emit_rust.dag emit_non_empty_wrappers: std::collections::BTreeSet -> bare BTreeSet alias (matches the seed + prelude OrdSet alias; forward-compatible; kills the bidirectional regen hazard). - v1_rt.rs: fixed the stale rc_map_insert sibling comment that still claimed lists/sets 'remain O(n)-copy carriers and keep the guard'. Seed-emitter import drift (emit_prelude/emit_main_mod_uses/rt_header/extdeps JSON still emit std) is the coherent-whole emitter-fix-needs-2-gens cutover: pre-existing on main (maps PR), tracked against RegenVerifyGate #5873, coordinated with regen lane (loyal-dove-903). Not fixable as isolated import swaps (emitted runtime bodies need focus/push_back/VecCompat + the trait emission itself). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * Revert speculative import addition in network_identity_subsumption (refusal is a pre-existing alias-expansion deficit, A/B-verified on the pre-diff binary) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * Back-port #6329's operator-signed DESIGN.md edits into design_document.dag; corpus import hygiene; artifact regens The compile-clean and artifact-drift gates, unmasked by #6331's floor speedup, found accumulated debt: 43 unlisted-import diagnostics (12 files, mechanical import-list additions), the network_identity param typed to the alias it actually receives (DhcpClientHostNameOption12), and DESIGN.md drifted from its generating authority because #6329 hand-edited the artifact without back-porting (receipt: main_wet now regenerates DESIGN.md byte-identical to the committed operator-signed version). falsifier.yml/.gitignore regens are main_wet output. The complexity_r1 citation-string repoints are reverted out of this PR: touching those files enrolls a fixture whose lens hits a pre-existing fold_list lambda-param typing deficit (no field 'label' on 'T'); moved to follow-up with that deficit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * complexity_r1 lens: type the children fold on the demand path (builtin fold idiom); keep truthful post-deletion citations The diff-scoped discovery frontier (enrolled via the v2.std.diagnostic import fix) demand-resolves this lens; fold_list<T,A> over n.children left T un-instantiated on that path (no field 'label' on 'T') while batch reconcile typed it fine — a batch/demand inference divergence. The children fold now uses the builtin fold idiom fact_density.dag already uses (resolves on both paths, receipt: complexity_r1_green_merge_envs_base_holds witness green by execution); the registry fold_list over a concrete FreeMonoid in the same module types fine and stays. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: emit -> realization * Revert "WIP: emit -> realization" This reverts commit 3ad16c9. * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * intern_str build-green: list-get resolves Optional via free_monoid_collection get template Root cause of the list-get-by-index inference deficit: free_monoid_collection_templates (the List method table in dag/std/algebra.dag) declared first/last returning OptionalOf<ReceiverElement> but had NO get row — so `list |> get(index)` never resolved structurally and its result type defaulted to the receiver (FreeMonoid), leaving the match Bind arm un-Some-wrapped. Map-get works because PartialFunction declares get: fn(K) -> V?. - dag/std/algebra.dag: add get: [ReceiverSelf, Int] -> OptionalOf<ReceiverElement> row, mirroring the existing first/last rows (completes the model, mints nothing). [already committed] - src/v1/stage0/src/std_algebra.rs: splice the get template into the seed so the running binary's inference resolves list-get as Optional. - src/v1/00_core.dag: intern_str now matches explicit Present/Absent (was catch-all `other => other` which binds the whole Option); emits Some(s)/None, builds green. Fresh-crate cargo check: 26 -> 2 errors; the 2 remaining are the single std_integer Nat where-refinement alias-resolution root (Nat<Magnitude>). intern_str builds. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: emit -> realization * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * seed-prime: sorted_map_keys builtin (registry + bridge + runtime generator) Functional gen-0' prime of the new sorted_map_keys builtin across the 3 remaining seed twins (v1_rt.rs fn + infer arms already present): - v1_compiler_infer_method.rs: builtin_function_registry row (type = list of collection_element, mirrors map_keys) - extdeps_languages_rust_emit.rs: rt bridge row (passes_by_ref+wraps_result, mirrors map_keys) - v1_compiler_runtime_rust.rs: runtime-generator emits the fn body after map_keys Enables the 2-gen bootstrap: regen_stage0 built from this seed can resolve/ emit sorted_map_keys, so a fresh regen produces the canonical seed. Ordering within gen-0' is irrelevant; canonical order comes from runtime_rust.dag:177. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * WIP: realization (SymbolIndex) * fix: .dag emits im-rc dep + qualified std::collections::BTreeSet for stage0_core/emit_core boundary files (workspace build) * test: build_movable_set 2-arg (empty param_names) — align stale test with .dag authority The .dag defines build_movable_set(proof, param_names) as 2-arg; main's seed carried a stale 1-arg divergence and pipeline.rs was written against it. accept-fresh correctly converged the seed to the 2-arg .dag form, so the hand-maintained test crate call needed updating. param_names only extends movability to sole-owned params; empty set = the param-blind count the movable_but_cloned<=45 ratchet was calibrated against. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Brian Searls <briansrls@gunb.ai>
Summary
Migrates two migrate-class v1 test modules to exact-stem floor witnesses, then deletes the Rust modules:
dag_collect_fingerprint_witness_test.rs(11#[test]fns, 213 LOC) →dag/test/claim/dag_collect_fingerprint_witness_test.dag+ host-physics binparse.rs(52#[test]fns, 915 LOC) →dag/test/claim/parse_test.dag+ host-physics bin (floor suite: 44 checks; perf suite: 7 checks)Net debt shrink: −11 modules / −63
#[test]fns from thev2.lens.test_migration_debtroster (parse stem + dag_collect_fingerprint_witness stem). Not carried:parse_multiline_pipe_chainwas#[ignore]d(40s hang, never run in CI).Host-seam precedent (instrumental, dies with src/v1)
This follows the established witness-transport pattern already in-tree — thin
.dagfloor witnesses indag/test/claim/*_test.dagthat calltools.*_witness_transport.dagshells, which build/run a pinnedsrc/v1/stage0bin viatools.host_prelude(bootstrap_witness,diagnostics_witness,infer_semantics_witness,effects_rest_transport_witness, …). v2 eval cannot execute the v1 parser/tokenizer/dag_collect surfaces these tests exercise, so host physics is the honest seam until those APIs are witness-layer importable.No new hand-Rust pattern is minted — only two new rows on the existing transport roster (
dag/tools/dag_collect_fingerprint_witness_transport.dag,dag/tools/parse_witness_transport.dag) plus their bins. Both are registered inrealization_vocab_exception_rosterlike every other*_witness_transport.dag.Cargo.toml
[[bin]]+13 lines — reconciliationThe
+13insrc/v1/stage0/Cargo.tomlis two new[[bin]]registrations (dag_collect_fingerprint_witness,parse_witness). The.rssources did not previously exist as stage0 bins — they lived as#[test]modules undersrc/v1/tests/src/. Migration path: relocate test oracle logic intosrc/v1/stage0/src/bin/*_witness.rs(same code,main()+ suite dispatch), register the bin, wire transport + floor.dagwitness, delete v1 module. This is relocation, not extending a pre-existing bin.parse_witnessbuild uses--features text_lookup_work_counter(viaensure_parse_witness_built) because the perf-suite lookup/scale tests readv1_rt::take_text_lookup_chars_walked()— the counter is a no-op without that feature (same featurev1-compiler-testsalready enables).Fixes in this branch
dag_collect_fingerprint_witness: calldag_collect_fp_memo_reset()between cases (memo keyed byRcpointer reuse made Conj order-insensitivity fail when the full suite ran in one process; individual#[test]fns passed because cargo test ordering differed).cargo fmton witness bins;cargo clippy -p v1-compiler --bins -D warningsclean.Test plan
cargo fmt --all --checkcargo clippy -p v1-compiler --bins -- -D warningscargo build -p v1-compiler --release --features text_lookup_work_counter --bin dag_collect_fingerprint_witness --bin parse_witness./target/release/dag_collect_fingerprint_witness(11/11)./target/release/parse_witness --suite floor(44/44)./target/release/parse_witness --suite perf(7/7)claim_batch --entry dag/test/claim/dag_collect_fingerprint_witness_test.dag --functions dag_collect_fingerprint_witness_keystone_holds→ PASSclaim_batch --entry dag/test/claim/parse_test.dag --functions parse_witness_floor_holds,parse_witness_perf_holds→ PASS