# T312 — outcome-observe-job-72h

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

## Goal

完成後系統應：Job/worker `outcome_observe` 在 72h 窗內更新訊號；能讀則寫 confirmed/possible；不能讀則跳過；窗結束 expired。

## Depends on

- T311

## Inputs

- Spec：`../spec.md` §3.1、§5.4、§5.5、OC-02～03、OC-08
- 既有 job runner／worker

## Outputs

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/internal/**/job/**` 或 worker | edit | template outcome_observe |
| `apps/backend/internal/**/outcome/**` | edit | ApplySignals / Expire |
| 註記檔或 TESTING 附錄 | add | Threads scope 探測結果 |

### 行為變更

- 對話→confirmed（若可得）；followers diff→possible
- 全無訊號仍保留事件（觸達）；不整域失敗

## Out of scope

- UTM（P2）
- 手動成交 API（T313）

## Acceptance

- [ ] Spec：OC-02、OC-03、OC-08（降級）
- [ ] fake transport 可測「有訊號／無訊號」
- [ ] 指令：

```bash
cd apps/backend && go test ./internal/... -run OC_0|Observe -count=1
```

## Notes

探測表寫進 notes；缺 scope 不阻塞手動路徑交付。
