# FR-140 LOG（append-only，每棒一 block）

## 2026-10-15 首腦：訪談、討論稿、design、開卡
- 決策者推翻第一版方向（多輪次拼接），裁 PM 定義「一輪＝一條完整流程含內外稽」。舊稿整份刪除、資料夾改名（`96cfaab01`）。
- 三輪口頭對齊後寫新討論稿（`4d8285550`），裁 P1～P6（`2d09e33fa`；P4 改前 3 天＋當天）。
- design.md（`e72e3b523`、`36c7e50bf`、`dc16b9379`）；補裁：舊輪次搬稽核次 `pending_reverify→closed`；退卡不整段呼叫 `revert_job`，抽單卡函式逐張退。
- 十二張卡 CM-2786～2797 連號開好；卡 1、8 已 append 補裁。
- 派出 .1、.2、.6。
- 教訓：用系統現有物件名詞翻譯需求會偏；設計前先用決策者的詞把圖逐句對回去（memory `feedback_round_means_whole_flow_verify_pm_ruling_before_design`）。

## 2026-10-15 首腦：第一批 .1／.2／.6 復核
- .1 BE 891f7a3bc／pkg 06bca836：DEV 12 輪→12 稽核次、四槽位 0 不一致、RLS 四條、CASCADE。
- .2 BE fb900692a／FE 983cf2b7：選單兩筆、公版 id 35 含 reverse 與 audit_nature；選配驗證器規則不做。
- .6 BE ce3a10bbd＋6300e23f1／pkg da3919c5＋dd65c08c：欄位、view security_invoker、serializer 皆核；API 層接受 runner 實打（首腦無密碼）。
- 三卡狀態留「修正待驗證」待決策者畫面複測。

## 2026-10-15 首腦：.7 復核
- FE 2686c048：兩超標檔只加引用、PUT 只送 due_at。排序白名單缺 due_at 併入 .9。待決策者實機複測。

## 2026-10-15 首腦：.11 復核
- BE f5186f52d／pkg 16c4c50a：期限取母輪 current_pass 的 POA&M 最早里程碑、換當天 23:59:59；DEV 交易回滾無殘留。換算函式定為 .8 共用。打折：未從畫面走完整流程，留端到端驗收補。

## 2026-10-15 首腦：.3 復核
- BE 71041d8e6／pkg f79efed5：launch_audit 綁稽核次、AP 分流、sync_round 逐欄同步、反查擴到稽核次、AP 守門限目前次。原檔 966→949。縮範圍函式單一份兩處呼叫。DEV 無殘留。

## 2026-10-16 首腦：.4 復核
- BE bb9c7a125／pkg 405a9aa8：三站綁稽核次、terminal、回規劃、redo_jobs_hook 掛點。認可 AR 每次一份／外稽在 finalize 開／回規劃看下一站。DEV 無殘留。打折：POA&M 全關檢查用替身。

## 2026-10-16 首腦：.5／.10 復核
- .5 BE 8bd6ac6b8／pkg 7c455661：open_station_job 單一份兩處呼叫、attempt_no migration、回退找站改走流程圖。
- .10 BE d31094d15／FE 6af14483／pkg 29e6e079：兩題裁決後放行；套件只加 pass_uid 參數、新檔 audit_pass_view；POA&M 標題與 AP props 併入。
- 三 repo 工作樹乾淨。九張待決策者複測。

## 2026-10-16 首腦：.12 復核
- FE d61a7d29：既有 StageProgressBar 已符合 P6，只補 tooltip 站名。裁「跳過站顯綠」不開卡。

## 2026-10-16 首腦：.8 復核
- BE 4045c9271：退卡 service 新檔、單卡函式 job_reopen 與 revert_job 共用、redo_log 表＋RLS。編號對照驗過。退回狀態為進行中（design D1 補註）。第四支主線 migration。

## 2026-10-16 首腦：.9 復核，十二張全部復核過
- BE 5505a5140／FE bbd61456：兩時點提醒掛既有 tick、排序白名單、通知紀錄頁。第五支主線 migration。DEV 留 4 筆測試提醒紀錄。
- 十二張皆「修正待驗證」，待決策者複測與端到端驗收。

