---
title: FR-120 首腦驗收結論定稿（U2～U13a，給登記員與決策者對照）
---

> **現況（2026-10-01）**：本文是 2026-09-26 的分類快照。文中「未修／待裁」的項目後來已全數處理——FR-114 第 8 批 12 組（CM-2211～2220 等）已修並隨 1.21.0 出貨；1.21.1 再修授權讀取（CM-2369）等。最終狀態以 `docs/security-report/SUMMARY.md` 問題總表為準（已修 206、拆除退場 15、裁定不修 12、SaaS 前必做 1）。以下內文保留當時的分類過程。
# FR-120 登記員工作單（首腦驗收結論定稿，2026-09-25 22:30）

登記範圍：U2／U4／U5／U6／U7／U8／U9／U10／U11／U12／U13a 共 11 棒（U1／U3 已登 adc11be5c，U13b 尚未派）。
報告都在 docs/features/FR-120-2609-host-residual-security-scan/scan-U*.md，先讀全文再登。
總表 security-scan-consolidated/README.md 現值：219 項（§3.1 184、§3.2 33、§3.3 2）、128 輪、§7 待裁 42 項（最後第 50 項）、未開卡 217。
新項次從 §3.1 第 185 項起、§3.2 第 39 項起、§1 第 129 輪起、§7 第 51 項起連號。
runner 引用「總表第 N 項」一律核對 §3.1 真的是那一項；U11 報告把「容器紀錄沒遮罩」寫成第 173 項是錯的（173 是 Word 卡死），那條是 U2-2 本次新登。

## 各棒結論（照登，不改判）

### U2 啟動與中介層（CM-2154，scan-U2.md，run wf_2ac3d75c-1b1）
- stamp verified，5 候選 15 票，4 成立（3:0×3、2:1）1 否決 0:3；研究員 2/2。
- 工具 4 條全舊帳不另計：F1＝SUMMARY #12（資料庫密碼寫進版控）、F2＝CM-1631（Drive 憑證外洩）、F3＝M13 第 17 條 CM-2056（停權後通行證仍可用）、F4＝SUMMARY #10/#11。
  - 第 12 項尾註：runner 確認 docs/claude/memory/ 兩檔（project_ssp_doc_parser_progress.md、project_drive_sync_test_data.md）含現行 DB/Redis 密碼，FR-114 清殘留範圍要加這目錄。
  - CM-2056 尾註：修正只在修正線 3a96260b，出貨釘住的 jedi-iam 1.3.0 wheel 無 `_is_account_disabled`（首腦 unzip 核過）；發版時要記得。
- 淨新增 §3.1：
  - 第 185 項【中】使用者上傳目錄整個公開在 /static/ 不必登入（core/app_factory.py:94-98 static_folder 指向上傳區；出貨 nginx 只轉 /api/1.0 與 /socket.io 所以正式版打不到，開 8000 埠排錯或換代理就整包公開；問卷答案 Excel、意見回饋附件、OSCAL 匯出檔）。開卡素材 ✅。
  - 第 186 項【中】即時通訊服務 logger=True／engineio_logger=True（core/app_factory.py:184,186）逐筆記錄封包，登入權杖明文進容器紀錄；診斷包收容器紀錄 host_collector.py:136-156 沒過 mask_log_lines，原樣帶走（runner 實測）。**U11 補：出貨主機預蒐路徑 staged_collector.py:128-153 同樣沒遮，修時兩支一起**。開卡素材 ✅。與第 162 項同組（診斷包遮罩）。
  - 第 187 項【中低→登低】授權到期唯讀閘門兩個縫：/agents/ 前綴豁免太寬讓代理程式註冊碼仍可產生（license_readonly_mw.py:76）；問卷填答走即時通訊通道不經閘門（jedi_survey fill_survey_socketio_handler.py:164）。開卡素材 ✅。
- §3.4：U2 排除四件（權杖解不開一律 401/403、唯讀閘門驗身分前比對網址 8KB 實測 0.055ms、請求上限只看標頭、diag 子命令只在 CLI）。

