.omo/evidence/20260626-issue-71-codegraph-mcp/qa-summary.md
cd packages/omo-codex/plugin/components/codegraph && bun test test/serve-mcp-bridge.test.ts
.omo/evidence/20260626-issue-71-codegraph-mcp/red.txtcd packages/omo-codex/plugin/components/codegraph && bun test test/serve-mcp-bridge.test.ts
.omo/evidence/20260626-issue-71-codegraph-mcp/green-focused.txtcd packages/omo-codex/plugin/components/codegraph && bun test test/serve.test.ts
.omo/evidence/20260626-issue-71-codegraph-mcp/green-serve-wrapper.txtcd packages/omo-codex/plugin/components/codegraph && bun test test/*.test.ts
.omo/evidence/20260626-issue-71-codegraph-mcp/codegraph-component-tests.txtcd packages/omo-codex/plugin/components/codegraph && bun run typecheck
.omo/evidence/20260626-issue-71-codegraph-mcp/codegraph-typecheck.txtcd packages/omo-codex/plugin/components/codegraph && bun run build
.omo/evidence/20260626-issue-71-codegraph-mcp/codegraph-build.txtbun run test:codex
.omo/evidence/20260626-issue-71-codegraph-mcp/test-codex.txtcomponents/codegraph/dist/serve.js with framed initialize and tools/list requests against a fake newline-JSON CodeGraph child.
.omo/evidence/20260626-issue-71-codegraph-mcp/manual-qa-framed-mcp.txtbash .agents/skills/codex-qa/scripts/app-server-drive.sh --plugin
.omo/evidence/20260626-issue-71-codegraph-mcp/codex-qa-app-server-drive.txtbash .agents/skills/codex-qa/scripts/install-verify.sh --self-test
.omo/evidence/20260626-issue-71-codegraph-mcp/codex-qa-install-verify.txt.omo/evidence/20260626-issue-71-codegraph-mcp/typescript-no-excuse.txt, .omo/evidence/20260626-issue-71-codegraph-mcp/changed-file-loc.txtinitialize and tools/list.codegraph_search, codegraph_node, codegraph_explore, and codegraph_callers from the built serve entry with no child parse error.OMO_CODEGRAPH_PROJECT_CWD.bun run test:codex passed 404 tests.CODEX_HOME and confirmed the real ~/.codex/config.toml hash was unchanged.The RED/GREEN test pins the exact protocol mismatch from code-yeongyu/lazycodex#71. The manual QA drives the built MCP serve entry through the same Content-Length framed stdio surface Codex uses, while the fake child only understands newline JSON. The component and root Codex gates cover surrounding CodeGraph behavior, generated bundle integrity, installer/runtime packaging, and Codex Light compatibility. The codex-qa app-server and install checks prove the local plugin still loads in an isolated real Codex surface without touching the user's real Codex config.
Raw environment dumps, auth-bearing logs, tokens, and private credentials were not captured. The app-server artifact includes only sanitized script output and the scripts' own isolation/hash assertions.