Skip to content

Fleet queue unreachable: Supabase PostgREST 503 PGRST002 (schema cache) + 522, 2026-10-30 ~09:19 CDT #2767

Closed

Description

@dezren39

Problem

The fleet queue's Supabase PostgREST endpoint (muse-dev, used by ~/tools/repo-queue.py for all repo-health-* queues) is returning errors, so no queue reads or writes succeed:

  • Repeated HTTP 503 from PostgREST: {"code":"PGRST002","message":"Could not query the database for the schema cache. Retrying."}
  • One HTTP 522 (Cloudflare origin error) in the same window.

Evidence (2026-10-30, dispatcher run 09:15–09:33 CDT)

  • First failure ~09:19 CDT on repo-queue.py health and a direct tasks query (queued/claimed/parked across repo-health-openchamber-pilot, repo-health-opencode-pilot, repo-health-nix-pilot).
  • Retries at ~09:24, ~09:26 (x3, incl. one 522), ~09:31 CDT all failed the same way — outage persisted at least ~12 minutes across the whole run.
  • The laptop/OpenChamber side is healthy in the same window: /api/version + /api/session-activity + full /api/quota/* reads all succeeded over ~/tools/laptop-ssh.sh. This is isolated to the Supabase/PostgREST side.

Impact

  • The OpenChamber dispatcher could not inventory queued/claimed tasks, so it dispatched nothing and could not perform executor-saturated hand-backs this run (dispatcher-log 2026-10-30 09:15 run).
  • Presumably every queue consumer (lanes, workers, fleet monitor, babysitter queue checks) is equally blocked while this lasts.

Acceptance

  • PostgREST schema-cache/origin health restored: repo-queue.py health and a tasks query succeed again.
  • A note here recording when it recovered and, if known, the cause (schema-cache reload failure vs origin outage), so a recurrence is recognisable from this issue instead of rediscovered per-run.

Activity

  1. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    OpenChamber scheduled lane cross-reference at 15:44Z: outage now continuous ~65 minutes (first 14:39Z, still 503 PGRST002 at 15:44Z, one 522 at ~15:18Z). This lane failed its health gate and claimed nothing, so no stranded claims from it. Details and the 401-vs-503 edge check are on #2768: #2768 (comment)

  2. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Intake review

    🤖 Agent note · handed off

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: cron repo-fleet-monitor, 2026-10-30 11:12 CDT run
    • Found via: monitor reconciliation (Duty 2 intake enrichment)
    • Task: Intake pass: verified the outage is STILL LIVE this run, normalised labels, marked enriched.
    • Expectation: effort/s once the upstream recovers (the fix is upstream Supabase/PostgREST health, not fleet code); the fleet-side work is the recovery note + stranded-claim reconciliation.
    • Links: companion outage issue fleet(queue): queue control plane down - PostgREST 400 then 503 PGRST002 / 521, verbs after claim blocked #2768

    Still live? Yes — verified this run at ~16:12Z: repo-queue.py health returned HTTP 503 PGRST002 ("Could not query the database for the schema cache") for ALL FOUR pilot queues (code, opencode, openchamber, nix). The issue's own ## Acceptance section stands as its acceptance criteria, so no duplicate section was appended.

    Notes / risks: #2768 covers the same outage window from a second run's evidence — the two should be reconciled (one kept as the canonical outage record) once recovery lands, not before. Until health returns, every queue verb (enqueue/claim/park/complete/cancel/bind) is blocked fleet-wide; GitHub labels are the only truthful state surface in the meantime, and claim leases will keep lapsing back to queued — that is expected outage behaviour, not worker evaporation.

    Suggested approach: on recovery — post the recovery timestamp + cause here, land stranded terminal verbs from checkpoints, then run the monitor's divergence repair across all queues.

  3. added
    kind/infrastructureInfrastructure / host-portability work
    source/fleet-monitorFiled or driven by the fleet monitor / operator reconciliation
    priority/criticalDrop everything: main broken, security exposure, repo-wide outage
    effort/sSmall: expected under 2 hours of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    queue/queuedHas a queued task in the Supabase agent queue
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Oct 30, 2026
  4. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  5. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked-up

    • Agent: queue worker (repo-worker-code), lane c29174f1-48e0-4b13-b4ff-9b73ab67e9ab
    • Session / ID: OpenChamber scheduled lane, task 3956
    • Found via: queue claim
    • Task: Revalidate the 2026-10-30 Supabase/PostgREST outage against current service state. The issue is open and has no hard-stop labels; claim labels already mirror the queue state.
    • Expectation: Check queue health and live queue operations; record whether the incident remains active and route a fix only if current evidence confirms one.
    • Links: task 3956
  6. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done (triage)

    Triage verdict: NOT CONFIRMED NOW — resolved with evidence

    The reported outage is historical, not currently active. At the start of this run (2026-11-03 ~01:40Z), python3 ~/hatch/tools/repo-queue.py health returned successfully for all queues; this task's claim and subsequent checkpoints also successfully read/wrote through the same queue backend, with no 503/522. Companion issue #2768 independently recorded successful queue operations on 2026-11-03 ~00:40–00:55Z and was closed as resolved.

    The exact recovery time is unknown; it occurred after the last reported 503 on 2026-10-30 ~16:12Z and no later than the successful operations on 2026-11-03 ~00:40Z. Cause is unknown; the evidence points to a transient upstream Supabase/PostgREST health incident, not a fleet-code defect. No follow-up fix packet is warranted. Closing this incident as resolved; reopen if the queue backend fails again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

effort/sSmall: expected under 2 hours of workkind/infrastructureInfrastructure / host-portability workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/criticalDrop everything: main broken, security exposure, repo-wide outagesource/fleet-monitorFiled or driven by the fleet monitor / operator reconciliation

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions