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>
6.4 KiB
TODO — the index
Deferred work. The items live in todo/, one file each, grouped by theme; this file is the map
over them and is GENERATED — run bun run todo:index after any change rather than editing it here.
Format and the two-way-sync contract: todo/README.md.
Context, corrected 2026-08-07. This list used to open by saying Officer was "collapsing from multi-tenant / open-source-ready to a single-user platform", and told you to treat multi-tenant indirection as accidental complexity. That direction was reversed. The permission model shipped on 2026-08-07 to serve a real goal — deploy to the company server, onboard people, give each one their own Gitea account through the platform. Per-user scoping is now a requirement, and the items that proposed deleting it have been removed rather than left to mislead the next reader.
What did NOT reverse: execution permissions (terminal, chat, tasks, files, desktop, browser) run as
the owner's OS user and can never be granted. Indirection there really is accidental complexity.
Themes
73 open, 18 closed, across 25 themes.
Records — no items, kept for the reasoning
- Affordances (2026-08-19)
- Inputs outside forms (2026-08-19) — swept, fixed, closed
- Release-binary dependencies (2026-08-19)
Newest ten
2026-08-21No way to see which affordances are reaching your agents, or to turn one off — affordances/no-way-to-see-which-affordances-are-reaching2026-08-21Generalise it: deliver a turn to a named session, from anywhere in the backend — agent-delivery/generalise-it-deliver-a-turn-to-a-named2026-08-21The cost of resuming grows with the transcript — agent-delivery/the-cost-of-resuming-grows-with-the-transcript2026-08-21Watch a directory, and attach actions to what lands in it — file-watchers/watch-a-directory-and-attach-actions-to-what2026-08-21A way to mark a commit "this one ships", so a release is not justmaster's tip — fleet/a-way-to-mark-a-commit-this-one-ships-so-a2026-08-21iPhone Action Button → run an Officer task from a locked phone — mobile-apps/iphone-action-button-run-an-officer-task-from2026-08-21The mobile recorder app, and the dispatcher agent behind it — mobile-apps/the-mobile-recorder-app-and-the-dispatcher2026-08-21A plugin's settings routes are reachable by anyone the plugin is granted to — multi-user/a-plugin-s-settings-routes-are-reachable-by2026-08-21A plugin cannot claim a WebSocket provider — plugin-infrastructure/a-plugin-cannot-claim-a-websocket-provider2026-08-21A store of ready-made prompts, versioned, categorized and tagged — prompt-library/a-store-of-ready-made-prompts-versioned