Skip to content

RFM receipt: cross_type_comparison_answers_instead_of_refusing gains the prescribed-remedy specimen - #13581

Merged
gunbai-bot[bot] merged 1 commit into
mainfrom
session/vivid-lynx-377-cross-type-remedy
Oct 9, 2026
Merged

gunbai-bot[bot] merged 1 commit into
mainfrom
session/vivid-lynx-377-cross-type-remedy

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

One receipt appended to the existing row dag/gunbc/recurring_failure_mode/cross_type_comparison_answers_instead_of_refusing.dag — no new class, no other file.

The finding. The #13179 checker refusal for T? == T prescribes compare against Present { value: .. }. A direct execution probe shows that prescribed equality form adjudicates Bool(false) at runtime on a list whose head IS the compared value, while the same read spelled as a match on Present passes:

PASS probe_tiebreak_helper_boolean      (the helper #13547 landed: match order.first() { Present { value: host } => host == operator_host_srv1, Absent => false })
PASS probe_order_head_direct_match      (the same match shape, standalone)
PASS probe_order_whole_list_equality    (control)
FAIL probe_order_first_equality_present (order.first() == Present { value: operator_host_srv1 })

Instrument: claim_batch --claim-run, subject test.claim.os_install_tiebreak_probe, BuildBuddy invocation b5ff3a8c-1be3-4009-85c1-04f6ed5038c4 (completed 2026-10-08T07:25:52Z), on tree a39504a whose gunbc.os_install_actuator_selection.dag is byte-identical to origin/main 2ef4b29. So the runtime lifts the bare element when matching against a Present pattern and does not lift it for == against a constructed Optional variant.

Corroborating CI evidence. Run 37728157032 (PR #13573 head 2ad332d) adjudicated exactly two claims returned Bool(false) cause=claim_failed under the prescribed spelling — os_install_actuator_requirements_dispatch_through_kind_rows and srv3_actuator_host_selected_because_requirements_and_policy — both of which re-verify as true facts once the spelling stops using the equality form.

Harm. The row's inverted-visibility shape with an aggravation: an author who follows the diagnostic's own remedy writes an assertion that can never be true (silent wrongness) or a guard that never fires (fail-open) — the compiler's message is the citation steering them there.

The diagnostic wording itself is being raised with the operator separately; this PR only files the receipt. Row ceiling/trigger untouched. Parses clean at the row entry (13 files emitted, 0 blocking).

…se at runtime

Appends RECEIPT THREE to cross_type_comparison_answers_instead_of_refusing.

The #13179 refusal text ('==' compares an optional value with a required
one) tells authors to compare against Present { value: .. }. A probe
(claim_batch --claim-run, BuildBuddy invocation b5ff3a8c, on a tree whose
declaring module is byte-identical to main 2ef4b29) shows that
prescribed equality form adjudicates Bool(false) on a list whose head IS
the compared value, while the match form of the same read passes — the
runtime lifts the bare element when matching against a Present pattern
and does not lift it for == against a constructed Optional variant. CI
run 37728157032 adjudicated two claims Bool(false) under the prescribed
spelling before the spelling was corrected to whole-list equality.

Bound to immutable shas and run ids; the row's ceiling/trigger are
untouched. The diagnostic wording itself goes to the operator.

@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.

Approved at 6fdc224. The receipt is accurate and belongs on the existing cross_type_comparison_answers_instead_of_refusing authority. The interpreter's List.first realization returns the bare head value (or Null), while Optional Present/Absent patterns have a kernel raw-payload match path; equality has no corresponding lift. Thus the observed List.first() == Present { value: ... } shape reaches equality with different runtime representations and can answer false even though the same source-level Optional fact matches and its payload comparison holds. The #13179 diagnostic does explicitly prescribe either comparison against Present or matching, so the aggravation is real. The cited requirement-kind and host-preference facts are also directly established by the declaration lists, and the CI head/run identities are exact. Keeping the existing ceiling and joint-inhabitance trigger is correct.

Nonblocking cleanup: this row already has an earlier paragraph titled RECEIPT THREE, so rename the new paragraph RECEIPT FOUR. It would also be slightly more precise to say the review tell is the List.first/raw-payload Optional realization rather than suggesting every Optional-producing declaration necessarily uses that runtime representation. Exact-head CI is currently queued.

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 8, 2026
Merged via the queue into main with commit c6ef9d1 Oct 9, 2026
6 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/vivid-lynx-377-cross-type-remedy branch October 9, 2026 06:55
@gunbai-bot gunbai-bot Bot mentioned this pull request Oct 10, 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