commits:5bde525e5 收錄參考 → 227bac52a 缺口分析初稿 → 959a0c27b 不嵌 ISO → 9ae4f74bf §8 順序 → ed3f1c711 中性措辭 → 4e2f59d0a 篩選能力已在 → 82f94e3cd primer+原文 → 070540052 §9 第二輪查證。
做了:讀 COMPLYD 摘要;兩支 opus 探脈盤點框架接入機制與通知/流程/弱點/文件能力;爬 EUR-Lex 原文抽 Annex I/II;爬 COMPLYD 產品頁與三篇 blog;下載 ENISA 對照報告 69 頁看結構;查 EN 40000 進度與市面工具;實查 FE 審閱頁、BE 更新服務、套件 ap_draft 與 ao_derivation、DEV applicability 分布。
被推翻的:
教訓:決策者兩度點名「不要順著我的話走,查證後才回」。第一次順著「基準庫進去就能篩」收斂、第二次又順著「那第二步降級」收斂,都沒回頭對探脈結論。之後任何「所以是不是 X」的追問,先查再答。
未查證:ENISA SRP 有無機器介面;STG/POC 有無 ISO 資料;oscal.poams 與 compliance.poams 誰正式;規劃期標 NA 的控制項其準備期任務是否仍顯示。
commits:495fa335d STATE/LOG 建檔 → 本次 導入指南。
做了:回答「導入 CRA 幾個大項目」(五大項:框架入庫/產品側寫與風險評估/持續義務/文件產出/版本繼承);寫 docs/reference/CRA/cra-implementation-guide.md 收斂研究結果;建議開 FR 當母卡(切法見指南 §6)。
修正:Part I 條目數前文寫「13 項」,精確是條 (1) 一條+條 (2)(a)~(m) 十三條,catalog 共 31 條(非 30)。指南已用 31。
未做:沒開 FR、沒開卡、沒改 code。決策者說此棒做完即交接首腦任務。
續:37441cbea 指南初版(只寫導入段、表格前無空行→HTML 跑版)→ 5c25c2a30 HTML → 50c991484 重寫為七部自足版並重產 HTML。決策者已發首腦交接 prompt,本棒結束。
commits:本次 指南補第五部(與市面工具對照)。
做了:決策者看完指南後表示看不出「我們跟市面工具比差在哪、差的東西補在哪」,派 subagent 在指南第四部後插入新第五部「與市面工具的對照——我們差哪些、補在哪裡」:三句結論、COMPLYD 11 步分三段白話說明、逐步對照表(✅/🟡/❌)、缺口落點表(補在哪個畫面、用什麼既有機制、其他框架會不會受影響)、三份文件(Annex VII/II/V)是什麼與何時出、兩個未查清點。原第五~七部順延為第六~八部,內文引用改號。
被推翻的:第 1 棒寫「產品×版本實體全缺」→ 更正為「資訊系統盤點可當產品主檔,缺版本與專案連結」,指南大項 C/E 與順序圖同步改。
結論:完全沒有對應功能的只有三件——通報、規劃期風險評估、支援期;其餘是既有畫面加欄位或加文件範本。會動到程式的只有四處:不適用連動 bug、規劃期風險登錄入口、資訊系統版本子清單與專案連結、通報新模組。
commits:本次 新寫 cra-implementation-plan.md(+html)、STATE/LOG 更新。
決策者一日討論的結論:
重寫規劃稿原因:研究筆記(指南)內容發散、八部堆砌,PM 讀不出結論與要裁的事;六欄表在 HTML 撐爆版面。新稿第一頁即結論與待裁,表格最多五欄,不出現表名欄位名,257 行。指南保留為研究筆記。
render 方式:render_index.py 對開 FR 前的暫存資料夾不適用(資料夾名非 FR-xxx- 格式,build_meta 取 FR 編號時 IndexError),改用 render_doc.py 單頁。進 FR 資料夾後再整站 build。
commits:本次 規劃稿依七項裁示定稿、開 FR-135、搬檔、整站 build。
決策者裁示七項:
被推翻的:第 2 棒續寫的「稽核簡化列 GRC 待辦、本期一律走現有流程」改為裁示 7 的「檢查」語意(流程不變、語意寫進說明);「不做自動生威脅」細化為「畫架構圖自動生威脅留下一階段,先做依元件類型建議威脅」。
開 FR-135:登記表新增一列;開 FR 前暫存的規劃稿與 STATE/LOG 用 git mv 搬進 docs/features/FR-135-2610-cra-compliance-framework/(規劃稿當主文件,STATE/LOG 改名 handoff/FR-135-STATE.md/FR-135-LOG.md),舊單頁 html 刪除改走整站 build。docs/reference/CRA/ 研究筆記不動,只改指向新路徑的引用。
第一期三張子卡規劃:①ENISA 對照底稿+31 條建議證據草稿;②31 條 catalog 灌入 DEV+CRA 公版資源庫+第〇步(掛 FR-126 證據、產掛不上清單);③連動 bug 獨立小卡。Notion 卡未開,等決策者發令。
commits:38a1468ba 規劃稿定稿+開 FR-135+搬檔 → 本次 開卡回寫。
做了:Notion 一次建四張:母卡 CM-2675、第 1 棒 CM-2676(ENISA 對照底稿+31 條建議證據草稿)、第 2 棒 CM-2677(seed SQL 灌 DEV+CRA 公版資源庫+第〇步掛不上清單)、第 3 棒 CM-2678(不適用連動 bug)。母卡 append 子卡清單,子卡 append 母卡號。STATE/README 記卡號。
開卡前核對的事實(都進了卡):框架匯入 adapter 登記表只有 CMMC_2、Excel 匯入也走 CMMC 格式、FE 匯入頁只收 PDF → 第 2 棒走 seed SQL,形狀照套件 001-cmmc-2-catalog-seed.sql;DEV part name 慣例 statement/guidance/assessment-objective;bug 的四個錨點行號與 AO 層不同步的判斷;FR-126 證據產物位置。
未做:沒派工(等令)。第二期(資源庫第四件、資訊系統版本、側寫欄位、風險登錄頁籤)與第三期(通報、文件範本)未開卡,等第一期清單出來再切。
branch 切換(2026-10-11 晚):決策者自 feature/FR-134 HEAD(b9beaea23)開 feature/FR-135,FR-135 之後全在此 branch。四張 Notion 卡已 append branch 更正;runner prompt 同步改。
commits:0ccea4af7 branch 切 FR-135 → 3ca6884b7(2678)→ d9e45053a(2676)→ 1a7bc04ec(2677)→ 072031d97 指南更正無 AO 準備期不開工。
做了:三棒派出(2676、2678 平行;2677 等 2678)並逐張驗收:開 diff、自跑 test、自做突變測試、DEV 自查計數與 NA 快照、抽讀文件與抄錄檢查。2676 runner 忘改狀態,首腦代改。
被推翻的:指南「無 AO 時準備期同樣開一筆」——第〇步實測 0 個工作,讀碼確認是資源庫預設流程範本全空所致。
教訓:runner 的「打折說明」都寫得老實(API 直打未走瀏覽器、SBOM 非自家產品、UI 手測未做),首腦驗收照常以自己查 DB/跑 test 為準,不信自報;瀏覽器層留給決策者。
交接:context 用量高,第一期收乾淨是交接點;下一棒從 STATE「下一棒要做的」接,先等決策者瀏覽器複核與三項裁示(seed 是否隨出貨、兩個順帶 bug 是否開卡、何時開 design)。
commits(BE,全部已 push):3336f681f STATE 補段 → 0c90ccf0e 開四卡 → 848582849(2679 seed 搬套件)→ b99a2c719(2680 部分更新清空狀態)→ 5985a7647(2681 建庫回應 draft)→ f8756b608(2682 公版 CLI)→ 43b4fb938 開 2683 → 3861b182e(2683 BE 守門+can_edit)→ 4679f738b 開 2684 → 09a6cb08d(2684 守門上移+守衛測試)→ f17bba21b 開 2685 → a5a1da7d9 開 2686 → 7315b6a05(2685 第一段英文稿)→ 160c145e2 重 build HTML → 97721fb51 STATE 收不卡審稿 → 8067e38ab(2685 第二段 DEV UPDATE)→ 30124c320 pin 2.5.2。 FE(已 push):87745b0b(2683 標記唯讀)、5e183726(2686 瀏覽對話框三處)。 套件 jedi-python-package(已 push):3f2c3d2a(002/003 CRA seed)、adc54f5e(data-access.md 鏡像)、cc5c515d(seed 改英文)、3d7362fb(bump 2.5.2)。jedi-oscal-v2 2.5.2 已推 Nexus。
Notion:新開 CM-2679~2686 八張,全部「修正待驗證」;加上原第一期三張 CM-2676~2678,共十一張等決策者瀏覽器複核。母卡 CM-2675 維持 Not started。
做了什麼:
決策:
RUN_MODE=seed-public-libraries)。被排除:純 SQL 模擬 clone,因為等於第二套建庫邏輯,clone 規則一改就脫鉤;只給平台管理員升格開關,因為開箱即用會變成裝機 SOP 多一步。推理全文見 docs/analysis/2026-10-11-cra-public-resource-library-seeding.md。verify_module_frame_exists_by_uid(writable=True)+AST 守衛」。被排除:維持葉子只補三支,因為這是第五次葉子修補,無守衛仍會再漏。見 docs/analysis/2026-10-11-module-frame-ownership-guard-centralization.md。教訓:
feedback_verification_depth_by_task_scale。推翻了什麼:
留給下一棒:決策者瀏覽器複核十一張卡後改 Done;第二期從 design.md 開始,輸入是 step-zero-gap-list.md 第四節(系統層兩項:規劃頁顯示條文與建議證據、無 AO 時準備期開工;CRA 層四項),design 要把系統層與 CRA 層分開寫。DEV 三個 CMMC 版本原始 PDF 遺失(兩個 MinIO 無 key、一個指向 192.168.50.123 agent)屬測資;瀏覽對話框「有檔案欄位但檔不見」的第三態未處理,不擋出貨,待裁。
commits:68d07ff53 開 CM-2687+STATE 待裁改版 → a3446972c 第二期討論稿 phase2-discussion.md+重 build。
做了:接手盤點後決策者裁三項(第二期範圍合併、design 拆兩份、表單設定最小版邊界);瀏覽對話框第三態裁修(開 CM-2687,套件 500→404+FE 第三態,決策者已派)、DEV CMMC PDF 遺失裁不管。四條 opus 探脈平行(規劃頁顯示鏈/無 AO 開工鏈/表單設定與 SSP 擴充/CRA 內容層)→ opus 寫討論稿 → 首腦補查三件(451=SYSTEM 公版掛專案 1398、449=租戶測資掛 1397;STG/POC 無 CRA;舊套程序書掛法 0 筆)→ 決策者逐項裁 D1~D14。
決策(全文見 STATE「第二期裁示」):D9 風險評估走新表、欄位對齊 OSCAL 風險物件、掛專案 SSP、與改善計畫分開;D13 通報窗口與製造商是 SSP Party 角色、政策與通告是 link,不動資訊系統主檔;D6 AO 拆分不等顧問、分析模式自產範本;D5 刪 451 重建;D7 收舊套;D11 刪舊 clone 端點;其餘照討論稿建議。
被推翻的:
教訓:決策者問「這是什麼、對什麼設風險、COMPLYD 怎麼做」時,要回到法規與競品講清楚物件本質,再談存哪;先講存哪會讓他無從判斷。
留給下一棒:design-platform.md/design-cra.md 落地(本棒派中)→ 抽查 → 開 P2-A~D 卡。CM-2687 runner 進行中(pyproject path dependency 是它開的,不碰)。
commits(BE):304c17dd7 design-platform(session 撰)→ 5b23f2477 design-cra(session 撰)→ d722e9830 STATE 登記+D4/D13 落地更正 → e4b43bf17 開第一波四卡 → e31b4a5ee 開第二波四卡 → 四棒 runner:d75b6f498(A1 BE)、0a915e658(F1)、48d037741(C1 md)、5e621248f(B1)。FE c0eb6418(A1)。套件 d91974f1(C1 seed 004、2.5.3 未發版)。
做了:兩份 design 由 user 另開 session 撰寫(subagent 版 50 分鐘零落檔被砍);首腦抽查通過並記兩處落地更正(D4 走 phase=seed migration 不改 04 檢查;D13 角色掛 party props 不寫 responsible_parties,因建專案 party uuid 重產)。開卡員 subagent 15 分鐘零產出被砍,首腦自建第一波四卡(CM-2688~2691,161 blocks)與第二波四卡(CM-2692~2695,146 blocks)。第一波四棒 user 派出,23:42 全部回寫「修正待驗證」。首腦 DEV 複核:B1 範本 SYSTEM|1|1;F1 欄在、暫名庫 452 軟刪;C1 AO 25 筆冪等;A1 回傳帶兩欄;守衛 372 過 2 紅,兩紅在基線 e31b4a5ee 已紅(permission_matrix_three_way、route_guard_inventory),非本波造成。
決策:第二期總圖(三期+收口、四波次)寫進 STATE;D9 風險評估走新表(排除借 AR/POA&M/props);D13 走 OSCAL Party+link。
教訓:
推翻了什麼:討論稿 D4「改 04-seed-core 檢查放行」→ design-platform P1 走 phase=seed migration(fr093-4d 先例、README 規範)。討論稿 D13「第二期 props、第三期搬主檔」→ 決策者點破同一筆資料存兩處,改 Party/link 一次做對。C1 卡預估 AO 21 → 實拆 25(I.2.d、I.2.l、II.2 各多一,理由在卡)。
留給下一棒:決策者瀏覽器驗第一波四卡;派第二波(B2 依賴 B1 已到位、F2 依賴 F1 已到位、V1/C2 無依賴);F1 主線 migration 一支「出貨基線待重產」要首腦排;FE error-code.json 兩語系補 MODULE_FRAME_400013(F2 開端點時一起);專案 1397 的 SSP 3919 catalog 副本無 guidance 段落(較早建的副本),要 1397 也顯示建議證據需重建或補資料,屬決策者裁示;兩個基線既有紅燈(permission matrix、route guard inventory GET /survey)另開小卡。
commits:410e8aada seed 補頻率 annually(隨後整檔被刪,留作紀錄)→ 本次 拔機制+STATE/LOG。
做了:決策者驗 A1 找不到專案 1398(CM-2682 runner 驗完軟刪);首腦誤把 status 改回 in_progress 後發現 deleted_at 才是關鍵,撤回。決策者改口「資源庫不該有公版」:DEV 兩個 CRA 專案(1397、1398)與三本 CRA 資源庫(449、451、452)軟刪;拔 seed-public-libraries 整條(main.py 入口、CLI 檔、installer/public_libraries.sh、install.sh 兩處呼叫、build_bundle 三行、init README 列、domain-capabilities 改為裁撤註記、analysis 檔頭加裁撤)。守衛測試通過(基線兩紅照舊)。
決策:公版資源庫不隨出貨建,顧問自建租戶版;F4 改「create_resource_library 建庫時依框架 code 帶預設」(表單設定、Annex II 預設文字、Party 角色空殼、文件範本預掛同機制);C4 取消;C3 併 F4。
推翻了什麼:第一期 CM-2682「CRA 公版 SYSTEM 化、install.sh 跑 seed」(決策者原裁「開箱即用」,今改口「資源庫是顧問的事」);討論稿 D5;design-cra §6.1 seed 段、§6.8、§6.9、拆分 F4/C3/C4 待改版。CM-2683/2684 的 SYSTEM 唯讀守門與歸屬守門保留(分享庫仍用)。
教訓:決策者說「我誤會了」的那一刻,前一期的裁示要主動盤出哪些跟著失效(本次首腦有列表、決策者點頭後才拔),不要只拔眼前那條。順帶小坑:資源庫 frequency 沒給會落 none,FE 沒這個 i18n key 直接畫 key 字串;create_resource_library 的呼叫端都要給頻率,建庫預設機制(F4)要帶。
留給下一棒:決策者自建 CRA 資源庫與專案後驗第一波;派第二波(B2/F2/V1/C2 卡內容不受本次影響;C2 卡提到「資源庫範本 449 預掛」那條手測改用新建的資源庫);開第三波前先派 session 改 design-cra 三段與拆分表;F1 的主線 migration 出貨基線待重產仍在。
commits:2be305c0c 拔公版機制 → 本次 STATE/LOG。Notion:開 CM-2696(C1b)。
做了:決策者驗 A1 時三連問:建議證據哪來的(AI 依 ENISA 子要求詮釋,非官方;英文介面標 Guidance 是 OSCAL 段落型別名);為何從 obj.3 起(DB 排序號副作用,與畫面 [a][b] 對不上);是否該放 AO 底下(對,做事的人看 AO)→ 開 C1b。再問「交什麼檔」→ 首腦提三段式(Deliverable/Must show/In Guidant AI)→ 決策者點破「很多證據是專案其他頁做完就有的,列出來要人交怪怪的」→ 首腦提「AO 證據來源三類」設計,①類系統帶入不要人上傳;決策者再問 [a][d] 是否官方要求 → 查原文:[a] Annex I Part I (2) 明指 Art.13(2) 風險評估;[d] 依 Art.13(3)(7),repo 內無一手原文(只抓了 Annex),AO 稿作者有標註。決策者裁「AO 很大機會再調,先掃矛盾+出中英對照表」→ 派分析員(含抓 Article 13/14 原文進 reference)。C1b 暫緩派。
決策:C1b 開卡但等掃描;AO 證據來源機制列待裁設計題;Article 13 原文補進 reference。
教訓:第一期「AO 第一版不寫、第〇步後再拆」是對的,但拆的時候只看 ENISA 子要求、沒把「誰產生這個證據」想進去,導致建議證據把系統內已有的資料也寫成要人交。設計 AO 時要先問「這個證據系統知不知道」。另:內部標記([obj.N]、[beyond ENISA…])不該進 seed prose,畫面會直接露出。
留給下一棒:分析員回來 → 決策者裁 AO 調整 → 改 C1b 卡範圍 → 派;第二波 B2/F2/V1/C2 不受影響可派;AO 證據來源機制排第三波前補 design。
commits:runner:a348d7c92(B2)、021911452(F2)、7c8ed0f71+FE 9dfa9e35+套件 1ae56f9f(V1)、ccd5b2eae+FE ac563518+套件 6af7b957+test 06d18cb(C2);首腦:fffbb45b4 Article 13/14 原文 → 本次 權限矩陣重產+STATE/LOG。
做了:四棒 11:34~11:55 全回寫。首腦 DEV 複核:B2 專案 1400 控制項層 24 工作對 24 副本;F2 兩 route 註冊、451 還原 NULL;V1 表 14 欄+RLS FORCE+4 policy+cm_app 四權;C2 locator varchar(500)。守衛 3 紅:兩紅基線既有,第三紅 test_matrix_matches_vcan_mount_points 是 V1 新元件的 v-can 掛點沒進權限矩陣,首腦重跑 scripts/deliverables/gen_permission_matrix.py 轉綠(V1 卡沒寫這步,runner 不知道;下次開有 v-can 的 FE 卡要帶)。
runner 偏離與打折(都老實寫在卡上):F2 不做範本 SSP 反查(走資源庫 uid 那支);C2 POST /module-frame/clone 回 400 非 404(路徑落到 POST /module-frame/<uid> stub)、資源庫範本頁掛檔對話框沒加出處輸入框、E2E SR-02.5/02.6 改了未實跑;V1 瀏覽器未手測;C2 的 FE api.js 刪常數被 V1 的 commit 帶走(內容對,commit 混棒)。
教訓:平行 runner 共用 FE 工作樹,C2 改的 api.js 三行被 V1 一起 commit——「只 add 自己的檔」在同一檔多棒改時擋不住,要改成「只 stage 自己的 hunk」(git add -p),卡的紀律段要寫明。FE 新增 v-can 掛點必重產權限矩陣,要進卡模板的 FE 紀律段。
留給下一棒:決策者瀏覽器驗八張;AO 掃描(決策者 session 跑中)回來裁 AO 調整→改 C1b→派;小卡待開:資源庫範本頁掛檔對話框加出處輸入框、/survey 兩支路由登記守門(基線紅)、JobExecutionDrawer 權限名對不上(基線紅);兩支主線 migration(F1、C2)出貨基線待重產;三支套件待發版(jedi-oscal-v2 2.5.3、jedi-asset 1.2.4、jedi-compliance-audit 1.3.6)與 pin 還原;F4 設計要加「欄位→控制項/AO 對應」(evidence_for)第一層。
commits:本次 STATE/LOG。Notion:CM-2695 改「修正後仍有問題」+退回說明;開 CM-2697(C2b)。DEV:專案 1400(B2 runner 以 API 建、首輪未綁稽核流程)軟刪;BE 重啟。
做了:決策者驗第二波看到「§章節;SR 編號」輸入框看不懂 → 首腦解釋是程序書對應的出處欄 → 決策者點破:程序書是公司 SOP,掛去控制項證明「有規定」,不需要指章節;證據才是「證明達標的附件」,掛在工作底下;兩者概念差很多,加出處會混掉 → 裁拿掉。首腦查碼確認兩條路(/ssp/<uid>/document-pool vs /job-evidence)完全分離,C2 動的是程序書那條,第〇步缺口(FR-126 矩陣掛整份指不到節)實際是證據那條的問題,第〇步實測時因規劃頁只有程序書入口能掛檔而記錯層。
決策:locator 從程序書對應拔除(C2b);C2 收舊路部分保留;證據是否加出處另案。
推翻了什麼:討論稿 D7「加 locator」與 design-cra §6.6;第〇步 gap list 第 4 項「證據指向檔內某段」的落點(寫在程序書 mappings 是錯的,應在 job evidence);C2 卡與 C2 實作。
教訓:
reference_document_mappings(因為探脈 D 查的是那張表),沒回頭問「第〇步掛的那份檔在系統語意上是什麼」。開卡前要確認缺口落在哪個概念層,不是落在哪張表。留給下一棒:派 C2b(CM-2697);決策者驗 B2/V1 用自建新專案;AO 掃描結果回來裁;F3/F4 開卡時把「欄位→控制項/AO 對應」第一層與「規劃期能否先放證據」兩點帶進設計討論。
commits:runner:53155f6c0+套件 e297e3e5(B3)、d3b0eaaad+FE 7b8cb40e(F3)、ae948be1c+FE 136d986c(F4)、a6cef11f3+FE 63c5782b(R1-a)、3bcb1fe51+FE ef35c92f+套件 bdabc365(C2b)。首腦:9a6b721c0 C2b 複核、31ab36026 六卡開齊 → 本次。
做了:決策者裁「全開完、先往前衝」→ 六卡一次開(B3/F3/F4/R1-a/R1-b/C3,C4 取消);派前補抽查發現 F4 卡引用的 design §6.1 仍寫 seed CLI(已刪),append 澄清。五棒派出,C2b 先回(決策者裁不驗直接 Done),其餘四棒 13:00 前收齊,首腦 DEV 複核全過(F4 新庫 454 22 欄 2 party、R1 表 RLS、B3 方法與套件 1.3.7、F3 與 R1-a 的 SspTabPanel 已合流)。守衛 2 紅皆基線。
AO 掃描(決策者 session 跑,桌面三檔):首腦逐條對 Annex I/II 與 Art.13/14 原文審核報告:方向對(I.1 三個 AO 法源在 Art.13;7 條再拆各件事原文可證;支援期 5 年/年月/10 年保存;Annex II 語言與保存);四處異議(N-1[a] 不該把「預期使用期間」當文件項目;I.2.l[b] 紀錄防竄改建議留 ENISA 依據不刪;II.6 不拆(聯絡地址是分享措施的例子非並列);N-4 通報先當檢查項功能第三期);N-3 第三方盡職建議併 II.1/II.2 不獨立。調整後 34 條、約 48 AO。決策者尚未裁 A(開 Art.13/14 群組)與 B(拆 6 條),等裁後改 C1b。
決策:R1 風險評估維持純表單不做威脅清單(我們非公信力單位;查證 COMPLYD 也不出清單,只說方法不限);threat_ids 預留欄改為畫面上「依據標準」自由文字欄,顧問自標 ETSI EN 303 645/IEC 62443-4-2/CAPEC 條號(R1-a 已 commit 未吃到,併 R1-b)。COMPLYD 真正自動化的是「風險→推導要求與措施」,列 GRC 待辦。
決策者點出的設計洞:Article 13 的風險評估/支援期/通報本來就是我們系統要「幫客戶做出來」的功能,證據全是①系統內產生;新群組若開成普通控制項會變「請上傳你在系統裡填的」。結論:新群組要配「AO 證據來源機制」(AO 屬性指向系統物件、規劃頁與判定頁依屬性切顯示)一起才活得起來;機制做好後 31 條裡 16 點①類證據同樣受益。
教訓:首腦開卡後要用首腦抽查標準再過一遍才派(F4 卡引用已失效的 design 段,是決策者問「有檢查過嗎」才補查到)。分析員報告不能只轉述,要對原文逐條核再給建議(這次核出四處異議)。
留給下一棒:決策者裁 A/B → 改 C1b 範圍派出;開「AO 證據來源機制」卡(第二期尾或第三期初);派 R1-b(含依據欄)、C3;三支主線 migration(F1、C2 已拔、R1-a)出貨基線待重產(F4 是 seed 不需);四支套件待發版與 pin 還原(jedi-oscal-v2 2.5.3、jedi-asset 1.2.4、jedi-compliance-audit 1.3.7、jedi-file-upload 1.3.6);design-cra §6.1/6.8/6.9 與拆分表改版(收口派);DEV 測資:454/455 可刪、1399 受評標的有 F3 測試值、ssp_risks 一筆 API 測試資料。
commits(首腦,BE):0f7cd5d50 R1-b 重做複核 → 99d6f933c C1b 複核 → cbdd8402a skill 雛形規則 → 29230d649 規範「選單進 system_menus」 → 61e3a7455 開 E1/D1/P0 → 3d094945a D1/P0 複核 → 8d49a5404/bca8c8c81/d233457b1 第三期雛形審稿與通報裁示 → 本次 E1 複核+收棒。runner:C1b 16a61ba16+FE 089a82df+套件 6ab5c23f/c59087e6;R1-b 重做 894829e1c+FE 1f0a4ade;D1 85d80293d;P0 202e61871;E1 aba1c76e9+FE 00793743+套件 a76fd859。
做了:第二期 16 張程式卡(A1 B1 B2 B3 F1 F2 F3 F4 V1 R1-a R1-b C1 C1b C2b C3 E1)+D1 文件卡全部「修正待驗證」,每張首腦 DEV 複核(計數、RLS、冪等、grep 殘留)。C2 的 locator 退回由 C2b 拔除(Done)。R1-b 第一版退回(三個文字框→下拉+選項進 system_menus)。P0 第三期四畫面雛形決策者審完:通報改「獨立整數號 FR 模組、MVP 先做、多家只預留」,弱點處理/資訊系統盤點/三份文件 OK。
決策:AO 調整照掃描報告+首腦四處修正(開 Articles 13/14 群組三條、拆 6 條、II.6 不拆、I.2.l[b] 留)→ 框架 4 群 34 條 49 AO;風險評估不做威脅清單、依據標準下拉從 system_menus 讀;新規範「下拉選項一律進 system_menus」;新流程「討論稿必附雛形、卡排序以何時看得到畫面為準」;通報模組 MVP=母卡 D5 範圍,多家(多法規×多對象×多租戶)只留資料模型位子。
推翻了什麼:C2 locator(程序書≠證據);R1-b 自由文字依據欄;design-cra §6.1 seed 段/§6.9 重建公版/C4;C3 卡「13 條」實為 15;首腦開 E1 卡時寫「隱藏上傳入口」未考慮準備期任務仍會產(runner 點出,列待裁)。
教訓:
留給下一棒(建議換 session,拆兩個首腦):
改裁:法規通報不開獨立模組(FR-136),縮回 FR-135 第三期,做成 CRA 專案 SSP 的「通報案件」頁籤(照 R1 風險評估頁籤切法)。範圍見 STATE 總圖第三期「通報案件頁籤(原 FR-136 縮回)」那列,開卡時排第一張。
理由:實際需求比 COMPLYD 還小(COMPLYD 的通報只是產品版本下的 Report 陣列,放 Lifecycle 最後一步);獨立模組的成本八成是為多法規/多對象/多租戶預留付的,現在用不到。
推翻了什麼:第 4 棒收棒的「通報改獨立整數號 FR 模組、MVP 先做、多家只預留」與「CRA 第三期等通報 FR 開完再排」。
FR-136 探脈結論的去處:寫在 CM-2707 卡上(套件切法、FE 入口登記、寄信與排程、反查專案、E1 加 reporting 型改點),日後真要開獨立模組從那張卡與 FR-136-2610-regulatory-incident-reporting/draft-requirement.md 起步。
commits(BE,首腦):45e34b755 E1 裁 B 開 E2 → b14c542a3 第三期裁示 → cba348e82 功能補齊範圍 → 91a9b64f6 FR-137 母卡 → df40169a9 X1/S1 複核 → a8341d371 繁中版框架(首腦自做:產生器+SQL+Excel)→ 本次 STATE/LOG。runner:E2 d0561e395;FR-136 縮回紀錄 1340342c9;第三期討論稿 e3ed5ce76 與縮稿 65ec44643;X1 93308bc44+FE 7491f256;S1 FE bdf73218;CM-2718 57e8a3a9c+26d28402f+FE e49900b3;CM-2719 d90b951a8+FE f1126b02;範例專案 9d4fba9f5;FR-137 探脈 e33570d7f、討論稿+雛形 8f7d3f98c/06853e47c/1d73da8ea、design a27ed7c07/daf64804b/559843eef(後三者由另一 session 與決策者直接推進)。FE 導航 UI 六個 commit 首腦自做(0cee1dfc~75257fd5)。
做了:E1 待裁收掉(B);第三期從五卡縮成 X1/S1 兩卡落地;通報三度改定位(獨立 FR-136 → 縮回第三期頁籤 → 不做、只留掃描門檻通知紀錄);FR-137 從 PM 一句話到 design 定案與五張實作卡;繁中版框架(同框架第二版本,不另開 code);Guidant AI 範例專案 1404;受評標的折疊與建議威脅兩張體驗卡;六個導航跑版修正。
決策:週期設在任務不在 AO;自動執行只限掃描類;通知預設執行人、掃描類多一個門檻額外對象;門檻只在新出現時發;問卷重開空白;FR-137 沿用 feature/FR-135;弱點處理狀態轉 FR-134;CRA 自跑等功能齊再談;CM-2716 先不修。
推翻了什麼:第 4 棒「通報獨立整數號 FR」(兩度改);第 4 棒 STATE「E1 12 個 AO」實為 8;探脈「SBOM 無沿用上次源碼」(畫面本來就有);W1 鍵 match_key(含版本,應 fingerprint)。
教訓:
.truncate 全站空殼、徽章被壓扁),中文測資要早上。留給下一棒:見 STATE「下一棒要做的」五項。接手 prompt 的自檢題:①為什麼繁中版做成同框架第二版本而不是新框架 ②E2 為什麼只跳 only=true 不跳混合型 ③FR-137 週期為什麼設在任務不設在 AO ④通報最後為什麼只剩「掃描門檻通知紀錄」。
commits(BE):STATE b5b41d73e;③ e985f1a4f;⑤ c6539f5be;本次 STATE/LOG。runner:① 31af6b825/FE 44c46889/套件 343071b5;② f7189261f/FE bf2ee9d6;④ 2d21bcc11/FE 93af9705/套件 de7fcfa8;小卡 2727 facbf8cde/套件 8825fe9a、2728 c588043a7、2729 b4127dedd/FE 0e3d2cf0。首腦 FE:③ 12837d7a、⑤ 1978ef74。
做了:派 ①→(②+④ 平行)→ 首腦直做 ③→⑤;開三張 FR-135 收口小卡並派出收齊;每卡回來查 DEV 不信自報。
決策(決策者):runner 無人可派、subagent 不穩 → ③⑤ 由首腦本體直做(特例,不改角色鐵則);FR-137 ②~⑤ 驗證做基本手測+守衛即可,細測留母卡收口;core/scheduler.py 12 支 job 單函式要重構(FR-137 收口後另開卡)。
推翻了什麼:
workflow_templates 數到 1177 筆「完整稽核流程」以為是租戶範本,實為每輪快照;真正範本在 flow_templates 且公版早是 SYSTEM,runner 把卡縮成「填預設欄」。教訓:開卡前查表要先分清主表與快照表。create_job(ao_uid):覆核輪的 AO 仍指第一輪範本,會把下一期生到錯的輪,改從源任務列複製。教訓:
python -I 隔離模式會讓 load_dotenv 前的 config 讀不到 .env,手動跑 service 腳本要先在 shell 匯出 .env。留給下一棒:決策者驗 FR-137 五卡+三張小卡+FR-135 約 33 張;收口清單見 STATE(基線重產 16 支、套件發版六支、push 四 repo、DEV 測資清理、design §6.4 更正、scheduler 重構卡、SPEC/手冊/e2e/arc-review/進版)。
commits(未 push):CM-2730 BE a33fc429d;CM-2731 BE b2c4d1398 FE cc3b8649;CM-2732 BE 738ae83fd FE b21530d3 套件 800d1ec3;CM-2733 BE c15090511 FE 42187784;CM-2734 BE 5b7b5ec94 FE 4cb799b7;CM-2735 BE 56e34d063 FE 3a910d51;CM-2736 BE 7fe92338e+c4bd5cd01 FE 1d27bbf6 套件 524f95d9;組改名(無卡)BE 8b3d2d112 FE 53d4d820。首腦直做:排程每 5 分鐘+鏈尾修正 BE 051907388、purge_projects BE d4eb43d13、任務抽屜 UI FE 1e2c6ab7~3f635c35。 Notion:CM-2730~2736 開卡並全部回寫「修正待驗證」;2732、2734 決策者已驗。 做了什麼:
task_period_clone_service 與 job_period_route。ext:cra-advisories(2736),首腦 DEV 實匯六份 docx 核過;1404 SSP 3938 的 advisories link 手動清。8b3d2d112。 決策:next_due_at 被靜默清空、沒有 log。先補了鏈尾修正(051907388),最後整條路刪掉才根治——資料模型錯時修症狀只會一再冒新坑。commits(未 push):BE c4bd5cd01(繁中 catalog 源頭去 advisories)、8b3d2d112(組改名+組層 help)、0ce092b42/36709597a/e2e311017/e3d5cbadb/d2780861a(FR-138);FE 53d4d820、82b31a8c、c6bf68f3、bbd23b89。 Notion:開 CM-2737(範本層風險評估),未派,派工 prompt 已交決策者。 做了什麼:陪決策者填 460 範本的受評標的、負責單位、責任人員、系統元件(九容器)、程序書池(五份中文程序書 1.0 定版並掛 16 個控制項);五份程序書與 SECURITY.md 正本進 docs/features/FR-138-.../docs/;FR-138 README 收 18 項填表依據。 決策:見 FR-138 README 決策表(default 分級、整包一個版號、只用 email 通報、SECURITY.md/DoC PDF 隨貨、承諾時程寫區間、通告編號 GAI-SA、支援期按主版本系列)。 回 FR-135 修的:party 預建空殼名稱改不了(自然鍵鎖);繁中資源庫帶英文程序書骨架;範本層無風險評估(CM-2737)。 給 135 首腦:CM-2737 是這個 session 開的卡,請納入第 7 棒的卡表監看、驗收;FR-138 是內容層 FR,框架缺陷仍回 FR-135。
commits(未 push):BE c1af54d69(五支 pin 升版+lock);monorepo 971275ee(flow-engine 1.4.3、source-scan 0.1.1 bump+凍結簽名測試補週期七欄)。Nexus 已推:file-upload 1.3.6、asset 1.2.4、compliance-audit 1.3.7、flow-engine 1.4.3、source-scan 0.1.1(oscal-v2 2.5.4 由 FR-138 棒先發)。 Notion:CM-2742 兩段回寫(查證+修法草案;發版結果),狀態未改(修法仍等裁)。CM-2738 派工 prompt 已給決策者。 做了什麼:
311b155e4)、CM-2744(基線重產 8 支,00427ac88,備份 guidant_ai_baseline_20261014_1754_before_CM-2744.dump)。首腦驗收:2743 檔案與草案逐行同;2744 188 schema_migrations 多 8、02 零刪除、99 多 8、04 多路由兩列;自起乾淨庫用 HEAD 產物 init+migrate 兩輪 rc=0、主線待套 33→25、兩本 CRA 各 5/40/65。gate(a) 等價 grep 對 fr031 兩支(底線檔名)誤報,非本棒問題。FR-135 收斂完成,母卡與 SPEC 等令。commits(未 push):套件 15099ba0(seed 014);BE 本 commit(內容來源、產生器、翻譯、md、文件)。 做了什麼:照卡上拆法把 17 條各拆 1~3 個 AO,原有建議證據逐筆搬到對應 AO 不重寫;A2.2、A2.4 原本一筆證據涵蓋兩件事,拆成每個 AO 各自一筆。產生器加 build_seed_014(),預設只產 014,005/006 要明給路徑才重產。只套本機 DEV,跑兩次確認冪等。 決策:法條只要求一件事的四條(A2.3、A2.5、A2.6、A2.9)各設一個 AO,不再有控制項層判定。 教訓:卡上寫「49+33=82」,實際 DEV 套前是 65 個 AO(第 7、8 棒後的延伸控制項已到 65),套後 98。數量斷言開卡前要用 DEV 實數,不要沿用文件舊值。 推翻了什麼:design-cra §6.7「只要求一件事的不設 AO」與「CRA.II.6 不拆」——現況改成每條至少一個 AO。 留給下一棒:決策者刪除 DEV 既有 CRA 專案與資源庫後重建、手測;套件發版另令;SPEC 未動(spec-site 沒有寫 CRA AO 數)。
commits(未 push):套件 seed 015;BE 本 commit(內容來源、產生器、翻譯、md、文件)。 做了什麼:新增 ANNEX-VII 群組(排序 4),CRA.A7.1~A7.8 對附件七第 1~8 點共 15 個 AO,中英文齊全;第十三條兩群排序改 5、6;ART.13.TD [a] 改成只驗上市前備妥、[b] 改成驗編排與語言,ART.13.REC [b] 拿掉應要求提供 SBOM。內容放新檔 scripts/cra_ao_content_annex7.py;產生器加 build_seed_015(),預設只產 015,014 改成要明給路徑。DEV 套兩次確認冪等,建一個資源庫驗證新群組與中文完整帶入後已刪。 決策:決策者 2026-10-18 裁照「做法一」:附件七獨立成群,附件群在前、條文群在後。不把第十三、十四條改成附件分群,因為第十四條通報、保存紀錄、矯正召回沒有對應附件。附件七 AO 只驗「文件有這一節且與系統一致」,證據指回系統或其他控制項,避免客戶重複上傳。 教訓:006 曾把 TD [b] 標成「證據來源=適用判定、純系統內」,改句成上傳後若不剝掉屬性,畫面會藏上傳區。改既有 AO 的證據形狀時,要一併重算或剝掉 evidence-source 屬性。另外 source .env 會把 shell 的 PATH 弄壞(.env 有一行被當指令執行),讀 DB 密碼改用 grep 單鍵。 推翻了什麼:design-cra §6.7 原寫「TD [a] 驗涵蓋附件七 1~7 點」「REC [b] 含 SBOM」,現況改由附件七群組承接。附件七技術文件匯出範本本來就照第 1~8 點分節,不用改。 留給下一棒:決策者刪除 DEV 資源庫 477「CRA」與其專案後重建、手測;套件 2.6.0 發版另令(含 014、015);SPEC 未動。
commits(未 push):5c922a585 控制項平面清單依群組排序;e365a9912 樣板控制項文字跟著 locale。 做了什麼:用系統「依框架版本下載空白樣板」產中英兩份,填入 Guidant AI 自評範例(48 條、113 AO 全填,實作 46/部分 31/規劃 28/不適用 8),放決策者桌面。兩份都用系統 Excel 解析器驗過:無阻斷錯誤、48 條 113 AO 狀態與現況全讀到。資源庫 477 依決策者指示不動。 順手修的兩個既有 bug:① catalog 控制項 sort_order 是群組內排序,_build_catalog_tree 的平面清單沒依群組展開,框架版本樣板各群第 N 條交錯(CRA 群多才露出);② 三支樣板端點的 locale 只用在欄位標題,控制項與 AO 文字吃介面語言,中文介面下載英文樣板拿到中文控制項。 教訓:說明頁第 1 列 B 欄是匯入讀的樣板版本,在樣板加說明只能往下接,不能插列。樣板自己的下拉角色值(系統所有者等)會被自己的驗證器報非阻斷警告 ROLE_NOT_BILLOWS_PARTICIPANT,屬既有小毛病,未處理。 留給下一棒:範例實際匯入一次(建 CRA 資源庫後「批次維護 → 匯入現況資料」)由決策者手測;CRA 擴充欄位、製造商角色、風險評估、版本表 Excel 收不到,範例寫在範圍描述供對照。
做了什麼:拿掉 prep_job_generation_service 對 evidence-source-only=true 的跳過,每條 AO 都產任務;測試檔改名 test_prep_job_every_ao_gets_task.py,三條「不產」改斷言「照產」。DEV 專案 1590(第 1 輪 1206)補產 18 個任務,113 條 AO 各一個、無重複。決策者的 Guidant AI CRA SSP Excel 補上這 18 條的任務三欄(內容是「確認系統資料已填好」),重新匯入即覆寫。 決策:決策者裁示「所有 AO 下都要預設有任務」(FR-147 已裁「每條 AO 固定一個預設任務」),E2(CM-2708)的跳過與之衝突且一直沒改。evidence-source-only 保留,只管規劃頁藏上傳區。 教訓:一次性補產腳本要以真實使用者身分跑:create_app(enable_scheduler=False) → resolve_identity(get_jwt(), user_service) → set_user_context;只呼叫 verify_jwt_in_request() 不會建 RLS 身分(查詢靜默回 0),tenant_context 是機器身分、沒有組織路徑,寫 RLS 表會被擋。補產走正規 generate 並把 AO 清單過濾成「還沒有任務的」,同控制項已有任務的 AO 才不會重複。 推翻了什麼:design-cra §6.11「only=true 不產收證據任務」。 留給下一棒:其他已啟動的 CRA 專案同樣缺這類任務,要逐專案補;規劃頁「收證據任務區塊要不要藏」的舊待裁隨之失效。
做了什麼:FE 拿掉規劃頁依 evidence_source.only 藏參考程序書與上傳區的兩個條件,面板文案改「到該頁補齊,完成任務時上傳匯出或截圖」;design-cra、產生器說明、內容來源註解同步改現況。Guidant AI SSP Excel 的 18 條任務指南加上傳步驟。 決策:決策者裁「全部統一,一律有任務,之後做機制把系統資料產成文件塞進來」。evidence-source-only 只剩面板選文案。 留給下一棒:「系統資料自動產成文件掛進任務證據」的機制未開卡。
做了什麼:從 Excel 新建資源庫改以 update 模式寫入範本 SSP,寫入後移除被 Excel 同角色資料取代的「(to be filled)」參與方空殼(新檔 excel_import_placeholder_cleanup.py,判斷沿用 ao_evidence_source.is_party_placeholder)。DEV 實跑:決策者的 Guidant AI Excel 新建成功,空殼刪 2、任務說明 113、鈺衡與空殼殘留 0,驗證庫已用 purge_resource_libraries 刪除。 根因:建庫時框架預設(CRA)先寫範本 SSP,接著以 create 模式匯入,套件判定「已有 body」丟錯 → 412「重複匯入尚未開放」。只有帶框架預設的框架(目前只有 CRA)會撞,CMMC 正常。 教訓:Excel 匯入到既有資源庫是 update 模式,「只增不刪」——清單型資料(單位、人員、元件、設備)不會被取代。換一套內容要刪庫重建,不能靠重匯。 留給下一棒:purge_resource_libraries 不清 oscal.ssp_excel_parse_jobs(source_uid 字串、無 FK),DEV 留 73~77 五筆舊紀錄與其上傳檔;要清需連物件儲存一起處理,未做。
commits(未 push):BE 515505433 purge_projects 連每條 AO 一套的準備期流程一起刪;623e56e81 從 Excel 新建 CRA 修正;本 commit(STATE、LOG、兩頁 SPEC、memory)。FE 87b29a78;套件 92c3ae08。 做了什麼:決策者刪掉的 CRA 專案 1590 用 compliance.purge_projects 清掉時發現它漏了每條 AO 各自的準備期流程(只認輪次主流程),補 migration 讓 _pp_wfe 也收 workflow_execution_control_mapping 的流程,DEV 已套。資源庫 482 用 purge_resource_libraries 清乾淨後由決策者重建。Guidant AI CRA SSP Excel 定稿於 ~/Downloads/ssp_template_CRA - 2024_2847_GuidantAI.xlsx(48 條、113 AO、113 任務,鈺衡範例殘留 0;原檔備份同目錄「原始鈺衡範例備份」)。SPEC 補 project-planning.md 坑 17(每條 AO 都有任務、證據來源只是提示)與 module-frame-import.md 坑 13(新建時範本不是空的)。 決策:purge 修正屬 phase=active 主線 migration,出貨基線待重產(決策者裁示,未做)。 教訓:維運刪除函式只認「輪次主流程」,FR-147 改成每條 AO 一套流程後就漏刪;新增「掛在輪次底下的東西」時要回頭看三支 purge 函式有沒有收到。 留給下一棒:見 STATE「5. 2026-10-19 待接」。
commits(未 push):a70963514 Excel 產生腳本收進 FR-138;822caa60b FR-138 第二階段卡;26d2e1f39 skill cra-framework+知識庫過期數字;本 commit(STATE/LOG、CM-2909 卡 spec)。 做了什麼:FR-138 第二階段開母卡 CM-2905+三張子卡 CM-2906~2908(依群組 57/33/23 個任務,產證據上傳到專案 1591);新增 skill cra-framework,收 CRA 散在五處的作業知識與陷阱;修規劃稿「40 條 98 個」、建議證據頁「34 條」、features README 兩列。決策者問英文建議證據是否舊的:重跑產生器零差異、DB 48 條標題齊,只有頁首標題對照表缺 14 列,開 CM-2909。 決策:證據只產真的有的,規劃中的記缺口不做假檔;證據同時上傳 DEV 與存進 FR-138 evidence/;runner 不補填系統資料、不推進任務狀態。 教訓:「文件是不是舊的」先重跑產生器看差異、再查 DB,別只看頁面數字下結論。 留給下一棒:驗收 CM-2909 與 CM-2906~2908;其餘見 STATE「5. 2026-10-19 待接」。