每棒收工 append 一個 block,寫完永不改。發現舊 block 有誤 → 在新 block「推翻了什麼」欄更正。
commits(BE feature/ai-guard,皆未 push):f942667fb 討論稿定稿/31d4c2266 討論稿輪子版/f5d56065c design.md/e1fd8bffc 開卡檔/d27dd1c09 spec branch 改回/本 block 與 STATE 的 commit 見 git log Notion:CM-2293 母卡+CM-2294~2299 子需求+CM-2300~2320 子任務,28 張一次建完連號;全 Not started。棒 1(CM-2294)、棒 2(CM-2295)決策者已各開 runner 派出。 派出:棒 1、棒 2(平行)。未派:棒 3~6。
做了什麼
core/plugins/ 三支接線+三支 jedi 套件+分類容器),列 16 項資安問題,對照 OWASP LLM Top 10 2025/EU AI Act 第 50 條/2026 事件(康乃狄克法院白字注入案、Snyk PDF 信評繞過、OWASP Q1 GrafanaGhost、LiteLLM 供應鏈、Netskope 影子 AI)決策(決策者 2026-09-28 全部拍板)
jedi-ai-guard 純守門套件(仍是三處各接,設定步驟多);③ 全搬回 BE 不留容器(政府/金融客戶不接受 BE 行程直接解析惡意檔);④ 容器內 pip install gateway 頂著(金鑰仍在容器、gateway 兩份)ai_call_log(人事時地物全欄位,D5 分級存原文),不用 Langfuse 進出貨。被排除:Langfuse/Opik 進正式環境(+5 容器、不認識租戶、稽核在另一套 DB)feature/ai-guard教訓
feedback_fr_design_must_survey_open_source_first 並入 MEMORY.mdgit branch --show-current——首腦憑 session 開頭 git 快照(feature/review)判定建卡 subagent 寫的 feature/ai-guard 是錯的,改了 22 張卡 33 處;實際決策者已為本 arc 切到 feature/ai-guard,subagent 是對的。來回改兩次+刪 20 個誤追加 blockPATCH /blocks/{id}),本棒已寫過一次可抄(見對話,未入 scripts)推翻了什麼
e1fd8bffc commit message 寫「subagent 誤寫 branch 為 feature/ai-guard,已改正為 feature/review」——錯的是首腦,d27dd1c09 已改回。Notion 22 張卡已改回並刪掉誤追加的更正段(複驗 0 殘留)留給下一棒:等棒 1、2 回寫 修正待驗證 逐卡驗收;棒 2 過了派棒 3、4;棒 3 完成是第一次請決策者親手測的節點。
派工:user 直接貼派工 prompt(CM-2313→2314→2315→2316→2317 依序做,含 CM-2316 末段首腦追加三件)。
做了什麼
domain/ports.py+plugin/ 四檔)與 layer 定案、HF_TOKEN/套件發版時機等既定裁示jedi-ai-gateway 全部原始碼(domain/、app/、infra/guard/、infra/extract/sandbox_client.py、plugin/)——確認 GatewayService.complete() 七步管線、SandboxClient(remote/inprocess)都已由棒 2 做好且可用jedi-evidence-classification/docker/ 四支要動的檔(container_entrypoint.py 813 行、classifier_service.py、llm_clients.py、prompt_guard.py)與對應單元測試,確認卡片指定的「保留/刪除」函式清單與程式碼現況一致core/plugins/evidence_classification.py(697 行)、_evidence_classification_job_queue.py、_evidence_classification_runner.py、app/background_job/*.py(handler_registry/worker_loop/worker_runner)、evidence_batch_service.py 分類流程(classify() → dispatch_batch_classify() → _run_batch_body()),確認現有分類流程的完整呼叫鏈main.py RUN_MODE=worker 段、scripts/build/build_classifier_image.sh、scripts/build/build_prompt_guard_onnx.sh,確認 build 側現況In progress(照 runner 側紀律)做了什麼判斷/決定:無設計決策,純讀碼盤點。
教訓
推翻了什麼:無。
留給下一棒:直接看 STATE §3/§3.1,兩節已把「要改哪些檔、怎麼改、既有座標」寫清楚,可以省掉重新探索的步驟。CM-2298、CM-2313 的 In progress 狀態與實際「零程式碼」不一致,接手時先跟決策者說明這個落差(是讀碼被打斷,不是做一半)。
派工:首腦接手第 1 棒,逐卡驗收棒 1、2 後派棒 3、4(平行)、棒 5、棒 6;CM-2313 兩棒 runner 爆 context 後拆卡重派;開文件卡 CM-2321、補強卡 CM-2322、前端修正卡 CM-2323、拆卡 CM-2324~2326、註解收斂卡 CM-2327、新功能卡 CM-2328。
commits(皆未 push)
feature/ai-guard 自 abc33954b 後:57ffa3738 6a35e2cf3 d5d20f135 742e69892(棒 1)、6a7a37f1d 29e2ea908(CM-2321)、bd2da4d69 41c3acefc 97da10a1e(棒 2)、2d367c4bd(CM-2322)、6028d3f42 701770fdc(棒 3)、f8dfb4530(棒 4)、28a24e61e(棒 5 前段交接)、7cfc36085(CM-2320)、d1bde3f3c feae9bd3f 352874d9d ff606e27d d7e54bf1b 5af285baa(棒 5+CM-2327)feature/ai-guard 自 18b52e50 後:486c1d9e(CM-2303)、76dde3f9 fc2777b1 5eb892ca(棒 2)、2ac98195(CM-2322)、6dfe496a 3f7aeb43 c4602bb7(棒 3)、8f85e3b6 89422153(棒 4)、bd281942 ff680b73 b9207dbd(CM-2324~2326)、d1109b9e 23e35a14 bcbc77d1(CM-2314~2315)feature/ai-guard 自 50bda00 後:a385017(CM-2310 相容)、4db5b98(CM-2320)、279554e(CM-2318)、479fd3c(CM-2323)做了什麼
2026-09-28-fr122-background-jobs.sql、2026-09-28-fr122-ai-call-log.sql;STG/POC 未動決策(決策者裁)
jedi-common 從閘道核心相依移到 [gateway] extra(jedi d1109b9e)followup_classify_progress_socketio_push_not_done.md)install.sh --upgrade 實跑preload_app+installer worker 上限 8→4ai-call-log.read、唯讀列表+detail、四個明文欄位 schema 不宣告、掛系統設定區、AI_CALL_LOG_RETENTION_DAYS 整筆保留天數清理 ROOT 預設 365)教訓
AI_GATEWAY_* 三變數「程式碼不存在」刪掉那列,實際是棒 2 CM-2308 同時段才 commit;首腦當時也誤判preload_app 實測 4 worker 從各 530MB 降到 42~268MB。落地版規格建議改最低 16GB/建議 24GB推翻了什麼
留給下一棒:看 STATE §3 六點。先驗 CM-2318/2320/2323/2327,再等 CM-2319、CM-2328 回寫驗收;之後決策者親手做 design §7.1 十一條端到端驗收,過了才裁上 STG。
派工:決策者以首腦 prompt 接手;中途改口令「驗一下 .6」「幫我重啟」「你直接幫我做」「監控一下」,全程邊驗邊開卡。
commits(皆未 push)
ce49c234e(CM-2331 runner);本棒首腦只動 STATE/LOG(本 commit)d8eeb1e2(CM-2329)、0d10ca4e(CM-2330)、9bc618b0(CM-2332 未完)7c53710(CM-2328)、3e6d401(CM-2329)、efc3e58(CM-2332)9cbf9113b 63473ddb3 c8d2232dd、jedi 709e7404、FE 46dbb6a 531823a做了什麼
決策(決策者裁)
教訓
@transaction 遇外層交易沿用不新開,「最該留紀錄的失敗呼叫」正是消失的那批;小幫手有紀錄純粹因為它不拋錯,驗收時被這個假象騙過一輪推翻了什麼
留給下一棒:STATE §3 八點。先等 CM-2332/2333 回寫驗,再派 CM-2334。分類驗收要起 worker、.env 要有 AI_GATEWAY_PROMPT_GUARD_MODEL_DIR。
派工:決策者以首腦 prompt 接手;派 CM-2334(opus)、CM-2332 收尾棒、CM-2335、CM-2338(皆 sonnet)。CM-2334 那棒自行拆出 CM-2336/2337 並做完。
commits(皆未 push)
1804a778d(CM-2335 runner)、d594768cd~e3ee3efaa 七支 docs(CM-2334 討論稿、CM-2336/2337 SPEC);本棒首腦只動 STATE/LOG43e70120(CM-2332 收尾)、95b9e199(CM-2333)cf721a6(CM-2335)、9ce16d3 2a07b4a(CM-2336/2337)做了什麼
compliance.evidence_classification_runs.state 與 ai_call_log 核對決策(決策者裁)
教訓
git diff 看工作區再判斷「做到哪」推翻了什麼
留給下一棒:STATE §3 五點,第 1 點成本討論是主題;未裁清單五條在 §3 末段。
派工:決策者以首腦 prompt 接手,主題「成本討論」;後半段決策者裁「你只管成本部分」,與主線首腦(第二階段 .8/.9)平行。
commits(皆未 push)
60241a257(討論稿)、34b179818(design 落地+開卡)、d4158de59(2345)、c269d2c41(2349)、b782c0f8d(2346)、7f161b5ab(2347)、a5932f070(2348 凍結表)、ebc8a3ad2(2350)、ddfb39df1(2353);本棒首腦只動 STATE/LOG2be00daf(2344)、7c3db8b5(2346)60d2afb(2346)、a8f448c(2347)、6a34031(2350)、5f8fdf1(2348)、70046bd(2353)做了什麼
ai_call_log 實測數據(小幫手 0.0015/儀表板 0.034/分類 0.016 USD 每次)+查 LiteLLM/Bifrost 業界做法,決策者當場推翻點數制改美金制;設定放金鑰頁→手測後再裁拆成獨立頁+自有能力點決策(決策者裁):見 STATE §2 09-29 那列
教訓
lsof -iTCP:8000 查當下推翻了什麼
留給主線:出貨基線待重產(現在共三支 FR-122 migration+兩支新能力點未進 seed);用量頁 key_source 篩選小卡未開;DEV 手動修的孤兒綁定不必進 migration(STG 沒有)。
派工:CM-2351/2352(sonnet 平行)→ 收口卡 CM-2354(opus,中途裁「拿掉 presidio-anonymizer」續做)→ CM-2338(sonnet)+ CM-2355(opus,決策者放行 188 基線庫寫入)平行,首腦 Monitor 盯 Notion 狀態。
commits(皆未 push)
9001b0681(2351)、b864497a8(2352)、5f5571b82(2354)、e1e79dd5d 1382fa225(2355)、f7821c893(2338);首腦 STATE/LOG42ccdbc3(2352)、8a7ad38d e9bac936 315866cc(2354)做了什麼
決策(決策者裁)
教訓
poetry update X 對 path 套件不重讀 pyproject:要連套件名一起列(runner 踩到)推翻了什麼
留給下一棒:收 CM-2355/2338/2299 → 上 STG(188 HF_TOKEN、build 含沙箱 image、install.sh --upgrade、§7.1 8/9/10)→ 收 CM-2293 → arc 收尾(pin 還原、六支套件發版、SPEC、記憶體規格文件、memory)。design.md 三處 presidio-anonymizer 殘留併收尾。
派工:CM-2356(DB 總覽文件)、CM-2357(小幫手角色 prompt,本體 subagent)、CM-2358(ai-quota.update 授予規則,本體 subagent)、CM-2360(prompt 外置+規則目錄出貨+維護手冊)、CM-2359(六支發版+pin 還原)、CM-2361(spec 五頁+記憶體 16GB+memory)、CM-2362(version-bump 1.22.0+快照)。
commits(皆未 push)
b495fca7c(2356)、0cb673091(2358)、fa09ba4f9(2360)、9637559a2 da5e2db00(README/手冊進站,首腦)、354ba4039(2359 pin)、924c5eefb(2362 進版)、4a0a9a60c 0cf4ff5aa db195b0d9 1a4390897(2361)、e0e05fa8e(2362 快照)d73a9d21 2d78e264(2357)、a00affb1(2360)、dd4a5b14(2359 六支 bump)55d8422(2362 版號)做了什麼
prompts.yaml,並發現 design §5.5.3「規則目錄隨 image 出貨可覆寫」根本沒落地(Dockerfile/compose/installer 全沒接),一併補齊+寫客戶維護手冊決策(決策者裁)
教訓
install.sh hunk(內容對,但回寫還說「沒 add」);驗收必對 statlegacy/ 巢狀放每版整個 site,前例本身有雷,照前例做的 runner 沒錯;切版前要看 commit 檔數推翻了什麼
留給下一棒:STATE §3 五點——決策者合 main/push → 188 出包(沙箱 image 要重 build)→ STG 驗 §7.1 8/9/10 收 CM-2293 → e2e 另棒 → 快照肥大另案。
派工:CM-2363 出包卡(sonnet),兩輪回寫皆卡住。
commits(已 push main):13da8b714(push 授權 memory)、f6e3d8a7a(lock 同步+pip-audit 進 dev+requires-python<3.15)
做了什麼
決策(決策者裁):授權首腦本 arc 內 push;出包不套 STG DB
教訓
poetry.lock 在本 repo 入版控:memory feedback_jedi_package_batch_release_execution 寫「lock 是 gitignored」是舊事實,首腦照它在 CM-2359 卡上寫「lock 不 add」→ 188 poetry install 直接擋。寫卡前 git check-ignore 一秒的事沒做。該 memory 要改audit_deps.sh 進 build,但 pip-audit 只在首腦本機有;驗收「本機跑過」≠「build 機跑得過」推翻了什麼:memory「poetry.lock 是 gitignored」(錯,入版控);CM-2359 卡「lock 不 add」(錯)
留給下一棒:等 CM-2363 回寫 → 自己 ssh 188 核開包驗至少兩項 → 收卡 → 開部署卡(install.sh --upgrade 上 STG,這步要決策者放行)→ 驗 §7.1 8/9/10 → 收 CM-2293 → e2e 另棒、快照肥大另案、smoke DB 結構性問題另案。
角色:決策者改派「執行者」,自己在 188 出包不派卡。
commits(皆 push main)
e86601eb9(litellm 不編譯)、e2de14ea6(google.api_core,後被 e6109ff14 取代)、03b664980 0dc0b6fbd(stdlib 自動推導)、c196f61d1 c9775e84a 3e678856b(smoke AI 設定+閘道 YAML 資料檔)、e6109ff14(nofollow 擴到封閉集合、presidio/spaCy 附帶、en_core_web_sm 鎖進 pyproject)、d805f19f3(cffi 全 import 名扣除)、964d8a6fe(沙箱 wheel 用 venv 3.11)、5b8706b56(netrc secret)、088d2351d(compose 沙箱設定三 BE 容器共用)e877456c(stage_context PYTHON)、4b3c8f7f(Dockerfile netrc secret)、017d12cb(requirements 剔 0.0.1 pin)做了什麼
guidant_ai_smoke_1220、切 main--skip-prod-key-check;四項開包驗 188 實做決策(決策者裁):建臨時 smoke 庫;monorepo 切 main;stage_context 改 PYTHON(動套件);封包 skip PROD 鑰;「不要一直 rebuild,先停下分析」→ 第六輪起改為先整份對照再動手;bundle 從 188 直接 scp 到 190
教訓
~ 殘骸,poetry 看 lock 以為 attrs 裝著。pip check 一行就看得到,出包前置盤點該加這條RestartCount 與 log,不能信安裝總結推翻了什麼
續(21:00~21:35):決策者手測後令三件——藏 Azure OpenAI/Ollama 卡(FE 0413b6e,重出 FE image+同版號重封包 sha e266d94e…);188 清舊包/beta image/agent 舊 image/build cache(7.5GB→35GB);STG 升 1.22.0(先停 api/socketio 再 --upgrade,6 支 migration、舊 classifier 容器由 installer 換成 sandbox,8 服務健康零 Traceback,§7.1 8/10 驗過)。「租戶用不到 AI」查 ai_call_log 是金鑰當時設錯,非 bug。
續(21:40~22:45):決策者手測抓到「第二次儲存把上一次金鑰洗掉」——BE 合併只走 payload 有的供應商+整格覆寫、FE 沒改的那家不送,兩邊湊成缺席=刪除。BE 62a864e62(以既有列為底+六條測試)、FE 3826339(每家一律送)。重出 BE/FE/init,沙箱沿用(源碼無變、重建卡 deb.debian.org 20 分鐘 kill 掉),封包 sha 0f788947…;STG 與 190 先停 api 再 --upgrade --force,兩台 commit 62a864e62、全綠。
教訓:「空值=沿用」的合併規則若只走 payload 的鍵,前端一個「不送沒改的」最佳化就把它變成刪除——沿用要以既有列為底,刪除只認顯式旗標。docker builder prune -af 清 cache 後沙箱 image 要重抓 apt,Debian 鏡像慢時等於卡死;源碼沒變就不必重建。
留給下一棒:STATE §3——手測金鑰沿用+§7.1-9 後收 CM-2293;190 license/Agent 重接;189 POC 等放行;README 補 smoke 臨時庫 SOP;PROD 鑰;guidant_ai_smoke_1220 留刪待裁
續(22:55):決策者放行 POC——189 先停 api/socketio 再 --upgrade(Agent 心跳中,不停必 deadlock),主線 5 支、全綠、62a864e62。三環境同包。
中繼交接(23:00):context 滿換棒。續棒 prompt 在 STATE §9「執行者續棒」。本棒 commits 全 push;CM-2363 修正待驗證(回報 #3~#5)。
派工:接執行者續棒 prompt,pre-flight 盤點完決策者令「122 應該差不多了,可以做收尾,授權 push」。
commits:本 block 所在 commit(SUMMARY/analysis/README SOP/design §7.1/memory 三條新增+四條更新);已 push main。
做了什麼
RestartCount 全 0、/version 三台皆 62a864e62;沙箱 image 三台同一顆(58cb0cf61b25);bundle sha 0f788947 相符;190 Agent 401 迴圈(enroll token 已換)、license 未重匯scripts/build/README.md 補臨時庫 SOP;design §7.1 第 8/10 改 ✅、第 9 標未驗;FR README/features README 狀態改已出貨;memory 三條新增(Nuitka 隱性相依/installer 健康檢查盲區/缺席=沿用合併)+ push 授權失效+ lock 入版控更正決策(決策者裁):收尾;§7.1-9 未驗接受打折;push 授權本次用畢即失效
教訓
RestartCount 與沙箱 image ID 三台比對,比只看 docker ps 的 healthy 可靠(本棒查到三台沙箱同一顆,才敢寫「同包」)推翻了什麼:memory feedback_jedi_package_batch_release_execution「poetry.lock 是 gitignored」(第 4 棒已指出,本棒改檔);FR README「待上 STG 驗 8/9/10」→ 8/10 已驗、9 接受未驗
留給下一棒:無下一棒。後續各自開卡:PROD 鑰、190 license/Agent、e2e、arc-review、快照肥大、臨時庫清理。