## 2026-10-16 首腦：交接
- 開發十二棒全部復核過，交下一 session 做人工驗收與修正。
- 本棒教訓：①需求先用決策者的詞逐句對回去再談做法（第一版方向整份作廢）；②產品面取捨先問決策者，不在卡上直接回 runner；③監控只盯狀態欄會漏「卡尾待裁」。
- 全案 commit（BE）：96cfaab01 刪舊稿 → 4d8285550／2d09e33fa 討論稿 → e72e3b523…dc16b9379 design → 891f7a3bc .1 → fb900692a .2 → ce3a10bbd＋6300e23f1 .6 → 71041d8e6 .3 → f5186f52d .11 → bb9c7a125 .4 → 8bd6ac6b8 .5 → d31094d15 .10 → 4045c9271 .8 → 5505a5140 .9；FE：983cf2b7 .2、2686c048 .7、6af14483 .10、d61a7d29 .12、bbd61456 .9；套件：06bca836 .1、da3919c5＋dd65c08c .6、f79efed5 .3、16c4c50a .11、405a9aa8 .4、7c455661 .5、29e6e079 .10。

## 2026-10-16 首腦（驗收棒）：第 2 步發現兩題，開 .13／.14
- 決策者走到第 2 步（內部稽核計畫填寫站）停下兩題：①主按鈕「前往 啟動稽核」應為「前往 內部稽核」；②進稽核站沒通知稽核員、登入後鈴鐺沒亮。
- ①根因：按鈕文字走 stage_objects 類型級 entry_button_label，新範本一圖兩個 audit 站分不出來；FE 註解寫「BE 優先讀 BPMN 站名」但 BE 沒那層。裁：BE 加「下一站站名」優先層，線名仍最優先。開 .13 CM-2811。
- ②根因：站 job 從無指派人，通知與鈴鐺都讀 task_assignees，舊範本時代即如此、非 FR-140 弄壞。task_assignees.control_id NOT NULL，站卡不能塞進去。裁：參與人加「可稽核性質」三選一（內部／外部／內外，預設內外，進 system_menus），進站依站的 main_role＋audit_nature 找參與人通知、manager 一併通知、無人可派提醒 PM；鈴鐺另讀 stage_entered 通知紀錄。角色不拆（主鍵一人一列），決策者裁「先這樣，未來再設計成好的模式」。開 .14 CM-2812（新增主線 migration 兩支）。
- 被排除：角色拆內部稽核員／外部稽核員（動主鍵與所有讀 role 處）；把站 job 塞 task_assignees（汙染我的任務）；只改 id 35 範本線名（自建範本仍錯）；把 stage_objects 文字改中性詞（失去資訊）。
- 本棒先做：重啟 8000 BE、起 FE 5180、給 11 步驗收表單。
- 補裁 .8：決策者要退回的卡在留言區由「系統」說明「第 N 次內／外稽判不合格、不合格 AO 的稽核意見（只列不合格）、改善里程碑與期限、誰按的退回」。核對：finding 是 AO 粒度、related_observations 指向觀察、觀察 description 即稽核意見；留言表 author_id 可空可當系統署名。已 append 到 CM-2793 卡尾、狀態退 In progress。Notion 無「修正後仍有問題」狀態，退回一律 In progress（手冊已載）。
- 補開 .15 CM-2813：決策者發現專案規劃頁沒地方設任務期限（.6／.7 只做了後端與我的任務／抽屜）。核對：規劃頁讀 SSP control-tree，BE 該端點 job dict 與查詢都沒帶 due_at；PUT 已支援 due_at 且「沒帶 key＝不動」。裁：BE control-tree 補兩欄；FE 表單期限欄複用 JobDueDateField 獨立存檔（不併整包 PUT，否則沒改期限也被標手動）、清單副標帶期限、批次維護加「批次設定期限」（新檔對話框，預設只套用未設定的卡）。

