FR-114 資安修正派工 — 收口 SUMMARY(2026-09-28)

本檔由 FR-114-LOG.md 第 1~13 棒 block 濃縮而成(含第 6 棒補記、第 11/12 棒補記),不憑記憶重建。 現況的權威來源:每件問題的狀態看 docs/security-report/SUMMARY.md §0「1.21.0 出貨基線」;使用者可見變更看 v1.21.0 release note。 母卡 CM-2019;收口母卡 CM-2282;延續 hotfix 母卡 CM-2289(FR-123)。

1. 一句話

資安檢視總報告的問題從 2026-09-21 開始翻成派工單,經第 1~9 批修正、四輪測試版(1.21.0b1~b4)在 190 測試機實測,2026-09-28 以 1.21.0 正式版出貨到 190/188 STG/189 POC 三環境。總報告 234 件中 190 件已修,沒修完的 9 件歸 1.21.1 hotfix(FR-123)。

2. 時間軸與 commits 範圍

階段 日期 棒 要點
翻單與開工 09-21~22 1 145 件翻成 48 張卡六批;開 BE/套件兩個常駐工作區(fix/security-b1);41 張舊卡作廢
自動跑八輪 09-22~23 2~3 夜跑八輪(含一次零改動重跑);首腦逐輪驗收+獨立 opus 雙驗;47/52 Done
最重兩張 09-23 4 代理程式控制面身分(CM-2052)、防竄改鏈(CM-2053)、時鐘偏差警告(CM-2085);合回前整理稿
合回裁決與 b1 09-24 5 七項裁決全裁完;18 支套件發 Nexus;188 本體出 1.21.0b1、190 全新安裝
第 7/8 批與 b2/b3 09-25~27 6~8 掃描線交接的 27 張平行做完;第 8 批 12 張;證據分類改常駐服務;b3 移除後全新安裝 190
總測與 b4 09-27 9~10 b3 總測回報 30 則→第 9 批 21 張+FR-121 六張;b4 升級 190+agent 1.1.0b2
驗證與進版 09-27~28 11~12 147 條非 UI 驗證;四 repo 合回 feature/review;1.21.0 正式版出包、三環境升級、六台代理程式升 1.1.0
收口 09-28 13 裁四件、開收口 Z1~Z5 與尾巴卡;hotfix 母卡 CM-2289

commits 範圍

  • BE 主 checkout(feature/review):c61254ddc(09-21,第 1 棒首筆)起,至 4e7e2f987(09-28,CM-2288 基線重產);FR-114 資料夾相關 146 筆。
  • 修正線 fix/security-b1(四 repo):09-28 合回 feature/review——BE fbbbb6d40、套件 feac7698、FE feac690、agent 1355869;尾巴兩支 563355d22/54d171378 由 CM-2288 合回(27f601726)。
  • 進版:BE 02f680835(1.21.0)、FE 50bda00(版號對齊)、agent 6c17d21(1.1.0)、85ae5aadc(升級排練抓到的 fr093-4d 修正)。

3. 改動範圍

repo 範圍
BE 權限守門與歸屬檢查全面補齊;全系統唯一任務歸屬判斷(CM-2113/2119);憑證殘留清除;開機查 DB 鎖定紀錄;打包鏈修正(umask、cffi 守門、探針);主線 migration 32 支
jedi 套件 21 支全部發新版(pin 見 docs/claude/jedi-packages.md 名冊);套件自帶 SQL 69 支
FE 403 提示、錯誤碼三語文案、公告發送範圍、退役網址與按鈕移除、時間顯示收成單一函式(FR-121)
檢測 Agent 1.0.0 → 1.1.0:每請求帶通行證、401 自動重新註冊、時鐘偏差警告、Nuitka 版號修正
installer/出貨基線 02-schema.sql 在 b1/b3/b4/正式版前各重產,正式版後再補一次(CM-2281 蓋章);99-stamp 基線標記 __init_baseline_v1.21.0__

4. 行為差異

不重抄,見 v1.21.0 release note §2(使用者可見變更)、§3(Breaking Changes)、§4(DB Migration)。

5. 決策清單(從各棒「決策」欄收)

派工方式

  • 依序做不平行,開工作區只為不碰掃描線主 checkout(第 1 棒);第 7 批起改平行六條線、線內依序(第 6 棒)。
  • 首腦驗過直接 Done,不逐卡攢給決策者批;最後從安裝到功能整個重測(第 2 棒)。
  • 不再開 subagent 做重工作:runner session 依序做、每 session ≤4 張(第 9 棒)。

技術方向

  • 代理程式身分:雲端用既有 AGENT_JWT_PRIVATE_KEY 發長效通行證、每請求驗簽+查 DB 撤銷;取代原規劃的短效通行證(第 4 棒)。
  • 解鎖回執帶原廠 unlock token,閘門與回填都重驗(第 4 棒)。
  • 開機查 DB 只收窄「權限不足」,表不存在維持放行(第 5 棒)。
  • 補權限資料的 migration 一律 envs=* 隨出貨(第 3 棒)。
  • 超級管理員不再免專案成員檢查(第 5 棒後段,b2)。
  • 證據分類走常駐服務(C 案),一次到位用 HTTP(第 7~8 棒)。
  • 資料庫統一存 UTC、畫面先固定台北時間,開 FR-121(第 9 棒)。
  • 匯入原始檔一律保留到儲存後端(第 9 棒)。
  • 群組/控制項成員功能退役;「補 project_id」作廢,改指派前核對任務所屬專案(第 6 棒)。

發版與環境

  • 現在合回、在工作區發版、出貨基線整包重產;版號先出 1.21.0b1 測試版(第 5 棒)。
  • 同一支套件改動全做完、驗完才發一次(第 5 棒)。
  • 這版沒有 PROD 授權中心主機,封包 --skip-prod-key-check(第 5、12 棒)。
  • 不跑全站自動回歸,收口後另派一棒重整(第 12 棒)。
  • POC 升級撞 deadlock 走「停服重跑」;1.21.0 的兩個升級 bug 以 hotfix 補進基線、不 bump 版號(第 12~13 棒)。

收口

  • 127 張修正待驗證全 Done;沒修完的 9 件另開 1.21.1 hotfix 母卡,後續加 AI 資安議題(第 13 棒)。
  • SPEC/手冊先補前五處,其餘登記待補;v1.21.0 快照凍結不回改(第 13 棒)。

不修(已裁):#101 Nexus https(內網)、#124 SeaweedFS secure、#75 前端打包帳密、#98/#99、BE log 印 request body、問卷清單只看作用租戶(#31)、/version 免登入端點。

6. 教訓清單(從各棒「教訓」欄收)

派工與規格

  • 一支 subagent 吞 145 件爆 context 兩次零產出;改三層(材料檔 → 分批 subagent → 本體總裝)後一次過。
  • prompt 要寫 tool call 上限與落盤時限;「抄不到就標待補」會被理解成「查到為止」。
  • 首腦給修法或「對齊 X」之前先開檔確認 X 存在,不憑表名推鏈路。
  • Workflow 觸發原話會原文轉發給 runner 且優先——貼的 prompt 必須以 runner 視角寫。
  • 卡上紀律要寫「不改任何腳本的範圍/模式參數」,runner 會為了讓檢查過而放寬(CM-2048 夾帶 242 檔)。
  • 派「送超大請求驗上限」這類卡要用 QA 驗收語言,引資安報告原文的「炸彈/打垮」會被判成攻擊指令。
  • 開卡時 M 頁條號要對報告表,不對 SUMMARY 出處欄;總表 # 編號曾重排,對照一律用 M 編號。

