daax-dev / daax-dev/agentic-retrospective
Claude-native telemetry: durable telemetry ledger (trends past log rotation)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 3
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
Problem
Claude prunes session JSONL on a rolling window. A retrospective that reads only live logs cannot compute cross-sprint trends because old data disappears. Trend tracking (#18) needs durable, deduplicated history under our control.
Capability
Snapshot normalized, deduplicated telemetry into a local store that is the source of truth for historical aggregates and trends, surviving log rotation.
Behaviour
- Local store (SQLite recommended) with uniqueness constraints (e.g.
(sessionId, message_id)); idempotent insert-or-ignore; recompute aggregates from rows, never additively. - Incremental scan via per-file mtime / line counts.
- Retain rows beyond Claude's rolling window for cross-sprint trends.
- Optional opt-in Stop-hook (via
hooks/hooks.json) ingests after each response.
Acceptance criteria
- Re-ingesting the same sessions twice yields identical aggregates (idempotency).
- A trend query spans sprints whose source JSONL is gone, using stored rows.
- Incremental re-scan skips unchanged files (no-op second run).
- Stop-hook is opt-in and a no-op when disabled.
Privacy: store lives under .logs/ (gitignored), never committed. Enables trends for all dimensions. Tier 4. Depends on #36, #37. PRD: docs/prd/features/07-durable-telemetry-ledger.md.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with docs/prd/features/07-durable-telemetry-ledger.md and review the existing trend-tracking work in #18, then inspect how session JSONL is currently read. Check hooks/hooks.json for the opt-in Stop-hook path. Done means durable deduplicated rows under .logs/, idempotent and incremental ingestion, trends that survive log rotation, and a disabled hook that does nothing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- sqlite, typescript
- Domain
- backend, databases, observability
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100