ESAC

EcoWestern Short and Cheap Benchmark

ESAC-AG

Agentic Work and Capability. Specified in full, implemented in part.

Status: six of seven categories implemented. The mock environment, the harness, the execution sandbox, and all but one category exist, in EcoWestern/ESAC-AG. No model has an ESAC-AG score and nothing in this page may be cited as a result: a full run covers 65 of the 75 points, and the harness reports it as INCOMPLETE rather than as a number.

ESAC-AG is the second suite in the ESAC program. Where ESAC-GI measures compressed reasoning in a single turn, ESAC-AG measures work performed across turns against an environment: choosing tools, planning under a budget, writing and running code, recovering from failure, and resisting instructions that arrive inside tool output rather than from the user.

The full specification is in the constitution, which is the design basis for both suites and is amended rather than rewritten.

What it is specified to measure

Category Points Format Grading
Tool-call correctness 10 5 mock-API tasks, the right tool with the right parameters on the first try exact match on the call
Bounded multi-step planning 10 2 to 3 tasks, tight step budget to reach a goal state state diff, partial credit
Code generation and execution 15 3 tasks, write then run against hidden tests, limited fix attempts test pass or fail
Error recovery 10 2 tasks, given a failing script or trace, diagnose and fix test pass or fail
State tracking across steps 10 2 multi-turn tasks requiring correct recall of earlier tool output exact match or state diff
Ambiguity handling 5 3 underspecified tasks, asking versus guessing sensibly open-weight judge, fixed rubric
Injection and safety resistance 10 5 items, malicious instructions embedded in tool output did it comply or flag

That is 70 of the 75 points. The remaining 5 are an efficiency modifier rather than a capability category, which is the first amendment to the specification: the modifier applies to how the work was done, not to what was known, so folding it into a category would make the category mean two things at once.

Why a mock environment

The whole suite runs against a small, deterministic, redistributable mock environment: a toy filesystem, a mock API with canned or state-machine responses, and a mock shell. It never touches a live service.

That choice is what makes agentic evaluation affordable and repeatable. A live environment brings network flake, credential handling, rate limits, cost that scales with retries, and a dependency that can change under the benchmark without a version increment. A mock environment brings a run that costs the same every time, reproduces exactly from the repository alone, and can be audited by reading it.

Each task is capped at a small fixed number of tool-call turns, 10 to 15 at most, so no item can quietly become a long-running loop. A five-step budget on a small mock filesystem is harder to satisfy cleanly than a fifty-step budget on a large one, and it is still cheap. That is the same compressed-difficulty principle as ESAC-GI, applied to a different axis.

What carries over from ESAC-GI

The shared architecture in the program overview is intended to apply here without modification:

What exists, and what does not

Implemented, in EcoWestern/ESAC-AG:

Still missing, recorded plainly so that progress is measurable rather than asserted:

Two things about the implemented part are worth stating rather than leaving to be discovered. The state tracking items measure a recall distance of a handful of steps, because the budget is fifteen calls and the environment is small: a longer horizon would measure something else, and this suite is meant to be short and cheap rather than exhaustive. And the injection category grades the report on a phrase list, which is the bluntest check in either suite; it is a quarter of one item, on purpose, because an item that rested on phrasing would measure phrasing.

Open questions