Matrix
The same Next.js workload at every integration level and harness, scored on thirteen weighted claims.
The matrix tier runs the same Next.js workload across every
integration level, harness and orchestrator. Each combination is a
cell, and each cell gets its own worktree, sandbox and automatic host port. The matrix runs the same two tasks on every configuration. For many tasks on one configuration, see the
sdlc tier.
The latest two passes, on 2026-09-25, scored 99.4% of weighted checks by default and 98.7% in URLs mode. Results has the full scores.
make eval-matrix # 55 cells, three at a time; needs AI_GATEWAY_API_KEYThe two tasks
add-a-page: write a route that renders a marker and verify it. Every configuration can do this, so a difference between cells is a difference in the level.prove-and-install: install a dependency, then record whatuname -ssays. This catches a level that ran the command on the host.
Scoring
Each cell scores thirteen claims independently, weighted:
| Weight | Claims |
|---|---|
| 4 | reached the guest · the level carried it · no host leak |
| 2 | the page renders · the change is in the worktree · the dependency is installed · the agent converged · the server was not replaced |
| 1 | the sandbox came up · a host port was forwarded · the dev server answered first · the agent finished · the sandbox was left clean |
If a cell stops early, its unanswered claims count as failures. A provider that refuses a turn makes the cell a skip.
How a cell is verified
The oracle does not accept the agent's platform file alone, because a model can write
Linux without running anything. Two checks back it up. The dependency must be in package.json,
and boxer's trace must show that level running a command.
The report names which mechanism it found. An orchestrator's launcher gives the harness a clean environment, so boxer's trace variable never reaches it. For orchestrator cells, the oracle checks the worktree the orchestrator created.
Running it
bin/boxer-eval --tier matrix --cell claude/rewrite --parallel 1
bin/boxer-eval --tier matrix --list # what would run; runs nothing
BOXER_EVAL_URLS=1 bin/boxer-eval --tier matrix # every sandbox named, no address in the promptBOXER_EVAL_URLS=1 gives every sandbox a portless name. At every outside
level, it also stops telling the agent where its dev server is. Each agent has to find its own server
from the brief while sibling worktrees run theirs. The oracle still reads the page through the host port
boxer allocated, so an agent that used another worktree's server fails the render check. An
interrupted run brings down its own sandboxes and removes its scratch.
Every run is archived under docs/evals/matrix/: the full scorecard, an index rebuilt from the
data, and a JSON line per run. Each report opens with its conditions: boxer and its commit, smolvm,
the model, the image, the concurrency and the host.