## 2026-10-16 首腦（驗收棒）：.13／.8 補裁復核
- .13 BE 337027269：找下一站迴圈抽成 `_peek_next_station_job` 單一份，`_peek_next_stage_code_via_jobs` 委派；label 在終點站後加「站名」層；線名優先段未動。25 過／守衛 118 過。打折：runner 未登入實打、未看畫面，由決策者複測①～④。
- .8 補裁 BE 434bbd592／pkg cc6f742d：組字純函式新檔、留言走 domain service 直寫繞參與人守門、失敗不回滾、觀察整 AR 撈一次；套件只加兩支讀取方法。3 支新 unit test 過。DEV 無系統留言殘留（rollback 驗證）。注意：留言期限與里程碑日期印 ISO（`isoformat()`），複測看是否夠白話；`.mo` 不入版控需各環境 compile。
- 8000 BE 於 13:27:49 重啟，晚於 .8 commit（13:27:44），兩卡程式已載入。
- .15 的 BE 段 21ec82d1a 已進（control-tree 帶 due_at），FE 段作業中。
- .14 CM-2812 **被重複派工**（兩個 session 同時改套件參與人九支檔，欄位重複）。裁：寫「待裁決」的 [R1].14 退出，寫「作業中」且 migration 已套 DEV 的那個做完；補裁稽核站無 audit_nature 時讀目前稽核次的性質。教訓：派工 prompt 一字不差貼兩次就會撞車，派前先看卡狀態與卡尾有無「作業中」段。
- .15 CM-2813 復核過：BE 21ec82d1a（control-tree 帶 due_at，to_display 同任務詳情格式）、FE 1379e427（期限獨立存檔、JobDueDateEditor 共用、批次對話框、快速配置改用共用迴圈，主檔 2,579→2,593）。runner 未在瀏覽器實點，待決策者複測七步。
- .14 CM-2812 復核過（BE c496961a2／FE 3023fe7d／pkg 58836164）。決策者最後改讓 [R1].14 接手做完（與首腦裁決相反，決策者直接在 runner 視窗裁，不回頭質疑），它逐檔複查前一位的改動後續作。核：套件 11 檔每欄只一份、import 正常；收件人篩選純函式 7 測；掛點在推進成功後、包 savepoint 失敗不回滾；稽核站無 audit_nature 讀目前稽核次（補裁已落實）；通知紀錄表 stage 放寬 32；鈴鐺另讀 stage_entered 紀錄。DEV 實測留 4 筆 sent 紀錄（ap_authoring／audit 各寄 blsdemo＋blsadmin，blspan 無）。主線 migration 增至七支。
- 教訓：派工 prompt 貼兩次＝兩個 session 撞同一批檔；派前先 fetch 卡看狀態與卡尾（已入接手指引第 8 條）。
- .13 複測退回：內部稽核站按鈕印「前往 外部稽核計畫填寫」。根因：找下一站一律走閘道預設分支，但該閘道由系統依稽核結果判定；舊範本預設接結束事件剛好掩蓋。裁：經系統判定閘道且非審核站 → 用當站動作文字「提交稽核」；stage info 加 `button_label_is_destination` 旗標，FE 只在 True 時包「前往」。
- .13 第二輪復核過（BE bfb361566／FE f4fd9cc2）：`_get_advance_button_label` 加 `decided_by_gateway` 早退回當站動作文字；stage info 加 `button_label_is_destination`（終點站／審核站／經系統閘道＝False）；FE 只在非 False 時包「前往」。BE 已重啟。
- 決策者複測第 2 次內稽畫面：①按鈕仍「前往 提交稽核」②進度條「內部缺失改善」未亮。首腦全查：資料面（稽核次 2 筆、站卡 7 張 attempt 正確、redo_log 2）皆對。①根因 `StageInfoCurrentStageSchema` 未宣告新旗標被 marshmallow 丟掉（runner 未實打）；②`_build_progress` 照圖上順序推算、回流站判未開始（.12 收太淺，違 P6）；順根因再抓③ .14 通知用 default 分支的 template_job_id 找站卡，有缺失路徑查無即 return。三處同檔開 .16 CM-2815 一棒修；.13／.14 退 In progress 指向 .16。
- 教訓：marshmallow 是 grep 盲區再現（memory 已有）；「猜下一站」在系統判定閘道前一律不可信，凡依賴 peek 的地方都要改看實際站卡。
- .16 CM-2815 復核過（BE ac071b937）：A schema 補兩欄並實打 stage/info 確認旗標 false；B 進度抽純函式 `stage_progress.station_status`（看實際站卡，PROCESSING→current、COMPLETED→done、否則 pending；結案全 done）＋3 測與突變；C `_notify_stage_entered` 改查推進後實際 PROCESSING 站卡（`latest_job`）傳給 notify，notify 刪掉自己查站卡那段。原檔 756→753。BE 14:56:33 重啟，晚於最後存檔。打折：C 未在 DEV 實走（唯一停內稽的專案是決策者正在複測的），兩條路徑待決策者實走。runner 已把 2811／2812 改回修正待驗證。
- 決策者在「外部稽核計畫填寫」按退回：流程跳回規劃、留兩張 PROCESSING、第 3 筆外部次被標 planning。根因：FR-050 退回用「輪次狀態→退到哪類站」固定表＋BFS 找第一個同類站，假設一輪一次稽核；回流範本穿過真正上一站。另：進度條整條線「走過就亮綠」在回流範本誤導；時間軸站名用類型、回流標推進。
- 裁（決策者）：①退回沿實際軌跡退一步，跨稽核次時刪目前次、上一次重開；②進度條改以稽核次為單位只畫這次路徑、分岔靠切換稽核次；③時間軸站名＋回流標「退回」。開 .17 CM-2816。被排除：分岔圖（一眼看不出終局）、不允許跨次退回（「提交稽核」易誤按、沒退路太硬）、整條線兩種綠（PM 要自己分辨）。
- 「提交稽核」按鈕字（stage_objects audit complete 文字）建議改「完成本次稽核」，待決策者裁。
- 決策者裁「提交稽核」改「完成本次稽核」（文案照首腦建議），開 .18 CM-2817：一筆 stage_objects seed，只套 DEV，不重啟。.17 已派出、Monitor 盯 CM-2816。
- .18 CM-2817 復核過（e2f48753f）：seed 一句 UPDATE、manifest seed／*、DEV 值已更新；runner 未驗 installer seed 清單會不會跑到（照 fr093-4d 先例登記，收口時連同其他 seed 一起驗）。
- .17 CM-2816 復核過（BE 77e9ee2c3／FE fec523e1／pkg 735185d6）。核：軌跡純函式只算 COMPLETED／PROCESSING 站卡（CANCEL／TODO 不算走過）、目標＝目前站前最後一張 COMPLETED；退回不走 revert_job，目前站 CANCEL、目標 reopen、其他不動；handler key 改依目前站碼，跨次走 `previous_pass`（套件新檔：目前次 SSP／AP 標 superseded、刪稽核次、上一次 closed→auditing／remediation、sync_round、AP 已填擋 GRC_412062）；進度條以軌跡切段對應 pass_no、後接閘道可達站、`pass_uid` 可指定；時間軸 from_label／to_label＋direction return（migration 已套 DEV，CHECK 三值）。9 檔 210 測過、突變有咬；三條路徑 DEV 交易內實跑後回滾，髒輪次 f00c5dc3 未動（仍 2 PROCESSING／3 passes）。BE 15:32:36 重啟晚於最後存檔。
- 與卡面不同待裁：閘道前兩邊都畫 pending（第 2 次內稽會多一顆灰的「內部缺失改善」）。首腦傾向維持（誠實表達「還不知道有沒有缺失」），等決策者裁。
- 打折：未從新專案走 UI；AP 已填用「建立後 2 秒內有無寫入」判，真實填寫後未驗。
- 事故（輕）：首腦 docs commit 8c6375d7d 夾帶 runner 已 staged 的 `git rm stage_job_locator.py`——首腦 `git add 兩個 docs 檔` 後 commit 會連同他人 staged 的變更一起進。內容正確不改歷史；教訓：首腦 commit 前看 `git status` 第一欄，有他人 staged 就先 `git restore --staged` 排除或等。
- 主線 migration 增至八支、seed 三支。
- 決策者刪髒專案（1547 軟刪，SSP 1820 與三份快照未動）後建新專案發現資源庫「CMMC簡易SSP」仍灰「已綁定專案」。查明是 FR-139 T-8（CM-2757，2026-10-15）「資源庫終身一對一」規則：專案 living_ssp 直接指向資源庫範本 SSP，寫入都進資源庫那份，軟刪也算綁過，要再用先複製資源庫。決策者裁先順流程（走複製）、此項記錄待收口前裁。DEV 另有五個 T8 測試資源庫同樣只剩已刪專案鎖住。
- .14 複測退回：建專案參與人頁「可稽核性質」下拉不出現。根因 PrimeVue 3.53 Dropdown 直接掛 `v-tooltip` 炸 `$_ptooltipModifiers` null、元件更新中斷。修：tooltip 改掛原生圖示元素。frontend-overview §3.6 收尾補這條 quirk。
- .14 FE 小修復核過（FE 81a5ec43）：Dropdown 拿掉 v-tooltip，提示改掛旁邊 info 圖示。八張修正卡全部待複測。
- 合併前盤點（FR-141 → FR-139）：BE 僅 manifest.tsv 衝突；FE／套件零衝突；141 唯一新 migration 已在 DEV；主 venv 四支 jedi 皆 editable 指主套件目錄（含 oscal-v2），合併後不會起不來；主 pyproject 字面 pin oscal-v2==2.6.0 與 venv 不一致，收口還原 pin 時四支一起處理並發版。141 的 STATE／LOG 停在 A1（10:48），九棒未記，已請決策者轉知 141 首腦合併前補。worktree 行程 8001（99238）與 FE（41843）合併前停。
- FR-141 合回 FR-139（BE 75d3af54d／FE c4b0a359／pkg e3be08aa；141 首腦處理 manifest 衝突與 GRC_412062 撞號讓號 412063）。首腦合併後核：audit_round_app_service.py（918 行）無衝突標記、launch_audit／finalize_audit／close_round／rollback_to_previous_pass 都在、縮範圍改走 141 的 `clone_ap_for_next_pass`（含未判定，P1 預期）；套件 import OK；manifest active＋seed 對 DEV 無 2026-10 落差（manifest 有 DB 沒的十支皆為一次性清理／他環境腳本，屬既有）；FR-140 八檔測試 189 過；BE 無 traceback。守衛紅 1 條為 .14 路由未登記附錄 A，收口補。主 venv 四支 jedi editable 指主套件目錄，pyproject 字面 pin 不一致留收口。16:2x 重啟 8000（61038）與 5180（61064）。
- 教訓（141 首腦抓到）：兩條線各自新增錯誤碼會撞號且 git 不報衝突，合併前要比對兩邊新增的碼。

