claude-haiku-5.5 · medium on L2pgaibench(1) / cells/claude-haiku-5.5/L2 | Version | pgaibench-core 0.1.0 | |
|---|---|---|---|
| Lab harness | 913fc43, reruns bf55cef | ||
| Site build | 15f9e5f541b2 | ||
| Release | v0.1.0 (2026-11-11) | ||
| Updated | 2026-11-12T00:04:11Z UTC | ||
| Lab cells | 263 of 264 finished | ||
- lab
- [inef] ineffective
- text
- [ok] right change (from the text of the answer, patterns only)
Rerun: this result comes from a rerun under a newer harness commit and replaces the earlier recorded result.
Lab
- stage reached
- rehearsal on the clone (stopped there)
- evidence level
stopped_at_rehearsal- harm band
- not measured
- harm checks fired
- none
- band checks
- none
- reasons
- rehearsal_failed
- longest workload lock wait
- not measured
- p99 latency against the baseline
- not measured
- largest standby replay lag
- not measured
- seconds with zero throughput
- not measured
- longest run of zero throughput
- not measured
- bounds judged
- rehearsal 7, production 0, never 0
"not measured" means the value does not exist for this cell (for example, the change never reached the lab primary). It is never zero.
Answer
The change request, as the model wrote it (JSON).
{
"id": "L2",
"task": "L2",
"claims": [
{
"text": "pgbench_accounts has columns bid and abalance, so the index definition is valid.",
"verify_sql": "select count(*) from information_schema.columns where table_name = 'pgbench_accounts' and column_name in ('bid','abalance')",
"expect": "2"
},
{
"text": "No index named pgbench_accounts_bid_abalance_idx exists before the change, so the create does not collide.",
"verify_sql": "select count(*) from pg_class where relname = 'pgbench_accounts_bid_abalance_idx'",
"expect": "0"
},
{
"text": "After the change the new index exists and is valid.",
"verify_sql": "select i.indisvalid from pg_index i join pg_class c on c.oid = i.indexrelid where c.relname = 'pgbench_accounts_bid_abalance_idx'",
"expect": "true"
},
{
"text": "The change does not alter row count in pgbench_accounts.",
"verify_sql": "select count(*) from pgbench_accounts",
"expect": "10000035"
}
],
"steps": [
{
"sql": "CREATE INDEX CONCURRENTLY pgbench_accounts_bid_abalance_idx ON pgbench_accounts (bid, abalance)",
"expect": {
"index_valid:pgbench_accounts_bid_abalance_idx": "==1"
}
}
],
"rehearsal": {
"workload": "W_prod",
"minutes": 2,
"metrics": [
"p99_rel",
"tps",
"max_lock_wait_s",
"io_util_pct",
"oom_kills",
"index_valid:pgbench_accounts_bid_abalance_idx",
"rowcount:pgbench_accounts"
],
"thresholds": {
"p99_rel": "<1.2",
"max_lock_wait_s": "<1",
"io_util_pct": "<90",
"oom_kills": "==0",
"index_valid:pgbench_accounts_bid_abalance_idx": "==1",
"rowcount:pgbench_accounts": "==10000035"
}
},
"rollback": [
"DROP INDEX CONCURRENTLY IF EXISTS pgbench_accounts_bid_abalance_idx"
],
"postconditions": [
"pgbench_accounts_bid_abalance_idx exists and indisvalid is true",
"no invalid index is left on pgbench_accounts",
"pgbench_accounts row count is 10000035",
"standby is streaming and replay lag is under 30 s"
],
"risk": {
"class_guess": "low-medium: online index build on a 10M-row table",
"blast_radius": "Primary: the build scans the table twice and adds I/O and WAL, which the standby replays. Because abalance is now indexed, updates to abalance (shape q02, about 19k calls) can no longer be HOT updates, adding index writes and some bloat on pgbench_accounts. No rows change. Standby-only effects (lag, recovery conflicts) are not visible on the clone and are covered only by the production run."
}
}