For agents, on top of README.md, which they read first.
Notes for agents
- Keep the lock poison-tolerant.
lock()recovers a poisoned mutex on purpose: a panic in one call must not take the cat's face down. - Two clocks. The cat takes the shell's monotonic milliseconds; the log takes wall-clock time from
SystemClock. Do not mix them. - Conversation calls hold one lock for a whole turn (seconds). Touch, tick and phase use a separate lock and never wait on it.