gold
SELECT name FROM cards WHERE name IN ('Serra Angel', 'Shrine Keeper') ORDER BY convertedManaCost DESC NULLS LAST LIMIT 1
- convertedmanacost
- descending, nulls last
sha256:72690a81e0434057ce0663df9509851fc49c58a03fb3eab18a6f556f3eb8bb38
R-ORD NOT_EQUAL
card_games · mini_dev_postgresql from https://bird-bench.oss-cn-beijing.aliyuncs.com/minidev.zip (sha256 cc48ba16838204e4e214512030cb572eeb5f7bcdd999bae4b9b6ff12ec13b92f, downloaded 2026-09-07), member minidev/MINIDEV/mini_dev_postgresql.json
Which card costs more converted mana, "Serra Angel" or "Shrine Keeper"?
the hint the set supplies: "Serra Angel" refers to name = 'Serra Angel'; "Shrine Keeper" refers to name = 'Shrine Keeper'; card costs more converted mana when the value of convertedManaCost is greater
NOT_EQUAL states that these two statements disagree on this data under this rule. It does not state which of them is wrong.
read by hand, 2026-09-04: B harmless: one distinct row repeated; DISTINCT added by the prediction; a list under twice the answer with every row present
the gold's LIMIT 1 name; the prediction returns that one name 88 times, once per printing
a maintainer's reading of this question, out of classification.json, copied from plans/reports/prediction-mode-260904-real-predictions/classification.json. It is not a verdict and nothing above it was computed from it.
The two statements name their result columns differently. A projection is compared by position and declared type, so these names did not decide the verdict. They are part of the canonical rendering each result is hashed under, so the two result hashes differ with them.
SELECT name FROM cards WHERE name IN ('Serra Angel', 'Shrine Keeper') ORDER BY convertedManaCost DESC NULLS LAST LIMIT 1
sha256:72690a81e0434057ce0663df9509851fc49c58a03fb3eab18a6f556f3eb8bb38
SELECT
CASE
WHEN a.convertedmanacost > b.convertedmanacost THEN 'Serra Angel'
WHEN a.convertedmanacost < b.convertedmanacost THEN 'Shrine Keeper'
ELSE 'Both cards have the same converted mana cost'
END AS card_with_more_converted_mana_cost
FROM
cards a,
cards b
WHERE
a.name = 'Serra Angel'
AND b.name = 'Shrine Keeper'
this statement states no ordering of its own
sha256:3c400e4f40a5aa9b65ce28a5aa0f80c71e2097b58f89f3ea6bdc83c6bd3d0c76
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 | nametext |
|---|---|
| no rows |
from counterexample.json, 87 rows, up to 25 shown per side, 1 on this page
| side | times | card_with_more_converted_mana_costtext |
|---|---|---|
| second | 87 | Serra Angel |
set(second_rows) == set(gold_rows), float4/float8 cells as Python float as psycopg2 returns them, numeric as Decimal
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 PostgreSQL's as psycopg2 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
| nametext |
|---|
| Serra Angel |
from counterexample.json, 88 rows, 25 on this page
| card_with_more_converted_mana_costtext |
|---|
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
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
no ORDER BY key resolves to a text column
{
"heuristic": true,
"reason": "no ORDER BY key resolves to a text column",
"keys": [
{
"key": "convertedmanacost",
"column": "cards.convertedmanacost",
"declared_type": "real",
"not_applicable": "the column is not declared as text"
}
]
}
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
{
"heuristic": true,
"cut": 1,
"offset": 0,
"distinct_kept": false,
"unbounded_sql": "SELECT name, convertedmanacost AS attestql_ordering_key_0 FROM cards WHERE name IN ('Serra Angel', 'Shrine Keeper') ORDER BY convertedmanacost DESC NULLS LAST",
"unbounded_rows": 46,
"projected_columns": [
"name"
],
"ordering_key_columns": [
"attestql_ordering_key_0"
],
"ordering_keys": [
{
"key": "convertedmanacost",
"direction": "desc",
"nulls": "last",
"nulls_first_in_effect": false,
"returned_rows_null_in_this_key": 0,
"fires": false
}
],
"tied_at_the_cut": {
"positions": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tied_rows": 44,
"distinct_projected_answers": 1,
"rows": [
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
],
[
{
"type": "str",
"value": "Serra Angel"
}
]
]
},
"case": null
}
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-ORD",
"baseline_result_hash": "sha256:72690a81e0434057ce0663df9509851fc49c58a03fb3eab18a6f556f3eb8bb38",
"baseline_result": {
"columns": [
{
"name": "name",
"declared_type": "text"
}
],
"row_count": 1,
"truncated": false,
"rows_shown": 1,
"rows": [
[
{
"type": "str",
"value": "Serra Angel"
}
]
],
"result_hash": "sha256:72690a81e0434057ce0663df9509851fc49c58a03fb3eab18a6f556f3eb8bb38"
},
"planner_statistics": {
"cards": {
"last_analyze": null,
"last_autoanalyze": "2026-09-08 05:19:16.814042+00",
"n_mod_since_analyze": 0
}
},
"shuffle": {
"seed": "1",
"row_limit": 300000,
"tables": [
"cards"
],
"tables_not_shuffled": [],
"tables_skipped_for_size": {
"laptimes": 400524,
"legalities": 427907,
"posthistory": 303155,
"trans": 1056320,
"yearmonth": 383282
},
"tables_not_reached_by_a_copy": {}
},
"shuffled_copies": {
"run": true,
"verdict": "equal",
"differs": false,
"result_hash": "sha256:72690a81e0434057ce0663df9509851fc49c58a03fb3eab18a6f556f3eb8bb38",
"result": {
"columns": [
{
"name": "name",
"declared_type": "text"
}
],
"row_count": 1,
"truncated": false,
"rows_shown": 1,
"rows": [
[
{
"type": "str",
"value": "Serra Angel"
}
]
],
"result_hash": "sha256:72690a81e0434057ce0663df9509851fc49c58a03fb3eab18a6f556f3eb8bb38"
}
},
"plan_variant": {
"run": false,
"reason": "the plan variant was not asked for"
}
}
SELECT name FROM cards WHERE name IN ('Serra Angel', 'Shrine Keeper') ORDER BY convertedManaCost DESC NULLS LAST LIMIT 1
result_hash sha256:72690a81e0434057ce0663df9509851fc49c58a03fb3eab18a6f556f3eb8bb38 recomputed from this JSON: match
record_hash sha256:18ddcb88451254816aaef365e0fe4b2e4f5a51f8d5ba5a76acc2c2835f99793a recomputed from this JSON: match
from evidence-gold.json, 1 row
| nametext |
|---|
| Serra Angel |
SELECT
CASE
WHEN a.convertedmanacost > b.convertedmanacost THEN 'Serra Angel'
WHEN a.convertedmanacost < b.convertedmanacost THEN 'Shrine Keeper'
ELSE 'Both cards have the same converted mana cost'
END AS card_with_more_converted_mana_cost
FROM
cards a,
cards b
WHERE
a.name = 'Serra Angel'
AND b.name = 'Shrine Keeper'
result_hash sha256:3c400e4f40a5aa9b65ce28a5aa0f80c71e2097b58f89f3ea6bdc83c6bd3d0c76 recomputed from this JSON: match
record_hash sha256:a212126a12f1ec1f2ea83a527e407a2ca097d12140400202c3a4c270ad7400c3 recomputed from this JSON: match
from evidence-second.json, 88 rows
| card_with_more_converted_mana_costtext |
|---|
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
| Serra Angel |
re-run this statement read-only against PostgreSQL 16.15 (Debian 16.15-1.pgdg13+2) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit | server=172.17.0.2/32:5432 | database=bird under the session settings and over the data this record's fixture digest names, and compare the two results under R-ORD
re-run this statement read-only against PostgreSQL 16.15 (Debian 16.15-1.pgdg13+2) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit | server=172.17.0.2/32:5432 | database=bird under the session settings and over the data this record's fixture digest names, and compare the two results under R-ORD