pm-triage-listen: rowless NOTIFY kinds (weeklyReport) silently dropped
pm-triage-listen.ts drops every rowless NOTIFY kind at TWO points, not one: formatPayload() ends 'return null' (line ~365) and the realtime notification handler independently returns at 'if (!table) return' (~line 505, kind->table map covers only accessRequest/supportTicket). pluto's weekly KPI cron (pluto .../practicas-kpi-report/route.ts:522) pg_notify's {kind:weeklyReport,text} every Mon 09:00 UTC and has never been delivered - silent, indistinguishable from a quiet week. Fix shape: a rowless passthrough kind must be relayed via postDM(p.text) and RETURN BEFORE enqueue(), never entering the coalesce buffer or touching the watermark - it has no row id, and feeding a synthetic id into the cursor risks a cursor-ahead state, which VENUS-313 documents as unrecoverable. Text is pre-rendered Spanish, emitter-capped <7900B, relayed verbatim. Note: NOTIFY-only means NO catch-up recoverability - if the daemon is down/reconnecting at the emit instant the report is lost permanently; ask pluto whether best-effort is acceptable or the emitter needs a backing row. Tracking ref on pluto side: PLUTO-520; PLUTO-519 Option A (generic operatorAlert passthrough) is the wider shape.
Questions
Activity
-
Shipped 1cd8b4e v1.12.38. PASSTHROUGH_KINDS={weeklyReport,operatorAlert}; passthroughText() relays p.text verbatim via postDM and RETURNS before enqueue() — no id/createdAt/watermark contact. Both drop points closed (formatPayload trailing null + realtime kind->table map). tsc clean. Deployment: NOT a Vercel artifact — venus-pm-triage-listen + pluto-pm-triage-listen units both run tsx against the venus worktree (same file), so pluto's relay was running the dropping code from my tree; restarted BOTH, each came up 'connected, LISTEN pm_triage' + 'catch-up clean'. NOT YET VERIFIED: no live passthrough has flowed; declined to hand-fire a synthetic pg_notify (would land in pm-pluto-cc DMs as real PM signal). coder-pluto-cc asked to POST their kpi cron for a genuine end-to-end; else first proof is Mon 09:00 UTC. Best-effort by construction — durable fix is emitter-side row, tracked on pluto board.
-
Shipped 1cd8b4e v1.12.38; live passthrough proof pending pluto cron fire