---
name: parity-arc-closed
description: "Legacy-owl bare-bringup parity arc CLOSED 2026-06-17 — spt-claude-code v0.3.0 on spt-core 0.9.1, dogfood-verified end-to-end"
metadata: 
  node_type: memory
  type: project
  originSessionId: 16531b26-c5ac-4120-bfb8-113daef39d8f
---

**PARITY ARC CLOSED 2026-06-17.** spt-claude-code v0.3.0 reaches full **bare-bringup parity** with legacy owl on spt-core 0.9.1 — the milestone the whole revive session drove at (end-goal phase 1 of CLAUDE.md: "legacy-owl parity (spt-core + claude-spt)"; next phase = sptc→spt plugin flip that retires owl, still blocked by live legacy owl — see [[sptc-plugin-name-ruling]]).

**Closing chain:** v0.9.0 adapter-agnostic seed + bind-time resolution (ADR-0021, [[v090-harness-resolution]]) → v0.9.1 stem-before-first-dot matcher (renamed-in-use `claude.exe.old.<ts>`) + friendly seed wire-skew hint ([[v091-resolve-dotstem]]) → perri PREP-4 verify FULLY GREEN → spt-claude-code v0.3.0 ship.

**PREP-4 dogfood (perri, real published-artifact, all GREEN):** F1 seed on fresh broker (post `spt daemon stop`); F2b bare resolve on BOTH renamed `.old.<ts>` exe AND plain claude.exe → BOUND/READY no --adapter; full bare `spt api listen` → live_agent ready+alive + nested psyche + daemon-hosted Psyche; poll-stays-ready (`spt ready` → ready_agent, NO psyche — Option A livehost.rs:282 gate confirmed empirically). Re-acquired published v0.3.0 via `spt adapter add --release --tag v0.3.0` (GhReleaseManaged Pointer, binaries extracted) → `adapter use claude-spt` works → bare listen on renamed pid → SEEDED→BOUND→READY clean. cplugs sptc 0.1.3 pushed (43aa021, bare adapter-agnostic SessionStart seed).

**KEY deploy caveat (perri F1, confirmed):** a Seed-wire change needs a FULL broker bounce (`spt daemon stop`), NOT just a brain self-update — the broker is resident across brain updates (ADR-0004), so a stale broker can't deser the new Seed. KNOWN-HAZARDS 7.9 / REQ-HAZARD-BROKER-SEED-WIRE-SKEW.

**TWO post-closeout findings — TRIAGED 2026-06-17 (both dispositioned):**
1. **FINDING A = REAL spt-core robustness gap (QUEUED: mint REQ-HAZARD registry-first → todlando, after picker; NON-blocking).** Root-caused: registry.rs `manifest_dir` (line 146) — Copy-mode reads a locally-copied manifest (always present); POINTER-mode (delegated / GhReleaseManaged) reads the manifest LIVE from `source_dir` (line 149). A deferred install whose source_dir manifest isn't extracted → `load_manifest` fails → `registered()` (line 410 `filter_map(...ok())`) SILENTLY DROPS the adapter → host_binaries resolution finds zero candidates (ADAPTER_UNRESOLVED) AND resolve_option/set_active reads the absent manifest → bare os-error-2. NOT binary-coupling — for Pointer mode the MANIFEST itself lives in the deferred dir. FIX SHAPE: a registered Pointer adapter with an unresolvable source_dir manifest must surface a CLEAR diagnostic at BOTH the resolver (not silent-drop) and `adapter use` (not cryptic os-error-2); possibly extract/copy the manifest eagerly at register so host_binaries survive pre-binary-download.
2. **FINDING B = NOT spt-core scope.** Legacy-owl 1.11.25 listener (perri-scoped), a SEPARATE daemon from spt-core — the daemon-bounce correlation is most likely operator churn, not shared teardown. The `"sessions log seal failed: git failed (continuing)"` line is NON-FATAL by its own text (continues past the seal) → red herring for the poll-loop exit-1; real cause is elsewhere in legacy owl, the stack this arc RETIRES. RULING: keep legacy listener re-armed, no spt-core action; re-open as spt-core ONLY if repro'd on a CLEAN spt-core-only setup (sptc listener, zero legacy owl).
