Every prompt and reply is now kept under <out>/llm/. An empty reply is a retry, not a fatal error; a spec that never parses stops the run before the structure phase; --visitor-llm lets a different model play the visitor. The file-block parser finds markers anywhere in a line, accepts a short END and lets a new FILE close an open one, after a reply glued two files together with `<<<END>></think>`. The reference gains a language section: copy in the intake's language, identifiers in ASCII. runs/rehab-entreprenor-no-2026-09-21: nemotron-3.5-lightning:30b-a3b did not produce a loadable site. Written up with the reason and the way forward: structure from needs.yaml deterministically, words from the model. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L4jrCgLiKKHAEFuZUJjckH
1.6 KiB
1.6 KiB
Norwegian contractor, generated by a local model: failed
Intake: intakes/rehab-entreprenor-no.yaml. Generator:
nemotron-3.5-lightning:30b-a3b on ergo's Ollama, six rounds per
phase, about 16 minutes. It never produced a site that loads.
- The spec parsed on the fourth try, after nesting personas inside each need once and returning no files at all twice.
- Structure went 11 failures, 1, then a YAML syntax error it could not
get past in four rounds: an end marker came out as
<<<END>></think>with the next file glued to it, so two files were written as one. The parser now tolerates that; the model did not notice it when shown the file back. - It copied the reference's English example into its desk page
(
bucket: leads, "Quote sent") instead of writing its own, never wroteaggregates.yaml, and one reply was 40 KB of empty code fences (truncated here). - The Norwegian is mixed: "Hva trenger du hjelp med?" is fine,
"kvalifisert mandskap" is Danish spelling, and it kept
åin a state name against the reference's rule.
A Sonnet-class model did the English contractor in one round per
phase. What this run says is that a 3B-active model cannot hold the
whole content reference and write a dozen interlocking files at once,
in any language. The way to make small local models useful is to give
them less to do: generate aggregates.yaml, desks and followup pages
deterministically from needs.yaml (stages, done_when,
handled_by already say everything those files contain), and ask the
model only for words - the page question, headings, descriptions and
field labels, one page at a time.