Files
platform/TODO.md
T
pastilhasandClaude Opus 5 73a9b0bf51 officer blocks its event loop re-parsing a live 196 MB transcript
Chasing "Minesweeper is laggy" ended somewhere else entirely. Press-to-paint is
29ms median at x11vnc's socket and 29ms through the sidecar relay, but 35-200ms+
in the browser — so every bit of the variance is added by the one hop between,
which is officer.

Officer answering a trivial 401 on /api/health: median 1ms, p90 2ms, max 490ms.
summarizeTranscript full-reads and JSON.parses an entire transcript to build a
session-list row; timed against the largest here (196 MB, 70,137 entries) that
is 323ms to read plus 541ms to parse — 864ms of blocked loop per call. It is
cached on mtime, and a LIVE session appends every few seconds, so the cache
misses exactly when the agent is busy.

Filed rather than fixed: it is a hot path shared by every surface, and the right
shape (incremental parse keyed on size, versus moving summaries off the request
path) is an architecture call. The file already contains the argument for the
incremental version — "Claude only ever appends".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Officer-Session: f7a62308-0977-4cf4-aa29-c020853fd420
2026-08-29 13:10:20 +01:00

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. 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

Themes

108 open, 33 closed, across 35 themes.

Theme Open Closed
Affordances 2 0
Agents coordinating agents 5 0
Speaking into a session from the backend 1 1
Backburner 3 0
Background jobs 2 1
Calendar and contacts 1 0
Chat interface 1 0
Code editor 1 0
Components — the shared UI layer 1 0
Documentation conventions — AGENTS.md vs CLAUDE.md 2 0
File watchers 1 0
Fleet — one command across every server 6 2
Headscale 0 5
Infra (alpha) 7 0
Integrations — external tools worth wrapping as a plugin 1 0
Known bugs 7 4
Memory — one store instead of per-harness files 1 0
Mobile apps 5 0
Multi-user 17 5
Notifications 1 0
Plugin ecosystem — before it opens to third parties (2026-08-18) 4 1
Plugin infrastructure 2 1
Plugin repos — what writing their READMEs turned up 10 9
Plugin system — gaps the email extraction found (2026-08-18) 3 0
Prompt library 1 0
SendOff 1 0
Settings — portable, and readable by an agent 2 0
Shell — spotlight and the dock 4 1
Sub-agents — agents spawning agents 0 2
Sudo terminal modal 1 0
Tooling — the list about the list 0 1
Transmission 6 0
URL state — routing, query strings and selection 4 0
Waiting on the owner to run it 3 0
Workspaces & Panels 2 0

Records — no items, kept for the reasoning

Newest ten