feat(schema): TaskEstimate, UsageSegment, UsageLine (IDEA-235) #70

Merged
janpeter merged 1 commit from feat/idea-235-usage-tables into main 2026-10-05 10:59:28 +02:00
Owner

Samenvatting

Canonieke modellen voor IDEA-235 (sessie-usage per taak en schatting vs werkelijk), taak T-2005 (T6):

  • TaskEstimate — één schatting per taak (task_id als PK, cascade met de taak); geen kolommen op tasks (die staat in het IDEA-213-adoptiemanifest).
  • UsageSegment — aaneengesloten stuk sessietijd per taak of overhead (task_id null), id van de mod (idempotentiesleutel), user/product/sprint vast bij openen; anchor_task_id zonder FK.
  • UsageLine — tokens per agent × model per segment, uniek op (segment_id, agent_key, model_id).
  • enum UsageEndedReason — taakstatussen in DB-spelling plus SWITCHED, SESSION_END, UNTRACKED.
  • Alleen virtuele back-relaties op Task, User, Product, Sprint.

Spec: Scrum4Me docs/superpowers/specs/2026-10-04-session-usage-estimates-design.md §3.1–3.3.

Test

  • __tests__/usage-ledger-schema.test.ts (5 tests, eerst rood gezien)
  • npm run verify groen (579 tests)
  • prisma validate en prisma generate via de consumer (Scrum4Me) groen

Volgorde

Eerst deze PR mergen; daarna de Scrum4Me-PR met de migratie en de contracts (submodule-bump wijst naar 5363a1c op deze branch).

🤖 Generated with Claude Code

## Samenvatting Canonieke modellen voor IDEA-235 (sessie-usage per taak en schatting vs werkelijk), taak T-2005 (T6): - `TaskEstimate` — één schatting per taak (`task_id` als PK, cascade met de taak); geen kolommen op `tasks` (die staat in het IDEA-213-adoptiemanifest). - `UsageSegment` — aaneengesloten stuk sessietijd per taak of overhead (`task_id` null), id van de mod (idempotentiesleutel), user/product/sprint vast bij openen; `anchor_task_id` zonder FK. - `UsageLine` — tokens per agent × model per segment, uniek op `(segment_id, agent_key, model_id)`. - `enum UsageEndedReason` — taakstatussen in DB-spelling plus `SWITCHED`, `SESSION_END`, `UNTRACKED`. - Alleen virtuele back-relaties op `Task`, `User`, `Product`, `Sprint`. Spec: Scrum4Me `docs/superpowers/specs/2026-10-04-session-usage-estimates-design.md` §3.1–3.3. ## Test - `__tests__/usage-ledger-schema.test.ts` (5 tests, eerst rood gezien) - `npm run verify` groen (579 tests) - `prisma validate` en `prisma generate` via de consumer (Scrum4Me) groen ## Volgorde Eerst deze PR mergen; daarna de Scrum4Me-PR met de migratie en de contracts (submodule-bump wijst naar `5363a1c` op deze branch). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(schema): TaskEstimate, UsageSegment, UsageLine (IDEA-235)
All checks were successful
CI / Verify (pull_request) Successful in 32s
5363a1c66f
Schatting per taak in een eigen tabel (geen kolommen op tasks: IDEA-213-
adoptiepin) en sessie-usage uit interactieve Claude Code-sessies per segment
en per agent × model. Alleen tokens; USD bij het lezen via ModelPrice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
s4m-codex-reviewer left a comment

COMMENT

Geen blokkerende codefindings gevonden; vanwege de onvolledige onafhankelijke verificatie kies ik de safe-default COMMENT.

  • warning — tests/usage-ledger-schema.test.ts:1 — De volledige verify/test-run kon in deze reviewomgeving niet worden bevestigd: /tmp is noexec. npm run verify stopt bij het starten van tsc; Vitest via Node stopt bij het laden van Rollups native module. De dependency-gates en de typecheck via Node slagen. Een beperkte Node-controle van de vijf schema-asserties slaagt ook, maar vervangt de volledige suite niet. Geen aangetoond codeprobleem; bevestig de volledige gate in CI.

Plan gekoppeld via pr_refs (product Scrum4Me), referentie: T-2005 (Scrum4Me), story ST-1630. Er is niets omitted/weggevallen.

De diff is plan-conform binnen de expliciete schema-scope van deze PR: drie canonieke modellen, het afgesproken enum, nullable task_id voor overhead, cascade-relaties, idempotentiesleutel en unieke agent/model-regels. Task krijgt alleen virtuele relaties. De productarchitectuur schrijft voor dat het canonieke schema in scrum4me-shared wordt gewijzigd en migraties in Scrum4Me plaatsvinden. De PR-beschrijving reserveert migratie, contracts en submodule-bump expliciet voor de daaropvolgende Scrum4Me-PR; de resterende rechten-, migratie- en dispatch-tests zijn daarom vervolgwerk, geen blokkade voor deze PR.

Schema-commentaar en de PR-beschrijving leggen de scope en rollout-volgorde vast. Beoordeeld op commit 5363a1c66fb57284f2a44bc571501d85d2a46622; de actuele Forgejo-head komt hiermee overeen.

# COMMENT Geen blokkerende codefindings gevonden; vanwege de onvolledige onafhankelijke verificatie kies ik de safe-default COMMENT. - **warning — __tests__/usage-ledger-schema.test.ts:1** — De volledige verify/test-run kon in deze reviewomgeving niet worden bevestigd: `/tmp` is `noexec`. `npm run verify` stopt bij het starten van tsc; Vitest via Node stopt bij het laden van Rollups native module. De dependency-gates en de typecheck via Node slagen. Een beperkte Node-controle van de vijf schema-asserties slaagt ook, maar vervangt de volledige suite niet. Geen aangetoond codeprobleem; bevestig de volledige gate in CI. Plan gekoppeld via pr_refs (product Scrum4Me), referentie: T-2005 (Scrum4Me), story ST-1630. Er is niets omitted/weggevallen. De diff is plan-conform binnen de expliciete schema-scope van deze PR: drie canonieke modellen, het afgesproken enum, nullable task_id voor overhead, cascade-relaties, idempotentiesleutel en unieke agent/model-regels. Task krijgt alleen virtuele relaties. De productarchitectuur schrijft voor dat het canonieke schema in scrum4me-shared wordt gewijzigd en migraties in Scrum4Me plaatsvinden. De PR-beschrijving reserveert migratie, contracts en submodule-bump expliciet voor de daaropvolgende Scrum4Me-PR; de resterende rechten-, migratie- en dispatch-tests zijn daarom vervolgwerk, geen blokkade voor deze PR. Schema-commentaar en de PR-beschrijving leggen de scope en rollout-volgorde vast. Beoordeeld op commit `5363a1c66fb57284f2a44bc571501d85d2a46622`; de actuele Forgejo-head komt hiermee overeen.
Sign in to join this conversation.
No reviewers
No labels
severity/s4
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-shared!70
No description provided.