claimdag
claimdag
What is claimable right now?
Compare-and-swap claims over a session's work graph, with leases.
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#
$ 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#
$ 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 tutorial is this first minute, then a second node that waits on the first.