Triggers & routing
- Trigger: source tutorial writer, tutorial drafting, tutorial body, write a tutorial from materials.
- Use when:
source-tutorial's C3,outline/tutorial_context_packs.jsonlis ready, andDECISIONS.mdhas been checkedApprove C2。 - Skip if: C2 not approved, or context packs are not ready yet.
- Network: none.
- Guardrail: the body must be reader-first, but must not write content that the sources do not support.
Writes the final tutorial markdown from approved module packs and the locked C2 structure.
Inputs
outline/tutorial_context_packs.jsonloutline/module_plan.ymlDECISIONS.md
Output
output/TUTORIAL.md
Contract
The tutorial must:
- start with reader orientation
- follow the approved module order
- keep per-module teaching sections explicit
- keep source notes visible but lightweight
Per module, the writer should emit:
### Why it matters### Key idea### Worked example### Check yourself### Source notes
Script boundary
scripts/run.py should:
- block on missing
Approve C2 - load module packs in approved order
- render the deterministic tutorial scaffold/content into
output/TUTORIAL.md
Keep rendering and pack interpretation in shared tutorial tooling, not in the wrapper.
Acceptance
output/TUTORIAL.mdexists- the required reader-orientation sections exist
- every module includes the required teaching subsections
Non-goals
- self-loop QA reporting
- article/slides compilation