Skip to content

python/java/csharp: an edit under a directory named out, build, target or coverage never makes the graph stale #1594

Closed

Description

@swapnilpaliwal-sd

Symptom

Editing a source file under a directory named out, build, target or coverage never makes the graph stale. The indexer parses these directories, but the refresher never looks inside them. The background refresh never starts, and an explicit axiomcode index answers graph up to date. So impact and path keep answering from the graph as it was before the edit, with no banner. This happens in Python and C# (out, build, target, coverage at any depth below the root) and in Java (coverage).

Reproduction

Measured on 0.1.3 at 0df257c. Take a Python project: app/__init__.py, app/out/__init__.py, app/out/calc.py containing def total(n): return n * 2, and app/main.py, which imports and calls total(1). Commit it, then:

$ axiomcode index . --lang python
$ printf '\n\ndef audit():\n    return total(3)\n' >> app/out/calc.py
$ python3 plugins/axiomcode/skills/axiomcode/scripts/ax_fresh.py status .
fresh
$ axiomcode index . --lang python
graph up to date (python) at .../.axiomcode/out/graph.sqlite
$ axiomcode impact total .          # audit is not listed
$ rm -rf .axiomcode && axiomcode index . --lang python && axiomcode impact total .   # control: audit is listed

Java behaves the same with src/main/java/app/coverage/Calc.java, and C# with src/Shop/build/Calc.cs next to src/Shop/Shop.csproj.

Root cause

plugins/axiomcode/skills/axiomcode/scripts/ax_fresh.py:56-59 prunes the directory names in PRUNE_ALL at every depth, in every language (watched(), :87). The file table, the status check and the uptodate check that axiomcode-build:181 relies on all skip those directories. The parsers skip less:

  • Python skips only the names in DEFAULT_EXCLUDES (python-project-analyzer.ts:114) and reads a build/ below the root.
  • C# skips obj bin .git node_modules packages .vs (csharp-project-analyzer.ts:89).
  • Java reads coverage (constants/consts.ts:11).

A file that the parser reads but the table never records can never differ from the table.

Still present on 0.1.4 at 3df2e33, after #1565: PRUNE_ALL is now at ax_fresh.py:59-62, and the same steps still print fresh in all three languages.

Expected: an edit to any file the parser reads makes the graph stale, and axiomcode index rebuilds it.

Activity

  1. added a commit that references this issue on Sep 28, 2026
  2. swapnilpaliwal-sd commented on Sep 28, 2026

    @swapnilpaliwal-sd
    ContributorAuthor

    Fixed by #1614, merged into 0.1.4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcsharpC#javaJavapluginthe axiomcode plugin: skill + MCP layerpythonPython

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions