---
name: boundary-rename-v0141
description: 2026-07-05 v0.14.1 SHIPPED — /clear boundary re-asserts session display name via /rename injection (rename-send before checkpoint_fire); /compact retains name so untouched; node applied
metadata: 
  node_type: memory
  type: project
  originSessionId: 92f4e8f1-7e75-4907-a410-923bc13d4448
---

**Boundary rename (v0.14.1, SHIPPED 2026-07-05 @a486acb, tag Latest, node applied).** Operator ask via grill-with-docs: CC drops the `-n "<id> @ <node> (<project>/)"` display name when `/clear` rotates the session → operator loses the TUI anchor. `/compact` RETAINS the name (operator-tested) — compact stays send-nothing.

Design (all grill-locked): launch shim exports the computed display name as `SPT_SESSION_NAME` into spawned CC env (same `display_name()` call that feeds `-n` — parity by construction; env survives clear because the CC *process* survives, only the session rotates); SessionStart(clear) self-sends `{"rename":"v1","name":…}` --force-native BEFORE `{"checkpoint_fire":"v1"}` (two deliveries = two inject sequences; one-delivery-two-commits is contract-unknown, rejected); translate answers with `ctrl+s·50·"/rename <name>"·50·enter·commit`, STATELESS — `pending_wake` untouched (rename delivery lands between checkpoint arm and fire; disturbing it breaks the macro). `/rename` empirically confirmed: inline rest-of-line arg, renames CURRENT session, no agent turn — so wake still lands idle. Missing name env ⇒ loud `RENAME_SKIP:no-name`, heals on respawn.

REQ-DIST-BOUNDARY-RENAME (impl+unit+int, 58/58 green). Int = translate-proof-int rename block (live TUI name unobservable file-side — no transcripts); wake-survival e2e doubles as regression net. Glossary gained [[session name]] + [[boundary rename]]. Byte-chain: published sha == packed sha, rename emit proven on published bytes. F030 branch merged to main same day (box already on core 0.25.0 + adapter 0.14.0 per operator).

**Live-verify CLOSED 2026-07-05: operator confirmed post-clear TUI name re-assert working on a real session.** Residual: pre-0.14.1-spawned sessions skip loud (`RENAME_SKIP:no-name` in hook logs) until respawned once.

**FIELD BUG + FOLD REVISION (2026-07-06, flynn): the two-sequence design RACED (~33%, 1 of 3 checkpoints)** — at the just-rebuilt post-clear boundary CC input processing lags the PTY stream: rename's enter registered as soft newline, wake sequence's ctrl+s failed to stash the residue, wake text submitted INSIDE the /rename arg → session titled with the wake, NO wake turn, flynn dormant ~9.5h (operator hand-recovered; raw `\r` in their paste = the tell distinguishing manual from emitter). **Fix (v0.15.1 Latest + v0.14.3 backport on the 0.25.0-floor line, both shipped @8180fe1/@31deedd, node pinned 0.14.3): rename delivery only STASHES (bare commit); fire emits ONE combined sequence — rename half · 150ms enter→ctrl+s bridge (BOUNDARY_BRIDGE_MS) · wake half · one commit.** KH second leg: NEVER two post-clear inject sequences. Regression lock: checkpoint_boundary_is_one_combined_sequence_rename_then_wake. Diagnosis ritual: session-jsonl `custom-title` records show swallowed text verbatim. **flynn's RUNNING translate carries the racy build until flynn respawns — operator bounce needed.** Node pin recipe when Latest outpaces the box floor: `adapter remove` then `adapter add --release --tag vX.Y.Z` (update has no --tag).

Gotcha banked: `cargo test --release` does NOT refresh `target/release/claude-spt.exe` — translate-proof-int ran a stale binary and false-failed; `cargo build --release` first.
