{
  "formatVersion": 1,
  "recordedAt": "2026-10-02T14:50:33.937Z",
  "environment": "isolated local service recording with real provider calls",
  "codeRevision": "9b4d294a7fc882e94af987fe15c514594eeeac38",
  "sourceHashes": {
    "server/resources/writing/levels/w12/level.json": "b769149523e4e61b3dfd09f73d73ec0aa2f4fdb0da67fa26f25fb17ef5f8ddfa",
    "server/services/exercise.ts": "83182464671512e206a52ee100674c353b501822d5a1a756124ab1072f2543fa",
    "server/contexts/practice/writing/feedback-contract.ts": "b39ae7485ae3c9768db9c5131f01873b21f6095a35294e8b0c66d07a032ab960",
    "server/contexts/coach/service/templates/prompts.ts": "646f48e0fa279934b02d25fdc118997b05b6b092b8b924b53ba90c40840d22d7",
    "server/contexts/coach/service/writing-coach/follow-ups.ts": "0318f8b3cf8bac860c748681286f11409b7befce3febdebbe9fd16e613dbadcb",
    "server/contexts/coach/service/writing-coach/conversation.ts": "d1e78649724a19c2eee17d7b35c7c36cd060bca97c8bc391f2d05b092d7ba279",
    "server/contexts/coach/service/writing-coach/surface.ts": "3c1e414bf626ccf3f41371185f2c8db2308ff347edca19e46abb640c18c8baa7",
    "scripts/record-writing-coach-example.ts": "3c04f5f11d7675267cc0a4d13a06d6a308f5103cfa8db54bcdd9016ab4f4b005"
  },
  "uiLanguage": "en",
  "examLevel": "a2",
  "task": {
    "id": "w12",
    "source": "server/resources/writing/levels/w12/level.json",
    "originalText": "**Afspraak huisarts**\n\nU hebt al een week {{hoofdpijn}} en u bent erg moe. U wilt een {{afspraak}} maken bij de huisarts. U schrijft een e-mail aan de {{huisartsenpraktijk}}.\n\n- Schrijf waarom u een afspraak wilt maken.\n- Schrijf welke {{klachten}} u hebt.\n- Vraag wanneer u kunt komen.\n\nSchrijf de e-mail.\nSchrijf in hele zinnen.\n\nBeste meneer/mevrouw,",
    "modelAnswer": "Beste meneer/mevrouw, ik wil graag een afspraak maken bij de huisarts. Ik heb al een week hoofdpijn en ik ben erg moe. Wanneer kan ik komen? Met vriendelijke groet."
  },
  "models": {
    "grader": "claude-sonnet-5-5",
    "graderEffort": "medium",
    "proofreader": "claude-sonnet-4-6",
    "questions": "claude-sonnet-5-5",
    "conversation": "claude-sonnet-5-5",
    "conversationEffort": "medium"
  },
  "method": {
    "syntheticInput": "The source model answer with exactly one planted verb-form error: ik heb becomes ik hebben.",
    "scope": "Actual final service outputs, not a signed-in production browser session. HTTP/auth, warm-ups, user history and account flags are not exercised. System prompts and provider reasoning are omitted. Internal provider validation retries are not included in this public export; a service turn may make multiple provider calls.",
    "revision": "The source model answer is submitted voluntarily as a revised answer and independently as a correct control. A practice pass does not mean an official exam pass.",
    "review": "Prepared and reviewed by AI agents; no human or NT2-qualified review is claimed.",
    "publicExport": "Only the task, submitted answers, offered questions, final visible replies, practice grades and source metadata. Private prompts, raw provider attempts, reasoning and transport chunks are excluded. Earlier failed recordings are retained privately; this successful recording used changed source after a repair."
  },
  "calls": [
    {
      "stage": "faulty_answer",
      "method": "provideFeedback",
      "status": "ok",
      "startedAt": "2026-10-02T14:50:33.937Z",
      "finishedAt": "2026-10-02T14:50:38.862Z",
      "input": {
        "text": "Beste meneer/mevrouw, ik wil graag een afspraak maken bij de huisarts. Ik hebben al een week hoofdpijn en ik ben erg moe. Wanneer kan ik komen? Met vriendelijke groet.",
        "conversation": "fresh authored task"
      },
      "output": {
        "content": "Good job, you passed and can move on to the next exercise.\nOne tip for next time: with \"ik\", the verb has no -en ending.\n**Ik {{heb}} al een week {{hoofdpijn}}** — With \"ik\" in the present tense, use the verb stem: ik heb, not ik hebben.\nAlso, end your email with your name after the closing, like a real email.",
        "passed": true,
        "isAttempt": true,
        "rubric": {
          "grammar": 72,
          "vocabulary": 70,
          "taskCompletion": 90,
          "register": 80
        },
        "corrections": [
          "Ik {{heb}} al een week {{hoofdpijn}}"
        ],
        "correctionPairs": [
          {
            "original": "Ik hebben al een week hoofdpijn",
            "corrected": "Ik {{heb}} al een week {{hoofdpijn}}",
            "explanation": "With \"ik\" in the present tense, use the verb stem: ik heb, not ik hebben."
          }
        ],
        "vocabSuggestions": []
      }
    },
    {
      "stage": "offered_questions",
      "method": "composeFollowUps",
      "status": "ok",
      "startedAt": "2026-10-02T14:50:38.862Z",
      "finishedAt": "2026-10-02T14:50:40.157Z",
      "input": {},
      "output": [
        {
          "id": "followup-1",
          "text": "Why is it \"ik heb\" and not \"ik hebben\"?"
        },
        {
          "id": "followup-2",
          "text": "Do they check closings and names in emails?"
        }
      ]
    },
    {
      "stage": "post_pass_conversation",
      "method": "composeTurn + runAgenticBeat",
      "status": "ok",
      "startedAt": "2026-10-02T14:50:40.166Z",
      "finishedAt": "2026-10-02T14:50:46.284Z",
      "input": {
        "question": "Why is it \"ik heb\" and not \"ik hebben\"?"
      },
      "output": {
        "content": "In Dutch, the verb ending changes with the subject. With \"ik\" you use the stem, with no ending: ik werk, ik woon, ik ben. \"Hebben\" is the infinitive, the form you find in a dictionary. You use it with \"wij\", \"zij\" (they) and \"jullie\", and in sentences like \"Ik wil een afspraak hebben\".\n\n\"Hebben\" is also irregular. The stem would be \"heb\", and that is the form you need: ==ik heb==, jij hebt, wij hebben. In your email, \"ik wil graag een afspraak maken\" is correct because \"wil\" is the verb that goes with \"ik\". \"Maken\" is a second verb and stays in the infinitive.\n\nThe exam checks grammar on a writing task like this. Verb endings with \"ik\" are the kind of slip it looks at, so it's worth getting automatic."
      }
    },
    {
      "stage": "revised_answer",
      "method": "provideFeedback",
      "status": "ok",
      "startedAt": "2026-10-02T14:50:46.285Z",
      "finishedAt": "2026-10-02T14:50:49.746Z",
      "input": {
        "text": "Beste meneer/mevrouw, ik wil graag een afspraak maken bij de huisarts. Ik heb al een week hoofdpijn en ik ben erg moe. Wanneer kan ik komen? Met vriendelijke groet.",
        "conversation": "retains the faulty answer and actual feedback"
      },
      "output": {
        "content": "Nice work, you passed and can move on to the next exercise.\nYou fixed the verb: \"Ik heb\" is correct now, and your email covers the reason, your complaints and the question.\nOne tip for next time: put your name on a new line after \"Met vriendelijke groet\", like in a real email.\nAlso start the first line after \"Beste meneer/mevrouw,\" on a new line with a capital letter.",
        "passed": true,
        "isAttempt": true,
        "rubric": {
          "grammar": 90,
          "vocabulary": 75,
          "taskCompletion": 90,
          "register": 80
        },
        "corrections": [],
        "vocabSuggestions": []
      }
    },
    {
      "stage": "correct_control",
      "method": "provideFeedback",
      "status": "ok",
      "startedAt": "2026-10-02T14:50:49.747Z",
      "finishedAt": "2026-10-02T14:50:55.228Z",
      "input": {
        "text": "Beste meneer/mevrouw, ik wil graag een afspraak maken bij de huisarts. Ik heb al een week hoofdpijn en ik ben erg moe. Wanneer kan ik komen? Met vriendelijke groet.",
        "conversation": "fresh authored task, independent of previous attempts"
      },
      "output": {
        "content": "Good job, you passed! You covered the reason, your symptoms and the question about when you can come.\nOne tip for next time: end a formal email with your name, so the closing is complete.\n**Met vriendelijke {{groet}}, {{Anna}}** — A formal email ends with the greeting, a comma and then your name on the same or next line.\nAlso, you could add 'Alvast bedankt' before the closing. This is optional.",
        "taskParts": [
          true,
          true,
          true
        ],
        "passed": true,
        "isAttempt": true,
        "rubric": {
          "grammar": 85,
          "vocabulary": 70,
          "taskCompletion": 90,
          "register": 80
        },
        "corrections": [
          "Met vriendelijke {{groet}}, {{Anna}}"
        ],
        "correctionPairs": [
          {
            "original": "Met vriendelijke groet.",
            "corrected": "Met vriendelijke {{groet}}, {{Anna}}",
            "explanation": "A formal email ends with the greeting, a comma and then your name on the same or next line."
          }
        ],
        "vocabSuggestions": []
      }
    }
  ]
}
