gold
SELECT DISTINCT borderColor FROM cards WHERE name = 'Ancestor''s Chosen'
this statement states no ordering of its own
sha256:44b8638749207abe4201a8f1d9819038c3ee80b0f0f1c9f0fb6c519b1a6d3dff
R-SET NOT_EQUAL
card_games · mini_dev_sqlite from https://bird-bench.oss-cn-beijing.aliyuncs.com/minidev.zip (sha256 cc48ba16838204e4e214512030cb572eeb5f7bcdd999bae4b9b6ff12ec13b92f, downloaded 2026-09-07), member minidev/MINIDEV/mini_dev_sqlite.json
What is the border color of card "Ancestor's Chosen"?
the hint the set supplies: name of card = 'Ancestor''s Chosen' ;
NOT_EQUAL states that these two statements disagree on this data under this rule. It does not state which of them is wrong.
SELECT DISTINCT borderColor FROM cards WHERE name = 'Ancestor''s Chosen'
this statement states no ordering of its own
sha256:44b8638749207abe4201a8f1d9819038c3ee80b0f0f1c9f0fb6c519b1a6d3dff
SELECT borderColor
FROM cards
WHERE name = "Ancestor's Chosen"
this statement states no ordering of its own
sha256:3888b3bad45f80ce3944e62abd81307e2747a780fc59ee8b4d0f7868f7503e88
The marked tokens are where the two texts differ. Two statements that differ everywhere can return the same rows, and two that differ in one token can return other rows; the verdict above is read off the results.
from counterexample.json, 0 rows, up to 25 shown per side
| side | borderColorTEXT |
|---|---|
| no rows |
from counterexample.json, 3 rows, up to 25 shown per side, 1 on this page
| side | times | borderColorTEXT |
|---|---|---|
| second | 3 | black |
set(second_rows) == set(gold_rows), REAL cells as Python float as sqlite3 returns them, so Python equality holds 1 == 1.0 == True as the benchmark's own scorer does
https://github.com/bird-bench/mini_dev/blob/main/evaluation/evaluation_ex.py
result_eq: equal row counts and equal column counts, each row unordered as a quick rejection, then the two equal as a list when the gold text holds ORDER BY and as a multiset otherwise, under some permutation of the columns; DISTINCT is not stripped and re-executed, and the cells are SQLite's as sqlite3 returns them
ruiqi-zhong/test-suite-sql-eval, exec_eval.py, result_eq, at commit 48cb78ec: https://github.com/ruiqi-zhong/test-suite-sql-eval/blob/48cb78ecf7f610620206283846c76751b18a1326/exec_eval.py
The class states what makes these two results unequal under this rule, read off the two results and nothing else. It does not state which of the two statements is wrong.
from counterexample.json, 1 row
| borderColorTEXT |
|---|
| black |
from counterexample.json, 4 rows
| borderColorTEXT |
|---|
| black |
| black |
| black |
| black |
A smell is a mechanical reason to read this gold statement again. It is a heuristic: it does not state that the statement is wrong, and a maintainer decides.
this statement orders by a text column holding only numbers, and ordering it as a number gives a different answer, so the gold may be sorting 9.5 above 10
the statement states no top level ORDER BY
{
"heuristic": true,
"reason": "the statement states no top level ORDER BY"
}
this statement cuts its result at a LIMIT that does not decide which rows come back, so a different but equally correct statement can return other rows and score zero
the statement states no LIMIT
{
"heuristic": true,
"reason": "the statement states no LIMIT"
}
rerun over the same rows in another physical order this statement gives another answer, so its result depends on how the rows are stored and not only on the data
{
"heuristic": true,
"rule": "R-SET",
"baseline_result_hash": "sha256:44b8638749207abe4201a8f1d9819038c3ee80b0f0f1c9f0fb6c519b1a6d3dff",
"baseline_result": {
"columns": [
{
"name": "borderColor",
"declared_type": "TEXT"
}
],
"row_count": 1,
"truncated": false,
"rows_shown": 1,
"rows": [
[
{
"type": "str",
"value": "black"
}
]
],
"result_hash": "sha256:44b8638749207abe4201a8f1d9819038c3ee80b0f0f1c9f0fb6c519b1a6d3dff"
},
"planner_statistics": {},
"shuffle": {
"seed": "1",
"row_limit": 300000,
"tables": [
"cards"
],
"tables_not_shuffled": [],
"tables_skipped_for_size": {
"legalities": 427907
},
"tables_not_reached_by_a_copy": {}
},
"shuffled_copies": {
"run": true,
"verdict": "equal",
"differs": false,
"result_hash": "sha256:44b8638749207abe4201a8f1d9819038c3ee80b0f0f1c9f0fb6c519b1a6d3dff",
"result": {
"columns": [
{
"name": "borderColor",
"declared_type": "TEXT"
}
],
"row_count": 1,
"truncated": false,
"rows_shown": 1,
"rows": [
[
{
"type": "str",
"value": "black"
}
]
],
"result_hash": "sha256:44b8638749207abe4201a8f1d9819038c3ee80b0f0f1c9f0fb6c519b1a6d3dff"
}
},
"plan_variant": {
"run": false,
"reason": "the plan variant was not asked for"
}
}
this statement returns the same whole row more than once and never says DISTINCT, so a statement answering the same question once per row disagrees on multiplicity alone
{
"heuristic": true,
"rows": 1,
"distinct_rows": 1,
"repeated_rows": 0,
"largest_repeat": 1,
"result_bounded": false,
"distinct_stated": true,
"set_operation": false,
"not_applicable": "the statement states DISTINCT, so it cannot repeat a row"
}
SELECT DISTINCT borderColor FROM cards WHERE name = 'Ancestor''s Chosen'
result_hash sha256:44b8638749207abe4201a8f1d9819038c3ee80b0f0f1c9f0fb6c519b1a6d3dff recomputed from this JSON: match
record_hash sha256:5cce170337f2cf12090dd4fcfb065ef7f6a032275269d1b92cf7f3de562710da recomputed from this JSON: match
from evidence-gold.json, 1 row
| borderColorTEXT |
|---|
| black |
SELECT borderColor
FROM cards
WHERE name = "Ancestor's Chosen"
result_hash sha256:3888b3bad45f80ce3944e62abd81307e2747a780fc59ee8b4d0f7868f7503e88 recomputed from this JSON: match
record_hash sha256:a2fc33e4c0170a272e76dbbe96a45301b01cfcc96ced6aa3387f5f91c11c4a8a recomputed from this JSON: match
from evidence-second.json, 4 rows
| borderColorTEXT |
|---|
| black |
| black |
| black |
| black |
re-run this statement read-only against SQLite 3.53.4 | file=/private/tmp/attestql-runs/data/minidev/dev_databases/card_games/card_games.sqlite | size=261820416 under the session settings and over the data this record's fixture digest names, and compare the two results under R-SET
re-run this statement read-only against SQLite 3.53.4 | file=/private/tmp/attestql-runs/data/minidev/dev_databases/card_games/card_games.sqlite | size=261820416 under the session settings and over the data this record's fixture digest names, and compare the two results under R-SET