這份是 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 卡(發版全紀錄,含各段驗收) |
寫一次,之後不動。
docs/security-report/)23 塊內化完、收尾成 SUMMARY.md 145 件(194 條去重)。SUMMARY 按嚴重度排、不是派工單;決策者裁六批修正順序,本 arc 把它翻成「一個工作區一張卡」並派工驗收。handoff/2026-09-23-merge-readiness.md(合回順序/清理清單/總測建議/裁決清單七項——已全部裁完,讀它是為了知道裁完後長什麼樣,不是還要再裁)。FR-114-LOG.md 第 4 棒+第 5 棒兩個 block(信任鏈設計、發版全流程、188 build 踩過的坑)。BOARD.md——卡片狀態總覽。99b0721c3),工作區 HEAD 74239a353(含 CM-2135 build 修正、1.21.0b1 版號與 release note)。--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)。--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 同步打包。決策者已拍板、不容重啟:
fix/security-b1 已推 GitLab。list_ap_parties 總測觀察;管理者代刪不開。poetry lock。jedi-license-runtime public_keys.py → 發版 → 重 build BE → build_bundle.sh 不帶 --skip-prod-key-check 封包(留在 LC 那一輪做)。fix/security-b1(套件 ecdc9f3、9edda49)的打包差異——照比本體這次踩過的坑:cryptography 是否編進 core(連坐)、產物權限、探針外部 python 跑法、FE/repo HEAD 是否含新版、版號撞號風險。先盤點再 build,不要邊撞邊修(本體那輪連撞四次的教訓)。/opt/guidant-ai-agent 出包(build 前依 build 機 README 規定先 git pull 並驗 HEAD;也要查併行 build:pgrep -f 'nuitka|build_all')。jedi-license-runtime public_keys.py → 發版 → 重 build BE → build_bundle.sh 不帶 --skip-prod-key-check 封包。handoff/2026-09-23-merge-readiness.md 第 7 節。version-bump skill 全套,含 spec 快照)→ 才談 STG/POC。docs/features-site/ 以主線為準;CM-2032 那筆主線已有同內容。合回後清主 checkout 共用 venv 那 12 個指到 jedi 工作區的 .pth。_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 出貨基線改依套件產生。runner/發版動作回寫後,不信自報、自己開檔:
git log --oneline -3、git show --stat <hash>:動的檔在範圍內?common/authz?grep -n "FR-114.<卡號>" docs/security-report/M*.md SUMMARY.md 命中?PYTHONPATH=<套件工作區>(不帶會驗到 site-packages 舊版全綠)。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。
fix/security-b1 合回各 repo feature/review;套件發版走 Nexus;BE/agent 出包走 188 build 機(/opt/guidant-ai-be、/opt/guidant-ai-agent,git pull 更新,禁 scp/rsync)。首腦不自己合、不自己發、不部署。
night-run/HANDOFF.md,但自動跑已結束,僅留作紀錄)。--all 夾帶 242 檔)——派工 prompt 要寫「不改任何腳本的範圍/模式參數」。git grep 不用 grep -r(後者會把 gitignored 的 .claude/、掃描產物算進來,永遠驗不到零命中)。.mo,因套件庫 .gitignore 排除、worktree 從 git 開出沒有)——發前比對 wheel 內非 .py 檔與上一版差異。CLAUDE-SECURITY-*/ 掃描產物含憑證原文(gitignored),累積多個目錄——衛生問題,已回報決策者,不在本 arc 範圍。/api/1.0/version 回 1.21.0b2、commit 9ff0a5060;六服務 healthy;決策者開通狀態、帳號、上傳檔筆數升級前後一致)。備份 ~/guidant-backup-1.21.0b1-before-b2-20260924_2232.sql.gz。agent 未裝。sudo guidant setup-token)、CM-2144(公告全公司)、CM-2145(拿掉 AI 分類設定分頁)、CM-2147(超級管理員不再免專案成員檢查——決策者裁定的新行為)、CM-2148(任務卡住查詢補成員檢查)。/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。docker builder prune -f 不加 -a;刪 image 前看 STG 在用 1.19.0)。.env(不入版控)——第 6 棒確認決策者不用了就停掉並刪 .env。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 到母卡。plugin/assembly.py 自組的服務,參數齊;BE 那個 provider 零使用者=死 provider,7-6f 清);FR-120 di-wiring-audit-fixline.md「🔴」節多出的 4 處是拿主 checkout 容器檔比出來的誤報,工作區都已接好。module-frame.read migration;7-5c 空白範本下拉縮減法;7-6d AI 儀表板入口(jedi-ai-dashboard 不在發版清單);7-4a 回寫範圍外 clear_ssp_body/import_ssp 是否另開卡。.env 的去留仍待決策者回覆。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 錯誤、資源庫孤兒程序書掛載。501670e49、套件 ac743850、FE 2cb7fb4;測試 repo feature/review b2395b2(CM-2175)。test_no_rls_enabled_on_these_tables 既有紅燈)、detection 1.2.1(CM-2168)。_resolve_ssp 第三段 ap.uid→ap.uuid(一行)、GET /module-frame/item/<不存在> 500、匯入外部服務提供者被 dedupe 丟掉、oscal_io_service.clear_ssp_body/import_ssp 補凍結檢查、spec 四頁仍寫已拆網址、總表第 128~180 項「已修」標記在主 checkout 合回時集中標。b3a569dd0、87833afb0)。BE 工作區 HEAD c8aa7d026,全量測試對 b2 基準差集 新增紅燈 0(2665 passed)。退回一次:CM-2203(補空白提早停+5,000 列上限)。FR-063/deployment-env.html 未重 build;SPEC 授權頁「關總開關即放行」待收尾更新;主 checkout 35 支他人 rebuild 殘留 html 未 commit。1516d90bc)。修正線工作區 HEAD 1516d90bc,所有已開的修正卡(第 7 批+追加 CM-2199~2205、2208)全數 Done。handoff-to-fix-line.md 格式)→ 決策者逐項裁 → 開卡(第 8 批)→ 派工驗收 → 才開 CM-2197 發版。docs/features/FR-120-2609-host-residual-security-scan/handoff-to-fix-line.md(e1831a0b8),決策者已逐項裁完、無待問。cards/spec-b8*.json、cards/made-b8.json。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。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= 跑,輸出寫檔只讀摘要。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 待重產)。此節覆蓋上面所有「第 6/7 棒此刻狀態」節的待辦,以此為準。
/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 未初始化,決策者自己匯授權、跑精靈。/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 未動。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)。b3-資安修正驗證清單.html(234 項依 24 模組分組、單勾「通過」+備註、進度存 localStorage、可匯出文字)。不通過的他會直接貼到首腦對話(含截圖),頁面不收截圖。tail log/app.log/190 docker logs guidant-api 找 stack trace ②對照驗證清單項次與 CM 卡(哪張卡改的、是回歸還是新問題、是否落地版才會發生)③一句話回決策者「已收、初判是什麼」,記進 CM-2141 母卡模式的收集卡(沿用第 5 棒做法:一張母卡下逐則 append,不逐則開卡)。notion-card-templates.md 開,派 runner 在修正線工作區改,驗收後決定進 b4 還是等正式版。--upgrade(這次要驗升級補寫 token 那條,b3 是全新裝沒驗到)。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)。~/.config/pip/pip.conf Nexus 帳密明文(既有狀況,未擴散)。_require_participant 零件有接才檢查、8-L 殘留註解與舊路由名、DETECTION_TOOLS_400013 同號不同義、工作目錄 volume 會長大(維運手冊記一句)。.env 去留;CI 密碼掃描沿用 CM-877 待確認 Runner 能否跑 docker。--skip-prod-key-check 封包。agent 1.1.0b1 裝 190 驗協定。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'
此節覆蓋上面「第 8 棒交棒」的待辦,以此為準。
237ffbf86、FE 7e8f545。待裁:Nexus admin 帳密輪換;FE 三支 .gitlab-ci*.yml 明文帳密+失效的 --build-arg NEXUS_AUTH(要另開卡)。188 ~/.npmrc 不存在,b4 出包前要建(記在 CM-2197)。cards/spec-b9*.json、made-b9*.json。每張回寫後:到對應工作區 git show --stat <hash> 核範圍→逐項對 file:line→自己跑卡上的突變測試(套件帶 PYTHONPATH;BE 也要帶 jedi-integrity/jedi-compliance-audit 的 PYTHONPATH,venv 舊版會 ImportError)→三支守衛→卡尾 append「首腦驗收」;退回就退回同一個 runner session。
.gitlab-ci*.yml 明文帳密另開卡;CM-2243 若 DEV 現值會讓通知信全停要裁是否順便啟用。--upgrade 並驗升級補寫 token/舊指令名刪除/Drive 五項手測。此節覆蓋上面「第 9 棒此刻(下午)」的待辦,以此為準。
jedi 一組通用(讀寫皆有),admin 已換密碼,188 三檔(.netrc/auth.toml/.npmrc)已設、pip.conf 不含帳密;本機 auth.toml 維持 jedi。--upgrade 要驗升級補寫 token/舊指令名刪除/Drive 五項手測/CINC 抽取/匯入留檔落 SeaweedFS。NEXUS_AUTH(要跑 SaaS CI 時才需要);另開 FR「全庫 63 表 140 欄改 timestamptz」(CM-2234 拆出,提前排)。--upgrade→決策者總測→收 Done。remote_agents.last_seen_at/review_marks.reviewed_at/iam 改密碼 created_at。scripts/sql/2026-06-03-log-tables-partitioning.sql),分割邊界用台北月初。決策者裁這次修,待開卡。~/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 寫入)。--upgrade。此節覆蓋上面「第 9 棒此刻(晚)」,以此為準。
|| 格式+題目數只算主題目,收集卡 #32/#33)。jedi 一組通用,188 三檔已設,本機 auth.toml jedi。GitLab CI 變數 NEXUS_AUTH 等跑 SaaS CI 才需要。套件發版 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。
此節覆蓋上面「第 10 棒此刻(晚)」,以此為準。決策者 09-27 指示:第 2~4 步首腦直接做到 190 升級完成,不逐步放行;push 已授權。
6f7e678ca、FE 1.21.0-beta.4 55ca905、套件 003 d94a472d。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。/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 過)。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。此節覆蓋上面「第 10 棒此刻(19:40)」,以此為準。
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。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。verify/b4-verify-list.json,四組 59/46/24/18,commit a1adbf52b),尚未在 190 實跑、驗證卡尚未建。此節覆蓋上面「第 10 棒交棒」,以此為準。
verify/b4-verify-V{1,2,4}.md。剩餘打折五類(要輪次走到稽核中/只 create 帳號/build-time/第三方整合/惡意檔),建議留 e2e。detection_profile_versions id=1 SET extraction_error=NULL(解 #34 死循環)。poetry install --sync 換回 pin);8005/5185 是修正線工作區舊服務(b2)。此節覆蓋上面「第 11 棒此刻」,以此為準。決策者原話:「這邊驗過我們就準備進版吧,工作區準備回 branch 了」。
config.detection_profile_versions id=1 SET extraction_error=NULL。reference_dev_login.md),不入任何檔。verify/b4-verify-V{1,2,4}.md。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 補套等放行 |
feature/review 領先 290+。push 等決策者。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):
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,起不來)。*_old,這次不必)。--upgrade(記得 FE image tag 兩制要手補 docker tag,b3/b4 都踩)→ 升級驗證項 → 決策者手測 b5 四張卡 → 收 Done。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 漏核一天才補)。
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此節覆蓋上面所有「此刻」節,以此為準。
fix/security-b1 → feature/review 零程式衝突(BE 352 個衝突全是兩邊各自遮測試密碼的措辭不同,取主線);三支 smoke 腳本環境變數統一成既有 PROBE_USER/PROBE_PASS。決策者裁 b5 四張(CM-2268~2271)+CM-2272 隨合回直接進正式版、不另出包;FR-113 掃描線已結束放行。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 照實寫。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 卡。85ae5aadc,已推、已進 init image 與包):fr093-4d 內建流程範本 INSERT 帶 scope 欄,但加欄的 CM-1790 在 manifest 行序之後——所有 1.19.0 客戶升級必炸,1.20.0 兩路驗證與 190 b3/b4 都沒走過這條路。修法是 4d 內冪等補欄。教訓:升級驗證要拿真實舊版客戶庫的 dump 排練,不能只靠「上一個 beta 升上來」。docs/spec-site/site/release-notes/v1.21.0-beta.* 目錄——不屬任何卡,沒動。zen_sutherland 是 8/26 T-6.6 打包測試殘留(--version 一次性容器、零 log、未註冊),連同 guidant-agent-seaweedfs 與 /tmp/t66-* 屬 188 衛生問題,等決策者令清。schema_version 表升級路徑不更新(190 停 b3、STG 停 1.14.0),只有新裝時 99-stamp 寫;建議小卡讓 migrate 第三輪 upsert。cm1796-question-answers-backfill.sql 自帶 BEGIN 與 --single-transaction 重疊出 WARNING,無害。v1.21.0 兩 repo等 merge main 後打,打完要 git push origin v1.21.0。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此節覆蓋上面所有「此刻」節,以此為準。決策者原話:「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 |
fix/security-b1 已合回 feature/review 並推(09-28 凌晨)。但第 11 棒之後又在修正線加了 CM-2280 563355d22、CM-2281 54d171378 兩支,尚未合回——git log feature/review..fix/security-b1 就這兩支。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 缺)。git status 非 HTML 髒檔 0)。fix/security-b1 的兩支合回 feature/review(零衝突可預期)→ 188 基線庫補套 CM-2281 migration 並重產 02/99-stamp(照 CM-2275 做法)→ 這是 1.21.0 的 hotfix 還是進 1.21.1,決策者裁。sudo guidant-agent-compose re-enroll --endpoint http://10.8.0.6:8000 --token <t> --yes(http 免指紋)。schema_version 表升級路徑不更新(三台都停在舊值);③Agent 用的註冊 token 被 disable 後自動重註冊必 401,1.0.0→1.1.0 升級文件要寫「先確認 token 仍 enabled」。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此節覆蓋上面「第 13 棒要做的」,以此為準。
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 裁示與清單。
docs/security-report/(SUMMARY+M 頁+README)全歸本棒 CM-2285;docs/features/security-scan-consolidated/README.md 歸掃描首腦 CM-2291(已派),本棒不碰。html 各自重產自己改的頁,不帶 --site-root。Z1~Z5 五張+尾巴 CM-2288 全 Done;CM-2282 兩週收口母卡 Done;CM-2019 FR-114 母卡 Done。任務清單無任何卡停在修正待驗證。commits:27f601726/4e7e2f987(尾巴)、398eea257(Z5)、887758ac7(Z3)、9cab84567(Z2)、1ccaca3cf(Z4)。
git tag -a v1.21.0 02f6808351 -m "Guidant AI 1.21.0(2026-09-28 三環境出貨)"——tag 打在三環境實跑的映像 commit,之後 25 支(含三支升級修正)進 1.21.1。feature/review+tag;合 main(merge 或 PR 自選)。FE 對應 tag 首腦未查,需要再查。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