Digest: identity follows the work

This is a decision digest: sanitized to design level. Addresses and internal names are deliberately absent.

The situation

Bus presence schema v2 made liveness observational, but identity stayed launch-frozen: a session’s persona was fixed at process start, while the journal’s own rules allowed registering or adopting a persona at any moment. A session could legitimately change who it was; the roster could not represent it. Secondary defects fell out of the same freeze — a nudge timer that judged sessions before it fired, an inbox watcher that never armed for undeclared sessions, and a rename path that would have left ghost entries the sweeper (pid-based) could not see.

Rulings

  1. Mid-session declaration is a first-class operation: persona_declare(slug). Validation reads the on-disk registry at call time, so the registration commit is the gate. Retired slugs bounce with parity to mail.
  2. Desk-by-default boot (human ruling, 2026-08-26): new sessions default to the front-desk slug unless explicitly overridden; explicit overrides always win, keeping spawner-launched personas and manual launches untouched.

Mechanism

Consequences

Unproven

Live two-session acceptance (boot → route → declare → mail round-trip) and the menubar visual check for adopted states remain outstanding; the sandbox harness covers the logic but not the TUI surface.