feat(scanner): Fail closed and report fallback provenance - #97
feat(scanner): Fail closed and report fallback provenance#97reneleonhardt wants to merge 1 commit into
Conversation
Distinguish authoritative scanner results from degraded fallback topology, fail closed on incomplete ast-grep execution, and preserve source outcomes through file-graph and blast-radius construction. Co-Authored-By: GPT-5.6 Sol <codex@openai.com>
JordanCoin
commented
Aug 2, 2026
Reviewed — the direction is right, and 1. Nothing consumes 2. It duplicates the vocabulary #96 introduces. 3. Fail-closed on timeout is a UX cliff for the hook path. Hooks run codemap on every edit; previously an ast-grep timeout warned on stderr and degraded to tree-only output, now the whole command errors. That's defensible under "don't lie", but it trades a partial answer for no answer on exactly the large repos where the timeout fires. (2) would let you keep both. Minor: dropping the Heads-up on ordering: this and #93 both rewrite |
reneleonhardt
commented
Aug 2, 2026
JordanCoin
commented
Aug 2, 2026
Yes, please consolidate #93 → #96 → #97 → #99 into one replacement PR based on current main, and close the old PRs after the replacement is open and cross-linked. |
I fear the model can't preserve 4 separate commits, that's kind of the problem. Latest news after 1.5h:
|
reneleonhardt
commented
Aug 2, 2026
In other news, I burned not only my MacBook with hundreds of builds, but also my Max quota (7 days) in 2 days, I hope those few open PRs get merged so I can post the next wave when I have quota again 😄 |
Consolidate the JordanCoin#93, JordanCoin#96, JordanCoin#97, and JordanCoin#99 maintainer corrections into one compatible scanner, graph, CLI, and MCP contract.\n\nPreserve provenance across recoverable scans and fallbacks, apply configured filters consistently, reuse one dependency graph inventory for coverage and rendering, and make unmatched Rust source coverage explicit.\n\nCo-Authored-By: GPT-5.6 Sol <codex@openai.com>
JordanCoin
commented
Aug 3, 2026
Yes — consolidate #93 → #96 → #97 → #99 into one branch and close these four. Please don't burn effort trying to preserve four commits; one coherent branch is genuinely the better outcome here, and I'd rather you spend the quota you have left on the design than on git surgery. The reason is that these four don't conflict textually so much as semantically, and that's not something a rebase can settle:
So one review is the honest price. Your own note matches what I found: none of the four could merge independently. Three things I'd like the consolidated branch to settle, since they're the decisions the four were making inconsistently:
Status on your other two, both merged:
Sorry about the quota, and about the MacBook. Take your time — nothing here is urgent, and there's no rush to get the consolidated branch up before your quota resets. |
reneleonhardt
commented
Aug 4, 2026
Please have a deep look at #105, if you can, use Claude to double-check. |
JordanCoin
commented
Aug 6, 2026
Superseded by #105, which landed as 9edb24a. Verified before closing: #105's file set is a strict superset of this PR's — every file here is present in the merged commit, none dropped. The consolidation was necessary because these four rewrote the same scanner entry points with incompatible intent; the merged branch settles all three contracts (one provenance vocabulary, one scanner entry point, fail-closed with a usable degraded path). Thanks for doing the reconciliation work. |
What does this PR do?
Prevents failed, timed-out, or unavailable
ast-grepscans from appearing complete and carries Cargo metadata fallback provenance through file graphs. Agentic coding consumers running in restricted sandboxes can distinguish authoritative dependency results from degraded topology.This PR provides the provenance foundation for a fallback stack that will keep dependency analysis useful when optional scanners or toolchains are unavailable:
codemap --deps .Follow-up language-specific fallback branches can preserve degraded topology while reporting its provenance.
Type of change
Checklist
go build && ./codemap .Additional notes
Successful empty
ast-grepresults remain authoritative. Existing API signatures remain unchanged; incompleteast-grepexecutions now return errors instead of potentially incomplete results.Verification
go test ./... -count=1;go vet ./...;go test -race -cover ./... -count=1;staticcheck ./...;go build.Developed with carefully directed, manually reviewed AI assistance.
Co-Authored-By: GPT-5.6 Sol codex@openai.com