pluto
PLUTO-150
Alerting hardening: daily heartbeat-appEvent (cron writes pulse + checker alerts on silence) so dead applog-listener is detected not assumed-healthy — adopt MARS-148 pattern; + rail watermark/catch-up gap (nw-venus/pm-venus own rail leg)
Done normal
unassigned
⛔ Subsumed by fleet rail fix (nw-venus WI); tracking coverage, no separate Pluto build
Questions
No questions.
Activity
-
RECONCILE: the applog listener is a SINGLE venus-host codebase serving all 3 apps, so the heartbeat + watermark-catch-up + force-IPv4 fix is delivered fleet-wide by the nw-venus rail WI (coder-venus impl, reversible, in motion 2026-06-19). PLUTO-150 is NOT a separate Pluto coder cron — re-scoped to: verify Pluto's listener is covered by the fleet fix + Pluto gets the daily heartbeat pulse. Do not duplicate. Blocked-on/tracks the nw-venus rail WI.
-
Subsumed by fleet rail fix (nw-venus WI); tracking coverage, no separate Pluto build
-
Covered by EVO-5 (fleet rail fix, nw-venus/coder-venus). nw-venus confirmed 3 separate systemd listener instances, each with own APPLOG_APP + %i-rt-watermark.json → B(watermark catch-up) + C(daily heartbeat) operate PER-APP: Pluto's heartbeat writes to Pluto appEvents, Pluto's outage gap recovers independently, a dead Pluto connection shows a stale Pluto pulse while venus/mars stay fresh. Per-app distinguishable, no separate Pluto build needed. Root cause was IPv6 AAAA on sa-east-1 pooler w/ no IPv6 route → ECONNREFUSED; fix forces IPv4.
-
REOPEN: EVO-5 leg C (heartbeat) needs a per-PROJECT action for Pluto — A+B (IPv4 + watermark catch-up) already cover Pluto, but C hit a least-priv wall (listener runs as read-only applog_reader, can't INSERT its pulse, 42501). Pluto must create a dedicated INSERT-only applog_writer role in its Supabase project + hand the DSN to nw-venus for the per-instance EnvironmentFile. db-pluto dispatched: DDL → audit pre-apply → apply → DSN to nw-venus. Reversible (DROP ROLE), no Elazar gate.
-
Pluto DB leg DONE (db-pluto): applog_writer created on fdwjmzjwurbpkxersigg — INSERT-only on appEvents, no role membership, no superuser/createrole/createdb; audit PASS (trg NOTIFY-only, UUID PK no seq grant, NOT-NULL cols defaulted); applied via DATABASE_URL_DIRECT, INSERT verified + SELECT denied; DSN DM'd to nw-venus as APPLOG_HEARTBEAT_DSN; ltm.md updated. REMAINING: nw-venus sets the DSN in Pluto's per-instance EnvironmentFile + restart → verify Pluto's per-app heartbeat row lands → then close.
-
EVO-5 C leg LIVE for Pluto: nw-venus wired APPLOG_HEARTBEAT_DSN into Pluto's per-instance EnvironmentFile + restarted; first per-app heartbeat row ec356799 confirmed in Pluto appEvents 2026-06-19 19:59:12 UTC. A dead Pluto listener now shows a stale Pluto pulse (detection), A+B (force-IPv4 + watermark catch-up) already recover the gap. Full alert-rail hardening (Elazar concern c) complete fleet-wide. Pluto leg: applog_writer least-priv role (audit PASS) + DSN handoff. Closed against EVO-5.
task
2026-06-19 by wi-cli-venus
6w ago
2026-06-19 19:59