Confirmed on macbookpro (macOS 26.6.2): four boots, four identical failures.
caldav's manifest declares apt/pacman/dnf and no brew, so the installer falls
back to the binary name — and radicale is not a Homebrew formula at all, it is
a Python app (pipx/uv). There is nothing correct to put in a brew field, which
is the real gap: PackageManager has no pipx member and osDependencies has no
way to say "unavailable on this platform", so the choice is a wrong guess
retried every boot or silence.
Also recorded, as a NON-bug, because it looked like the real failure and was
already over: the motion/react resolve error appeared on exactly one boot, when
m3e-canvas landed before plugins/node_modules/motion existed. Verified on the
machine — motion is installed and import('motion/react') resolves with 398
exports, and the current boot builds cleanly.
The gap that one exposes is still real: installNpmDependencies is called only
from the install flow, never at boot, so a plugin that arrives without that
flow completing leaves every boot failing a rebuild with "Maybe you need to bun
install" and nothing that ever will.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Officer-Session: f7a62308-0977-4cf4-aa29-c020853fd420
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
110 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-22caldav retriesbrew install radicaleon every boot, and there is no such formula — known-bugs/radicale-cannot-be-installed-on-macos2026-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-tag