# 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.