tik

tik is a process system, not a ticket system. A ticket is an append-only log of signed, content-addressed facts and artifacts. Where that ticket stands in its process is a derived value — a pure function of the log, the process definition, and the current time.

Nobody moves a ticket. People and agents contribute evidence, guards check it, stages derive, and tik explain says exactly what is missing and who can supply it.

$ tik set 3184 severity=:high resolution.ref=abc123def
ok
$ tik explain 3184
To reach :resolved:
  ✓ [:fact [:resolution :ref]]
  ✗ attach an artifact whose path starts with "repro/"
  blocks: :closed
  (see: kb/runbooks/support-request-resolved.md)

The one law

Derived beats declared. If something follows from the log, storing it as authoritative state is a bug. Stage, readiness, “who is blocked”, the board, the inbox, the roadmap — every one of them is computed on read, so every one of them is correct by construction. A cache that goes stale is a cache; the answer lives in the events.

The law has a companion: coordination-free by construction. Every operation is correct on arbitrarily many replicas that share nothing and reconcile by unioning their event sets. No leader, no lock, no consensus — contention resolves by derivation.

Derived beats declared →

What you get

Start here

Licensed 0BSD and REUSE -compliant.