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.