## 2026-10-16 首腦（[R1]大流程調整-2，驗收與修正棒）：交接
- 本棒成果：決策者走劇本第 1～2 步＋退回操作，撞出八題；開修正卡 .13～.18 六張（CM-2811／2812／2813／2815／2816／2817）＋ .8 補裁，全部派工、復核過、「修正待驗證」。FR-141 合回後盤點通過並重啟服務。
- 根因類型回顧：顯示層（按鈕文字來源、進度條照圖推算、tooltip 掛錯元件、serializer 漏宣告）佔多數；設計洞兩個（FR-050 退回假設一輪一次稽核；資源庫終身一對一 vs 刪專案重綁）；既有缺口一個（站 job 無指派人→無通知無鈴鐺）。
- 本棒教訓：①派工 prompt 送出前後都 fetch 卡，貼兩次就撞車（memory `feedback_dispatch_fetch_card_before_sending_prompt`）；②凡「猜下一站」的程式在系統判定閘道前都不可信，退回／進度／通知三處同根因，要改看實際站卡；③新 API 欄位必查 serializer 宣告（marshmallow 是 grep 盲區，第二次踩）；④首腦 docs commit 會夾帶他人 staged 的刪檔，commit 前看 status 第一欄；⑤Notion 無「修正後仍有問題」狀態，退回一律 In progress。
- 全案 commit 增補（BE）：337027269／bfb361566 .13 → 434bbd592 .8 補裁 → 21ec82d1a .15 BE → c496961a2 .14 → ac071b937 .16 → 77e9ee2c3 .17 → e2f48753f .18；FE：1379e427 .15、3023fe7d＋81a5ec43 .14、f4fd9cc2 .13、fec523e1 .17；套件：cc6f742d .8、58836164 .14、735185d6 .17；合併 BE 75d3af54d／FE c4b0a359／pkg e3be08aa。

