FR-181 Agent 只出站通道 — 交接日誌(LOG)

append-only:每棒收工追加一個 block,既有 block 不改。現況看 fr181-STATE.md。

§1

第 1 棒 — 2026-11-07 00:30~20:05 — 首腦(分析/設計/開卡/監控/合回/靜態驗收)

做了什麼

  • 探脈:實查 FR-171 後八種「主系統連 Agent 8443」用途(六種指令+同步問答),證明心跳補推也連 8443。決策者裁客戶不開入站埠、改 Agent 長輪詢、直推退役(後改判留程式加開關)。
  • 討論稿 → design v1.0 → v1.1(無人值守:批次 7→6、P-0 判據寫死、驗收改本機模擬)→ 開卡 CM-3595 母卡+13 子卡 → 工作坊 42 跑 16 小時。
  • 監控處置:E-1 契約互鎖轉 A-1;F-3 撞 FR-178 先發的 1.15/1.16(決策者裁 B:工作區 merge ws-CM-3533 再發);C-1 runner 斷線首腦接手收尾(PYTHONPATH 指工作區跑守衛)。
  • 工作坊首腦補開 B-4(CM-3619,agent_credential_client.py 在主系統不在套件,首腦拆卡位置寫錯)、B-5(CM-3631,連線欄值是套件算的,首腦漏套件那一半);決策者裁文件太早 → C-1 縮為釘版+守衛、C-2 文件拆出暫緩。
  • 首腦驗收抓到「對帳」仍直推(§1.2 併進證據檔沒單獨列)→ 補開 B-6a~d(CM-3634~3637)。
  • 決策者裁直接合回:四 repo ws-CM-3595 merge 進 feature/FR-172;FR-182 首腦合回時一併推遠端。
  • 靜態驗收:BE 178/Agent 173/detection 303/契約 73(補刀 b20f85c5)綠;remote-agent 接受 runner 540 打折。
  • 磁碟 1 G → 99 G:清 poetry/pip 快取、已結束 job tmp、兩個已結案 BE 工作區、37 個 Agent venv 孤兒;Docker.raw 71 G 是 sparse 只長不縮(實際內容 17 G)。

關鍵決策:D1~D8 全文 design v1.1 §3;文件等真機驗收過後寫;工作坊 44(FR-182)先合回、40(FR-179)後合回、本案釘版跟進不自改。

教訓

  • Nexus 允許同版號重傳:本案 B-6a 發契約 0.5.2,FR-182 P3-4a 首腦更正版號後也發 0.5.2 蓋掉(少 KIND_VERIFY_FILE)。FR-182 自己發 0.5.3 合併版修掉。平行工作坊發同一套件,publish 前要查 Nexus 最新號(已進 memory)。
  • 拆卡盤點要逐個選單項對實作:B-4/B-5/B-6 三張補卡都是「盤點時併類沒單獨列」或「漏套件那一半」。
  • 共用 .venv 對應主線:runner 在工作區 poetry update 是當棒有效、合回後被蓋回;驗收用 PYTHONPATH 指工作區原始碼,不動共用 venv。
  • 每個工作區 poetry install 各建一個 venv(37 個孤兒 ~9 G)+ BE 工作區帶 4.3 G docs/(spec-site build 產物入版控)=今天磁碟漲 50 G 的來源之一。
  • 已註冊無照的 Agent 主控台登不進(FR-182×FR-179 縫,根因閘門關時不載 holder.state)——回寫 FR-182 母卡,不是本案的。

推翻了什麼:FR-170 §3.x「落地版直推一定通」;FR-171 A 指令通道(D2/D3/D11)。首腦自己的「直推整支刪」(決策者改判留開關)、「F-1/F-2 要等 P-0」(不吃結論,併批 1)。

commits(主 repo 文件):0c190344a 討論稿+design v1.0;081a28a23 開卡;3eec74a11 design v1.1;0978de723 B-4;2493f266a B-5;83d136056 C-2 拆;c5df193a8 B-6;445f69bbe/3d02aec61 README 進度。合回:BE b61d9710c/a577aec82。

§2

第 2 棒 — 2026-11-07 20:30~21:40 — 首腦(接手、排除本機驗收前置、123 更新)

做了什麼

  • 接手 pre-flight 與 STATE 一致;決策者回報「主系統登不進主控台、沒授權卻沒地方輸入照」。
  • 查到並直接修掉 FR-182 主控台三個缺陷(決策者兩度裁「直接改」,三筆回寫 FR-182 母卡 CM-3609):
    • Agent 1a47d90:閘門關時 start_planes() 先用既有 cert_files.load_enroll_state() 載身分,只載不起同步。
    • FE 2a07071b:總覽授權提醒列加 missing/invalid/mismatch 紅條;沒照時隱藏「斷線+網路除錯」條。
    • Agent 24ee084:8444 主控台改經 license.current_gate() 取 gate(原本找根容器 provider,但 8444 拿到的是 files 子容器);ServerError 參數修正;fixture 改真實容器形狀。
  • 本機 Agent 裝照後 sync 起來:心跳 200、長輪詢 commands?wait=30 循環——新通道第一次在真實執行環境跑通。
  • 推 evidence-agent 與 FE;123 由決策者解 keyring 後 git pull 到 24ee084、首腦 poetry install(契約 0.4.1→0.5.3)並起 Agent,閘門 missing 待裝照。

關鍵決策:FR-182 缺陷由本案首腦直接修(決策者裁),不另開卡;總覽中間卡/狀態燈「可以接工作」誤導未改,建議開 FR-182 卡(未裁)。

教訓

  • FR-182 的授權分頁在真實 Agent 上從沒正常過:測試 fixture 自己往根容器塞 gate,真實啟動交給 8444 的是 files 子容器。fixture 要用真實的物件形狀,否則守不到「取不到」這種接線錯誤。
  • 前端改了沒效果時先實打 API 看資料:總覽提示沒出現,前端早已生效,缺的是後端回的欄位;第一輪只改前端白繞一圈。
  • 123 git pull 靠 GNOME keyring:重開機(今天 17:14)後沒人登入桌面就解不開,ssh 進去 pull 失敗;Agent 17:11 停掉也是重開機造成的,不是故障。

推翻了什麼:第 1 棒 STATE 寫「主控台本機管理員登入通」只代表登得進,授權分頁其實是 500;「主系統票登入被擋由 FR-182 開卡」改為本案直接修完。

commits:Agent 1a47d90、24ee084;FE 2a07071b(皆 feature/FR-172,已推);主 repo 本棒文件見下一筆 commit。

第 2 棒補記 — 2026-11-07 22:00 — C-2 文件收口

  • 決策者裁 C-2 由首腦直接做、不等真機驗收:BE 5de3ae6cc(已推;同次 push 帶到另一 session 的 FR-184 5ac49c456)。卡 CM-3632 改修正待驗證。
  • 教訓:寫文件前實打程式,抓到設計 D7「8443 只剩健檢」不成立——/blob、/detection 仍無條件掛著,只有 FR-171 cmd_* 受開關;先寫進手冊的「只剩健檢」當場改掉。
  • 教訓:資安報告是 render_index 站,單檔 render_doc.py 會把 css 改指 specs/_shared 並丟導覽列;要整站重 build。