{
  "summary": "The authoritative release gate is layered, and only one layer runs against the installed/published artifact. `docs/CI.md` and `docs/RELEASE-RUNBOOK.md` require (1) source-tree deterministic gates, then (2) tagged release acquisition plus a real native OMP endpoint sequence, repeated independently on x86_64 Windows and x86_64 Linux. On this Windows x64 host, the Windows half can be performed locally with two local terminals; it does not require another node or subnet. Full release acceptance still requires a separate disposable x86_64 Linux host with real `spt` and `omp`; a Windows Zig cross-build is packaging evidence, not Linux runtime acceptance. Cross-node transport is explicitly outside the adapter gate. No commands were run.\n\nThe smallest existing real-artifact acquisition check for published v0.2.0 is, from Git Bash/POSIX `sh` at repository root:\n\n`OMP_SPT_ACCEPTANCE=1 OMP_SPT_RELEASE_TAG=v0.2.0 OMP_SPT_EXPECTED_VERSION=0.2.0 sh ci/publish/release-acquire-int.sh`\n\nThe multiline form in `docs/RELEASE-RUNBOOK.md` is equivalent. Prerequisites are `spt` on `PATH`, `gh` on `PATH`, authenticated `gh auth status`, network access to `BigscreenVR/omp-spt`, and a disposable adapter registry. The script deliberately removes any existing `omp-spt` registration before acquisition and removes it again through its exit trap; therefore it must not be used while preserving a hosted endpoint. It checks tagged acquisition success, an active release install whose source contains `_github` and repository identity `BigscreenVR-omp-spt`, exact adapter version `0.2.0`, and packaged string `adapter_label == \"oh-my-pi (spt)\"`. Terminal success signal: `RELEASE-ACQUIRE-INT OK`; any missing opt-in variable/tool/auth, wrong tag/version/source/string, or acquisition failure is a nonzero `FAIL`.\n\nBecause that integration removes the registration on exit, reinstall before the native scenario:\n\n`spt adapter add --release BigscreenVR/omp-spt --tag v0.2.0`\n\n`spt adapter version omp-spt`\n\nExpected version output is exactly `0.2.0`. Prerequisites from `README.md`/quickstart are Windows x86_64, Oh My Pi 16.3.15 or newer, and spt-core 0.29.0 or newer. Use disposable endpoint ids, not a long-lived operator id.\n\nThe smallest repository-defined Windows native scenario is in `docs/CI.md`: terminal A runs `spt endpoint run --adapter omp-spt --id omp-spt-accept-fresh --create`; terminal B on the same Windows node runs `printf 'Reply with exactly OMP-SPT-ACCEPTED after reading this message.' | spt ring omp-spt-accept-fresh --timeout 120` and observes `spt endpoint list --json`. Expected observables are the real attached interactive OMP TUI, successful extension binding/reachability, one ordinary visible OMP turn with sender stub plus full event context, the turn visibly executing, a correlated reply printed by `spt ring`, and endpoint state idle → busy → idle. A rejected/failed turn must return an explicit failure rather than silently disappear. This is same-node and needs two terminals, not two hosts.\n\nThe remainder of the native sequence is manually specified: record the bound OMP session id; attempt OMP's in-TUI new-session and resume/switch actions and require an `omp-spt` warning with unchanged binding; run `spt endpoint shutdown omp-spt-accept-fresh`; then `spt endpoint run --adapter omp-spt --id omp-spt-accept-resume --resume <omp-session-id>`. The resumed attached TUI must contain the prior transcript and remain switch-blocked. Final command: `spt endpoint shutdown omp-spt-accept-resume`; expected outcome is session ended, listener reaped, TUI status cleared, endpoint no longer online, and no orphan process.\n\nRelease-blocking documentation gaps prevent the published gate from being fully executable verbatim: (1) no repository command is given to obtain `<omp-session-id>`; (2) the exact OMP in-TUI new/resume/switch actions are unnamed; (3) `docs/CI.md` requires ReadyAgent and LiveAgent checks but supplies no commands for either flow or for triggering/observing a Psyche event. More seriously, the published spt public contract says ready-vs-live is selected by the resolved manifest/profile: a resolved `[session.psyche_init]` means LiveAgent, while a profile without it means ReadyAgent. `adapter/omp-spt.toml` includes `[session.psyche_init]` in the base manifest and declares no `[profiles.*]` overlay, so no shipped ReadyAgent option is discoverable from the manifest. Thus the demanded ReadyAgent scenario is not currently executable from the documented shipped option as written. The public spt docs expose `spt how-to live` as always-current live guidance, but the repository release gate does not record that output as a concrete acceptance procedure.\n\nThis incompleteness is corroborated by `traceable-reqs.toml`: `REQ-OMP-LIVE-RELEASE-GATE` is explicitly pending and inactive with `required_stages = []`, stating fake-process evidence must not satisfy it. Project-local `.spt/emphasys-commune.md` records that v0.2.0 is stable/published but that no real two-target live endpoint acceptance was represented as completed. Therefore deterministic passes, prior acquisition/update evidence, and source-level same-node tests must not be reported as completion of the native two-target gate.\n\nThe full source-tree deterministic release commands are exactly `sh tests/ci-gates.sh`, `sh ci/run-gates.sh`, and `node tests/omp-extension.mjs`. They validate repository source, not the installed release. Required release-grade dependencies include POSIX shell/Git Bash and Unix utilities, Node.js, Python with `tomllib` or `tomli` plus `jsonschema`, Rust/Cargo, and `traceable-reqs`; documented dependency `SKIP` output is incomplete for a release and must be provisioned/rerun. Expected terminal signals are `CI-GATES OK`, `=== RESULT: PASS ===`, and `OMP-EXTENSION OK`. Focused source-only checks are `sh tests/native-launch-manifest.sh` → `NATIVE-LAUNCH-MANIFEST OK`, `sh tests/release-acquire.sh` → `PASS: release-acquire` (hermetic fake commands only), and `node tests/omp-extension.mjs` → `OMP-EXTENSION OK`. None substitutes for real endpoint acceptance.\n\nSeparate release-path checks in the runbook are: unpinned latest acquisition `spt adapter add --release BigscreenVR/omp-spt` then `spt adapter version omp-spt` → `0.2.0`; and, only on a disposable node retaining a prior stable adapter, `spt adapter update omp-spt` then `spt adapter version omp-spt` → `0.2.0`, followed by endpoint stop/restart to load the new helper/extension. Those establish latest/update behavior, not the fresh/resume/message/role native contract.",
  "files": [
    {
      "path": "docs/CI.md",
      "description": "Primary executable native acceptance specification. Defines exact tagged install/version, fresh endpoint, same-node ring/state, resume, role scenarios, shutdown outcomes, two-target independence, and the explicit cross-node exclusion. Also contains the three deterministic gate commands."
    },
    {
      "path": "docs/RELEASE-RUNBOOK.md",
      "description": "Release operator sequence. Section 7 wraps tagged acquisition and requires the full `docs/CI.md` scenario on separate Windows and Linux acceptance hosts; sections 8–9 define unpinned latest and update checks. Lists release prerequisites and warns that release SKIPs are not passes."
    },
    {
      "path": "ci/publish/release-acquire-int.sh",
      "description": "Only existing script that directly validates the published/tagged install. Requires opt-in variables, real `spt`, authenticated `gh`, and network; mutates/removes the real registration. Verifies active release source, repository identity, exact version, and packaged adapter label; final success is `RELEASE-ACQUIRE-INT OK`."
    },
    {
      "path": "tests/release-acquire.sh",
      "description": "Hermetic behavior test for the acquisition script using fake `spt` and `gh`. It validates fail-closed preflight/tag/version behavior but does not access GitHub or the installed adapter. Final success is `PASS: release-acquire`."
    },
    {
      "path": "ci/run-gates.sh",
      "description": "Deterministic gate dispatcher: shell syntax, manifest schema/behavior/cutover/native launch, archive packaging, hermetic release-acquisition behavior, Rust helper tests/release build, and traceable requirements. Final success is `=== RESULT: PASS ===`; it is source-tree evidence, not native installed-artifact evidence."
    },
    {
      "path": "tests/ci-gates.sh",
      "description": "Guards that the deterministic dispatcher retains required native gates and drops stale inherited gates. Final success is `CI-GATES OK`."
    },
    {
      "path": "tests/native-launch-manifest.sh",
      "description": "Smallest focused static launch-contract check. Confirms native self/resume command templates, ReadyAgent+LiveAgent advertisement, `.spt` continuity directories, and absence of RPC launch. Final success is `NATIVE-LAUNCH-MANIFEST OK`."
    },
    {
      "path": "tests/omp-extension.mjs",
      "description": "Deterministic fake-process extension suite covering bind/listen, message context, serialized custody, correlated replies/failures, busy/idle, retry/fail-closed behavior, immutable binding, and shutdown. Final success is `OMP-EXTENSION OK`; it does not launch real OMP or inspect the installed release."
    },
    {
      "path": "adapter/omp-spt.toml",
      "description": "Version-of-truth is 0.2.0; minimum spt-core is 0.29.0; hostable types advertise exactly LiveAgent and ReadyAgent; fresh/resume use packaged native extension. The base includes `[session.psyche_init]` and there are no profiles, creating an unresolved executable ReadyAgent acceptance path under the published role-selection contract."
    },
    {
      "path": "README.md",
      "description": "Windows/Linux x86_64 support and prerequisites: real OMP >=16.3.15 and spt-core >=0.29.0. Provides PowerShell/cmd/Git-Bash install commands and the attach-default native launch command."
    },
    {
      "path": "docs-site/src/quickstart.md",
      "description": "Copy-paste installation and fresh native endpoint commands; confirms attach is default and describes expected bind, idle/listen, message-turn, reply, and shutdown lifecycle."
    },
    {
      "path": "docs/adr/0013-release-gate-stops-at-the-adapter-boundary.md",
      "description": "Binding architectural decision: real native acceptance includes fresh/attach/message/state/resume/switch-block/shutdown/both roles; cross-node messaging is outside the adapter release gate."
    },
    {
      "path": "SCOPE.md",
      "description": "Authoritative release boundary and exclusions. Requires same-node native endpoint acceptance and explicitly excludes cross-node adapter testing."
    },
    {
      "path": "traceable-reqs.toml",
      "description": "Shows `REQ-OMP-LIVE-RELEASE-GATE` as explicitly pending/inactive (`required_stages = []`) until an actual ADR-0013 live acceptance run occurs."
    },
    {
      "path": ".spt/emphasys-commune.md",
      "description": "Project-local release snapshot: identifies stable v0.2.0/tag/asset/hash and explicitly records that no real two-target live endpoint acceptance was represented as completed; lists that acceptance as pending follow-up."
    }
  ],
  "architecture": "Acceptance topology:\n\n1. Repository-source layer (local Windows-capable through Git Bash): `tests/ci-gates.sh` → `ci/run-gates.sh` plus direct `tests/omp-extension.mjs`. This proves source manifest/archive/helper/extension contracts but not the packaged installed runtime.\n\n2. Published-artifact acquisition layer (local Windows-capable): `ci/publish/release-acquire-int.sh` with `OMP_SPT_ACCEPTANCE=1`, `OMP_SPT_RELEASE_TAG=v0.2.0`, and `OMP_SPT_EXPECTED_VERSION=0.2.0`. This proves GitHub tagged acquisition, flattened host payload registration, manifest version, and packaged string. It destructively isolates/removes the adapter registration and therefore must be followed by reinstall.\n\n3. Native adapter layer (local Windows half): exact tagged reinstall; attach-default fresh native OMP endpoint in terminal A; same-node `spt ring` plus `spt endpoint list --json` from terminal B; interactive immutable-binding checks; shutdown and launch-time resume; ReadyAgent and LiveAgent/Psyche behavior; final graceful shutdown. Expected evidence is target/version, disposable ids, fresh/resumed session ids, actual TUI, correlated reply, idle/busy/idle, blocked switches, both role outcomes, and offline/no-orphan shutdown.\n\n4. Native platform parity layer (not executable from this host under current constraints): repeat layers 2–3 independently on a disposable `x86_64-unknown-linux-gnu` host. No SSH hosts are configured. Cross-compiling ELF with Zig on Windows can satisfy build/archive packaging but cannot satisfy this runtime layer. Windows and Linux results cannot substitute for one another.\n\n5. Network boundary: no second node is needed for messaging acceptance; the required message is same-node. Cross-node/subnet transport is owned by spt-core and must neither replace nor block the adapter gate.\n\nCurrent executability defect: layers 1–2 are command-complete and most of layer 3 has concrete commands, but the session-id discovery, named OMP switch actions, and ReadyAgent/LiveAgent workflows are prose-only. Published spt docs (`https://sabermage.github.io/spt-releases/harness-contract/patterns.md`, also present in `llms-full.txt`) define role selection by resolved profile and state that `[session.psyche_init]` makes the endpoint live. Since the shipped base manifest contains that table and no ready profile exists, the required distinct ReadyAgent proof has no discoverable shipped command path. Consequently the repository itself correctly leaves `REQ-OMP-LIVE-RELEASE-GATE` inactive, and the complete native acceptance gate cannot currently be claimed from the available executable artifacts."
}