## 2026-10-16 首腦（[R1]大流程修改首腦-3，驗收與修正棒）：第 1 步三題，開 T1／T2
- 決策者在新專案 1548 第 1 步回報三題：①建專案預覽稽核人員沒標內外稽；②資源庫模式 SSP 頁籤仍有「下載 Excel 匯入樣板」；③進度條只剩一顆。
- 根因：①.14 只改第二步選人元件沒補第三步預覽（資料存對）；②FR-139 T-9 唯讀時只擋匯入沒收下載；③.17 真回歸——`pending_stations_after` 碰到 `ap_authoring` 一律停，不分這次／下一次，runner 測試沒測「起點在規劃」又沒走 UI。
- 決策者裁：**測試回報一律開新卡歸「測試修正」，不退回原卡**。開 T1 CM-2820（BE，opus）、T2 CM-2821（FE，sonnet）並行。
- T1 a39f4b4f9：判準改「計畫站的前一站是規劃才屬這次」，與 `split_pass_segments` 同一判準；11 測過、首腦自做突變 2 紅、實打 stage/info 四顆。T2 3d06e89c：`scopeSuffix` 搬進 composable 共用、SSP 按鈕列 `v-if="!librarySourced"`；runner headless 驗過 A／B；順帶發現 FE lint 指令壞掉。
- 教訓：⑥「往前推算」類函式要測最常見的起點（第一站），不只測分岔處；⑦同一個語意（計畫站屬哪一次）兩處各寫一次就會漂，判準要指向同一條規則。

