No, and you have diagnosed it exactly. The scan has a static list of directories it skips. It does not read .gitignore and it does not stop when it walks into a nested git root, so each worktree is traversed in full. The walk is alphabetical, so .claude really does eat the budget before .github is reached, and every absence-based finding after that (no-ci, no-test-ids, no-openapi) is a confident false negative rather than a fact.
Open issue, not fixed. Two workarounds, both with a cost:
- Scope the scan to the app package:
sdods analyze apps/web --report-only. This completes.
But at that depth there is no lockfile and no workspace root, so the package manager comes back unknown, and the base URLs get picked up from that package's own env files instead of the root ones — there is a separate open issue for each of those. You trade one wrong answer for two smaller ones.
- Move the worktrees out of the tree for the duration of the analysis. Ugly, but the report
is then honest, which matters because you are going to accept it into a project.
Whichever you pick, read the checklist first and treat scan-truncated as invalidating every "we did not find X" line in the report.