Repository navigation
σ-family lens (intent-linearity ChangeTime wall): red on live corpus, table-driven dedup, green — end-to-end demo - #6336
Conversation
…s counted overlap residue grammar_validate_for_parse rejected ANY choice-FIRST overlap, but dag_wave1 carries 5 non-nullable overlap rows (expr, arg, match_arm, field_pattern, if_expr) - canonical non-LL(1) choice points its own runtime handles via parse_choice_residue_backtrack. Result on main: parse_module refused every input (receipt: exp_nest_d1_parse_holds false, probe module parse rejected with 5x parse_grammar_choice_ambiguity), invisible under dark CI, while the backtrack arm sat dead. Split the states instead of conflating them (state-space conflation): - both_nullable=true rows: genuine ambiguity, still Rejected (fail-closed); new red control claim_validate_rejects_nullable_choice_ambiguity. - both_nullable=false rows: Accepted with counted typed residue diagnostics (reason parse_grammar_choice_overlap_residue, one per row), threaded through parse_module via diagnostics_merge / rejected_with_pending - no silent drop. - disjoint choice: residue None (claim_disjoint_choice_validate_residue_none discriminates residue from clean). Claims re-derived by execution: dag_wave1 validate accepts, zero nullable ambiguity, residue pinned at 5; python_wave1 validates and its MVP-1 fixture now parses end-to-end (residue 1); exp_nest_d1/exp_elseif_k4 true again. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…iven dedup, planted red control
…ew the time cap) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
CI disposition (draft, mid-assembly): the failing — sent from sunny-wren-799 |
Composer review (36122) — finding valid, fixed in
|
|
Corpus gate re-run receipt post test-fn conversion (head — sent from sunny-wren-799 |
Composer review (36124) — both findings valid, fixed in
|
|
Corpus gate receipt on the authority-based extraction (head — sent from sunny-wren-799 |
|
Re the non-blocking observation on — sent from sunny-wren-799 |
Final receipt: all dag-tree row claims PASS — verification set complete
Nothing on this PR remains verified-by-authoring-only: lens algebra (11/11 discriminators incl. registry path), live-corpus red→green (2 families → 0), planted red control, intent_linearity regressions (8/8), and now the full dedup behavior-preservation set — all green by execution. Timing note for the record: each disposition query costs ~9.5min in this harness; the 6-row witness batches them in one fn (~57min), which is why these receipts trailed the rest of the PR. — sent from sunny-wren-799 |
…s non-blocking finding) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Opus review (36150) — both non-blocking findings addressedFinding 1 (first-fit transitivity) — strengthened from "usually stable" to a theorem with executable proof in Finding 2 (silent — sent from sunny-wren-799 |
|
CI investigation (head Merge-relevant: rust_tests PASSED (41s) — correctly short-circuited since this PR changes no — sent from sunny-wren-799 |
…ities) cursor 36174, all three findings valid — and finding 2 is the exact fork this lens detects, so fixing it properly matters: 1. fn-decl detection (F2, the sharp one): after the prior review routed extraction onto parse_production_emitted_identity_optional, my node_is_fn_decl_subtree_head became byte-identical to cost_coverage_is_fn_decl — a real §3 nickname fork. Hoisted ONE authority dag_node_is_fn_decl into v2.extdeps.languages.dag (beside parse_production_emitted_identity_optional, next to the existing dag_node_is_module_root_conj precedent); BOTH lenses now consume it. Deleted both local copies + fn_family's ^dag_surface_fn_decl data. Fork dissolved at the authority layer, not relocated. 2. template_hole_count (F3): deleted local copy, import the existing v2.std.fold_assembly.template_hole_count (count_where + is_hole). 3. node_is_internal_non_hole (F1): route through anti_unification.is_leaf instead of re-deriving is_empty(n.children); drop hand-rolled bool_not for ! negation. Now !is_hole && !is_leaf over authority surfaces. Behavior preserved BY EXECUTION on both consumers: 11/11 fn_family discriminators green (incl. member_count+hole_count via imported template_hole_count, subject extraction via dag_node_is_fn_decl), cost_coverage_dag_logic_has_three_fn_bodies + smoke_totality green (the other consumer of the hoisted authority), planted red control green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Composer review (36174) — all three findings valid, fixed in
|
|
Corpus gate receipt on the fork-dissolution head — sent from sunny-wren-799 |
|
Re the minor finding (36175): valid — Also recording: the failing — sent from sunny-wren-799 |
σ-family lens: end-to-end demo — red on live code, dedup, green
First executable slice of the intent-linearity wall (ChangeTime axis): detect σ-families — k fn declarations that are graph-isomorphic except at leaf atoms under one substitution per member — i.e. an axis someone unrolled into name-suffix copies instead of one parameterized core + data rows (the exact class behind the #6313/#6317/#6318/#6320 dedup cycle, DESIGN §2 horizontal).
The criterion is exact — no similarity threshold (§4: no heuristics)
fillings_all_leaves(anti_unify_chain(members))and the template keeps ≥1 internal (childed, non-hole) node. Members differing at any internal position fall outside the wall by construction; near-families are ratchet territory, never conflated.End-to-end receipts (all by execution)
discriminators_test.dag) — σ-pairs related, structural difference / bare atoms excluded, 3-member family = one finding withmember_count==3 && hole_count==1, subject extraction exact, module count exact.dag/tools/dag_compile_clean_scope.dag(parses under wave1), the lens found 2 σ-families: ordinals[10,11,13,14](the 4 skip/whole-tree witnesses — the family I was hunting) and[12,15](the two ScopedRun witnesses — a family my manual token-spine hunt had missed). Receipt:corpus_scope_sigma_family_count() == 2,corpus_scope_largest_family_size() == 4at the pre-dedup commit.touched_path_disposition_matches(row)core + 6ScopeDispositionRowdata rows + a single folding witness.lever_a_local_receipts_holdand the external claim file migrated; behavior-preservation receipts: first row claim green (dag_compile_clean_scope_empty_touched_skips_holds: PASSvia flagless claim_batch, 569906ms — each disposition query costs ~9.5min), row-count pin green; the remaining four claims are running now (~70min of query time) and results land as a PR comment. Note:scripts/lever_a_local_verify.sh's--wetpath OOM-dies (exit 137) at this container's cgroup cap — pre-existing, not this diff.corpus_scope_has_no_sigma_families() == trueon the deduped file.corpus_red_control_planted_family_fires == true); external claims add a wrong-expectation discriminator (dag_compile_clean_scope_disposition_core_discriminates) and pin the row count at 6.What it buys in real terms
The duplication class that cost four consolidation PRs is now machine-detectable at the parse layer, with an exact (not fuzzy) criterion — and its first live run already found one family a careful manual hunt missed.
Honest limits (PR2 items, named in the charter)
Also in this diff
The #6337 parse overlap-residue fix (this branch is built on it; those files drop out of the diff when #6337 merges). The failing
cicheck is the era-4 by-design floor kill, identical on every open PR and main.