---
name: v0291-published
description: "v0.29.1 published 2026-07-08 (counter 50, PATCH); inject settle-gate re-arm per delivery"
metadata: 
  node_type: memory
  type: project
  originSessionId: b8785184-d487-4bba-9217-84d045b5c5d5
---

v0.29.1 PUBLISHED 2026-07-08 — counter 50, PATCH 0.29.0→0.29.1. LIFECYCLE-TRUTH follow-on: inject settle-gate re-arm per delivery on an observable PTY (@ddf7f8e, branch fix/inject-settle-rearm) — long multi-line messages delivered into a live session no longer arrive head-truncated after a mid-life clear/checkpoint (0.29.0 covered only session START; 0.29.1 extends to EVERY clear during a session's life). Reliability-only; NO CLI/verb/schema surface change vs 0.29.0.

**Drive:** deployah drove SOLO end-to-end (doyle handed off after over-stepping, operator-corrected; doyle stood down, banked counter + did nothing further). PR #59 release/0.29.1→main. CI all green (test both legs, n1-gate both, traceability; twohost skipped = no tag). FF-merge via `gh pr merge 59 --merge` → main @187d14b (merge commit). Tag v0.29.1 on 187d14b, pushed → release.yml built binaries+assemble → assemble creates DRAFT on **SaberMage/spt-releases** as `untagged-…` (NOT on spt-core — that's why `gh release view v0.29.1` in spt-core = "release not found"; drafts live in the releases repo).

**Sign+publish:** `cargo run -p xtask -- release-publish --tag v0.29.1 --key-id rel-primary-2026 --version 50` (SPT_RELEASE_SEED present in deployah env, len 64 — no relay needed). Exit 0, clean, no bounce. update-set v50 product_version 0.29.1. Hashes: linux `47c4f45847f889ac…` / win `feb34a81bc31da79…` (both match signed .release.json). Latest flipped to v0.29.1 (draft=false). Verified update-set metadata_json version=50 via Latest download path.

**perri ping:** I pinged floor 0.29.1, but perri RULED **no floor bump — adapter stays 0.27.0** (claude-spt has no hard dep on the settle-gate). She welcomes the head-truncation fix directly: her v0.17.0 tag peer-messaging (`@<id body @>` in output) long bodies benefit, and she'll RETIRE her interim <350B split-protocol once 0.29.1 is live on the box — which lifts the sub-400B send discipline in [[lifecycle-truth-build-progress]] once boxes are on 0.29.1.

**Flow note banked:** release.yml assemble step runs `gh release create --draft --repo SaberMage/spt-releases` — the draft is ALWAYS on the releases repo, untagged, until release-publish signs+publishes and moves it to the real tag. Don't hunt for the draft in spt-core.

See [[lifecycle-truth-build-progress]], [[v0290-published]], [[v0121-published]].
