Files
paperclip-harness/CHECKLIST.md

80 lines
4.7 KiB
Markdown
Raw 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
- [ ] Adopt a folder as a project; remember which host it is on.
- [ ] Build the page layout; repair it; reset it.
- [ ] Pass: a project on another machine can be opened and used from here.
## Milestone 5 — review and merge
- [ ] `ocr` runs over the diff; a failing review refuses the task.
- [ ] Merges are one at a time, re-checked after each.
- [ ] Pass: the next task cannot merge until the first is settled.
## 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.