Skip to content

docs+feat: P17 roadmap, file-watcher auto-sync design, task 1 shipped#14

Closed
Vit129 wants to merge 7 commits into
mainfrom
docs/p17-post-competitor-roadmap
Closed

docs+feat: P17 roadmap, file-watcher auto-sync design, task 1 shipped#14
Vit129 wants to merge 7 commits into
mainfrom
docs/p17-post-competitor-roadmap

Conversation

@Vit129

@Vit129 Vit129 commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • Records the prioritized punch-list from this session's search-quality benchmark (6 real projects), the live upstream diff, and a 3-agent competitor research pass (PKM tools, code-graph MCP tools, AI-agent context approaches) — so it survives context compaction
  • Priority order: (1) file-watcher auto-sync (biggest gap vs CodeGraph/GitNexus), (2) PageRank-style ranking, (3) cut 0.18.0 for PR feat(export): add Calls view lens to graph.html, code symbols only #12's already-merged content, (4) affected --relation prefix-match gap, (5) Home-Assistant config decision (not a graphify code task), (6) content-as-data indexing (still held, needs explicit heuristic sign-off)
  • Adds the P17 row to agent-memory/plans/INDEX.md

Next: dev-architect is being invoked to turn item 1 (file-watcher auto-sync) into an actual design.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CvDvoAyysaoQiWPmmLmLqR

Vit129 and others added 6 commits July 18, 2026 22:26
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
@Vit129 Vit129 changed the title docs(plans): add P17 post-competitor-audit roadmap docs+feat: P17 roadmap, file-watcher auto-sync design, task 1 shipped Jul 18, 2026
@Vit129

Vit129 commented Jul 19, 2026

Copy link
Copy Markdown
Owner Author

Content already merged into main via #15 (this branch was used as the base for #15's worktree, and #15's squash merge carried the full diff from main through both PRs' commits). Closing without merging to avoid re-applying already-shipped changes.

@Vit129 Vit129 closed this Jul 19, 2026
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
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.

1 participant