claimdag

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#

$ 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.