L-SS4 — Fix ssot.scarab_dead heartbeat-based view (closes #193)
Part of epic: Queen Hive Scarab Strategy Plane (gHashTag/trios)
Plan: IGLA_SCARAB_AUTONOMY_PLAN.md
Closes: #193
Проблема
ssot.scarab_dead показывает 18/18 сервисов как мёртвые, хотя heartbeat'ы свежие. Текущая логика опирается на bpb_samples (push-path), который сдох.
Решение
Migration 0012_scarab_dead_heartbeat.sql:
CREATE OR REPLACE VIEW ssot.scarab_dead AS
SELECT s.canon_name, s.service_id, h.ts AS last_heartbeat,
EXTRACT(epoch FROM (now() - h.ts))::int AS age_seconds
FROM ssot.scarab_strategy s
LEFT JOIN LATERAL (
SELECT ts FROM ssot.scarab_heartbeat
WHERE canon_name = s.canon_name
ORDER BY ts DESC LIMIT 1
) h ON true
WHERE s.status = 'active'
AND (h.ts IS NULL OR h.ts < now() - interval '120 seconds');
DoD
Acceptance — G-SS-09
-- При 27 живых heartbeat'ах:
SELECT COUNT(*) FROM ssot.scarab_dead; -- expect 0
-- Убить 1 сервис на >120s:
SELECT COUNT(*) FROM ssot.scarab_dead; -- expect 1
Constitutional
R-SI-1.
L-SS4 — Fix
ssot.scarab_deadheartbeat-based view (closes #193)Part of epic: Queen Hive Scarab Strategy Plane (gHashTag/trios)
Plan:
IGLA_SCARAB_AUTONOMY_PLAN.mdCloses: #193
Проблема
ssot.scarab_deadпоказывает 18/18 сервисов как мёртвые, хотя heartbeat'ы свежие. Текущая логика опирается наbpb_samples(push-path), который сдох.Решение
Migration
0012_scarab_dead_heartbeat.sql:DoD
SELECT COUNT(*) FROM ssot.scarab_dead= 0 когда флот живой (G-SS-09)Acceptance — G-SS-09
Constitutional
R-SI-1.