---
name: v0303-published
description: v0.30.3 counter 54 PUBLISHED — self-applying update-wedge seamless-swap fix +
metadata: 
  node_type: memory
  type: project
  originSessionId: 41b1b5f7-6040-4af3-9d83-9336ab847866
---

v0.30.3 PUBLISHED — counter **54** @ merge SHA `3136702` (tag points at merge commit). Latest on SaberMage/spt-releases, isDraft=false, 10 assets, update-set `version:54 product_version:0.30.3`.

**Shape (patch):** ONE cut = base main @3ea09bf (already carried v0.30.2 pump W1/W2 + #70 gateway + #71 F-035 guard) + doyle-gated update-wedge fix `ce053dc` on top + bump commit `82f8db4`. Bump-in-PR (PR #72) with the gated fix RIDING IN the release PR — the wedge fix was NOT yet on main (branch `update-wedge-drain-drive`, 1 commit ahead), so I based the release branch on `ce053dc` and the single PR merged fix+bump together. Matches doyle's "base @3ea09bf + wedge fix on top."

**CHANGELOG surface (observable voice, zero internal codes):**
- update-wedge: `fetch --apply` could freeze all live PTYs ~30s then rollback → now seamless swap. **SELF-APPLYING** — fix is IN 54's brain; updating TO 0.30.3 is what makes the NEXT in-place update seamless (updater runs the same readiness trial; the drain-drive must be in the incoming brain). See [[update-wedge-rca-v53]].
- #71 F-035: active-only send-window drain honor (no leak on active→idle edge).
- #70 GATEWAY-LIVENESS: `endpoint list --json` liveness parity + rest-state carry.
- EXCLUDED per gate: 2 deferred seed REQs (CLEAN-CLOSE + LIVEHOST-RECONCILE-SILENT) = registry-only, no user surface.

**KEY LESSON — fix riding in the release PR:** when a doyle-gated fix is on its own branch (not merged to main) and belongs in the release, base the `release/vX` branch on the FIX branch tip, add bump+CHANGELOG on top, PR base=main → one merge lands fix+bump together. Confirm the PR diff = exactly {fix commit(s) + clean bump} and nothing else (doyle verified: fix +592/5, bump = Cargo.toml + Cargo.lock first-party + CHANGELOG +26).

**CI:** all green — n1-gate ×2 (kitsubito/hfenduleam) + test ×2 + traceability; twohost SKIPPED (no [twohost] tag). No flakes this cut.

Post-publish field-verify (doyle-driven): perri is on HFENDULEAM w/ 7 live agents — her live `fetch --apply` TO 0.30.3 leg is the real regression test but HOLDS for brandon's go (operator-timed apply, can't self-trigger on a 7-live-agent box); flynn (non-critical) queued. So the seamless-swap fix is PUBLISHED + gate-proven (A'-rig int) but the LIVE field self-heal confirmation is still pending operator go as of 2026-07-09. Counter re-confirmed from published update-set metadata (53→54).
