echo "URL: $SUPABASE_URL"; echo "REF: $SUPABASE_PROJECT_REF"; echo "DB_URL set: $([ -n "$SUPABASE_DB_URL" ] && echo yes)"; which pg_dump psql; pg_dump --version
URL: https://<ref>.supabase.co REF: <ref> DB_URL set: yes /usr/bin/pg_dump /usr/bin/psql pg_dump (PostgreSQL) 18.4 (Debian 18.4-1.pgdg12+1)
psql "$SUPABASE_DB_URL" -c "SELECT count(*) FROM public.payments;" -c "\d public.payments"
count
-------
80
(1 row)
Table "public.payments"
Column | Type | Collation | Nullable | Default
--------------+--------------------------+-----------+----------+---------
id | integer | | not null |
ref_code | text | | not null |
payer | text | | not null |
amount_cents | integer | | not null |
paid_at | timestamp with time zone | | not null |
Indexes:
"payments_pkey" PRIMARY KEY, btree (id)
psql "$SUPABASE_DB_URL" -t -A -c "SELECT md5(string_agg(t::text, ',' ORDER BY id)) FROM (SELECT id, ref_code, payer, amount_cents, paid_at FROM public.payments) t;"
4e085193811a088263b1b44dc7d69f34
cd /tmp # Logical backup of ONLY public.payments (schema + data), sufficient for exact restore. pg_dump "$SUPABASE_DB_URL" --table=public.payments --format=plain --no-owner --no-privileges -f /tmp/payments_backup.sql echo "exit=$?" ls -l /tmp/payments_backup.sql echo "----- COPY / INSERT lines -----" grep -nE "COPY public.payments|INSERT INTO public.payments|CREATE TABLE public.payments" /tmp/payments_backup.sql | head
exit=0 -rw-r--r-- 1 root root 6370 Jul 26 02:00 /tmp/payments_backup.sql ----- COPY / INSERT lines ----- 30:CREATE TABLE public.payments ( 43:COPY public.payments (id, ref_code, payer, amount_cents, paid_at) FROM stdin;
cd /tmp
# Count data rows in the COPY block (between COPY ... FROM stdin; and the \. terminator)
awk '/COPY public.payments .* FROM stdin;/{f=1;next} /^\\\.$/{f=0} f{c++} END{print "data rows:",c}' payments_backup.sql
echo "--- verify terminator present ---"
grep -nE '^\\\.$' payments_backup.sql
echo "--- head of dump ---"
sed -n '25,50p' payments_backup.sqldata rows: 80
--- verify terminator present ---
124:\.
--- head of dump ---
--
-- Name: payments; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.payments (
id integer NOT NULL,
ref_code text NOT NULL,
payer text NOT NULL,
amount_cents integer NOT NULL,
paid_at timestamp with time zone NOT NULL
);
--
-- Data for Name: payments; Type: TABLE DATA; Schema: public; Owner: -
--
COPY public.payments (id, ref_code, payer, amount_cents, paid_at) FROM stdin;
1 6C8935605030 Payer-caffc0dc43 30036 2026-03-01 00:07:00+00
2 300351D74397 Payer-b964e8caa9 101426 2026-03-01 00:14:00+00
3 381DA59BBE42 Payer-77e253b14e 484618 2026-03-01 00:21:00+00
4 FD441D715532 Payer-e8610229a5 470397 2026-03-01 00:28:00+00
5 49C2E5E745B1 Payer-9719c24260 193265 2026-03-01 00:35:00+00
6 FDA6F1943C21 Payer-80f12414fe 383921 2026-03-01 00:42:00+00
7 E4006BBC4247 Payer-05dbd81397 47773 2026-03-01 00:49:00+00
cp /tmp/payments_backup.sql /tmp/payments_backup.sql.bak md5sum /tmp/payments_backup.sql /tmp/payments_backup.sql.bak echo "Backup is safe. Proceeding to trigger incident."
a5a305f6a49e4ba25cc32330656af212 /tmp/payments_backup.sql a5a305f6a49e4ba25cc32330656af212 /tmp/payments_backup.sql.bak Backup is safe. Proceeding to trigger incident.
psql "$SUPABASE_DB_URL" -c "SELECT public.run_incident();"
run_incident ------------------- incident executed (1 row)
psql "$SUPABASE_DB_URL" -c "SELECT * FROM public.incident_log ORDER BY 1;" echo "--- payments state after incident ---" psql "$SUPABASE_DB_URL" -c "SELECT count(*) FROM public.payments;" psql "$SUPABASE_DB_URL" -t -A -c "SELECT md5(string_agg(t::text, ',' ORDER BY id)) FROM (SELECT id, ref_code, payer, amount_cents, paid_at FROM public.payments) t;"
id | ran_at | details
----+------------------------------+--------------------------------------
1 | 2026-07-26 02:01:06.92677+00 | payments corrupted by incident drill
(1 row)
--- payments state after incident ---
count
-------
54
(1 row)
ff8adb1150ba4e5f76912f14ec5c1244
cd /tmp
# Build a restore script: truncate payments then reload data from the backup's COPY block.
# Extract from the COPY line through the terminator \.
awk '/^COPY public.payments .* FROM stdin;/{f=1} f{print} /^\\\.$/{if(f)exit}' payments_backup.sql > payments_data.copy
echo "--- extracted copy block head/tail ---"
head -2 payments_data.copy; echo "..."; tail -2 payments_data.copy
wc -l payments_data.copy--- extracted copy block head/tail --- COPY public.payments (id, ref_code, payer, amount_cents, paid_at) FROM stdin; 1 6C8935605030 Payer-caffc0dc43 30036 2026-03-01 00:07:00+00 ... 80 E02258DCCE80 Payer-180be3be40 267068 2026-03-01 09:20:00+00 \. 82 payments_data.copy
cd /tmp cat > restore.sql <<'EOF' BEGIN; TRUNCATE TABLE public.payments; \i /tmp/payments_data.copy COMMIT; EOF psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 -f restore.sql echo "exit=$?"
BEGIN TRUNCATE TABLE COPY 80 COMMIT exit=0
echo "=== payments count ===" psql "$SUPABASE_DB_URL" -c "SELECT count(*) FROM public.payments;" echo "=== payments checksum (should equal pre-incident 4e085193811a088263b1b44dc7d69f34) ===" psql "$SUPABASE_DB_URL" -t -A -c "SELECT md5(string_agg(t::text, ',' ORDER BY id)) FROM (SELECT id, ref_code, payer, amount_cents, paid_at FROM public.payments) t;" echo "=== incident_log (must still show the incident) ===" psql "$SUPABASE_DB_URL" -c "SELECT * FROM public.incident_log ORDER BY 1;"
=== payments count ===
count
-------
80
(1 row)
=== payments checksum (should equal pre-incident 4e085193811a088263b1b44dc7d69f34) ===
4e085193811a088263b1b44dc7d69f34
=== incident_log (must still show the incident) ===
id | ran_at | details
----+------------------------------+--------------------------------------
1 | 2026-07-26 02:01:06.92677+00 | payments corrupted by incident drill
(1 row)
7 earlier narration turn(s) are in the raw transcript.
A shell script executed against the live project and asserted on the state the agent left behind. No model judged another model.
Raw transcript · Task definition and verifier · Every attempt