Skip to content

Question — manifest.json absolute paths + missing graphify-out/.gitignore: intended or oversight? #722

Description

@gnrlbzik

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 artifactsgraph.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

  1. Is keeping absolute paths in manifest.json intended (e.g. cross-machine portability not a goal because it's local cache only)?
  2. 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?
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions