各批派工計畫撰寫——共同說明(每個批次 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。

§1

背景(白話)

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

§2

你只讀這些(🔴 讀檔紀律:每次 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 行。
§3

已定案、不要重議

  • 每件屬哪批照 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 回寫——這是共同紀律,你不用每張重寫,總裝時會統一放。
§4

環境事實(直接用,不用查)

  • 四個 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。
§5

拆卡判準

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

§6

產出格式:plan-b<N>.md

# 第 N 批:<批名>(<件數> 件 → <張數> 張卡)

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

## 卡片清單
| 卡 | 卡名(做什麼,不寫代號) | repo/套件 | 涵蓋 SUMMARY # | 建議 model/effort | 序列組 |
(序列組:動同一個檔不能同時派的標同一個字母)

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

## 決策者要裁的事(彙整本批的 D)
§7

回報格式(只要這些,不貼文件內容)

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