What's fixed
- Node ID collisions across same-named files in different directories — SQL extractor and Python import resolver now use directory-qualified stems (
dir_file_entity) instead of bare filename stems, preventing silent node merging on repos with duplicate filenames
- Absolute
source_file paths from semantic subagents no longer stored in graph — build_from_json, build, and build_merge now accept a root param and relativize paths at build time, fixing broken MCP traversal on mixed corpora (#932)
- Failed semantic chunks permanently freezing files — only files that appear in extraction output get
semantic_hash stamped in the manifest; failed-chunk files keep an empty hash and are re-queued on the next run (#933)
What's improved
- Stat-based mtime fastpath for
file_hash — skips full SHA256 read when file size+mtime_ns are unchanged (same trade-off as make); index flushed atomically via atexit, making incremental re-runs significantly faster on large corpora
- New CLI subcommands —
graphify cache-check, graphify merge-chunks, graphify merge-semantic expose cache and merge logic as library-callable commands for skill pipelines
Upgrade
pip install --upgrade graphifyy