0.9.45
- Fix:
graphify install <platform>now advances the.graphify_versionstamp only for the platform it actually (re)writes, instead of stamping every installed platform as current; a platform whose skill content was left untouched keeps its old stamp so its staleness warning stays truthful (#2694, thanks @ousamabenyounes). This completes #2694 (the CLAUDE_CONFIG_DIR half shipped in 0.9.44). - Fix: an incremental rebuild no longer collapses the whole graph when the
.graphify_rootmarker records a subfolder while storedsource_filepaths are relative to the repo root; the marker is validated against the stored paths before it is trusted as their anchor, so a mismatched marker can't make every unchanged source look deleted (#2603, thanks @catpotd). A genuinely deleted source is still evicted, and incremental ids stay identical to a cold build. - Fix: a Go file that declares both an exported and an unexported symbol differing only by case (e.g.
Runandrun, which are distinct in Go's case-sensitive visibility rules) no longer collapses them onto one node id and drops one; the exported symbol keeps its stable id and the unexported one is disambiguated, so an intra-file call to the unexported symbol resolves locally instead of phantoming to another package (#2779, thanks @catpotd). Only the Go extractor's id assignment is affected; the shared id normalization is unchanged, so no other language's ids move. - Fix: loading a
graph.jsonthat contains a hyperedge with noidfield (the semantic extractor emits them and they persist verbatim) no longer crashes the incremental re-extract withKeyError: 'id'; id-less hyperedges are tolerated and retained (#2775, thanks @ousamabenyounes).