adventure-table

M04-C Closeout Checklist

M04-C — AI Join Kit, Server-hosted Guide & Other Client Compatibility。此文件依 實作規格 C.1~C.9 與 測試指南 C.1~C.10 收斂證據。

狀態:closeout gates 完成。 自動 gate(C.1~C.7、C.10)與 C.8 真實 AI 憑 kit 進桌(ChatGPT Web Plus)皆於 2026-09-12 完成。C.8 的 Bearer MCP client 與純 HTTP 路徑、C.9 其他 client 相容記錄,依使用者 2026-09-12 拍板延後,不列為本 Subphase gate(見下「延後項目」)。

自動 gate 證據(C.1~C.7、C.10)

契約 測試檔
C.1 GET /mcp/guide tests/test_m04c_mcp_guide.py;standalone 不掛:tests/test_p3e_standalone_mcp.py
C.2 指引內容 tests/test_m04c_mcp_guide.py(三種接入方式、適用性聲明、wire 契約、等待規則 120 秒/5 次、無秘密、不碰 DB);與 catalog 同源:tests/test_m04c_guide_tool_parity.py
C.3 tool description 加厚、catalog 前後相同 tests/test_m04c_tool_descriptions.pytests/test_p3e_mcp_tools.py::test_pre_session_dm_catalog_matches_active_dm_catalogtests/test_p3e_pre_session_ai_dm.py
C.4 briefing(強制流程、MCP 呼叫判定、≤ BRIEFING_MAX_CHARS tests/test_m04c_briefing.py
C.4a stage_unset / next_required_action tests/test_p3e_pre_session_ai_dm.pytests/test_p3e_temporary_instruction_context.pytests/test_m04c_briefing.py::test_stage_hint_steers_dm_to_set_stage_then_wait
C.5 server/discover.instructions tests/test_m04c_discover_instructions.py
C.6 kit builder、雙 URL、面板接線、公網 origin endpoint apps/web/src/features/rooms/AIJoinKit.test.tsLobbyAIDMGrantPanel.test.tsPlayerAIControlPanel.test.tssrc/api/aiControllers.test.tshardcodedUiCopy.test.tstests/test_m04c_public_origin_endpoint.py;browser:e2e/m04c-ai-join-kit.spec.ts
C.7 雙語 上列各測試皆斷言 zh-TW/en;hardcodedUiCopy.test.ts、copy store parity 測試
wait_for_event 上限 120 秒 tests/test_m04b_wait_timeout_cap.py(120 通過、120.1 拒絕;Human UI le=60 不變)
Standalone boundary tests/test_m03_import_boundary.pytests/test_m03_standalone_composition.pytests/test_p3e_standalone_mcp.py

C.8 真實 AI 只憑 kit 進桌(2026-09-12)

路徑 結果
ChatGPT Web Plus(目標平台,connector + OAuth 貼 token) ✅ 使用者於 2026-09-12 以 Lobby/Session 產出的 AI Join Kit 人工完成,AI 憑 kit 進桌並跑迴圈。入口形態同 M04-B B.8(Tailscale Funnel → /mcp)。本次未抄錄 server access log 與 tool call 次數;平台、帳號與 OAuth 細節以 M04-B_CLOSEOUT.md B.8 為準
MCP client(Bearer) 延後(使用者 2026-09-12 拍板)
純 HTTP code-execution client 延後(使用者 2026-09-12 拍板)

真實使用同日暴露並在本 branch 修正的缺口:

  1. AI DM 用 request_check 時傳友善技能/屬性名(investigationdexterity)會被存成無法 resolve 的 ref,到 Player 擲骰時才炸。→ 0bbb9faresolve_skill_refnormalize_ability_name 在建立 Check 時 normalize,失敗回 unknown_check_ref(MCP structured error 與 API 422 同碼,前端 locale 字串雙語補齊)。
  2. AI DM 建立 Check 後,Player 在 Chat tab 看不到「DM 要求你擲骰」,AI 又被 guidance 禁止為同一次要求另發 post_narration。→ 6890811:既有 roll.requested event 在 Chat tab 以系統訊息呈現(sessionRollPresentation.ts),payload 補 label,DC 仍不進 payload;guidance/tool description 改寫為「request_check 成功會自動顯示擲骰提示」。
  3. 本機 E2E reset 對含 AI Seat/Session history 的 DB 只刪掉一部分。→ e9c310b:改為 TRUNCATE rooms, characters, ai_oauth_clients RESTART IDENTITY CASCADE--single-transaction + ON_ERROR_STOP=1;29 張表全部可由這三個 root 經 FK 到達。

延後項目(使用者 2026-09-12 拍板)

項目 原契約 處置
C.8 Bearer MCP client 路徑 實作規格 C.8「兩條路徑各至少一次」 延後;不列本 Subphase gate。P3-F E1 已有 Claude Code 2.1.260 經 HTTPS Bearer 進桌的證據,但那是 token 而非 kit
C.8 純 HTTP 路徑 同上 延後
C.9 其他 client 相容記錄 非目標平台網頁版 chat、Codex CLI、Codex Desktop 各一列 延後;本檔無「Compatibility」表。Codex CLI 0.154.0 仍為 legacy 2025-06-18(P3-E preflight),現況可預期為不通

三份 M04 文件的 C.8/C.9 段已同步加註此修訂。

已知限制

Closeout status

M04-C 關門 ✅。 M04 Phase 關門(合併回 main、全套 E2E)待使用者指示;下一步 P4 開工前置。