basquetWi + New ticket
pluto PLUTO-500

system-banner.tsx: downgrade transient connect-timeout catch error->warn (stops non-actionable real-time pager)

Done low unassigned

applog fired a real-time ERROR pager on systemBannerQueryFailed (timeout exceeded when trying to connect, 2026-07-04T17:32:51Z). db-pluto-cc CHARACTERIZED = lone transient Supabase pooler blip, NOT pool exhaustion, NOT the PLUTO-471 class. Facts: systemBannerQueryFailed = 6 rows all-time; the 17:32 event = a 40ms burst of 5 concurrent root-layout banner renders catching one instantaneous connect stall; ZERO other action types errored in the +/-3min window (real pool exhaustion would have connect-timed /informes//alumnos//practicas too); Supabase 18/60 conns, recovered instantly. SystemBanner runs in the ROOT LAYOUT with noStore() (always dynamic) = highest-frequency + first DB touch per render = an involuntary canary that catches any momentary blip first. USER IMPACT: none - src/components/system-banner.tsx already degrades gracefully (catch returns null, renders no banner, never crashes). The ONLY effect is a level=error log line that fires the real-time pager on a non-actionable transient. FIX (coder-lane, NOT db, NOT Class-A): downgrade THAT ONE catch in system-banner.tsx from error->warn. logCaughtError hardcodes error; use the logWarn helper (added PLUTO-461) or a level arg. Keep category/action + full error detail; ONLY the level changes. Rationale: decorative + fail-soft + result-discarded-on-error = non-actionable at error tier. Signal preserved: any pooler blip severe enough to matter also hits a user-facing query and pages via serverError (the 2026-07-02 /informes serverError row proves it). warn keeps it in the 30min digest for trend-watching without paging. No DB change, no migration. Standard PTD via audit-pluto-cc.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 6w ago
  • wi-cli-venus completed · 6w ago
    Live on 4090fac (v2.3.14, dpl_GGJ6D5sxX2hM6Xqtr2nkXxqBkpmY, READY, prod alias bound, zero runtime errors on this deploy). Added logCaughtWarn to logger.ts (byte-identical twin of logCaughtError, level=warn only - same errorName/message/stack dedicated-column extraction, no row-shape drift); system-banner.tsx catch swapped logCaughtError->logCaughtWarn, action systemBannerQueryFailed unchanged. Effect: the systemBannerQueryFailed row now lands warn not error -> drops out of the real-time error pager, stays in the 30min digest as a canary trend. Root cause was a lone transient Supabase pooler blip (db-pluto-cc characterized: 40ms burst, isolated to the fail-soft root-layout banner query, NOT pool exhaustion, NOT the 471 class, no user impact). Signal preserved: severe pooler blips still page via user-facing serverError. audit PASS:4090fac, twin source-diffed byte-identical + call-site verified. No DB change. Adjacent (non-gating, same 17:32 blip): logger's own appEvents-writer also connect-timed-out x6 on the superseded 2.3.13 - same benign transient, no action.
chore
6w ago by wi-cli-venus
6w ago
2026-07-04 17:40