Observation 1 — manifest.json paths
save_manifest() in graphify/detect.py (verified on 0.7.5, lines 760-771) writes file paths as dict keys (manifest[f] = {...}), where f originates from os.walk over the absolute root and is never relativized. Result: graphify-out/manifest.json contains entries like:
{
"/Users/<name>/Projects/<repo>/packages/types/src/portfolio.ts": {
"mtime": 1771971357.10,
"hash": "3743c6e8a0c40024bccbaa7499cf547d"
}
}
Note: graph.json source_file paths were relativized in 0.5.0, but the same change wasn't applied to manifest.json.
Observation 2 — no default .gitignore shipped
graphify-out/ is created on first run but contains a mix of:
- Shareable artifacts —
graph.json, GRAPH_REPORT.md, wiki/, cost.json, graph.html
- Per-developer state — all of which contain absolute paths or per-machine values:
manifest.json — incremental detect cache (detect.py:save_manifest, absolute path keys + mtime + hash)
.graphify_root — saved scan-root (absolute path; __main__.py:1563, watch.py:133)
.graphify_incremental.json — incremental detect cache (absolute path keys)
.graphify_python — venv interpreter path (absolute)
.graphify_detect.json — transient detect output cache (absolute paths; __main__.py:1880)
Consumers must manually figure out which files are local-state vs. shareable, or end up tracking the wrong set. We hit this — manifest.json was committed and started leaking absolute /Users/<name>/... paths across the team.
Questions
- Is keeping absolute paths in
manifest.json intended (e.g. cross-machine portability not a goal because it's local cache only)?
- If absolute paths aren't intended, would you accept a PR that relativizes
manifest.json keys against the root, matching graph.json's 0.5.0 behavior?
- Would you consider shipping a default
.gitignore (or README guidance) under graphify-out/ listing which files are local-state and shouldn't be committed? With five separate per-machine files, this is non-obvious without reading the source.
Happy to open a PR for either if intent is "oversight, fix accepted."
Environment
- graphifyy
0.7.5
- Python 3.13
- Project layout:
knowledge/graphify/.venv + graphify-out/ colocated under a project subdir
Observation 1 — manifest.json paths
save_manifest()ingraphify/detect.py(verified on 0.7.5, lines 760-771) writes file paths as dict keys (manifest[f] = {...}), whereforiginates fromos.walkover the absolute root and is never relativized. Result:graphify-out/manifest.jsoncontains entries like:{ "/Users/<name>/Projects/<repo>/packages/types/src/portfolio.ts": { "mtime": 1771971357.10, "hash": "3743c6e8a0c40024bccbaa7499cf547d" } }Note:
graph.jsonsource_filepaths were relativized in 0.5.0, but the same change wasn't applied to manifest.json.Observation 2 — no default .gitignore shipped
graphify-out/is created on first run but contains a mix of:graph.json,GRAPH_REPORT.md,wiki/,cost.json,graph.htmlmanifest.json— incremental detect cache (detect.py:save_manifest, absolute path keys + mtime + hash).graphify_root— saved scan-root (absolute path;__main__.py:1563,watch.py:133).graphify_incremental.json— incremental detect cache (absolute path keys).graphify_python— venv interpreter path (absolute).graphify_detect.json— transient detect output cache (absolute paths;__main__.py:1880)Consumers must manually figure out which files are local-state vs. shareable, or end up tracking the wrong set. We hit this —
manifest.jsonwas committed and started leaking absolute/Users/<name>/...paths across the team.Questions
manifest.jsonintended (e.g. cross-machine portability not a goal because it's local cache only)?manifest.jsonkeys against the root, matchinggraph.json's 0.5.0 behavior?.gitignore(or README guidance) undergraphify-out/listing which files are local-state and shouldn't be committed? With five separate per-machine files, this is non-obvious without reading the source.Happy to open a PR for either if intent is "oversight, fix accepted."
Environment
0.7.5knowledge/graphify/.venv+graphify-out/colocated under a project subdir