Skip to main content
Reference Last updated: 24 February 2026

Invariants

These are the “don’t break this” rules that keep Untether reliable.

These are the “don’t break this” rules that keep Untether reliable.

Runner contract

The runner contract is enforced by tests/test_runner_contract.py:

  • Exactly one StartedEvent
  • Exactly one CompletedEvent
  • CompletedEvent is last
  • CompletedEvent.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 check before code commits.
Was this helpful?

Related Articles