Repository navigation
value_position_whole_read: read the domain binder through binder_node_parts (7 silent reds on main) - #13394
Merged
Conversation
…arts Since #12923 (e878c9b) a domain edge's target is a binder node (a Conj with one BinderTypeEdge); vpw_domain_binds read the atom identity of that node directly, got Absent, and seven claims went silently red on main. It now reads the binder's type through v2.std.node_query binder_node_parts, the one read of a binder node. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Seven claims in
v2.test.claim.namespace_xl0.value_position_whole_readhave been failing on main without blocking anything, because the floor never plans them on an ordinary diff.First bad #12923 (e878c9b): its new binder-node shape was never read by this test helper. Since #12923, a domain edge's target is a binder node: a Conj carrying one
BinderTypeEdgeto the type.vpw_domain_bindsstill callednode_atom_identity_optionalon that target, gotAbsent, and so every claim that goes through it returned false.Fix:
vpw_domain_bindsreads the binder's type throughv2.std.node_querybinder_node_parts, the one read of a binder node, then checks that type's identity against the Arrow'stype_param_namesas before. Test-only, one file.Bisect (claim_batch, one dispatch per first-parent commit, the tree verified by a source fingerprint):
Evidence: all 23 claims in the module PASS on main 6296275 with this change, run https://app.buildbuddy.io/invocation/a14415b8-6a1d-4c21-94cf-7dee95671707. Before it, the seven failed on main (run 8c7179a7).
The seven claims:
a_lambda_argument_lowers_to_an_arrow_binding_its_parameter_for_its_bodya_fn_literal_argument_lowers_to_the_same_arrow_as_a_lambdaa_fn_literal_argument_with_a_let_block_body_lowers_its_body_as_a_named_fn_doesa_fn_literal_record_field_with_a_single_atom_body_lowers_unfoldeda_fn_literal_record_field_with_a_record_construct_body_lowers_well_formedtwo_lambdas_with_one_parameter_name_each_carry_their_own_fresh_type_parametera_let_bound_fn_literal_lowers_whole_with_its_authored_return_typeThe eighth silent red,
function_value_body_routea_curried_function_typed_return_emits_impl_fn_over_box_dyn_fn(first bad #12506), is a real false refusal and is handled separately.🤖 Generated with Claude Code