ExitPlanMode ツールがこの環境で利用できないため、計画をここで提示します（計画ファイル: `archive-happy-gray.md`）。コードはまだ書いていません。

## 実装計画: 完了タスクのアーカイブ

**方針**
- タスクを削除せず、`Task` に `archived: bool = False` を持たせます。`list --all` で再表示する必要があるためです。
- アーカイブ済みも `Store.tasks` に残すので、`next_id()` が ID を再利用しません。
- 既存JSON（`archived` キーなし）は `d.get("archived", False)` で読めるため、移行は不要です。

**変更**
1. `taskboard/models.py`: `archived` フィールドを追加し、`to_dict` / `from_dict` に反映します。
2. `taskboard/store.py`: `archive_done()` を追加します。`done` かつ未アーカイブのタスクにフラグを立てて保存し、対象を返します。
3. `taskboard/cli.py`:
   - `archive` サブコマンドを追加し、`アーカイブしました: N件` と表示します。0件でも終了コードは 0 です。
   - `list` は既定で `archived` を除外し、`--all` で全件を表示します。
   - `overdue` は未完了のみが対象でアーカイブ対象と重ならないため、変更しません。
4. `README.md`: 使用例を追記します。

**テスト**（`tests/test_basic.py`）
- `archive_done` が完了済みだけを対象にし、未完了は変わらないこと。再読み込み後も保持され、2回目は0件であること。
- アーカイブ後も ID が再利用されないこと。
- 旧形式JSON（`archived` なし）を読めること。
- CLI: `archive` 後は `list` に完了タスクが出ず、`list --all` では出ること。

**検証**: `python -m unittest discover -s tests` を実行し、一時DBで `add → done → archive → list → list --all` を手動確認します。

**確認したい点**（なければ下記の既定で進めます）
- `list --all` でアーカイブ済みに目印（例 `[archived]`）を付けるか。既定では付けません。
- 未完了タスクがない、または完了済みが0件のときの `archive` は、エラーにせず `0件` と表示します。

この計画で実装してよければ、お知らせください。