Skip to content

prose, unparsed: two commands write a reason for every undecided case and discard it - #3233

Merged
gHashTag merged 12 commits into
masterfrom
w106b-reasons-discarded
Sep 5, 2026
Merged

gHashTag merged 12 commits into
masterfrom
w106b-reasons-discarded

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Both commands carry a hand-written reason on their "nothing decided" variant and
throw it away at the only place that reads it.

tri prose report

Outcome::Other is constructed at eight sites, each with a distinct reason:

unreadable cannot write probe
compiler did not run declarations changed -- refused
no line in the error line out of range
stops on a comment cap reached

The sole reader bound it to a wildcard and counted, with a ninth case
(Outcome::Prose(0)) folded into the same number. The output line:

... NOT DECIDED, nothing claimed   {other}

Three of those reasons say the tool failed. A reader of "NOT DECIDED"
cannot tell compiler did not run from cap reached, which is an ordinary
result — a failed instrument reported as a finding.

tri unparsed locate

Identical shape. Located::None(&'static str), six construction sites, and its
own doc comment reads "Nothing claimed, and why". The why went into
Located::None(_) => silent += 1.

After

... NOT DECIDED, nothing claimed   N
       4  cap reached
       2  compiler did not run  <-- the tool failed, not the spec

Outcome::Other also moves from String to &'static str. Every site already
passed a literal; the type now says the set is fixed and enumerable, which is
what lets BROKEN_INSTRUMENT name members of it and be checked against them.

Verification

check result
cargo test -p tri --bin tri 753 passed, 0 failed
prose call-site test, wildcard restored FAILS: the reason is discarded at the match arm again
unparsed call-site test, wildcard restored FAILS, same
BROKEN_INSTRUMENT names a reason no site constructs FAILS: which no site constructs
field 0 is never read warnings for both files gone

Tests read the call site: the defect is a discarding pattern there, so a
test of any counting helper would have passed.

tri prose report shells out to t27c, which is not built in this tree, and
exits with "no compiler". This change is verified by the suite and by the two
warnings disappearing — not by running the command's output.

How these were found, including what went wrong

tri gates warnings (#3230) classified both as field 0 is never read. A
triage fan-out over the 16 dead-code warnings returned
8 UNWIRED / 7 TEST_ONLY / 1 INTENTIONAL.

The adversarial stage was capped at the first 6 of the 8 UNWIRED claims, and
these two are exactly the ones the cap dropped. They came back as "not
surviving" when they had never been checked at all. Both were confirmed by hand
instead. A cap that does not say what it dropped reads as coverage.

Refs #3232

Both carry a hand-written reason on their "nothing decided" variant and drop it
at the only place that reads it.

`Outcome::Other` has eight construction sites, each with a distinct reason, and
the sole reader bound it to a wildcard and counted -- with `Outcome::Prose(0)`
folded into the same number. `Located::None` is the same, six sites, and its own
doc comment says "Nothing claimed, and why".

Three prose reasons -- unreadable, cannot write probe, compiler did not run --
say the TOOL failed. A reader of "NOT DECIDED" could not tell them from "cap
reached", which is an ordinary result: a failed instrument reported as a
finding.

Both now tally by reason and print the breakdown, marking the
instrument-failure reasons. `Outcome::Other` changes from String to
&'static str: every site already passed a literal, and the type now says the
set is fixed, which is what lets BROKEN_INSTRUMENT name members of it.

Tests read the CALL SITE, since the defect is a discarding pattern there and a
test of any counting helper would pass. Both verified by mutation: restoring
the wildcard fails them by name. The BROKEN_INSTRUMENT assertion is separately
mutation-verified -- renaming a member to one no site constructs fails it.

`tri prose report` shells out to t27c and exits "no compiler" in this tree, so
this is verified by the suite and by both warnings disappearing, not by its
output.

Refs #3232

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 02:39:34 UTC

Summary

Status Count
Total Open PRs 17
PRs with Failing Checks 12
PRs with All Checks Green 5
READY 2
FAILING 12
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

gHashTag and others added 4 commits September 5, 2026 09:49
Refs #3232

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…the subject

Both tests take the production text as everything before the FIRST
`#[cfg(test)]`. That is a truncation, not a filter: 13 of the crate's 46 files
carrying a test module have production items after it, and gates.rs has 83
across 38 test modules.

Both tests happen to work today because their subjects sit above the file's
first test module -- position, not construction. Move a test module up, or the
subject down, and `contains` goes false and the negative assertion passes
because it is looking at nothing.

Each now asserts its subject is present in the slice before asserting anything
about it. Control: planting `#[cfg(test)] mod planted { .. }` above the subject
in prose.rs fails the test with "the production slice no longer reaches the
subject -- this test would pass vacuously", where before it would have passed.

`gates::test_module_lines` does NOT have this flaw -- it is a state machine
that toggles in and out of every test module -- so `mutate`'s site filtering is
unaffected. The defect is only in the split-and-take-first shape.

Refs #3232

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 02:53:58 UTC

Summary

Status Count
Total Open PRs 17
PRs with Failing Checks 12
PRs with All Checks Green 5
READY 1
FAILING 12
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

gHashTag and others added 2 commits September 5, 2026 09:58
The previous commit's numbers were produced by a regex that counted column-0
items after the first `#[cfg(test)]` without excluding the ones inside later
test modules. Recounted with `gates::test_module_lines`, which is a state
machine that toggles in and out of every test module and is the instrument
`mutate` already trusts:

  46 .rs files contain a test module
  10 of them have production items after their FIRST one
  130 such items in total; gates.rs holds 79 of them across 38 test modules

Two files the wrong count named -- types_dup.rs and prose.rs -- have ZERO, so
prose.rs's slice is whole today and its anchor is defence rather than a live
repair. The comment now says so. unparsed.rs really does truncate: six items
sit after its test module, and the subject only happens to be above the cut.

Refs #3232

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 03:00:35 UTC

Summary

Status Count
Total Open PRs 17
PRs with Failing Checks 11
PRs with All Checks Green 6
READY 1
FAILING 11
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 03:04:26 UTC

Summary

Status Count
Total Open PRs 17
PRs with Failing Checks 12
PRs with All Checks Green 5
READY 1
FAILING 12
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 03:07:47 UTC

Summary

Status Count
Total Open PRs 18
PRs with Failing Checks 13
PRs with All Checks Green 5
READY 1
FAILING 13
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 03:44:43 UTC

Summary

Status Count
Total Open PRs 19
PRs with Failing Checks 10
PRs with All Checks Green 9
READY 0
FAILING 10
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=2d58d9d3160d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 04:04:50 UTC

Summary

Status Count
Total Open PRs 20
PRs with Failing Checks 13
PRs with All Checks Green 7
READY 0
FAILING 13
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=2d58d9d3160d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 05:36:46 UTC

Summary

Status Count
Total Open PRs 20
PRs with Failing Checks 19
PRs with All Checks Green 1
READY 0
FAILING 19
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=2d58d9d3160d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 05:58:45 UTC

Summary

Status Count
Total Open PRs 19
PRs with Failing Checks 18
PRs with All Checks Green 1
READY 0
FAILING 18
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=2d58d9d3160d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 07:12:52 UTC

Summary

Status Count
Total Open PRs 16
PRs with Failing Checks 15
PRs with All Checks Green 1
READY 0
FAILING 15
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=99577856cf3d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit f1ce9c4 into master Sep 5, 2026
26 of 29 checks passed
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