6.4 KiB
Handover — where this is, and why
Written 2026-11-11. This file is the one to read first after AGENTS.md. It says what exists,
what was decided, what is unproven, and where everything lives. The earlier attempts are recorded
at the end, on purpose: they are the evidence for why this one is shaped as it is.
The one-line version
Paperclip owns tasks, blockers, comments, runs, cost and the git worktree for every task. On top of it is one small Go program with eight screens, running as panes in TUIOS, and a set of small commands for the parts a screen should not do (merge, review, adopt a folder).
What is running now
Session paperclip-harness on the daemon at .13, eight workspaces, one pane each:
| Workspace>pane | what it shows |
|---|---|
Shell>shell |
a prompt in the project folder, preceded by a box saying where everything is |
Board>board |
tasks by group, the chosen task, what needs you; a assign, u unblock, c cancel, / filter, t tools |
Work>work |
runs, change, facts, review, log, merge; n/p walk tasks, enter opens a run's log, m merges after asking, v reviews |
Agents>agents |
roster, runs, log, settings, skills, extensions; p/P/w pause, resume, wake; space toggles a skill or extension for that agent |
Reply>reply |
the task, the thread, a reply box that can also set the status |
New task>new |
the five-field form, what each field means, and exactly what the agent will be sent |
Project>project |
overview (dashboard), facts, costs with bars, settings and limits, adopted projects |
Repair>repair |
health checks, the live layout, the rebuild log, and session cleanup |
R in any of them rebuilds the whole layout. r re-reads the data. ? lists the keys.
Commands beside the panes: bin/office <folder> (adopt, create the session, build the panes),
bin/board (build or repair), bin/merge <task> (rebase, check, review, merge, re-check),
bin/review <task> (the review alone), bin/triage <task> (ask Mouse-1 one question),
bin/project-reset, bin/shell-banner.
The decisions that matter, and why
- Paperclip owns the facts. Tasks, blockers, comments, approvals, runs, cost and worktrees are read from it every time and never copied. Two screens cannot disagree because there is only one record.
- One project is one folder on one machine, remembered in
<folder>/.harness/harness.tomlwith its session, machine and the task being watched. That file is all we store. - Choosing a task is one act.
enteron the board writes the choice into that file and the other panes follow within a second. No messages between programs. - A task is finished when the agent says so; a review stage or
ocrcan refuse the change; a project'scheck.shis a regression check at merge time, not the definition of done. - The merge is a decision, so it asks.
m, then a dialog naming the branch and the base branch, theny. It takes a lock, so two merges cannot overlap. - Keys follow TUIOS's rules. TUIOS keeps
h j k l z nand also[ ] tab , . = ;and the digits. Tabs are switched with(and); movement is arrows orj k; a bareEsccloses a box and never quits. - Nothing hardcodes a size. Every pane re-asks the terminal for its size on each refresh, because TUIOS can re-tile panes without the program hearing about it, and a stale size is what "broken border" always turned out to be.
What is proven, with the measurement
- Assignment wakes Pi within 0.1 s; a task went todo → in progress → done in 28 s; the comment
named the commit; cost 1 cent. (
docs/PAPERCLIP-API-NOTES.md) - Worktrees are Paperclip's, once
enableIsolatedWorkspacesis on: branchAUD-160-milestone-1-t2-read-hello-txtat…/.paperclip/worktrees/…. - The review gate refuses a real problem:
ocrfoundrm -rf "$HOME/tmp"deleting/tmpwhenHOMEis empty, and the merge was refused. - A task with two runs shows two:
AUD-166hasassignmentthenautomation(Paperclip's corrective wake). - Per-agent skills work: adding
archifytoBuilderchanged that agent's list and no other. - A new project was adopted end to end today:
bin/office /tmp/fresh-project-2026-11-11created the session and built all eight panes without a person runningtuios new. - Mouse-1 answers in ~0.5 s warm; the cold start is real (503 after 30.5 s, then 200 in 21.7 s).
What is unproven
- Opening a project whose session is on another daemon (
switch-sessionwithhost), because a pane is refused the right to move the person's client at all. - Clicking a task row with the mouse: the zones are wired, nobody has clicked.
- A task whose blocker is still open: does the agent stay away until it closes?
- Headroom in front of any agent: its backend is Anthropic and this machine has no Anthropic
credential, so the provider entry was removed after testing. See
docs/PLAN-INTERFACE.md.
Machines, measured 2026-11-11
.13 nixos-desktop |
.27 sam-4screen |
.51 sam-thinkpad |
|
|---|---|---|---|
| Go | 1.26.5 | 1.26.2 | missing |
| Nerd Fonts | 384 files | 98 | 98 |
| Pi | 0.82.1 | 0.82.1 | 0.87.1 |
| TUIOS | 0.12.1 | 0.12.1 | 0.12.1 |
.51 needs Go added; Pi differs between machines and is worth aligning before agents run there.
The earlier attempts, kept on purpose
Two attempts came before this one and both are still on disk, deliberately:
~/paseo/projects/tuios_coding_harness— plans, notes and history.~/paseo/harness— the code.
They are read-only reference. When this project is finished and you are comfortable, they can be archived into a single tarball and the trees deleted. Until then they are the record of what went wrong, and you want them for your own account of the work: attempt one built an interface before anything ran, attempt two measured instead of building, and this one runs a task end to end before styling a screen. Nothing in this project was copied from them except understanding.
Where each document lives
docs/DOCMAP.md is the index. The ones worth knowing: PLAN-INTERFACE.md (the plan and the
findings), WORKSPACES.md (every workspace and pane), RUNS-AND-MERGE.md (task, run, merge),
TEST-PLAN.md (every key and expected result), SESSIONS.md (TUIOS sessions, Pi conversations,
cleanup), NEXT.md (what is left), OPERATING-RULES.md, TUIOS-RUNBOOK.md,
PAPERCLIP-API-NOTES.md, ENVIRONMENT-FACTS.md.