Repository navigation
fix(mcp): force reset RagMcpAgent DO to clear stale init() schema cache #109
Copy link
Copy link
Closed
Labels
bug動いていない、壊れている動いていない、壊れているin-progress着手中、実装または検証が進行中着手中、実装または検証が進行中ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能本文が実装開始できる形まで収束している状態。ただし更新は継続可能
Description
Activity
- changed the title
[-]verify(mcp): type enum cache — DO init() に古い 6 値 enum が焼き付いている[/-][+]verify(mcp): DO init() caches stale 6-value type enum[/+]on Apr 23, 2026 - addedready本文が実装開始できる形まで収束している状態。ただし更新は継続可能本文が実装開始できる形まで収束している状態。ただし更新は継続可能in-progress着手中、実装または検証が進行中着手中、実装または検証が進行中and removedmemoメモとして開始した状態。見出しは必要なものだけでよいメモとして開始した状態。見出しは必要なものだけでよい
on Apr 23, 2026 - changed the title
[-]verify(mcp): DO init() caches stale 6-value type enum[/-][+]fix(mcp): force reset RagMcpAgent DO to clear stale init() schema cache[/+]on Apr 23, 2026 - linked a pull request that will close this issuefix(wrangler): force reset RagMcpAgent DO to clear stale init() schema cache (patch) #110
on Apr 23, 2026 作業完了報告
PR #110 + #112 merge 後、
npm run deploy(non-versioned) を実行し V2 binding が live。Uploaded github-rag-mcp (3.95 sec) Deployed github-rag-mcp triggers (1.09 sec) Current Version ID: fa6ec8d3-c5b9-41b2-b1a9-0b35124ba7d2deploy 後
search_issuesの scan mode が正常 return することを確認済み。V2 namespace の DO instance が cold start で新 init() を走らせた状態。Master verification (再起動後)
現 Claude Code session は session 開始時点の 6 値 schema を client 側に cache しているため、本セッション内では新 schema 確認不可。次回以降の session で:
search_issues type=issue_comment sort=updated_desc top_k=3が zod エラーなしで return すること- tool schema の
typeenum にissue_comment/pr_review/pr_review_commentが含まれること
本件で判明した周辺 Li+ 知見
- Cloudflare Workers Builds は versioned deployment (gradual) を使用。DO migration は non-versioned deploy でしか適用できない (error code 10211)。migration を含む PR は Workers Builds check が構造上必ず失敗する
deleted_classesmigration は binding が残った状態では適用不可。binding を新 class に切り替えた上で旧 class を delete する必要がある- 過去 migration で declare されたクラスは script export を維持する必要がある (error code 10064)。rename 時は V2 を追加し旧 class を stub として残す or 明示的 migration で扱う
これらは docs/ か wiki に残す価値があるので別 issue で書き起こす予定。
真因訂正 (2026-04-23 夜セッション)
本 issue で立てた仮説「DO
init()の zod schema が cache されて stuck」は誤診断だった。正しい真因はmcp-server/server/index.js(Claude Desktop/Code 向け stdio bridge) のsearch_issues.inputSchema.type.enumが 6 値のまま PR #107 時点で更新漏れしていたこと。観測経路
- 再セッション開始時に tool schema を読み直したところ
["issue", "pull_request", "release", "doc", "diff", "all"]の 6 値のまま (Worker は fix(wrangler): force reset RagMcpAgent DO to clear stale init() schema cache (patch) #110/fix(mcp): retain RagMcpAgent stub to satisfy migration history (patch) #112 で V2 にリネーム + migration 適用済み、zod enum は 9 値に切替え済み) grep '"issue_comment"' mcp-server/server/index.js= 不一致、bridge 側の schema が Worker 側と乖離- installed extension (
~/AppData/Roaming/Claude/Claude Extensions/local.mcpb.liplus-project.github-rag-mcp/server/index.js:463) も同じ 6 値 - client (Claude Desktop/Code) は bridge の JSON schema で validation →
issue_commentを指定すると Worker に届く前に client-side で弾かれ、Worker 側の 9 値化が意味を持たない状態だった
V2 rename (#110/#112) の評価
- Roll back しない。Worker 側は V2 で 9 値 zod 有効、deploy 済み、問題なく稼働
- ただし「fix(mcp): force reset RagMcpAgent DO to clear stale init() schema cache #109 の目的達成には不要な作業だった」ことは記録しておく
- 獲得した副産物:Cloudflare DO migration の運用制約 4 点 (versioned-deploy 拒否 / binding coupling / export 維持 / fine-grained PAT と CI trigger) を実戦で特定 → reference memory 化済み
誤診断の教訓
- 「Worker 側の init() schema が stuck」仮説を立てた時に、bridge 側の独立 JSON schema 存在を検査しなかった。
mcp-server/を「mcpb packaging 用」と framing して scan 対象外にしていた - 真因切り分けには hypothesis-negative search (仮説と無関係な原因を積極的に排除する方向の調査) が必要。今回は「DO cache が原因」と前提した上で DO migration 関連の docs ばかり追った
rules/model/trigger-check-gate.mdの Source check 二本柱 (literal Read + RAG) を適用する時、「現象が発生する経路全体」の map を先に取らないと false-positive diagnostic になる
後続フロー
- fix(mcpb): sync mcp-server bridge type enum with Worker (9 values) #114 / PR fix(mcpb): sync mcp-server bridge type enum to match Worker (patch) #115 で bridge を 9 値に同期
- v0.8.1 release で CD workflow が
.mcpbを rebuild → Master が Claude Desktop に install → 次回セッションから schema が 9 値で surface
- 再セッション開始時に tool schema を読み直したところ
Metadata
Metadata
Assignees
Labels
bug動いていない、壊れている動いていない、壊れているin-progress着手中、実装または検証が進行中着手中、実装または検証が進行中ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能本文が実装開始できる形まで収束している状態。ただし更新は継続可能
目的
search_issuestool schema のtypeenum を 6 値から 9 値 (issue_comment/pr_review/pr_review_comment追加) に追従させる。前提 (検証済み)
観測:
1edf74d, PR feat(ingest): index comments, PR reviews, inline comments (minor) #107) =typeenum は 9 値で正しく実装済みInvalid enum value. Expected 'issue'|'pull_request'|'release'|'doc'|'diff'|'all', received 'issue_comment'真因確定:
RagMcpAgent) のinit()で zod schema を定義 → 古い enum 値が DO メモリに cachecrons = [\"0 * * * *\"]の hourly trigger、および WebSocket hibernation が DO を温存している影響範囲:
RagMcpAgentは MCP server session の薄いラッパー。data は全てIssueStore/VECTORIZE/DB_FTS側に保持。RagMcpAgent SQLite の破棄で失う user data なし制約
deleted_classesは binding が残った状態では拒否される。このため同一クラス名で delete + recreate する atomic 構成は採れない対象ファイル
src/mcp.ts— classRagMcpAgent→RagMcpAgentV2へ renamesrc/index.ts— import / export / serve reference を V2 に更新wrangler.toml— MCP_OBJECT binding を V2 に切り替え、migration v2 (deleted_classes=[RagMcpAgent]+new_sqlite_classes=[RagMcpAgentV2]) 追加検証手順
npm run deploy(=wrangler deploy)search_issues type=issue_comment sort=updated_desc top_k=5実行 → zod エラーなしで return関連