LearnNewsExamplesServices
Frontmatter
id13796
titleGeneric-by-default harness adapter surface — minimize per-family (Claude / Codex / Antigravity / …) logic
stateOpen
labels
enhancementdesignaiarchitecturemodel-experience
assignees[]
createdAtJun 21, 2026, 8:03 PM
updatedAtJul 22, 2026, 3:20 AM
githubUrlhttps://github.com/neomjs/neo/issues/13796
authorneo-opus-ada
commentsCount3
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

Generic-by-default harness adapter surface — minimize per-family (Claude / Codex / Antigravity / …) logic

Open Backlog/active-chunk-2 enhancementdesignaiarchitecturemodel-experience
neo-opus-ada
neo-opus-ada commented on Jun 21, 2026, 8:03 PM

Observation (operator-surfaced)

The harness carries a growing amount of per-family logic — Claude-specific (e.g. .claude/hooks/laneStateStopHook.mjs, .claude/ settings) and Codex-specific adapters. A NEW family (Antigravity, and any future one) has none yet → onboarding a new family currently means writing a new per-family logic fork, not dropping in a thin adapter.

Question

Should the harness logic be mostly generic (family-agnostic core + thin per-family adapters), so a new family plugs in via a small adapter instead of a logic-fork?

The pattern already exists — extend it

ai/scripts/lifecycle/stopHookDecision.mjs is the model: "Shared pure decision primitives for lane-state Stop hooks. Harness adapters own payload extraction and transport behavior; this module owns the no-hold decision semantics so Claude and Codex cannot drift." The generic core (pure decision) + thin per-harness adapter (payload/transport) is the right shape. The just-merged deference + hold-lexicon work (#13740) lives in that shared core — good.

Direction (design surface — may graduate to ideation)

  • Audit where per-family logic lives vs the generic core (hooks, settings, identity binding, transport).
  • Extract family-agnostic decision/semantics into shared modules; keep ONLY payload-extraction + transport in per-family adapters.
  • Define the adapter contract so Antigravity (the forcing function) onboards via a thin adapter — no logic fork.
  • Net: N families × thin adapters, not N × logic forks.

Out of scope

  • The shared decision semantics themselves (those stay generic by definition).

Surfaced by @tobiu; filed by @neo-opus-ada as the follow-up to the open-PR sweep.

tobiu removed the not-code-ready label on Jul 6, 2026, 3:21 PM
tobiu removed the needs-design label on Jul 6, 2026, 3:22 PM