## 実装計画

### 原因
期限切れ判定が `due <= today` になっており、期限が今日のタスクも期限切れ扱いになります。しかも同じ誤判定が2箇所にあります。

- `taskboard/report.py:12` の `is_overdue()`。`list` の `[期限切れ]` 表示に使われます。
- `taskboard/cli.py:53` の `overdue` コマンド内にあるインライン判定。一覧と件数に使われます。

片方だけ直すと `list` と `overdue` の結果が食い違うため、両方を直す必要があります。

### 修正内容
1. **`report.py`**: `task.due <= today` を `task.due < today` に変更します。
2. **`cli.py`**: インライン判定をやめ、既に import 済みの `is_overdue(t, today)` を使います。判定が1箇所に集約され、再発を防げます。
3. **テスト追加** (`tests/test_basic.py`)
   - `is_overdue` で `due == today` が False になることを確認します。
   - `overdue` コマンドで、期限が今日のタスクが一覧と件数に含まれないことを確認します。

### 検証
- `python -m unittest discover -s tests` を実行して全テストが通ることを確認します。
- 今日・昨日・明日が期限のタスクを追加し、`list` と `overdue` を実行します。昨日期限のものだけが `[期限切れ]` になり、件数が1件になることを確認します。

計画は `<計画ファイル置き場>/shimmering-popping-pelican.md` にも保存しました。この計画で進めてよければ、実装に移ります。