git-subtree-dir: vendor/trainer git-subtree-mainline:c7c2956e15git-subtree-split:a2a9f4edcf
Tomter Vel: the intake read into a plan by Claude Opus
portal-trainer plan --intake intakes/tomtervel.yaml --llm "MODEL=opus EFFORT=medium engines/claude.sh": Claude Opus 5 on a Max
subscription through Claude Code's print mode, one round, 57 s. The
YAML passed every check build makes first try. No personas attached;
plans/tomtervel.yaml is the hand-written plan for the same intake,
with personas, and is what was built.
Side by side with the hand-written plan:
| hand-written | Opus | |
|---|---|---|
| doors | 3 (medlem, melde-fra, bidra) + sharing on the front door | 4 (medlemskap, meld-fra, bidra, utstyr) + hearing input on the front door |
| needs | 9 | 10 |
| internal need for expenses | yes, enters_as: komiteer, 3 fields |
yes, enters_as: komite, 6 fields |
| member leaves by own link | no | yes, moves_by: { utmeldt: [submitter] } |
| poster takes down own notice | yes | yes |
| sharing | one need, one form, kept small on purpose | a door of its own, offer and borrow as two needs |
What Opus read right that the small model missed on the contractor:
every internal role became an enters_as need, every "they can take
it down themselves" became a submitter move, and stages were read
one verb at a time (open -> tatt_opp -> ordnet -> avvist). Nothing
in the intake was dropped.
What a reader would change:
- The expense claim asks six required fields of a volunteer with a receipt; three is enough (who, how much, what for).
- The equipment board was meant to stay small. Two needs and a door give it the weight of membership; one notice with "I have" or "I need" does the job.
naeromraadetin a door'swho: the ASCII rule is for identifiers, and the model applied it to prose a visitor reads. The words model never seeswho, so it costs nothing here, but a plan meant to be read should saynærområdet.