Skip to content

chore: bump interp-engine to 1.7.0, and fix graph-install - #236

Merged
hijohnnylin merged 2 commits into
mainfrom
chore/interp-engine-1.7.0
Sep 9, 2026
Merged

hijohnnylin merged 2 commits into
mainfrom
chore/interp-engine-1.7.0

Conversation

@hijohnnylin

Copy link
Copy Markdown
Owner

Two changes, separate commits.

chore: bump the engine pin to 1.7.0

1.7.0 is one additive change to the package: GLM-4 joins FUSED_GATE_UP_LAYOUTS in interp_engine.facts, which is what lets mlp_pre and mlp_pre_linear serve on that family instead of being refused. Everything else in that release sits outside the sdist — the engine's validator, its visualizer, its own CI pins — so nothing an importing caller touches moved, and the engine's dependency set did not change.

No model served here is a GLM-4, so this buys nothing today. It is taken anyway because the pin is exact and the two repos move in lockstep: staying a release behind means the next bump carries two changes to reason about rather than one.

Each app relocked on its own, and the only line that moved in all three lockfiles is interp-engine itself.

fix: make graph-install installs an attribution backend

Found while relocking. Graph declares one extra per attribution backend and they share no code, so the bare uv sync the target ran installed neither. On a clean checkout make graph-install && make graph-dev dies importing circuit_tracer, which is what start.py defaults to. On an existing checkout it is worse than a failure: the sync uninstalls 83 packages, taking the backend out of a venv that was serving a minute earlier.

The target now installs the default backend, matching the row graph-nla-sparsity-tests.yml already syncs with. GRAPH_BACKEND=crm selects the other one, and make help says so.

The other apps are deliberately left alone. Their CI rows carry flags too, but those are --no-install-package for vllm and circuit-sparsity — a CPU runner declining a heavy wheel, not a choice the target should copy onto a machine with a GPU.

Verification

Run, not assumed:

  • uv lock --check passes on all three apps, so CI's --locked sync holds
  • make python-lint passes, including the config-parity and no-local-path-deps guards
  • pyright clean on inference, graph and nla
  • the suites CI gates on: inference 633 passed, graph 76 passed, nla 27 passed
  • the inference GPU suite on a local RTX 5090, which is the one that exercises the vLLM paths the engine owns: 38 passed, 8 skipped, no failures. The skips are per-model capability skips, not missing credentials — the gated Gemma tests ran and passed.
  • make graph-install re-run after the fix leaves the venv intact, with circuit_tracer importable and interp-engine at 1.7.0

The ==1.6.0 example in AGENTS.md moved to 1.7.0 so the prose does not drift from the pins.

Made with Cursor

hijohnnylin and others added 2 commits September 8, 2026 20:35
1.7.0 is one additive change to the package: GLM-4 joins `FUSED_GATE_UP_LAYOUTS`
in `interp_engine.facts`, which is what lets `mlp_pre` and `mlp_pre_linear` serve
on that family instead of being refused. Everything else in the release sits
outside the sdist -- the engine's validator, its visualizer and its own CI pins --
so nothing an importing caller touches moved, and the engine's dependency set did
not change either.

No model served here is a GLM-4, so this bump buys nothing today. It is taken
anyway because the pin is exact and the two repos move in lockstep: staying a
release behind means the next bump carries two changes to reason about rather
than one.

Each app relocked on its own, and the only line that moved in all three lockfiles
is interp-engine itself. `graph` is synced with `--extra circuit-tracer`, the way
its CI row does it, so the default backend is still installed.

Verified: `uv lock --check` on all three, pyright clean on all three, and the
suites CI gates on -- inference 633 passed, graph 76, nla 27.

Co-authored-by: Cursor <cursoragent@cursor.com>
…can serve

`make graph-install` ran a bare `uv sync`. Graph declares one extra per
attribution backend and they share no code, so a bare sync installs *neither*:
on a clean checkout `make graph-install && make graph-dev` dies importing
circuit_tracer, which is what `start.py` defaults to. On an existing checkout it
is worse than a failure -- the sync uninstalls 83 packages, taking the backend
out of a venv that was serving a minute earlier.

The target now installs the backend `start.py` defaults to, matching the row
graph-nla-sparsity-tests.yml already syncs with. `GRAPH_BACKEND=crm` gets the
Lorsa and transcoder backend instead, and `make help` says so.

The other apps are left alone. Their CI rows also carry flags, but those are
`--no-install-package` for vllm and circuit-sparsity: a CPU runner declining a
heavy wheel, not a choice the target should copy onto a machine with a GPU.

Co-authored-by: Cursor <cursoragent@cursor.com>
@hijohnnylin
hijohnnylin merged commit 6e32ddc into main Sep 9, 2026
21 of 22 checks passed
@hijohnnylin
hijohnnylin deleted the chore/interp-engine-1.7.0 branch September 9, 2026 04:32
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