Story: Telemetry database sink
Table of Contents
This page documents a story in Sprint 11. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Make unit-test logs available to subsequent analysis: split off
ores.telemetry.database to break the circular dependency, and add a
Boost.Log sink that writes telemetry directly to the database.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 11 |
| Now | Completed 2026-02-03. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2026-02-03 |
Acceptance
ores.telemetry.databasecomponent present; circular dep broken.- Database sink backend implemented.
ORES_TEST_LOG_DATABASECMake option toggles test logging.- Three-tier tenant lifecycle:
terminate/deprovision/purge. - Recursive-logging guard prevents telemetry-about-telemetry loops.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Add ores.telemetry.database component | DONE | 2026-05-19 | 2026-02-03 | Split telemetry repository/mapper/entity into ores.telemetry.database to resolve the ores.telemetry ↔ ores.database circular dependency; Boost.Log database_sink_backend. |
| Add database logging for tests | DONE | 2026-05-19 | 2026-02-03 | ORES_TEST_LOG_DATABASE CMake option enables direct DB logging from unit tests; three-tier tenant lifecycle (terminate / deprovision / purge); skip_telemetry_guard prevents recursive logging. |
Decisions
- Three-tier lifecycle
- terminate keeps the data, deprovision soft-deletes the temporal data, purge is the hard delete. Lets us look at past test runs without keeping everything forever.
- RAII
skip_telemetry_guard - prevents the recursive log → telemetry → log loop.
Out of scope
- Telemetry retention policy enforcement (separate story).
See also
- Observability and telemetry (sprint 07) — predecessor work establishing the components.