Cancel from the board; office creates the session and builds the panes; handover rewritten

This commit is contained in:
Sam
2026-11-11 19:00:05 +11:00
parent 7a2d4358d3
commit 404fcc221d
12 changed files with 694 additions and 77 deletions

View File

@@ -3256,3 +3256,121 @@ Committed as `70e1f55`.
- session: [[packs/paperclip-harness/80-sessions/paperclip-harness-discovery-snapshot-overlay-check-sh-headro|paperclip-harness discovery snapshot: overlay, check.sh, headroom, mouse-1]]
- session: [[packs/paperclip-harness/80-sessions/rich-discovery-8787-2026-11-11-05-36-08|Rich discovery: 8787 2026-11-11 05:36:08]]
- context: [[packs/paperclip-harness/20-context/omni|8787]]
---
## Update (2026-11-11 07:40:01)
Measured behavior of the Mouse-1 / headroom providers this turn:
Headroom endpoint http://192.168.20.13:8787 is Anthropic-shaped:
- POST :8787/v1/chat/completions → 502 {"code":"proxy_error"}
- POST :8787/v1/messages → 401 {"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"}} (Anthropic Messages API — wants an Anthropic key this machine lacks)
- Anthropic upstream (via openai→anthropic translation) → 400
Omni router http://192.168.20.13:20129 is OpenAI-shaped:
- /v1/chat/completions → 400 when called with router's own model naming (model name mismatch, not a hard failure)
- A decision call without a key → 401 {"type":"authentication_error","code":"missing_api_key","message":"Send your key as 'Authorization: Bearer [REDACTED_SECRET]'."}
Mouse-1 cold start (reproduced exactly as prior notes): first attempt 503 {"code":"engine_timeout","message":"The model did not answer in time. After an idle period it takes a few minutes to start; retry after the Retry-After header."} after 30.5s; retry → 200 in 21.7s. bin/triage retries once on 503 and reports it.
Mouse-1 sampling result is well-formed: next-choice over {merge, person, redo} with confidences, logits, and a mouse block (calibrated:false, p_top, abstain:null, confidence_winning/normalized). Example answer: person (0.98) with reason "a person has to decide or look at it; a machine should not continue".
Caveat: Mouse-1 cannot act as an agent (no tools, writes nothing to disk on its own) — it works only as a labeller whose answer is commented on the task by bin/triage.
## Evidence
- Confidence: 85%
- Reason: Concrete, reproducible API/endpoint behavior and error codes a future agent will hit; useful troubleshooting knowledge.
---
## Update (2026-11-11 07:40:01)
## Structural/configuration observations (2026-11-11 07:40:01)
Two things were built and tested; one of them does not work, and I have the measurements.
## Headroom: tested, and it cannot sit in front of your agents yet
I added the provider, called it, and removed it again:
```
POST http://192.168.20.13:8787/v1/chat/completions → 502 {"code":"proxy_error"}
POST http://192.168.20.13:8787/v1/messages → 401 "invalid x-api-key" (Anthropic shape)
POST http://192.168.20.13:20129/v1/chat/completions → 400 (the router's own model naming)
```
Headroom's backend is **Anthropic**: it speaks the Anthropic Messages API and wants an Anthropic key, which this machine does not have. Your `omni` provider speaks the OpenAI API with its own key. So "headroom as an agent" is not a thing — and "headroom in front of an agent" does not work as configured.
Three real options:
1. **Give headroom an Anthropic credential** and move an agent to an Anthropic-shaped provider. Then one agent gets compression; per project still impossible, because the provider is chosen by the agent's model.
2. **Reconfigure headroom** to accept the omni router's OpenAI API and key. That is headroom's configuration, not ours.
3. **Do nothing.** The omni router already routes models. Headroom's only addition would be prompt compression for very long jobs, and you have no measurement showing it pays.
My recommendation is 3 until you have a long job that hurts — the provider entry is removed so no agent can be pointed at a failing endpoint.
## Mouse-1: built and run
`bin/triage <task> [--ask next|failure]` asks one four-option question and writes the answer on the task:
```
AUD-162 Tree render check — waits on the first
asking Mouse-1: next
answer: person (confidence 0.97, 0.5s, attempt 1)
person 0.98 a person has to decide or look at it; a machine should not continue
environment 0.02 something outside the code is wrong: …
redo 0.00 the work is wrong or incomplete, …
merge 0.00 the work is complete, its checks passed, …
written on the task as a comment
```
The cold start reproduced exactly as your notes said: `503` after 30.5 s, then `200` in 21.7 s. The command retries once and prints that it did. Mouse-1 cannot be an agent — it has no tools and writes nothing — but as a labeller it works, and the answer now lives on the task.
## Machines
Measured just now:
| | `.27` sam-4screen-desktop | `.51` sam-thinkpad |
|---|---|---|
| Go | 1.26.2 ✓ | **missing** |
| Nerd Fonts | 98 ✓ | 98 ✓ |
| Pi | 0.82.1 | **0.87.1** |
| TUIOS | 0.12.1 | 0.12.1 |
`.51` needs `go` in its configuration; `.27` is current. Pi differs between machines (0.87 on `.51`, 0.82 on `.13`/`.27`), which is worth aligning before agents run on `.51`.
## The cleanup work — options, in the order I would do them
1. **Old sessions.** `Repair>cleanup` is ready and now confirms before closing. 21 junk sessions remain (`harness-demo-card-*`, `office-test-1*`). I can tick and close them with you watching, or leave you to.
2. **Old harness and old project** (`~/paseo/harness`, `~/paseo/projects/tuios_coding_harness`). Options: leave as read-only reference; tar them into one archive and delete the trees; or delete outright. I would tar first — they are the only record of two earlier attempts.
3. **This build's leftovers**: duplicate shell panes, my test tasks (`AUD-161`, `AUD-162`, `AUD-166`–`171`), the `ocr`/`lazygit` panes I opened. The test tasks are real Paperclip records — I would mark them `cancelled` rather than delete, so the history stays honest.
4. **Documentation with the project-docs skill** — README, Obsidian note, architecture diagram, and a task record. That is a deliberate pass, not a by-product.
5. **Two clean tests**: a brand-new project in a fresh folder (create → task → run → merge), and adopting an existing folder (the harness repo itself). Both are worth a written result.
6. **Handover document** — `docs/HANDOVER.md`: what exists, why each decision was made, what is unproven, and where everything lives.
Say which of those six you want first, and whether I should close the junk sessions myself.
## Source paths observed
- `8787/v1/chat/completions`
- `8787/v1/messages`
- `20129/v1/chat/completions`
- `paseo/projects/tuios_coding_harness`
## Evidence
- Confidence: 82%
- Reason: Captured factual repo structure/configuration patterns from rich discovery
## Related learned memories <!-- same-turn-2026-11-11 07:40:01 -->
- context: [[packs/paperclip-harness/20-context/omni|Paperclip harness lab: machine fleet, agent provider topology, and lab tooling]]
- observation: [[packs/paperclip-harness/60-observations/tmp-repository-structure-and-configuration-patterns|Mouse-1 provider behavior: Anthropic-shaped key issue, cold-start 503→200, 401 shape]]
- decision: [[packs/paperclip-harness/50-decisions/paperclip-harness-ui-six-workspaces-spec-first-four-panel-li|Do not put headroom in front of agents yet; remove the headroom provider entry]]
- action: [[packs/paperclip-harness/40-actions/2026-11-10-wrote-docs-ui-layout-md-and-three-live-layout-mockups|Built and ran bin/triage (Mouse-1 labeller) and measured headroom provider]]
- session: [[packs/paperclip-harness/80-sessions/paperclip-harness-session-snapshot-provider-feasibility-tria|Paperclip harness session snapshot: provider feasibility + triage tooling]]
- session: [[packs/paperclip-harness/80-sessions/rich-discovery-itself-2026-11-11-07-40-01|Rich discovery: itself 2026-11-11 07:40:01]]