ESAC

EcoWestern Short and Cheap Benchmark

ESAC

EcoWestern Short and Cheap Benchmark. A program of compact benchmarks that measure difficult capabilities without measuring budget.

Cost and difficulty are independent, and most evaluation conflates them. A question that takes one line to answer can require a great deal of correct internal reasoning to reach, and a question that takes ten thousand tokens to state can be trivially easy. ESAC exists to measure the first thing, cheaply enough that anyone can rerun it.

This repository is the home of the program: what the suites are, what each one measures, how the measurement works, and the constitution and its amendments that govern all of them.

The suites

Suite What it measures Status Size Code
ESAC-GI General intelligence: logic, math, factual recall, reading comprehension, abstraction, instruction-following, writing quality, and response-depth calibration. v1.0.0 released 42 items, 75 points EcoWestern/ESAC-GI
ESAC-AG Agentic work: tool-call correctness, planning under a tight step budget, code generation, error recovery, state tracking, ambiguity handling, and resistance to injected instructions. Six of seven categories implemented 65 of 75 points, 22 items EcoWestern/ESAC-AG

Five tenets

The specification opens with five principles that govern both suites. They are worth stating here, because almost every design decision in either suite follows from them.

  1. Short is not the same as easy. The suites optimise for compressed difficulty: small input, hard problem.
  2. Deterministic scoring wherever the task allows it. Judgment-based grading is the exception, and every exception carries a reproducibility cost that is paid openly.
  3. No single vendor grades anyone. Rubric-graded items are scored by a small, open-weight, self-hostable model, pinned per release, so anyone can rerun a score without an API key from the company being tested.
  4. The public item set is a self-check, not the scoreboard. The benchmark is built so that training against what is public does not move the number that matters.
  5. Every score is meaningless without a version tag. “58/75” means nothing. “58/75 on ESAC-GI v1.0” is a result.

How a suite works

The architecture is shared, and it is the part that makes scores comparable rather than merely numeric.

Documents

Document What it is
specs/constitution.md The constitution: the design basis, in numbered sections. It governs, and it is amended rather than rewritten.
specs/amendments/ One file per amendment. The first has ten decisions, each naming the provision it supersedes.
specs/README.md The register of amendments, and how to add the next one.
benchmarks/gi.md ESAC-GI in detail: the eight categories, the scoring, and how to run it.
benchmarks/ag.md ESAC-AG in detail: what is specified, and what does not exist yet.
CHANGELOG.md Program-level changes: new suites, amendments, and documentation moves.
CONTRIBUTING.md Contribution policy: issues and forks, not pull requests.

Running a suite

Each suite carries its own harness, and each one runs offline apart from the model calls. ESAC-GI requires Node 22.6 or newer and has no runtime dependencies:

git clone https://github.com/EcoWestern/ESAC-GI
cd ESAC-GI
npm install
npm run esac -- selftest

That last command checks the harness end to end without contacting a model. To measure a model, npm run auto walks through the configuration and then runs the suite. The full instructions are in the ESAC-GI README.

Status

Governance

ESAC is published under the MIT licence, to be read, run, audited, and forked. Issues are open and welcome, especially corrections to the specification and challenges to an item. Pull requests are not accepted, and the reason is in CONTRIBUTING.md: a published score has to be traceable to a specific, trusted revision, so the measurement cannot change through an external merge path.

The specification lives here rather than in a suite repository for the same reason. When two suites cite the same clause, there has to be one clause to cite.

Maintainer chores, including every setting that lives in a web form rather than in a file, are in MAINTAINERS.md.