Skip to content

fleet(queue): queue control plane down - PostgREST 400 then 503 PGRST002 / 521, verbs after claim blocked #2768

Closed

Description

@dezren39

Problem

The repo-health queue control plane (Supabase PostgREST backing ~/tools/repo-queue.py) is down for all lanes, blocking every queue verb after claim-time:

  • ~14:05Z 2026-10-30: repo-queue.py health --queue repo-health-code-pilot → HTTP 400 from PostgREST (empty message), twice. claim still succeeded at 14:06Z.
  • ~14:15Z onward: complete, heartbeat, and health → HTTP 503 PGRST002 ("Could not query the database for the schema cache. Retrying."), repeatedly over ~15 minutes; one attempt returned a Cloudflare 521 "Web server is down" page for supabase.co.

Impact

Acceptance

  • repo-queue.py health --queue repo-health-code-pilot returns counts again (no 400/503).
  • The pending complete for task 3572 lands (by the original lane or a resume claim), and any other claims stranded by the outage are reconciled (completed from their checkpoints/GitHub state, not re-worked).
  • Root cause noted here (PostgREST schema-cache / upstream availability) with the outage window.

Activity

  1. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Lane A update 14:44Z: task 3572's complete retried 13+ times between ~14:15Z and 14:44Z — every attempt HTTP 503 PGRST002 (one 521). Lease expires 14:51Z with the GitHub work fully done (PR #2744 merged 111a318, #2399 closed, checkpoints on the task through awaiting_ci, done agent note on #2399, backlog + sweep.log updated). On backend recovery, the first claim of 3572 (or monitor reconciliation) only needs the closing complete verb with outcome fixed_merged / merge_sha 111a318 — do not re-work the PR.

  2. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    OpenChamber scheduled lane (worker repo-worker-code, queue repo-health-code-pilot) update — still down at 15:44Z.

    • First attempt 14:39Z, last attempt 15:44Z: every health call failed HTTP 503 PGRST002 ("Could not query the database for the schema cache. Retrying."), one HTTP 522 Cloudflare page at ~15:18Z. Zero successful queue reads or writes in ~65 minutes.
    • A claim --worker repo-worker-code --lease-seconds 2700 at ~14:46Z failed the same way, so this lane holds no claim and is leaving nothing stranded — no claim, no checkpoint, nothing to reconcile on my side.
    • Health gate (launch adaptation §2) means the run ends without claiming; the lane is idle until the backend answers again.
    • Cross-check: https://nltgxorqwxhgfzseiirt.supabase.co/rest/v1/ returns 401 at the root (edge reachable, auth layer alive) while PostgREST behind it 503s on the schema cache. Supabase's public status page still reports "All Systems Operational", so this is project-scoped, not platform-wide — consistent with a stuck schema-cache reload rather than an origin outage.

    Resume condition unchanged: one successful repo-queue.py health for repo-health-code-pilot. Given ~65 minutes of continuous 503s, a project-level intervention (PostgREST restart / schema cache reload via the Supabase dashboard, or the pending task 3572 complete from the lane-A note) is likely needed rather than more retries.

  3. 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 unreachable: Supabase PostgREST 503 PGRST002 (schema cache) + 522, 2026-10-30 ~09:19 CDT #2767

    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: #2767 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.

  4. 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
    on Oct 30, 2026
  5. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  6. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  7. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done (triage)

    Triage verdict (task 3957): NOT CONFIRMED — control plane recovered, closing as resolved

    The outage does not hold. This run (2026-11-03 ~00:40–00:55Z) transacted against the queue control plane continuously with zero PostgREST/Cloudflare errors: 4 claims (tasks 2881, 6298, 3610, 3957), ~10 checkpoints, 1 enqueue (follow-up task 6667), 1 park, 3 completes — every verb returned 0. The 2026-10-30 503 PGRST002 / 521 window described in the body is over; recovery happened sometime between the last 503 sighting (10-30 ~16:12Z per the monitor intake) and this run.

    Routing: no follow-up packet — there is nothing to fix in fleet code (the outage was upstream Supabase/PostgREST health, as the intake already assessed). Closing this issue as resolved-with-evidence. Companion #2767 covers the same window and is currently held by task 3956 in another lane; its holder verifies independently — not closed from here.

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