Skip to content

fix(watch): keep update outputs project-relative#434

Closed
takeItIzzy wants to merge 1 commit into
Graphify-Labs:v4from
takeItIzzy:codex/fix-update-relative-paths
Closed

fix(watch): keep update outputs project-relative#434
takeItIzzy wants to merge 1 commit into
Graphify-Labs:v4from
takeItIzzy:codex/fix-update-relative-paths

Conversation

@takeItIzzy

Copy link
Copy Markdown

Summary

Fixes #433.

graphify update should keep generated paths project-relative for code-only rebuilds, matching the rest of the pipeline.

Root cause

graphify.watch._rebuild_code() resolved the requested path before detection and report generation. That changed a relative invocation such as graphify update . into an absolute rebuild root, which then leaked absolute paths into:

  • graphify-out/graph.json source_file fields
  • graphify-out/GRAPH_REPORT.md title and path-bearing sections
  • graphify-out/graph.html title and node metadata
  • graphify-out/cache/*.json AST cache entries

What changed

  • keep the cache root absolute, but run detection against the user-provided path so extractor inputs stay project-relative for normal graphify update . usage
  • normalize merged rebuild payloads back to project-relative source_file values before report/JSON/HTML export
  • render a non-absolute report root label for the common . case
  • add watch rebuild regression tests for repo-root and subdirectory invocations

Validation

  • .venv/bin/python -m pytest -q tests/test_watch.py
  • .venv/bin/python -m pytest -q tests/test_pipeline.py
  • manual smoke test: .venv/bin/python -m graphify update . in a temporary repo, verifying no absolute project paths in graph.json, GRAPH_REPORT.md, graph.html, or graphify-out/cache/*.json

@takeItIzzy
takeItIzzy marked this pull request as ready for review April 18, 2026 16:01
safishamsi added a commit that referenced this pull request Apr 21, 2026
- cache: skip directory source_file in save_cached to prevent IsADirectoryError (#444)
- report: skip structural-only communities with no real nodes (#443)
- hooks: allow @ in python path allowlist for Homebrew paths (#474)
- watch: keep source_file paths project-relative after rebuild (#434)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@safishamsi

Copy link
Copy Markdown
Collaborator

Thanks! Implemented directly in v0.4.24 — _relativize_source_files and _report_root_label are in watch.py, paths are now project-relative.

@safishamsi safishamsi closed this Apr 21, 2026
safishamsi added a commit that referenced this pull request Apr 23, 2026
- cache: skip directory source_file in save_cached to prevent IsADirectoryError (#444)
- report: skip structural-only communities with no real nodes (#443)
- hooks: allow @ in python path allowlist for Homebrew paths (#474)
- watch: keep source_file paths project-relative after rebuild (#434)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
matzls pushed a commit to matzls/graphify that referenced this pull request May 10, 2026
- cache: skip directory source_file in save_cached to prevent IsADirectoryError (Graphify-Labs#444)
- report: skip structural-only communities with no real nodes (Graphify-Labs#443)
- hooks: allow @ in python path allowlist for Homebrew paths (Graphify-Labs#474)
- watch: keep source_file paths project-relative after rebuild (Graphify-Labs#434)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

graphify update writes absolute paths into generated artifacts

2 participants