Work from another session, committed as found (tests green): - `plan` reads an intake into a plan.yaml (a model decides needs, stages, forms and budgets; a person reads the result before build). - Plans gain `doors` (a first question before the forms, when a front door would carry more than five needs), `groups` with labels that a select may draw its options from (`options_from: groups`), `private` fields kept off public pages, `multiple` selects, and `max_fields` as what the intake said the person will tolerate. - `card.rs`: an alternative as the visitor meets it, in text, so the answering visitor and `rate` read the served card, not the heading. - `rate` reads followup pages from the repo and reports "what happens next" as not measured rather than zero when it cannot. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L4jrCgLiKKHAEFuZUJjckH
Tomter Vel, the plan updated: committees as groups, public lists, multi-choice
plans/tomtervel.yaml after the 2026-09-23 revision, built with
Claude Sonnet writing every part of the card (322 s, 31 pages,
verifier green by construction). This is what vel.klingenbergbygg.no
serves from the afternoon of 2026-09-23. Visitor: qwen3:8b, one task
per call, shown each option as its whole card, answering by number.
What changed in the plan:
- The seven committees are the desk groups, named as the site names
them, and the committee application draws its options from that
list (
options_from: groups), ticking any number. - Traffic reports, playground faults and the noticeboard have a
public read-only list at
/status/<bucket>, linked from the page after sending. Emails, phone numbers and the poster's name are projected away. - Volunteers tick several events; helpers tick several things they can do.
- Hearing input sits on the front door: a resident with an opinion is not a volunteer.
- Door lines (
who) name concrete things: snow, shopping, a lift; a dangerous bend, a broken swing.
| Visitor could read | Card build, 2026-09-23 morning | This build |
|---|---|---|
| Headings and descriptions | 32 of 40 | 31 of 38 |
| Headings only | 29 of 40 | 30 of 38 |
Two fewer tasks, since hearing input is now one step, not two. The misses that remain:
- "Bli medlem av Tomter Vel" against "Oppdater eller avslutt medlemskapet": the lapsed member ("I was a member but did not pay last year") reads themselves as an existing member. Both builds, both modes. One form for join-and-pay would end it.
- The two hearing personas and the planner still cross between "Få din mening med i høringssvaret" and "Bli med og gjør en innsats" on the front door, in both directions. The planner who wants a committee seat because of planning is genuinely between them.
- On the neighbours' page, "Få en nabo til å stille opp" and "Bli spurt når en nabo trenger en hånd" are still crossed by one persona each way. "Trenger du hjelp" and "Kan du hjelpe" would be plainer.
An instrument note: the first scoring of this build read 24 of 38 with cards, worse than headings alone, because the visitor model, shown the page's description above the options, copied that description as its "choice" six times. The answerer now numbers the options and asks for the number; that is the 31 of 38 above, on the same site and personas. The old answers are not kept.