{
  "module": "9 — Verification & Feedback Loops",
  "course": "Master Course — Harness Engineering",
  "version": "1.0.0", "duration_minutes": 30, "total_questions": 10,
  "bloom_distribution": { "target": "20/40/40", "actual": { "recall": 2, "application": 4, "analysis": 4 } },
  "passing_score_percent": 70,
  "questions": [
    { "id": "Q01", "bloom": "recall", "type": "multiple_choice", "prompt": "State the Cherny claim.", "options": ["Verification doubles cost", "Adding verification improves output quality 2–3×", "Verification is optional", "Verification slows agents"], "answer_index": 1, "rationale": "Boris Cherny (Claude Code founder). The cost (extra call/test) is real; the quality multiplier is larger." },
    { "id": "Q02", "bloom": "recall", "type": "multiple_choice", "prompt": "Name the 4 verification methods.", "options": ["Unit/integration/e2e/manual", "Computed · Visual · Model-judged · Human", "Static/dynamic/runtime/manual", "Lint/test/build/deploy"], "answer_index": 1, "rationale": "Computed (deterministic), Visual (UI), Model-judged (semantic, extra LLM call), Human (last resort)." },
    { "id": "Q03", "bloom": "application", "type": "multiple_choice", "prompt": "Agent output has a syntax error. Which tier catches it?", "options": ["Model-judged", "Human", "Tier 1 Computed (lint/compile) — fails fast, no LLM call wasted", "No tier — it ships"], "answer_index": 2, "rationale": "Computed is cheapest+deterministic and catches syntax/compile errors immediately. Tier ordering puts it first precisely so LLM calls aren't wasted on uncompilable code." },
    { "id": "Q04", "bloom": "application", "type": "multiple_choice", "prompt": "Code compiles but adds instead of multiplies. Which tier catches it?", "options": ["Tier 1 Computed (no test for this)", "Tier 2 Model-judged — independent subagent evaluates 'does this implement the spec?' Catches semantic errors computed can't.", "No tier", "Human only"], "answer_index": 1, "rationale": "Semantic errors need semantic checking. Model-judged (or Tier 1 if there's a behavior-specific test). This is the gap model-judged fills." },
    { "id": "Q05", "bloom": "application", "type": "multiple_choice", "prompt": "A flaky test traps the agent in verify-fail-retry. What's the fix?", "options": ["Remove all tests", "Retry budget (cap N failures) + flaky handling (3× majority vote, or quarantine as warning). Prevents the stuck-loop.", "Use a stronger model", "Skip verification"], "answer_index": 1, "rationale": "The retry budget caps retries (Module 7's stuck-loop variant). Flaky handling (majority vote or quarantine) prevents intermittent failures from trapping the agent." },
    { "id": "Q06", "bloom": "application", "type": "multiple_choice", "prompt": "You're verifying a UI change. Which method?", "options": ["Computed (no good for UI)", "Visual — Playwright screenshot + pixel diff. High reliability for UI tasks.", "Model-judged", "Human only"], "answer_index": 1, "rationale": "Visual verification (Playwright, pixel diff) is purpose-built for UI. Computed methods (tests) can verify logic but not visual rendering." },
    { "id": "Q07", "bloom": "analysis", "type": "multiple_choice", "prompt": "Why is verification a 'security control', not just QA?", "options": ["It's required by compliance", "It answers 'does the output do what was intended?' — also 'did the agent do what IT was supposed to, not what an injection told it to?' Computed catches injected code (breaks tests); model-judged catches semantic deviation. Defense in depth.", "It's faster", "It's cheaper than security tools"], "answer_index": 1, "rationale": "Verification detects deviation from intent — whether the deviation is a genuine bug or an injected action. It's a Module 6 defense layer, not just quality." },
    { "id": "Q08", "bloom": "analysis", "type": "multiple_choice", "prompt": "In a 3-tier loop, why is computed FIRST?", "options": ["It's the most reliable", "Cheapest and deterministic. Fails fast on syntax/compile/type errors without spending an LLM call. Tier ordering: cheapest-deterministic first, expensive-flexible second, human last resort.", "It's required by the API", "It's the only option"], "answer_index": 1, "rationale": "Cost optimization. Spending an LLM call (Tier 2) on code that doesn't compile wastes money. Tier 1 filters the obvious failures cheaply." },
    { "id": "Q09", "bloom": "analysis", "type": "multiple_choice", "prompt": "Tight vs staged vs loose — which for a high-stakes deploy?", "options": ["Loose — fastest", "Tight or staged. High-stakes work justifies the verification cost. Tight (per-call) or staged (checkpoints) catches errors before they compound. Loose risks full-rework on failure.", "No verification", "Depends on the model"], "answer_index": 1, "rationale": "High-stakes work justifies verification cost. The 2-3× quality multiplier (Cherny) + the cost of failure favors tight/staged over loose." },
    { "id": "Q10", "bloom": "analysis", "type": "multiple_choice", "prompt": "Why is 'no verification' a production defect?", "options": ["It's illegal", "No quality gate. Errors compound (Module 7). Injected deviations undetected. The 2-3× quality multiplier forfeited. Cure: minimum computed verification (tests/lint).", "It's slow", "It uses too many tokens"], "answer_index": 1, "rationale": "Without verification, every error propagates, injection goes undetected, and the Cherny multiplier is lost. At minimum, computed verification (deterministic, cheap) should gate significant actions." }
  ]
}