## 2026-10-16 首腦（[R1]大流程修改首腦-3）：T1 被決策者退回，進度條設計重做 T3
- 決策者看到 T1 修好的四顆說「全部有很多為什麼只有這樣、一直在補丁、整個設計有問題、要重寫都可以」。首腦認錯：.17 的「只畫這次路徑」是在退回出錯截圖下裁的，沒人先問正常第 1 步長什麼樣；T1 與首腦驗收都只驗「照設計運作」沒驗「設計對不對」。
- 三版回顧：.12 整圖走過就綠（退回後站在規劃看到後面一片綠）→ .16 改看實際站卡（誤導仍在）→ .17 只畫這次路徑（少站）。共同病：沒先定義進度條要回答什麼。
- 決策者裁（看三張字元示意圖點頭）：**七站全畫、位置順序固定，顏色只講「這一次稽核」走到哪**；第四態 skipped＝圖上在目前站前、這次沒經過；回流回規劃整條重置、看歷史次用 .10 切換。被排除：只畫這次路徑、整圖走過就綠、分岔圖。
- T3 CM-2822（opus／high）BE 888d6d08d／FE 789ee3f2：`stage_pass_progress.py` 整支重寫、`pending_stations_after`／`segment_stations` 刪；runner 自決「上色從最近一次規劃起算」（外稽那次的來路一起亮）與第三張圖一致。首腦兩向突變有咬、實打三條、開截圖核樣式。
- 教訓：⑧UI 類改動的裁決要先畫「正常路徑每一步長什麼樣」再定規則，不能只對著出錯截圖裁；⑨首腦驗收 UI 卡要開截圖看「對不對」，不只核「跟卡一樣」；⑩同一塊改到第三版還在繞，就是定義問題不是實作問題，停下來重定義。

## 2026-10-16 首腦（[R1]大流程修改首腦-3）：T4 按鈕文字、T5 清單兩行格
- 決策者到「內部缺失改善」站回報按鈕「前往 退回規劃」；根因＝.13 裁的「線名最優先」＋.2 範本把回流線取名「退回規劃」。首腦提「進入重做」決策者先同意後嫌怪，再改裁**線不取名、按鈕印下一站站名「前往 任務規劃與執行」**。T4 CM-2830 第一版 be7fa6dec（改字，含快照與 .bpmn 圖源）復核過；補派第二筆 seed 拿掉 name，作業中。
- 決策者回報清單「只看到稽核中、不知道什麼稽核中」；決策者要首腦「好好想、不要硬改」。首腦提案：清單格與橫幅同一組語言——兩行（目前站名＋顏色點／第 N 輪 · 第 N 次內部／外部稽核），被排除：一行三段分類詞、清單塞小進度條、只改第二行。決策者點頭。
- T5 CM-2831 BE b890afefd＋7576f89f2／pkg 3b94ad67／FE 7796818e：runner 把 helper 放 readmodel＋app enricher（infra 不能引用 app，比卡上寫法對）；橫幅三支函式抽公開共用。runner 無本機帳密未能截圖與實打，首腦用 e2e 管理員帳號補做：API 三欄齊、清單與首頁五列皆兩行、截圖與示意一致。
- 教訓：⑪範本線名會直接變按鈕文字，建範本時線名要當動作名取、或乾脆不取讓它印站名；⑫runner 卡上寫「必從 UI 驗」要同時給它登入方式（e2e `.env.e2e` 的管理員帳密），否則一律打折；⑬「清單看不懂」這類題先定「這格要回答使用者什麼」再定欄位，不直接加欄位。
- T4 第二棒 d2249eb13 復核過：公版＋快照＋seed 檔＋.bpmn 圖源四處線名皆拿掉，reverse 保留；實打 stage/info 按鈕文字「任務規劃與執行」、is_destination true。T1～T5 全部復核過，待決策者複測。

