# T061 — Scout live 載入與完成提示

> Status: `done`
> Milestone: `M6`
> Est. change: `~170 lines`

## Goal

完成後，ScoutPage 使用 live run APIs，job 完成只提示新批次且不下載全部 posts 或打斷目前頁面。

## Depends on

- T014、T060

## Inputs

- 讀取 / 依賴：
  - 檔案：`apps/web/src/pages/ScoutPage.tsx`、`JobLiveContext.tsx`
  - 既有能力 / API：listRuns、listRunPosts、jobsRevision
  - Spec 段落：§4 流程 D/E、§9 #12/#13

## Outputs

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

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/web/src/pages/ScoutPage.tsx` | edit | 移除剩餘全量 refreshPostsOnJobRevision，接 live page loading 與 new-run banner。 |
| `apps/web/src/pages/ScoutPage.test.tsx` | edit | 以 live-shaped fake 驗證 job 完成、手動 refresh 與選取保持。 |

### 行為變更

- job revision 不自動切批次；running run 顯示進度、不顯示半套 posts。

### API / 契約（若有）

- run result 只在選取 run/page 改變時請求。

## Out of scope

- 不改全域 JobsPage 或 websocket/polling 架構。

## Acceptance

- [x] 監看測試 call log，沒有 listPosts 全量呼叫或非目前 run 的 result request。
- [x] 指令：

```bash
cd apps/web && npm test -- src/pages/ScoutPage.test.tsx
```

## Notes

TodayPage 可繼續呼叫舊 listPosts，不在本 task 遷移。
