{
  "findings": [
    {
      "title": "Reject aborted assistant output before sending outcomes",
      "body": "`completeTurn` treats any nonempty final assistant text as a successful peer outcome and then parses it for `@<...@>` side effects without checking the assistant message's `stopReason`. If the operator presses Esc or the provider fails after emitting partial text, OMP records an `aborted`/`error` assistant and emits `agent_end`; the partial text is returned to the inbound sender and a completed shortform is still dispatched despite cancellation. Gate settlement and shortform dispatch on a successful terminal assistant message, returning an explicit abnormal-turn failure and no outbound side effects for `aborted` or `error`. A fix is pending in the active review workstream.",
      "priority": 1,
      "confidence": 0.99,
      "file_path": "adapter/strings/omp-spt.mjs",
      "line_start": 1849,
      "line_end": 1855
    },
    {
      "title": "Bound concurrent peer-shortform deliveries",
      "body": "One assistant response can expand an unlimited number of shortforms and comma-separated targets, and `Promise.all(deliveries.map(...))` starts every `spt send` child at once. A sufficiently large but valid model response can therefore exhaust process handles, descriptors, memory, or CPU before the per-command timeout helps. Enforce limits on delivery count and body bytes and send through a small fixed-width worker pool while preserving per-target results. A fix is pending in the active review workstream.",
      "priority": 1,
      "confidence": 0.99,
      "file_path": "adapter/strings/omp-spt.mjs",
      "line_start": 1807,
      "line_end": 1814
    },
    {
      "title": "Preserve reply correlation across native compaction",
      "body": "An active-boundary item stores the transcript-wide assistant count as its reply baseline, and completion later assumes that count is monotonic. OMP automatic/native compaction rewrites and shrinks message history, so an item injected before compaction can finish with a valid new assistant while the compacted transcript still contains no more assistants than the old baseline; `extractReplyAfterAssistantCount` then returns empty and the sender receives a false `turn ended without an assistant response`. Correlate by stable turn/message identity or explicitly rebase both turn and item baselines on compaction, and cover a pre-injection-history-shrink-valid-reply sequence.",
      "priority": 2,
      "confidence": 0.94,
      "file_path": "adapter/strings/omp-spt.mjs",
      "line_start": 1847,
      "line_end": 1855
    },
    {
      "title": "Block session changes while activation is reserved",
      "body": "The session-change guard activates only after `activated` or `token` is set, but `/ready` and `/live` reserve activation and then await endpoint discovery, selection, bind, listener startup, and state synchronization before those fields are populated. A session switch or branch during that interval is therefore allowed; the pending activation can subsequently bind the new OMP session while retaining the original activation context/session identity, violating the immutable endpoint/session custody contract. Mark activation as in flight before the first await and include that reservation in all session-tree guards, clearing it on every failure path. A fix is pending in the active review workstream.",
      "priority": 1,
      "confidence": 0.95,
      "file_path": "adapter/strings/omp-spt.mjs",
      "line_start": 1727,
      "line_end": 1734
    },
    {
      "title": "Bound the complete startup update probe",
      "body": "Only the GitHub `fetch` receives the 1.5-second update-probe budget; the same probe also launches three local commands with the general 15-second timeout, and the first `before_agent_start` awaits the aggregate promise. If any installed `spt` invocation stalls, starting the first model turn pauses for up to 15 seconds even though update notices are optional and the configured probe timeout is 1.5 seconds. Apply the probe deadline to every constituent command or inject notices only if the aggregate is already settled by the bounded deadline. A fix is pending in the active review workstream.",
      "priority": 2,
      "confidence": 0.98,
      "file_path": "adapter/strings/omp-spt.mjs",
      "line_start": 808,
      "line_end": 812
    },
    {
      "title": "Avoid launching an interactive OMP TUI from setup",
      "body": "The packaged setup skill tells the current OMP agent to run `spt endpoint run --adapter omp-spt --id <id> --create`, whose default behavior is to attach the native OMP TUI. Executing that long-lived interactive command from the current agent's command tool nests a second OMP session and does not return for the skill's subsequent `whoami` verification, contradicting the adjacent instruction not to replace the native TUI. Setup should direct the operator to run hosted-endpoint creation in a separate terminal, while `/ready` or `/live` remains the only in-session activation path. A fix is pending in the active review workstream.",
      "priority": 2,
      "confidence": 0.96,
      "file_path": "adapter/strings/skills/setup/SKILL.md",
      "line_start": 41,
      "line_end": 47
    },
    {
      "title": "Validate release evidence before promoting the tag",
      "body": "The runbook marks the GitHub release stable and latest in section 8, but does not author or run the release-evidence validator until the later release-record section. Following the documented sequence can therefore publish a release before the required three target records have passed schema, source-identity, target-completeness, artifact-digest, acquisition, and native-acceptance checks; failure then leaves an invalid release already selected by the default install path. Move record creation and the combined `validate-release-evidence.py` gate before `gh release edit`, and attach the validated records/logs before promotion. A fix is pending in the active review workstream.",
      "priority": 1,
      "confidence": 0.99,
      "file_path": "docs/RELEASE-RUNBOOK.md",
      "line_start": 265,
      "line_end": 273
    }
  ],
  "overall_correctness": "incorrect",
  "explanation": "The reviewed milestone still has four release/high-impact defects and three medium-impact defects: abnormal turns can leak outcomes and side effects, shortform fan-out is unbounded, activation has an in-flight custody race, compaction can break reply correlation, optional update checks can stall first-turn startup, setup can nest an interactive TUI, and the runbook promotes before validating evidence. All seven findings have been assigned to active fix workstreams; no additional independent runtime or release blockers were established, and packaged-skill direct-load remains a native release-acceptance item rather than a deterministic gate defect.",
  "confidence": 0.98
}