## 2026-10-16 首腦（[R1]大流程修改首腦-3）：交接
- 本棒成果：決策者走劇本第 1～4 步，撞出八題；開測試修正卡 T1～T6（CM-2820／2821／2822／2830／2831／2832），T1～T5 派工、復核過、「修正待驗證」；T6 已開卡未派。決策者裁「測試回報一律開新卡歸測試修正、不退原卡」。
- 本棒兩次被決策者退回的設計：①進度條「只畫這次路徑」（.17）→ 重做成七站全畫、顏色只講這一次（T3）；②按鈕文字「進入重做」→ 線不取名、印下一站站名（T4 第二棒）。共同教訓：UI 文案與版面要先畫「正常路徑每一步長什麼樣」再定規則，首腦驗收 UI 卡要開截圖看「對不對」，不只核「跟卡一樣」。
- 決策者定的統一原則（T5／T6）：**每個地方都顯示「第 N 次 · 站名」，N 是正在進行的那一次**；推算只有一份（`stage_pass_progress.current_pass_info`），橫幅／清單／切換器三處都呼叫它。
- 未裁：控制項導航三行版面（FR-140 之前 `4953c199` 所致，非本 arc），等決策者選還原或收緊。
- 本棒教訓（接前棒⑤）：⑥「往前推算」類函式要測最常見起點；⑦同一語意兩處各寫就會漂；⑧UI 裁決先畫正常路徑；⑨UI 卡驗收開截圖；⑩同一塊改到第三版還在繞＝定義問題；⑪範本線名會變按鈕文字；⑫runner 卡要給登入方式；⑬「看不懂」類題先定「這格回答什麼」。
- 全案 commit 增補（BE）：a39f4b4f9 T1 → 888d6d08d T3 → be7fa6dec／d2249eb13 T4 → b890afefd＋7576f89f2 T5；FE：3d06e89c T2、789ee3f2 T3、7796818e T5；套件：3b94ad67 T5；首腦 docs：e66cf9cdc／00a1c8ccb／eb84c53a0／0ad02fb51。

## 2026-10-16 首腦（[R1]大流程重構首腦-3，第四棒）：接手、T6 復核過
- 接手時 T6 CM-2832 已被決策者自行派出（STATE 寫「未派」但卡 In progress、工作樹出現三支 T6 檔），盤點照實回報後等令。
- T6 復核過（BE e4cb1693c／FE 785a6db4）：主專案新 service 包在套件 `list_passes` 外、推算只呼叫 `current_pass_info`、原料走 `ProjectRoundStageQuery`，套件未動；純函式兩向突變各紅 1；8000 實打決策者輪次帶 `virtual` 欄位、髒輪次不 append 200；截圖核切換列／第 2 次空狀態／清單兩行，無 border-left。
- live 時序：復核期間決策者已走到第 2 次稽核計畫填寫站（DB 第 2 筆 20:57:17 建，audit_planning），實打兩筆都是真實項、第 2 筆 is_current——「推算項被真實項取代、畫面不變」這條路徑順帶 live 驗到；runner 截圖是取代前狀態，兩種都看過。
- runner 順手抓到範圍外一題（AP 計畫頁歷史次唯讀提示與麵包屑下拉仍寫「已結案」），已列 T7 候選②，與控制項導航三行版面①一起等決策者裁。
- 教訓⑭：STATE 寫「已開卡未派」不可信，決策者會自己貼 prompt；接手第一件事 fetch 卡狀態＋看工作樹有無該卡範圍的檔（本棒照指引做到，沒撞）。
- 首腦 docs commit 前核 `git status` 第一欄：本次只有自己兩個 handoff 檔，pyproject／FR-133 html 未 staged、不動。

## 2026-10-16 首腦（[R1]大流程重構首腦-3，第四棒）：決策者直接裁的 FE 小修、劇本走完
- 決策者看切換器說「好文言文」、看導航說「分不太出來」，要首腦直接改不開卡。逐張截圖往返五次定案：控制項列兩行（外框徽章＋百分比／名稱最多兩行）、無進度條、左側 1px 樹狀線；群組進度條改短條併入百分比行；「稽核次」→「稽核紀錄」、標籤補「稽核」、內稽「已完成」／外稽「此輪結束」、已結束不標「目前位置」。FE fd63b703。
- 順手修：稽核計畫頁麵包屑下拉先判 is_current 再判 closed，整輪結束時剛結束的外稽顯「進行中」，改先看 closed。
- 被排除：控制項列一行（長名稱會爆，決策者指出）、控制項代號純文字（決策者要徽章）、控制項保留短進度條（決策者不要）、「做完了」口語版（決策者嫌太口語）。
- 決策者走完劇本、裁可收。DEV 核：三筆稽核次、十筆時間軸、redo 4、job_due 通知都在；未驗到覆核輪新卡期限與手改期限兩項。
- 教訓⑮：狀態判斷「先看是不是目前、再看有沒有結束」在整輪結束時會把剛結束的那次說成進行中——終態要先判。

## 2026-10-16 首腦（[R1]大流程重構首腦-3，第四棒）：收尾
- 決策者裁：不出安裝包、不做 e2e，把 FR 需要的文件準備好就收；「最後收」＝母卡最後收。
- 首腦做：24 子卡改 Done；母卡 append 收尾彙整（狀態不動）；SUMMARY；analysis `2026-10-16-fr140-progress-and-rollback-redesign.md`（進度條、退回、推算這一次三條推翻的取捨與反悔條件）；design.md 變更紀錄加一行、P6／時序表／畫面段三處標註推翻（正文照「決策文件不回頭改寫」原則不改）；FR README 與總 README 狀態改「功能完成、收口中」；frontend-overview §3.6 補 Dropdown 不可掛 v-tooltip；memory 兩條（UI 規則先畫正常路徑、狀態判斷先判終態）。
- 開收口卡 CM-2834（opus）：SPEC 十二頁、使用手冊、守衛補登記 `MyStageNotificationsRoute`、ddd-compliance-reviewer 掃整個 arc。依 CLAUDE.md 首腦分工，量產文件與審查開 case，不自己寫、不開 subagent。
- 延後到下次出包：四支套件還原 pin 並發版、八支主線 migration 重產出貨基線。
- memory 同步注意：個人目錄比 repo 少 43 個檔，整批 cp 會用舊版蓋 repo；本次只 cp 新增兩檔、兩邊 MEMORY.md 各自加兩行。

## 2026-10-16 首腦（[R1]大流程重構首腦-3，第四棒）：CM-2834 收口卡復核
- 決策者說「你繼續」，首腦接做 CM-2834 並背景派審查，隨即發現 23:05 已有 runner commit `test(FR-140.C1)`——決策者早已另派。首腦停審查、卡尾撤回聲明、改用 Monitor 盯卡。教訓⑯：接做任何卡前先看 git log 有無該卡號的 commit，不只看 Notion 狀態與卡尾。
- runner 三 commit：5bfddf750 守衛補登記；ddc069c3a SPEC 11 頁＋手冊 4.1；60b366dfc 審查阻斷級——DI 註冊檔 922→797 行拆三支（套件 service 受守衛白名單限只能留原檔），stage info 按鈕文字抽方法 129→93 行。
- 首腦復核抓到時序：runner 23:29 重啟 8000，app_factory 23:32 才存；23:34 FR-142 合回也動 app_factory／containers。首腦於合併後 HEAD 跑守衛 159 passed、create_app 成功、23:36 重啟 8000 無錯、實打五端點 200、按鈕文字一致。
- runner 待裁五項首腦意見：ap-authoring 已由 FR-141 重寫（不另開）；ApObjectiveTree 2px 左框與 ApXlsxPreviewBanner 屬 FR-141；JobDueDateEditor 補 v-can 下次動到時補；出貨基線決策者已裁延後；FR-139 FE 路由守衛紅交 FR-139。

## 2026-10-17 首腦（[R1]大流程重構首腦-3，第四棒）：結案
- 決策者說「文件那邊好像好了」。首腦核：FR-141 收尾文件卡 CM-2835 整頁重寫 ap-authoring 時保留 FR-140 段落（變更紀錄行、麵包屑、唯讀提示、尚未建立、承襲）；SPEC 站 strict build 過，產出 HTML 含「此輪結束」。
- 期間 `docs/spec-site/site/` 一度整包顯示刪除，是其他 session 正在 mkdocs 重建，數十秒後恢復；不碰。
- CM-2834、母卡 CM-2765 改 Done，FR-140 結案。DI 拆檔回歸以守衛 159 過＋重啟後實打五端點為準，決策者未另做四項手測。
