Files
portal/vendor/trainer/runs/rehab-entreprenor-no-2026-09-21

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 wrote aggregates.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.