Repository navigation
plugin: two axiomcode versions over one graph rebuild once, say so, and an orphan writes nothing (#1835) - #1963
Open
swapnilpaliwal-sd wants to merge 1 commit into
Open
swapnilpaliwal-sd wants to merge 1 commit into
swapnilpaliwal-sd wants to merge 1 commit into
Conversation
swapnilpaliwal-sd
requested review from
JaredHLZhang and
suyashpaliwal26
as code owners
October 14, 2026 22:16
…nd an orphan writes nothing An agent session started before an engine or plugin upgrade keeps the old version's MCP server and hooks running beside the new ones. The old one rebuilt the graph with its engine and the new one rebuilt it back, a full rebuild on every turn (reproduced: 3 rebuilds in 3 turns against a 0.1.9 build). The answers only said the graph was stale. And the old process recreated .axiomcode (refresh.log, refresh.json) while the user deleted it. - ax_orphan.orphaned(): one check for a plugin directory marked .orphaned_at, or one whose scripts are gone. When it fires, the refresher, hooks, timer, query, relink and write_state write nothing. The MCP server answers with "restart the agent session", stops its timer and refuses to start. - ax_fresh.displace/contested: a build that replaces another axiomcode's graph records who built that graph. If the same builder rebuilds it again later, this version stops rebuilding it in the background and says two versions are running. `axiomcode index` still rebuilds it. - The newer-graph note and the `newer` command now name the two-versions case and say to restart the session. - README: restart the agent session after upgrading the engine or the plugin. Test: tests/two_versions.py (fails 14 of 19 on the base, passes 19 of 19 now). Refs #1835
Open
8 tasks
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.
Closes #1973
Part of #1835.
An agent session started before an engine or plugin upgrade keeps the old
version's MCP server and hooks running beside the new ones. The old one
rebuilt the graph with its engine and the new one rebuilt it back, a full
rebuild on every turn (reproduced: 3 rebuilds in 3 turns against a 0.1.9
build). The answers only said the graph was stale. And the old process
recreated .axiomcode (refresh.log, refresh.json) while the user deleted it.
or one whose scripts are gone. When it fires, the refresher, hooks, timer,
query, relink and write_state write nothing. The MCP server answers with
"restart the agent session", stops its timer and refuses to start.
records who built that graph. If the same builder rebuilds it again later,
this version stops rebuilding it in the background and says two versions
are running.
axiomcode indexstill rebuilds it.newercommand now name the two-versionscase and say to restart the session.
Test: tests/two_versions.py (fails 14 of 19 on the base, passes 19 of 19 now).
Suites (failures identical on the untouched base): freshness.py 117/118, mcp.py ok, mcp_first.py 24/24, run.py --lang python 445/445, refresh.py --lang python 38/46 (the same 8
changed/testschecks fail on the base).Limits: versions already released have no orphan check, so they keep writing until their session restarts. What stops the rebuild fight is this version's hold on a contested graph, which stays as the other version left it until someone runs
axiomcode index. The message says to.