Use this checklist when changes affect any part of the Codex supported-host path:
- Codex MCP wiring
- explicit-provider LLM distillation on Codex
- high-signal candidate capture
- distillation queue behavior
- retrieval / node ranking
- explicit feedback and node-state governance
This checklist validates Codex as a supported product host. It does not replace the OpenClaw-first baseline.
-
codexCLI is installed locally and can run realcodex execsessions - the repository has been built and
dist/cli/index.jsexists -
ee install codexhas been run for the validation environment - if distillation is part of the pass, an explicit official or compatible LLM API is configured
- the MCP server env exposes:
EXPERIENCE_ENGINE_ADAPTER=codexEXPERIENCE_ENGINE_DISTILLER_MODEL=<configured model>EXPERIENCE_ENGINE_DISTILLER_BASE_URL=<provider base URL>EXPERIENCE_ENGINE_DISTILLER_API_KEY=<provider api key>
-
node dist/cli/index.js doctor codexreports the adapter as installed, wired, and enabled -
codex mcp get experienceengineshows the shared server as enabled -
codex mcp get experienceengineshowsstartup_timeout_sec: 60 - the server command points to
dist/cli/index.js codex-mcp-server
Use this path when nested real-host Codex validation is blocked by auth, billing, model availability, or MCP tool obedience:
- run
pnpm evaluate:codex-lifecycleoree evaluate codex-lifecycle - confirm the harness writes
codex-lifecycle.jsonandcodex-lifecycle.md - confirm the report shows:
lookup=injectoutcome=success- at least one persisted
task_run - at least one persisted
injection_event - persisted
review_eventsincludingmark_uncertainandmark_helped - at least one persisted
hybrid_review_artifact
This harness is deterministic and adapter-local. It complements, but does not replace, a true nested codex exec pass when the host environment is healthy.
- run a real
codex execsession that calls:experienceengine_lookup_hintsexperienceengine_record_tool_resultexperienceengine_finalize_task
- confirm lookup returns
injectorinject_conservative - confirm a new
experience_input_recordsrow is written - confirm the injected node ids are persisted into the input record
- confirm a successful follow-up increments
usage_countandhelped_counton injected nodes
- run a real Codex task with an explicit failure/correction/success sequence
- confirm at least one
experience_candidatesrow is created for that task - confirm at least one
distillation_jobsrow is created for the same candidate - confirm the candidate leaves
pendingand ends in one of:distilledfaileddiscarded
- confirm there are no indefinitely stuck
processingjobs after the pass - if the candidate distills successfully, confirm a formal
experience_nodesrow is created or updated
- rerun a similar read-only task after the candidate is distilled
- confirm lookup returns
injectorinject_conservative - confirm the newly distilled node id appears in the injected set
- call
experienceengine_feedback_nodeorexperienceengine_feedback_lastfrom a real Codex session - confirm
helped_countorharmed_countchanges in SQLite - confirm harmful explicit feedback can move a node from
activetocooling - confirm a previously
retirednode is not auto-revived by explicit feedback
- disable the current scope through ExperienceEngine
- confirm a real Codex lookup returns
skip - re-enable the scope
- confirm lookup resumes normal injection behavior
- for any substantial change that should affect the live Codex experience, rerun
pnpm buildbefore real-host validation so Codex reads the latestdist/ - run
pnpm check - confirm repository verification stays green after the Codex validation fixes
- after the build, run at least one real Codex host session against the updated MCP server instead of relying on tests alone
Record these artifacts for the pass:
- Codex CLI version
- validation date
- provider path used for distillation
- session ids used during the pass
- candidate ids, node ids, and any retry/discard outcomes
- known limitations or remaining non-blocking gaps
Companion report: