The half the locator was silent on was one wrong assumption - #2912
Merged
Conversation
`tri unparsed locate` confirmed 37 answers and refuted 37 -- exactly half. That
line sat at the bottom of four consecutive reports and I kept picking one of
the other options.
`split_module` assumed a BRACED module. A file declaring `module NAME;` -- the
semicolon form -- has no wrapper, so the scan for "the first line that opens a
brace at depth 1" found the first `struct`, and everything after that struct's
closing brace became the tail. Every truncated prefix then had a large orphan
chunk glued onto it and failed for the chunk's own reasons, so the bisection
landed on the first item and causality refuted it.
Found with the base rate rather than without it. The hunch -- "the tail is too
long" -- was available immediately, and on its own worth nothing:
tail > 10 lines tail = 1 line
refuted 32 4
confirmed 4 33
A one-line tail is a real braced module's closing brace, and it lands almost
entirely in the confirmed column. That is the finding, and it cost one more
measurement than the hunch did.
located AND causally confirmed 37 -> 60
... the item ALONE reproduces 60
candidate REFUTED by causality 37 -> 14
The 14 that remain point at lines 5 to 11 -- the FIRST item in the file. Those
are specs opening with `algorithm NAME {`, which the parser does not implement,
so the first prefix already fails and there is nothing to bisect. Refusing is
correct: "unsupported from its first declaration" is a different claim from
"this item causes the failure", and only the second is what the command
promises.
`bootstrap/src/compiler.rs` untouched; FROZEN_HASH does not move.
Refs #2864
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gHashTag
enabled auto-merge (squash)
August 29, 2026 22:47
This was referenced Aug 29, 2026
Contributor
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
# Conflicts: # .claude/skills/ci-gates/SKILL.md
# Conflicts: # .claude/skills/ci-gates/SKILL.md
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
PR DashboardGenerated at: 2026-08-29 23:17:49 UTC
Summary
Seal Status
|
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.
tri unparsed locateconfirmed 37 answers and refuted 37 — exactly half.That line sat at the bottom of four consecutive iteration reports, and each time
I picked one of the other options.
The cause
split_moduleassumed a braced module. A file declaring— the semicolon form — has no wrapper at all. The scan for "the first line that
opens a brace at depth 1" found the first
struct, and everything after thatstruct's closing brace became the tail. Every truncated prefix then had a
large orphan chunk glued onto it and failed for the chunk's own reasons, so the
bisection landed on the first item and causality refuted it.
Found with the base rate, not without it
The hunch — "the tail is too long" — was available immediately: 32 of the 37
refuted cases had a tail over 10 lines. On its own that is worth nothing; long
tails might simply be common.
A one-line tail is a real braced module's closing brace, and it lands almost
entirely in the confirmed column. That is the finding, and it cost one more
measurement than the hunch did.
Result
The 14 that remain are correct refusals
They point at lines 5–11 — the first item in the file. Those are specs
opening with
algorithm NAME {, a construct the parser does not implement, sothe first prefix already fails and there is nothing to bisect.
Refusing is right: "unsupported from its first declaration" is a different
claim from "this item causes the failure", and only the second is what the
command promises.
Controls
module NAME;→ body starts after it, no tailmodule m { … }→ still splits at the brace24 unit tests in
unparsed.rs.Gates, run locally
specs generate 0 · specs parse 0 · conflict markers 0 · seals fresh 0 ·
types ratchet 0 · skill check 0 · unparsed probe 0 · unparsed locate 0 ·
cargo test -p tri0 ·rustfmt --check cli/tri/src/unparsed.rs0.bootstrap/src/compiler.rsis untouched, soFROZEN_HASHdoes not move.Refs #2864