mirror of
https://github.com/safishamsi/graphify.git
synced 2026-07-15 20:07:09 +00:00
b1e313cc5f
The #933 manifest filter built its extracted-set from node/edge source_file values, which are root-relative on a fresh extraction, and compared them against files_by_type entries, which are absolute (from detect()). The raw string membership test therefore never matched, so every freshly-extracted semantic doc was dropped from the manifest and re-queued as changed on the next run; only code files and cache-replayed docs got stamped. The filter now lives in _stamped_manifest_files(), which resolves BOTH sides against the scan root before the membership test — the same Path/is_absolute/resolve normalization the #1890 reconciliation uses in graphify.llm. Genuinely omitted zero-node docs still have no source_file entry and stay unstamped, preserving the intentional #933 re-queue behavior. Regression tests: a CLI extract with a mocked corpus extractor returning root-relative source_files lands the doc in manifest.json with a non-empty semantic_hash while a zero-node doc stays out; a unit test covers relative (fresh) and absolute (cache-hit) source_file shapes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>