Two silent failures found while dogfooding v2.0.0 on real projects. Both reported success while quietly doing nothing — the worst kind of bug in an indexer, because the output looks complete.
Unreadable paths were skipped without a word
walk_source_files() and the parse worker both swallowed OSError, so any file or directory the user lacked read permission on simply never entered the index. No warning, no count — and the scan line still printed a healthy-looking summary.
On a real project this hid five root-level config files, including a Next.js middleware.ts, from an index that otherwise looked complete and passed glyph doctor. find had counted those files (listing needs only directory permission), so even a manual cross-check said the index was whole.
Scans now report every path they could not read:
[glyph] myproject: 284 parsed, 0 skipped — 6,462 symbols, 8,750 edges (3,954 linked)
⚠ 2 path(s) skipped — the index is incomplete:
middleware.ts — Permission denied
lib/admin — Permission denied
glyph refresh shows a per-project count, and the scan result dict gains an unreadable list.
glyph fallow <project> dupes ingested nothing against Fallow 3.x
The ingester looked for a top-level duplications key containing files[].path. Fallow 3.x emits clone_groups containing instances[].file. Every run printed dupes: 0 issues (fallow v3.22.0) and exited 0 — indistinguishable from a genuinely clean codebase.
Both shapes are accepted now. The same project went from 0 to 4,261 duplicate blocks, matching Fallow's own clone_instances stat exactly.
Upgrading
git pull && ./install.sh
glyph refresh # re-scan; watch for any ⚠ lines
glyph fallow myproject dupesNo schema change and no re-index required — but if you have ever scanned a tree with mixed permissions, re-scan and check for warnings. Your index may have been missing files this whole time.
Full changelog: CHANGES.md · v2.0.0...v2.0.1