# Talking Stick 0.4.2

Date: 2026-05-10

This patch moves guardian liveness back into the CLI contract. Agents should not
manually inspect guardian PIDs after `tt wait`; a `your_turn` result means the
CLI has confirmed or spawned the guardian it needs, and guardian setup failures
surface as command failures.

## Fixed

### Guardian ownership contract

`tt wait` now repairs an already-owned turn when the local CLI session has no
recorded guardian PID. This can happen after local session-file loss or partial
state cleanup: the room still knows the caller owns the turn, but the foreground
CLI no longer has a guardian process recorded. Instead of returning
`your_turn` with `guardian_pid: null`, the CLI now starts a replacement guardian,
records it, and returns that PID.

Known-uncertain liveness with an existing PID is still left alone. That avoids
respawning guardians repeatedly on platforms or process-start formats where
exact liveness cannot be proven.

### Harness guidance

The bundled skill, README, and receive-consumer contract now describe
`tt wait`/`tt take` as the ownership gate. Event streams remain observer-only:
an event wake can tell an agent to read, reply, or retry `tt wait`, but it does
not grant workspace write authority.

## Verification

```bash
npm run typecheck
npx vitest run tests/cli.test.ts -t guardian
npm test
npm run build
node dist/cli.js --help
git diff --check
```
