Command line ============ ``claimdag [--dir DIR] VERB`` =================================================================================================== ================================================================================================================================================================================= Verb Does =================================================================================================== ================================================================================================================================================================================= ``upsert [--id ID] [--kind K] [--status S] [--role R] [--parent ID] [--summary TEXT] [--actor ID]`` create (mint when ``--id`` is absent) or update a node ``get ID`` one node with its dependencies ``list [--terminal] [--archived] [--all] [--json]`` nodes, newest first; live work by default ``claim ID --assignee ID [--gen N]`` compare-and-swap claim; prints the new generation ``renew ID [--actor ID]`` move the lease, keep the generation ``release ID (--actor ID | --force)`` hand one claim back before it is terminal: ready, no assignee, generation moved. ``--actor`` must be the holder; ``--force`` acts for nobody and appends a line to ``forced.log`` ``reopen ID [--actor ID]`` bring a terminal node back to ready, generation moved. No record of the earlier completion is kept on disk ``complete ID [--status done|failed|cancelled] [--summary TEXT] (--actor ID | --force) [--gen N]`` terminal; refused when ``--gen`` is stale, and ``done`` is refused while a dependency is unfinished. ``--force`` acts for nobody and appends a line to ``forced.log`` ``reclaim [--lease SECS]`` hand back every claim quiet longer than the lease ``link PARENT CHILD`` / ``unlink PARENT CHILD`` a hard dependency ``archive ID`` / ``unarchive ID`` hide or show a terminal node ``ready [--role R] [--assignee ID] [--slack N] [--balanced] [--json]`` ready nodes ordered by list scheduling or balanced P2C dispersion ``claim-next --assignee ID [--role R] [--slack N]`` atomically select and claim the best ready node with role affinity and P2C dispersion =================================================================================================== ================================================================================================================================================================================= Ids are 32 lowercase hex characters (xxHash3-128). The zero id means unset. Statuses ======== ``todo``, ``ready``, ``claimed``, ``done``, ``failed``, ``cancelled``. ``ready`` is derived: a ``todo`` node whose every dependency is terminal. A claim requires ``ready``. One live claim per assignee. Kinds and roles =============== Kinds: ``task`` and the closed set the schema names. Roles: ``unset`` and the closed set the schema names. Summary is the one open text field. The snapshot ============ ``work.bin`` in the graph directory: an unpacked Cap'n Proto message, mapped read-only by readers and rewritten whole by the one mutating process. A directory with no file is an empty graph to a writer and "no graph here" to a reader. Environment =========== ================ ============================================================================================================================================== Variable Meaning ================ ============================================================================================================================================== ``CLAIMDAG_DIR`` the graph directory; else ``$XDG_RUNTIME_DIR/claimdag``, then ``$XDG_STATE_HOME/claimdag``, ``~/.local/state/claimdag``, ``/tmp/claimdag-UID`` ================ ============================================================================================================================================== Crates ====== ================ =================================================== Crate Carries ================ =================================================== ``claimdag`` the graph, ids, leases, critical path, the snapshot ``claimdag-cli`` ``claimdag`` ``claimdag-tui`` the pane, on icedtea ``claimdag-mcp`` the Model Context Protocol (MCP) surface ================ ===================================================