4.1 KiB
Handover
Written 2026-11-09, at the end of the OMA-based attempt, before any code exists here.
What we set out to make
A coding factory inside TUIOS. A person writes a goal; it becomes tasks; each task runs on its own copy of the code; tests and a review decide whether it is finished; finished work is merged one at a time; the person is interrupted only to decide. Terminal only. One project at a time, not the whole machine.
Attempt one: OMA with our own cockpit
@open-multi-agent is a good library. It plans a goal into a task graph, orders it,
verifies output with judges, and records approvals durably. We built a coordinator around
it and then spent two weeks building what it does not have: an approval path, a viewer, a
task starter, a card board, a task tree.
What that cost us. Each of those was built twice, because two implementations of the same job disagree. Faults arrived in threes. The same question had two answers, and both were plausible.
The other mistakes, plainly.
- Nothing ran end to end on a small plan. Every failure had several possible causes, so every fix was a guess and several were wrong.
- The interface came first: nine pages, panes, notes, filters — before one task had passed one test.
- A plan that was re-run was re-planned, which silently discarded the dependencies that made it safe. Layout ran before content existed.
- Task state was guessed from folder names, so old work coloured new cards. One panel said "refuse" about a task that had never run.
- The pane layout was lost twice. TUIOS deletes a workspace whose last pane closes, and a repair command did not carry the project name with it.
- I reported "fixed and verified" far too often for something I had only dry-run.
What we achieved and keep
- A page layout and page notes written in plain language.
- A project convention:
.harness/settings.toml, role files, page notes, a to-do list per project, a verify command. officeto open a project;project-resetto start one again cleanly.- A real understanding of what an approval must be (content-bound, stale-proof) and what a per-task check must be (a command, agreed before the work, run by something other than the agent).
- The knowledge that OMA is a viable fallback: see
docs/FALLBACK-OMA.md.
Attempt two: understanding instead of building
We read OMA's documentation, then read Paperclip's API and probed it. That ended the
guessing. The measurements are in docs/PAPERCLIP-API-NOTES.md.
Why Paperclip, in one paragraph
The four screens you want are already its data model: tasks with todo / in progress / blocked / done, blockers as links between tasks, comment threads on each task, approvals as records, cost per task, and run history. It also creates the git worktree for a task itself — the piece we were going to build next and the piece most likely to break. So the work that remains is small and specific: one Go terminal program, and a thin executor where Paperclip's own worker does not cover our review step.
What is ours because Paperclip does not do it
- One project in one folder, on one machine, and remembering which machine.
- The page layout, and repairing it after a crash or on a new host.
- Creating, adopting, resetting and deleting a project.
ocrcode review over a diff, and the merge order (one at a time, re-checked).- The test that decides a task is finished, kept with the project.
- The notes: what each screen is for.
The pitfalls that would sink a third attempt
- Building a second copy of anything Paperclip owns.
- Styling a screen before a real task has run.
- Testing with a six-task plan instead of a two-task one.
- Judging a task by a folder name.
- Letting a page have no permanent pane — it will vanish when TUIOS renumbers.
- Using an agent key where a person's key is required.
- Re-planning a stored plan.
- Reporting work as done without a command that shows it.
Where the old project is
~/paseo/projects/tuios_coding_harness (plans, history) and ~/paseo/harness (the code).
Both are untouched by this handover and remain as reference. docs/OPEN-ISSUES.md lists
what is broken or unfinished there, in case you go back.