Files
paperclip-harness/docs/NEXT.md

85 lines
4.0 KiB
Markdown

# What is left to build
Written 2026-11-11. The interface has eight workspaces and 23 panels; the work below is what is
still missing or unproven. Order is by usefulness, not by size.
## Done since this list was written
- **`Repair>cleanup`** — session list with pane count and last use, `space` ticks, `x` closes
after asking, protected and attached sessions refused, and a line on screen saying that
`~/.pi/paperclips` is not touched.
- **`t` → `pi sessions` (Yazi) and `t` → `pi resume`** — the two cheapest ways into the history.
- **`v` in `Work>review`** — starts `bin/review <task> --post` and the tab follows its log.
- **`Project>projects`** — the registry `bin/office` writes, listed with folder, machine and
session; a project on another machine is shown and not offered.
- **`Board>needs` → `enter`** now also switches to the Reply workspace.
## 1. Repair>cleanup — the pane you asked for
A fourth tab in `Repair>repair` that lists TUIOS sessions with their pane count and last-active
time, marks the ones that are attached, and kills only what you tick. Two rules it must keep:
- **never touch `~/.pi/paperclips/`** — those are the Pi conversations, and they are the history;
- refuse any session that is attached, and refuse `paperclip-harness` by name.
Measured today: 37 sessions, 21 of them from the closed project's tests (`harness-demo-card-*`,
`office-test-1*`). Nothing has been killed.
## 2. A Pi session browser
The cheap version first: a `t` entry that opens `~/.pi/paperclips` in Yazi, and one that runs
`pi --resume`. Then, if that feels like a detour after a week, a read-only transcript tab in
`Agents>agents` that reads the JSONL directly. `GET /api/agents/{id}/task-sessions` maps a task
to its session file, so neither version has to guess.
## 3. Project>projects — switching project
A tab listing every adopted project from a small local registry
(`~/.config/paperclip-harness/projects.toml`: id, folder, host, session), filled by `bin/office`,
with a key to switch. A project on another machine is shown as `on .27` and not offered, because
this terminal cannot open a folder that is not here.
## 4. Run a review from the interface
`Work>review` shows the verdicts already recorded. It should also be able to *start* one:
`v` runs `bin/review <task> --post` in the background and the tab follows its log, the way
`Work>merge` already does.
## 5. The old `office` scaffold
`bin/office` writes `.harness/harness.toml` and builds the panes. The previous project also
wrote a scaffold: `settings.toml`, one file per role, `verify.sh`, the per-page notes — writing
only what is missing. That is the cheapest remaining gap in the project layer.
## 6. Board>needs: act on a card
The needs-you panel lists what is waiting but the action still happens elsewhere. Each card
should carry its own key: unblock, assign, open in Reply.
## 7. Costs as a chart
`Project>overview` already draws a sparkline of runs in Go. Spend-per-day, using the same block
characters or `tuios.dev/plot`, is the natural second chart — no TML, no web view.
## 8. Memory per agent
`engram` is installed and `headroom` is running as a compression proxy, but nothing in the
interface shows which agent uses which. A read-only row in `Agents>settings` is the honest first
step; a switch is only worth adding after one agent has been run both ways and measured.
## 9. MOUSE-1
The key is in the environment; the software is not installed. The old project's policy stands:
triage only, never a gate, never a permit. It would order `Board>needs`, never decide a merge.
## Unproven, and worth a test
- opening a project **on another machine** (`bin/office --host`): written, never exercised;
- clicking a task row with the mouse in `Board>board`: the zones are wired, nobody has clicked;
- `R` with a pane that is not at its expected size;
- a task whose blocker is still open: does the agent stay away until it closes?
## Open Paperclip tasks in this project
One: `AUD-162`, a leftover test task in `todo` from the first day. Everything else is `done`.