---
name: v072-published
description: "v0.7.2 PUBLIC 2026-06-15 (counter 14); digest-proof {session_id} key-fill (F-004); deployah drove FULL merge→bump→tag→sign→publish solo, including authoring the release bump commit"
metadata: 
  node_type: memory
  type: project
  originSessionId: 1fb9fc52-b258-4b44-9c4c-7cae9345098f
---

v0.7.2 SIGNED + PUBLISHED 2026-06-15 (release counter 14; v0.7.1=13, v0.7.2=14). Patch. doyle handoff — deployah drove the FULL sequence solo incl authoring the version-bump commit (not just sign): confirm PR#14 CI → merge #14 → author `release: v0.7.2` bump → tag → sign → publish → log flakes.

Hashes: linux `30e4e090323f385139bc5c92422277b8a72bc5ba3223b14a91e060f4d45b05ba`, win `66e2dbd3317d7e5d2bdc5f331e7b1352fdcb834ee8232d41cb8a2ce3fc0864c8`. signed `54188f12…05e3ec9`. update-set.json v14. main release commit 1582e32, flake-ledger commit b5f61ba. https://github.com/SaberMage/spt-releases/releases/tag/v0.7.2

**Content:** PR #14 (F-004) — `spt adapter digest-proof` filled an empty substitution-key map, so `{session_id}`-templated extractors (the published example shape) hard-failed; now fills `{id}`+`{session_id}` matching runtime + optional `--session`. Unblocks perri's claude-spt-digest acceptance int (doyle relays tag).

**KEY LESSON — a fix-only PR does NOT bump version; the release driver must author the bump commit.** PR #14 touched only cli.rs + 2 docs (no version bump). main stayed 0.7.1. Every release needs a separate `release: vX.Y.Z` commit: bump `workspace.package.version` (single source, members inherit via `version.workspace=true`) + insert CHANGELOG `## [X.Y.Z]` section (= GitHub release body verbatim) + regen Cargo.lock (11 first-party crate version lines; `loom` third-party also =0.7.2, leave it). Without it the vX.Y.Z binary's `spt --version` reports the old version. deployah flagged the gap to doyle (owner controls release prose) → doyle approved draft → deployah authored. Co-author trailer now `Co-authored by: deployah` (CLAUDE.md 2026-06-15).

**WORKTREE MECHANIC:** main is checked out in the `spt-core-doyle` worktree → can't `checkout main` in the primary worktree. Make release commits in a throwaway worktree: `git worktree add --detach <path> <origin/main-sha>` → edit → commit → `git push origin HEAD:main` → tag → `git worktree remove <path> --force`. Keeps doyle's worktree untouched.

**FLAKE HANDLING:** PR #14's stale-base CI was RED both runners but DIFFERENT test per runner in disjoint subsystems (kitsubito attach.rs:600 re-serve "got seq 1 want 0"; hfenduleam stream.rs:49 bounded_backpressure "got 16->82") = flakiness signature, not a #14 regression. `gh pr update-branch <n>` (rebase onto current main) + fresh CI → green both = confirmed flaky. Logged docs/FLAKE-LEDGER.md #5/#6 (table format: # | test | occurrences | mechanism | status), "observed 1×, 2nd occurrence → harden". doyle's rule: a real intermittent shouldn't hide behind "flake" — always ledger it.

**How to apply:** publisher leg proven 8× (counter 7-14). Two drive modes both work: driver-merges/deployah-signs split, OR deployah full-solo incl bump. Seed `SPT_RELEASE_SEED` resident in ENV (64-hex); Monitor=bash. Routine seamless fleet roll (fixed brokers, auto-rollback) when operator calls it; deployah verifies hashes on ping.
