1.0 KiB
1.0 KiB
Invariants
These are the “don’t break this” rules that keep Takopi reliable.
Runner contract
The runner contract is enforced by tests/test_runner_contract.py:
- Exactly one
StartedEvent - Exactly one
CompletedEvent CompletedEventis lastCompletedEvent.resume == StartedEvent.resume
See also the Plugin API runner contract section.
Per-thread serialization
At most one active run may operate on the same thread/session at a time. This is enforced both by scheduling and by per-resume-token runner locks.
Normative details live in the Specification (§5.2).
Resume lines
Resume lines embedded in chat are the engine’s canonical resume command (e.g. claude --resume <id>).
- The runner is authoritative for formatting and extraction.
- Transports/rendering must preserve the resume line reliably (even when trimming/splitting).
Normative details live in the Specification (§3).
Local contribution hygiene
- Run
just checkbefore code commits.