Author an ASE Academy Lesson

The production pipeline for one or more slideshow lessons. Follow every step in order. Never run parallel agents over the same lesson files; partition by file or run sequentially.

Paths

Per-lesson recipe

  1. Read the TOC line for the exact lesson number and title BEFORE authoring (numbering drift happened once — never again). Confirm the lesson isn't already marked [BUILT …].
  2. Grep the unit's question digest for the lesson's topics. Extract the graded facts (numbers, rules, distinctions the bank grades). Every matching bank question must be answerable from the lesson.
  3. Author the txt per the binding standard. Non-negotiables checklist:
  4. Build: node functions/scripts/build-slideshow-deck.js "<txt path>" (from ASE_Portal). Zero WARNs required. SKIP audio (final-only step).
  5. Verify: deck loads (require it, check slide count/lab explosion/quiz 10Q); on player changes run the script syntax-check; density-sweep new slide types at desktop; spot-check 375px (no horizontal overflow, stacking correct).
  6. Mark the TOC line [BUILT YYYY-MM-DD].
  7. Every ~3 lessons deploy: cp deck(s) to _site/academy-decks/node node_modules/@11ty/eleventy/cmd.cjs → HYDRATE _site (find _site -type f -exec cat {} + >/dev/null) → firebase deploy --only hosting --project ase-portal-5d37c (verify the project flag TWICE). NEVER copy academy-player.html into _site by hand — eleventy writes it (raw front-matter leaks otherwise).
  8. Sweep the digest after each lesson: confirm the lesson's matching bank questions are now answerable; note gaps for the next lesson in the unit.

Seeding + menu (do once per module, ~when Foundation is complete, not per lesson)

node scripts/seed-academy-slides.js <deckId> --docid <DOCID> from functions/ + wire simulator.html menus (ACADEMY_SECTIONS / ACADEMY_LESSON_DECKS / ACADEMY_LESSON_META), then syntax-check simulator.html (18+ scripts, 0 errors).

Reporting to Mario (rule 19)

Reply with only: lessons now live + links, anything needing his decision or documents (real TDS/SDS/position statements), and flagged bank-question conflicts. No process narration.