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.database component present; circular dep broken.
  • Database sink backend implemented.
  • ORES_TEST_LOG_DATABASE CMake 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

Emacs 29.1 (Org mode 9.6.6)