Files
platform/todo/tooling/a-kanban-board-over-todo-synchronised-both.md
T
pastilhasandClaude Fable 5 6071ded175 todo: one file per item, grouped by theme, with a generated index
TODO.md had reached 1050 lines and 72 open items across 28 sections, read mostly
on a phone. It is now a directory: todo/<theme>/<item>.md, one card per file, with
frontmatter carrying id, status, created date and order, and the prose body copied
across verbatim. TODO.md becomes a generated index (bun run todo:index).

Dates: where an item's prose stated one it is used; otherwise its old section's;
otherwise 2026-08-20, floored at the day before the split rather than invented.
date_source records which.

Shaped for a two-way Kanban board, filed as todo/tooling — a card is a file, id is
the identity, frontmatter is the machine's half and the body is the owner's.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 05:42:39 +00:00

1.6 KiB

id, title, theme, status, created, date_source, order
id title theme status created date_source order
tooling/a-kanban-board-over-todo-synchronised-both A Kanban board over `todo/`, synchronised both ways tooling open 2026-08-21 stated 1

A Kanban board over todo/, synchronised both ways. Wanted 2026-08-21, and it is the reason the list became a directory rather than a file. Read the tree, render columns, and write changes back — drag a card to another column and the file changes; edit the file and the board follows.

The file system is the database. There is no second store to reconcile, which is the whole point: these items are already versioned, already reviewable, already synced between machines by git. A board that kept its own copy would be a second truth with no way to say which one is right — the failure this repository has already documented twice (command_hq_sessions refusing a status column, chat_session_events being derived rather than stored).

The contract it can rely on is written down in todo/README.md → "Two-way sync". In short: a card is a file, id is the identity so a retitle never orphans one, frontmatter is the machine's half and the prose body is the owner's, and TODO.md is generated output that the board must never write to.

Open, and deliberately not decided here: which columns (status today holds only open/done, so doing and blocked are new values whenever the board wants them); whether it is an Officer screen, a panel app or a plugin; and how it notices a change made on disk while the board is open — a watcher, a poll, or a refresh button, which is the cheapest thing that works.