not decided. the card carries numbers so the decision is not made from a readme — which is what produced the first, wrong estimate. the finding: next.js is not actually there. one import in 14,822 lines and it is type-only, so there is nothing to strip. the fork line then falls on a file boundary — page.tsx and lib/ai.ts are ours (~3,600 lines), the rest vendors (~11,200), and the split is meaningful rather than convenient. buildPrompt/effectivePrompt are pure functions, so the export point is a call rather than a bridge. against it: 37 commits, three days old, 22 of them landed today. two authors. 'vendor and track upstream' assumes an upstream that has settled and this one has not started. so the cheapest next step is an issue asking upstream for an explicit seam — depend rather than fork. the answer changes what gets built. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6.3 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. Browse and edit it at /todos in the app.
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.
Urgent
- due 2026-08-22 — Settings to choose which server each feature uses — fleet/settings-to-choose-which-server-each-feature
- An affordance: a scoped agent warns when a request lands outside its scope — affordances/an-affordance-a-scoped-agent-warns-on-the
- A commander's watcher does not survive a reboot, and nothing says so — agent-coordination/a-commander-s-watcher-does-not-survive-a-reboot
Themes
109 open, 33 closed, across 35 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-09-04M3E Canvas as a plugin — sketch a UI, hand the prompt to the agent — backburner/m3e-canvas-as-a-plugin2026-08-29Officer blocks its own event loop for ~0.9s re-parsing a live transcript, and everything it serves stalls with it — known-bugs/officer-blocks-its-event-loop-parsing-transcripts2026-08-27Turn an ordinary chat into a commander or a bot, carrying its context along — agent-coordination/turn-a-chat-into-a-commander-or-a-bot2026-08-27The calendar API cannot express repeating events, reminders, invitees or a cancelled occurrence — calendar/the-json-api-cannot-express-recurrence-alarms2026-08-27AGENTS.md sweep — what is left after the static docs landed — docs-conventions/agents-md-remaining2026-08-27OpenSEO — a strong plugin candidate, checked rather than assumed — integrations/openseo-a-plugin-candidate2026-08-27The calendar/contacts skill has never been exercised by an actual agent — known-bugs/calendar-skill-never-used-by-an-agent2026-08-27Setting up a phone for calendar and contacts should be one link inside Officer, not a manual account form — mobile-apps/setting-up-a-phone-should-be-a-link-in-the-app2026-08-27Marketplace: browse by tag — filter list, card grid, detail with a back button — plugin-ecosystem/marketplace-browse-by-tag2026-08-25An affordance: a scoped agent warns when a request lands outside its scope — affordances/an-affordance-a-scoped-agent-warns-on-the