tri orphaned: inputs named in code that are not in the tree - #2805
Merged
Conversation
…n the tree
Removing a check's input does not make it fail, it makes it quiet (skill 197).
This looks for that shape by reading path-shaped literals in gate, tool and CLI
sources and asking whether they exist.
THE CONTROL FAILED, AND IS DOCUMENTED RATHER THAN TUNED AWAY. Run against the
commit before W702's fix it finds ZERO of one: that path was built as
`emitted.join("formats_catalog.json")` -- a literal with no slash -- beside
`Path::new("gen/numeric")`, a literal with no extension. The assembled path never
appears as a literal at all.
Following join-chains through variables is a dataflow problem. A heuristic
stretched until it hits its own motivating example has stopped being evidence, so
the miss is in the module docs and the matcher is unchanged.
IT EARNED ITS PLACE ON A DIFFERENT CASE. `bootstrap/src/main.rs:3530`:
ServeDir::new("public").not_found_service(ServeFile::new("public/index.html"))
`run_server` is "Start HTTP server on Railway". `public/` is not in .gitignore
and NO COMMIT HAS EVER TOUCHED IT -- the static fallback and the 404 page both
point at a directory that has never existed.
PRECISION TOOK THREE PASSES, each measured:
126 hits naive: every path literal that does not exist
89 hits + skip comments and self-check fixtures
21 hits + a real extension list (v0.1 and github.io are not paths),
+ reject regex source, + a brace-counted test region
The third fixed a leak worth naming: after `#[test]`, the `fn` on the next line
closed the fixture region, and 41 fixture paths came back in. A detector that
cannot exclude its own test module is not ready to be believed about anything
else -- its own assertions were in the report.
Five unit tests, two of them for what it must NOT match.
cargo test (tri) 245 passed, 0 failed
clippy, fmt clean on the new file
Refs #2762
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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 11:41:15 UTC
Summary
Seal Status
|
This was referenced Aug 29, 2026
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 11:51:57 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.
Refs #2762, #2804
Removing a check's input does not make it fail — it makes it quiet (skill 197). This looks for that shape by reading path-shaped literals in gate, tool and CLI sources and asking whether they exist.
The control failed, and is documented rather than tuned away
Run against the commit before #2796's fix, it finds zero of one. That path was built as
Neither literal is a path by this command's test, and the assembled one never appears as a literal at all.
Following
joinchains through variables is a dataflow problem. A heuristic stretched until it hits its own motivating example has stopped being evidence (skill 177) — so the miss is in the module docs and the matcher is unchanged.It earned its place on a different case
bootstrap/src/main.rs:3530, insiderun_server("Start HTTP server on Railway"):public/is not gitignored and no commit has ever touched it. The static fallback and the 404 page both point at a directory that has never existed. Filed as #2804.Precision took three passes, each measured
The third fixed a leak worth naming: after
#[test], thefnon the next line closed the fixture region and 41 fixture paths came back in — including this file's own test assertions. A detector that cannot exclude its own test module is not ready to be believed about anything else.Five unit tests, two of them for what it must not match.
🤖 Generated with Claude Code