refactor(immersion): split tracker storage and metadata modules

Decompose the immersion tracker facade into focused storage/session/metadata collaborators with dedicated tests and updated ownership docs while preserving runtime behavior.
This commit is contained in:
2026-02-22 14:03:19 -08:00
parent a6d85def34
commit 4deef69928
9 changed files with 960 additions and 488 deletions

View File

@@ -36,7 +36,12 @@ Primary index coverage:
- event timeline/type reads: `idx_events_session_ts`, `idx_events_type_ts`
- rollup reads: `idx_rollups_day_video`, `idx_rollups_month_video`
Reference implementation lives in `src/core/services/immersion-tracker-service.ts` (`ensureSchema`).
Ownership boundaries:
- `src/core/services/immersion-tracker-service.ts`: orchestration facade (queueing, flush cadence, runtime event/session coordination).
- `src/core/services/immersion-tracker/storage.ts`: schema bootstrap, prepared statement construction, and DB record writes/updates.
- `src/core/services/immersion-tracker/session.ts`: session row lifecycle transitions (start/finalize).
- `src/core/services/immersion-tracker/metadata.ts`: local media metadata probing (`ffprobe`, sha256, parsed metadata shaping).
## Retention and Maintenance Defaults
@@ -47,7 +52,7 @@ Reference implementation lives in `src/core/services/immersion-tracker-service.t
- Maintenance cadence: startup + every `24h`
- Vacuum cadence: idle weekly (`7d` minimum spacing)
Retention cleanup, rollup refresh, and vacuum scheduling are implemented in `runMaintenance` / `runRollupMaintenance`.
Retention cleanup and rollup refresh stay in service maintenance orchestration + `src/core/services/immersion-tracker/maintenance.ts`.
## Configurable Policy Knobs

View File

@@ -0,0 +1,43 @@
# Agent Session: opencode-task106-immersion-modules-20260222T195109Z-r3m7
- alias: `opencode-task106-immersion-modules`
- mission: `Execute TASK-106 decomposition of immersion tracker service into storage session and metadata modules end-to-end without commit`
- status: `done`
- last_update_utc: `2026-02-22T21:58:45Z`
## Intent
- Load TASK-106 context from Backlog MCP.
- Produce implementation plan via writing-plans skill.
- Execute with executing-plans skill; parallel subagents where safe.
## Planned Files (expected)
- `src/core/services/immersion-tracker-service.ts`
- `src/core/services/immersion-tracker/*`
- `src/core/services/immersion-tracker-service.test.ts`
- `docs/architecture.md`
## Assumptions
- Task scope excludes commit/push.
- Existing behavior must remain stable; refactor + focused tests only.
## Progress Log
- `2026-02-22T19:51:09Z` session started; backlog overview/task/execution guides loaded.
- `2026-02-22T19:55:30Z` user approved proceed; executing plan with parallel slices (storage/session + metadata) then integration/test/docs/finalization.
- `2026-02-22T20:01:45Z` implementation complete: extracted `storage.ts`, `session.ts`, `metadata.ts`; rewired `immersion-tracker-service.ts` facade; added `storage-session.test.ts` + `metadata.test.ts`; updated `docs/immersion-tracking.md` boundaries.
- `2026-02-22T20:01:45Z` verification: tracker tests green (7 pass/9 skip), `test:core:src` green (236 pass/6 skip), `bun run build` blocked by unrelated pre-existing TS errors in `src/anki-integration/*` + `src/main/runtime/*`; left TASK-106 in progress with AC#4 unchecked.
- `2026-02-22T21:58:45Z` user confirmed build fixed; reran `bun run build` + tracker tests + `test:core:src` all green; finalized TASK-106 Done with AC/DoD complete and final summary.
## Files Touched
- `src/core/services/immersion-tracker-service.ts`
- `src/core/services/immersion-tracker/storage.ts`
- `src/core/services/immersion-tracker/session.ts`
- `src/core/services/immersion-tracker/metadata.ts`
- `src/core/services/immersion-tracker/storage-session.test.ts`
- `src/core/services/immersion-tracker/metadata.test.ts`
- `docs/immersion-tracking.md`
- `docs/plans/2026-02-22-task-106-immersion-tracker-storage-session-metadata.md`