# 各批派工計畫撰寫——共同說明（每個批次 subagent 都讀這份）

工作目錄：`/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be`。
**只准寫你那批的 `docs/features/FR-114-2609-security-fix-dispatch/batches/plan-b<N>.md`，不改其他任何檔、不 commit、不切 branch、不派 subagent。**

## 背景（白話）

產品資安檢視做完，145 件問題在 `docs/security-report/SUMMARY.md` 問題總表，每件標了「批」（1～6），決策者裁定六批修正順序。總表按嚴重度排、不是派工單——要翻成「一個 worktree 一張卡、一個 runner 一次做哪些事」。你負責**其中一批**，產出這批的卡片拆分。

## 你只讀這些（🔴 讀檔紀律：每次 Read 不超過 150 行；材料檔已經把該讀的表格列抽好了，不要再去整頁讀模組頁或掃描總表）

1. `batches/material-b<N>.md` ——你這批每件的 SUMMARY 列＋模組頁表格列（含「怎麼修」欄與裁定）＋掃描總表對應項（含「開卡素材」欄的檔名行號）。**這是你的主要輸入**，分段讀。
2. `docs/security-report/_handoff-internalize-5.md` 第 204～275 行——決策者已拍板原則十七條。原則三（功能不能壞）、十一（安全措施不可擋正常客戶）、十五（刪除前零引用）、十七（任務操作角色規則表）直接影響卡的內容。
3. `docs/claude/notion-card-templates.md` 第 49～60 行——修正卡骨架，你每張卡的資訊要填得滿它。
4. 需要某件的展開段細節（材料檔的表格列不夠）時，才用 `grep -n` 定位後 Read 那 20～40 行。

## 已定案、不要重議

- 每件屬哪批照 SUMMARY，不改批。
- 41 張舊修正卡與 CM-1983 草案已作廢；**唯一例外 CM-1998**（打包前端映像檔腳本內嵌 Nexus 帳密，BE/FE 四檔）第 4 批直接沿用不重開。
- 補進但不在 145 件的兩條：**M13 第 10 條**（主專案那份快取連線複製品，AI 助手與問卷在用；裁定刪複製品改用套件）歸第 3 批；**M13 第 17 條**（停權後通行證仍有效、自動續期也不擋）歸第 5 批。兩條在 `docs/security-report/M13-iam.md` 第 91、98 行。
- M10 第 11 條（SUMMARY #46 合規資源庫）決策者補裁修法：「後端在改控制項清單前先確認範本是自己客戶的——把現有那道檢查從只在改分享身分時搬到只要有寫入就檢查」。
- 每張修正卡的 runner 做完程式後順手把該條在模組頁與 SUMMARY 的狀態改「已修」＋修法一句、重 build、Notion 回寫——這是共同紀律，你不用每張重寫，總裝時會統一放。

## 環境事實（直接用，不用查）

- 四個 repo 都在 `feature/review`，目前都沒有 worktree：BE `~/Projects/Billows/Audit-Manager/compliance-manager-be`、套件 monorepo `~/Projects/Jedicogy/module/jedi-python-package`（21 支 jedi-* 同一個 git repo 各一個子目錄）、FE `~/Projects/Billows/Audit-Manager/compliance-manager-fe`、agent `~/Projects/Billows/Audit-Manager/evidence-agent`。
- 模組 ↔ 套件：M01 jedi-remote-agent、M02 jedi-file-upload、M03 jedi-detection、M04 jedi-common、M05 jedi-survey、M06 jedi-flow-engine、M07 jedi-evidence-classification、M08 jedi-integrity、M09 jedi-log、M10 jedi-task-platform、M13 jedi-iam、M14 jedi-ai-bot、M15 jedi-ai-dashboard、M16 jedi-notification、M17 jedi-bulletin、M18 jedi-license-runtime、M19 jedi-asset、M21/M23 jedi-issue、M22 jedi-system-core、M20 跨模組（BE）、「掃描總表 118～122」與「§3.2」是 BE 主專案側。**很多條的洞在 BE 接線層不在套件——用材料檔裡的檔名判斷落在哪個 repo，不要憑模組名猜。** 路徑長 `api/`、`app/`、`core/`、`di_containers/`、`scripts/` 開頭的是 BE；`jedi_xxx/` 或 `jedi-xxx/` 開頭的是套件；`src/` 開頭是 FE。

## 拆卡判準

**一個 worktree 一張卡；同批同 repo 同套件併一張；一張卡以 runner 一個 session 能做完為上限（約 ≤8 件或 ≤10 個入口檔），超過按功能再拆。** 不是每件一張卡。

## 產出格式：`plan-b<N>.md`

```
# 第 N 批：<批名>（<件數> 件 → <張數> 張卡）

## 這批一句話
<白話：做什麼、為什麼排這裡、能不能現在開、依賴哪批>

## 卡片清單
| 卡 | 卡名（做什麼，不寫代號） | repo／套件 | 涵蓋 SUMMARY # | 建議 model／effort | 序列組 |
（序列組：動同一個檔不能同時派的標同一個字母）

## 卡 N-1：<卡名>
- **範圍**：repo／套件、worktree 名建議（`wt-fix-b<N>-<模組>`）、涵蓋 #號
- **每件的修法**（白話，一件一小節）：
  - **#<號> <一句在哪裡誰做什麼發生什麼>**
    - 修法：<從模組頁「怎麼修」欄與裁定抄，白話>
    - 🔴 入口清單：<每個入口 `file:line`，從材料檔的掃描總表「開卡素材」欄抄；抄不到寫「⚠️ 開卡前首腦補查」——**絕不編造行號**>
    - 功能不能壞：<可能影響的現有功能與手測步驟>
    - （刪除類）零引用查證：<引用哪張內化卡或材料檔裡的查證結果>
- **這張卡的手測總清單**：<runner 做完要親手點過的畫面／請求>
- **需決策者先裁的**：<有才寫，寫「D-b<N>-<序>：<問題>／我的建議：<一句>」>

## 決策者要裁的事（彙整本批的 D）
```

## 回報格式（只要這些，不貼文件內容）

檔案路徑、這批幾張卡、幾個入口標「首腦補查」、D 幾項。
