Conversation
Komoszek
added this pull request to stack #73
September 22, 2026 06:17
Komoszek
removed this pull request from stack #73
September 22, 2026 06:20
Komoszek
added this pull request to stack #74
September 22, 2026 06:21
The text a removal deletes keeps nothing alive. With `--transitive`, the settler runs in rounds: each drops the references inside the previous round's removable findings and classifies again, until nothing changes — one run, no new reference queries: the cross-library probe covers only newly emptied names, override and superclass lookups are memoized. Round one is the plain result, so the default output is unchanged. Only findings `--remove` would delete count as gone, so the set the report assumes deleted is the set removed. A finding dead only because its container is goes unreported with the container. Each finding this adds names every dead declaration it hangs on (`onlyReferencedFrom`), in source order — several may reference the same one. Off by default: a false positive takes everything only it referenced with it. A cycle keeps itself alive; that is #65. Closes #58. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011fqaUyaQtY7AkuTYBjAUJv
Komoszek
force-pushed
the
claude/issue-58-transitive
branch
from
September 22, 2026 06:28
55c60ee to
d03cf17
Compare
This branch has not been deployed
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.
Closes #58. Stacked on #71.
The text a removal deletes keeps nothing alive. With
--transitiveeach round drops the references inside the previous round's removable findings and classifies again, until nothing changes. One run, no new reference queries (the cross-library probe covers only newly emptied names; override and superclass lookups are memoized), works in a plain report too. Default output is unchanged.dead_spans.dart: the deleted text as a per-file span index. Only non-removalBlockedfindings contribute, so the set the report assumes deleted is exactly what--removedeletes.settler.dart:settleloops_rounduntil the span set is stable (cap 16; the set only grows);_liveRefs,_onlyReferencedFrom, memoized overrides and probe names.CrossLibraryReferences.merged/.where.UnusedDeclaration.onlyReferencedFrom: every dead declaration it hangs on, in source order (text and-f githubshow the first plus a count;-f jsonthe list).--[no-]transitive,transitive:inciach.yaml. Off by default.scenarios/transitive.dart+ tests, including: after--removeon a copy, a second run has nothing left to remove; a helper two dead roots call names both. A mutually recursive pair stays — Report dead reference cycles (reachability from live roots) #65.🤖 Generated with Claude Code
https://claude.ai/code/session_011fqaUyaQtY7AkuTYBjAUJv