Skip to content

Validate LLM-driven end-to-end generation per domain (first real-run hardening) #5

Description

@gyasis

Validate LLM-driven end-to-end generation per domain (first real-run hardening)

Status: Not started. The pipeline was built and tested with structural / golden-input checks only — no real LLM in the loop. The test harness (skill/tests/test.sh) SKIPs its assertions when a generated lesson.html is absent, so the prompt-driven stages have never been observed producing a correct lesson end-to-end. (SETUP.md "Open caveats" #3.)

What IS verified

  • Build / skill wiring / invocation ✅
  • Deterministic scaffolding: SQLite init, SM-2 SR scheduler, schema validators, widget renderers, shell assembly, ingest adapters — golden-input/structural tests pass (181/182 tasks).

What is NOT verified (this issue)

The LLM-driven stages, run for real with the parent Claude Code session executing the prompts (Q8 architecture):

  • Stage 1 syllabus generation
  • Stage 4 chapter prose + widget generation
  • Stage validation / FR-006 retry loop behavior on actual (sometimes malformed) LLM output

Expected first-run bug classes

  • LLM emits malformed/partial JSON the Zod schemas reject
  • Widget specs that pass create-validation but crash the renderer (shape mismatches)
  • Vignette/quiz taxonomy gaps on real medical content
  • Prompt-stage edge cases the structural tests can't simulate

Acceptance criteria

Run /chiron for real on one golden input per domain and confirm a correct, openable lesson:

  • Code/chiron-code <repo> → lesson.html opens, MCQ/T-F/spot-the-bug render, SR cards persist to .chiron-state.db
  • Medicine/chiron-medicine <pdf> → AMBOSS-structured chapters, clinical-vignette MCQs render
  • Language (Italian)/chiron-language <csv> → fill-blank/match-madness render (audio tabled per T058: Render audio-tts widgets (US2 Italian native-speaker) — blocked on TTS provider selection #2)
  • Concepts — Packt-shape lesson renders (mathjax/step-cards/flowcharts)
  • Fix all prompt-stage bugs surfaced; re-run until each domain produces a clean lesson
  • Update skill/tests/ so at least one real generated lesson per domain is captured as a regression snapshot

Relationship to other issues

Independent of #2 (TTS provider), #3 (Lesson Expander), #4 (Server/CMS). This is the "does the core generator actually work against a live LLM" gate — arguably the highest-value next step before building features on top.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions