This commit is contained in:
Jonas Bengtsson
2026-10-08 07:57:21 +02:00
parent 406fdc61ac
commit 1478db73a9
14 changed files with 972 additions and 50 deletions
+16 -11
View File
@@ -50,19 +50,24 @@ Legend: **[done]** complete & verified · **[partial]** some of it landed ·
spec defines the condition per-poll; ops may want debounce/latch (decide
before the 24 h soak; live sim output showed the spam clearly).
## Phase 2 — Reporters
## Phase 2 — Reporters **[done]**
- [todo] 1. `report/jsonl.py` — rotating JSONL (size + backups), config-digest
header, atomic-ish append. **The console reporter already emits the same
events in `run` (Phase 1); Phase 2 swaps in the fan-out.**
- [todo] 2. `report/textlog.py` — **plain-text anomaly log** (spec §9.1):
- [done] 1. `report/jsonl.py` — rotating JSONL (size + backups), config-digest
header line, single-line atomic-ish appends. Live-verified.
- [done] 2. `report/textlog.py` — plain-text anomaly log (spec §9.1):
`anomalies-YYYYMMDD.log`, one line per detected anomaly, clear-text status
`NAME (0xNN)`, recoveries logged so it reads as an incident narrative.
- [todo] 3. `report/eventlog.py` — Windows Event Log (WARN+), source
registration via `install`.
- [todo] 4. `report/http.py` — optional webhook, bounded queue, never blocks
polling.
- [todo] 5. Heartbeat assembly (D15) + reporter fan-out dispatcher.
`NAME / SUB (0xNN)`, recoveries logged (incident narrative), per-day files,
shared rotation. Live-verified.
- [done] 3. `report/eventlog.py` — Windows Event Log (WARN+), severity-mapped
via a RegisterEventSource handle + positional ReportEvent (keyword args
raise TypeError — found live). Source message-file registration lands with
`install` (Phase 3). Live-verified delivery.
- [done] 4. `report/http.py` — optional webhook (`report.http` config),
bounded queue + daemon sender, never blocks the poll loop; failures counted
and dropped, injectable `post` for tests.
- [done] 5. Heartbeat assembly (D15, Phase 1) + reporter fan-out dispatcher
(`report/base.py`): per-sink failure isolation, best-effort close. The
`run` verb wires console + JSONL + textlog + eventlog (+http when set).
## Phase 3 — Windows service