lesson_id: TOT-PRAVO9-L01
checks:
    - name: docx_font_size
      pass: true
      threshold: base text 14pt (w:sz 28)
      actual: all base runs at 14pt
      location: teacher_guide.docx
    - name: docx_heading_structure
      pass: true
      threshold: styles Heading1 and Heading2 present
      actual: Heading1 and Heading2 present
      location: teacher_guide.docx
    - name: docx_font_size
      pass: true
      threshold: base text 14pt (w:sz 28)
      actual: all base runs at 14pt
      location: worksheet.docx
    - name: tasks_min
      pass: true
      threshold: '>=5 tasks; levels ★ ★★ ★★★ present'
      actual: 6 tasks
      location: worksheet.docx
    - name: task_symmetry
      pass: true
      threshold: guide tasks ⊇ worksheet tasks; no answer markers in worksheet
      actual: 6 worksheet tasks, all present in guide, no answer markers
      location: worksheet.docx
    - name: deck_present
      pass: true
      threshold: deck_html file exists
      actual: deck present
      location: design-vsho/decks/pravo-9-l01.html
    - name: deck_slide_count
      pass: true
      threshold: 10..15 <section class="slide">
      actual: 11 slides
      location: design-vsho/decks/pravo-9-l01.html
    - name: deck_no_placeholders
      pass: true
      threshold: no unfilled [..] placeholders
      actual: no placeholders
      location: design-vsho/decks/pravo-9-l01.html
    - name: deck_scheme_alt
      pass: true
      threshold: each <svg> has <title> or text labels
      actual: 3 schemes, all labeled
      location: design-vsho/decks/pravo-9-l01.html
    - name: interactives_present
      pass: true
      threshold: interactives.yaml exists
      actual: interactives present
      location: interactives.yaml
    - name: interactives_schema
      pass: true
      threshold: items[] with id,type,title,instructions,platform
      actual: 3 items, all valid
      location: interactives.yaml
    - name: interactives_alt
      pass: true
      threshold: every item has non-empty alt_text
      actual: 3 items, all with alt_text
      location: interactives.yaml
    - name: outcomes_codes
      pass: true
      threshold: 3..7 outcomes, codes in curriculum.yaml
      actual: 4 outcomes
      location: lesson_spec.yaml
    - name: key_terms_min
      pass: true
      threshold: '>=8 key terms'
      actual: 10 key terms
      location: lesson_spec.yaml
    - name: needs_verification_absent
      pass: true
      threshold: no confidence=needs_verification claims in validated research
      actual: research status "", check not applicable
      location: research.yaml
    - name: codes_theme_correct
      pass: true
      threshold: lesson_spec outcome codes ⊆ this lesson's outcome_codes in course_architecture.yaml
      actual: all 4 outcome codes belong to the lesson
      location: lesson_spec.yaml
    - name: research_sources_resolvable
      pass: true
      threshold: 'every claim.source_id resolves in sources: (or sources/sources.yaml)'
      actual: 4 source_id(s), all resolvable
      location: research.yaml
    - name: locators_usable
      pass: true
      severity: warn
      threshold: locator pages <= 300 (else likely a text-extract page)
      actual: no suspicious locator pages
      location: research.yaml
    - name: needs_verification_gate
      pass: false
      severity: gate
      threshold: no open needs_verification claims before approve
      actual: 'needs_verification (blocks approve): c14, c17, c20, c21, c22'
      location: research.yaml
    - name: claim_refs_resolvable
      pass: true
      threshold: every [cNN] citation resolves to a claim id in research.yaml
      actual: all claim refs resolve
      location: content artifacts
    - name: editorial_safety
      pass: true
      threshold: no forbidden editorial phrases (own locality/region, personal stance, …)
      actual: no forbidden phrases
      location: teacher_guide.md
    - name: no_meta_phrases
      pass: true
      threshold: no generation-process meta phrases / TODO / placeholder / lorem
      actual: no meta phrases
      location: content artifacts
    - name: deck_theme_set
      pass: true
      threshold: deck <body> has data-subject (course) and data-grade (lesson grade)
      actual: data-subject="pravo" data-grade="9"
      location: design-vsho/decks/pravo-9-l01.html
    - name: assessment_covers_outcomes
      pass: true
      threshold: coverage_map covers every lesson_spec outcome code
      actual: all 4 outcome codes covered
      location: assessment.yaml
    - name: glossary_min
      pass: true
      threshold: '>=8 terms in the glossary / key-concepts section'
      actual: 12 terms
      location: teacher_guide.md
    - name: homework_tiers
      pass: true
      threshold: 3 homework tiers (★, ★★, ★★★) in teacher_guide.md and worksheet.md
      actual: ★ / ★★ / ★★★ present in both
      location: teacher_guide.md
    - name: interactives_min
      pass: true
      threshold: '>=2 interactives'
      actual: 3 items
      location: interactives.yaml
    - name: worksheet_no_answers
      pass: true
      threshold: 'no answer markers (Відповідь: / Ключ: / Розв''язок:)'
      actual: no answer markers
      location: worksheet.md
