Skip to content

NFR burn-down: src/v2/std (target-model) — enumerate closed-coproduct wildcard arms - #12671

Closed
gunbai-bot[bot] wants to merge 9 commits into
mainfrom
nfr-v2-std-target-model
Closed

gunbai-bot[bot] wants to merge 9 commits into
mainfrom
nfr-v2-std-target-model

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

Typed NFR census burn-down (work item adhoc-960694d5-b65, lane of zesty-owl-698 / #12610).

Each _ => arm in a census-listed decl whose scrutinee is a closed coproduct is replaced by the explicit remaining variants, each carrying the wildcard's body verbatim (nested NodeKind wildcards expand to TypeNode { connective: <rest> } + ComputationNode { behavior: _ }, following the existing lens precedent). Behavior is identical; no refactor.

Kept (not enumerated): wildcards whose multi-line body would be cloned across 2+ arms (DESIGN §2 redundancy), and Int-literal matches. These are reported per-site in the lane handoff to zesty-owl-698; no non_fold_residue.dag rows are added here (they would read stale to the old scan).

Evidence: CI floor on this PR (the module still compiles and exhaustiveness is checked there).

🤖 Generated with Claude Code

…r closed coproducts

Each `_ =>` over a closed coproduct scrutinee listed in the typed NFR census
is replaced by the explicit remaining variants, each carrying the wildcard's
body verbatim; behavior is unchanged. Wildcards whose multi-line body would be
cloned across several arms are kept and reported in the lane handoff with a
per-site reason.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Sep 29, 2026

Copy link
Copy Markdown
Contributor Author

Kept wildcards, src/v2/std lane (per site)

These are NOT rostered on main. They are listed here for zesty-owl-698's joint landing on #12610. Lines refer to main@785934a.

  • src/v2/std/compilers/body_lowering.dag::application_head_optional (L295 on main@785934a): keep — enumerating clones a 5-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::decode_semantic_decl_surface_projection_bool_flag (L1037 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::decode_semantic_decl_surface_projection_coproduct_layout (L1087 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::semantic_decl_binding_spelling_rows_from_catalog (L478 on main@785934a): keep — enumerating clones a 3-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::semantic_decl_coproduct_decoration_rules_from_catalog (L901 on main@785934a): keep — enumerating clones a 3-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::semantic_decl_decoration_lines_from_catalog (L800 on main@785934a): keep — enumerating clones a 3-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::semantic_decl_lex_rule_rows_from_catalog (L356 on main@785934a): keep — enumerating clones a 3-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::semantic_decl_string_from_bundle_node (L191 on main@785934a): keep — enumerating clones a 3-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::semantic_decl_string_from_bundle_node (L199 on main@785934a): keep — enumerating clones a 3-line body into 5 arms (TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 5 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::target_semantic_decl_coproduct_shape_key (L1796 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Conj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::target_semantic_decl_field_surface_from_edge (L1450 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::target_semantic_enum_surface_from_coproduct_admitted (L2174 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Conj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/semantic_decl_emission.dag::target_semantic_struct_surface_from_record_admitted (L2244 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/sugar.dag::sugar_separated_rhs_as_coproduct (L297 on main@785934a): keep — enumerating clones a 14-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Conj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::canonical_operation_from_wire_node (L2454 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::concrete_syntax_token_from_wire_node (L4473 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::concrete_syntax_token_node_targets_into (L4248 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::concrete_syntax_token_wire_schema_valid (L4423 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::decode_bodied_arrow_statement_scaffold_bundle (L4328 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::decode_int_literal_shape_bundle (L3493 on main@785934a): keep — enumerating clones a 10-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::decode_optional_projection_bundle_symbol_field (L3878 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::decode_type_expression_projection_bundle (L4124 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::decode_value_expression_projection_bundle (L3862 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::produced_decl_subject_from_decl (L816 on main@785934a): keep — enumerating clones a 7-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::produced_decl_type_ref_tokens (L382 on main@785934a): keep — enumerating clones a 7-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::projection_bundle_symbol_field (L2775 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_atom_realization_lookup_in_catalog_node (L9688 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_constructor_template_from_node (L9290 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_function_boundary_site_from_node (L9781 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_function_signature_realization_lookup_in_catalog_node (L9976 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_model_node_atom_identity (L12677 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_operator_realization_catalog_lookup (L5878 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_operator_realization_catalog_wire_schema_valid (L5809 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_project_arrow_body_by_kind (L15666 on main@785934a): keep — enumerating clones a 7-line body into 5 arms (TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: Value }). Dissolves when that body is a named fn (then 5 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_project_callable_arg_in_arrow_scope (L14276 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_project_field_access (L14766 on main@785934a): keep — enumerating clones a 7-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_project_realized_closure (L15479 on main@785934a): keep — enumerating clones a 23-line body into 5 arms (DirectAtomBody | RecordConstructBody | DeclarationReferenceBody | ComputationBody { behavior: _ } | UnsupportedArrowBody). Dissolves when that body is a named fn (then 5 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_project_realized_closure (L15493 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_project_record_construct (L14676 on main@785934a): keep — enumerating clones a 7-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_reference_layer_tokens_from_node (L13367 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_transform_positional_operand_binding_atom (L13942 on main@785934a): keep — enumerating clones a 7-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_use_site_ownership_lookup_in_catalog_node (L12909 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_use_site_ownership_reference_catalog_lookup (L12882 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_bind_let_wire_schema_valid (L6376 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_binding_ref_wire_schema_valid (L4976 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_bool_literal_octet_body_tokens (L7798 on main@785934a): keep — enumerating clones a 7-line body into 18 arms (TargetValueExprSymbolIdentity | TargetValueExprSymbolToOwnedString | TargetValueExprCharUnicodeScalar | TargetValueExprStringLiteral | TargetValueExprIntLiteral | TargetValueExprReferenceRcNew | TargetValueExprReferenceBoxNew | TargetValueExprBindingRef | TargetValueExprPrimitiveApply | TargetValueExprEffectApply | TargetValueExprCallableApply | TargetValueExprClosure | TargetValueExprConditional | TargetValueExprBindLet | TargetValueExprLoop | TargetValueExprRecordConstruct | TargetValueExprFieldAccess | TargetValueExprMatch). Dissolves when that body is a named fn (then 18 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_closure_params_from_wire (L8387 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_conditional_wire_schema_valid (L6306 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_effect_apply_wire_schema_valid (L5200 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_field_access_wire_schema_valid (L7287 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_int_bool_octet_scrutinee_carrier_tokens (L7839 on main@785934a): keep — enumerating clones a 4-line body into 4 arms (PrefixToken { token: _ } | CallIdent { ident: _ } | MethodIdent { ident: _ } | OperandUnchanged). Dissolves when that body is a named fn (then 4 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_loop_wire_schema_valid (L6572 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_match_arm_wire_schema_valid (L7420 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_match_wire_schema_valid (L7481 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_primitive_apply_wire_schema_valid (L5062 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_project_atom_in_arrow_scope (L14512 on main@785934a): keep — enumerating clones a 7-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_project_atom_literal_or (L14556 on main@785934a): keep — enumerating clones a 7-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_project_body_subexpression (L15327 on main@785934a): keep — enumerating clones a 7-line body into 4 arms (TypeNode { connective: Disj } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: Value }). Dissolves when that body is a named fn (then 4 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_record_construct_wire_schema_valid (L6698 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expr_wire_atom_identity (L6670 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expression_bool_literal_to_concrete_tokens (L8067 on main@785934a): keep — enumerating clones a 4-line body into 18 arms (TargetValueExprSymbolIdentity | TargetValueExprSymbolToOwnedString | TargetValueExprCharUnicodeScalar | TargetValueExprStringLiteral | TargetValueExprIntLiteral | TargetValueExprReferenceRcNew | TargetValueExprReferenceBoxNew | TargetValueExprBindingRef | TargetValueExprPrimitiveApply | TargetValueExprEffectApply | TargetValueExprCallableApply | TargetValueExprClosure | TargetValueExprConditional | TargetValueExprBindLet | TargetValueExprLoop | TargetValueExprRecordConstruct | TargetValueExprFieldAccess | TargetValueExprMatch). Dissolves when that body is a named fn (then 18 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expression_reify_from_wire (L6263 on main@785934a): keep — enumerating clones a 9-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_expression_to_concrete_tokens (L8643 on main@785934a): keep — enumerating clones a 4-line body into 5 arms (TargetValueExprSymbolToOwnedString | TargetValueExprCharUnicodeScalar | TargetValueExprStringLiteral | TargetValueExprReferenceRcNew | TargetValueExprReferenceBoxNew). Dissolves when that body is a named fn (then 5 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_value_template_from_node (L9634 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/decl_facts_skeleton.dag::skeleton_atom_lexeme_census_fold (L206 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::derive_grammar_relation_row_node_resolved (L2180 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::formal_grammar_symbol_from_node (L738 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::formal_nonterminal_from_node (L617 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::formal_production_from_node (L823 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::formal_productions_from_catalog_node (L945 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::formal_rhs_from_node (L776 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::formal_terminal_from_node (L647 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::grammar_relation_row_forward_production_selection (L3073 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::grammar_relation_row_forward_token_spine_selection (L2991 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::grammar_relation_row_reverse_parse_selection (L2835 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/grammar.dag::grammar_relation_rules_formal_productions_from_rows (L887 on main@785934a): keep — enumerating clones a 8-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/node.dag::loop_edge_contributes_to_iteration_fold (L827 on main@785934a): keep — enumerating clones a 5-line body into 6 arms (TypeNode { connective: _ } | ComputationNode { behavior: Value } | ComputationNode { behavior: Transform } | ComputationNode { behavior: Branch } | ComputationNode { behavior: Bind } | ComputationNode { behavior: Match }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/node_query.dag::arrow_domain_named_param_bindings (L794 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/node_query.dag::conj_ordered_named_param_binding_ids (L774 on main@785934a): keep — enumerating clones a 4-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/node_query.dag::find_arrow_body_child (L727 on main@785934a): keep — enumerating clones a 6-line body into 6 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 6 one-line arms) or .dag admits or-patterns.
  • src/v2/std/qualified_name.dag::qn_fold_init (L66 on main@785934a): keep — enumerating clones a 6-line body into 5 arms (TypeNode { connective: Disj } | TypeNode { connective: Arrow } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: _ }). Dissolves when that body is a named fn (then 5 one-line arms) or .dag admits or-patterns.
  • src/v2/std/type_binder.dag::type_binder_node_conforms (L370 on main@785934a): keep — enumerating clones a 7-line body into 9 arms (TypeNode { connective: Atom { identity: _ } } | TypeNode { connective: Conj } | TypeNode { connective: Disj } | TypeNode { connective: Cardinality } | TypeNode { connective: Instantiation } | ComputationNode { behavior: Value } | ComputationNode { behavior: Branch } | ComputationNode { behavior: Loop } | ComputationNode { behavior: Match }). Dissolves when that body is a named fn (then 9 one-line arms) or .dag admits or-patterns.
  • src/v2/std/compilers/target_model.dag::target_atom_realization_display_name_from_row: keep — NodeKind wildcard (Atom handled); 7-line outcome_rejected body x6 arms. Dissolves when the rejection is a named fn or or-patterns land.
  • src/v2/std/compilers/target_model.dag::target_type_expr_arrow_wire_shape: keep — scrutinee NamedMetadataFoldOk carries Bool/Int literal field patterns (extra_named: 0); the complement over an Int field is not finitely enumerable. Dissolves when the fold returns a closed verdict (e.g. MetadataShapeOk | MetadataShapeMalformed) instead of raw counts.
  • src/v2/std/compilers/target_model.dag::target_type_expr_emitted_validate_positional_wire: keep — same NamedMetadataFoldOk{kind_seen: true, surface_seen: true, extra_named: 0} literal-field match; Int complement not enumerable. Same dissolution as above.
  • src/v2/std/datetime.dag::calendar_date_admits: keep — match over Int month literals 1..12; _ is the out-of-range complement of Int, infinite. Dissolves when month is a closed Month coproduct at this boundary.
  • src/v2/std/datetime.dag::leap_second_next_day: keep — match over Int month literals; same Int complement. Same dissolution (closed Month).
  • src/v2/std/grammar.dag::grammar_atom_identity_from_node: keep — NodeKind wildcard (Atom handled); 9-line Violates body x6 arms. Dissolves when the diagnostic is a named fn or or-patterns land.
  • src/v2/std/qualified_name.dag::qualified_name_from_node (inner match acc): keep — QnFoldStatus wildcard; 5-line outcome_rejected body x3 arms (QnFoldInit, QnFoldHeadSeen, QnFoldTailSeen). Dissolves when the fold's terminal status is Done|Error only, or the diagnostic is named.
  • src/v2/std/qualified_name.dag::qualified_name_from_node (outer match root.kind): keep — NodeKind wildcard (Conj handled); 5-line body x6 arms. Same dissolution (named diagnostic / or-patterns).

Not found on main: src/v2/std/compilers/target_model.dag::target_lex_rule_literal_step (the census predates its removal).

…tted_validate_labeled_wire

The enumeration read `kind_seen: true` as a binding, so it treated
NamedMetadataFoldOk as fully covered; the floor refused the match as
non-exhaustive. Restore the wildcard: the complement of Bool-literal field
patterns is kept and reported per site, like its positional twin.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Sep 29, 2026

Copy link
Copy Markdown
Contributor Author

Keep-list addition (after floor refusal fixed in the latest push):

  • src/v2/std/compilers/target_model.dag::target_type_expr_emitted_validate_labeled_wire: keep — NamedMetadataFoldOk is matched with Bool-literal fields (kind_seen: true, surface_seen: true); the wildcard is the complement over those Bool fields plus NamedMetadataFoldMalformed. Enumerating it means 3 NamedMetadataFoldOk literal arms plus Malformed, each cloning the rejection. Dissolves when the fold returns a closed verdict (MetadataShapeOk | MetadataShapeMalformed) rather than raw flags.

gunbc-ci-auto-heal and others added 2 commits September 29, 2026 20:49
…amed fn

Per the neat-boar-16 ruling: a multi-line body the remaining variants share
is lifted into ONE fn in the same module and every remaining variant gets a
one-line arm calling it; nothing is copied. Identical lifted bodies share a
single helper.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	src/v2/std/compilers/target_model.dag

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE at 7bce9e1. The target-model changes replace closed-coproduct fallbacks with their explicit complements, preserve literal-pattern wildcards whose complement is not a closed variant set, and lift shared multi-line bodies into single helpers rather than cloning them. The strict floor, generated, and Rust tests are green; emit-build and witnesses are still queued, so landing remains conditional on those completing green. This overlaps #12669 in target_model.dag; whichever lands second may require a main merge and renewed exact-head review.

gunbc-ci-auto-heal and others added 3 commits September 29, 2026 22:44
emit-build refused the emitted Rust: concrete_syntax_token_node_targets_into
is tail-call lowered to a loop, and that lowering writes nested variant arms
(TypeNode { connective: Disj }) as match guards, which rustc cannot prove
exhaustive (E0004) once the wildcard is gone. Per the ruling for bodies with
a self tail call, the decision moves into concrete_syntax_token_node_targets_step
returning ConcreteSyntaxTokenTargetsStep (TargetsDone | TargetsNext); the fn
keeps its self-call and matches only that flat step.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ets_into

Per the silent-koi-310 ruling: this site is blocked on the tail-call emitter
defect (nested arms rendered as guards -> emit-build E0004), which is being
fixed at the root (adhoc-6e41e4c1-f65). The per-site Done|Next delegation was
a workaround; the site returns to main's form and is enumerated in a
follow-up once the emitter fix lands.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	src/v2/std/compilers/target_model.dag
gunbc-ci-auto-heal added 2 commits September 30, 2026 18:34
# Conflicts:
#	src/v2/std/compilers/target_model.dag
# Conflicts:
#	src/v2/std/compilers/target_model.dag
gunbai-bot Bot pushed a commit that referenced this pull request Oct 1, 2026
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 1, 2026
@gunbai-bot

gunbai-bot Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor Author

Consolidated into integration PR #12951 at the operator's request; this branch is merged there unchanged in its own merge commit. Closing here; the branch is kept. — sent from deep-ferret-305

@gunbai-bot gunbai-bot Bot closed this Oct 1, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a manual request Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant