# T811 — mock review state repository

> Status: `done`
> Milestone: `M1`
> Est. change: `~180 lines`

## Goal

完成後 mock repository 可對 pending／completed／removed 做完成、移除、復原與 tombstone 再命中，且所有操作零點數。

## Depends on

- T801、T810

## Inputs

- `apps/web/src/data/mock/radarRepo.ts`
- `apps/web/src/data/fixtures/**`
- Spec §3.1–§3.3、驗收 #2–#4

## Outputs

### 程式變更（預期路徑）

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/web/src/data/mock/radarRepo.ts` | edit | review state transition、reason、previous state、tombstone |
| `apps/web/src/data/mock/radarRepo.test.ts` | add/edit | idempotency、復原與不扣點測試 |
| `apps/web/src/data/fixtures/radarInbox.ts` | add | inbox 固定資料集 |

### 行為變更

- removed 再次命中只更新 matched metadata，不建立第二張卡、不恢復、不重判。

### API / 契約（若有）

- Mock method 形狀與 T800 的 review-state API 一致。

## Out of scope

- 不做 live repository、不做 AI 調校。

## Acceptance

- [x] 完成、移除、復原、重送操作結果穩定。
- [x] 所有 review 操作 credits_used 維持 0（mock repository 不產生計點事件）。
- [ ] 指令：

```bash
cd apps/web && npm run test -- radarRepo
```

## Notes

移除原因 `other` 必須要求 note；duplicate target 必須同 owner。
