Skip to content

docs: multi-harness design + runtime-binding contract amendments (#92) - #93

Closed
ashwin-pc wants to merge 1 commit into
mainfrom
docs/multi-harness-design
Closed

docs: multi-harness design + runtime-binding contract amendments (#92)#93
ashwin-pc wants to merge 1 commit into
mainfrom
docs/multi-harness-design

Conversation

@ashwin-pc

Copy link
Copy Markdown
Owner

Summary

Documentation-only PR for #92: adds docs/multi-harness-design.md (companion to docs/runtime-binding-design.md) and records the #92 contract amendments in the runtime design doc so the two tracks share one seam definition before Stage 3 freezes the runner wire protocol.

What's in the design doc

  • Invariants: runtime axis keeps parity-by-construction (no capability excuses transport drift); harness axis introduces capability flags that may come only from the harness. The Stage-3 ratchet asserts identical behavior and identical capability set across transports.
  • Track-0 contract: typed agent-neutral event union (all 21 pi AgentSessionEvent types mapped — disposition table in the #92 Track-0 comment), capabilities DTO block, generic interaction request/respond channel, {runtimeId, harnessId} binding schema, plus the never-ratchet and replay-fixture loss-prevention mechanics.
  • AgentAdapter seam replacing PiWebSession (interface sketch; pi adapter contains all pi coupling; mock becomes a real contract test double).
  • Bindings: ACP-first (hermes acp native, codex-acp, claude-agent-acp) with per-harness escalation paths.
  • Differentiators (from the codex/claude/hermes audits): two-tier rule — cross-harness semantics (plan_update, subagent_*, interactions, compaction/usage) become union variants; harness-unique surfaces (Hermes memory/skills/automations, Claude task control/rewind/context breakdown, Codex review/quota/aggregate diff) ride the contribution kernel via per-harness side channels. Documents the three structurally different side-channel shapes (Hermes: side server; Claude: Query-bound → SDK-direct flip; Codex: same server, upstream adapter enhancements first).
  • Delivery plan and validation strategy (Track 0 → R1 → parallel runtime/harness tracks; black-box adapter contract suite).

Runtime doc amendment

Surgical: an amendments callout under the title, the event-boundary sentence updated (typed union instead of raw pi events verbatim), and the Stage-4 binding map extended to {runtimeId, harnessId}. Everything else in the reviewed plan is unchanged.

Related

Docs only — no code changes; typecheck/tests unaffected.

- docs/multi-harness-design.md: agent-neutral session contract, AgentAdapter
  seam, ACP-first bindings with per-harness escalation, two-tier differentiator
  rule (union variants vs contribution-kernel panels), side-channel shapes,
  delivery plan and validation strategy.
- docs/runtime-binding-design.md: record the #92 amendments (typed event
  union, capabilities block, interaction channel, {runtimeId, harnessId}
  bindings) at the Stage-2/3 contract seam.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7a467df163

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

```

Bindings map `sessionId -> RuntimeRef`. Cwd history is runtime-relative. The drawer may render cached locator rows immediately and reconcile in the background, but a successful authoritative runtime listing is required before removing stale rows.
Bindings map `sessionId -> { runtime: RuntimeRef, harnessId: HarnessId }` (amendment #4; harness routing may land after runtime routing, but the store schema reserves the field). Cwd history is runtime-relative. The drawer may render cached locator rows immediately and reconcile in the background, but a successful authoritative runtime listing is required before removing stale rows.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Unify the binding-store value shape

When Stage 4 implementers follow this runtime-model definition, they will persist { runtime: RuntimeRef, harnessId }, while the amendment at line 5 and the companion contract/delivery sections specify { runtimeId, harnessId }. These formats are incompatible—the former retains kind, cwd, and sandboxId, while the latter names only an identifier—so separate tracks could implement mutually unreadable binding stores. Choose one canonical schema and use it throughout both documents.

Useful? React with 👍 / 👎.

@ashwin-pc

Copy link
Copy Markdown
Owner Author

Closing per repo workflow: plans live in issues, PRs only when explicitly requested. Full design doc content moved to #92.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant