# Adapter Parity Matrix v0.7 tracks **user-facing parity**, not identical native UI. Claude Code, Codex, and Cursor expose different primitives, so a capability can be native on one adapter and a fallback on another while still preserving the same user outcome. Status terms: - `native`: the target tool has a first-class surface for the capability. - `fallback`: anamnesis renders explicit files or instructions that let the agent produce the same user-facing result, but the tool does not provide the same native primitive. The table below is generated from the canonical fixture in `cli/src/adapters/parity.ts` and locked by `cli/src/adapters/parity.test.ts`. | Capability | Purpose | Claude Code | Codex | Cursor | |---|---|---|---|---| | `project_memory` | Always-loaded project context and operating rules | **native**
`AGENTS.md` region plus `CLAUDE.md` entrypoint
tested: continuity acceptance, claude_md renderer | **native**
`AGENTS.md` region
tested: continuity acceptance, codex registry | **native**
`AGENTS.md` region read by Cursor
tested: continuity acceptance, cursor registry | | `ontology` | Structured project facts and ontology slices | **native**
`.anamnesis/ontology/*.yaml` plus SessionStart injection
tested: continuity acceptance, dogfood check | **native**
`.anamnesis/ontology/*.yaml` plus native SessionStart wrapper when exec adapters are allowed; `AGENTS.md` fallback remains
tested: continuity acceptance, codex native hook tests | **fallback**
`.anamnesis/ontology/*.yaml` plus Cursor rules
tested: continuity acceptance, dogfood check | | `executable_hook` | Event-triggered automation and operational reminders | **native**
`.claude/hooks/*.sh` registered in `.claude/settings.json`
tested: continuity acceptance, hook renderer tests | **fallback**
native wrappers for Codex-supported events (`SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PermissionRequest`, `PostToolUse`, `Stop`) where installed; `AGENTS.md` hook region plus optional Git pre-commit bridge remain as fallback
tested: codex native hook tests, event coverage tests, codex fallback tests | **fallback**
`.cursor/rules/*.mdc` instruction fallback
tested: cursor MDC tests, registry coverage | | `skill` | Reusable agent procedure | **native**
`.claude/skills//SKILL.md`
tested: continuity acceptance, skill renderer tests | **fallback**
`AGENTS.md` skill region
tested: continuity acceptance, codex fallback tests | **fallback**
`.cursor/rules/.mdc`
tested: continuity acceptance, cursor MDC tests | | `slash_command` | User-invoked command procedure | **native**
`.claude/commands/.md`
tested: continuity acceptance, slash command renderer tests | **fallback**
`AGENTS.md` command region
tested: continuity acceptance, codex fallback tests | **fallback**
`.cursor/rules/-cmd.mdc`
tested: continuity acceptance, cursor MDC tests | | `task_harness` | Task contract for goal, scope, evidence, tests, rubric, and lifecycle | **fallback**
repo-local `.anamnesis/task-harnesses/*.yaml` retrieval target
tested: task harness renderer tests, context index tests | **fallback**
repo-local `.anamnesis/task-harnesses/*.yaml` retrieval target
tested: task harness renderer tests, context index tests | **fallback**
repo-local `.anamnesis/task-harnesses/*.yaml` retrieval target
tested: task harness renderer tests, context index tests | ## Reading The Matrix This matrix does not mean every fragment renders every capability on every adapter. A fragment can still restrict a particular capability with `adapters_supported` when that behavior would be misleading outside one tool. The matrix means the adapter has a tested rendering strategy when a capability is allowed for that adapter. Known implications: - Claude Code has the richest native surface today: hooks, slash commands, skills, and SessionStart ontology injection are first-class. - Codex now has native wrappers for SessionStart continuity plus supported shell-hook events (`UserPromptSubmit`, `PreToolUse`, `PermissionRequest`, `PostToolUse`, and `Stop`) when executable adapters are allowed. Commands and skills still keep explicit fallback surfaces because the user-facing goal is continuity, not identical UI. - Dogfood now records Codex hook evidence in two lanes: synthetic wrapper JSON dispatch and opt-in real Codex CLI execution. The real lane proves SessionStart discovery from both isolated `CODEX_HOME/hooks.json` and trusted project-local `.codex/hooks.json`, plus `UserPromptSubmit` additional-context output before model transport completes. The authenticated tool-turn lane proves Bash `PreToolUse` and `PostToolUse` execution through the actual CLI. - If a future adapter cannot preserve project memory, ontology access, or handoff continuity, it should be marked as unsupported instead of silently rendering partial instructions.