Back to Everything Claude Code

Harness Adapter Compliance Matrix

docs/architecture/harness-adapter-compliance.md

2.0.07.5 KB
Original Source

Harness Adapter Compliance Matrix

This matrix is the public onramp for teams that want to use ECC across more than one coding harness. It turns the cross-harness architecture into a practical scorecard: what works today, what is instruction-only, what needs an adapter, and what evidence an operator should collect before trusting a setup.

ECC's durable units stay in shared sources:

  • skills/*/SKILL.md
  • rules/
  • commands/
  • hooks/hooks.json
  • scripts/hooks/
  • MCP reference configs
  • session and observability contracts

Harness-specific files should only adapt loading, event shape, command names, or platform limits.

Compliance States

StateMeaning
NativeECC can install or verify the surface directly for this harness.
Adapter-backedECC has a thin adapter, plugin, or package surface, but parity differs by harness.
Instruction-backedECC can provide the guidance and files, but the harness does not expose the runtime hook/session surface ECC needs for enforcement.
Reference-onlyThe tool is useful as a design pressure or external runtime, but ECC does not yet ship a direct installer or adapter for it.

Matrix

The matrix below is rendered from scripts/lib/harness-adapter-compliance.js and verified by npm run harness:adapters -- --check.

<!-- harness-adapter-compliance:matrix-start -->
Harness or runtimeStateSupported assetsUnsupported or different surfacesInstall or onrampVerification commandRisk notes
Claude CodeNativeClaude plugin assets; skills; commands; hooks; MCP config; local rules; statusline-oriented workflowsClaude-native hooks do not imply parity in other harnesses./install.sh --profile minimal --target claude; Claude plugin installnpm run harness:audit -- --format json; node scripts/session-inspect.js --list-adaptersAvoid loading every skill by default; keep hooks opt-in and inspectable.
CodexInstruction-backedAGENTS.md; Codex plugin metadata; skills; MCP reference config; command patternsNative hook enforcement and Claude slash-command semantics are not equivalent./install.sh --profile minimal --target codex; repo-local AGENTS.md reviewnpm run harness:audit -- --format jsonTreat hooks as policy text unless a native Codex hook surface exists.
OpenCodeAdapter-backedOpenCode package/plugin metadata; shared skills; MCP config; event adapter patternsEvent names, plugin packaging, and command dispatch differ from Claude CodeOpenCode package or plugin surface from this reponode tests/scripts/build-opencode.test.js; npm run harness:audit -- --format jsonKeep hook logic in shared scripts and adapt only event shape at the edge.
CursorAdapter-backedCursor rules; project-local skills; hook adapter; shared scriptsCursor hook events and rule loading differ from Claude Code./install.sh --profile minimal --target cursornode tests/lib/install-targets.test.js; npm run harness:audit -- --format jsonCursor adapters must preserve existing project rules and avoid silent overwrite.
GeminiInstruction-backedGemini project-local instructions; shared skills; rules; compatibility docsNo full ECC hook parity; ecosystem ports must document drift from upstream ECC./install.sh --profile minimal --target gemininode tests/lib/install-targets.test.jsTreat Gemini ports as ecosystem adapters until validated end to end inside Gemini CLI.
ZedAdapter-backedZed project settings; flattened project rules; shared skills; commands; agentsZed external agents and native Agent Panel permissions are not Claude hooks./install.sh --profile minimal --target zednode tests/lib/install-targets.test.js; npm run harness:audit -- --format jsonKeep project settings conservative and do not copy BYOK/OpenRouter secrets into .zed/.
dmuxAdapter-backedsession snapshots; tmux/worktree orchestration status; handoff exportsdmux is an orchestration runtime, not an install target for skills/rulesnode scripts/session-inspect.js --list-adapters; dmux session target inspectionnode tests/lib/session-adapters.test.jsTreat dmux events as session/runtime signals, not as a replacement for repo validation.
OrcaReference-onlyworktree lifecycle; review state; notification; provider-identity design pressureNo ECC installer or direct adapter todayUse as a comparison target for worktree/session state requirementsnpm run observability:readyDo not import product-specific assumptions; convert lessons into ECC event fields.
SupersetReference-onlyworkspace presets; parallel-agent review loops; worktree isolation design pressureNo ECC installer or direct adapter todayUse as a comparison target for workspace preset taxonomynpm run observability:readyKeep ECC portable; do not require a desktop workspace to get basic value.
GhastReference-onlyterminal-native pane grouping; cwd grouping; search; notificationsNo ECC installer or direct adapter todayUse as a comparison target for terminal-first session groupingnode scripts/session-inspect.js --list-adaptersPreserve terminal ergonomics before adding visual UI assumptions.
Terminal-onlyNativeskills; rules; commands; scripts; harness audit; observability readiness; handoffsNo external UI, no automatic session control unless scripts are run explicitlyClone repo; run commands directly; use minimal profile for project installsnpm run harness:audit -- --format json; npm run observability:readyThis is the fallback contract; every higher-level adapter should degrade to it.
<!-- harness-adapter-compliance:matrix-end -->

Scorecard Onramp

Use this sequence before asking ECC to make a team or repo setup more autonomous:

bash
npm run harness:adapters -- --check
npm run harness:audit -- --format json
npm run observability:ready
node scripts/session-inspect.js --list-adapters
node scripts/loop-status.js --json --write-dir .ecc/loop-status

Read the result as a setup scorecard, not a product badge:

  • harness:adapters -- --check proves this public matrix still matches the adapter source data and required evidence fields.
  • harness:audit scores tool coverage, context efficiency, quality gates, memory persistence, eval coverage, security guardrails, and cost efficiency.
  • observability:ready proves the repo still exposes the local status, session, tool-activity, risk-ledger, and release-onramp signals.
  • session-inspect --list-adapters shows which session surfaces are actually inspectable in the current environment.
  • loop-status --json creates a machine-readable handoff/status payload for longer autonomous runs.

Data-Backed Scorecard Contract

Each adapter record exposes:

  • id
  • state
  • supported_assets
  • unsupported_surfaces
  • install_or_onramp
  • verification_commands
  • risk_notes
  • last_verified_at
  • owner
  • source_docs

The validator fails if a public adapter claim has no install path, verification command, risk note, owner, source doc, or verification date.

Operating Rules

  • Prefer small, additive adapters over harness-specific forks of the same workflow.
  • Do not call a harness native until the adapter has an install path and a verification command.
  • Keep Codex, Gemini, and Zed surfaces honest when enforcement is instruction-backed rather than runtime-backed.
  • Treat reference-only tools as design pressure until ECC has a direct adapter.
  • Keep the terminal-only path healthy; it is the portability floor.