### U4 雲端硬碟設定／授權／金鑰（CM-2159，scan-U4.md，run wf_a828ae6e-597）
- stamp verified，5 候選 15 票零漏投，4 成立 3:0、1 否決 0:3。
- 淨新增 §3.1：
  - 第 188 項【高】Google 授權回呼頁反射型 XSS：api/cloud_integration/routes/google_drive_integration_route.py:115-140 `_callback_html` 把 request.args 的 error 用 json.dumps 塞進 inline script，json.dumps 不轉義 `<` `>`，`</script><script>` 截斷後執行；6 月 99055ab00 C12 修法不成立、註解仍寫「防 Reflected XSS」。落地版 FE 與 API 同網址、token 在 localStorage，受害者登入狀態點連結即被盜憑證，攻擊者不需帳號。**首腦本機 HTML parser 重現切成兩個 script**。修：error 改固定錯誤碼白名單、:110 的 str(e) 不回頁面、加 CSP。開卡素材 ✅。**建議不等 FR-120 全收先轉 FR-114**。
  - 第 189 項【低，非資安→登 §3.2 第 39 項】加密金鑰換掉後 token_manager.py:60,:66 只接 InvalidGrantError 不接 InvalidToken，狀態維持 CONNECTED、同步靜默失敗、錯誤訊息空白。
  - 第 190 項【低】授權網址 state 沒綁發起者瀏覽器（google_drive_integration_service.py:90-94 產生、:107-116 回呼只看 state），可轉寄他人代按讓對方硬碟接進攻擊者公司；未實測。開卡素材 ✅。
  - 第 191 項【低】驗證憑證端點只 require_platform_admin 不查 storage-config 能力點（drive_app_credential_verify_service.py:71），與註解自述不符；總部任一登入帳號可試任意憑證對錯。開卡素材 ✅。
- 工具 F3＝U5-1、F4＝U5-2、F2＝CM-1631 重現不另計。
- §3.4：U4 排除五件（權杖更新不會寫錯公司、Drive 應用程式設定只讀 ROOT 列＋兩道守門、手動重試同步跨不了公司 RLS 擋、get_project_folders 無問題、**旗標 DRIVE_APP_CONFIG_PLATFORM_ADMIN_ONLY 改 False 客戶自填也不生效因 resolver 只讀 ROOT，功能落差非洞**）。

### U5 雲端硬碟回呼＋同步排程主幹（CM-2156，scan-U5.md，run wf_32b5fcb9-978）
- stamp verified，6 候選 18 票零漏投，F1-F4 3:0、F5/F6 2:1；研究員 2/2。
- 淨新增 §3.1（**與 U6 合併登**）：
  - 第 192 項【高，採 U6 評級】init-folders 入口不核專案歸屬＋背景系統身分讀：api/cloud_integration/routes/google_drive_sync_route.py:101-122 只掛 jwt+license；drive_sync_admin_service.py:108-131 註解自承「FE 已擋按鈕、後端不查」；project_tree_loader.py:86-91 用 SYSTEM_USER_ID/SYSTEM_IS_ADMIN 載專案；init_project_folders_handler.py:365-407 寫對應表唯一鍵 (tenant_id,scope_type,scope_uid) 擋不住跨租戶。A 客戶任一登入帳號知 B 專案編號→把 B 整棵專案結構建進 A 硬碟、往裡丟檔變 B 任務的證據。**U6 runner DEV 實測（回滾）：131 身分載出 102 專案、131 身分把證據寫進 102 任務 14795；首腦重查零殘留**。「建跨公司對應」那步未實跑（要真 Google）。**決策者 09-25 裁：要修**。修：trigger_init_project_folders 排入前用 common.authz 專案軸驗歸屬＋管理者；ProjectTreeLoader.load 帶 tenant 過濾。開卡素材 ✅。
  - 第 193 項【中，設計選擇，決策者 09-25 裁改】所有雲端資料夾含根資料夾設 anyone/writer（google_drive_api_client.py:285-301；init_project_folders_handler.py:448、create_folder_handler.py:59、archive_drive_file_handler.py:157），FR-016 design.md:52 刻意選；GET /integrations/google-drive 只掛 jwt+license 回 root_folder_id（google_drive_integration_route.py:36-49、serializers:13）。公司內任一登入帳號拿根資料夾連結可看改刪全公司證據；改寫的檔下輪同步被匯成證據。**裁定兩段：①root_folder_id 不回給無讀取權限者、②分享改 type=domain（客戶 Workspace 網域）或專案成員；既有資料夾要一支一次性工作撤 anyone 授權**。開卡素材 ✅。
  - 第 194 項【中】背景處理器查對應表與證據不帶公司（U6-3）：drive_folder_mapping_repo_impl.py:67-75 get_by_drive_folder_id、:77-83 get_by_uid；job_evidence_repo_impl.py:136-166 三支；呼叫端 process_drive_changes_handler.py:256-262、import_drive_file_handler.py:91/:142、soft_delete_evidence_handler.py:34-37。排程 system_context 繞 RLS、job_evidences 無 tenant 欄無 RLS（首腦 DEV 重查 relrowsecurity=f）。**U6 runner 實測（回滾）：131 名義處理變更排出指向 102 任務的匯入、軟刪把 102 唯一雲端證據標已刪**。自然觸發情境：兩家接同一 Google 帳號（tenant_drive_integrations 只 UNIQUE(tenant_id)，首腦 DEV 核過）。**決策者 09-25 裁：接硬碟時拒絕已被別家接過的 Google 帳號（唯一約束 google_account_email＋錯誤訊息）**。開卡素材 ✅。
  - 第 195 項【低】webhook 註解宣稱去重但無實作（google_drive_webhook_service.py:118）。
  - 第 196 項【低】webhook token 比對非常數時間（:93-96）。
  - 第 197 項【低】find_child_by_name 只跳脫單引號不跳脫反斜線（google_drive_api_client.py:121），與第 110 項同型，未實測。
- U5 F1/F2/F5/F6＝CM-1607/1629/1631 重現不另計。
- §3.4：U5 排除三件（回呼入口 256 位元憑證＋找不到頻道回應一致不洩露、使用者不能塞指定別家的工作列、憑證產生夠隨機）。

### U6 雲端硬碟八支處理器（CM-2157，scan-U6.md，run wf_6fa5dc78-d4f）
- stamp verified，1 候選 3:0（＝第 193 項 U5-2 同一項，不另計）；U6-1＝第 192 項、U6-3＝第 194 項，上面已併。
- §3.4：U6 排除（匯入檔名路徑跳脫測過 `../` 跳不出、09-17 新增兩個證據查詢有限定任務、封存處理器用工作公司找資料夾實際擋得住）。
- 連帶：runner 回報本機 BE 起不來——修正線 jedi-task-platform 加抽象方法 resolve_project_id_for_job，主線 BE FlowControlJobRepoImpl 未實作（首腦核：修正線 BE 有實作、主線無）；屬 .venv 指向修正線套件的不對版，非 bug，提醒修正線發版主線 BE 要一起合。U5 也撞到。
- 教訓（LOG 用）：U6 報告寫一半 session 斷掉，之後 prompt 加「先 commit 初版再補細節」。

