docs+feat: P17 roadmap, file-watcher auto-sync design, task 1 shipped#14
Closed
Vit129 wants to merge 7 commits into
Closed
docs+feat: P17 roadmap, file-watcher auto-sync design, task 1 shipped#14Vit129 wants to merge 7 commits into
Vit129 wants to merge 7 commits into
Conversation
Records the prioritized punch-list from this session's search-quality benchmark (6 real projects) + upstream diff + 3-agent competitor research pass (PKM tools, code-graph MCP tools, AI-agent context approaches), so it survives context compaction: file-watcher auto-sync first (biggest gap vs CodeGraph/GitNexus), then PageRank-style ranking, a 0.18.0 cut for PR #12's already-merged content, the affected --relation prefix-match gap, the Home-Assistant config decision, and content-as-data indexing (still held pending explicit sign-off). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR
Verified live: --no-open/webbrowser.open/osascript reload in __main__.py, settings-2d/settings-3d slider panels in export.py. The doc's remaining 3 goals landed in e4e4f9c and d79b6fb but the plan doc itself was never updated to reflect it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR
Orientation first, per the roadmap's own instruction: graphify watch (watch.py) already exists and works - a real watchdog-based daemon, not a stub. The actual gap is that nothing auto-starts it for an AI agent session; also found _install_claude_hook's printed message already (falsely) claims a post-edit rebuild happens. Decision: add a PostToolUse hook that triggers a debounced background `graphify update`, not an auto-started `watch` daemon - closes the exact gap this session hit (agent edits, forgets to rebuild) with no new dependency (watchdog is optional/not installed by default) and no new process-lifecycle surface (PID files, orphaned daemons across session restarts). `graphify watch` stays as-is for the human-editing- in-an-IDE case, which is a different, unconfirmed need. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR
…sting mechanism graphify/hooks.py installs real git post-commit/post-checkout hooks with a detached background rebuild (hooks.py:230/483) - already installed in this repo (the recurring graphify-out/.last-refresh.log line seen on every commit this whole session was this hook firing). Missed in the design's first orientation pass despite that being its own explicit stated principle. Caught before task-design proceeded on a wrong premise. Reframes the gap correctly: not "no auto-rebuild exists" (two mechanisms already do, watch's filesystem daemon and hooks.py's commit hook) but "neither covers the uncommitted-edit window an agent session actually lives in." The PostToolUse-hook decision (option B) still stands - it's the one missing trigger point, not a replacement for either existing mechanism. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR
6 tasks, Server Logic (trigger_background_update in watch.py, a --trigger CLI entry, the _POST_EDIT_HOOK constant) then Integration (wire into _install_claude_hook/_uninstall_claude_hook, full test suite, live validation against a real repo). Confirmed two concrete pre-existing gaps along the way: tests/test_watch.py exists (extend, don't create new), but _install_claude_hook/_uninstall_claude_hook have zero test coverage at all - closed as a side effect of task 4 rather than left as separate cleanup. Not implemented yet - task list only, awaiting go-ahead per this session's established pattern (design/plan first, confirm, then code). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR
…o-sync Spawns a detached, non-blocking background rebuild for a project root. Meant to be called once per agent write via a future PostToolUse hook (task 3) - covers the window neither existing auto-rebuild mechanism does: graphify watch's foreground daemon (must be started by hand) and hooks.py's git post-commit hook (fires only on commit) both miss uncommitted, mid-session edits. Deviated from the original task-design plan on implementation: _rebuild_code already has its own non-blocking lock + queue/drain coalescing (watch.py:459-480), so no new debounce-marker file or reimplemented PID check was needed - a burst of rapid triggers already collapses into the fewest rebuilds necessary via that existing mechanism. Detach technique mirrors hooks.py's _LAUNCHER_TEMPLATE flags exactly (proven cross-platform there already) as plain Python, since this call site has no shell layer to work around. Verified: 5 new unit tests (spawn shape, argv-passed paths, log dir creation, spawn-failure survival, _TRIGGER_BODY standalone-parses) + a real non-mocked end-to-end smoke test (detached child produced a correct graph.json from a real 2-function scratch corpus). Full suite: 3003 passed, 0 failed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR
Owner
Author
Vit129
added a commit
that referenced
this pull request
Jul 19, 2026
Covers everything merged to main since 0.17.0: PR #12 (graph.html Calls lens + lens-aware search), item 1's file-watcher auto-sync (PostToolUse hook, trigger_background_update - landed via #15's squash merge since that branch built on top of #14's tip; #14 itself closed without a separate merge to avoid re-applying already-shipped content), and #15 (opt-in PageRank query ranking, kept default-off after evidence-gathering on 4 real repos found it net negative/neutral as a default). Bumps pyproject.toml, version.json + CURRENT_VERSION, and adds the two CHANGELOG entries that were missing (auto-sync and pagerank ranking never got one during their own PRs). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
affected --relationprefix-match gap, (5) Home-Assistant config decision (not a graphify code task), (6) content-as-data indexing (still held, needs explicit heuristic sign-off)agent-memory/plans/INDEX.mdNext:
dev-architectis being invoked to turn item 1 (file-watcher auto-sync) into an actual design.🤖 Generated with Claude Code
https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR