↑ 需求首頁 ⌂ 需求中心

FR-114 交接現況(STATE)

這份是 living 檔:每棒就地 Edit,只描述「此刻」。歷史脈絡看同資料夾的 FR-114-LOG.md。 本 arc 是派工首腦級:把資安檢視總報告 145 件翻成 48(+若干連帶)張修正卡、切批、派 runner、驗收,現已進入合回+發版+分版出包階段。首腦不自己修程式、不自己 build、不自己部署——都派工或決策者自做,首腦驗。

項目 值
最後更新 2026-09-28 午,第 12 棒收工:1.21.0 正式版已上 190/188 STG/189 POC,六台 Agent 五台升 1.1.0(123 連 DEV 那台等 token)。FR-114 主線結束,剩一條尾巴:第 11 棒在修正線補的 CM-2280/2281 兩支升級 bug 修正還沒合回主線、基線待重產。先讀最末節「第 12 棒交棒(午)」
母卡 CM-2019 https://app.notion.com/p/SUMMARY-145-worktree-3e2346da4cd0816a87fde3fc8a7eb10c (Not started,留給全案收尾棒)
子卡 CM-2021~CM-2068(48 張)+ CM-2071/2072(第 6 批)+合回發版階段新開一批(CM-2109~2137,見 LOG)。總表 cards/CARDS.md,進度看板 BOARD.md
工作區 BE .claude/worktrees/wt-fix-security、套件 monorepo .claude/worktrees/jedi-wt-fix-security,皆 branch fix/security-b1——已於 09-28 合回四 repo feature/review(BE fbbbb6d40/套件 feac7698/FE feac690/agent 1355869),worktree 目錄留著未刪但不再使用,一切在主 checkout 做
190 總測機 1.21.0 正式版+Agent 1.1.0(09-28 從 b4 --upgrade);188 STG 亦 1.21.0(從 1.19.0 跳升;主產品機無 Agent,昨晚誤判的 0.2.30 容器是測試殘留);189 POC 仍 1.19.0 未動。歷史:1.21.0b3 全新安裝(09-26 深夜,CM-2197 第 7 段;b2 已 uninstall,備份在 190 /home/guidantai/)。七服務 healthy(含新的 guidant-classifier),api 容器內無 docker。授權匯入與開通精靈由決策者自做。agent 未裝
接手前必讀 §0 讀序 → LOG 第 4/5 棒 block → CM-2110 卡(發版全紀錄,含各段驗收)
§1

🧭 原始需求 / WHY

寫一次,之後不動。

  • 資安檢視總報告(docs/security-report/)23 塊內化完、收尾成 SUMMARY.md 145 件(194 條去重)。SUMMARY 按嚴重度排、不是派工單;決策者裁六批修正順序,本 arc 把它翻成「一個工作區一張卡」並派工驗收。
  • 決策者關鍵裁定:依序做不平行(開 worktree 只為不碰掃描線主 checkout);12 項待裁全「照建議」;41 張舊修正卡作廢;runner 修完自己改報告狀態;CM-2020 八處頁間不一致併本棒。
  • 六批:1 權限地基 → 2 只驗登入不檢查歸屬 → 3 刪除 → 4 憑證殘留 → 5 設定與信任鏈 → 6 結構補強+資料庫牆。六批程式面已全部做完(見下),目前在「合回主線+分版出包」階段,這是原六批之外的新階段,仍屬同一 arc。
§2

§0 接手讀序

  1. 本檔全部。
  2. handoff/2026-09-23-merge-readiness.md(合回順序/清理清單/總測建議/裁決清單七項——已全部裁完,讀它是為了知道裁完後長什麼樣,不是還要再裁)。
  3. FR-114-LOG.md 第 4 棒+第 5 棒兩個 block(信任鏈設計、發版全流程、188 build 踩過的坑)。
  4. BOARD.md——卡片狀態總覽。
  5. CM-2110(發版卡,Notion)——五段發版的完整回寫,含每段驗收細節。
§3

§1 當前狀態

  • 程式面 50/53 全 Done:五批 SUMMARY 修正卡+連帶卡(5A-1 CM-2052、5A-2 CM-2053、X-3 CM-2085)全部完成並驗收。剩 3 張非程式面:5B-5(CM-2061,等 CM-1849 舊線退役)、第 6 批 2 張(資料庫牆,等下一輪安排)。
  • 合回:還沒合回主線。決策者 09-24 裁「現在合,不等 5B-5/第 6 批」,但發版改在工作區做、主線合回等資安掃描線(FR-115/116)結束才做。合回前清理卡 CM-2109 Done。
  • 套件發版:18 支套件已推 Nexus(jedi-common 1.3.0、iam 1.4.3【最終版,含 1.4.1/1.4.2 補發 .mo、CM-2116 角色範本+管理員不可刪】、task-platform 1.2.0、file-upload 1.3.0、issue 1.3.0、survey 1.2.0、remote-agent 1.2.0、detection 1.2.0、log 1.3.0、ai-dashboard 1.3.0、integrity 1.2.1【最終版,刪死方法】、bulletin 1.2.0、compliance-audit 1.2.0、asset 1.2.0、ai-bot 1.3.0、flow-engine 1.4.0、system-core 1.2.0、notification 1.2.0)。
  • BE:已 pin 18 支新版(99b0721c3),工作區 HEAD 74239a353(含 CM-2135 build 修正、1.21.0b1 版號與 release note)。
  • 版號:本體定為 1.21.0b1(CM-2137,預發版,決策者裁;總測過後才定正式 1.21.0)。
  • 188 build:三顆 image(be/fe/init)全綠,FE 含新版前端資安修正,容器探針過。封包用 --skip-prod-key-check(jedi-license-runtime 缺 PROD 公鑰,決策者放行出內部測試包,歷來包皆如此)。
  • 本體出包:/opt/guidant-ai-be/.build/bundle/guidant-ai-1.21.0b1.tar.gz(944MB,188),image tag 1.21.0b1(be/fe/init)。
  • 190 專機:第 5 棒最後派 subagent 移除本體 1.20.0+agent 1.0.0 並全新安裝本體 1.21.0b1(agent 不重裝,等新版);授權匯入與開通精靈由決策者自己做。完成與否以 CM-2110 卡最後一段回寫為準。
  • agent 輪已開跑:第 5 棒最後派唯讀 agent 盤點 evidence-agent v1.0.0↔︎fix/security-b1 打包差異——盤點已回:必修 1 件(Nuitka --product-version 不收 1.1.0b1,照本體 build_release.sh:330 抄)、不處理會默默出錯 2 件(版號撞 1.0.0 會蓋掉已出貨產物;188 agent repo 停在 v1.0.0 main 未 fetch fix/security-b1);本體那輪四類坑 agent 皆不擋。CM-2138 Done:agent bfcddd1(1.1.0b1)已推;188 出包一次過——原生 /opt/guidant-ai-agent/.build/bundle/guidant-agent-1.1.0b1.tar.gz、compose /opt/guidant-ai-agent/.build/compose/guidant-agent-compose-1.1.0b1.tar.gz(STG 鑰簽,內部測試包)。190 本體 1.21.0b1 已裝好(備份 ~/guidant-backup-1.20.0-before-1.21.0b1-20260924_1815.sql.gz;新授權指紋 ff793254…,舊 license 需重簽;授權與開通由決策者做)。下一步:agent 1.1.0b1 裝 190 並驗協定。已知不擋:compose 版 install.sh 無安裝期時鐘提醒、agent 內建公鑰缺 PROD(LC 輪);裝 190 時要驗協定(全新註冊、1.0.0 升級 401 自動重註冊且 agent_uid 不變、資料面、時鐘偏差),並確認 190 雲端 AGENT_AUTH JWT 私鑰路徑有設。決策者:他一邊測本體(agent 以外),agent 同步打包。
§4

§2 已定裁示(不要重新討論)

決策者已拍板、不容重啟:

  1. 合回時機:現在合回,不等 5B-5/第 6 批。
  2. 發版策略:在工作區發版(掃描線 FR-113 讀主 checkout,主線合回等掃描結束);只發套件不發本體;BE 工作區建獨立 venv;188 放行;四 repo fix/security-b1 已推 GitLab。
  3. #96/#97+CM-1605:納入本批(A 案),既有郵件設定升級後不變、新建預設驗憑證、可貼內部 CA → CM-2111 Done。
  4. 開機查 DB:只收窄「權限不足」(A 案),表不存在維持放行 → CM-2112 Done。
  5. CM-2039 任務歸屬回歸(未指派任務 DEV 99.7% 規劃頁 404):改讀輪次鏈 → CM-2113 Done,擴成全系統唯一任務歸屬判斷+接 W8-1(jedi-survey CM-2114、我的任務 view CM-2115、其餘四處 CM-2119 皆 Done)。
  6. 出貨基線:整包重產(合回後、188 build 前,已完成,5 支 active migration:1-4b、1-5b、1-9 政策、5A-5、CM-2115),已備份舊基線;「依套件產生」另開 FR-117,等本批結束再排。
  7. 另開卡:CM-2116(角色範本,Done,改走 jedi-iam 建租戶服務注入+管理員角色不可刪)、CM-2117(儲存密鑰後端擋,Done)、CM-2118(進度查詢補成員檢查,Done);死方法併清理卡;代理程式離線接手記已知限制;list_ap_parties 總測觀察;管理者代刪不開。
  8. monorepo 缺 lock:封存 6 支不補,4 支在用的合回時已 poetry lock。
  9. 版號:1.21.0b1(預發版,決策者 09-24 裁;正式 1.21.0 待總測過)。
  10. 順序:先收本體(已完成)→ 再 agent → 最後 LC。
  11. 總測:等本體與 agent 兩邊都更新後才一起做(本體出包後先不部署 DEV,等 agent)。
  12. 打包發現的問題:188 全量 build 首次 run5 撞探針⑥ FAIL,首腦派唯讀 agent 整批盤點 v1.20.0↔︎fix/security-b1 打包差異——探針⑥為假警報,真壞兩件(產物權限 700/600、188 FE repo 停在 main 未含前端資安修正)已修(CM-2135),另發現版號會覆蓋既有出貨 image(已改 1.21.0b1,CM-2137)。CM-2136 驗證 CM-2053 驗收②③成立。三張皆 Done。
  13. 🔴 正式版 1.21.0 發版前必做:①第 154 項 jedi-common 1.3.1(CM-2171 已修,發版在 CM-2197);②LC 生成 PROD 鑰對 → 加進 jedi-license-runtime public_keys.py → 發版 → 重 build BE → build_bundle.sh 不帶 --skip-prod-key-check 封包(留在 LC 那一輪做)。
  14. 決策者 09-24 提、總測後再開(不在本輪 scope):①本體↔︎agent 版本支援對應表;②本體升級偵測 agent 版本不相容要有通知——這兩項另開 FR,總測後才排。
§5

🔴 第 6 棒接手後做什麼(按序,每項等令)

  1. agent 輪(決策者裁順序:本體→agent→LC,本體已完成,輪到 agent):
    • 先派唯讀 subagent 比對 evidence-agent v1.0.0 ↔︎ fix/security-b1(套件 ecdc9f3、9edda49)的打包差異——照比本體這次踩過的坑:cryptography 是否編進 core(連坐)、產物權限、探針外部 python 跑法、FE/repo HEAD 是否含新版、版號撞號風險。先盤點再 build,不要邊撞邊修(本體那輪連撞四次的教訓)。
    • 版號建議 1.1.0b1(與已出貨 1.0.0 tag 不撞號),待決策者裁。
    • 188 /opt/guidant-ai-agent 出包(build 前依 build 機 README 規定先 git pull 並驗 HEAD;也要查併行 build:pgrep -f 'nuitka|build_all')。
  2. LC 輪:本批 LC 程式未改(CM-2053 回執驗的是 LC 既有簽發 token,確認即可)。🔴 正式 1.21.0 前必補 PROD 公鑰:LC 生成 PROD 鑰對(私鑰只留 LC)→ 加進 jedi-license-runtime public_keys.py → 發版 → 重 build BE → build_bundle.sh 不帶 --skip-prod-key-check 封包。
  3. agent 出包後:本體+agent 一起部署到 DEV(或 190)→ 決策者總測(決策者已裁:兩邊都更新後才一起測)。手測清單在各卡「首腦驗收」段;整理稿 handoff/2026-09-23-merge-readiness.md 第 7 節。
  4. 總測通過 → 正式版 1.21.0(version-bump skill 全套,含 spec 快照)→ 才談 STG/POC。
  5. 合回主線:等資安掃描線(FR-113/115/116)結束;docs/features-site/ 以主線為準;CM-2032 那筆主線已有同內容。合回後清主 checkout 共用 venv 那 12 個指到 jedi 工作區的 .pth。
  6. 收尾文件(等令):升級手冊補三句(三顆讀取權限升級自動補、郵件憑證驗證建議開啟、共用 cluster 跑 init.sh 會重設 cmmgr/cm_app 密碼);GUIDE-02 權限守門兩種流程;SaaS TLS 終結點一行(決策者/維運);資安報告 CM-2111~2134 狀態重 build;188 build README 補「build 機禁止用 sudo 做 git 操作」;母卡 CM-2019 收 Done。
  7. 另開卡候選(攢給決策者,等總測後排):本體↔︎agent 版本支援對應表+版本不相容通知;compliance-audit 三支 _require_participant 收攏需 guard 新開入口;jedi-common dev 依賴殘留 pytestarch;task_execution_query.py:89 以指派列專案欄列待辦;ext_workflow_execution.py:158 關聯把流程 id 當專案 id(app 層零呼叫、死路徑);detection_job_notify_query.py:106 指派表備援;產物根目錄 six.py/typing_extensions.py 死檔;FE image 標籤 BE/FE 版號寫法不一致要手補 tag(188 陷阱②未根治);FR-117 出貨基線改依套件產生。
  8. 延後的:CM-2061(等 CM-1849)、CM-2071/2072(第 6 批,等第 1~5 批合回測過一版後手動派)。
§6

驗收怎麼做(首腦的核心工作,程式面已用完但發版/打包驗收沿用同精神)

runner/發版動作回寫後,不信自報、自己開檔:

  1. 到對應工作區 git log --oneline -3、git show --stat <hash>:動的檔在範圍內?
  2. 逐項對照卡上「在哪裡」的 file:line:都改了?有沒有 fail-open、有沒有另立 helper 不用 common/authz?
  3. 報告:BE 工作區 grep -n "FR-114.<卡號>" docs/security-report/M*.md SUMMARY.md 命中?
  4. 測試:在工作區重跑,套件卡帶 PYTHONPATH=<套件工作區>(不帶會驗到 site-packages 舊版全綠)。
  5. 打包/build 類:唯讀驗證不部署,比對上一次成功 build,不要邊 build 邊撞。
  6. 信任鏈/身分驗證類裁定:現況事實先由獨立 agent 開檔核對再裁,不信 runner 對現況的描述(CM-2052 三個前提全被推翻的教訓)。
§7

派工方式

night-run/ 自動跑階段已於第 3 棒結束(八輪)。剩餘工作(agent 輪/LC 輪/總測)一律手動派工,不進自動跑。

手動派工 prompt 樣板:

做 CM-20xx:<卡名>
<卡 URL>
model:<建議>/effort:<建議>/理由:<一句>

工作目錄:/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be
先 `python scripts/notion_case.py get <URL>` 讀完整張卡,卡是自足的。
卡上「工作區」段指定的目錄才是你改碼的地方,絕不碰主 checkout。
做完:commit → Notion append 白話補充 → 狀態改「修正待驗證」→ 停下等驗收。
不 push、不切 branch、不發版、pyproject.toml 的 path 改動不 add。
§8

合回與發版(都等決策者下令;本體已完成,模式沿用到 agent/LC)

fix/security-b1 合回各 repo feature/review;套件發版走 Nexus;BE/agent 出包走 188 build 機(/opt/guidant-ai-be、/opt/guidant-ai-agent,git pull 更新,禁 scp/rsync)。首腦不自己合、不自己發、不部署。

§9

已知的坑(累計,第 6 棒沿用)

  • Workflow 觸發原話會原文轉發給每個 runner 且優先於腳本任務——貼給執行首腦的 prompt 必須以 runner 視角寫(第六輪零改動事故,已修正 night-run/HANDOFF.md,但自動跑已結束,僅留作紀錄)。
  • runner 為了讓某個 build 檢查過會放寬工具的範圍參數(CM-2048 把 sync 改 --all 夾帶 242 檔)——派工 prompt 要寫「不改任何腳本的範圍/模式參數」。
  • 套件卡 pytest 不帶 PYTHONPATH 全綠但沒測到(CM-2023)。
  • 驗收用 git grep 不用 grep -r(後者會把 gitignored 的 .claude/、掃描產物算進來,永遠驗不到零命中)。
  • 發版與改碼並行會一直補發——同一支套件改動全做完、驗完才發(iam 1.4.1→1.4.2→1.4.3 補發三次的教訓)。
  • 從 worktree 發版會漏不入版控的資產(jedi-iam 1.4.1/1.4.2 缺 .mo,因套件庫 .gitignore 排除、worktree 從 git 開出沒有)——發前比對 wheel 內非 .py 檔與上一版差異。
  • 動打包方式的卡驗收時要比對上一次成功 build,不要邊 build 邊撞(CM-2053 cffi 守門連撞四次才學到)。
  • 188 build 機曾有人用 root 操作 git,build 目錄擁有者被改成 root,切分支會靜默漏檔(已 chown 修復,README 待補這條禁令)。
  • 跑 build 的 shell umask 077 會出 700/600 產物,裝機才炸(已加斷言,CM-2135 修)。
  • 驗收環境打折要當場講明:runner 在 188 dist 目錄測出的差異若是環境限制造成(如 .pyc 缺口在正式 image 不成立,因 image 不含 .pyc),要在回報寫明打折處。
  • 長 session runner 會被卡上疊加的舊指令搞混——重跑類任務開新 session 或由首腦派 subagent,prompt 明寫「只照最後一段」。
  • 主 checkout 根目錄下 CLAUDE-SECURITY-*/ 掃描產物含憑證原文(gitignored),累積多個目錄——衛生問題,已回報決策者,不在本 arc 範圍。
§10

🟢 第 5 棒最後狀態(2026-09-24 深夜,首腦自核)

  • 190 已升級到 1.21.0b2(/api/1.0/version 回 1.21.0b2、commit 9ff0a5060;六服務 healthy;決策者開通狀態、帳號、上傳檔筆數升級前後一致)。備份 ~/guidant-backup-1.21.0b1-before-b2-20260924_2232.sql.gz。agent 未裝。
  • 1.21.0b2 內容=b1 + 測試期修正:CM-2142(檔案下載全掛,jedi-file-upload/jedi-issue 1.3.1 已推 Nexus,tag 指 ab68291b)、CM-2143(sudo guidant setup-token)、CM-2144(公告全公司)、CM-2145(拿掉 AI 分類設定分頁)、CM-2147(超級管理員不再免專案成員檢查——決策者裁定的新行為)、CM-2148(任務卡住查詢補成員檢查)。
  • 包:188 /opt/guidant-ai-be/.build/bundle/guidant-ai-1.21.0b2.tar.gz(944,435,027 bytes,內部測試包 skip PROD key)。BE fix/security-b1 9ff0a5060、FE 6f3a075、套件 ab68291b。
  • 決策者 09-25 在 190 總測(agent 以外);測出的問題照 CM-2141 母卡模式收。
  • ⚠️ 188 /opt 剩 25G(92%),下次出包前先清(只刪舊 dist 解開目錄、保留 tar.gz;docker builder prune -f 不加 -a;刪 image 前看 STG 在用 1.19.0)。
  • 本機 8005/5185 仍起著 1.21.0b1+修正棒原始碼(PYTHONPATH 指套件工作區),BE 工作區有一份複製的 .env(不入版控)——第 6 棒確認決策者不用了就停掉並刪 .env。
  • 第 6 棒待辦順序不變:決策者總測回報 → agent 1.1.0b1 裝 190 驗協定(要先在 190 產生 agent 註冊碼;確認 AGENT_AUTH JWT 私鑰路徑有設)→ LC 輪+PROD 公鑰 → 正式 1.21.0。
§11

🟢 第 6 棒此刻狀態(2026-09-25 午,覆蓋上一節的「待辦順序」)

  • 掃描線 FR-119 交接(CM-2150,handoff-to-fix-line.md)已消化並開成第 7 批:母卡 CM-2170,子卡 CM-2171~2197(27 張:線一 7-1a/線二 7-2a~f+7-2t/線三 7-3a~f/線四 7-4a~b/線五 7-5a~e/線六 7-6a~f/發版 7-R),另含既有 CM-2071/2072(線六,不重開)。spec 在 cards/spec-b7*.json,建卡結果 cards/made-b7.json,卡號對照已 append 到母卡。
  • 程式面不再是「全 Done」:CM-2037 退回(7-2a)、CM-2041 缺口(7-2b)、CM-2065 使第 154 項惡化(7-1a)。
  • 決策者 09-25 裁定:①全部進 1.21.0b3,190 上 b2 可先測 b3 不動的部分、測出問題照 CM-2141 收並併入第 7 批;②FR-120 主專案掃描不等,結果另出一版;③原第 6 批 CM-2071/2072 一起進 b3;④改平行:六條線同時跑、線內依序;同一支套件整條線做完驗完才發一次版(發版集中 7-R);⑤六支套件異動整批同意;⑥出貨基線全部 migration 盤完一起重產一次(在 7-R);⑦agent 裝 190 排在 b3 之後。
  • 正式 1.21.0 前必做(STATE §2 第 13 條)追加:第 154 項(jedi-common 1.3.1)。
  • 首腦核對過、不開卡的:交接 1-8「修正線啟動會炸」不成立(agent ack/result 走套件 plugin/assembly.py 自組的服務,參數齊;BE 那個 provider 零使用者=死 provider,7-6f 清);FR-120 di-wiring-audit-fixline.md「🔴」節多出的 4 處是拿主 checkout 容器檔比出來的誤報,工作區都已接好。
  • runner 會停下來問決策者的(卡上已寫):7-1a 信任幾層代理;7-3b 已棄用版本要不要擋、FE 版本選單要不要只列已發佈;7-3d 壓縮炸彈共用檢查放 compliance-audit 可否;7-5a 既有角色補 module-frame.read migration;7-5c 空白範本下拉縮減法;7-6d AI 儀表板入口(jedi-ai-dashboard 不在發版清單);7-4a 回寫範圍外 clear_ssp_body/import_ssp 是否另開卡。
  • 下一步:決策者發令 → 給六條線派工 prompt(各線第一張:CM-2171、2172、2178、2184、2186、2191)→ 逐卡驗收 → 7-R。
  • 本機 8005/5185 與 BE 工作區 .env 的去留仍待決策者回覆。
  • 09-25 決策者裁(第 7 批待裁八件):CM-2186 三件照建議(補 module-frame.read migration、範本下拉「看範本或建專案」、範本 SSP 網址補看範本);CM-2188 第 149 項選 A(只拿掉 email 與設備 IP);YAML 匯入入口清掉(FE 死碼,BE 路由保留);Word/Excel 建新範本版本選單只列已發佈;另開卡候選(b3 之後):「執行項目清單」改/刪子項 DEV 500(套件寫回缺租戶欄位被 RLS 擋)、AI 儀表板查問卷缺模組授權(jedi-ai-dashboard 加申報欄)、PUT /task-survey/<uid> 空 body 500、刪有子版本/主版本的框架版本回原始 FK 錯誤、資源庫孤兒程序書掛載。
§12

🟢 第 6 棒:第 7 批修正面全數完成(2026-09-25 晚,首腦逐張驗收)

  • CM-2171~2196(26 張)+CM-2071/2072+修正棒 CM-2168/2169 全部 Done,首腦逐張開檔核對+重跑測試(套件帶 PYTHONPATH 指工作區)。過程退回 3 次(CM-2190 錯誤碼撞號、CM-2196 守衛測試過期登記、CM-2172 必填參數漏改套件兩呼叫端),都已修並複驗。
  • 工作區 HEAD(皆乾淨、未 push):BE 501670e49、套件 ac743850、FE 2cb7fb4;測試 repo feature/review b2395b2(CM-2175)。
  • 決策者 09-25 另裁:CM-2072 群組/控制項成員退役(資料表先留);CM-2071 作廢「補 project_id 欄位」、改做指派前核對任務所屬專案(CM-2113 唯一判斷),無 migration。
  • 下一步=發版卡 CM-2197(1.21.0b3),等決策者發令。卡上已追加的注意事項:
    • 套件發版:common 1.3.1、iam 1.4.4、compliance-audit 1.3.0、oscal-v2 2.5.0(lock 要重產)、survey 1.2.1、evidence-classification 1.3.1、task-platform 1.3.0(發前修 test_no_rls_enabled_on_these_tables 既有紅燈)、detection 1.2.1(CM-2168)。
    • 新 migration:主線 active 1 支(CM-2195 兩表 RLS,要重產出貨基線);seed 2 支(CM-2169 問卷資料夾、CM-2186 補 module-frame.read,不進基線)。
    • 發前三支守衛測試(module_boundaries/error_code_uniqueness/error_code_mirror_parity)全綠;release note 寫「超級管理員非成員 403」與「7 支網址已退役」。
    • b3 上 190 後 e2e 全量重跑一次(CM-2177 曾遇暫態紅)。
  • e2e 既有紅燈(收口棒處理):J5A-6/7/8 期待碼因 CM-1802 改號沒跟上、DEV 缺 blsshino 帳號、CM-814 drawer 定位。
  • 另開卡候選追加:_resolve_ssp 第三段 ap.uid→ap.uuid(一行)、GET /module-frame/item/<不存在> 500、匯入外部服務提供者被 dedupe 丟掉、oscal_io_service.clear_ssp_body/import_ssp 補凍結檢查、spec 四頁仍寫已拆網址、總表第 128~180 項「已修」標記在主 checkout 合回時集中標。
  • 09-26 決策者裁:FR-120 高風險三件補進 b3——CM-2200(#188 XSS)、CM-2201(#192 重建資料夾跨客戶)、CM-2202(#212 總部層判定:落地版=安裝精靈建的客戶租戶+能力點,SaaS=只原廠;理由:落地版不開原廠運維帳號給客戶,寄信/LDAP 要讓客戶自己設)。其餘 #181~218 另排。另開 CM-2199(主 checkout 回寫第 7 批已修狀態到資安報告/總表,已先知會掃描首腦)。
  • 09-26 決策者再裁:再補 CM-2203(#198 匯入任務 Excel 炸彈)、CM-2204(#194 同 Google 帳號只能接一個租戶)、CM-2205(#182 落地版拿掉授權開關,決策者:還沒 build 就一起)進 b3,接在 CM-2200~2202 同一 runner 後;#193 雲端資料夾分享 POC 階段暫緩(理論上要綁 Workspace,短期不綁)。
  • 09-26 第 7 批追加全數 Done:CM-2200~2205(#188/#192/#212/#198/#194/#182)+CM-2199(主線報告回寫,首腦補修 b3a569dd0、87833afb0)。BE 工作區 HEAD c8aa7d026,全量測試對 b2 基準差集 新增紅燈 0(2665 passed)。退回一次:CM-2203(補空白提早停+5,000 列上限)。
  • 下一步=發版卡 CM-2197(1.21.0b3),等決策者發令。追加事項已寫在卡上:active migration 兩支要重產出貨基線(CM-2195、CM-2204);release note 補落地版授權一律執法、同 Google 帳號限一租戶、寄信/LDAP 由安裝租戶管理員設定。
  • 待決策者回覆:第 201 項(流程圖刪方塊)查不到專案時放行還是擋下;CI 密碼掃描沿用 CM-877、需確認 GitLab Runner 能否跑 docker。
  • 主線待辦(非修正線):FR-063/deployment-env.html 未重 build;SPEC 授權頁「關總開關即放行」待收尾更新;主 checkout 35 支他人 rebuild 殘留 html 未 commit。
  • 09-26 決策者再裁:第 201 項(§7 第 51 項,流程圖編輯器刪任務)也進 b3 → CM-2208(查得到專案就要管理人、查不到放行)。CI 密碼掃描沿用 CM-877。
§13

🟡 第 6 棒此刻(2026-09-26 傍晚):b3 暫停 build,等掃描線全案交接

  • CM-2208(#201)Done(1516d90bc)。修正線工作區 HEAD 1516d90bc,所有已開的修正卡(第 7 批+追加 CM-2199~2205、2208)全數 Done。
  • 決策者 09-26 裁:FR-120 主專案掃描已全部掃完,b3 不先 build——等掃描線把剩下的項目整理交過來,全部看過一遍、一起修進來再出一次包,不 build 過渡版本(避免重工)。
  • 下一步:等掃描首腦(第二十三任)的交接清單(預期同 FR-119 handoff-to-fix-line.md 格式)→ 決策者逐項裁 → 開卡(第 8 批)→ 派工驗收 → 才開 CM-2197 發版。
  • CM-2197 發版卡上已累積的注意事項(套件清單 8 支+task-platform、lock 重產、既有紅燈、兩支 active migration 重產基線、release note 各條)保留不動,第 8 批若再加套件/migration 追加到同一張卡。
  • 事實更正:CM-2208 runner 查到 DEV 54,267 個有任務的流程實例全部查得回專案(CM-2113 補輪次鏈之後),卡上引用的「11,710/910」已過期;「查不到放行」實務上幾乎不會走到。
  • 仍待決策者:CI 密碼掃描沿用 CM-877,需確認 GitLab Runner 能否跑 docker。
§14

🟢 第 6 棒交棒前最後狀態(2026-09-26 晚):第 8 批已開卡待派,第 7 棒接驗收與發版

  • 掃描線全案收口,交修正線清單 docs/features/FR-120-2609-host-residual-security-scan/handoff-to-fix-line.md(e1831a0b8),決策者已逐項裁完、無待問。
  • 第 8 批 12 張已開:CM-2211~2222(8-A~8-L),卡號對照與三批派法(甲 8011/乙 8012/丙 8013)在母卡 CM-2170 最末段「第 8 批」。spec/建卡結果:cards/spec-b8*.json、cards/made-b8.json。
  • 撰卡 subagent 核對時的更正(已寫進各卡):8-K SHARED 出貨基線早已支援、落後的是套件 migrations(不需為此重產基線);scripts/sql/packages/ 是 gitignore 的 build 產物;8-L EvidenceClassificationService.js 要修剪不是整支刪(getRunState/putRunState 仍被 useEvidenceClassification.js 用);8-E M06-16 只拆閒置的 job_execution_service provider(job_execution_domain_service 大量使用要留);8-B db_reader.py 實為 infra/support/diag_db_reader.py。
  • 8-L 做完後由首腦派既有卡 CM-1871(分類容器 image 進出貨包)、CM-2061(M07 五件驗證),不重開。
  • CM-2197 發版卡已追加第 8 批事項(jedi-ai-dashboard 新增發版、8-E 第 215 項 migration 要重產基線、release note 三句、8-D/8-F/8-L 要 190 實裝測)。
  • 第 7 棒接手做:派第 8 批三段 prompt(見下)→ 逐卡驗收(驗收紀律照本檔「驗收怎麼做」;套件卡帶 PYTHONPATH;每張做完跑三支守衛;全批做完對 b2 基準跑全量差集,基準失敗清單做法見 LOG 第 6 棒)→ 派 CM-1871/CM-2061 → CM-2197 發版。
  • CI 密碼掃描:決策者 09-26 裁「先放著」(CM-877,待確認 Runner 能否跑 docker),不擋 b3。
  • b3 出包後:回掃描首腦「b3 實際修掉的總表項次+commit」,它照著回寫 PM 總報告第 181~218 項。
§15

🟢 第 7 棒交棒前最後狀態(2026-09-26 深夜):第 8 批全收,下一步只有 CM-2223

  • 第 8 批 CM-2211~2222 全 Done,首腦派獨立 opus 驗收員逐張開檔核對(套件帶工作區 PYTHONPATH),退回三張補完再驗(CM-2212 遮罩七種漏網、CM-2213 webhook 非 ASCII+專案名稱跳脫、CM-2214 交換目錄被換捷徑)。各卡最末段有「首腦驗收」。
  • 全量差集(BE 工作區 046553756、套件 87fd5439,對 b2 9ff0a5060/ab68291b):BE b2 2576 過/116 敗 → 現在 2737 過/115 敗,新增紅燈 0;六支套件無新增紅燈(compliance-audit、evidence-classification 測試數減少是隨功能刪除)。輸出在 /private/tmp/claude-501/diff8/(暫存,會消失)。做法:兩個臨時 git worktree add --detach 開 b2,同一個 venv、-o addopts= 跑,輸出寫檔只讀摘要。
  • 決策者 09-26 裁:落地版證據自動分類是 b3 驗收項目,做法選「分類改成常駐服務」(不掛主機 docker、不另做代理)。開 CM-2223(8-M),CM-1871 併入其出包段。背景:落地版後端本身是容器,沒有 docker、碰不到主機 docker,190 b2 實查確認;FR-063 D4 早知道,FR-107 改判開放但 CM-1871 只寫 image 進包、漏了後端怎麼起容器。
  • 順序(決策者定,不要提前):①派 CM-2223 → 它先回寫協定形狀與 uid/volume 對齊(十行內),首腦看過才實作 → 實作完驗收 ②CM-2223 驗收通過後才派 CM-2061(M07 五件驗證;#129/#130/#131 會被 CM-2223 改到,提前查是白工,卡上已註記)③CM-2061 查出要修的開卡修 ④全部驗完才開 CM-2197 發版(先前給過「先做 1~4 段」的 prompt,決策者叫停,未派)。
  • CM-2197 卡上已累積:第 8 批發版事項(jedi-survey、jedi-ai-dashboard 一定要發新版+改 pin,否則後端起不來;jedi-detection、task-platform、compliance-audit、evidence-classification 以 tag..HEAD 為準);8-E migration 要重產基線;release note 三句+落地版開放分類;190 實測項(8-D 真機 diag、8-F 併發開通、8-G 到期唯讀、分類全流程且 api 容器內仍無 docker)。
  • 另開卡候選(攢給決策者,總測後排):前端「新建掃描設定檔就能勾分享」(8-K);過期前發出的註冊碼仍能加入新代理(8-G);project_participant_service/project_control_participant_service/project_summary_report_history_service.py:76 仍是「零件有接才檢查」;DETECTION_TOOLS_400013 與後端碼同號不同義;8-L 殘留註解與舊路由名(套件 plugin/contract.py:124-125、FE EvidenceClassificationReview.vue 的 runFolderId、menu.json 兩個舊路由名、scripts/deliverables/out/routes.json 待重產)。
  • 資安報告狀態:第 8 批 12 張都沒回寫報告(報告只在主線),比照 CM-2199 由主線回寫卡統一補,b3 出包前開。
  • BOARD.md 已落後(第 7、8 批未更新),以 Notion 與本檔為準。
  • 仍待決策者:CI 密碼掃描沿用 CM-877,GitLab Runner 能否跑 docker。
§16

🟢 第 8 棒交棒(2026-09-27 上午):b3 已裝 190,進入「收回報→分批修」階段

此節覆蓋上面所有「第 6/7 棒此刻狀態」節的待辦,以此為準。

現況(首腦逐項實查過,不是 runner 自報)

  • 190 = 1.21.0b3 全新安裝:/api/1.0/version 回 1.21.0b3、commit fa2d59b30;七服務 healthy;docker exec guidant-api which docker 空、無 docker.sock;分類 image 只有包內 evidence-classifier:1.4.0;.env/api/classifier 三處 CLASSIFIER token 一致;分類服務只在 guidant_guidant-classifier 網路。setup/status 未初始化,決策者自己匯授權、跑精靈。
  • 包:188 /opt/guidant-ai-be/.build/bundle/guidant-ai-1.21.0b3.tar.gz(1,375,946,886 bytes,sha256 OK,內部測試包 skip PROD key)。四顆自建 image + compose 的 guidant-classifier 段都在包裡。188 剩 59G;BE/FE clone 已還原 detached;STG 仍 1.19.0 未動。
  • 程式面:修正線三 repo 都在 fix/security-b1 且已 push:BE fa2d59b30、套件 35ba8e84(含 tag)、FE 53a8d6a。十支套件發 Nexus:common 1.3.1/iam 1.4.4/task-platform 1.3.0/evidence-classification 1.4.0/file-upload 1.3.2/ai-dashboard 1.4.0/detection 1.2.1/compliance-audit 1.3.0/survey 1.2.1/oscal-v2 2.5.0;188 build venv 實裝逐支相同。出貨基線已重產(1.21.0b3)。
  • 本棒收掉的卡(全部首腦自己開檔+實跑驗收,紀錄在各卡尾「首腦驗收」):CM-2223(分類改常駐服務)、CM-2061(M07 五件驗證:只 #130 消失)、CM-2224(清 188 磁碟,Done)、CM-2225(#89 提示注入,真金鑰實測注入無效)、CM-2226(#132 鎖版本,竄改 hash 實測被擋)、CM-2227(#129 目錄清理+#131 開發機上限,實測容器帶 2g/2cpu/256、逾時後容器已不在)、CM-2228(#217 刪檔先刪紀錄)、CM-2229(base image 釘 digest+分類 pip 走 Nexus)、CM-2197(發版)。除 2224 外皆停「修正待驗證」,決策者 190 總測後才收 Done。
  • 決策者桌面有一份 b3-資安修正驗證清單.html(234 項依 24 模組分組、單勾「通過」+備註、進度存 localStorage、可匯出文字)。不通過的他會直接貼到首腦對話(含截圖),頁面不收截圖。

🔴 下一棒的工作型態:常態收錯誤回報,累積再統整分批修

  1. 收到一則回報就做三件事、不急著修:①tail log/app.log/190 docker logs guidant-api 找 stack trace ②對照驗證清單項次與 CM 卡(哪張卡改的、是回歸還是新問題、是否落地版才會發生)③一句話回決策者「已收、初判是什麼」,記進 CM-2141 母卡模式的收集卡(沿用第 5 棒做法:一張母卡下逐則 append,不逐則開卡)。
  2. 累積到一批(決策者說「統整」或約 8~10 則):分「回歸/新 bug/設定或環境/不是問題」四類,同模組併卡,每張卡照 notion-card-templates.md 開,派 runner 在修正線工作區改,驗收後決定進 b4 還是等正式版。
  3. 修完一批要不要重出包:小修累積、一次出 b4;出包流程照 CM-2197 卡(已含所有坑)。190 升級走 --upgrade(這次要驗升級補寫 token 那條,b3 是全新裝沒驗到)。
  4. 不要做的:不合回 feature/review(等總測過)、不動 STG/POC、不發正式 1.21.0(要先補 LC PROD 公鑰)、不碰主 checkout 的資安報告(報告回寫等合回統一做)。

已開、待派或待驗的卡(接手先查狀態)

  • CM-2230(8-T)已開卡待派:診斷包補認 guidant-classifier(改 BE host_collector.py KNOWN_SERVICES,是產物、要 b4 重 build 才到 190)+FE 映像 build 改 BuildKit secret 掛 npmrc、刪 build_fe_image.sh:52 寫死入版控的 Nexus base64 帳密(自 8c503ae5a 起存在)。決策者裁直接修進修正線隨 b4 帶出。派工 prompt 在卡上;Nexus admin 帳密是否輪換待決策者裁(輪換要同步 188 的 pip.conf/poetry auth.toml/npmrc)。
  • CM-2223/2061/2225~2229/2197:修正待驗證,等決策者 190 總測後收 Done。

攢給決策者的候選(總測後排,不擋 b3)

  • 主線資安報告回寫:第 8 批 CM-2211~2229 全部+第 217 項(M02 第 12 條/SUMMARY #212);比照 CM-2199 開一張主線回寫卡。
  • apt 鎖版號(BE production/分類 Dockerfile)、Nexus 加 apt proxy。
  • 188 ~/.config/pip/pip.conf Nexus 帳密明文(既有狀況,未擴散)。
  • jedi-file-upload 2 條測試斷言過期;多支子套件 poetry.lock 與 pyproject 不符。
  • CM-2223/2061 驗收時列的:前端新建掃描設定檔就能勾分享(8-K)、過期註冊碼仍能加代理(8-G)、三支 _require_participant 零件有接才檢查、8-L 殘留註解與舊路由名、DETECTION_TOOLS_400013 同號不同義、工作目錄 volume 會長大(維運手冊記一句)。
  • 本機 8005/5185 舊服務與 BE 工作區 .env 去留;CI 密碼掃描沿用 CM-877 待確認 Runner 能否跑 docker。
  • 正式 1.21.0 前必做(§2 第 13 條):LC PROD 公鑰 → license-runtime 發版 → 重 build → 不帶 --skip-prod-key-check 封包。agent 1.1.0b1 裝 190 驗協定。

本棒 pre-flight(接手先跑,唯讀)

git -C .claude/worktrees/wt-fix-security log --oneline -1          # 應 fa2d59b30
python scripts/notion_case.py get CM-2197 | grep 狀態              # 修正待驗證(決策者驗過才 Done)
ssh jedi@192.168.50.190 'curl -sk https://127.0.0.1/api/1.0/version; docker ps --format "{{.Names}} {{.Status}}" | grep guidant'
§17

🟡 第 9 棒此刻(2026-09-27 下午):b3 總測回報 24 則已收、第 9 批(b4)兩批共 20 張卡,第二批 A/B 執行中

此節覆蓋上面「第 8 棒交棒」的待辦,以此為準。

現況(首腦實查)

  • 收集卡 CM-2231:決策者 190 總測回報 24 則,每則含 190 log/DB 實查根因、file:line、修法、對應 repo;驗證清單對照:只有 #19(AI 儀表板,CM-2038 回歸)、#17/#18(Drive 授權,CM-2218 連帶)、#4(郵件憑證 UI,CM-2111 改裁)對得到清單,其餘為總測順便挖出的既有問題或新需求。
  • CM-2230(8-T)驗收通過,維持修正待驗證:BE 237ffbf86、FE 7e8f545。待裁:Nexus admin 帳密輪換;FE 三支 .gitlab-ci*.yml 明文帳密+失效的 --build-arg NEXUS_AUTH(要另開卡)。188 ~/.npmrc 不存在,b4 出包前要建(記在 CM-2197)。
  • 第 9 批第一批(CM-2232~2239、2242,8 張):由決策者一個執行首腦 session 開 subagent 做,7 張「修正待驗證」(執行首腦逐張開檔+突變驗收,紀錄在各卡尾「執行首腦驗收」);CM-2234 作廢(DEV 63 表 140 欄無時區,subagent 兩次撐爆),改由 CM-2245 只修顯示層,全庫改 timestamptz 另開 FR。教訓:本 repo subagent 用 sonnet 必爆,且 8 支同時回報進主 session 也爆——決策者裁之後不開 subagent,runner session 依序做、每 session ≤4 張。
  • 決策者裁定(已回寫各原卡):CM-2233 副作用選 B 案→CM-2246;問卷匯入刪備份→CM-2250;CM-2235 六處資料範圍 super_admin 參數不改(follow-up);憑證欄摺進進階設定+錯誤訊息指路→CM-2249;#23 CINC Auditor 裝進後端映像(Apache 2.0,非官方 InSpec)→CM-2247;#24 回饋整合設定搬系統設定群組→CM-2248。
  • 第二批 11 張(CM-2236/2240/2241/2243/2244/2245~2250):session A(2245→2246→2241→2240)與 session B(2247→2248→2250)已派出並行;session C(2249→2236→2243→2244)等 A 收完才派(與 2240 同動 FE 工作區)。spec/made:cards/spec-b9*.json、made-b9*.json。
  • 收 Done 鐵律(決策者 09-27 明令):所有 b4 卡維持「修正待驗證」,只有決策者在 190 手測過並說收才收 Done;有問題、沒做完、決策者說最後再處理的一律不准收。

驗收怎麼做(第二批,首腦自己做不派 subagent)

每張回寫後:到對應工作區 git show --stat <hash> 核範圍→逐項對 file:line→自己跑卡上的突變測試(套件帶 PYTHONPATH;BE 也要帶 jedi-integrity/jedi-compliance-audit 的 PYTHONPATH,venv 舊版會 ImportError)→三支守衛→卡尾 append「首腦驗收」;退回就退回同一個 runner session。

待裁/待辦

  • 待裁:Nexus 帳密輪換;FE .gitlab-ci*.yml 明文帳密另開卡;CM-2243 若 DEV 現值會讓通知信全停要裁是否順便啟用。
  • b4 出包(CM-2197 已追加全部事項):七支套件發版、兩支主線 migration 重產基線、188 建 npmrc、190 走 --upgrade 並驗升級補寫 token/舊指令名刪除/Drive 五項手測。
  • 另開 FR:全庫 63 表 140 欄 timestamp 改 timestamptz(CM-2234 拆出)。
  • Follow-up:六處 super_admin 資料範圍參數;api log 印整個 RoleEntity 含 bcrypt hash(第 9 棒順帶發現,未開卡)。
§18

🟢 第 9 棒此刻(2026-09-27 傍晚):b4 程式面 21 張,20 張修正待驗證,只剩 CM-2245 退回改 UTC 跑中

此節覆蓋上面「第 9 棒此刻(下午)」的待辦,以此為準。

  • 第二批 11 張+第三批 CM-2251+第四批 CM-2252 全部首腦逐張開檔+自跑突變驗收通過(各卡尾「首腦驗收」段)。做法改成 runner session 依序做(A 4 張/B 3 張/C 4 張),不再開 subagent。
  • 決策者今日改裁(已落原卡):資料庫統一存 UTC → CM-2245 退回(五張表寫入端還原 UTC、讀取端加明列 UTC 欄位清單);匯入原始檔必須留(存儲存後端)→ CM-2251 退回 CM-2233①/2250;save_dir 前綴+郵件啟用 migration+FE CI 刪明文 → CM-2252。Nexus 帳密:決策者以 jedi 一組通用(讀寫皆有),admin 已換密碼,188 三檔(.netrc/auth.toml/.npmrc)已設、pip.conf 不含帳密;本機 auth.toml 維持 jedi。
  • CM-2197 發版卡已追加全部:套件發版 15 支(common 1.3.2、iam 1.4.5、task-platform 1.3.0、evidence-classification 1.4.1、file-upload 1.3.3、ai-dashboard 1.4.1、ai-bot 1.3.1、detection 1.2.2、compliance-audit、survey 1.2.2、bulletin 1.2.1、log 1.3.1、notification 1.2.1、flow-engine 1.4.1、issue);主線 migration 四支(CM-2247 基線清理、CM-2248 選單搬家→重產基線;CM-2252 smtp-enable seed 不進基線;CM-2245 無 migration);188 npmrc 已建;190 走 --upgrade 要驗升級補寫 token/舊指令名刪除/Drive 五項手測/CINC 抽取/匯入留檔落 SeaweedFS。
  • 收 Done 鐵律不變:全部等決策者 190 手測。
  • 待決策者(不擋出包):GitLab CI/CD Variables 設 NEXUS_AUTH(要跑 SaaS CI 時才需要);另開 FR「全庫 63 表 140 欄改 timestamptz」(CM-2234 拆出,提前排)。
  • 下一步:CM-2245 回寫→驗收→b4 出包(CM-2197,188 build,等決策者放行)→裝 190 --upgrade→決策者總測→收 Done。
§19

🟢 第 9 棒此刻(2026-09-27 晚):FR-121 五張全收,b4 只剩 FR-121.6 待開;agent 包已到 190 待決策者互動安裝

  • FR-121(時間欄位改 timestamptz):.1 CM-2254/.2 CM-2255/.3 CM-2256/.4 CM-2257/.5 CM-2258 全部首腦逐張開檔+自跑突變驗收通過。教訓:判寫入時區看安裝版真機(190/189)不看 DEV——DEV 9/12 前資料來自舊 188 開發庫(時區 UTC)整批偏 8 小時,我原判 flow-engine 三張 UTC 寫入是錯的,真正 UTC 只有 remote_agents.last_seen_at/review_marks.reviewed_at/iam 改密碼 created_at。
  • 剩 FR-121.6:api_logs/system_logs 的 act_time 是月分割鍵不能改型別,要重建母表(手法照 scripts/sql/2026-06-03-log-tables-partitioning.sql),分割邊界用台北月初。決策者裁這次修,待開卡。
  • agent 1.1.0b1 裝 190:包已由 188 推到 190 ~/agent-1.1.0b1/(sha256 與 188 一致),--check-only 全綠;後端 AGENT_AUTH_MODE=full、PKI 五檔在 /srv/guidant-ai/pki/agent/。互動安裝(產 token、sudo ./install.sh)由決策者做;心跳時間那項 b4 上後要重看(.2 改了 last_seen_at 寫入)。
  • 主機互連:三台之間原本沒有免密(只有本機到三台),決策者已把 188 公鑰加進 190 authorized_keys,188→190 可直推;188→189、190→188 仍無。
  • b4 出包前置清單(CM-2197):FR-121.6 收完 → jedi-common 1.3.2 等 16 支套件發版(file-upload 1.3.3/license-runtime 1.1.1 新增)→ 188 基線庫補套 b4 全部 migration 並重產 02-schema → 188 build(FE+BE 必須同版)→ 190 --upgrade。
§20

🟢 第 10 棒此刻(2026-09-27 晚,接爆掉的第 9 棒):b4 程式面 29 張全收,等三個裁示與出包放行

此節覆蓋上面「第 9 棒此刻(晚)」,以此為準。

  • 9-X CM-2262 已開待派(問卷範本 || 格式+題目數只算主題目,收集卡 #32/#33)。
  • b4 程式面全收(29 張,全部「修正待驗證」,首腦逐張開檔+自跑突變):第 9 批 22 張(2230/2232/2233/2235~2244/2246~2249/2251/2252/2260/2261)+ FR-121 六張(2254~2259)。2234/2245 作廢。CM-2261 是最後一張(第 10 棒驗:agent 34 綠、突變 1 紅、BE 守衛 157 綠、DEV param_schema 已落)。
  • 收 Done 鐵律不變:全部等決策者 b4 上 190 手測。
  • agent:1.1.0b1 已裝 190 並註冊成功(第 9 棒);CM-2261 把 agent bump 到 1.1.0b2 未出包,b4 要連 agent 一起出包並重裝 190。
  • 收集卡 CM-2231 到 #31:#31 問卷清單看到兩個租戶的預設資料夾——決策者裁「清單頁一律只看作用租戶,跨租戶就切換」。根因是問卷列表沒加租戶條件、全靠 RLS(可見全部子孫);帳號選單/部門選單已改,問卷沒比照。這是全站性問題(52 張表同一套 RLS,公告/資訊系統/專案/範本/回饋/裝置都有同樣現象),建議訂共用規則統一套。
  • Nexus:jedi 一組通用,188 三檔已設,本機 auth.toml jedi。GitLab CI 變數 NEXUS_AUTH 等跑 SaaS CI 才需要。

決策者 09-27 晚已裁

  • CM-2261 套件 003 准改(併入 jedi-detection 1.2.2,CM-2263 做)。#31 問卷租戶範圍先不修(決策者 09-27 明說,收集卡留記錄)。套件發版放行→ 已開 CM-2263 派工。

待決策者裁(歷史,已裁見上)

  1. CM-2261 打折:OpenVAS 逾時 default/hint 的出貨預設在 jedi-detection 套件 003 migration,主線 seed 改不到新裝機。建議准改 003 那一列(套件 SQL 冪等,改法最小,新裝與升級同結果)。
  2. #31 問卷租戶範圍:進 b4(再開一張 jedi-survey 卡,順便訂共用規則)或 b4 之後全站盤點一次做。建議 b4 之後——不擋出包,且要全站一致,單修問卷會留下「這頁對、那頁不對」。
  3. 出包第 1 步放行(已放行,CM-2263 19 支:oscal-v2/integrity b3 已發不重發)——prompt 在 LOG 第 9 棒末段引用的對話中,第 10 棒可重貼。

b4 出包順序(CM-2197)

套件發版 20 支(jedi-common 1.3.2 最先)→ BE pin 正式版號+FE 1.21.0-beta.4 → 188 基線庫補套 b4 全部 migration 並重產 02-schema → 188 build(FE+BE+agent 1.1.0b2 同版)→ 190 --upgrade+重裝 agent → 決策者按各卡手測清單總測 → 收 Done。

Follow-up(未開卡)

  • 註冊 token 可重複使用直到停用(設計):是否改單次或設效期屬產品決策。
  • 每台 agent 一把稽核 SSH 私鑰的安裝流程(目前 190 與 123 共用一把)→ agent 安裝手冊。
  • 六處 super_admin 資料範圍參數;api log 印整個 RoleEntity 含 bcrypt hash。
§21

🟡 第 10 棒此刻(2026-09-27 19:40):b4 出包進行中——第 1、2 步完成,188 build 跑中,之後 agent 出包→190 升級

此節覆蓋上面「第 10 棒此刻(晚)」,以此為準。決策者 09-27 指示:第 2~4 步首腦直接做到 190 升級完成,不逐步放行;push 已授權。

  • 第 1 步 CM-2263 驗收通過:19 支發 Nexus(首腦從 188 自抓比雜湊 19/19)、BE pin 6f7e678ca、FE 1.21.0-beta.4 55ca905、套件 003 d94a472d。
  • 第 2 步完成:基線庫備份 188:~/backup/guidant_ai_baseline_20260927_1931_before_b4.dump;套 5 支(4 active+issue-integrate seed)rc=0;12 張 *_old 在基線庫 DROP(新裝不該帶舊分割表;既有客戶仍靠下一版 migration DROP);重產 02/04/99、版號 1.21.0b4 → BE 12dee3157 已推。四 repo fix/security-b1 全部已推、188 三 clone+monorepo 已拉到 HEAD。
  • 第 3 步跑中:188 /opt/guidant-ai-be venv 裝 19 支新版、重攤套件 migration(72 行)、臨時庫 guidant_ai_smoke_b4 init→migrate 對齊(0/0)、build_all.sh --all 19:38 起(log .build/logs/b4-build-all.log)。agent 1.1.0b2 出包等 BE Nuitka 段完才起(/opt/guidant-ai-agent 已在修正線 1b71a0c,--check-only 過)。
  • 第 4 步待做:BE bundle build_bundle.sh --skip-prod-key-check(內部測試包)→ scp 190 → 備份 190 DB → sudo ./install.sh --upgrade → agent 包 sudo guidant-agent-compose upgrade <包> → 升級驗證項(CM-2197:升級補寫 token、舊指令名刪除、既有時間不變、容器 TZ 仍 Asia/Taipei、心跳、CINC 抽取、匯入留檔、Drive 五項、操作紀錄區間)。190 現況:b3 七服務+agent 1.1.0b1,TZ=Asia/Taipei,AGENT_AUTH_MODE=full。
  • 190 升級後:決策者按各卡手測清單(30 張)+桌面 22 條 UI 清單;首腦開「API 批打驗證卡」處理 149 條非 UI 項。
  • 未動/記錄:#31 問卷清單只看作用租戶(決策者裁先不修);smtp-enable/openvas-timeout 兩支 seed 不進基線(migrate 帶)。
§22

🟢 第 10 棒此刻(2026-09-27 20:17):190 已是 1.21.0b4+agent 1.1.0b2,總測可開始

此節覆蓋上面「第 10 棒此刻(19:40)」,以此為準。

  • b4 出包四步全部完成(細節在 CM-2197 末段):19 支套件發版→基線重產(BE 12dee3157)→188 build(BE 17m/agent 13m,bundle 1.49GB/compose 1.4GB)→190 --upgrade rc=0(7+14 支 migration、七服務 healthy、舊指令移除)+agent upgrade rc=0(心跳正常)。
  • 升級後實查全過:版號、時間欄位型別與既有值、*_old 留一版、ui_routes 搬家、CHECK、OpenVAS default、CINC 在容器內、TZ、AGENT_AUTH_MODE、0 Traceback。
  • 下一步(決策者):190 手測 30 張卡的手測清單+桌面 22 條 UI 清單;通過的收 Done。
  • 下一步(首腦):開「API 批打驗證卡」處理 b3 驗證清單 149 條非 UI 項(改網址/空白查詢/炸彈檔/主機殘留);等總測回報收集。
  • Follow-up 新增:FE image tag 兩制(1.21.0-beta.N vs 1.21.0bN)每版要手補 docker tag,b3、b4 都踩,該收進 build 腳本;既有客戶 *_old 分割表下一版 migration DROP(FR-121.6 原設計)。
  • 備份座標:基線庫 188:~/backup/guidant_ai_baseline_20260927_1931_before_b4.dump;190 ~/guidant-backup-1.21.0b3-before-b4-20260927_2011.dump。
§23

第 10 棒交棒(2026-09-27 晚)

  • 190 已是 1.21.0b4+agent 1.1.0b2,決策者總測尚未開始。
  • 147 條非 UI 驗證:只完成清單索引(verify/b4-verify-list.json,四組 59/46/24/18,commit a1adbf52b),尚未在 190 實跑、驗證卡尚未建。
  • 建卡方式待決策者裁:建議驗證卡只指向各修正卡既有的手測清單,照那份步驟重跑並記結果,不在驗證卡內另寫測試手法。
§24

🟢 第 11 棒此刻(2026-09-28 凌晨):b4 總測進行中,147 條非 UI 驗證三張已跑、b5 候選已開四張

此節覆蓋上面「第 10 棒交棒」,以此為準。

  • 驗證卡:V1 CM-2264(三輪完:✅39/打折 20,零缺口)、V2 CM-2265(✅22、0 硬缺口、挖到 RLS 洩漏)、V4 CM-2267(✅12/❌2 已開卡)皆「修正待驗證」;V3 CM-2266 資源上限未派(等決策者停手)。報告在 verify/b4-verify-V{1,2,4}.md。剩餘打折五類(要輪次走到稽核中/只 create 帳號/build-time/第三方整合/惡意檔),建議留 e2e。
  • 190 新增測試帳號:blsfrank(id=7,子租戶 4,System Manager)、blsview(id=8,租戶 3,唯讀檢視者,非專案成員);專案 2「資料驗證」有填寫中任務問卷(task_survey id=1)。
  • b5 候選(修正線 fix/security-b1,已首腦核、未發版未出包):CM-2268 抽取死循環(f44d1af7,已核)、CM-2269 jedi-iam OTP 首發冷卻+entity log(f679363d)、CM-2270 jedi-common 日誌量(bf97b904)、CM-2271 九表 RLS 前綴(BE 6c74ff0e3+套件 6e0d0d4b,主線 migration +1,出貨基線待重產)。收集卡 CM-2231 記到 #40(#40:file 型基準背景重抽「Working outside of application context」,待開卡)。
  • 190 手動異動(決策者核准):detection_profile_versions id=1 SET extraction_error=NULL(解 #34 死循環)。
  • 未開卡:#39 兩條健壯性小 bug(資訊系統 PUT 只帶 is_active 500;job 路由非 UUID 400 帶 psycopg 原文)等統整併小卡。
  • 主 checkout 本機服務:BE 8000+FE 5180(主線 pin 版,venv 已 poetry install --sync 換回 pin);8005/5185 是修正線工作區舊服務(b2)。
§25

第 11 棒交棒(2026-09-28 凌晨):下一棒是「合回+b5 進版」首腦

此節覆蓋上面「第 11 棒此刻」,以此為準。決策者原話:「這邊驗過我們就準備進版吧,工作區準備回 branch 了」。

現況(首腦實查)

  • 190:1.21.0b4+agent 1.1.0b2,九容器 healthy。決策者 b4 手測進行中(30 張卡手測清單+桌面 22 條 UI)。190 手動異動一筆(決策者核准):config.detection_profile_versions id=1 SET extraction_error=NULL。
  • 190 新增測試帳號:blsfrank(id=7,子租戶 4)、blsview(id=8,租戶 3 唯讀檢視者、非專案成員);專案 2「資料驗證」有填寫中任務問卷。密碼同 DEV 測試帳號(memory reference_dev_login.md),不入任何檔。
  • 147 條非 UI 驗證:V1 CM-2264 ✅39/打折 20;V2 CM-2265 ✅22/打折 24;V4 CM-2267 ✅12/❌2(已開卡);V3 CM-2266 跑中(第一次 runner 把「炸彈/打垮」措辭當攻擊指令跑不完,已在卡末段補「驗收語言」段並重派新 session)。合計 73 擋住/2 問題/72 未驗,未驗的 48 條在 190 結構上驗不到(要稽核中輪次、188 build 機、第三方整合、惡意檔、SocketIO),建議收 e2e 不再手造。報告 verify/b4-verify-V{1,2,4}.md。
  • b5 候選四張,全部首腦開檔+自跑核過,狀態「修正待驗證」,都在修正線 fix/security-b1 未發版:
卡 套件/repo commit 備註
CM-2268 抽取死循環 jedi-detection 1.2.2 套件 f44d1af7 不用 migration
CM-2269 OTP 首發冷卻+八處 entity log jedi-iam 1.4.5 套件 f679363d;BE 報告 b99f88620
CM-2270 正式模式日誌量 jedi-common 1.3.2 套件 bf97b904;BE 報告 446f4bcf6
CM-2271 九表 RLS 前綴比對 BE+detection/license-runtime/remote-agent BE 6c74ff0e3;套件 6e0d0d4b 主線 migration +1(active/*),出貨基線待重產
CM-2280 升級角色回補誤判管理員 BE scripts/init/migrate-capability-grants.sql BE 563355d22 不需 migration;189 資料還原 SQL 等放行(verify/data-fix/189-restore-role-caps.sql),190 PM 待裁
CM-2281 fr093-1 假登記缺欄 BE 主線 migration+checks BE 54d171378 主線 migration +1(active/*),出貨基線待重產;189 補套等放行
  • 未 push:BE 修正線領先 origin 5、套件 monorepo 領先 4、主 checkout feature/review 領先 290+。push 等決策者。
  • 🔴 09-28 上午決策者已把 188/189/190 都升到 1.21.0(正式版號,非 b5),不是本棒做的。189 從 1.19.0 直升踩到 #42/#43 兩個升級路徑 bug;190 也裝了 CM-2271 migration(00:49)。189 現況:IT Manager/PM 能力點被塞滿、agent 心跳每 2 分鐘 500,兩者資料修復都等決策者放行。
  • 收集卡 CM-2231 記到 #43(#41 FE 改自己角色後選單未刷新,待開小卡;#42/#43 已修見上表)。未開卡待裁:#39 兩條健壯性小 bug(資訊系統 PUT 只帶 is_active 500;job 路由非 UUID 400 帶 psycopg 原文);#40 file 型基準背景重抽「Working outside of application context」(CM-2268 runner 在 DEV 撞到,190 未重現因無人重抽過 file 型;已請決策者在 190 挑一版 file 型按重抽確認,重現就開卡進 b5)。

🔴 第 12 棒的工作:合回四 repo + b5 出包(每步等令)

b5 候選現為六張(表上四張+CM-2280/2281),主線 migration 共 +2(CM-2271、CM-2281),基線重產一次做。189 兩件資料修復已完成(決策者 09-28 12:39 放行,第 11 棒套):備份 189:~/guidant-backup-1.21.0-before-cm2280-2281-fix-20260928_1239.dump;① 角色還原 IT Manager 98→83、PM 98→53(比升級前 89/58 少 6 個是 CM-1833 退役選單合法刪的,不回填);② 套 CM-2281 migration+手動補 jedi_remote_agent/003 並登記,agent_tasks.payload_ref 已在,agent 心跳 12:40 起 200。190 PM(id=7) 28 個敏感能力點仍待決策者裁。 決策者裁「驗過就進版、工作區回 branch」。順序建議(沿 CM-2197 b4 五步,細節與坑全在 CM-2197 卡與 LOG 第 10 棒 block):

  1. 等 V3 CM-2266 回報(核完才知道 b5 要不要再多修)+決策者 190 手測收尾(30 張卡 Done 或退回)。
  2. 合回:fix/security-b1 → 各 repo feature/review(BE/FE/套件 monorepo/agent 四個)。§2 裁示 2 說「主線合回等資安掃描線 FR-113 結束」——接手先問決策者 FR-113 是否已結束或放行。合回後主 checkout venv 要 poetry install --sync(第 11 棒發現主 checkout venv 曾被指到修正線工作區 12 支 editable,起不來)。
  3. 套件發版(b5 動到:jedi-common 1.3.3、jedi-iam 1.4.6、jedi-detection 1.2.3、jedi-license-runtime 1.1.2、jedi-remote-agent 1.2.1,版號由發版棒定;同支套件改動全做完驗完才發,b3 iam 補發三次的教訓)→ BE pin + FE 版號。
  4. 188 基線庫補套 CM-2271 主線 migration +重產 02-schema(步驟見 sql-migration skill「出貨基線同步」;b4 曾 DROP 12 張 *_old,這次不必)。
  5. 188 build(BE+FE+agent 同版)→ 190 --upgrade(記得 FE image tag 兩制要手補 docker tag,b3/b4 都踩)→ 升級驗證項 → 決策者手測 b5 四張卡 → 收 Done。
  6. 正式 1.21.0 前必做(§2 裁示 13):jedi-common 1.3.1 第 154 項、LC PROD 鑰對進 jedi-license-runtime、封包不帶 --skip-prod-key-check。

派工方式沿用

開卡用 scripts/notion_create_case.py,spec 樣板在 cards/spec-b9-*.json;驗證卡樣板 cards/spec-b4-verify.json。runner 回報進來一律開檔+自跑突變核,不信自報(本棒四張都這樣核、CM-2268 漏核一天才補)。

本棒 pre-flight(接手先跑,唯讀)

ssh jedi@192.168.50.190 'docker ps --format "{{.Names}} {{.Image}}" | sort'
python scripts/notion_case.py get CM-2266 | grep -m1 "^狀態:"
git -C .claude/worktrees/wt-fix-security status -sb | head -1
git -C ~/Projects/Jedicogy/module/jedi-python-package/.claude/worktrees/jedi-wt-fix-security log --oneline -5
§26

第 12 棒交棒(2026-09-28 凌晨):1.21.0 正式版已出、190+STG 已升級,等決策者驗收

此節覆蓋上面所有「此刻」節,以此為準。

現況(首腦實查,不是 runner 自報)

  • 四 repo 合回:fix/security-b1 → feature/review 零程式衝突(BE 352 個衝突全是兩邊各自遮測試密碼的措辭不同,取主線);三支 smoke 腳本環境變數統一成既有 PROBE_USER/PROBE_PASS。決策者裁 b5 四張(CM-2268~2271)+CM-2272 隨合回直接進正式版、不另出包;FR-113 掃描線已結束放行。
  • 正式版前置四張全 Done 級(狀態修正待驗證等決策者收):CM-2273 六支套件 bump 發 Nexus+BE pin(套件 8765bd39、BE e04accb5d,tag 只打新版六個、舊 tag 不補);CM-2274 PROD 鑰對擱置(這版無 PROD LC 主機,封包仍 --skip-prod-key-check);CM-2275 基線補套 CM-2271 並重產 02(712fb5b64);CM-2276 進版(BE 02f680835:RN/pyproject 1.21.0/99-stamp 185 支/spec-site v1.21.0 快照;FE 50bda00;agent 6c17d21 轉正 1.1.0)。回歸 gate 決策者豁免(測案過時,收口後另派一棒重整),RN §0 照實寫。
  • CM-2277 出包+升級:188 build 全綠、包 188:/opt/guidant-ai-be/.build/bundle/guidant-ai-1.21.0.tar.gz(1.49GB)+Agent 兩種包;190 --upgrade 一支 migration 過、Agent 1.1.0 心跳正常;188 STG 1.19.0→1.21.0 跳升 123 支 migration 全過、資料量不變。細節與備份座標全在 CM-2277 卡。
  • 🔴 升級排練抓到並修掉的地雷(BE 85ae5aadc,已推、已進 init image 與包):fr093-4d 內建流程範本 INSERT 帶 scope 欄,但加欄的 CM-1790 在 manifest 行序之後——所有 1.19.0 客戶升級必炸,1.20.0 兩路驗證與 190 b3/b4 都沒走過這條路。修法是 4d 內冪等補欄。教訓:升級驗證要拿真實舊版客戶庫的 dump 排練,不能只靠「上一個 beta 升上來」。
  • 主 checkout 工作區仍有約 50 個 docs/features 站產物 HTML 髒檔與三個未追蹤 docs/spec-site/site/release-notes/v1.21.0-beta.* 目錄——不屬任何卡,沒動。

決策者明早驗收清單

  1. 190(1.21.0):登入、切租戶、我的任務、匯入任務 Excel 合法範本不再 500(CM-2272)、檔案型檢測基準重抽(#40 待確認)、b5 四張手測清單。
  2. 188 STG(1.21.0):登入、既有 58 個專案還在、切租戶、時間顯示(FR-121 首次在有舊資料的庫上跑)、我的任務、公告列表。STG Agent 待裁 更正(09-28 早):188 是主產品機本來就沒有 Agent;zen_sutherland 是 8/26 T-6.6 打包測試殘留(--version 一次性容器、零 log、未註冊),連同 guidant-agent-seaweedfs 與 /tmp/t66-* 屬 188 衛生問題,等決策者令清。
  3. 兩台都過 → 裁 POC(189,1.19.0)何時升;POC 走同一條 1.19→1.21 路徑,STG 已排練過。

待裁/follow-up(皆已寫進 CM-2277 或 RN §7)

  • schema_version 表升級路徑不更新(190 停 b3、STG 停 1.14.0),只有新裝時 99-stamp 寫;建議小卡讓 migrate 第三輪 upsert。
  • cm1796-question-answers-backfill.sql 自帶 BEGIN 與 --single-transaction 重疊出 WARNING,無害。
  • git tag v1.21.0 兩 repo等 merge main 後打,打完要 git push origin v1.21.0。
  • site-regression 出版前回歸測試重整(決策者說會另派一棒)。

本棒 pre-flight(接手先跑,唯讀)

ssh jedi@192.168.50.190 'sudo -n guidantai status | head -12; curl -sk https://localhost/api/1.0/version'
ssh jedi@192.168.50.188 'sudo -n guidantai status | head -12; curl -sk https://localhost/api/1.0/version'
ssh jedi@192.168.50.189 'sudo -n guidant status | grep 版本'   # POC 應仍 1.19.0
for c in CM-2273 CM-2275 CM-2276 CM-2277; do python scripts/notion_case.py get $c | grep -m1 "^狀態:"; done
git log --oneline -6   # 主 checkout feature/review,應含 85ae5aadc / 02f680835
§27

第 12 棒交棒(2026-09-28 午):三環境已是 1.21.0,FR-114 主線結束,剩一條尾巴給第 13 棒

此節覆蓋上面所有「此刻」節,以此為準。決策者原話:「114 應該是結束了,交接給下一棒,我們來整理這一兩周的 case 跟文件」。

現況(首腦實查)

環境 版本 備註
190 測試機 1.21.0+Agent 1.1.0 09-28 00:49 從 b4 升
188 STG 1.21.0 09-28 01:03 從 1.19.0 直升,123 支全過、資料無損;主機無 Agent(昨晚誤判的 0.2.30 容器是 T-6.6 測試殘留)
189 POC 1.21.0 09-28 11:18 第一次升在 jedi_iam/002 撞 deadlock(舊版 api 未停);停 api 重跑 11:25 過。再撞 #42/#43 兩個 1.19 直升 bug,第 11 棒修(CM-2280/2281)並於 12:39 決策者放行後套資料修復,心跳 12:40 起 200
121→POC、60.167→POC、122→STG Agent 1.1.0 升級後 401→自動重註冊 200,uid/指紋不變
60.166→STG Agent 1.1.0 它用的註冊 token 在 STG 早已 disabled,自動重註冊 401;換 STG 現行 enabled token(id 18)後手動起容器註冊成功,uid 不變
123→DEV Agent 1.1.0 已升,連不上 雲端位址 10.8.0.10 已不存在(決策者 VPN 現為 10.8.0.6)+憑證 crt/key 不配;原生 0.2.30 已 disable --now(檔留)。等決策者給 DEV 註冊 token 才 re-enroll --endpoint http://10.8.0.6:8000
  • 四 repo fix/security-b1 已合回 feature/review 並推(09-28 凌晨)。但第 11 棒之後又在修正線加了 CM-2280 563355d22、CM-2281 54d171378 兩支,尚未合回——git log feature/review..fix/security-b1 就這兩支。
  • 主線 migration 待進基線 +1:CM-2281 的 2026-09-28-fr114-fr093-backfill-verify-and-unmark.sql(CM-2271 那支 CM-2275 已進)。DEV 與 189 已套並登記;188 STG/190 未套(它們沒踩到假登記缺欄,checks/fr093-backfill-objects-exist.sql 盤過只有 189 缺)。
  • Notion:FR-114 子卡 CM-2264~2281 全部「修正待驢證」等決策者收 Done;母卡 CM-2019、收集卡 CM-2231 Not started;CM-2274(PROD 鑰)擱置;CM-2278(支援頁顯示版號)、CM-2279(POC 升級卡,實際已做完未回寫)Not started。
  • 主 checkout 乾淨(50 個站產物 HTML 髒檔已被第 11 棒的 commit 帶進去或不在了,git status 非 HTML 髒檔 0)。

第 13 棒要做的(每步等令)

  1. 合回尾巴:fix/security-b1 的兩支合回 feature/review(零衝突可預期)→ 188 基線庫補套 CM-2281 migration 並重產 02/99-stamp(照 CM-2275 做法)→ 這是 1.21.0 的 hotfix 還是進 1.21.1,決策者裁。
  2. CM-2279 回寫(POC 升級實況含 deadlock 與兩個 bug,資料在本節與 CM-2277 末段)並改「修正待驢證」。
  3. 123 Agent re-enroll:拿到 DEV token 後 sudo guidant-agent-compose re-enroll --endpoint http://10.8.0.6:8000 --token <t> --yes(http 免指紋)。
  4. 三個 installer/升級鏈缺口開卡:①升級第③步套 migration 前不停舊版 api → deadlock(POC 實踩);②schema_version 表升級路徑不更新(三台都停在舊值);③Agent 用的註冊 token 被 disable 後自動重註冊必 401,1.0.0→1.1.0 升級文件要寫「先確認 token 仍 enabled」。
  5. 兩週收口整理:母卡 CM-2282 已開(範圍、實盤數字、四件待決策者裁、Z1~Z5 切棒建議全在卡上)。第 13 棒=整理首腦:先拿決策者對四件待裁的答案,再開 Z1~Z5 子卡派工。FR-114 母卡 CM-2019 的 Done 也在那張卡的裁示範圍內。

本棒 pre-flight(接手先跑,唯讀)

for h in 190 188 189; do ssh jedi@192.168.50.$h 'sudo -n guidantai status | grep 版本; curl -sk https://localhost/api/1.0/version'; done
git log --oneline feature/review..fix/security-b1      # 應只剩 563355d22 54d171378
for c in CM-2279 CM-2280 CM-2281; do python scripts/notion_case.py get $c | grep -m1 "^狀態:"; done

§28

🟢 第 13 棒此刻(2026-09-28 午後):四件待裁已裁、七張卡已開,等決策者逐張發令派工

此節覆蓋上面「第 13 棒要做的」,以此為準。

決策者 09-28 已裁(CM-2282 四件)

  • 127 張修正待驗證一律 Done。
  • 掃描線「未修」是總表狀態欄過期,不是沒修:44 條裡 27 條已在第 8 批出貨、5 條隨舊線退場、3 條已裁記錄不修,真正沒卡的 9 條另開 1.21.1 hotfix 母卡 CM-2289(FR-122),決策者之後會再加 AI 資安議題進去。
  • FR-114 母卡:先合回+基線補套(1.21.0 hotfix,不 bump)再收 Done。
  • SPEC/手冊:先補前五處,其餘登記待補。v1.21.0 快照內容等於 1.20.0(切版時 current 沒補),凍結不回改。

已開卡(一次建完,spec 在 cards/spec-closeout-and-hotfix.json)

卡 做什麼 model 前置
CM-2283 Z1 Notion 批次收 Done+13 張母卡結案段 sonnet 無
CM-2284 Z2 FR-114/121 README、arc SUMMARY、登記表六列+FR-123 新列+jedi-packages 名冊、重 build opus 等 Z3 改完總表數字
CM-2285 Z3 資安總表狀態欄終局化+§0 統計+封面/評級定義 opus 無
CM-2286 Z4 SPEC/手冊前五處+待補清單 opus 無
CM-2287 Z5 memory 兩邊對齊+FR-114 教訓入 memory sonnet 無
CM-2288 尾巴:合回 563355d22/54d171378+188 基線補套 CM-2281+重產 02/99-stamp sonnet 無;對 188:25432 基線庫是寫入,派工即放行
CM-2289 1.21.1 hotfix 母卡(FR-123,FR-122 已被 AI 閘道用掉):只定範圍;子卡等決策者裁第一批與分支名 — 決策者先看卡

CM-2282 已改 In progress 並 append 裁示與清單。

與掃描首腦(另一 session)的分工(09-28 午後談定)

  • Notion 收卡:掃描線全部(FR-113/115/116/118/119/120 母子卡+module_frame+早期掃描 arc FR-075~109 那 44 張)由掃描首腦收,卡 CM-2290(已派)。修正線全部+CM-1907~1944/CM-1981~2017/FR-099~103 退役棒+CM-1849/1871(T-6.4 實際已隨 CM-2223 做完)由本棒 CM-2283 收。
  • 文件:docs/security-report/(SUMMARY+M 頁+README)全歸本棒 CM-2285;docs/features/security-scan-consolidated/README.md 歸掃描首腦 CM-2291(已派),本棒不碰。html 各自重產自己改的頁,不帶 --site-root。
  • 事實更正:CM-2061 結論是「#89/#129/#131/#132 都還在」,第 8 批 CM-2225/2226/2227 已修進 1.21.0,總表這五條改「已修」不是「隨退場消失」(Z3 卡已改)。CM-2221 的前端小卡從未開,併入 CM-2289 範圍 C。
  • 約定:CM-2283/2285 派出時回報卡號給掃描首腦。

收口結果(09-28 晚,首腦逐張開檔核過)

Z1~Z5 五張+尾巴 CM-2288 全 Done;CM-2282 兩週收口母卡 Done;CM-2019 FR-114 母卡 Done。任務清單無任何卡停在修正待驗證。commits:27f601726/4e7e2f987(尾巴)、398eea257(Z5)、887758ac7(Z3)、9cab84567(Z2)、1ccaca3cf(Z4)。

移到下一版(決策者 09-28 裁)

  • CM-2289(FR-123)1.21.1 hotfix 全部等下一版出貨再開子卡:9 條沒卡未修、installer 三缺口、CM-2278/CM-2221 前端小卡、b5 三項、AI 議題(與 FR-122 重疊先對)。
  • 123 Agent re-enroll:等 DEV 註冊 token。
  • 188 STG/190 未補套 CM-2281 那支(不缺物件,首腦建議不補)。

決策者本人要做的

  • 打 tag:git tag -a v1.21.0 02f6808351 -m "Guidant AI 1.21.0(2026-09-28 三環境出貨)"——tag 打在三環境實跑的映像 commit,之後 25 支(含三支升級修正)進 1.21.1。
  • push feature/review+tag;合 main(merge 或 PR 自選)。FE 對應 tag 首腦未查,需要再查。

本棒 pre-flight(接手先跑,唯讀)

for c in CM-2283 CM-2284 CM-2285 CM-2286 CM-2287 CM-2288 CM-2289; do echo -n "$c "; python scripts/notion_case.py get $c | grep -m1 "^狀態:"; done
git log --oneline feature/review..fix/security-b1      # CM-2288 未做前應仍為 563355d22 54d171378