Smriti previously required passing <space> on every command, and the
repo↔space binding lived only inside a hardcoded SessionStart hook
string. This makes the binding durable and ambient.
- New cli/smriti_cli/attachment.py reads/writes `.smriti.json` at the
repo root — a committed file that binds the repo to a space and
travels with it (repo A→space A, repo B→space B).
- The <space> positional is now optional on state, current, metrics,
checkpoint create/list, claim create/list, and worktree open/list.
When omitted it resolves from the nearest `.smriti.json`, walking up
from the working directory, so any session opened inside the repo
stays connected without re-passing the space.
- `smriti init` writes `.smriti.json` and binds the space's backend
project_root to the checkout. The generated SessionStart hook is now
space-less (`smriti state --compact`) — identical across every
project and stable when a project is re-attached.
- New `smriti status` command: a day-two continuity check showing the
attachment, backend health, and open work.
- CLI api_url also resolves from the attachment as a last-resort
default, behind --api-url and SMRITI_API_URL.
MCP tool signatures are intentionally unchanged this sprint.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>