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
5.8 KiB
<<<FILE questions/index.yaml>>> name: Hva trenger du hjelp med? description: > Velg hva du trenger hjelp med. responsible: { name: Åsrud Bygg og Rehabilitering AS, contact: post@asrud.no } alternatives:
- name: Meld inn et problem
description: >
Fortell oss om det er noe galt med bygget ditt.
action: /questions/leads
consequence: [Send]
record_as: leads
features:
- name: Om bygget
description: >
Hva slags problem opplever du?
requirements:
- { name: problem, label: Hva er problemet, type: textarea }
- { name: urgency, label: Hvor akutt, type: select, options: [Dette uken, Dette måneden, Ikke akutt] }
- { name: contact, label: Kontaktinformasjon, type: email }
- name: Om bygget
description: >
Hva slags problem opplever du?
requirements:
- name: Bliv godkjent som leverandør
description: >
Søk om å bli fast leverandør til oss.
action: /questions/subcontractors
consequence: [Send]
record_as: subcontractors
features:
- name: Førstehåndsinformasjon
description: >
Hvem er du og hva kan du?
requirements:
- { name: company, label: Bedriftsnavn, type: text }
- { name: contact, label: Kontaktinformasjon, type: email }
- { name: experience, label: Erfaring, type: textarea }
- name: Førstehåndsinformasjon
description: >
Hvem er du og hva kan du?
requirements:
- name: Søk jobb
description: >
Søk om jobb som tømrer, murer eller lærling.
action: /questions/job_applications
consequence: [Send]
record_as: job_applications
features:
- name: Faglig profil
description: >
Hvilken stilling søker du?
requirements:
- { name: role, label: Stillingsnavn, type: select, options: [Tømrer, Murer, Lærling] }
- { name: contact, label: Kontaktinformasjon, type: email }
- { name: experience, label: Erfaring, type: textarea }
- name: Faglig profil
description: >
Hvilken stilling søker du?
requirements:
- name: Rapporter avvik
description: >
Rapporter uønskede hendelser eller avvik på byggeplassen.
action: /questions/incident_reports
consequence: [Send]
record_as: incident_reports
features:
- name: Avviksinformasjon
description: >
Hva skjedde?
requirements:
- { name: incident, label: Hva skjedde, type: textarea }
- { name: severity, label: Alvorlighetsgrad, type: select, options: [Høyt, Medium, Lavt] }
- { name: reporter, label: Rapportert av, type: text }
- name: Avviksinformasjon
description: >
Hva skjedde?
requirements:
- name: Anbefal kvalifisert mandskap
description: >
Anbefal noen vi bør snakke med.
action: /questions/internal_referral
consequence: [Send]
record_as: internal_referral
features:
- name: Anbefaling
description: >
Hvem anbefaler du og hvorfor?
requirements:
- { name: person, label: Navn, type: text }
- { name: reason, label: Grunn, type: textarea }
- { name: contact, label: Kontaktinformasjon, type: email } <<>>
- name: Anbefaling
description: >
Hvem anbefaler du og hvorfor?
requirements:
<<<FILE questions/leads.yaml>>> name: Meld inn et problem description: > Fortell oss om det er noe galt med bygget ditt. responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Send
consequence: [Send]
record_as: leads
features:
- name: "" description: "" resource: source: { kind: kv, bucket: leads } requires_group: prosjektledere transitions: - { to: quoted, label: Quote sent } - { to: lost, label: Not for us } - { from: quoted, to: won, label: Won } - { from: quoted, to: lost, label: Lost }
<<<FILE questions/subcontractors.yaml>>>
name: Bliv godkjent som leverandør
description: >
Søk om å bli fast leverandør til oss.
responsible: { name: prosjektledere, contact: post@asrud.no }
alternatives:
- name: Send
consequence: [Send]
record_as: subcontractors
features:
- name: ""
description: ""
resource:
source: { kind: kv, bucket: subcontractors }
requires_group: prosjektledere
transitions:
- { to: approved, label: Godkjent }
- { to: rejected, label: Ikke godkjent }
<<<FILE questions/job_applications.yaml>>> name: Søk jobb description: > Søk om jobb som tømrer, murer eller lærling. responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Send
consequence: [Send]
record_as: job_applications
features:
- name: "" description: "" resource: source: { kind: kv, bucket: job_applications } requires_group: prosjektledere transitions: - { to: interviewed, label: Interview } - { to: rejected, label: Ikke den rette } - { from: interviewed, to: hired, label: Hired } - { from: interviewed, to: rejected, label: Ikke den rette }
<<<FILE questions/incident_reports.yaml>>
name: Rapporter avvik
description: >
Rapporter uønskede hendelser eller avvik på byggeplassen.
responsible: { name: HMS-ansvarlig, contact: post@asrud.no }
alternatives:
- name: Send
consequence: [Send]
record_as: incident_reports
features:
- name: ""
description: ""
resource:
source: { kind: kv, bucket: incident_reports }
requires_group: HMS-ansvarlig
transitions:
- { to: closed, label: Lukket }
<<<FILE questions/internal_referral.yaml>>> name: Anbefal kvalifisert mandskap description: > Anbefal noen vi bør snakke med. responsible: { name: prosjektledere, contact: post@asrud.no } alternatives:
- name: Send
consequence: [Send]
record_as: internal_referral
features:
- name: "" description: "" resource: source: { kind: kv, bucket: internal_referral } requires_group: prosjektledere transitions: - { to: referred, label: Anbefalt }
<<<END>>>