Safi and Claude Sonnet 4.6
6a549e42d5
fix: four bugs — affected direction, hook root, glob fish/zsh, manifest drift ( #1174 #1173 #1172 #1163 )
...
#1174 : affected.py load_graph now forces directed=True before
node_link_graph, matching the identical fix in serve.py and __main__.py.
Undirected graphs (directed:false in graph.json) were causing in_edges
to fall back to a direction-blind scan, missing true callers and
reporting false positives. Regression test added.
#1173 : post-commit and post-checkout hook bodies now read
graphify-out/.graphify_root before calling _rebuild_code, falling back
to Path('.') if absent. A scoped build (graphify src/) no longer gets
silently expanded to the full repo on the next commit. Tests added.
#1172 : Step 9 cleanup split into rm -f for fixed files and
find -maxdepth 1 -delete for the chunk glob. Under fish/zsh an
unmatched glob aborts the entire rm -f line, leaving temp files on disk.
Fixed in the three skillgen source fragments and regenerated.
#1163 : detect_incremental type guard on stored mtime — if the manifest
contains a dict-valued mtime (schema drift from older versions), coerce
to None rather than propagating a non-numeric into comparisons.
Regression test added.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-07 12:40:44 +01:00
..
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-07 12:40:44 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00