### U7 任務入口與批次（CM-2158，scan-U7.md，run wf_14dcf3f9-ca2）
- stamp verified，9 候選 27 票零漏投，8 條 3:0、1 條 0:3。
- 決策者點名「批次完成預設把呼叫者當管理員」（decision-draft 第 50 項）：**不成立**——job_batch_complete_service.py:50-56 is_manager=True 只在守門零件沒接或無 project_uid 時生效，兩零件 di 有接（flow_control_containers.py:579-585）、網址必帶專案；第 59 項「待核對」結案。寫法「零件沒接就放行」建議改沒接就擋。
- 淨新增 §3.1：
  - 第 198 項【中】匯入任務 Excel「上傳驗證」零守門且 job_import_service.py:203 load_workbook 無 read_only 整份進記憶體（首腦核過），runner 實測 9.8MB 檔 22 秒 1.46GB；第 130 項壓縮炸彈第五個入口（總表 130 項未列 job_import，首腦 grep 核過）。併 2-F 那組。開卡素材 ✅。
  - 第 199 項【低，面板 3:0】匯出任務 Excel 不過濾公式（job_import_service.py:158-167）。
  - 第 200 項【低，面板 3:0】批次完成通知信把操作者暱稱原樣塞 HTML（job_batch_complete_service.py:168-174；同型 workflow_execution_service.py:1219、project_service.py:776）。
  - U7-4【併第 59 項不另計】批次完成用網址專案角色跳過逐筆核對、不核任務屬網址專案（:58-62）；runner DEV 實測 user 17 在 323 管理員/642 viewer，網址填 323 勾 642 任務逐筆核對未被呼叫；目前分支等同第 59 項、修正線 CM-2147 內層會擋。第 59 項驗收項加「A 管理員＋B viewer 網址填 A 勾 B 要被擋」。
- 工具 6 中＝第 45/155/156/157 項重現不另計。

### U8 流程背景作業（CM-2160，scan-U8.md，run wf_fc0b9dcb-c09）
- stamp verified，1 候選 3:0。
- 決策者點名覆核輪承襲來源與目的同源：**不成立**（launch_reverify 用母輪自己 project_id 驗角色、新輪 project_id 抄母輪、配對編號全程式推出）。9 支排程全具名系統身分掃全庫無逐租戶切換（與 U5/U6 同設計）。
- 淨新增 §3.1：
  - 第 201 項【低，面板 3:0，**當時待裁（後已裁並修，CM-2208）：與 FR-112 design.md:307 決策者 09-20 裁定衝突**】流程圖編輯器存檔刪方塊＝硬刪任務不問專案管理人（workflow_xml_sync_service.py:91；守門只有 module-frame.update 能力點＋RLS）；同公司有改範本權限者知範本編號可刪別專案任務連證據。首腦建議：維持裁定但補「查得到專案就問管理人、查不到才放行」。→ **§7 第 51 項（已裁並修，CM-2208）**。
  - 第 202 項【低】證據蒐集執行進度只驗登入（套件 jedi_task_platform task_execution_service.py:139，同檔 :69 有 _check_manager）。
  - 第 203 項【低／陷阱】孤兒清理 job_binding_orphan_query.py:121 NOT EXISTS 判定，排程無身分時 RLS 讓它看不到任務→全部綁定判孤兒整批刪；今日排程有帶 system_context 不會觸發；runner DEV 資料庫層回滾實測。**第 46 項尾補一句：對 NOT EXISTS 型判定方向相反，沒身分＝全部判中**。
- §3.4：U8 排除四件；**盤點檔 scan-inventory.md §6「task_assignees 無 RLS」已過期（首腦 DEV 重查 relrowsecurity=t、4 條規則）**。