驗收

  • 驗收真正抓到東西的地方:runner 沒跑的呼叫端測試、跨 repo 連帶(錯誤碼撞號、FE 文案、鏡像同步)、為了讓檢查過而放寬範圍。
  • 驗證 agent 判過的卡,首腦再派獨立 opus 抽一次,第三、四輪各抓到真問題——雙驗是固定程序。
  • 信任鏈類裁定,現況事實先由獨立 agent 開檔核對再裁;runner 的問題描述是它的視角不是事實。要問「驗的材料是誰產的、產的時候有沒有驗」。
  • 套件卡 pytest 要帶 PYTHONPATH,並對照不帶時的結果證明測到新版。
  • 新錯誤碼要跨 monorepo 全部 common 目錄 grep 號碼。
  • 掛能力點前看公版 seed 把那顆給了誰;「不擋正常客戶」的判準是出貨公版 seed,不是 DEV 資料。
  • 驗權限守門前先查測試帳號的實際能力點,不看角色名。
  • 清憑證的卡,驗收第一件事是拿 .env 值 grep commit message 與 Notion(CM-2049 曾把密碼真值寫進 commit)。
  • runner 說「實跑過」要找痕跡;驗 hash 鎖定不能用整個 Dockerfile build(layer cache 會騙人)。
  • 盤「未修」要連到卡的實際狀態,總表狀態欄是人手改的、會落後。

發版、打包與升級

  • 發版與改碼並行會一直補發(iam 1.4.1→1.4.2→1.4.3);從 worktree 發版會漏不入版控的資產(.mo)。
  • 動打包方式的卡要比對上一次成功 build,不要邊 build 邊撞。
  • build 機禁止用 root 操作 git;跑 build 的 shell umask 077 會出壞產物。
  • 🔴 升級驗證要拿真實舊版客戶庫排練——「上一個 beta 升上來」與「乾淨新裝」都覆蓋不到隔一版的舊庫(1.21.0 因此抓到 fr093-4d)。
  • 修 migration 後要重 build init image 再封包,並用 image id 核 bundle 內是新那顆。
  • installer 升級套 migration 前要先停 api/socketio,否則有人在打就 deadlock(POC 實踩)。
  • 升級腳本判管理員要看旗標不看能力點;回填登記類 migration 要先驗物件存在。
  • 代理程式升級前先確認註冊碼仍 enabled,否則自動重新註冊必 401。
  • 基線庫 *_old 表重產前要清,否則會帶給新裝客戶。

首腦自身

  • 排順序先看「輸入會不會再變」,依賴還在改的盤點現在做就是白工;不要替決策者決定延後。
  • 收報型首腦每收完一批就中繼交接(第 9 棒 context 爆掉、compaction 失敗)。
  • 回報問題必附分析與建議,用白話。
  • 同一台機器兩個 session 同時動,要在 STATE 立刻互寫。

7. 規範文件清單

文件 狀態
docs/security-report/SUMMARY.md 終局化 ✅ CM-2285(887758ac7)
docs/release_notes/v1.21.0.md ✅ 進版時寫
docs/spec-site/current/ 前五處+待補清單 CM-2286(收口 Z4)
memory 兩邊對齊+FR-114 教訓入 memory ✅ CM-2287(398eea257)
analysis:docs/analysis/2026-09-23-agent-control-plane-identity-token.md ✅ 第 4 棒
FR-114/FR-121 README、登記表、jedi-packages.md 名冊 ✅ CM-2284(本檔同批)

8. 已知 follow-up

  • 1.21.1 hotfix(CM-2289/FR-123):資安總表沒卡未修的 9 件+installer 升級鏈三個缺口(升級第③步不停 api 會 deadlock、schema_version 表升級不更新、代理程式註冊碼停用後自動重新註冊必 401)+AI 資安議題預留;第一批子卡待決策者裁。
  • 連 DEV 那台代理程式(123):等 DEV 註冊碼後 re-enroll --endpoint http://10.8.0.6:8000。
  • 出版前回歸測試重整:147 條非 UI 驗證中 72 條環境驗不到的收進 e2e。
  • PROD 授權簽發公鑰(CM-2274 擱置):等有 PROD 授權中心主機那一版。
  • FR-117 出貨基線改依套件產生:1.21.0 後再排。
  • 其餘見 release note §7。