Files
portal/runs/permits-plan-2026-09-30

Vestmark kommune, planned again by Opus after the September additions

portal-trainer plan --intake intakes/building-permits.yaml --personas intakes/building-permits-personas.yaml --llm "MODEL=opus EFFORT=medium engines/claude.sh" --rounds 3, on 2026-09-30, after the guidance learnt to name records that answer records (about), members-only needs (door + enters_as), a group contact, and grants as the moment of membership. The plan came out of round 1 and passed the builder's checks; rounds 2 and 3 were not needed.

Side by side with the hand-written plans/building-permits.yaml (2026-09-25, before any of those existed):

hand-written Opus, this run
needs / groups / doors 14 / 5 / 2 14 / 4 / 2
needs about another – 3: objection, appeal, exemption, all about the application
grants – firm approval lists the firm in approved_firms
members-only (door + enters_as) – 3: a firm's application, completion certificate, temporary permission, for approved_firms
deadlines – 4, incl. the six-week hearing
public lists 6 3
reached_from 3 3

So the new lines were taken up unprompted, and for the right things: an objection belongs to the application it objects to, and a firm files because it was approved. What Opus did not carry over from the intake: the counter's own needs (log-counter-enquiry, case-status-enquiry), which two personas name; and the external agencies as a group of their own, folded into the case officers instead.

What the run found in the tools

  • The builder wrote one answer page per answering need, at the same path, so with three needs about the application only the last survived and iris found no path for the others. A record's page now holds one form per need about it (words[...]["forms"][need]).
  • iris counted the carried record id as effort. An objection form that carries the application's id was one field over its budget. iris main (with portal v0.5.7) counts what a person fills in.

With both fixed the site lints clean but for the two personas above: 37 questions, 15 aggregates, 225 access rules, 12 of 14 needs met. Not built with words, not deployed.