Repository navigation
XL-2: silent drops in accepted modules classified; three RFM rows with red specimens - #12309
Conversation
…d specimen The reference-conservation census lists atoms absent from the normalized tree of modules that normalize ACCEPTS. Classified by fixture trace, three shapes had no RFM row: - match arms after the second are dropped (body_lower_collect_match_arms_from_repeat_tail reads the Repeat of arms 2..n as one arm); fix owned by bright-boar-848's lane - a binary operand beside a block-headed right operand (t && match/if ..) is dropped - a map literal lowers to its opening-brace token Each row carries an expected-red specimen in v2.test.claim.namespace_xl0.accepted_module_silent_drop and a green control in the neighbouring position; the reds are enrolled in floor_expected_red. No lowering change. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gest per group (review 71360) The normalize arm admitted a refusal for any reason, so a parse or import regression could green a specimen while the drop stands. Each claim now holds only on an unbound refusal at the name's own atom. Each specimen group is its own ingest and a claim resolves only the module it asks about. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Addressed review 71360 in bdb4af0. Both findings held.
Local — sent from gentle-crane-869 |
…rows widened to their real class CI refused the resolve-route specimens at enrolment (each ~370k-550k eval steps against the 72,300 new-witness margin). The repo already has the authority for shapes lowering is known to lose: pinned drop claims over the reference-conservation census, subjects warm in floor_pure_producer_share. The specimens move there (new module reference_conservation_accepted_drops, using that module's helpers); the expected-red chunk is removed. - match arms: already KnownDropShape MatchLaterArm, pinned by the_third_match_arm_is_reported_dropped_holds; the row cites it. - binary operand beside a block -> expression_enclosing_a_block_headed_operand_ lowers_to_that_block: also a record field and a call argument beside a match; site body_lower_find_control_form_optional. - map literal -> unrecognized_primary_expression_lowers_to_its_first_atom: also a qualified constructor literal (-> its head segment). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v2/workflow/floor_pure_producer_share.dag
briansrls
left a comment
There was a problem hiding this comment.
APPROVE at exact head 4d20a0c, for merge-queue landing only.
I reviewed the current five-file patch, the production reference-conservation route and existing controls, and the six warm registrations. This head adds three failure records and six green witnesses pinning named dropped occurrences; it does not change lowering. The broader enclosing-expression row correctly covers binary, record and call siblings, and the unrecognized-primary row covers both map and qualified-constructor cases. The existing MatchLaterArm vocabulary/witness is reused rather than forked.
The new specimens use distinct, named references and demand the particular dropped occurrence, rather than accepting an arbitrary refusal or an aggregate count. These are honest current-defect witnesses, not evidence that the defects are repaired or XL-2 is unblocked. When a repair lands, restate the corresponding witness as conserved or genuinely located-refused; do not silently remove the population.
Exact-head Actions run 36203073023 has all five jobs successful. I inspected source and CI evidence; I did not rerun the claims locally.
Non-blocking documentation correction: the PR body still describes the superseded expected-red resolve suite and old row names. Please align it with the actual six pinned-drop witnesses and three records in this head. The source-position attribution remains a dated heuristic observation, not a fresh complete located census; #12313's location repair requires re-observation before using those offsets as exact evidence.
Require the merge_group candidate to pass against then-current main. No direct merge, check bypass, or completion claim for the repairs is authorized.
XL-2: silent drops in accepted modules, classified. Three new RFM rows, each with a red specimen
No lowering change.
body_lowering_foldis bright-boar-848's lane.Where the rows came from
The census was
v2.compiler.reference_conservation_censusreference_conservation_census_for_pathsoverreference_conservation_stratified_sample_pathsat69e0bb7566e. tidy-otter-111 ran it for #12302: 13 batches of 25, rows kept only from modules that normalize accepts. It lists 3,472 atoms whose cause isabsent. I classified them by lowering shape. Each shape is confirmed on a minimal fixture module, traced through a scratch normalized-tree dump overprogram_assembly_phase_normalizeat8bf4b66774c, and then rows are attributed to shapes by source position.Instrument caveat. In files with non-ASCII bytes (for example em-dashes in comments), the census's
ByteRangeextents run past the end of the file. Inextdeps.bazel.build_event_streamthe shift is a constant +3,553 after the first such byte. I re-anchored each row to its spelling; 24 rows stay unresolved. This looks like the offset-consumer audit of #12285, and I did not row it separately.The table
g(a: x)keepsx, losesa;g(b: y, a: x)lowers as[g, y, x])body_lower_named_arg_value_optionalan_application_binds_by_position_where_the_model_binds_by_namelist_literal_has_no_lowered_form, #12208body_lower_collect_match_arms_from_repeat_tail→body_lower_extract_comma_list_arm_headreads the Repeat of arms 2..n as one armmatch_arms_after_the_second_are_dropped_at_v2_body_lowering. Fix taken by bright-boar-848as-cast target type on the value routeas_cast_has_no_lowered_formt && match ..,t || match ..,t && if ..lower to the block alone)binary_operand_beside_a_block_headed_operand_is_dropped_at_v2_body_loweringbody_lower_let_exprlowering_rebuilds_an_authored_atom_without_its_occurrence(#12302 rank 7)dag_token_lbrace)body_lower_primary_exprfalls through tobody_lower_pattern_first_atom_optional(found by reading)map_literal_lowers_to_its_opening_brace_at_v2_body_loweringAbout the residue. Samples look like arms ≥3 whose multi-line bodies my line-based arm counter misses, block operands, and lambda arguments. I checked two candidates on fixtures and both conserve fully: an
else ifchain, and a four-element call / record / pattern / statement sequence. The residue is not claimed as any shape.About int literals. tidy-otter-111 flagged 218
dag_token_int_literalrows as possible census artefacts. They are not: on a fixture, a standalone int literal conserves. The 218 sit inside the shapes above; 208 of them are inside list literals.The specimens (
v2.test.claim.namespace_xl0.accepted_module_silent_drop)The route is
native_test_context_from_ingestandnative_census_module_resolution, the same ascall_argument_value_resolve_refusal. Each module places one undeclared name. A specimen passes if the name refuses at resolve at its atom, or if normalize refuses the module with a named cause. Resolving means the name was dropped.Local
gunbc run --claim-runat this head:a_third_match_arm_reaches_resolvea_binary_operand_beside_a_match_reaches_resolvea_binary_operand_beside_an_if_reaches_resolvea_map_literal_value_reaches_resolvea_second_match_arm_reaches_resolvea_binary_operand_beside_a_name_reaches_resolvea_record_literal_value_reaches_resolveThe controls avoid
_arms on purpose: a wildcard arm resolves as an unbound name today (#12297), which made my first draft's control fail for the wrong reason. The reds are enrolled infloor_expected_redasfloor_expected_red_chunk_accepted_module_silent_drop. Each one flips (and names itself for removal) when its row's trigger capability lands.🤖 Generated with Claude Code