Mark Phases 3 and 4 done, and start Phase 5

Phase 4 records what was built, the two skipped Build steps (OTLP-logs
experiment, LogQL test migration) and what carries forward. Phase 3
records its outcome, with the chaos-nightmare and blocking_event_loop
criteria attested by the user.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Movses Aslanyan
2026-10-13 21:32:43 +03:30
co-authored by Claude Opus 5.5
parent 2c18962243
commit 44d7801617
4 changed files with 60 additions and 15 deletions
+14 -4
View File
@@ -2,11 +2,21 @@
*Part of `docs/roadmap/` — see [`intro.md`](intro.md) for platform/background context and [`summary.md`](summary.md) for how every phase fits together. Prev: [`phase-2.md`](phase-2.md) · Next: [`phase-4.md`](phase-4.md)*
**Status:** In progress
**Status:** Done
**Message:** Started 2026-10-12. Phase 2 got `sanctions` tracing through zero-code
`opentelemetry-instrument`, so no `common/telemetry.py` exists yet. Build step 1
writes that bootstrap by hand, in the code, to replace the wrapper.
**Message:** Started 2026-10-12, done 2026-10-13.
- `common/telemetry.py` bootstraps tracing in code for all seven services,
replacing Phase 2's zero-code wrapper. It covers FastAPI, SQLAlchemy, httpx
and Redis instrumentation.
- Trace context crosses the Redis Stream by hand: it's injected into the message
inside a PRODUCER span and extracted by both consumer groups.
- Business spans were added, swallowed exceptions are recorded on their spans,
and the response's `request_id` is now the trace ID. The guard suite is
retired.
- One request produces one connected trace across all seven services, both
consumers included (verified live during Phase 4: 51 spans, 7 services).
- The chaos-nightmare and "explain `blocking_event_loop`" criteria were attested
by the user.
**Time-box:** 2–3 evenings. This is the biggest phase and the heart of the task.