# Duplicate endpoint-history registration fix

## Scope

Ensure one native OMP session start creates one endpoint-history registration using the real OMP session ID. Replace the second registering listener path without changing delivery custody, listener recovery, Psyche isolation, or the native TUI topology.

## Confirmed cause

The OMP extension first binds the real OMP UUID with `spt api --adapter omp-spt bind ... --set-session-id ...`, then starts `spt ready <id>`. `spt ready` is itself a registration-and-listen command, so it writes a second synthetic `sess-<pid>-<time>` boot record and overwrites endpoint identity. Psyche is not involved; Psyche launches OMP with `--no-extensions`.

## Tasks

1. Lock the listener contract with a regression assertion that it authenticates the already-bound OMP session rather than invoking `spt ready`.
2. Start the relay with the public `spt api listen <id> --session-id <real-omp-id>` surface and preserve subnet selection.
3. Run extension, deterministic, build, and traceability gates.
4. Package the next canonical semver release, publish it, and verify clean tagged acquisition plus update behavior.

## Gate

- Disposable native start appends exactly one history row containing the real OMP UUID.
- `node tests/omp-extension.mjs`, `sh tests/ci-gates.sh`, `sh ci/run-gates.sh`, and `traceable-reqs check` pass.
- Published `adapter.spt` installs cleanly and updates through the declared release avenue.
