Engineering problem
Provide a single CLI, health status for WAN/DNS/MAIN, an incident journal and Telegram notifications while keeping the data plane independent from the control-plane components.
An OpenWrt home-gateway control plane for observing WAN, DNS and service health without becoming part of the network traffic path.
A home gateway carries essential network traffic. Diagnostics and remote control are useful only when their failures cannot interrupt routing.
Provide a single CLI, health status for WAN/DNS/MAIN, an incident journal and Telegram notifications while keeping the data plane independent from the control-plane components.
Health normalizes observations, Incident Engine applies debounce/hysteresis, Projection creates events and a persistent queue decouples incident state from Telegram delivery. Control actions have a separate restricted path.
An observation is not yet an incident: one short-lived probe failure must not become an immediate alert.
Health Core normalizes WAN, DNS, MAIN and other services into OK, DEGRADED, DOWN, UNKNOWN or MAINTENANCE, tracking external evidence freshness.
Incident Engine opens DEGRADED/DOWN after three consecutive observations; recovery to OK requires two observations.
OPEN, STATE_CHANGED and RECOVERED events are persisted for replay after a restart.
Incident transitions become independent notification records. The queue keeps pending, inflight and terminal receipts for retry and recovery.
The notification adapter handles retry/backoff, HTTP 429 and ambiguous send outcomes. On-device LIVE acceptance remains a separate gate.
The design reflects the constraints of the device and the trust boundary around remote administration.
Telegram and health never decide the traffic path. A control-plane crash must not reconfigure the data plane.
Debounce, hysteresis and UNKNOWN/MAINTENANCE distinguish transient probe failures from persistent incidents.
Telegram sendMessage has no idempotency key. An ambiguous acknowledgment can still produce a duplicate; exactly-once is not claimed.
The management interface allows only predefined commands. Risky actions require distinct authorization and never belong in read-only diagnostics.
The ACCEPTANCE matrix separates isolated contract evidence from current HEAD behavior on an actual OpenWrt router. This is not a stable v1.0.0 release.
The roadmap documents earlier on-device validation; those checks do not prove every change in the latest code.
Notification, incident and state contracts include automated fault-injection and recovery checks.
Actual delivery, reboot, persistence and recovery behavior still require on-device acceptance.
The project is not presented as a production-ready stable release: critical validation gates remain open.
An acknowledged message with a lost response may be sent again despite durable delivery receipts.
OpenWrt TLS/SOCKS, worker/reboot behavior, flash persistence, sysupgrade and recovery need separate device-level checks.
The 0.7 contracts are disabled by default and lack full LIVE approval; public 0.8 documentation covers a read-only planner only.
Critical acceptance gates, sustained observation and a reproducible recovery drill are still needed.
The value lies in clear responsibility boundaries, explicit states and evidence—not the number of Telegram commands or claims of full automation.
The public repository includes the README, architectural decisions, incidents, notifications and the open ACCEPTANCE matrix.