### U9 摘要報告＋關聯表＋帳號角色殘段（CM-2161，scan-U9.md，run wf_e920735d-3bb）
- stamp verified，5 候選 15 票零漏投，3 條 3:0、1 條 0:3、1 條 1:2。
- 第 65 項主線未修（runner DEV 實測 131 非成員身分撈到 321 專案摘要全文）；修正線 CM-2037 已修未合回，F2 不另計。第 150 項 F3 不另計（修正線 CM-2189 已修）。
- 淨新增 §3.1：
  - 第 204 項【中，面板 3:0】摘要報告 PDF 匯出白名單 data:image/* 含 svg+xml（project_summary_report_route.py:42-50 `_summary_img_attr_filter`），SVG 可指內網網址或 file://，WeasyPrint 69.0 預設 fetcher 照抓；**首腦本機重現：白名單放行 svg、假伺服器收到請求**。CM-892 防線被繞。修：白名單排除 svg 或 :166 write_pdf 給拒絕一切的 url_fetcher。開卡素材 ✅。
  - 第 205 項【中，**首腦推翻面板 0:3 否決**】還原歷史版本不核版本歸屬：project_summary_report_history_service.py:50 取歷史後直接寫入，只驗報告所屬專案成員；**首腦開修正線檔核：CM-2037 只給讀取加守門，revert 方法未動**；面板否決理由「歷史本來就能直接讀」只在第 65 項未修時成立，修正線合回後還原成唯一讀取路。與第 94 項同型同修法（比對 history.report_id == report.id）。併第 65 項同卡。開卡素材 ✅。
- C4（原廠帳號保護沒擋改到期日）1:2 否決，首腦同意不立項；建議修 root admin 保護時順手加到期日。
- §3.4：U9 排除（角色帳號包裝層無繞過、root_admin_reader 只回布林、三支關聯表無對外路由）。

### U10 診斷包下載入口與組裝（CM-2162，scan-U10.md，run wf_c03e5bb6-44b）
- stamp verified，1 候選 0:3 否決（間接提示注入，程式碼不送 AI；首腦同意否決，原廠內部貼包進 AI 時要當不可信資料，屬作業規範）。
- 下載入口只兩條都守得住，排除。
- 淨新增：
  - **併第 162 項改寫**（不另立項）：診斷遮罩認得的密碼寫法太少且四條路徑強度不一——**首腦實測**：mask_log_lines 只遮 Bearer、漏 password=值／連線字串帳密／export KEY=值／DB_PASSWORD=值；mask_env_text 遮 KEY=值 但漏 Bearer 與連線字串；db_reader.py:237 與 diag_slice_domain_service.py:245 走最弱 mask_json_like。組裝入口 diag_bundle_app_service.py:115-120 無統一最後一道遮罩；manifest 遮罩清單只列遮到的會誤導。runner 真包實測三個假密碼原樣留在 env/guidant.env.masked。第 162 項修法改寫為：①資料庫紀錄與最近錯誤改走日誌遮罩；②四支規則補認 名稱=值／名稱='值'／Bearer／URL 帳密／export；③打包前統一過一道。
  - §3.2 第 40 項【非資安】稽核只記匯出意圖沒記成敗，docstring 指向不存在的 `_audit_export`（diag_bundle_export_service.py:30、:90-99；首腦 grep 全 repo 僅該處提及）。
  - 第 206 項【低】since 帶時區 until 沒帶時比較當掉回 500（diag_bundle_export_service.py:120-122）。
  - 資訊（§3.4 記）：畫面版產包同步佔工作程序、日誌切片記憶體 1.3 倍。
- 更正：首腦派工誤寫「第 173 項是診斷包遮罩」，實為第 162 項。

### U11 診斷包資料收集器（CM-2163，scan-U11.md，run wf_408b5225-5ee）
- stamp verified，2 候選 6 票皆 3:0；研究員 2/2（第一位 90 分鐘被中斷自動重派一次，failed 0）。
- 淨新增 §3.1：
  - 第 207 項【中，面板 3:0】寄信失敗時 jedi_notification smtp_mail_adapter.py:52/:57 `logger.error(f"... smtp info: {self.config}")` 把整組寄信設定含密碼以 password='值' 寫進日誌；遮罩 diag_masking.py:164-169 不認此寫法（**首腦實測 mask_log_lines 與 mask_json_like 都漏**）。併第 162 項那組但單獨立項（有真實來源）。開卡素材 ✅。
  - 第 208 項【中，面板 3:0】指令版 sudo guidant diag 在容器使用者可寫的 home 掛載點下用 PID 猜得到的名字建暫存資料夾、不檢查符號連結（scripts/installer/guidant:700-708）；容器內一般權限者預放捷徑讓主機 root 寫到別處；runner 本機重現。修：mktemp -d 建在只 root 可寫處或檢查不存在且非捷徑。開卡素材 ✅。
  - 第 209 項【中】畫面版設定快照跨多行值只遮第一行（container_collector.py:94 串成 KEY=值 文字再遮）；**首腦實測多行 JSON 第二行密碼留下**；出貨 DB_SECRET 單行故今日落地版未中。開卡素材 ✅。
  - 第 210 項【低】預蒐模式讀檔照索引檔路徑不限制在 staging_dir 內（staged_collector.py:90、:140 服務名未驗可出現 ../）；前提同第 208 項。
  - 第 211 項【低】api_logs 的 url 欄不在 MASKED_API_LOG_COLUMNS（diag_bundle.py:30），網址帶權杖參數原樣進包；產品不用網址傳權杖，DEV 1 筆測試資料。
- 容器紀錄無遮罩＝第 186 項（U2-2），U11 補預蒐路徑 staged_collector.py:128-153 同洞，已寫進第 186 項。
- §3.4：U11 排除（docker 指令寫死、DB 讀取器只看兩張紀錄表全租戶屬設計、打包檔名與大小有上限）。

### U12 零散殘段＋系統設定守門＋人員對帳（CM-2164，scan-U12.md，run wf_a2018933-ffc）
- stamp verified，3 候選 9 票零漏投，F1/F2 3:0 皆舊帳（第 74／72 項，主線都未修），C3 0:3 否決。
- 系統設定守門：AI 金鑰、Drive 應用程式兩組「能力點＋平台管理員」兩道都在；其他群組只一道能力點屬刻意。第 74 項三組（登入規則/LDAP/寄信）主線仍只一道，子公司管理員仍寫得進全站列（DEV 核 smtp-config.update 等 is_platform=f）。
- 淨新增 §3.1：
  - 第 212 項【高，**待產品決策，§7 第 52 項**】修正線 CM-2054 補的「總部層級」守門（common/authz/tenant_hq.py 判準「最短可見路徑深度==2」）擋得住子公司、擋不住另一家客戶的總部（**首腦開修正線檔核判準屬實**；runner 實測 /1/102/ 能、/1/102/152/ 擋、/1/131/ 能）；寄信/LDAP 共用列全站只一列（首腦 DEV 核 LDAP 在 tenant 1）。客戶 B 總部管理員仍能改掉客戶 A 與平台在用的寄信伺服器。根源：方向④「只給客戶第一層改」預設每家一份，但資料模型全站一份。**二選一**：①全站一份→寫入只給 require_platform_admin（首腦建議，理由：落地版一台機器寄信伺服器本來就一台，改守門一行）；②每家一份→改資料模型與讀取端。轉 FR-114 重開 CM-2054。
  - 第 213 項【低】即時通知 namespace 完全不驗身分、join 任意房間、reload 原樣廣播（notification_socketio_handler.py:19/:34/:43）；今日空房間——前端唯一使用元件 ProcessDiscussBox.vue 零引用（首腦 grep 核過）、伺服器不往此頻道送資料。面板 0:3 否決有理，記錄不開卡；元件接回畫面時變成不用帳號偷聽討論串。
  - 第 214 項【低】人員對帳 person_reconciler.py 四處查詢收 tenant_id 但零使用（首腦 grep 核 0 處），organization_reconciler 有用；平台管理員身分下橫跨所有客戶比對，配對結果只寫附註欄不給權限。修：四處比照組織比對加 tenant_id。
  - 第 215 項【低】解析工作單兩表 INSERT 政策 WITH CHECK (true)（02-schema.sql:24970、:25004），程式一律從登入身分取 tenant 目前無路。
  - 第 216 項【低】防竄改旁證 IP 讀 X-Forwarded-For 可偽造（common/integrity/adapters.py:269-273），修正線已改 remote_addr。
- 第 161 項尾註：tenant_storage_config_seeder 把原廠 AI 金鑰抄給新客戶，修正線 CM-2192 已修主線未合。

### U13a DI 專掃 core/plugins（CM-2166，scan-U13a.md，run wf_5b4ba820-2db）
- stamp verified，4 候選 12 票零漏投，3 條 3:0（全舊帳：第 34/37/40、第 11、第 36 項）、1 條 0:3 否決。
- 三問答案：九支七支問對；套件拿 None 時登入/能力點/授權一律拒絕掛載；di_modules.py 載入順序無問題（守門被呼叫那刻才找容器）。
- 淨新增 §3.1：
  - 第 217 項【中】原廠共用檔（storage_scope='system'，DEV 18 支）任一公司登入者可刪實體檔：套件 minio_adapter.py:130-140 先 remove_object 再 delete_by_uid（**首腦開 wheel 核順序屬實**）；upload_files DELETE 政策只給 super_admin 或同租戶（首腦 DEV 核），第二步被 RLS 靜默擋、第一步已刪、API 回成功→紀錄在檔案沒了、全體客戶壞。第 34/47 項的資料庫牆只擋紀錄。修：delete_file 對 system 檔非平台管理員先拒絕；刪除順序改先刪紀錄成功才刪實體。**併第 37 項同卡**，驗收加「一般帳號刪原廠檔要失敗且實體檔還在」。runner 未實刪，修正線名冊擋不擋未驗。開卡素材 ✅。
  - 第 218 項【低】AI 儀表板生成端點只掛 @require_license 不查 ai-dashboard.read（套件 ai_dashboard_route.py:99；core/plugins/ai_dashboard.py:52-61 只交 auth_required 與 license_guard，**首腦核過**）；DEV 102 的「稽核人員」「IT執行人員」無此能力點（首腦 DEV 核），選單看不到但直打網址能用、每用一次付兩次 AI 費。runner 實測。搬進套件前主專案端點也沒有。修：AiDashboardAdapters 加 capability_required，併 CM-2038 後續。開卡素材 ✅。
- **§7 第 53 項（已結案，CM-2111 修正）**：當時待裁——C4＝CM-1605（FR-078 N2 F1 當時面板 HIGH、已開卡 Not started）本次面板 0:3 否決，理由「能打的人本來就能改 SMTP 設定，沒給新能力」；runner 沒追「存設定」是否沿用舊密碼；兩次面板相反，請決策者裁維持或降級。
- §3.4：U13a 排除（公告拿不到部門時看全部＝第 1 項舊帳；修正線檔案套件拿不到名冊只警告照掛但主專案修正線已接上）。

## 已裁定（登 §7「已裁記帳」或對應項尾註）
- 第 192 項（U6-1）要修；第 193 項分享改 domain＋root_folder_id 不外露；第 194 項連帶「同一 Google 帳號不接兩家」要擋——決策者 09-25 裁，並確認**落地版租戶模型是多頂層租戶各自獨立公司，跨頂層即真洞，不因「通常只裝一家」降級**。
- 第 182 項（U1 授權總開關）決策者 09-25 改判**要修**：落地版拿掉 LICENSE_ENFORCEMENT_ENABLED／LICENSE_READONLY_GATE_ENABLED 兩個開關（config.py:295-298、license.py:177-184、installer 1420-1421、diag 回報段、.env 範本、部署文件），放行需求走補發測試照。§7 第 50 項標已裁。嚴重度低→中。
- CM-2198 營運待辦已開（FR-110）：申請正式 Google OAuth app＋送同意畫面審查＋落地機回呼網址登記 SOP；與 CM-1631 換發同一組憑證。總表 §6 上版待辦加一列。

## 新增 §7 待裁（第 51～53 項；後均已裁並修）
51. 第 201 項：流程圖存檔刪任務不問專案管理人，與 FR-112 09-20 裁定衝突，工具建議重評；首腦建議維持裁定但補「查得到專案就問管理人」。
52. 第 212 項：寄信/LDAP/登入規則是全站一份還是每家一份（首腦建議全站一份→只給平台管理員）。
53. CM-1605 兩次面板相反，維持 HIGH 或降級。

## 數字（登記員自己算，對不上回報）
- §3.1 184→217（+33；第 189 項 U4-5 落 §3.2）；§3.2 38→40（+2：第 39 項 U4-5 金鑰換掉不報錯、第 40 項 U10-2 稽核缺成敗）；輪次 128→139（+11）。
- 嚴重度加總：高 +3（188、192、212）、中 +11（185、186、193、194、198、204、205、207、208、209、217）、低 +20。
