.. raw:: html
claimdag
What is claimable right now?
Compare-and-swap claims over a session's work graph, with leases.
One mutator
Leases, not locks
CLI + TUI + MCP
A session hands out work. Two or more workers ask the same question at once:
what is unblocked and unheld? claimdag answers from a small graph of nodes
with hard dependencies. A claim is compare-and-swap on the node's
generation, so two workers cannot both take it. A claim is a lease, so a
worker that dies gives the node back. Completing a node here does not close
a ticket anywhere; the tracker is a different store.
Install
=======
.. code:: console
$ cargo binstall claimdag-cli
$ cargo binstall claimdag-mcp # optional
$ cargo binstall claimdag-tui # optional pane
The graph lives in ``$XDG_RUNTIME_DIR/claimdag`` unless ``CLAIMDAG_DIR`` or
``--dir`` says otherwise. It is session state there, gone when the session
ends. With no runtime directory it goes to ``$XDG_STATE_HOME/claimdag``, else
``~/.local/state/claimdag``, else ``/tmp/claimdag-UID``, and the state
directory keeps it across sessions.
First minute
============
.. code:: console
$ a=$(claimdag upsert --summary "parse the manifest header")
$ claimdag claim $a --assignee $(printf '%032x' 7)
gen=2
$ claimdag list
092dca29... claimed task 00000000 gen=2 parse the manifest header
$ claimdag complete $a --status done --actor $(printf '%032x' 7)
092dca29... done
The :doc:`tutorial