Repository navigation
decl_ref constructors move to std.decl_ref: dissolve the parallel-lane fork that reds shared closures - #7612
Conversation
…e fork that reds shared closures std.primitive_identity (#7549) and std.roster_frontier each minted identical fn decl_ref / decl_field_ref beside std.decl_ref, which owned the type but no constructor. v1-seed fn names are not module-scoped, so any resolve pool containing both modules refused every bare decl_ref reference as ambiguous — six such refusals in the primitive_identity_join witness closure on current main, blocking unrelated PR floors. The constructors now live once beside their type; both former minters and all 13 importers repoint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
regen_stage0 over the updated dag closure — the constructors' single authority now emits with its module (110 files regenerated, 1 drifted). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… 46502) The module is import-free; its bare decl_ref calls resolve from std.decl_ref — the same pool source its DeclarationRef type references already use. All 27 host_standup spine + assimilation witness fns green by execution; not in the emitted stage0 set, so the regen fixed point is untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Addressed the REQUEST_CHANGES from review 46502: the duplicate constructor at dag/gunbc/host_standup.dag is deleted in 8a74095. A full-tree sweep confirms std.decl_ref is now the only definition site of fn decl_ref / decl_field_ref (disposition_redundancy's decl_ref_eq is a distinct comparator, not a copy). host_standup is an import-free module, so no import was added — its bare decl_ref calls resolve from the same pool source its DeclarationRef type references already use. Receipts: all 27 host_standup spine + assimilation-deduction witness fns green by execution; compile-clean 0 blocking; the module is not in the emitted stage0 set, so the regen fixed point is untouched. — sent from sleek-tern-275 |
…ves onto the single authority Main's #7614 dodged the two-duplicate ambiguity by qualifying calls as std.primitive_identity.decl_ref; this branch deletes that duplicate, so the six qualified calls repoint to the bare constructor imported from std.decl_ref — the qualification workaround dissolves with the fork. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…view 46764) Fresh regen_stage0 on the merged tree (the earlier pass used a pre-#7585 stale binary whose escape handling produced a phantom v1_compiler_infer drift — rebuilt, rerun, gone). One honest drift: the roster_frontier seed no longer carries the constructor pair, so the emitted Rust matches its .dag source (DESIGN §7). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Addressed review 46764: fresh regen on the merged tree lands in fd94366 — src/v1/stage0/src/std_roster_frontier.rs drops the constructor pair (+1/−22), so the seed matches its .dag source and std.decl_ref is the sole definition site in both representations. Root cause of the miss: my first regen ran before the main merge brought #7571's regenerated seed back in, and a second regen attempt used a stale pre-#7585 regen_stage0 binary that produced a phantom unicode-escape drift in v1_compiler_infer.rs — rebuilt the bin, reran, and the only remaining drift was the honest one, now committed. — sent from sleek-tern-275 |
What
Two parallel lanes each minted an identical
fn decl_ref/fn decl_field_refconstructor pair on the same day (2026-08-01):std.primitive_identity(#7549) andstd.roster_frontier. Because v1-seed fn names are not module-scoped, any resolve closure containing both modules refuses every baredecl_refreference as an ambiguous decl_ref — this is the current-main floor red that has been failing #7571's runs through no fault of that branch (6 ambiguous refusals in theprimitive_identity_join_witness_testclosure).This PR dissolves the fork at its §3 home: the constructors move to
std.decl_ref, beside theDeclarationReftype they construct, withdecl_ref_constructor_authority_noterecording the incident. Both duplicates delete; 13 importers repoint fromstd.roster_frontiertostd.decl_ref.Net −70 lines (+47/−117 across 17 files) — a de-fork, as it should be.
Why it reds main today
dag/std/primitive_identity.dag(merged Primitive identity join D0: five-surface census and join refusals #7549) anddag/std/roster_frontier.dagboth declared top-levelfn decl_ref(module_path, decl_name)andfn decl_field_ref(...).stdmodules.Witness receipts (by execution, release binary, this branch)
dag/test/claim/primitive_identity_join_witness_test.dag— all 15 test fns green:truetruedag/test/claim/roster_frontier_annotation_witness_test.dag— 5/5 green (census_closure_frontier_rows_count_is_twenty_one, rows_well_formed, and the three frontier_expiry fns).Compile-clean: all repointed importer entries compile with 0 blocking diagnostics (
gunbc compile --target dag).Unblocks
#7571's floor: its recurring red is this main-side fork, not its own diff. Once this merges, #7571's next floor run is meaningful.
🤖 Generated with Claude Code