v0.9.42

Graphify-Labs/graphifyv0.9.42Aug 13, 2026by safishamsi

AI Summary

A release emphasizing determinism and portability, fixing loop bindings, Python imports, and Windows path handling.

Key Highlights

  • JS/TS `for...of` and `for...in` loop bindings are now shadowed to prevent edge fabrication.
  • Python relative subpackage imports now resolve to the package `__init__` file.
  • Graph provenance (`built_at_commit`) is stamped from the repo, not the shell working directory.
  • Source file paths are canonicalized to POSIX for Windows to prevent ghost paths.

Full Release Notes

A large correctness, determinism, and portability release with fixes from many community contributors.

**Extraction / resolution**
- JS/TS `for...of` / `for...in` loop bindings are shadowed, so they no longer fabricate `indirect_call` edges (#2685, @ousamabenyounes) — completes the loop/closure/catch shadow family (#2568/#2569/#2517).
- Python relative subpackage imports (`from ..pkg.sub import x`) resolve to the package `__init__` (#2688, @ousamabenyounes).
- A non-regular file (FIFO/device) in the tree no longer hangs extraction; non-regular files are skipped (#2463, @itskaism).
- A `.sql` file that fails to parse with tree-sitter-sql installed-but-broken now reports the real error instead of "not installed" (#2602, @ousamabenyounes).

**Determinism / data integrity**
- `graphify update` incremental runs re-queue a file rewritten to the same length within one mtime tick (#2466, @itskaism), complementing the 0.9.40 file-hash guard (#2612).
- Graph provenance (`built_at_commit`) is stamped from the analysed repo, not the shell cwd (#2699, @C0KERNEL).
- Corrupt semantic-cache entries are surfaced and re-extracted instead of silently missed (#2683, @ousamabenyounes).
- `graph_has_legacy_ids` no longer false-positives on a global MCP node id (#2408, @aryanbonigala).

**Paths / Windows portability**
- `source_file` and the model-facing paths are canonicalized to POSIX; atomic writes and installs are hardened for Windows, incl. a read-only packaged bundle (#2620/#2622, @rajarshidattapy; #2453, @bensleveritt).
- `GRAPH_REPORT.md` uses a portable basename, not an absolute host path (#2682, @ousamabenyounes).
- The `apm.yml` fallback parser captures the package version (#2465, @itskaism).

**CLI / export**
- `affected` resolves a `./`-relative seed instead of silently returning nothing (#2707, @phudayyy).
- Hyperedge regions in `graph.html` are traced in convex-hull order, so the shaded polygon no longer self-intersects (#2449, @ysys143).

**Test / docs**
- Windows-portability test fixes, a refreshed `ARCHITECTURE.md` module table with a doc-parity test, and README notes on CI parity + Windows prerequisites (#2620/#2622/#2126/#2642/#2646/#2647/#2648/#2651, @rajarshidattapy/@redzwanmutalib/@nelsondeleonc-source).