# uhhm.no from a plan, 2026-09-23 The live site (uhhm/questions) rebuilt from `plans/uhhm.yaml`: the five buckets it already holds, with their live state and event names (`events:` on the plan, new today), plus two new ones. `trials` is the client feature: a business describes how work flows through it and an owner approves the intake by hand before anything is built; the n8n workflow that builds the preview is named as `attended_by` and does not exist yet. `custody_requests` is UHHM as the custodian of the redoal network: a desk of its own for the `custodians` group, which owners watch and invite into. Words by Claude Sonnet (`engines/claude.sh`, 142 s for 14 pages), verifier green by construction. Lifting words from the live repo (`--words-from`) was tried and dropped: the lift is by position, so the old front door's three headings landed on the new front door's first three cards regardless of meaning, and "Attention is earned" is the wording the 2026-09-21 run found at fault. Visitor: qwen3:8b, one task per call, shown the whole card; 15 held-out personas, the eight from `runs/uhhm-2026-09-21` and seven for what is new. | Round | Words | With descriptions | Headings only | |---|---|---|---| | 1 (`r1/`) | Sonnet, as built | 16 of 27 | 19 of 27 | | 2 (`r2/`) | + `overrides.json`: the custody card and the cards behind both doors reworded by hand | 19 of 27 | 20 of 27 | | 3 (`site/`) | + `overrides-r3.json`: the doors as who the visitor is | 19 of 27 | 21 of 27 | Round 1's defect was one card: "Get an answer from the people who keep the network" read as "contact us" and took seven personas of every kind on the front door. Naming redoal in the heading fixed that. Inside the doors, "Work with people who read the whole thing" and "Get a page fixed the way you'd write it" crossed over until they became "Work with us" and "Suggest a change to this website"; the join door has routed 3 of 3 on every question since. What is left is the front door, and it is mostly not wording: - The exhibition visitor ("your drawing network") and the interaction designer ("the drawing interface") go to the redoal card. The plan says subscribe and collaborate; the visitor is not wrong. - The tech journalist ("what you release") and the app builder (redoal addresses in an app) go to the build door. Fair either way. - On `/build`, the architecture firm and the climbing gym pick "See your own business as a site, before you buy anything" over the brief, with descriptions. A paying client who wants to see first is the trial's whole point; if the plan should say so, make the trial the door for both and the brief a field. - The dance school lands three different places in three rounds: the visitor model's noise floor, not the page. `rate` on round 3: LIX 19 to 33 (very easy to easy) on every page, against 25 to 35 for the earlier contractor build. Behind the doors, which/where/asked/next are full marks on every page and every control passes. On the front door, "which" is 1 of 3 for the brief and 1 of 2 for the trial and the proposal: a door heading cannot say what each card behind it says. Before the branch (uhhm/questions `trainer-rebuild`) merges: the site runs portal v0.3.36 and `invite:`/`attended_by` need v0.3.40 or later, so the branch bumps PORTAL_RELEASE and IRIS_RELEASE to v0.3.42; the `custodians` group has to exist in id.uhhm.no; invites need `KANIDM_API_TOKEN` in the repo's secrets, or the two invite forms fail closed with a message; and any unsubscribe link already sent by the newsletter points at `/subscribed`, which is now `/decide/subscribe`. Files: `score.sh` runs the whole scoring; `tasks-*.jsonl`, `answers-*.jsonl`, `model.json`, `rated/` are round 3's; `words-r3.json` is the words as used, the next rebuild starts from it with `--words`.