|
@@ -110,3 +110,44 @@
|
|
|
- Runaway-source test is part of **M10** exit (loadgen
|
|
- Runaway-source test is part of **M10** exit (loadgen
|
|
|
fault-injection: one source at 10× cap must not push p99
|
|
fault-injection: one source at 10× cap must not push p99
|
|
|
for *other* sources above 5s).
|
|
for *other* sources above 5s).
|
|
|
|
|
+
|
|
|
|
|
+**2026-06-13 — M0 shipped (12 commits, 2888 LoC)**
|
|
|
|
|
+
|
|
|
|
|
+What landed:
|
|
|
|
|
+- `cmd/{ingestd,routerd,deliverd,admind}/` — four Go service mains
|
|
|
|
|
+- `cmd/ingestd/http.go` — HTTP POST handler implementing
|
|
|
|
|
+ SPEC §22 layers 1, 3, 4, 5 + Stripe-style HMAC auth
|
|
|
|
|
+- `internal/alert` — Alert v1 type + Validate() (183 LoC + 103
|
|
|
|
|
+ LoC tests)
|
|
|
|
|
+- `internal/broker` — NATS JetStream wrapper, three streams
|
|
|
|
|
+ (ALERTS/DELIVERIES/DLQ) auto-created
|
|
|
|
|
+- `internal/dedupe` — 60s SET NX EX + INCR (Redis-required tests
|
|
|
|
|
+ pass against a host-local Redis)
|
|
|
|
|
+- `internal/ratelimit` — per-second INCR bucket (Redis-required
|
|
|
|
|
+ tests pass)
|
|
|
|
|
+- `internal/observability` — slog + Prometheus registry, the
|
|
|
|
|
+ IngestdMetrics struct matches SPEC §22 metric names
|
|
|
|
|
+- `internal/httpserver` — shared /health + /metrics scaffold
|
|
|
|
|
+- `internal/config` — env-driven Common + Ingestd
|
|
|
|
|
+- `loadgen/cmd/http/` — `loadgen-http` with --mode normal,
|
|
|
|
|
+ HMAC signing, 70/25/4/1 severity mix, dedupe-pct knob
|
|
|
|
|
+- `loadgen/go.mod` — separate module per SPEC §21, replace
|
|
|
|
|
+ directive points at the parent module
|
|
|
|
|
+- `docker-compose.yml` + `Dockerfile` — single-host stack, all
|
|
|
|
|
+ 5 binaries in one image
|
|
|
|
|
+- `M0_VERIFICATION.md` — 8-step smoke test
|
|
|
|
|
+- `deploy/prometheus/prometheus.yml` — scrapes all 5 services
|
|
|
|
|
+
|
|
|
|
|
+What's NOT in M0 (and not supposed to be):
|
|
|
|
|
+- routerd/deliverd/admind business logic (M2/M3+)
|
|
|
|
|
+- MQTT, gRPC, WebSocket ingest (M4/M5/M11)
|
|
|
|
|
+- per-IP concurrency cap (M5)
|
|
|
|
|
+- circuit breaker (M9)
|
|
|
|
|
+- quarantine (M9)
|
|
|
|
|
+- ClickHouse archive (M7)
|
|
|
|
|
+- source registry in DB (M2)
|
|
|
|
|
+- Postgres migrations (M2)
|
|
|
|
|
+
|
|
|
|
|
+Module path: `git3.techno-world.net/lrosales/broad-announce`.
|
|
|
|
|
+Loadgen module path: `git3.techno-world.net/lrosales/broad-announce/loadgen`.
|
|
|
|
|
+All pushed: 7cd922c..49b2dba on master.
|