Skip to content

fix(deepwork): implement todaysAccum stub + tests#7

Merged
akihidem merged 1 commit into
mainfrom
fix/todays-accum-stub
Jun 9, 2026
Merged

fix(deepwork): implement todaysAccum stub + tests#7
akihidem merged 1 commit into
mainfrom
fix/todays-accum-stub

Conversation

@akihidem

@akihidem akihidem commented Jun 9, 2026

Copy link
Copy Markdown
Owner

なぜ

todaysAccum() は公開 export なのに throw new Error("not implemented") で、呼ぶと必ずクラッシュする潜在欠陥だった(TODO v0.2 で実装意図は明記済み)。published npm CLI の公開 API に「呼ぶと落ちる」関数が残っている状態を解消する。

何を

  • src/infer/deepwork.ts: todaysAccum(now, spans) を実装。now のローカル日付に属す span(startedAt 基準)だけを絞り、min を合計して Math.round{date, totalMin, spans} を返す。
  • src/infer/work_state.ts: private ymd()export 化(重複実装を避け deepwork.ts から import)。
  • tests/todays-accum.test.ts: 4 ケース新規(前日/翌日除外・空入力・端数丸め・真夜中跨ぎ)。

設計判断

  • span の所属日は startedAt で判定: 開始日でその日に属すとみなす(跨ぎ span は開始日に全量計上)。シンプルで予測可能。按分は v0.3 のアクティブ入力モニタ導入時に再検討。
  • ymd は work_state から共有: 日付整形を2箇所に複製せず単一実装に。循環依存なし(work_state は import を持たない一方向辺)。
  • 丸めは「合計後に Math.round」で DeepWorkAccumulator の慣習に合わせた。

スコープ外

  • todaysAccum呼び出し元への配線は未実施(現状この関数はライブラリとして未使用。実装+テストのみ)。利用箇所が必要になった時に別 PR で wiring。
  • shouldWarnDailyCap(既存・未使用)は変更なし。

検証方法

  • npm test: 33 pass / 0 fail(既存29+新規4)。
  • tsc --noEmit: exit 0
  • 独立した敵対的レビュー(別エージェント)で正当性・循環依存・公開API汚染・回帰・秘密混入を反証 → ブロッカーなし。指摘の「跨ぎ未テスト」を受けてテストを1件追加済み。

依存

  • なし(新規依存・設定変更なし。差分は src 2 + test 1 の最小)。

🤖 Generated with Claude Code

todaysAccum は公開 export なのに throw する潜在欠陥だった(TODO v0.2)。当日(now のローカル日付)の span を startedAt 基準で絞り、min を合計して返す実装に。ymd を work_state.ts から export して重複を回避。テスト4件追加(除外/空/丸め/跨ぎ)。

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@akihidem akihidem merged commit f9e7958 into main Jun 9, 2026
2 checks passed
@akihidem akihidem deleted the fix/todays-accum-stub branch June 9, 2026 02:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant