set -eu
printf 'URL=%s\nREF=%s\n' "$SUPABASE_URL" "$SUPABASE_PROJECT_REF"
for v in SUPABASE_ANON_KEY SUPABASE_SERVICE_ROLE_KEY SUPABASE_DB_URL SUPABASE_DB_PASSWORD; do if [ -n "${!v:-}" ]; then echo "$v=set"; else echo "$v=missing"; fi; doneURL=https://<ref>.supabase.co REF=<ref> SUPABASE_ANON_KEY=set SUPABASE_SERVICE_ROLE_KEY=set SUPABASE_DB_URL=set SUPABASE_DB_PASSWORD=set
set -u
base="$SUPABASE_URL/storage/v1"
create_bucket() {
name="$1"; pub="$2"
code=$(curl -sS -o /tmp/create.out -w '%{http_code}' -X POST "$base/bucket" \
-H "Authorization: Bearer $SUPABASE_SERVICE_ROLE_KEY" \
-H "apikey: $SUPABASE_SERVICE_ROLE_KEY" -H 'Content-Type: application/json' \
--data "{\"id\":\"$name\",\"name\":\"$name\",\"public\":$pub}")
echo "create $name: HTTP $code $(cat /tmp/create.out)"
[ "$code" = 200 ] || [ "$code" = 201 ] || [ "$code" = 409 ]
}
create_bucket site-assets true
create_bucket contracts false
upload() {
bucket="$1"; path="$2"; content="$3"
code=$(printf '%s' "$content" | curl -sS -o /tmp/upload.out -w '%{http_code}' -X POST "$base/object/$bucket/$path" \
-H "Authorization: Bearer $SUPABASE_SERVICE_ROLE_KEY" \
-H "apikey: $SUPABASE_SERVICE_ROLE_KEY" -H 'Content-Type: text/plain' \
--data-binary @-)
echo "upload $bucket/$path: HTTP $code $(cat /tmp/upload.out)"
[ "$code" = 200 ] || [ "$code" = 201 ]
}
upload site-assets hello/banner.txt 'CARI banner v1'
upload contracts 2026/nda-007.txt 'CARI NDA 007 draft'create site-assets: HTTP 200 {"name":"site-assets"}
create contracts: HTTP 200 {"name":"contracts"}
upload site-assets/hello/banner.txt: HTTP 200 {"Key":"site-assets/hello/banner.txt","Id":"463ddcf2-a531-4394-98b5-dcc7d361b0eb"}
upload contracts/2026/nda-007.txt: HTTP 200 {"Key":"contracts/2026/nda-007.txt","Id":"6e62bdb6-ee70-4869-a412-3dd70b910fc4"}
set -eu
public_url="$SUPABASE_URL/storage/v1/object/public/site-assets/hello/banner.txt"
private_public_url="$SUPABASE_URL/storage/v1/object/public/contracts/2026/nda-007.txt"
private_auth_url="$SUPABASE_URL/storage/v1/object/contracts/2026/nda-007.txt"
plain_code=$(curl -sS -D /tmp/pub.h -o /tmp/pub.body -w '%{http_code}' "$public_url")
private_code=$(curl -sS -D /tmp/priv.h -o /tmp/priv.body -w '%{http_code}' "$private_public_url")
auth_code=$(curl -sS -D /tmp/auth.h -o /tmp/auth.body -w '%{http_code}' \
-H "Authorization: Bearer $SUPABASE_SERVICE_ROLE_KEY" -H "apikey: $SUPABASE_SERVICE_ROLE_KEY" "$private_auth_url")
printf 'public GET: %s body=%s\n' "$plain_code" "$(cat /tmp/pub.body)"
printf 'private public URL GET: %s body=%s\n' "$private_code" "$(cat /tmp/priv.body)"
printf 'private authorized GET: %s body=%s\n' "$auth_code" "$(cat /tmp/auth.body)"
[ "$plain_code" = 200 ] && [ "$(cat /tmp/pub.body)" = 'CARI banner v1' ]
[ "$private_code" != 200 ]
[ "$auth_code" = 200 ] && [ "$(cat /tmp/auth.body)" = 'CARI NDA 007 draft' ]public GET: 200 body=CARI banner v1
private public URL GET: 400 body={"statusCode":"404","error":"Bucket not found","message":"Bucket not found"}
private authorized GET: 200 body=CARI NDA 007 draft
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