実装計画をまとめました。コードはまだ書いていません。計画は `plans/archive-clever-ullman.md` にも保存してあります。

## 現状
小規模な標準ライブラリのみの CLI で、JSON ファイルに永続化しています。関連ファイルは `taskboard/models.py`、`store.py`、`cli.py`、`tests/test_basic.py`、`README.md` です。

## 方針
- **データ**: `Task` に `archived: bool = False` を追加します。`from_dict` は既に `get(..., False)` 形式なので、既存の `tasks.json` もそのまま読めます。
- **削除しない**: アーカイブは削除ではなくフラグ付けです。ID の再利用が起きません。
- **`archive`**: 引数なしで「完了済みかつ未アーカイブ」を一括でアーカイブします。未完了は変更しません。出力は「N 件アーカイブしました」で、0 件でも終了コードは 0 です。
- **`list`**: 既定ではアーカイブ済みを除外し、`--all` のときだけ全件を表示します。

## 変更箇所
1. `models.py`: `archived` フィールドを追加し、`to_dict` / `from_dict` を対応させます。
2. `store.py`: `archive_done()` を追加します。対象を更新して `save()` し、対象タスクを返します。
3. `cli.py`: `archive` サブコマンドと `list --all` を追加し、`list` の絞り込みを入れます。
4. `tests/test_basic.py`: 次を追加します。
   - 完了済みのみがアーカイブされること。
   - 永続化されること。
   - 旧 JSON を読めること。
   - `list` で非表示になり、`list --all` で表示されること。
5. `README.md`: 使用例を追記します。

## 変更しないもの
- `format_task`: 既存テストが出力を厳密一致で確認しているため、表示形式は維持します。アーカイブ済みの目印は付けません。
- `overdue`: 既に `not t.done` で完了済みを除外しているため、変更不要です。

## 検証
- `python -m unittest discover -s tests`
- 手動確認: 2 件追加して 1 件を `done` にし、`archive` を実行します。`list` で 1 件、`list --all` で 2 件になることを確認します。

## 確認したい点
- **`list --all` の表示**: アーカイブ済みに目印(例: `[A]`)を付けますか。現計画では付けず、通常のタスクと同じ表示です。
- **`done` の再実行**: アーカイブ済みタスクに `done` を再実行しても、そのまま通ります。このままで問題ないですか。

この方針で進めてよければ、お知らせください。実装に入ります。