Skip to content

RFM row: an unsolved inference placeholder reads back as the type Unit (fabricated type in a refusal) - #13354

Merged
gunbai-bot[bot] merged 1 commit into
mainfrom
session/jolly-pike-330-unsolved-placeholder-reads-as-unit
Oct 5, 2026
Merged

gunbai-bot[bot] merged 1 commit into
mainfrom
session/jolly-pike-330-unsolved-placeholder-reads-as-unit

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

Files one row under dag/gunbc/recurring_failure_mode/: unsolved_placeholder_reads_back_as_unit. No code changes. Filed on the program owner's ruling.

Specimen. Executed 2026-10-05 with gunbc run, using gunbc built at main ed68b5573b. This code refuses with no field 'module' on type 'Unit':

let modules = fold_list(xs: ms(), empty: [], cons: fn(acc, m) { acc })
match modules |> first { Present { value: m } => m.module ... }

The element's type is the unsolved empty_list_element placeholder, and it was never Unit. The same read over list_snoc_item(xs: [], ..) refuses with the true cause: the scrutinee's type is unresolved, give it a declared type.

Harm. No wrong program is accepted, but the refusal names a type the program never had. That cost two falsified repair rounds on #13330.

Producer: not located. The row says so, lists the unread candidates, and names the run that would decide it. It does not assert a cause.

Standing. Rung: mitigatable. Ceiling: 3. Next trigger: an unsolved placeholder at field access refuses with the unresolved-type cause.

Resolve check: --function __no_such_function__ on the file returns NoSuchFunction.

🤖 Generated with Claude Code

…t (fabricated type in a diagnostic, measured at main ed68b55)

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

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

LAND. This is a distinct residual from the earlier empty-list fabrication repair: the empty literal now carries the honest empty_list_element TypeVariable, but one downstream path later reports that still-unsolved placeholder as concrete Unit at field access. The row does not guess which candidate performs that substitution; it records the contrasting list_snoc_item refusal, names the unread candidates, and states the experiment that would locate the producer.

The standing is honest. The program is refused rather than accepted, so this is a loud but materially misattributed diagnostic; mitigatable is appropriate. A modeled TypeVariable can be refused as unresolved without inventing a concrete type, so the stated ceiling and trigger are reachable. The accepted control is also the right boundary: the same fold with a declared element/return type must continue to work. Exact-head witnesses are green.

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 5, 2026
Merged via the queue into main with commit 4bf26c8 Oct 5, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/jolly-pike-330-unsolved-placeholder-reads-as-unit branch October 5, 2026 10:47
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