do-todo
todo.txt via tuxedo
Use tuxedo only. Do not use todo.sh: its line numbering differs from tuxedo's, so mixing them hits the wrong tasks.
Never rely on tuxedo's own file lookup ($TODO_FILE > $TODO_DIR/todo.txt > ./todo.txt > temp sample): an exported TODO_FILE beats TODO_DIR and silently redirects writes, and an exported DONE_FILE redirects archive. Pick the list by routing (below), then name both files on every command, reads included, with absolute paths:
TODO_FILE=<dir>/todo.txt DONE_FILE=<dir>/done.txt tuxedo --json ...
<dir> is the repo root or $HOME (use $HOME, not ~; works in fish and bash). Commands below omit the prefix.
Agents: use the CLI with --json, never the TUI. A running TUI reloads external changes within ~250 ms.
Global router, local lists
tuxedo opens one file per run, has no daemon, and never merges files. So the lists are split, and the global list routes to the local ones.