# OMP endpoint title and session naming plan

## Scope

Give every spt-hosted OMP endpoint a stable operator-facing session name and a status-bearing terminal title.

- Session name: `<endpoint-id> @ <node> (<project-name>/)`.
- Idle window title: `○ <endpoint-id> @ <node> (<project-name>/)`.
- Busy window title: cycle the braille spinner glyphs in `⣾⣽⣻⢿⡿⣟⣯⣷` ahead of the same stable name.
- Degrade like `spt-claude-code`: unknown project omits the project suffix; unknown node degrades to the bare endpoint id.

## Design

1. Extend `launch-omp` with `--node`, using the published `{node}` manifest fill. Compute the project from the launch working-directory basename. Pass both values to the packaged extension through non-secret child environment variables.
2. Keep one JavaScript formatter for the stable display name. On successful activation, call OMP's public `pi.setSessionName()` and `ctx.ui.setTitle()` APIs.
3. Drive the busy glyph through one bounded interval owned by the extension. Start it on `agent_start`; stop it and restore the idle title on completion, failure recovery, and teardown. Never put the animated glyph in the session name.
4. Preserve the existing footer status separately; title naming is operator navigation, not protocol state.

## Requirements and evidence

Add and activate `REQ-OMP-SESSION-TITLES` before implementation. Evidence:

- `doc`: native integration documentation describing both name shapes and degradation.
- `impl`: manifest/launcher propagation plus extension naming and animation lifecycle.
- `unit`: launcher argument/environment tests and extension activation/busy/idle/teardown title tests.

## Gate

- Targeted Rust launcher tests.
- `node --test tests/omp-extension.mjs`.
- Native smoke test proving the session name and title in a disposable endpoint.
- `bash ci/run-gates.sh` and `traceable-reqs check` green.
- Release packaging, tagged acquisition, update-path verification, and stable GitHub release.
