# omp-spt scope

Status: **locked** (2026-07-14)

## Product

`omp-spt` is the OMP-native SPT harness adapter. It starts or resumes a native
Oh My Pi TUI inside an spt-core broker PTY and loads a packaged OMP extension
that owns messaging and lifecycle integration.

The public surface is deliberately narrow:

- adapter id and binary: `omp-spt`;
- release repository: `BigscreenVR/omp-spt`;
- host application: Oh My Pi (`omp`);
- endpoint types: `ReadyAgent` and `LiveAgent`;
- distribution: one multi-platform `adapter.spt`;
- updates: the manifest's `gh_release` avenue.

## In scope

1. **Native hosted sessions**
   - Fresh and native-resume launch through a validating shim.
   - OMP remains the terminal owner and renders the attachable TUI.
   - The extension binds the real OMP session id to the requested endpoint.

2. **Core-custodied delivery**
   - spt-core owns durable message custody; the extension adds no second spool.
   - Listener events surface immediately through OMP's native message rail.
   - Active-only traffic surfaces independently through authenticated polling at every active context boundary.
   - Assistant output remains local; outbound peer messaging requires explicit CLI or shortform use.
   - Honest busy/idle state uses prompt-start transitions plus OMP steady-state truth.
   - Established endpoints preserve local OMP work while listener, state, or poll communications recover visibly.

3. **Immutable identity**
   - One OMP session per endpoint lifetime.
   - In-TUI session switching, branching, creation, and resume are blocked.
   - A different session requires endpoint stop plus explicit relaunch.

4. **Live continuity**
   - ReadyAgent and LiveAgent only.
   - Bounded, per-event OMP Psyche turns; no resident adapter-side Psyche loop.
   - OMP history, digest, and echo-commune implementations.
   - Commune and signoff drops under project-local `.spt/`.

5. **Public-contract verification**
   - Published manifest schema and public `spt api`/CLI surface only.
   - Minimum spt-core version `0.31.0`, required for identity-preserving
     listener authentication; v0.29.0 remains the relative continuity-path floor.
   - Deterministic unit/integration checks plus a same-node native endpoint
     release gate.

6. **Capability parity**
   - Extension-native ready/live activation for already-open OMP sessions,
     including explicit live auto-resume and extension-owned listener custody.
   - Safe-boundary delivery during active turns and automatic receivability
     restoration after abnormal turn termination.
   - Startup briefs, targeted hints, compatible-update notices, packaged
     commune/signoff/role/setup skills, native checkpoint continuity, and the
     cross-harness peer-message shortform.
   - OMP-native provider/profile routing satisfies alternate-routing parity.
   - Windows x86-64, GNU Linux x86-64, and static Linux x86-64 musl helper
     targets, each with durable machine-readable release evidence.


## Out of scope

- A headless RPC bridge or any second endpoint topology.
- Any foreign-harness plugin, hook, context-injection, command launcher, update
  reconciliation, or model-wrapper compatibility layer.
- Worker endpoint advertisement for OMP subagents.
- Migration of inherited `.spt` predecessor continuity.
- Switching the bound OMP session inside a running endpoint.
- Cross-node adapter tests; subnet transport is an spt-core responsibility.
- An adapter-owned copy of spt-core state, transport, spool, or auth logic.

## Skill policy

The public OMP `omp-plugins` provider is the canonical delivery seam for
model-driven adapter capabilities packaged beside the loaded extension. The
adapter will ship OMP-native skills for commune (including checkpoint mode),
signoff, durable role, and the agent-driven half of setup; release verification
must prove discovery from the installed `adapter.spt` layout. Deterministic
lifecycle infrastructure remains extension-owned: ready/live activation,
binding, listener custody, delivery, activity, and shutdown are not delegated
to model-executed skills.

## Release boundary

A release must prove fresh launch, attachability, listener and active-poll
delivery, correlated explicit reply, lifecycle state, native resume, blocked
in-TUI switching, graceful shutdown, nonfatal communications recovery, and both
endpoint types. It does not re-prove spt-core's subnet transport.

## Decision index

| Decision | Record | Status |
|---|---|---|
| OMP-only clean cutover | ADR-0008 | Locked |
| Native OMP for every endpoint | ADR-0009 | Locked |
| Delivery self-heals without stopping local work | ADR-0010 | Locked |
| Endpoint/session binding is immutable | ADR-0011 | Locked |
| Continuity lives under `.spt/` | ADR-0012 | Locked |
| Release gate stops at adapter boundary | ADR-0013 | Locked |
| Extension-owned session activation | ADR-0015 | Locked |
| Agent capabilities split by native seam | ADR-0016 | Locked |
| Active-turn delivery uses safe boundaries | ADR-0017 | Locked |
| Checkpoint resets context natively | ADR-0018 | Locked |
