🚧 WIP
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user