Files
paperclip-harness/CHECKLIST.md

108 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Checklist for the next session
Tick each line. Nothing after the first unchecked line should be started early.
## Before you start
- [x] Paperclip answers: `curl -s -H "Authorization: Bearer $PAPERCLIP_BOARD_KEY" http://127.0.0.1:3100/api/health` → 200.
- [x] Go is installed: `go version` → `go1.26.5` from `~/.nix-profile` (2026-11-10). The
NixOS config change is staged but not rebuilt; see `docs/ENVIRONMENT-FACTS.md`.
- [x] You are using the **user** key (`PAPERCLIP_BOARD_KEY`), not the agent key.
## Milestone 1 — one task, really run (no interface) — PASSED 2026-11-10
- [x] Read `docs/ENVIRONMENT-FACTS.md` for the company id, agent ids and toolchain facts.
- [x] Make a sandbox project (payload in `docs/PAPERCLIP-API-NOTES.md`) with two tasks, the second blocked by the first.
→ `spike-2026-11-10`, `AUD-159`, `AUD-160` (`AUD-160` blocked by `AUD-159`).
- [x] Assign the first task to `Builder`. The assignment alone woke it in 0.1 s;
`heartbeat/invoke` was not needed. → wake `source=assignment`, run `aae77e89-…`.
- [x] Watch: the task goes `todo` → `in_progress` → `done` (00:01:25 → 00:01:53).
- [x] Confirm a comment written by Pi holds what it did. → commit `b093301`, comment `822f2924-…`.
- [x] Confirm the cost appears: `GET /api/issues/{id}/cost-summary`. → 1 cent, run count 1.
- [x] Confirm where the work happened. → **No worktree.** Paperclip ran it in
`/tmp/pc-sandbox-2026-11-10` on `main`, because `enableIsolatedWorkspaces` is off on
this instance. See `docs/ENVIRONMENT-FACTS.md`.
PASSED, with one correction to the plan: the per-task worktree is not free — it needs an
instance-wide experimental flag turned on by the person.
The second task was left `todo` and unassigned. The `issue_blockers_resolved` wake has not
been measured.
## Milestone 2 — task tree and reply box
- [x] Create the Go module in `tui/`. → `tui/`, module `paperclip-harness/tui`, Bubble Tea +
Lipgloss + BubbleZone. `go build ./...` and `go vet ./...` are clean.
- [x] Screen 1 reads tasks for one project; blockers read **per task** (`/api/issues/{id}/diagnostics/blockers`), never from the list.
→ seen in a real terminal: `TODO (1) / BLOCKED (1) / DONE (2)`, with
`[AUD-161 todo]` shown against the blocked task. Resize shows "too small" below
56×12 instead of a broken tree.
- [x] Screen 4 shows the thread and posts a reply with the user key. → `bin/screen reply AUD-162`
shows the conversation; typing and pressing Enter posts, and `s` picks a status to send
with it. Posted as `authorType: user`.
- [x] Pass: move a blocked task forward from the terminal, no browser, no shell.
→ `AUD-162` went `blocked` → `todo` from the reply screen, with a comment, and the
activity record names the person. Verified against the API afterwards.
## Milestone 3 — add a task, watch it work
- [x] Screen 2 creates a task with a blocker and the command that decides it is done.
→ `AUD-163` and `AUD-164` made in the form; `AUD-164` blocked by `AUD-163`, and the
verify command landed in the task's own description.
- [x] Screen 3 shows the running log and the diff from the task's worktree.
→ seen live: `running · assignment`, the worktree path and branch, `?? NOTES.md`
while the agent worked, then `754cdb5`, `NOTES.md | 3 +++` and the diff.
- [ ] Pass: a two-task plan is created, ordered and finished from the terminal alone.
Created and ordered from the terminal, and both tasks are `done` — but **not by the
intended path**. Nothing merges a task's branch, so `AUD-164`'s worktree was cut from
`main`, which has no `NOTES.md`; the agent read the file across branches with
`git show AUD-163-…:NOTES.md` instead. That is what Milestone 5 exists for.
## Milestone 4 — the project layer
- [x] Adopt a folder as a project; remember which host it is on.
→ `bin/office <folder>` writes `<folder>/.harness/harness.toml` (session, project,
machine, folder, task watched) and builds the pages. Re-running changes nothing.
- [x] Build the page layout; repair it; reset it.
→ `bin/board` adopts or creates each page and places them on workspaces 1–5 in order;
`--replace` rebuilds from nothing; `bin/project-reset` removed the panes, three
worktrees and three branches, and `bin/office` built them all back.
- [ ] Pass: a project on another machine can be opened and used from here.
**Not tested.** This pane runs on .13 and I have no way to drive .27 or .51 from
here; `bin/office --host` and the runbook command for it are written but unproven.
## Milestone 5 — review and merge
- [x] `ocr` runs over the diff; a failing review refuses the task.
→ `AUD-165` added a `cleanup.sh` with `rm -rf "$HOME/tmp"`; `bin/merge --check`
refused with exit 5 and named the critical finding, and `cleanup.sh` never reached
`main`.
- [x] Merges are one at a time, re-checked after each.
→ a second merge while one holds the lock exits 6; after the rebase the task's verify
command runs again, and again on the base branch after the merge.
- [x] Pass: the next task cannot merge until the first is settled.
→ the lock refuses the second merge outright, and a refusal leaves the branch where
it was.
## Interface rules that are not optional
- Handle the window-size message; never hardcode sizes; show "too small" instead of a broken layout.
- Run in the alternate screen.
- In TUIOS window mode, `h j k l`, `z`, `n` belong to TUIOS: use Tab, Shift-Tab, arrows, Space, Enter inside the app, and keep a bare Esc free to close a box.
- Create the click-zone manager once and wrap the whole view.
- No network or git work inside update or view — use commands that return messages.
## The interface, 2026-11-10
- [x] Board, Work, Conversation, Author, Project and Repair workspaces built and running in
the `paperclip-harness` session, one pane each, on workspaces 1 to 7.
- [x] One frame, one palette, one footer everywhere; `tui/frame_test.go` fails if any panel
line is not exactly the width asked for.
- [x] Choosing a task drives every workspace through the project's own file.
- [x] Nerd Font installed on .13 by the person; Ghostty points at it; the panels keep plain
Unicode unless `-nerd` is given, because a private-use glyph does not survive TUIOS's
screen capture and could not be verified from here.
- [ ] A TUIOS theme is set in the config (`catppuccin_mocha`) but a running session needs a
restart to pick it up.