From ea88f4878e44cc3af7b7be5a2c963a9a5e0512e0 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 00:10:07 +0000 Subject: [PATCH 01/12] WIP: Consolidation #4553 Phase 1: model-first verification.dag BoolWitness/Un --- src/v4/std/verification.dag | 77 ++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/src/v4/std/verification.dag b/src/v4/std/verification.dag index c3feb7396e3..ae3eb360c40 100644 --- a/src/v4/std/verification.dag +++ b/src/v4/std/verification.dag @@ -1,5 +1,5 @@ // src/v4/std/verification.dag -// Scope: Closed TestClaim schema — assertion-shape coproduct, TestgenTier/Layer, TestClassification, ImpossibleBugClass, ManualAnchorKey, GeneratedAnchorKey, ClaimAnchorKey. +// Scope: Closed TestClaim schema — assertion-shape coproduct, TestgenTier/Layer, TestClassification, ImpossibleBugClass, ManualAnchorKey, GeneratedAnchorKey, ClaimAnchorKey; consolidation #4553 Phase 1 — BoolWitness + UnifiedTestClaim registration coproduct. // Status: T-3 modeled; substrate extension or file split = operator STOP. module v4.std.verification @@ -7,7 +7,9 @@ module v4.std.verification import v4.std.algebra { Empty, any, fold_list, list_append, list_snoc_item } import v4.std.collection { List } +import v4.std.logic { Bool } import v4.std.node { Node, NodeFold, Symbol, fold_node } +import v4.std.target_model { TargetModel } import v4.std.diagnostic { Accepted, Correction, @@ -464,3 +466,76 @@ fn test_claim_expected_outcome(c: TestClaim) -> Outcome> { } } } + + +// Consolidation #4553 Phase 1 — Bool-witness registration descriptor (ctrl#1490 / test-claim-consolidation-design §3). +// P2: descriptor fields only — execution output lives on run-receipt types in Phase 2 eval module. +// `function` carries the nullary `fn() -> Bool` witness name (roster `{entry, function}` projection). +type BoolWitness { + entry: String + function: String +} + + +// Node-corpus transport mode on `UnifiedTestClaim.NodeCorpus` — not a separate runner. +type TestClaimTransportMode + = EvalOnly + | EmitVsEval { target: TargetModel } + + +// Structural modality tag for unified dispatch — keys off the coproduct arm, not string heuristics. +type UnifiedTestClaimModality + = UnifiedNodeCorpusModality + | UnifiedBoolWitnessModality + + +// Unified registration coproduct (both modalities, one authority). +// `NodeCorpus` carries `claim` + `transport` at std layer; `TestClaimEvalSubject` binds at the +// eval boundary in Phase 2 runner migration (std cannot import `v4.compiler.eval`). +type UnifiedTestClaim + = NodeCorpus { + claim: TestClaim + transport: TestClaimTransportMode + } + | BoolWitness { + entry: String + function: String + } + + +fn unified_test_claim_modality(c: UnifiedTestClaim) -> UnifiedTestClaimModality { + match c { + NodeCorpus { claim: _, transport: _ } => UnifiedNodeCorpusModality + BoolWitness { entry: _, function: _ } => UnifiedBoolWitnessModality + } +} + + +fn bool_witness_descriptor(w: BoolWitness) -> UnifiedTestClaim { + BoolWitness { entry: w.entry, function: w.function } +} + + +fn unified_test_claim_bool_witness_entry(c: UnifiedTestClaim) -> String { + match c { + BoolWitness { entry: e, function: _ } => e + NodeCorpus { claim: _, transport: _ } => "" + } +} + + +fn unified_test_claim_bool_witness_function(c: UnifiedTestClaim) -> String { + match c { + BoolWitness { entry: _, function: f } => f + NodeCorpus { claim: _, transport: _ } => "" + } +} + + +fn bool_witness_matches_entry_function( + w: BoolWitness, + entry: String, + function: String +) -> Bool { + w.entry == entry && w.function == function +} From b23cc9f356b231467b9b327235a3bba68a014aa5 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 00:14:08 +0000 Subject: [PATCH 02/12] =?UTF-8?q?feat(v4):=20complete=20#4553=20Phase=201?= =?UTF-8?q?=20substrate=20tranche=20=E2=80=94=20roster=20projection=20+=20?= =?UTF-8?q?equivalence=20witness?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Land mechanical bool_witness_from_roster_row projection, compile-time substrate_equivalence_holds tranche, and Mgr-C cut-list so Phase 2 runner dispatch can bind on UnifiedTestClaim without model-after-implement. Co-authored-by: Cursor --- ...onsolidation-phase1-cut-list-2026-06-09.md | 37 +++++++++ ...ified_test_claim_substrate_equivalence.dag | 83 +++++++++++++++++++ .../test/claim/workflow/v4_roster_pilot.dag | 7 ++ 3 files changed, 127 insertions(+) create mode 100644 docs/planning/test-claim-consolidation-phase1-cut-list-2026-06-09.md create mode 100644 src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag diff --git a/docs/planning/test-claim-consolidation-phase1-cut-list-2026-06-09.md b/docs/planning/test-claim-consolidation-phase1-cut-list-2026-06-09.md new file mode 100644 index 00000000000..cce523d2566 --- /dev/null +++ b/docs/planning/test-claim-consolidation-phase1-cut-list-2026-06-09.md @@ -0,0 +1,37 @@ +# Test-Claim Consolidation #4553 — Phase 1 cut list + +**PR:** #4576 +**Design authority:** `docs/planning/test-claim-consolidation-design-2026-06-08.md` §Phase 1 +**Gate:** Mgr-C substrate-only; no runner / CI transport / roster deletion + +## Before → after + +| artifact | before | after | +| -------- | ------ | ----- | +| `src/v4/std/verification.dag` | `TestClaim` coproduct only | + `BoolWitness`, `TestClaimTransportMode`, `UnifiedTestClaimModality`, `UnifiedTestClaim` (both arms), modality + accessor fns | +| `src/v4/test/claim/workflow/v4_roster_pilot.dag` | `V4RosterPilotClaimRunRow` list only | + `bool_witness_from_roster_row` mechanical projection | +| `src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag` | absent | Phase 1 compile-time equivalence tranche (`substrate_equivalence_holds`) | + +## Explicit non-changes (this PR) + +| artifact | reason | +| -------- | ------ | +| `src/v4/compiler/05_eval.dag` | `TestClaimEvalSubject` binds at eval boundary — Phase 2 runner | +| `testclaim_corpus_runner.dag` | runner dispatch deferred Phase 2 | +| `v4_roster_pilot` row list / count | authoritative until C9–C11 (design §4.4) | +| `workflow/*_eval.dag` (10 files) | retire Phase 3 | +| lens-CI / smoke shell scripts | CI transport unification Phase 4 | + +## Falsification receipts landed + +| ID | receipt | +| -- | ------- | +| C3 | `rg 'UnifiedTestClaim\|BoolWitness' src/v4/std/verification.dag` | +| Phase 1 tranche | `witness_substrate_equivalence` in `unified_test_claim_substrate_equivalence.dag` | + +## Deferred to Phase 2+ + +- `UnifiedClaimRun` / tagged `CorpusEvalReport` run receipts +- `run_unified_corpus_eval` dispatch +- E1 (`--claim-run` stdout equivalence) +- `NodeCorpus.subject: TestClaimEvalSubject` field (std/eval layering) diff --git a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag new file mode 100644 index 00000000000..190b4d1050f --- /dev/null +++ b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag @@ -0,0 +1,83 @@ +// src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag +// Scope: Consolidation #4553 Phase 1 substrate equivalence tranche (design §6.3). +// Status: compile-time law — C3 modality discrimination + roster mechanical projection (E5 prep). +// No runner / `--claim-run` execution in this tranche (E1 lands Phase 2). + +module v4.test.claim.workflow.unified_test_claim_substrate_equivalence + + +import v4.std.logic { Bool } +import v4.std.verification { + EvalOnly, + NodeCorpus, + UnifiedBoolWitnessModality, + UnifiedNodeCorpusModality, + UnifiedTestClaim, + bool_witness_descriptor, + bool_witness_matches_entry_function, + unified_test_claim_bool_witness_entry, + unified_test_claim_bool_witness_function, + unified_test_claim_modality +} +import v4.test.claim.manual.eval_runtime_mvp { claim_eval_mvp2_test_claim_route } +import v4.test.claim.workflow.v4_roster_pilot { + bool_witness_from_roster_row, + v4_roster_pilot_row_edit_locus_narrow +} + + +fn substrate_equivalence_sample_bool_unified_claim() -> UnifiedTestClaim { + bool_witness_descriptor( + w: bool_witness_from_roster_row(row: v4_roster_pilot_row_edit_locus_narrow) + ) +} + + +fn substrate_equivalence_sample_node_corpus_claim() -> UnifiedTestClaim { + NodeCorpus { + claim: claim_eval_mvp2_test_claim_route, + transport: EvalOnly + } +} + + +fn substrate_equivalence_roster_projection_preserves_entry_function() -> Bool { + let w = bool_witness_from_roster_row(row: v4_roster_pilot_row_edit_locus_narrow) + bool_witness_matches_entry_function( + w: w, + entry: v4_roster_pilot_row_edit_locus_narrow.entry, + function: v4_roster_pilot_row_edit_locus_narrow.function + ) +} + + +fn substrate_equivalence_bool_modality_discriminates() -> Bool { + unified_test_claim_modality(c: substrate_equivalence_sample_bool_unified_claim()) + == UnifiedBoolWitnessModality +} + + +fn substrate_equivalence_node_corpus_modality_discriminates() -> Bool { + unified_test_claim_modality(c: substrate_equivalence_sample_node_corpus_claim()) + == UnifiedNodeCorpusModality +} + + +fn substrate_equivalence_unified_claim_preserves_bool_fields() -> Bool { + let c = substrate_equivalence_sample_bool_unified_claim() + unified_test_claim_bool_witness_entry(c: c) + == v4_roster_pilot_row_edit_locus_narrow.entry + && unified_test_claim_bool_witness_function(c: c) + == v4_roster_pilot_row_edit_locus_narrow.function +} + + +fn substrate_equivalence_holds() -> Bool { + substrate_equivalence_roster_projection_preserves_entry_function() + && substrate_equivalence_bool_modality_discriminates() + && substrate_equivalence_node_corpus_modality_discriminates() + && substrate_equivalence_unified_claim_preserves_bool_fields() +} + + +data witness_substrate_equivalence: Bool = substrate_equivalence_holds() diff --git a/src/v4/test/claim/workflow/v4_roster_pilot.dag b/src/v4/test/claim/workflow/v4_roster_pilot.dag index 99e51877c17..1119faa85f6 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -9,6 +9,7 @@ import v4.std.algebra { count_equal, length } import v4.std.collection { List } import v4.std.logic { Bool } import v4.std.text { String } +import v4.std.verification { BoolWitness } type V4RosterPilotClaimRunRow { @@ -18,6 +19,12 @@ type V4RosterPilotClaimRunRow { } +// Mechanical registry projection — consolidation #4553 Phase 1 (not a hand-maintained parallel list). +fn bool_witness_from_roster_row(row: V4RosterPilotClaimRunRow) -> BoolWitness { + BoolWitness { entry: row.entry, function: row.function } +} + + data v4_roster_pilot_row_edit_locus_narrow: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "edit-locus narrow resolution", entry: "src/v4/test/claim/lens_affected_set/edit_locus_resolver.dag", From 649f1d0e35c8ef3955f5bc5f9f88719c8bd2aa53 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 00:17:19 +0000 Subject: [PATCH 03/12] fix(v4): use match for UnifiedTestClaimModality checks in substrate equivalence The v4 parser rejects `==` on coproduct variants (EqEq at expression site); discriminate modality with exhaustive match instead so ci_floor_emit M1 probe passes. Co-authored-by: Cursor --- .../unified_test_claim_substrate_equivalence.dag | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag index 190b4d1050f..7f22122611c 100644 --- a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag +++ b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag @@ -52,14 +52,18 @@ fn substrate_equivalence_roster_projection_preserves_entry_function() -> Bool { fn substrate_equivalence_bool_modality_discriminates() -> Bool { - unified_test_claim_modality(c: substrate_equivalence_sample_bool_unified_claim()) - == UnifiedBoolWitnessModality + match unified_test_claim_modality(c: substrate_equivalence_sample_bool_unified_claim()) { + UnifiedBoolWitnessModality => true + UnifiedNodeCorpusModality => false + } } fn substrate_equivalence_node_corpus_modality_discriminates() -> Bool { - unified_test_claim_modality(c: substrate_equivalence_sample_node_corpus_claim()) - == UnifiedNodeCorpusModality + match unified_test_claim_modality(c: substrate_equivalence_sample_node_corpus_claim()) { + UnifiedNodeCorpusModality => true + UnifiedBoolWitnessModality => false + } } From ee03631520c76bf93127eb7639e41cf1b65edcf7 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 00:23:29 +0000 Subject: [PATCH 04/12] WIP: Consolidation #4553 Phase 1: model-first verification.dag BoolWitness/Un --- .../unified_test_claim_substrate_equivalence.dag | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag index 7f22122611c..75aa8e0c30d 100644 --- a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag +++ b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag @@ -8,6 +8,7 @@ module v4.test.claim.workflow.unified_test_claim_substrate_equivalence import v4.std.logic { Bool } import v4.std.verification { + BoolWitness, EvalOnly, NodeCorpus, UnifiedBoolWitnessModality, @@ -69,10 +70,14 @@ fn substrate_equivalence_node_corpus_modality_discriminates() -> Bool { fn substrate_equivalence_unified_claim_preserves_bool_fields() -> Bool { let c = substrate_equivalence_sample_bool_unified_claim() - unified_test_claim_bool_witness_entry(c: c) - == v4_roster_pilot_row_edit_locus_narrow.entry - && unified_test_claim_bool_witness_function(c: c) - == v4_roster_pilot_row_edit_locus_narrow.function + bool_witness_matches_entry_function( + w: BoolWitness { + entry: unified_test_claim_bool_witness_entry(c: c), + function: unified_test_claim_bool_witness_function(c: c) + }, + entry: v4_roster_pilot_row_edit_locus_narrow.entry, + function: v4_roster_pilot_row_edit_locus_narrow.function + ) } From d85b76782e064149cf34a26f2b42da3ed2ca49b7 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 00:34:01 +0000 Subject: [PATCH 05/12] WIP: Consolidation #4553 Phase 1: model-first verification.dag BoolWitness/Un --- src/v4/std/verification.dag | 47 ++-- ...ified_test_claim_substrate_equivalence.dag | 26 +-- .../test/claim/workflow/v4_roster_pilot.dag | 203 +++++++++++++----- 3 files changed, 198 insertions(+), 78 deletions(-) diff --git a/src/v4/std/verification.dag b/src/v4/std/verification.dag index ae3eb360c40..208c88ea716 100644 --- a/src/v4/std/verification.dag +++ b/src/v4/std/verification.dag @@ -32,6 +32,7 @@ import v4.std.diagnostic { data v4_std_verification_file: Symbol = v4_std_verification_file data test_claim_expected_outcome_undeclared: Symbol = test_claim_expected_outcome_undeclared +data unified_test_claim_bool_witness_absent: Symbol = unified_test_claim_bool_witness_absent fn test_claim_expected_outcome_undeclared_diagnostic() -> Diagnostic { @@ -43,6 +44,15 @@ fn test_claim_expected_outcome_undeclared_diagnostic() -> Diagnostic { } +fn unified_test_claim_bool_witness_absent_diagnostic() -> Diagnostic { + Diagnostic { + reason: unified_test_claim_bool_witness_absent, + at: Textual { file: v4_std_verification_file, extent: WholeFile }, + correction: Unavailable { reason: UserInputBoundary } + } +} + + // RULING-1: pretty-much-done — closed TestClaim tier set. // 🟢 coproduct dissolution — LB-P4-3212. type TestgenTier @@ -470,21 +480,28 @@ fn test_claim_expected_outcome(c: TestClaim) -> Outcome> { // Consolidation #4553 Phase 1 — Bool-witness registration descriptor (ctrl#1490 / test-claim-consolidation-design §3). // P2: descriptor fields only — execution output lives on run-receipt types in Phase 2 eval module. -// `function` carries the nullary `fn() -> Bool` witness name (roster `{entry, function}` projection). +// RULING-1: pretty-much-done — nullary fn () -> Bool witness identity at registration boundary. +// 🟢 coproduct dissolution — consolidation #4553 Phase 1 terminal registration descriptor. type BoolWitness { entry: String - function: String + function: Symbol } // Node-corpus transport mode on `UnifiedTestClaim.NodeCorpus` — not a separate runner. +// RULING-1: pretty-much-done — closed NodeCorpus transport modes (design §3.4). +// 🟢 coproduct dissolution — consolidation #4553 Phase 1. type TestClaimTransportMode +// 🟢 coproduct dissolution — consolidation #4553 Phase 1 = EvalOnly | EmitVsEval { target: TargetModel } // Structural modality tag for unified dispatch — keys off the coproduct arm, not string heuristics. +// RULING-1: pretty-much-done — closed modality tag for unified dispatch (design §3.1). +// 🟢 coproduct dissolution — consolidation #4553 Phase 1. type UnifiedTestClaimModality +// 🟢 coproduct dissolution — consolidation #4553 Phase 1 = UnifiedNodeCorpusModality | UnifiedBoolWitnessModality @@ -492,14 +509,17 @@ type UnifiedTestClaimModality // Unified registration coproduct (both modalities, one authority). // `NodeCorpus` carries `claim` + `transport` at std layer; `TestClaimEvalSubject` binds at the // eval boundary in Phase 2 runner migration (std cannot import `v4.compiler.eval`). +// RULING-1: needs-more-work — NodeCorpus lacks TestClaimEvalSubject until Phase 2 runner migration. +// 🟡 coproduct dissolution — consolidation #4553 Phase 2 binds subject at eval boundary; dissolve-on: NodeCorpus.subject lands when unified runner migrates. type UnifiedTestClaim +// 🟡 coproduct dissolution — consolidation #4553 Phase 2 runner migration = NodeCorpus { claim: TestClaim transport: TestClaimTransportMode } | BoolWitness { entry: String - function: String + function: Symbol } @@ -516,18 +536,15 @@ fn bool_witness_descriptor(w: BoolWitness) -> UnifiedTestClaim { } -fn unified_test_claim_bool_witness_entry(c: UnifiedTestClaim) -> String { +// Arm-specific projection — Rejected on NodeCorpus (no fabricated empty String/Symbol). +fn unified_test_claim_bool_witness(c: UnifiedTestClaim) -> Outcome { match c { - BoolWitness { entry: e, function: _ } => e - NodeCorpus { claim: _, transport: _ } => "" - } -} - - -fn unified_test_claim_bool_witness_function(c: UnifiedTestClaim) -> String { - match c { - BoolWitness { entry: _, function: f } => f - NodeCorpus { claim: _, transport: _ } => "" + BoolWitness { entry: e, function: f } => + Accepted { value: BoolWitness { entry: e, function: f }, diagnostics: None } + NodeCorpus { claim: _, transport: _ } => + Rejected { + diagnostics: diagnostics_singleton(d: unified_test_claim_bool_witness_absent_diagnostic()) + } } } @@ -535,7 +552,7 @@ fn unified_test_claim_bool_witness_function(c: UnifiedTestClaim) -> String { fn bool_witness_matches_entry_function( w: BoolWitness, entry: String, - function: String + function: Symbol ) -> Bool { w.entry == entry && w.function == function } diff --git a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag index 75aa8e0c30d..cff8d7b732f 100644 --- a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag +++ b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag @@ -6,9 +6,9 @@ module v4.test.claim.workflow.unified_test_claim_substrate_equivalence +import v4.std.diagnostic { Accepted, Rejected } import v4.std.logic { Bool } import v4.std.verification { - BoolWitness, EvalOnly, NodeCorpus, UnifiedBoolWitnessModality, @@ -16,8 +16,7 @@ import v4.std.verification { UnifiedTestClaim, bool_witness_descriptor, bool_witness_matches_entry_function, - unified_test_claim_bool_witness_entry, - unified_test_claim_bool_witness_function, + unified_test_claim_bool_witness, unified_test_claim_modality } import v4.test.claim.manual.eval_runtime_mvp { claim_eval_mvp2_test_claim_route } @@ -47,7 +46,7 @@ fn substrate_equivalence_roster_projection_preserves_entry_function() -> Bool { bool_witness_matches_entry_function( w: w, entry: v4_roster_pilot_row_edit_locus_narrow.entry, - function: v4_roster_pilot_row_edit_locus_narrow.function + function: v4_roster_pilot_row_edit_locus_narrow.function_symbol ) } @@ -69,15 +68,16 @@ fn substrate_equivalence_node_corpus_modality_discriminates() -> Bool { fn substrate_equivalence_unified_claim_preserves_bool_fields() -> Bool { - let c = substrate_equivalence_sample_bool_unified_claim() - bool_witness_matches_entry_function( - w: BoolWitness { - entry: unified_test_claim_bool_witness_entry(c: c), - function: unified_test_claim_bool_witness_function(c: c) - }, - entry: v4_roster_pilot_row_edit_locus_narrow.entry, - function: v4_roster_pilot_row_edit_locus_narrow.function - ) + let w = bool_witness_from_roster_row(row: v4_roster_pilot_row_edit_locus_narrow) + match unified_test_claim_bool_witness(c: bool_witness_descriptor(w: w)) { + Accepted { value: extracted, diagnostics: None } => + bool_witness_matches_entry_function( + w: extracted, + entry: w.entry, + function: w.function + ) + Rejected { diagnostics: _ } => false + } } diff --git a/src/v4/test/claim/workflow/v4_roster_pilot.dag b/src/v4/test/claim/workflow/v4_roster_pilot.dag index 1119faa85f6..43ea546e07c 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -8,59 +8,119 @@ module v4.test.claim.workflow.v4_roster_pilot import v4.std.algebra { count_equal, length } import v4.std.collection { List } import v4.std.logic { Bool } +import v4.std.node { Symbol } import v4.std.text { String } import v4.std.verification { BoolWitness } +// Witness Symbol pins — structural nullary fn () -> Bool identity (substrate authority; `function` String is shell transport only). +data caret_sigil_surface_witness_holds: Symbol = caret_sigil_surface_witness_holds +data coordination_obligation_exchange_arm_sharp_holds: Symbol = coordination_obligation_exchange_arm_sharp_holds +data coordination_obligation_settlement_arm_sharp_holds: Symbol = coordination_obligation_settlement_arm_sharp_holds +data discriminant_intrinsic_is_payload_blind_and_arm_sharp: Symbol = discriminant_intrinsic_is_payload_blind_and_arm_sharp +data edit_locus_fail_closed_holds: Symbol = edit_locus_fail_closed_holds +data edit_locus_narrow_resolution_holds: Symbol = edit_locus_narrow_resolution_holds +data extdeps_react_composite_element_declares_key_and_ref_holds: Symbol = extdeps_react_composite_element_declares_key_and_ref_holds +data extdeps_react_create_element_child_element_arm_wraps_react_element_holds: Symbol = extdeps_react_create_element_child_element_arm_wraps_react_element_holds +data extdeps_react_effect_hooks_require_setup_ref_holds: Symbol = extdeps_react_effect_hooks_require_setup_ref_holds +data extdeps_react_element_children_are_list_create_element_child_holds: Symbol = extdeps_react_element_children_are_list_create_element_child_holds +data extdeps_react_fragment_arm_declares_key_holds: Symbol = extdeps_react_fragment_arm_declares_key_holds +data extdeps_react_host_element_declares_key_and_ref_holds: Symbol = extdeps_react_host_element_declares_key_and_ref_holds +data extdeps_react_use_memo_use_callback_dependencies_are_required_lists_holds: Symbol = extdeps_react_use_memo_use_callback_dependencies_are_required_lists_holds +data lens_affected_set_irt1_boundary_prune_holds: Symbol = lens_affected_set_irt1_boundary_prune_holds +data lens_affected_set_irt1_empty_diff_frontier_holds: Symbol = lens_affected_set_irt1_empty_diff_frontier_holds +data lens_affected_set_irt1_fail_closed_absorption_holds: Symbol = lens_affected_set_irt1_fail_closed_absorption_holds +data lens_affected_set_irt1_fail_closed_pending_escalation_holds: Symbol = lens_affected_set_irt1_fail_closed_pending_escalation_holds +data lens_application_introspect_advisory_holds: Symbol = lens_application_introspect_advisory_holds +data lens_application_synthesis_gap_polynomial_holds: Symbol = lens_application_synthesis_gap_polynomial_holds +data lens_idempotency_write_effect_holds: Symbol = lens_idempotency_write_effect_holds +data lens_identical_variant_payload_unrealized_scaffold_holds: Symbol = lens_identical_variant_payload_unrealized_scaffold_holds +data lens_registry_required_ids_resolve_holds: Symbol = lens_registry_required_ids_resolve_holds +data lens_registry_singleton_row_counts_holds: Symbol = lens_registry_singleton_row_counts_holds +data map_lookup_miss_violates_and_hit_holds: Symbol = map_lookup_miss_violates_and_hit_holds +data map_structural_key_equality_holds: Symbol = map_structural_key_equality_holds +data mvp1_dag_add_emit_ingest_round_trip_holds: Symbol = mvp1_dag_add_emit_ingest_round_trip_holds +data mvp1_go_emit_add_fn_accepts_holds: Symbol = mvp1_go_emit_add_fn_accepts_holds +data mvp1_python_emit_add_fn_accepts_holds: Symbol = mvp1_python_emit_add_fn_accepts_holds +data mvp1_rust_emit_add_fn_accepts_holds: Symbol = mvp1_rust_emit_add_fn_accepts_holds +data mvp1_ts_emit_add_fn_accepts_holds: Symbol = mvp1_ts_emit_add_fn_accepts_holds +data parse_table_token_position_indices_no_extra_append_holds: Symbol = parse_table_token_position_indices_no_extra_append_holds +data sg_rc_f6_round_trip_owned: Symbol = sg_rc_f6_round_trip_owned +data text_host_string_empty_roundtrip_holds: Symbol = text_host_string_empty_roundtrip_holds +data text_host_string_field_text_holds: Symbol = text_host_string_field_text_holds +data text_host_string_roundtrip_holds: Symbol = text_host_string_roundtrip_holds +data text_string_freemonoid_carrier_holds: Symbol = text_string_freemonoid_carrier_holds +data ts_g2_sg1_symbol_carrier_holds: Symbol = ts_g2_sg1_symbol_carrier_holds +data ts_g2_sg5_absence_fail_closed_holds: Symbol = ts_g2_sg5_absence_fail_closed_holds +data witness_claim_crux_substrate_gap: Symbol = witness_claim_crux_substrate_gap +data witness_claim_task_id_surfaces_distinct: Symbol = witness_claim_task_id_surfaces_distinct +data witness_crux_substrate_gap: Symbol = witness_crux_substrate_gap +data witness_grounding_terminal_gate_runtime_authoritative_discriminates: Symbol = witness_grounding_terminal_gate_runtime_authoritative_discriminates +data witness_lens_testgen_bootstrap_generator_reifies_dag_input_surface_green: Symbol = witness_lens_testgen_bootstrap_generator_reifies_dag_input_surface_green +data witness_lens_testgen_scheduled_generators_carry_provenance_green: Symbol = witness_lens_testgen_scheduled_generators_carry_provenance_green +data witness_lens_testgen_schedules_dag_input_surface_green: Symbol = witness_lens_testgen_schedules_dag_input_surface_green +data witness_lens_testgen_shadow_ci_run_receipt_green: Symbol = witness_lens_testgen_shadow_ci_run_receipt_green +data witness_model_core_bool_fact_lookup_discriminates: Symbol = witness_model_core_bool_fact_lookup_discriminates +data witness_sg2_arrow_holds: Symbol = witness_sg2_arrow_holds +data witness_sg2_projection_falsification_holds: Symbol = witness_sg2_projection_falsification_holds + + type V4RosterPilotClaimRunRow { label: String entry: String function: String + function_symbol: Symbol } // Mechanical registry projection — consolidation #4553 Phase 1 (not a hand-maintained parallel list). fn bool_witness_from_roster_row(row: V4RosterPilotClaimRunRow) -> BoolWitness { - BoolWitness { entry: row.entry, function: row.function } + BoolWitness { entry: row.entry, function: row.function_symbol } } data v4_roster_pilot_row_edit_locus_narrow: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "edit-locus narrow resolution", entry: "src/v4/test/claim/lens_affected_set/edit_locus_resolver.dag", - function: "edit_locus_narrow_resolution_holds" + function: "edit_locus_narrow_resolution_holds", + function_symbol: edit_locus_narrow_resolution_holds } data v4_roster_pilot_row_edit_locus_fail_closed: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "edit-locus fail closed", entry: "src/v4/test/claim/lens_affected_set/edit_locus_resolver.dag", - function: "edit_locus_fail_closed_holds" + function: "edit_locus_fail_closed_holds", + function_symbol: edit_locus_fail_closed_holds } data v4_roster_pilot_row_generator_provenance: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "generator provenance", entry: "src/v4/test/claim/lens_testgen/generator_provenance.dag", - function: "witness_lens_testgen_scheduled_generators_carry_provenance_green" + function: "witness_lens_testgen_scheduled_generators_carry_provenance_green", + function_symbol: witness_lens_testgen_scheduled_generators_carry_provenance_green } // W4 fold-delete: F.2-P2 shadow CI TestgenRunReceipt roster witness (mutation-proven). data v4_roster_pilot_row_lens_testgen_shadow_ci: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens_testgen shadow CI run receipt", entry: "src/v4/test/claim/lens_testgen/shadow_ci_receipt.dag", - function: "witness_lens_testgen_shadow_ci_run_receipt_green" + function: "witness_lens_testgen_shadow_ci_run_receipt_green", + function_symbol: witness_lens_testgen_shadow_ci_run_receipt_green } // W4 fold-delete: T-19 scheduled LBE .dag input surface witness (mutation-proven). data v4_roster_pilot_row_lens_testgen_dag_input_scheduled: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens_testgen scheduled dag input surface", entry: "src/v4/test/claim/lens_testgen/dag_input_surface.dag", - function: "witness_lens_testgen_schedules_dag_input_surface_green" + function: "witness_lens_testgen_schedules_dag_input_surface_green", + function_symbol: witness_lens_testgen_schedules_dag_input_surface_green } data v4_roster_pilot_row_lens_testgen_dag_input_bootstrap: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens_testgen bootstrap dag input surface", entry: "src/v4/test/claim/lens_testgen/dag_input_surface.dag", - function: "witness_lens_testgen_bootstrap_generator_reifies_dag_input_surface_green" + function: "witness_lens_testgen_bootstrap_generator_reifies_dag_input_surface_green", + function_symbol: witness_lens_testgen_bootstrap_generator_reifies_dag_input_surface_green } // W3 A-fold-delete: model_core bool fact lookup discriminating fold-witness (mutation-proven). @@ -68,7 +128,8 @@ data v4_roster_pilot_row_lens_testgen_dag_input_bootstrap: V4RosterPilotClaimRun data v4_roster_pilot_row_model_core_bool_fact_lookup: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "model_core bool fact lookup discriminates", entry: "src/v4/test/claim/std_model_core/bool_fact_lookup.dag", - function: "witness_model_core_bool_fact_lookup_discriminates" + function: "witness_model_core_bool_fact_lookup_discriminates", + function_symbol: witness_model_core_bool_fact_lookup_discriminates } // W3 A-fold-delete: grounding RR-A terminal-pass gate fold-witness (mutation-proven). @@ -76,31 +137,36 @@ data v4_roster_pilot_row_model_core_bool_fact_lookup: V4RosterPilotClaimRunRow = data v4_roster_pilot_row_grounding_terminal_gate: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "grounding terminal-pass gate runtime-authoritative", entry: "src/v4/test/claim/std_grounding/terminal_gate.dag", - function: "witness_grounding_terminal_gate_runtime_authoritative_discriminates" + function: "witness_grounding_terminal_gate_runtime_authoritative_discriminates", + function_symbol: witness_grounding_terminal_gate_runtime_authoritative_discriminates } data v4_roster_pilot_row_grounding_ts_symbol_carrier: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "grounding_typescript SG-1 symbol carrier", entry: "src/v4/test/claim/grounding_typescript/sg_claims.dag", - function: "ts_g2_sg1_symbol_carrier_holds" + function: "ts_g2_sg1_symbol_carrier_holds", + function_symbol: ts_g2_sg1_symbol_carrier_holds } data v4_roster_pilot_row_grounding_ts_absence_fail_closed: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "grounding_typescript SG-5 absence fail-closed", entry: "src/v4/test/claim/grounding_typescript/sg_claims.dag", - function: "ts_g2_sg5_absence_fail_closed_holds" + function: "ts_g2_sg5_absence_fail_closed_holds", + function_symbol: ts_g2_sg5_absence_fail_closed_holds } data v4_roster_pilot_row_discriminant_intrinsic: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "discriminant intrinsic payload-blind arm-sharp", entry: "src/v4/test/claim/manual/discriminant_intrinsic.dag", - function: "discriminant_intrinsic_is_payload_blind_and_arm_sharp" + function: "discriminant_intrinsic_is_payload_blind_and_arm_sharp", + function_symbol: discriminant_intrinsic_is_payload_blind_and_arm_sharp } data v4_roster_pilot_row_caret_sigil_surface: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "caret sigil ^IDENT literal + ^(Expr) discriminant sugar", entry: "src/v4/test/claim/manual/caret_sigil_surface.dag", - function: "caret_sigil_surface_witness_holds" + function: "caret_sigil_surface_witness_holds", + function_symbol: caret_sigil_surface_witness_holds } // ctrl#1476 B3-Gap2 (SG-RC probe wire-decode call-site fix). Only the owned round-trip is @@ -108,7 +174,8 @@ data v4_roster_pilot_row_caret_sigil_surface: V4RosterPilotClaimRunRow = V4Roste data v4_roster_pilot_row_sg_rc_f6_owned: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "sg-rc f6 round-trip owned (ctrl#1476 B3-Gap2)", entry: "src/v4/test/claim/manual/sg_rc_layering.dag", - function: "sg_rc_f6_round_trip_owned" + function: "sg_rc_f6_round_trip_owned", + function_symbol: sg_rc_f6_round_trip_owned } // T3 Phase A (ctrl#1489) — SG-2 green-on-current claim-run witnesses only (mutation-proven). @@ -116,13 +183,15 @@ data v4_roster_pilot_row_sg_rc_f6_owned: V4RosterPilotClaimRunRow = V4RosterPilo data v4_roster_pilot_row_sg2_arrow: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "sg2 type-expr Arrow projects (X) -> Y", entry: "src/v4/test/claim/manual/sg2_type_expression_projection.dag", - function: "witness_sg2_arrow_holds" + function: "witness_sg2_arrow_holds", + function_symbol: witness_sg2_arrow_holds } data v4_roster_pilot_row_sg2_projection_falsification: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "sg2 type-expr projection falsification fail-closed", entry: "src/v4/test/claim/manual/sg2_type_expression_projection.dag", - function: "witness_sg2_projection_falsification_holds" + function: "witness_sg2_projection_falsification_holds", + function_symbol: witness_sg2_projection_falsification_holds } // Exemplar E1: v4.std.text smoke→witness migration (fold-delete W1). Discriminating @@ -132,68 +201,79 @@ data v4_roster_pilot_row_sg2_projection_falsification: V4RosterPilotClaimRunRow data v4_roster_pilot_row_std_text_freemonoid_carrier: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "std_text String FreeMonoid carrier", entry: "src/v4/test/claim/std_text/carrier_claims.dag", - function: "text_string_freemonoid_carrier_holds" + function: "text_string_freemonoid_carrier_holds", + function_symbol: text_string_freemonoid_carrier_holds } data v4_roster_pilot_row_std_text_roundtrip: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "std_text HostStringText constructor/projection round-trip", entry: "src/v4/test/claim/std_text/carrier_claims.dag", - function: "text_host_string_roundtrip_holds" + function: "text_host_string_roundtrip_holds", + function_symbol: text_host_string_roundtrip_holds } data v4_roster_pilot_row_std_text_empty_roundtrip: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "std_text HostStringText empty round-trip (projection returns stored text)", entry: "src/v4/test/claim/std_text/carrier_claims.dag", - function: "text_host_string_empty_roundtrip_holds" + function: "text_host_string_empty_roundtrip_holds", + function_symbol: text_host_string_empty_roundtrip_holds } data v4_roster_pilot_row_std_text_field_text: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "std_text HostStringText record field text:String", entry: "src/v4/test/claim/std_text/carrier_claims.dag", - function: "text_host_string_field_text_holds" + function: "text_host_string_field_text_holds", + function_symbol: text_host_string_field_text_holds } // Exemplar E2: v4.extdeps.frameworks.react A-class structural receipts (7 witnesses). data v4_roster_pilot_row_extdeps_react_use_memo_callback_deps: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "extdeps_react UseMemo/UseCallback required List deps", entry: "src/v4/test/claim/extdeps_react/structural_receipts.dag", - function: "extdeps_react_use_memo_use_callback_dependencies_are_required_lists_holds" + function: "extdeps_react_use_memo_use_callback_dependencies_are_required_lists_holds", + function_symbol: extdeps_react_use_memo_use_callback_dependencies_are_required_lists_holds } data v4_roster_pilot_row_extdeps_react_effect_setup_ref: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "extdeps_react effect hooks require setup_ref", entry: "src/v4/test/claim/extdeps_react/structural_receipts.dag", - function: "extdeps_react_effect_hooks_require_setup_ref_holds" + function: "extdeps_react_effect_hooks_require_setup_ref_holds", + function_symbol: extdeps_react_effect_hooks_require_setup_ref_holds } data v4_roster_pilot_row_extdeps_react_host_key_ref: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "extdeps_react ReactHostElement key and ref fields", entry: "src/v4/test/claim/extdeps_react/structural_receipts.dag", - function: "extdeps_react_host_element_declares_key_and_ref_holds" + function: "extdeps_react_host_element_declares_key_and_ref_holds", + function_symbol: extdeps_react_host_element_declares_key_and_ref_holds } data v4_roster_pilot_row_extdeps_react_composite_key_ref: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "extdeps_react ReactCompositeElement key and ref fields", entry: "src/v4/test/claim/extdeps_react/structural_receipts.dag", - function: "extdeps_react_composite_element_declares_key_and_ref_holds" + function: "extdeps_react_composite_element_declares_key_and_ref_holds", + function_symbol: extdeps_react_composite_element_declares_key_and_ref_holds } data v4_roster_pilot_row_extdeps_react_fragment_key: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "extdeps_react Fragment arm declares key", entry: "src/v4/test/claim/extdeps_react/structural_receipts.dag", - function: "extdeps_react_fragment_arm_declares_key_holds" + function: "extdeps_react_fragment_arm_declares_key_holds", + function_symbol: extdeps_react_fragment_arm_declares_key_holds } data v4_roster_pilot_row_extdeps_react_element_children: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "extdeps_react element children are List", entry: "src/v4/test/claim/extdeps_react/structural_receipts.dag", - function: "extdeps_react_element_children_are_list_create_element_child_holds" + function: "extdeps_react_element_children_are_list_create_element_child_holds", + function_symbol: extdeps_react_element_children_are_list_create_element_child_holds } data v4_roster_pilot_row_extdeps_react_child_element_wraps: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "extdeps_react CreateElementChild Element wraps ReactElement", entry: "src/v4/test/claim/extdeps_react/structural_receipts.dag", - function: "extdeps_react_create_element_child_element_arm_wraps_react_element_holds" + function: "extdeps_react_create_element_child_element_arm_wraps_react_element_holds", + function_symbol: extdeps_react_create_element_child_element_arm_wraps_react_element_holds } // R2 keystone execution cert — emit(add) must produce the canonical rust_mvp1 add-fn source @@ -201,32 +281,37 @@ data v4_roster_pilot_row_extdeps_react_child_element_wraps: V4RosterPilotClaimRu data v4_roster_pilot_row_mvp1_rust_emit_add_fn: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "mvp1 rust emit add-fn (R2 grammar-inverse execution)", entry: "src/v4/test/claim/manual/mvp1_rust_add_translate.dag", - function: "mvp1_rust_emit_add_fn_accepts_holds" + function: "mvp1_rust_emit_add_fn_accepts_holds", + function_symbol: mvp1_rust_emit_add_fn_accepts_holds } // RTADD (ctrl#1489 D1) — dag add keystone emit→ingest round-trip via shared find_witness fold. data v4_roster_pilot_row_mvp1_dag_add_round_trip: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "mvp1 dag add emit→ingest round-trip (RTADD ctrl#1489)", entry: "src/v4/test/claim/manual/mvp1_dag_add_round_trip.dag", - function: "mvp1_dag_add_emit_ingest_round_trip_holds" + function: "mvp1_dag_add_emit_ingest_round_trip_holds", + function_symbol: mvp1_dag_add_emit_ingest_round_trip_holds } data v4_roster_pilot_row_mvp1_python_emit_add_fn: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "mvp1 python emit add-fn (T1 grammar-inverse execution)", entry: "src/v4/test/claim/manual/mvp1_python_add_translate.dag", - function: "mvp1_python_emit_add_fn_accepts_holds" + function: "mvp1_python_emit_add_fn_accepts_holds", + function_symbol: mvp1_python_emit_add_fn_accepts_holds } data v4_roster_pilot_row_mvp1_go_emit_add_fn: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "mvp1 go emit add-fn (T1 grammar-inverse execution)", entry: "src/v4/test/claim/manual/mvp1_go_add_translate.dag", - function: "mvp1_go_emit_add_fn_accepts_holds" + function: "mvp1_go_emit_add_fn_accepts_holds", + function_symbol: mvp1_go_emit_add_fn_accepts_holds } data v4_roster_pilot_row_mvp1_typescript_emit_add_fn: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "mvp1 typescript emit add-fn (T1 grammar-inverse execution)", entry: "src/v4/test/claim/manual/mvp1_typescript_add_translate.dag", - function: "mvp1_ts_emit_add_fn_accepts_holds" + function: "mvp1_ts_emit_add_fn_accepts_holds", + function_symbol: mvp1_ts_emit_add_fn_accepts_holds } // T1 tranche = rust (T0) + python/go/ts only. C++ deferred to T3 (TargetTypeExpressionProjection @@ -241,13 +326,15 @@ data v4_roster_pilot_row_mvp1_typescript_emit_add_fn: V4RosterPilotClaimRunRow = data v4_roster_pilot_row_coordination_obligation_exchange: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "coordination obligation table exchange arm-sharp", entry: "src/v4/test/claim/extdeps/coordination_claims.dag", - function: "coordination_obligation_exchange_arm_sharp_holds" + function: "coordination_obligation_exchange_arm_sharp_holds", + function_symbol: coordination_obligation_exchange_arm_sharp_holds } data v4_roster_pilot_row_coordination_obligation_settlement: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "coordination obligation table settlement arm-sharp", entry: "src/v4/test/claim/extdeps/coordination_claims.dag", - function: "coordination_obligation_settlement_arm_sharp_holds" + function: "coordination_obligation_settlement_arm_sharp_holds", + function_symbol: coordination_obligation_settlement_arm_sharp_holds } // Wave-A W1: v4.compiler.parse token_position_indices smoke→witness (iii) A-fold-delete. @@ -257,7 +344,8 @@ data v4_roster_pilot_row_coordination_obligation_settlement: V4RosterPilotClaimR data v4_roster_pilot_row_parse_table_token_position_indices: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "parse_table token_position_indices no-extra-append", entry: "src/v4/test/claim/parse/parse_table_claims.dag", - function: "parse_table_token_position_indices_no_extra_append_holds" + function: "parse_table_token_position_indices_no_extra_append_holds", + function_symbol: parse_table_token_position_indices_no_extra_append_holds } // Runtime-completeness: native-map miss -> Witness Violates bridge (v2_interpreter.rs @@ -268,7 +356,8 @@ data v4_roster_pilot_row_parse_table_token_position_indices: V4RosterPilotClaimR data v4_roster_pilot_row_map_lookup_miss_witness_violates: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "native-map miss presents as Witness Violates (Null bridge)", entry: "src/v4/test/claim/manual/map_lookup_miss_witness_violates.dag", - function: "map_lookup_miss_violates_and_hit_holds" + function: "map_lookup_miss_violates_and_hit_holds", + function_symbol: map_lookup_miss_violates_and_hit_holds } // Structural-key Map== is extensional set equality (decidable): a non-String-key map @@ -279,26 +368,30 @@ data v4_roster_pilot_row_map_lookup_miss_witness_violates: V4RosterPilotClaimRun data v4_roster_pilot_row_map_structural_key_equality: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "structural-key Map== is extensional set equality", entry: "src/v4/test/claim/manual/map_structural_key_equality.dag", - function: "map_structural_key_equality_holds" + function: "map_structural_key_equality_holds", + function_symbol: map_structural_key_equality_holds } // DERIVABLE-COERCION gap-proof acceptance test (nickname-triple CRUX matrix). data v4_roster_pilot_row_derivable_coercion_crux_substrate_gap: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "derivable_coercion CRUX substrate gap (no faithful sibling rule)", entry: "src/v4/test/claim/manual/derivable_coercion_nickname_triple.dag", - function: "witness_crux_substrate_gap" + function: "witness_crux_substrate_gap", + function_symbol: witness_crux_substrate_gap } data v4_roster_pilot_row_derivable_coercion_surfaces_distinct: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "derivable_coercion executing claim distinct surfaces", entry: "src/v4/test/claim/manual/derivable_coercion_nickname_triple.dag", - function: "witness_claim_task_id_surfaces_distinct" + function: "witness_claim_task_id_surfaces_distinct", + function_symbol: witness_claim_task_id_surfaces_distinct } data v4_roster_pilot_row_derivable_coercion_claim_crux_substrate_gap: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "derivable_coercion executing claim CRUX substrate gap", entry: "src/v4/test/claim/manual/derivable_coercion_nickname_triple.dag", - function: "witness_claim_crux_substrate_gap" + function: "witness_claim_crux_substrate_gap", + function_symbol: witness_claim_crux_substrate_gap } // Wave-A W2: lens smoke→witness fold-delete (application, idempotency, identical_variant, @@ -308,61 +401,71 @@ data v4_roster_pilot_row_derivable_coercion_claim_crux_substrate_gap: V4RosterPi data v4_roster_pilot_row_lens_application_introspect_advisory: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens application introspect advisory demotion", entry: "src/v4/test/claim/lens_application/sg_claims.dag", - function: "lens_application_introspect_advisory_holds" + function: "lens_application_introspect_advisory_holds", + function_symbol: lens_application_introspect_advisory_holds } data v4_roster_pilot_row_lens_application_synthesis_gap: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens application synthesis gap polynomial advisory", entry: "src/v4/test/claim/lens_application/sg_claims.dag", - function: "lens_application_synthesis_gap_polynomial_holds" + function: "lens_application_synthesis_gap_polynomial_holds", + function_symbol: lens_application_synthesis_gap_polynomial_holds } data v4_roster_pilot_row_lens_idempotency_write_effect: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens idempotency write-effect witness", entry: "src/v4/test/claim/lens_idempotency/sg_claims.dag", - function: "lens_idempotency_write_effect_holds" + function: "lens_idempotency_write_effect_holds", + function_symbol: lens_idempotency_write_effect_holds } data v4_roster_pilot_row_lens_identical_variant_unrealized: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens identical_variant_payload unrealized scaffold", entry: "src/v4/test/claim/lens_identical_variant_payload/sg_claims.dag", - function: "lens_identical_variant_payload_unrealized_scaffold_holds" + function: "lens_identical_variant_payload_unrealized_scaffold_holds", + function_symbol: lens_identical_variant_payload_unrealized_scaffold_holds } data v4_roster_pilot_row_lens_affected_set_irt1_boundary_prune: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens affected_set IRT-1 boundary prune", entry: "src/v4/test/claim/lens_affected_set/sg_claims.dag", - function: "lens_affected_set_irt1_boundary_prune_holds" + function: "lens_affected_set_irt1_boundary_prune_holds", + function_symbol: lens_affected_set_irt1_boundary_prune_holds } data v4_roster_pilot_row_lens_affected_set_irt1_fail_closed_pending: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens affected_set IRT-1 fail-closed pending escalation", entry: "src/v4/test/claim/lens_affected_set/sg_claims.dag", - function: "lens_affected_set_irt1_fail_closed_pending_escalation_holds" + function: "lens_affected_set_irt1_fail_closed_pending_escalation_holds", + function_symbol: lens_affected_set_irt1_fail_closed_pending_escalation_holds } data v4_roster_pilot_row_lens_affected_set_irt1_fail_closed_absorption: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens affected_set IRT-1 fail-closed absorption", entry: "src/v4/test/claim/lens_affected_set/sg_claims.dag", - function: "lens_affected_set_irt1_fail_closed_absorption_holds" + function: "lens_affected_set_irt1_fail_closed_absorption_holds", + function_symbol: lens_affected_set_irt1_fail_closed_absorption_holds } data v4_roster_pilot_row_lens_affected_set_irt1_empty_diff: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens affected_set IRT-1 empty diff frontier", entry: "src/v4/test/claim/lens_affected_set/sg_claims.dag", - function: "lens_affected_set_irt1_empty_diff_frontier_holds" + function: "lens_affected_set_irt1_empty_diff_frontier_holds", + function_symbol: lens_affected_set_irt1_empty_diff_frontier_holds } data v4_roster_pilot_row_lens_registry_required_ids_resolve: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens registry required ids resolve", entry: "src/v4/test/claim/lens_registry/sg_claims.dag", - function: "lens_registry_required_ids_resolve_holds" + function: "lens_registry_required_ids_resolve_holds", + function_symbol: lens_registry_required_ids_resolve_holds } data v4_roster_pilot_row_lens_registry_singleton_row_counts: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens registry singleton row counts", entry: "src/v4/test/claim/lens_registry/sg_claims.dag", - function: "lens_registry_singleton_row_counts_holds" + function: "lens_registry_singleton_row_counts_holds", + function_symbol: lens_registry_singleton_row_counts_holds } From 64c92382fdc01319acf086a4f9c9e2dcd0c82ef5 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 00:36:22 +0000 Subject: [PATCH 06/12] =?UTF-8?q?fix(v4):=20address=20#4576=20review=20?= =?UTF-8?q?=E2=80=94=20Symbol=20witness=20identity,=20dissolution=20receip?= =?UTF-8?q?ts,=20fail-closed=20projection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BoolWitness.function lands as Symbol per design §3.1; roster rows gain function_symbol pins while keeping function String for shell transport. Add coproduct dissolution classifications, replace fabricating total accessors with unified_test_claim_bool_witness Outcome projection. Co-authored-by: Cursor --- .../test-claim-consolidation-phase1-cut-list-2026-06-09.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/planning/test-claim-consolidation-phase1-cut-list-2026-06-09.md b/docs/planning/test-claim-consolidation-phase1-cut-list-2026-06-09.md index cce523d2566..6e51bb3b8c5 100644 --- a/docs/planning/test-claim-consolidation-phase1-cut-list-2026-06-09.md +++ b/docs/planning/test-claim-consolidation-phase1-cut-list-2026-06-09.md @@ -8,8 +8,8 @@ | artifact | before | after | | -------- | ------ | ----- | -| `src/v4/std/verification.dag` | `TestClaim` coproduct only | + `BoolWitness`, `TestClaimTransportMode`, `UnifiedTestClaimModality`, `UnifiedTestClaim` (both arms), modality + accessor fns | -| `src/v4/test/claim/workflow/v4_roster_pilot.dag` | `V4RosterPilotClaimRunRow` list only | + `bool_witness_from_roster_row` mechanical projection | +| `src/v4/std/verification.dag` | `TestClaim` coproduct only | + `BoolWitness` (`function: Symbol`), `TestClaimTransportMode`, `UnifiedTestClaimModality`, `UnifiedTestClaim` (both arms, dissolution receipts), `unified_test_claim_bool_witness` fail-closed `Outcome` projection | +| `src/v4/test/claim/workflow/v4_roster_pilot.dag` | `V4RosterPilotClaimRunRow` list only | + `function_symbol: Symbol` pins per row, `bool_witness_from_roster_row` mechanical projection (`function` String retained for shell transport) | | `src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag` | absent | Phase 1 compile-time equivalence tranche (`substrate_equivalence_holds`) | ## Explicit non-changes (this PR) From 6befddb3242ed74e800c2bef1db4c94598615de8 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 00:56:10 +0000 Subject: [PATCH 07/12] WIP: Consolidation #4553 Phase 1: model-first verification.dag BoolWitness/Un --- src/v4/std/verification.dag | 13 ++-- ...ified_test_claim_substrate_equivalence.dag | 4 +- .../test/claim/workflow/v4_roster_pilot.dag | 78 ++++++++++++++++++- 3 files changed, 85 insertions(+), 10 deletions(-) diff --git a/src/v4/std/verification.dag b/src/v4/std/verification.dag index 208c88ea716..69731560db6 100644 --- a/src/v4/std/verification.dag +++ b/src/v4/std/verification.dag @@ -517,30 +517,27 @@ type UnifiedTestClaim claim: TestClaim transport: TestClaimTransportMode } - | BoolWitness { - entry: String - function: Symbol - } + | BoolWitnessClaim { witness: BoolWitness } fn unified_test_claim_modality(c: UnifiedTestClaim) -> UnifiedTestClaimModality { match c { NodeCorpus { claim: _, transport: _ } => UnifiedNodeCorpusModality - BoolWitness { entry: _, function: _ } => UnifiedBoolWitnessModality + BoolWitnessClaim { witness: _ } => UnifiedBoolWitnessModality } } fn bool_witness_descriptor(w: BoolWitness) -> UnifiedTestClaim { - BoolWitness { entry: w.entry, function: w.function } + BoolWitnessClaim { witness: w } } // Arm-specific projection — Rejected on NodeCorpus (no fabricated empty String/Symbol). fn unified_test_claim_bool_witness(c: UnifiedTestClaim) -> Outcome { match c { - BoolWitness { entry: e, function: f } => - Accepted { value: BoolWitness { entry: e, function: f }, diagnostics: None } + BoolWitnessClaim { witness: w } => + Accepted { value: w, diagnostics: None } NodeCorpus { claim: _, transport: _ } => Rejected { diagnostics: diagnostics_singleton(d: unified_test_claim_bool_witness_absent_diagnostic()) diff --git a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag index cff8d7b732f..83c146ed11c 100644 --- a/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag +++ b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag @@ -22,6 +22,7 @@ import v4.std.verification { import v4.test.claim.manual.eval_runtime_mvp { claim_eval_mvp2_test_claim_route } import v4.test.claim.workflow.v4_roster_pilot { bool_witness_from_roster_row, + v4_roster_pilot_claim_run_row_transport_symbol_consistency_holds, v4_roster_pilot_row_edit_locus_narrow } @@ -82,7 +83,8 @@ fn substrate_equivalence_unified_claim_preserves_bool_fields() -> Bool { fn substrate_equivalence_holds() -> Bool { - substrate_equivalence_roster_projection_preserves_entry_function() + v4_roster_pilot_claim_run_row_transport_symbol_consistency_holds() + && substrate_equivalence_roster_projection_preserves_entry_function() && substrate_equivalence_bool_modality_discriminates() && substrate_equivalence_node_corpus_modality_discriminates() && substrate_equivalence_unified_claim_preserves_bool_fields() diff --git a/src/v4/test/claim/workflow/v4_roster_pilot.dag b/src/v4/test/claim/workflow/v4_roster_pilot.dag index 43ea546e07c..10762226027 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -6,7 +6,7 @@ module v4.test.claim.workflow.v4_roster_pilot import v4.std.algebra { count_equal, length } -import v4.std.collection { List } +import v4.std.collection { List, Map, empty_map, map_insert } import v4.std.logic { Bool } import v4.std.node { Symbol } import v4.std.text { String } @@ -65,9 +65,64 @@ data witness_sg2_arrow_holds: Symbol = witness_sg2_arrow_holds data witness_sg2_projection_falsification_holds: Symbol = witness_sg2_projection_falsification_holds +fn v4_roster_pilot_witness_function_spellings() -> Map { + let m0 = empty_map() + let m1 = map_insert(m0, edit_locus_narrow_resolution_holds, "edit_locus_narrow_resolution_holds") + let m2 = map_insert(m1, edit_locus_fail_closed_holds, "edit_locus_fail_closed_holds") + let m3 = map_insert(m2, witness_lens_testgen_scheduled_generators_carry_provenance_green, "witness_lens_testgen_scheduled_generators_carry_provenance_green") + let m4 = map_insert(m3, witness_lens_testgen_shadow_ci_run_receipt_green, "witness_lens_testgen_shadow_ci_run_receipt_green") + let m5 = map_insert(m4, witness_lens_testgen_schedules_dag_input_surface_green, "witness_lens_testgen_schedules_dag_input_surface_green") + let m6 = map_insert(m5, witness_lens_testgen_bootstrap_generator_reifies_dag_input_surface_green, "witness_lens_testgen_bootstrap_generator_reifies_dag_input_surface_green") + let m7 = map_insert(m6, witness_model_core_bool_fact_lookup_discriminates, "witness_model_core_bool_fact_lookup_discriminates") + let m8 = map_insert(m7, witness_grounding_terminal_gate_runtime_authoritative_discriminates, "witness_grounding_terminal_gate_runtime_authoritative_discriminates") + let m9 = map_insert(m8, ts_g2_sg1_symbol_carrier_holds, "ts_g2_sg1_symbol_carrier_holds") + let m10 = map_insert(m9, ts_g2_sg5_absence_fail_closed_holds, "ts_g2_sg5_absence_fail_closed_holds") + let m11 = map_insert(m10, discriminant_intrinsic_is_payload_blind_and_arm_sharp, "discriminant_intrinsic_is_payload_blind_and_arm_sharp") + let m12 = map_insert(m11, caret_sigil_surface_witness_holds, "caret_sigil_surface_witness_holds") + let m13 = map_insert(m12, sg_rc_f6_round_trip_owned, "sg_rc_f6_round_trip_owned") + let m14 = map_insert(m13, witness_sg2_arrow_holds, "witness_sg2_arrow_holds") + let m15 = map_insert(m14, witness_sg2_projection_falsification_holds, "witness_sg2_projection_falsification_holds") + let m16 = map_insert(m15, text_string_freemonoid_carrier_holds, "text_string_freemonoid_carrier_holds") + let m17 = map_insert(m16, text_host_string_roundtrip_holds, "text_host_string_roundtrip_holds") + let m18 = map_insert(m17, text_host_string_empty_roundtrip_holds, "text_host_string_empty_roundtrip_holds") + let m19 = map_insert(m18, text_host_string_field_text_holds, "text_host_string_field_text_holds") + let m20 = map_insert(m19, extdeps_react_use_memo_use_callback_dependencies_are_required_lists_holds, "extdeps_react_use_memo_use_callback_dependencies_are_required_lists_holds") + let m21 = map_insert(m20, extdeps_react_effect_hooks_require_setup_ref_holds, "extdeps_react_effect_hooks_require_setup_ref_holds") + let m22 = map_insert(m21, extdeps_react_host_element_declares_key_and_ref_holds, "extdeps_react_host_element_declares_key_and_ref_holds") + let m23 = map_insert(m22, extdeps_react_composite_element_declares_key_and_ref_holds, "extdeps_react_composite_element_declares_key_and_ref_holds") + let m24 = map_insert(m23, extdeps_react_fragment_arm_declares_key_holds, "extdeps_react_fragment_arm_declares_key_holds") + let m25 = map_insert(m24, extdeps_react_element_children_are_list_create_element_child_holds, "extdeps_react_element_children_are_list_create_element_child_holds") + let m26 = map_insert(m25, extdeps_react_create_element_child_element_arm_wraps_react_element_holds, "extdeps_react_create_element_child_element_arm_wraps_react_element_holds") + let m27 = map_insert(m26, mvp1_rust_emit_add_fn_accepts_holds, "mvp1_rust_emit_add_fn_accepts_holds") + let m28 = map_insert(m27, mvp1_dag_add_emit_ingest_round_trip_holds, "mvp1_dag_add_emit_ingest_round_trip_holds") + let m29 = map_insert(m28, mvp1_python_emit_add_fn_accepts_holds, "mvp1_python_emit_add_fn_accepts_holds") + let m30 = map_insert(m29, mvp1_go_emit_add_fn_accepts_holds, "mvp1_go_emit_add_fn_accepts_holds") + let m31 = map_insert(m30, mvp1_ts_emit_add_fn_accepts_holds, "mvp1_ts_emit_add_fn_accepts_holds") + let m32 = map_insert(m31, coordination_obligation_exchange_arm_sharp_holds, "coordination_obligation_exchange_arm_sharp_holds") + let m33 = map_insert(m32, coordination_obligation_settlement_arm_sharp_holds, "coordination_obligation_settlement_arm_sharp_holds") + let m34 = map_insert(m33, parse_table_token_position_indices_no_extra_append_holds, "parse_table_token_position_indices_no_extra_append_holds") + let m35 = map_insert(m34, lens_application_introspect_advisory_holds, "lens_application_introspect_advisory_holds") + let m36 = map_insert(m35, lens_application_synthesis_gap_polynomial_holds, "lens_application_synthesis_gap_polynomial_holds") + let m37 = map_insert(m36, lens_idempotency_write_effect_holds, "lens_idempotency_write_effect_holds") + let m38 = map_insert(m37, lens_identical_variant_payload_unrealized_scaffold_holds, "lens_identical_variant_payload_unrealized_scaffold_holds") + let m39 = map_insert(m38, lens_affected_set_irt1_boundary_prune_holds, "lens_affected_set_irt1_boundary_prune_holds") + let m40 = map_insert(m39, lens_affected_set_irt1_fail_closed_pending_escalation_holds, "lens_affected_set_irt1_fail_closed_pending_escalation_holds") + let m41 = map_insert(m40, lens_affected_set_irt1_fail_closed_absorption_holds, "lens_affected_set_irt1_fail_closed_absorption_holds") + let m42 = map_insert(m41, lens_affected_set_irt1_empty_diff_frontier_holds, "lens_affected_set_irt1_empty_diff_frontier_holds") + let m43 = map_insert(m42, lens_registry_required_ids_resolve_holds, "lens_registry_required_ids_resolve_holds") + let m44 = map_insert(m43, lens_registry_singleton_row_counts_holds, "lens_registry_singleton_row_counts_holds") + let m45 = map_insert(m44, map_lookup_miss_violates_and_hit_holds, "map_lookup_miss_violates_and_hit_holds") + let m46 = map_insert(m45, map_structural_key_equality_holds, "map_structural_key_equality_holds") + let m47 = map_insert(m46, witness_crux_substrate_gap, "witness_crux_substrate_gap") + let m48 = map_insert(m47, witness_claim_task_id_surfaces_distinct, "witness_claim_task_id_surfaces_distinct") + map_insert(m48, witness_claim_crux_substrate_gap, "witness_claim_crux_substrate_gap") +} + + type V4RosterPilotClaimRunRow { label: String entry: String + // 🟡 gated — feature:v4-roster-pilot-symbol-transport-bridge — shell `function` String is transport projection of `function_symbol` via `v4_roster_pilot_witness_function_spellings`; dissolve-on: Phase 4 CI transport consumes Symbol authority; forbidden: independent `function` edits diverging from spellings map. function: String function_symbol: Symbol } @@ -79,6 +134,14 @@ fn bool_witness_from_roster_row(row: V4RosterPilotClaimRunRow) -> BoolWitness { } +fn v4_roster_pilot_row_function_transport_matches_symbol(row: V4RosterPilotClaimRunRow) -> Bool { + match v4_roster_pilot_witness_function_spellings().lookup(row.function_symbol) { + Some { value: spelling } => row.function == spelling + None => false + } +} + + data v4_roster_pilot_row_edit_locus_narrow: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "edit-locus narrow resolution", entry: "src/v4/test/claim/lens_affected_set/edit_locus_resolver.dag", @@ -521,6 +584,18 @@ data v4_roster_pilot_claim_run_rows: List = [ v4_roster_pilot_row_derivable_coercion_claim_crux_substrate_gap ] + +fn v4_roster_pilot_claim_run_row_transport_symbol_consistency_holds() -> Bool { + fold( + v4_roster_pilot_claim_run_rows, + init: true, + f: fn(acc, row) { + acc && v4_roster_pilot_row_function_transport_matches_symbol(row: row) + } + ) +} + + // Host transport projection: shell reads this count and list member names only (not free awk scan). data v4_roster_pilot_claim_run_row_count: String = "49" @@ -602,6 +677,7 @@ fn witness_v4_roster_pilot_declares_claim_run_rows() -> Bool { (length(xs: v4_roster_pilot_claim_run_rows) == 49) && (v4_roster_pilot_claim_run_row_count == "49") && v4_roster_pilot_claim_run_list_composition_holds() + && v4_roster_pilot_claim_run_row_transport_symbol_consistency_holds() && v4_roster_pilot_row_matches( row: v4_roster_pilot_row_edit_locus_narrow, entry: "src/v4/test/claim/lens_affected_set/edit_locus_resolver.dag", From 75361148b5b9a4baf895cedc3218208f2de9e5c1 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 03:31:48 +0000 Subject: [PATCH 08/12] WIP: Consolidation #4553 Phase 1: model-first verification.dag BoolWitness/Un --- .../test/claim/workflow/v4_roster_pilot.dag | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/v4/test/claim/workflow/v4_roster_pilot.dag b/src/v4/test/claim/workflow/v4_roster_pilot.dag index 94259f9828d..bd64151a0e7 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -45,7 +45,9 @@ data mvp1_python_emit_add_fn_accepts_holds: Symbol = mvp1_python_emit_add_fn_acc data mvp1_rust_emit_add_fn_accepts_holds: Symbol = mvp1_rust_emit_add_fn_accepts_holds data mvp1_ts_emit_add_fn_accepts_holds: Symbol = mvp1_ts_emit_add_fn_accepts_holds data parse_table_token_position_indices_no_extra_append_holds: Symbol = parse_table_token_position_indices_no_extra_append_holds +data scheduler_runnable_frontier_claims_hold: Symbol = scheduler_runnable_frontier_claims_hold data sg_rc_f6_round_trip_owned: Symbol = sg_rc_f6_round_trip_owned +data sg_rc_value_rc_wrap_tagged: Symbol = sg_rc_value_rc_wrap_tagged data text_host_string_empty_roundtrip_holds: Symbol = text_host_string_empty_roundtrip_holds data text_host_string_field_text_holds: Symbol = text_host_string_field_text_holds data text_host_string_roundtrip_holds: Symbol = text_host_string_roundtrip_holds @@ -60,6 +62,8 @@ data witness_lens_testgen_bootstrap_generator_reifies_dag_input_surface_green: S data witness_lens_testgen_scheduled_generators_carry_provenance_green: Symbol = witness_lens_testgen_scheduled_generators_carry_provenance_green data witness_lens_testgen_schedules_dag_input_surface_green: Symbol = witness_lens_testgen_schedules_dag_input_surface_green data witness_lens_testgen_shadow_ci_run_receipt_green: Symbol = witness_lens_testgen_shadow_ci_run_receipt_green +data witness_lens_idempotency_family_gate_closed: Symbol = witness_lens_idempotency_family_gate_closed +data witness_lens_parallelism_family_gate_closed: Symbol = witness_lens_parallelism_family_gate_closed data witness_model_core_bool_fact_lookup_discriminates: Symbol = witness_model_core_bool_fact_lookup_discriminates data witness_sg2_arrow_holds: Symbol = witness_sg2_arrow_holds data witness_sg2_projection_falsification_holds: Symbol = witness_sg2_projection_falsification_holds @@ -115,7 +119,11 @@ fn v4_roster_pilot_witness_function_spellings() -> Map { let m46 = map_insert(m45, map_structural_key_equality_holds, "map_structural_key_equality_holds") let m47 = map_insert(m46, witness_crux_substrate_gap, "witness_crux_substrate_gap") let m48 = map_insert(m47, witness_claim_task_id_surfaces_distinct, "witness_claim_task_id_surfaces_distinct") - map_insert(m48, witness_claim_crux_substrate_gap, "witness_claim_crux_substrate_gap") + let m49 = map_insert(m48, witness_claim_crux_substrate_gap, "witness_claim_crux_substrate_gap") + let m50 = map_insert(m49, sg_rc_value_rc_wrap_tagged, "sg_rc_value_rc_wrap_tagged") + let m51 = map_insert(m50, witness_lens_idempotency_family_gate_closed, "witness_lens_idempotency_family_gate_closed") + let m52 = map_insert(m51, witness_lens_parallelism_family_gate_closed, "witness_lens_parallelism_family_gate_closed") + map_insert(m52, scheduler_runnable_frontier_claims_hold, "scheduler_runnable_frontier_claims_hold") } @@ -247,7 +255,8 @@ data v4_roster_pilot_row_sg_rc_f6_owned: V4RosterPilotClaimRunRow = V4RosterPilo data v4_roster_pilot_row_sg_rc_value_rc_wrap_tagged: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "sg-rc value Rc-wrap node content_hash (atom_identity_hash crash fix)", entry: "src/v4/test/claim/manual/sg_rc_layering.dag", - function: "sg_rc_value_rc_wrap_tagged" + function: "sg_rc_value_rc_wrap_tagged", + function_symbol: sg_rc_value_rc_wrap_tagged } // T3 Phase A (ctrl#1489) — SG-2 green-on-current claim-run witnesses only (mutation-proven). @@ -494,13 +503,15 @@ data v4_roster_pilot_row_lens_idempotency_write_effect: V4RosterPilotClaimRunRow data v4_roster_pilot_row_lens_idempotency_family_gate: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens idempotency family gate closed", entry: "src/v4/test/claim/workflow/lens_idempotency_family_eval.dag", - function: "witness_lens_idempotency_family_gate_closed" + function: "witness_lens_idempotency_family_gate_closed", + function_symbol: witness_lens_idempotency_family_gate_closed } data v4_roster_pilot_row_lens_parallelism_family_gate: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens parallelism family gate closed", entry: "src/v4/test/claim/workflow/lens_parallelism_family_eval.dag", - function: "witness_lens_parallelism_family_gate_closed" + function: "witness_lens_parallelism_family_gate_closed", + function_symbol: witness_lens_parallelism_family_gate_closed } data v4_roster_pilot_row_lens_identical_variant_unrealized: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { @@ -555,7 +566,8 @@ data v4_roster_pilot_row_lens_registry_singleton_row_counts: V4RosterPilotClaimR data v4_roster_pilot_row_scheduler_runnable_frontier: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "scheduler runnable frontier respects dependency order", entry: "src/v4/test/claim/manual/scheduler_runnable_frontier.dag", - function: "scheduler_runnable_frontier_claims_hold" + function: "scheduler_runnable_frontier_claims_hold", + function_symbol: scheduler_runnable_frontier_claims_hold } From b5b747040634ffa1b2c9fb63b2922e6d7f519297 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 04:06:05 +0000 Subject: [PATCH 09/12] WIP: Consolidation #4553 Phase 1: model-first verification.dag BoolWitness/Un --- src/v4/test/claim/workflow/v4_roster_pilot.dag | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/v4/test/claim/workflow/v4_roster_pilot.dag b/src/v4/test/claim/workflow/v4_roster_pilot.dag index bd64151a0e7..a1602b12adb 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -6,7 +6,7 @@ module v4.test.claim.workflow.v4_roster_pilot import v4.std.algebra { count_equal, length } -import v4.std.collection { List, Map, empty_map, map_insert } +import v4.std.collection { List, Map, empty_map, map_get, map_insert } import v4.std.logic { Bool } import v4.std.node { Symbol } import v4.std.text { String } @@ -142,10 +142,16 @@ fn bool_witness_from_roster_row(row: V4RosterPilotClaimRunRow) -> BoolWitness { } +// 🟡 gated — bootstrap-limitation interim — feature:B-LOOKUP-1 — map_get(Outcome>); +// dissolve-on: bootstrap Witness dispatch at Map.lookup (substrate Witness at v4.std.collection:70); +// site: v4_roster_pilot_row_function_transport_matches_symbol spellings bridge. fn v4_roster_pilot_row_function_transport_matches_symbol(row: V4RosterPilotClaimRunRow) -> Bool { - match v4_roster_pilot_witness_function_spellings().lookup(row.function_symbol) { - Some { value: spelling } => row.function == spelling - None => false + match map_get(m: v4_roster_pilot_witness_function_spellings(), key: row.function_symbol) { + Accepted { value: opt, diagnostics: _ } => match opt { + Present { value: spelling } => row.function == spelling + Absent => false + } + Rejected { diagnostics: _ } => false } } From 5b5d89701b9da17733049b23b1c56fc645078cda Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 06:30:05 +0000 Subject: [PATCH 10/12] WIP: Consolidation #4553 Phase 1: model-first verification.dag BoolWitness/Un --- src/v4/test/claim/workflow/v4_roster_pilot.dag | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/v4/test/claim/workflow/v4_roster_pilot.dag b/src/v4/test/claim/workflow/v4_roster_pilot.dag index f5c250968f4..6f194d58eda 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -32,6 +32,7 @@ data lens_affected_set_irt1_empty_diff_frontier_holds: Symbol = lens_affected_se data lens_affected_set_irt1_fail_closed_absorption_holds: Symbol = lens_affected_set_irt1_fail_closed_absorption_holds data lens_affected_set_irt1_fail_closed_pending_escalation_holds: Symbol = lens_affected_set_irt1_fail_closed_pending_escalation_holds data lens_application_introspect_advisory_holds: Symbol = lens_application_introspect_advisory_holds +data lens_application_synthesis_gap_enforce_rejection_holds: Symbol = lens_application_synthesis_gap_enforce_rejection_holds data lens_application_synthesis_gap_polynomial_holds: Symbol = lens_application_synthesis_gap_polynomial_holds data lens_idempotency_write_effect_holds: Symbol = lens_idempotency_write_effect_holds data lens_identical_variant_payload_unrealized_scaffold_holds: Symbol = lens_identical_variant_payload_unrealized_scaffold_holds @@ -107,7 +108,8 @@ fn v4_roster_pilot_witness_function_spellings() -> Map { let m34 = map_insert(m33, parse_table_token_position_indices_no_extra_append_holds, "parse_table_token_position_indices_no_extra_append_holds") let m35 = map_insert(m34, lens_application_introspect_advisory_holds, "lens_application_introspect_advisory_holds") let m36 = map_insert(m35, lens_application_synthesis_gap_polynomial_holds, "lens_application_synthesis_gap_polynomial_holds") - let m37 = map_insert(m36, lens_idempotency_write_effect_holds, "lens_idempotency_write_effect_holds") + let m37 = map_insert(m36, lens_application_synthesis_gap_enforce_rejection_holds, "lens_application_synthesis_gap_enforce_rejection_holds") + let m38 = map_insert(m37, lens_idempotency_write_effect_holds, "lens_idempotency_write_effect_holds") let m38 = map_insert(m37, lens_identical_variant_payload_unrealized_scaffold_holds, "lens_identical_variant_payload_unrealized_scaffold_holds") let m39 = map_insert(m38, lens_affected_set_irt1_boundary_prune_holds, "lens_affected_set_irt1_boundary_prune_holds") let m40 = map_insert(m39, lens_affected_set_irt1_fail_closed_pending_escalation_holds, "lens_affected_set_irt1_fail_closed_pending_escalation_holds") From 14d725715344d61d42fffc3eae398a9f745aaead Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 06:34:18 +0000 Subject: [PATCH 11/12] fix(v4): complete phase1 roster symbol bridge after merge --- .../test/claim/workflow/v4_roster_pilot.dag | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/v4/test/claim/workflow/v4_roster_pilot.dag b/src/v4/test/claim/workflow/v4_roster_pilot.dag index 6f194d58eda..ee62f3172ac 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -110,22 +110,22 @@ fn v4_roster_pilot_witness_function_spellings() -> Map { let m36 = map_insert(m35, lens_application_synthesis_gap_polynomial_holds, "lens_application_synthesis_gap_polynomial_holds") let m37 = map_insert(m36, lens_application_synthesis_gap_enforce_rejection_holds, "lens_application_synthesis_gap_enforce_rejection_holds") let m38 = map_insert(m37, lens_idempotency_write_effect_holds, "lens_idempotency_write_effect_holds") - let m38 = map_insert(m37, lens_identical_variant_payload_unrealized_scaffold_holds, "lens_identical_variant_payload_unrealized_scaffold_holds") - let m39 = map_insert(m38, lens_affected_set_irt1_boundary_prune_holds, "lens_affected_set_irt1_boundary_prune_holds") - let m40 = map_insert(m39, lens_affected_set_irt1_fail_closed_pending_escalation_holds, "lens_affected_set_irt1_fail_closed_pending_escalation_holds") - let m41 = map_insert(m40, lens_affected_set_irt1_fail_closed_absorption_holds, "lens_affected_set_irt1_fail_closed_absorption_holds") - let m42 = map_insert(m41, lens_affected_set_irt1_empty_diff_frontier_holds, "lens_affected_set_irt1_empty_diff_frontier_holds") - let m43 = map_insert(m42, lens_registry_required_ids_resolve_holds, "lens_registry_required_ids_resolve_holds") - let m44 = map_insert(m43, lens_registry_singleton_row_counts_holds, "lens_registry_singleton_row_counts_holds") - let m45 = map_insert(m44, map_lookup_miss_violates_and_hit_holds, "map_lookup_miss_violates_and_hit_holds") - let m46 = map_insert(m45, map_structural_key_equality_holds, "map_structural_key_equality_holds") - let m47 = map_insert(m46, witness_crux_substrate_gap, "witness_crux_substrate_gap") - let m48 = map_insert(m47, witness_claim_task_id_surfaces_distinct, "witness_claim_task_id_surfaces_distinct") - let m49 = map_insert(m48, witness_claim_crux_substrate_gap, "witness_claim_crux_substrate_gap") - let m50 = map_insert(m49, sg_rc_value_rc_wrap_tagged, "sg_rc_value_rc_wrap_tagged") - let m51 = map_insert(m50, witness_lens_idempotency_family_gate_closed, "witness_lens_idempotency_family_gate_closed") - let m52 = map_insert(m51, witness_lens_parallelism_family_gate_closed, "witness_lens_parallelism_family_gate_closed") - map_insert(m52, scheduler_runnable_frontier_claims_hold, "scheduler_runnable_frontier_claims_hold") + let m39 = map_insert(m38, lens_identical_variant_payload_unrealized_scaffold_holds, "lens_identical_variant_payload_unrealized_scaffold_holds") + let m40 = map_insert(m39, lens_affected_set_irt1_boundary_prune_holds, "lens_affected_set_irt1_boundary_prune_holds") + let m41 = map_insert(m40, lens_affected_set_irt1_fail_closed_pending_escalation_holds, "lens_affected_set_irt1_fail_closed_pending_escalation_holds") + let m42 = map_insert(m41, lens_affected_set_irt1_fail_closed_absorption_holds, "lens_affected_set_irt1_fail_closed_absorption_holds") + let m43 = map_insert(m42, lens_affected_set_irt1_empty_diff_frontier_holds, "lens_affected_set_irt1_empty_diff_frontier_holds") + let m44 = map_insert(m43, lens_registry_required_ids_resolve_holds, "lens_registry_required_ids_resolve_holds") + let m45 = map_insert(m44, lens_registry_singleton_row_counts_holds, "lens_registry_singleton_row_counts_holds") + let m46 = map_insert(m45, map_lookup_miss_violates_and_hit_holds, "map_lookup_miss_violates_and_hit_holds") + let m47 = map_insert(m46, map_structural_key_equality_holds, "map_structural_key_equality_holds") + let m48 = map_insert(m47, witness_crux_substrate_gap, "witness_crux_substrate_gap") + let m49 = map_insert(m48, witness_claim_task_id_surfaces_distinct, "witness_claim_task_id_surfaces_distinct") + let m50 = map_insert(m49, witness_claim_crux_substrate_gap, "witness_claim_crux_substrate_gap") + let m51 = map_insert(m50, sg_rc_value_rc_wrap_tagged, "sg_rc_value_rc_wrap_tagged") + let m52 = map_insert(m51, witness_lens_idempotency_family_gate_closed, "witness_lens_idempotency_family_gate_closed") + let m53 = map_insert(m52, witness_lens_parallelism_family_gate_closed, "witness_lens_parallelism_family_gate_closed") + map_insert(m53, scheduler_runnable_frontier_claims_hold, "scheduler_runnable_frontier_claims_hold") } @@ -504,7 +504,8 @@ data v4_roster_pilot_row_lens_application_synthesis_gap: V4RosterPilotClaimRunRo data v4_roster_pilot_row_lens_application_synthesis_gap_enforce: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { label: "lens application synthesis gap enforce rejection", entry: "src/v4/test/claim/lens_application/sg_claims.dag", - function: "lens_application_synthesis_gap_enforce_rejection_holds" + function: "lens_application_synthesis_gap_enforce_rejection_holds", + function_symbol: lens_application_synthesis_gap_enforce_rejection_holds } data v4_roster_pilot_row_lens_idempotency_write_effect: V4RosterPilotClaimRunRow = V4RosterPilotClaimRunRow { @@ -655,7 +656,7 @@ fn v4_roster_pilot_claim_run_row_transport_symbol_consistency_holds() -> Bool { // Host transport projection: shell reads this count and list member names only (not free awk scan). -data v4_roster_pilot_claim_run_row_count: String = "53" +data v4_roster_pilot_claim_run_row_count: String = "54" fn v4_roster_pilot_row_matches( @@ -737,8 +738,8 @@ fn v4_roster_pilot_claim_run_list_composition_holds() -> Bool { fn witness_v4_roster_pilot_declares_claim_run_rows() -> Bool { - (length(xs: v4_roster_pilot_claim_run_rows) == 53) - && (v4_roster_pilot_claim_run_row_count == "53") + (length(xs: v4_roster_pilot_claim_run_rows) == 54) + && (v4_roster_pilot_claim_run_row_count == "54") && v4_roster_pilot_claim_run_list_composition_holds() && v4_roster_pilot_claim_run_row_transport_symbol_consistency_holds() && v4_roster_pilot_row_matches( From 183d45ca0212d05fce7d66c55baa6f3351f51271 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Tue, 9 Jun 2026 15:31:33 +0000 Subject: [PATCH 12/12] WIP: Consolidation #4553 Phase 1: model-first verification.dag BoolWitness/Un --- src/v4/test/claim/workflow/v4_roster_pilot.dag | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/v4/test/claim/workflow/v4_roster_pilot.dag b/src/v4/test/claim/workflow/v4_roster_pilot.dag index ee62f3172ac..84de4f26879 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -6,7 +6,8 @@ module v4.test.claim.workflow.v4_roster_pilot import v4.std.algebra { count_equal, length } -import v4.std.collection { List, Map, empty_map, map_get, map_insert } +import v4.std.collection { Absent, List, Map, Present, empty_map, map_get, map_insert } +import v4.std.diagnostic { Accepted, Rejected } import v4.std.logic { Bool } import v4.std.node { Symbol } import v4.std.text { String }