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..6e51bb3b8c5 --- /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` (`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) + +| 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/std/verification.dag b/src/v4/std/verification.dag index c3feb7396e3..69731560db6 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, @@ -30,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 { @@ -41,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 @@ -464,3 +476,80 @@ 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. +// 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: 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 + + +// 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 + } + | BoolWitnessClaim { witness: BoolWitness } + + +fn unified_test_claim_modality(c: UnifiedTestClaim) -> UnifiedTestClaimModality { + match c { + NodeCorpus { claim: _, transport: _ } => UnifiedNodeCorpusModality + BoolWitnessClaim { witness: _ } => UnifiedBoolWitnessModality + } +} + + +fn bool_witness_descriptor(w: BoolWitness) -> UnifiedTestClaim { + 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 { + BoolWitnessClaim { witness: w } => + Accepted { value: w, diagnostics: None } + NodeCorpus { claim: _, transport: _ } => + Rejected { + diagnostics: diagnostics_singleton(d: unified_test_claim_bool_witness_absent_diagnostic()) + } + } +} + + +fn bool_witness_matches_entry_function( + w: BoolWitness, + entry: 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 new file mode 100644 index 00000000000..83c146ed11c --- /dev/null +++ b/src/v4/test/claim/workflow/unified_test_claim_substrate_equivalence.dag @@ -0,0 +1,94 @@ +// 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.diagnostic { Accepted, Rejected } +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, + 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_claim_run_row_transport_symbol_consistency_holds, + 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_symbol + ) +} + + +fn substrate_equivalence_bool_modality_discriminates() -> Bool { + match unified_test_claim_modality(c: substrate_equivalence_sample_bool_unified_claim()) { + UnifiedBoolWitnessModality => true + UnifiedNodeCorpusModality => false + } +} + + +fn substrate_equivalence_node_corpus_modality_discriminates() -> Bool { + match unified_test_claim_modality(c: substrate_equivalence_sample_node_corpus_claim()) { + UnifiedNodeCorpusModality => true + UnifiedBoolWitnessModality => false + } +} + + +fn substrate_equivalence_unified_claim_preserves_bool_fields() -> Bool { + 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 + } +} + + +fn substrate_equivalence_holds() -> Bool { + 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() +} + + +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 81f6215ecbd..84de4f26879 100644 --- a/src/v4/test/claim/workflow/v4_roster_pilot.dag +++ b/src/v4/test/claim/workflow/v4_roster_pilot.dag @@ -6,54 +6,201 @@ module v4.test.claim.workflow.v4_roster_pilot import v4.std.algebra { count_equal, length } -import v4.std.collection { List } +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 } +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_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 +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 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 +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_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 + + +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_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 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") +} 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 +} + + +// 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_symbol } +} + + +// 🟡 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 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 + } } 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). @@ -61,7 +208,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). @@ -69,31 +217,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 @@ -101,7 +254,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 } // CRASH->GREEN: self-named *_atom Symbol decls (target_model.dag L246-252) fix. @@ -110,7 +264,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). @@ -118,13 +273,15 @@ data v4_roster_pilot_row_sg_rc_value_rc_wrap_tagged: V4RosterPilotClaimRunRow = 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 @@ -134,68 +291,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 @@ -203,32 +371,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 @@ -243,13 +416,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. @@ -259,7 +434,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 @@ -270,7 +446,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 @@ -281,26 +458,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, @@ -310,85 +491,99 @@ 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_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 { 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_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 { 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 } 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 } @@ -449,8 +644,20 @@ data v4_roster_pilot_claim_run_rows: List = [ v4_roster_pilot_row_scheduler_runnable_frontier ] + +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 = "53" +data v4_roster_pilot_claim_run_row_count: String = "54" fn v4_roster_pilot_row_matches( @@ -532,9 +739,10 @@ 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( row: v4_roster_pilot_row_edit_locus_narrow, entry: "src/v4/test/claim/lens_affected_set/edit_locus_resolver.dag",