本卡屬 module_frame 資安掃描母案(見母卡),第 B6 棒。只掃不修。範圍 7 檔/1656 行。盤點檔:docs/features/FR-113-2609-oscal-host-wiring-security-scan/module-frame-scan-inventory.md

這一棒在做什麼(白話)

掃「把資料寫成 Excel 檔案」這套底層機制的 7 支檔、1,656 行。B4 匯出整份系統安全計畫、B5 匯出範本控制項清單,兩邊匯出的資料不一樣,但產生 Excel 檔案時共用同一套機制——就是這一套。只找問題、不修問題。

為什麼切這一塊

🔴 本棒必須與 B4 由同一個 runner 連續跑

不可分開派給不同人,也不可隔開時間。

理由:B6 本身不含任何「這筆資料是不是你的」的判斷邏輯,它只負責把資料寫成 Excel 檔案格式;歸屬判斷應該在呼叫它的 B4/B5 那一層做。兩棒有呼叫關係但沒有任何物理重複的檔案——分開派會出現責任真空:已知的公式注入洞在 generator.py:578,同支檔案其他寫入儲存格的地方要不要一起算進同一批修法,只有接續看過 B4 呼叫端的人才判斷得準。這正是跨 arc 總表第 118/119 項那條高風險的成因。

重點看什麼

範圍與邊界

本棒 7 檔/1,656 行,是完整的一個共用套件目錄 app/module_frame/excel_template/。

不在本棒:呼叫端(B4 的 SSP 匯出、B5 的範本匯入匯出)各自成棒。auth 模組與 oscal 模組那兩個外部消費者不在這批範圍內,但發現問題時要在報告裡點出波及到它們。

盤點檔在 docs/features/FR-113-2609-oscal-host-wiring-security-scan/module-frame-scan-inventory.md,裡面有完整的範圍界定、八棒切法與推導。有疑問先翻盤點檔,但範圍以本卡為準。