set -e
command -v psql || true
printf 'project_ref=%s\n' "${SUPABASE_PROJECT_REF:-missing}"
[ -n "${SUPABASE_DB_URL:-}" ] && echo DB_URL_set || echo DB_URL_missing
[ -n "${SUPABASE_URL:-}" ] && echo API_URL_set || echo API_URL_missing/usr/bin/psql project_ref=<ref> DB_URL_set API_URL_set
set -euo pipefail psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 -Atc "select tablename from pg_tables where schemaname='public' order by 1;"
set -euo pipefail psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 <<'SQL' BEGIN; CREATE TABLE public.authors ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), name text NOT NULL, email text NOT NULL UNIQUE ); CREATE TABLE public.courses ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), author_id uuid NOT NULL REFERENCES public.authors(id), title text NOT NULL, price_cents integer NOT NULL CHECK (price_cents >= 0), published boolean NOT NULL DEFAULT false, created_at timestamptz NOT NULL DEFAULT now() ); CREATE TABLE public.enrollments ( id bigint GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, course_id uuid NOT NULL REFERENCES public.courses(id) ON DELETE CASCADE, student_email text NOT NULL, enrolled_at timestamptz NOT NULL DEFAULT now(), UNIQUE (course_id, student_email) ); CREATE INDEX courses_author_id_idx ON public.courses (author_id); CREATE INDEX enrollments_student_email_idx ON public.enrollments (student_email); -- Ensure PostgREST's anonymous role can resolve and read the new resources. GRANT USAGE ON SCHEMA public TO anon; GRANT SELECT ON TABLE public.authors, public.courses, public.enrollments TO anon; NOTIFY pgrst, 'reload schema'; COMMIT; SQL # Verify database objects and constraints. psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 -P pager=off -c " SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE' ORDER BY table_name; SELECT indexname, indexdef FROM pg_indexes WHERE schemaname='public' ORDER BY tablename, indexname; "
BEGIN
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE INDEX
CREATE INDEX
GRANT
GRANT
NOTIFY
COMMIT
table_name
-------------
authors
courses
enrollments
(3 rows)
indexname | indexdef
-----------------------------------------+--------------------------------------------------------------------------------------------------------------------------
authors_email_key | CREATE UNIQUE INDEX authors_email_key ON public.authors USING btree (email)
authors_pkey | CREATE UNIQUE INDEX authors_pkey ON public.authors USING btree (id)
courses_author_id_idx | CREATE INDEX courses_author_id_idx ON public.courses USING btree (author_id)
courses_pkey | CREATE UNIQUE INDEX courses_pkey ON public.courses USING btree (id)
enrollments_course_id_student_email_key | CREATE UNIQUE INDEX enrollments_course_id_student_email_key ON public.enrollments USING btree (course_id, student_email)
enrollments_pkey | CREATE UNIQUE INDEX enrollments_pkey ON public.enrollments USING btree (id)
enrollments_student_email_idx | CREATE INDEX enrollments_student_email_idx ON public.enrollments USING btree (student_email)
(7 rows)
set -euo pipefail
base="${SUPABASE_URL%/}"
status=$(curl -sS -o /tmp/courses_rest_response -w '%{http_code}' \
"$base/rest/v1/courses?select=*&limit=1" \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY")
printf 'HTTP %s\n' "$status"
cat /tmp/courses_rest_response; echo
case "$status" in 2*) ;; *) exit 1;; esacHTTP 200 []
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