Kilroy — Vision-Proposal Fallback + Report-Cron Port (2026-07-27)
Second batch of 7/27 Kilroy work (after the pre-filled upload links).
Vision-proposal Telegram fallback
services/field_photo_analyzer.send_photo_proposal_to_darius previously let
proposals expire silently in Redis (5-min TTL) when the WhatsApp send failed —
which is every send while Rob’s WhatsApp session is down (7/26 mis-pair). Now
falls back to Kilroy’s HMAC-V2 deliver_only webhook route field-proposal
(→ Darius’s Telegram, chat 8516142957). WhatsApp remains primary. entirely-api
40cdba1. kilroy_notify.py graduated from test utility to gated helper
(notify_ops / notify_field_proposal), armed by KILROY_WEBHOOK_SECRET in
the API .env. Kilroy SOUL proposal section updated (deliver_only = Kilroy’s
LLM never sees the outbound; it only forwards CONFIRM/EDIT replies).
Rob report-cron port
Rob’s crons still fire from state/openclaw.sqlite (the .migrated files are
OpenClaw’s own storage migration, not a disable) but every WhatsApp delivery
fails since 7/26. All 9 enabled report-type crons ported to Kilroy (Hermes),
deliver → Dustin Telegram, model pinned sonnet-4-6, [SILENT] suppression for
nothing-to-report runs (verified live: triage alert ran, total_flagged=0,
delivery suppressed): Daily Triage Alert, Cert Readiness Scan, Weekly Pipeline
Summary, Tomorrow Schedule Preview, Invoice Aging, Stalled Projects, Permit
Expiry, RFI Aging, Weekly Health Digest. Kilroy now runs 13 active jobs.
Prompts adapted: localhost:8000, API key read from ~/.hermes/.env at call time
(Rob’s originals embed the key inline — rotation flagged).
Custom-commit audit (trial exit criterion #2)
- session-log-tool → Hermes native
session_search✓ - self-reflection hook → no direct equivalent (curator covers skills only) — optional port via Hermes hooks if wanted
- WhatsApp .meta.json sidecar → obsolete: Kilroy files media via
/field-media/uploadwith caption context in-loop - Docker hardening + whatsapp dist bundling → N/A (systemd user service; WhatsApp first-class in Hermes)
Relationships
- services/field_photo_analyzer.py → falls back to → services/kilroy_notify.py
- services/kilroy_notify.py → posts to → Hermes webhook adapter (172.24.0.1:8644)
- Kilroy cron fleet → shadows → Rob report crons (outage coverage)