Repository navigation
QualifiedName de-fork: v2 authority = FreeMonoid<Symbol> + v1 seed bridge made generic - #6195
Merged
Merged
Conversation
…oupling - Dissolved type QualifiedName = FreeMonoid<Symbol>; deleted qualified_name_eq/for_all/singleton. - Migrated ~22 consumers (imports, QnEmpty/QnCons→Empty/Cons, eq→==, for_all→for_all). - == gate PROVEN green (freemonoid_eq_witness_test): structural == matches old qualified_name_eq, no straddle. - Rewrote 2 FreeMonoid raw-tail-match sites (qn_fold_step, layer_prefix) to list_head idiom (recursive tail raw-match still hits the #5552 'variant not found in type FreeMonoid' resolver gap). BLOCKER: brief's 'QualifiedName is v2-ONLY' premise is FALSE. v1 Rust seed hardcodes QnEmpty/QnCons tags in host builtins (cli_run.rs qualified_name_value_{from_dotted_string,to_module_path}, v1_interpreter.rs, external_authority_project.rs x7, emit_qualified_name_dag). Runtime produces QnCons Values → .dag now expects Empty/Cons → non-exhaustive crash. Completing needs lockstep seed edits (cli_run.rs is #6046-gated). Reported to operator; not touching seed unilaterally. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… over FreeMonoid<Symbol>) Per operator re-scope (v2-only premise was false; this is a v2-authority + v1-seed-realization de-fork): Seed (src/v1/stage0/src/): the three QualifiedName-specific host builtins are now GENERIC FreeMonoid<Symbol> marshaling — seed no longer knows QualifiedName/QnEmpty/QnCons as a domain: - qualified_name_value_from_dotted_string -> free_monoid_symbol_value_from_dotted_string (type_name FreeMonoid, variants Empty/Cons) - qualified_name_value_to_module_path -> free_monoid_symbol_value_to_dotted_string (matches Empty/Cons) - emit_qualified_name_dag -> free_monoid_symbol_emit_dag (emits Empty/Cons + algebra import) all callers (coproduct_reflection, external_authority_project x7, v1_interpreter) updated. Bounded: no resolver changes, no broad cli_run cleanup. .dag-facing std fn name kept. Verified by execution (rebuilt seed): == gate green; dotted-string round-trip green through the generic bridge; layer_prefix green; external-authority corpus witnesses green; Rust manifest host emit round-trip test green (3/3). Docs corrected (§8): fold-ergonomics.md, dag-v2-defork-audit.md + .dag twin now state #5552 fixed SIMPLE generic-alias instantiation; recursive-tail raw-match remains a resolver gap avoided via the list_head/algebra idiom. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Local full-corpus compile-clean gate: PASS. Since the That is the exact floor gate ( So the only red signal on this PR is the structural dark-CI timeout, not a real failure. — sent from smart-crab-896 |
This was referenced Jul 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
QualifiedName de-fork (v2 authority + v1 seed realization)
Dissolves the hand-rolled
QualifiedNamecoproduct into the singleFreeMonoid<Symbol>authority. Re-scoped from the original "v2-only" brief — investigation proved that premise false: the v1 Rust seed hardcodedQnEmpty/QnConsin host builtins (construct + consume + emit), so this is necessarily a v2-authority + v1-seed-realization de-fork.v2
.dagtype QualifiedName = FreeMonoid<Symbol>; deleted the hand-rolled trio (qualified_name_eq/for_all/singleton) →FreeMonoidops + structural==.QnEmpty/QnCons→Empty/Cons,eq→==,for_all→algebrafor_all).qn_fold_step,layer_prefix) rewritten to thelist_headidiom — see resolver-gap note below.v1 seed — no longer knows
QualifiedName/QnEmpty/QnConsas a domainThe three QualifiedName-specific host builtins are now generic
FreeMonoid<Symbol>marshaling (type_nameFreeMonoid, variantsEmpty/Cons):qualified_name_value_from_dotted_string→free_monoid_symbol_value_from_dotted_stringqualified_name_value_to_module_path→free_monoid_symbol_value_to_dotted_stringemit_qualified_name_dag→free_monoid_symbol_emit_dagAll callers (
coproduct_reflection,external_authority_project×7,v1_interpreter) updated. Bounded: no resolver changes, no broad cli_run cleanup. The.dag-facing std fn name is kept (it returns a genericFreeMonoid<Symbol>).Verified by execution (rebuilt seed)
==gate green + discriminating (freemonoid_eq_witness_test.dag): equal→true, differing/prefix/empty→false, no native/modeled straddle.layer_prefixgreen.primary-precedence): pending (running locally).Resolver-gap note (docs corrected)
#5552fixed simple generic-alias instantiation (construct/match/use-site). Raw variant-matching a value bound from a recursiveCons.tailfield still hits"variant not found in type FreeMonoid"(04_infergap) — avoided here via thelist_head/algebra idiom that allFreeMonoidconsumers already use.fold-ergonomics.md,dag-v2-defork-audit.md(+.dagtwin) corrected.Net concepts drop
Old
QualifiedNamecoproduct + helper trio removed; no new parallel authority (the seed helpers are genericFreeMonoidmarshaling, not a QualifiedName bridge).🤖 Generated with Claude Code