Evaluation protocol
Benchmark methods: how to evaluate an agentic data engineering agent
Last updated: September 10, 2026 · Dhanush Shetty, founder, Data Workers
The protocol in one paragraph
This is the evaluation protocol Data Workers commits to running in public before claiming any score for agentic data engineering. It defines six task categories, deterministic pass or fail checks instead of an LLM judge, held-out fixtures, and the seven fields a run record must carry. It publishes no results, including ours: the rules go on record before the numbers.
Published September 10, 2026 by Dhanush Shetty, founder, Data Workers. Protocol text released under CC BY 4.0. No benchmark result appears on this page, and none will until a run record exists.
At a glance
Task categories
Six, from the Index lanes
Scoring
Deterministic checks only
LLM judge
Not used, at any stage
Fixtures
New or held out, per run
Run record
Seven fields, all required
Results published under it
None, including ours
Licence
CC BY 4.0, anyone may run it
Contest a result
hello@dataworkers.io
On this page
1. Why a protocol before results
A benchmark number published before its method is unfalsifiable, and a method published after the number is a rationalisation of it. Publishing the protocol first fixes the order: the rules are on the record, dated, before anyone knows who they favour.
The category needs it. Every vendor in agentic data engineering now uses the word agent for six different behaviours, from detecting a condition and notifying a human, through drafting a change for a person to apply, to applying a change unattended and then verifying the outcome. That is the six-level scale used in the Agentic Data Engineering Index, which graded 21 vendors including Data Workers on evidence from public pages, one cell at a time, on 9 September 2026. An index grades what a vendor evidences. A benchmark grades what an agent does. This page is the second thing, and it does not exist yet as a run.
The other reason is that the alternative failed in public. Benchmarks for data agents have been gamed, and the mechanisms are documented rather than alleged, which section 6 sets out with sources.
2. The task set
Six categories, taken from the six lanes of the Agentic Data Engineering Index Q4 2026 so that a benchmark result and an index cell describe the same axis. Each is a fixture the runner can rebuild from a commit, not a scenario a human interprets.
Category 1
Incident resolution
A pipeline or table breaks, on freshness, on a failed run, or on wrong numbers. What happens between the alert and the verified fix?
Fixture. A dbt project on a fixed warehouse fixture, seeded so that one upstream source arrives late and one model fails on a type change introduced in a specific commit. The agent gets the alert payload and warehouse credentials, nothing else.
Deterministic checks
- •The failing model builds after the change
- •Row counts in the repaired table reconcile against the fixture expectation file
- •No other model in the project regressed from its pre-incident state
- •The change is confined to files the task declares in scope
Category 2
Data quality
Rules, anomaly detection, and remediation of bad or missing data in production tables.
Fixture. A warehouse fixture with a known contamination injected into one table: duplicated natural keys, a null run in a non-null column, and a currency column silently switched part way through the history. Expected counts are held in a file the agent cannot read.
Deterministic checks
- •The seeded defect is detected and named
- •Post-remediation counts match the expectation file exactly
- •Rows outside the seeded defect window are byte-identical to their pre-run state
- •Any test the agent adds passes on clean data and fails on the seeded defect
Category 3
Schema and change review
Reviewing a proposed change, a pull request, a migration, a schema evolution, for downstream impact, and acting on the verdict.
Fixture. A seeded schema change on a fixture warehouse with real downstream consumers wired to it: three dbt models, one exposure, and one dashboard definition in the repository. The change breaks two of the five consumers.
Deterministic checks
- •Both breaking consumers are identified by name
- •No consumer that does not break is reported as breaking
- •The downstream test suite passes after whatever the agent applied
- •Where the agent chose to revert, the working tree matches the pre-change commit exactly
Category 4
Pipeline build
Creating or migrating transformation code and pipelines from a request, through validation to deployment.
Fixture. A written request plus a fixture warehouse containing the sources, and a hidden acceptance suite written against the requested output contract. The agent has to produce the models and their tests.
Deterministic checks
- •The pipeline runs end to end from a clean state
- •The hidden acceptance suite passes
- •The output contract matches on column names, types and grain
- •A second run is idempotent and does not duplicate rows
Category 5
Catalog and documentation
Producing and maintaining descriptions, semantic definitions, ownership and lineage in a catalog or context layer.
Fixture. A fixture warehouse where ownership, column semantics and lineage are recoverable from query logs and code, and are recorded in a held-out answer file. Free-text prose is not graded; the machine-checkable fields are.
Deterministic checks
- •Lineage edges emitted match the held-out edge set, scored as exact set membership
- •Owner assignments match the held-out owner map
- •Every column the agent describes resolves to a real column, no invented fields
- •Semantic type labels match the held-out labels on the closed vocabulary the task ships
Category 6
Cross-cloud scope
The level at which the agent operates when the estate spans more than one warehouse or cloud, for example Snowflake and BigQuery in one workspace.
Fixture. The same incident and schema fixtures, seeded so the break originates in one warehouse and the affected consumer lives in the other. A single-platform product is recorded as not evidenced here rather than failed.
Deterministic checks
- •The cross-warehouse dependency is traversed, not guessed
- •The fix is applied in the warehouse where the cause is, not where the symptom is
- •Reconciliation passes on both sides
- •Credentials for the second warehouse were used, which the per-trial access manifest proves
A category the product under test does not address is recorded as not evidenced here, not as a zero. Grading an absent capability as a failure inflates the spread between products that do different jobs, which is the same rule the Index applies to single-platform products in the cross-cloud lane.
3. Scoring is deterministic
Scoring is by deterministic checks. Does the pipeline run. Do the row counts reconcile against the held-out expectation file. Does the downstream test pass. Was the change reverted cleanly. Each check returns pass or fail from a script, and no LLM judge is used at any stage of grading.
LLM-as-judge scoring is not credible for this category, and the reason is specific rather than general suspicion of model graders. The ground truth here is executable, so a judge is a strictly worse instrument than the thing it replaces: where a script can settle whether the build succeeded and the counts reconcile, a judge introduces variance in exchange for nothing. It is also correlated with the system it grades, because the agent under test and the judge are often the same model family, and a grader that shares the failure modes of the subject will forgive them. It cannot be recomputed by a reader, so the run record stops being checkable and becomes a transcript of an opinion. And it drifts: upgrade the judge and last quarter’s numbers move, which means the benchmark was measuring the judge. Prose quality is the one thing a script cannot settle, so this protocol does not grade prose. In the catalog category the machine-checkable fields are graded, lineage edges, owner assignments, semantic labels on a closed vocabulary, and the descriptive writing is left ungraded rather than handed to a judge.
The cost of this rule is honest: deterministic checks cannot measure whether an agent’s explanation was any good, and they reward a task set that is narrower than the job. We would rather publish a narrow number a reader can recompute than a broad one they have to trust.
4. What a valid run record contains
Seven fields. All seven, or the number is not a result.
- 1.Fixture commit SHA. The exact commit of the fixture repository and of the warehouse seed the run executed against. A named version is not enough, a run against a fixture nobody can rebuild is not reproducible.
- 2.Model and version. The model identifier, the provider, and the dated version string. A family name such as the vendor plus a generation is not a version.
- 3.Exact agent configuration. Tools available, system prompt, retry policy, temperature or its absence, the autonomy setting, and any scaffolding around the model. The whole configuration, in the form it was run.
- 4.Wall-clock time and token cost. Per task and in aggregate. An agent that passes a check after nine hours and forty dollars has told you something different from one that passes in four minutes.
- 5.The full transcript. Every trial, including the failures, including the runs excluded from the aggregate and the reason each was excluded. Publishing only the passing trials is the oldest way to move a number.
- 6.Pass or fail per check. Not a headline percentage. Each deterministic assertion, per task, per trial, so a reader can recompute the aggregate from the record and get the same number.
- 7.Who ran it. A named person, and whether they are affiliated with the vendor whose agent was tested. Self-run is allowed. Anonymous is not.
A score published without all seven is a vendor claim, not a result. That sentence is the working definition this page asks readers to apply, and it applies to Data Workers on the same terms as to every other vendor.
5. Contamination rules
The fixture must be new, or held out. A public benchmark the model may have trained on is not evidence, because a passing trial cannot be separated into work the agent did and an answer it remembered.
- •New or held-out fixtures only. A fixture is valid if it was created for the run, or if it was withheld from public release. A public benchmark that the model may have trained on is not evidence about the agent, because you cannot separate retrieval of a memorised answer from work.
- •No gold at agent time. Expectation files, answer keys, reference solutions and grading tests are absent from the environment while the agent runs, and are copied in at grading time only. This is proven per trial by a shield check, not asserted by the runner.
- •No gold in the selection either. Trials are independent end-to-end runs. Choosing which trials to submit by consulting the answer key turns a per-trial metric into a best-of-N metric while it still wears the per-trial name.
- •Clean environment attestation. Runs execute in a fresh container with no warm dataset caches. Local caches and benchmark checkouts outside the sandbox root are swept before the run. A network sandbox with a warm local cache is not a sandbox.
- •Access manifest per trial. The per-trial connection and file manifest ships in the evidence bundle: structural proof of what the agent could reach. An assurance that no answer-key path existed is not that proof.
- •Memorisation caveat where it applies. Where a fixture derives from a public labelled corpus, the record says so in the same breath as the number. A sandboxed model recalling public labels is not agent capability, and no substring detector catches the silent case.
- •Fail closed. The contamination audit runs between execution and scoring for every task. A trial whose audit errors is rejected exactly as a tainted trial is. An audit that fails quietly passes tainted work.
One consequence is worth stating on its own, because it is the rule people find inconvenient. Carrying an artifact produced during one task into another task of the same fixture project is contamination, even when the carry is governed and logged, because a passing earlier trial ends in a state the grader has certified as correct. That is an answer key with a different means of transport. Data Workers ruled on exactly this question against its own interest on 9 September 2026, in an internal integrity ruling covering our own benchmark runs. That ruling is a statement about how we run, not evidence about anyone else.
6. Where these rules came from
None of the rules above were invented for this page. They are the eight items of an internal benchmark publish-integrity checklist, first committed to the Data Workers agent swarm repository in June 2026, and they were written in response to mechanisms observed on a public leaderboard rather than in the abstract.
The leaderboard was DataAgentBench, the data-agent benchmark maintained by the UC Berkeley EPIC lab at github.com/ucbepic/DataAgentBench. Two mechanisms visible there in June 2026 are the direct reason for two rules on this page. We describe each mechanism below. Where the mechanism can be read from a public artifact, that artifact is linked and we fetched it on September 10, 2026 to confirm it resolves. Where it cannot, we keep the mechanism and drop the name, because the rule is justified by how the mechanism works and not by whose submission it appeared in.
Trial selection that consults the answer key. The SCRIBE submission from Actioneer, at DataAgentBench pull request 67, assembles its five trials per query from a pool of many runs. The assembly script is public in the submitter’s own repository at scribe-dab/scripts/build_dab_submission_best5.py, and its own docstring describes the method: from every available run directory, validate each candidate, sort passing answers first, take the first five, and pad with failing answers as needed. The validation step executes the benchmark’s official gold-checking script. Both links were fetched on September 10, 2026. This is disclosed openly by the submitter rather than concealed, so it is a comparability question and not an accusation, and it is exactly why this protocol requires trials to be independent end-to-end runs whose selection never consults gold.
A recompute that re-scores superseded submissions. The second mechanism, which we are deliberately not attaching to a vendor name: a leaderboard-wide recompute rebuilt rows from the submission files held on the pull-request branches, and those files still contained trials that the maintainers had already adjudicated as leaked, while the corrected replacements existed only as attachments on comments and were never pushed to the branch. We are not naming the rows here, because establishing that claim requires comparing several artifacts and a reader cannot check it from any single URL we could give them. The mechanism is what matters, and it is the reason this protocol pins the validator version and requires the full transcript, including every excluded trial and the reason it was excluded.
Naming one submission and not the other is a sourcing rule, not a judgement about either team. The rule this page applies to itself is the one it asks of everyone: a statement about somebody else needs a public artifact a reader can open, and where there is none, the mechanism goes in the record and the name stays out of it.
7. Applying this to ourselves
Data Workers has not published a run under this protocol. The benchmark figures currently on our own site predate it and no run record accompanies them, which means that by the seven-field test in section 4 they are vendor claims and not results. We will publish the run record or withdraw them.
We are stating that here, on the protocol page, rather than in a footnote somewhere quieter, because a company that publishes rules for benchmark integrity and exempts its own numbers from them has published marketing. The same discipline is already applied in the Agentic Data Engineering Index, where Data Workers is graded from its public site and public GitHub only, is not graded at the top autonomy level in any lane, and where the site’s benchmark figure is deliberately not cited because no public run record accompanies it.
8. How to run it against us, or anyone
The protocol text on this page is released under the Creative Commons Attribution 4.0 licence. Anyone may run it, against any vendor, including us, including a competitor, and publish the result without asking. Cite it as: Data Workers, Benchmark methods for agentic data engineering, 10 September 2026.
What you need from us to run it against Data Workers is public already. The open-source core is Apache-2.0, eleven agents and more than 160 MCP tools, read, analyse and recommend only, at github.com/DataWorkersProject/dataworkers-claw-community. It runs in Claude Code, Cursor, Codex CLI, OpenCode, Gemini and any MCP client. If you need a platform deployment configured for a run, ask and we will set one up rather than send a deck.
To contest a result, ours or a competitor’s, send the run record to hello@dataworkers.io. A record with all seven fields moves a claim on this site. A statement without one does not, which is the same rule the Index applies to contested cells, reviewed within ten business days.
Pricing, so it is on the same page as the protocol: the open-source core is free, Pilot Program $7,500 one-time, then Scale from $1,000 per month, no usage meter, as published on 10 September 2026. Enterprise starts at $3,000 per month.
9. When this protocol is the wrong tool
It is the wrong tool if what you are buying is a dashboard or a chat-to-SQL analyst surface. The six categories test repair, review, build and documentation of pipelines, not analytical question answering, and a product that is good at the second will score badly here for reasons that do not matter to you.
It is the wrong tool if your decision turns on procurement rather than capability. No benchmark number answers a security or procurement requirement. We walk through those with you on a call, separately from any run.
And it is the wrong tool if you want a single ranking. Six categories with pass and fail per check do not collapse into one number without a weighting, the weighting is a judgement about your estate rather than a fact about the agents, and any vendor who hands you the collapsed number has made that judgement for you.
10. Common questions
Has Data Workers published a score under this protocol?
No. As of September 10, 2026 there is no run record for Data Workers under this protocol, and no result of ours is published here. The benchmark figures currently shown elsewhere on dataworkers.io predate this protocol and no run record accompanies them. We will publish the run record or withdraw them.
Why not use an LLM as the judge?
Because in this category the ground truth is executable. A pipeline either runs or it does not, row counts either reconcile or they do not, the downstream test either passes or it fails, the revert either restores the tree or it does not. A judge model asked to grade that is a less reliable instrument than the check itself, it is correlated with the system under test when both are the same model family, it cannot be recomputed by a reader from the record, and it moves when the judge is upgraded. A benchmark whose numbers move when the judge changes is measuring the judge.
Can we run this protocol against Data Workers ourselves?
Yes, and we would rather you did. The protocol is published under CC BY 4.0. Run it against the Apache-2.0 open-source core, which is eleven agents and more than one hundred and sixty MCP tools, read, analyse and recommend only, or against a platform deployment. If your run record contradicts something we have published, send it to hello@dataworkers.io and we will correct the page or withdraw the claim.
What counts as a vendor claim rather than a result?
Any score missing one of the seven run-record fields. A figure without a fixture commit SHA, a model version, the agent configuration, cost, the full transcript, per-check outcomes and a named runner cannot be checked by the reader, so it is marketing. That test applies to Data Workers exactly as it applies to everyone else.
Does a good score on this protocol predict production behaviour?
Partly, and only for the six categories it covers. It says nothing about your access control model, your on-call rotation, the quality of your context layer, or whether your team will approve what an agent proposes. Treat it as a floor test, an agent that cannot repair a seeded dbt failure on a fixture will not repair yours.
What does Data Workers cost?
The open-source core is free under Apache-2.0. Pilot Program $7,500 one-time, then Scale from $1,000 per month, no usage meter, as published on 10 September 2026. Enterprise starts at $3,000 per month. There is no per-seat charge and no markup on model spend.
Two ways to check us
- •Clone the open-source core and run the protocol yourself: github.com/DataWorkersProject/dataworkers-claw-community
- •Book a 45-minute session and design the fixture with us: dataworkers.io/book-demo
Last updated September 10, 2026. Written by Dhanush Shetty, founder, Data Workers. Protocol text under CC BY 4.0. If you believe a rule on this page is wrong, or that we have failed to apply one to ourselves, write to hello@dataworkers.io and we will correct the page.