These files were working in /tmp on the machine where Unit 1 (B2, "Shop Safety & Survival") was built.
They are copied here so the work survives a machine switch. The live lesson is also safe in Firestore
(academy_lessons/B2-1) and the player lives in simulator.html — both sync via Google Drive.
u1_enhanced.json — the LESSON SOURCE: {result:{lessons:[{number,title,innerHtml,keyTerms}]}}, 7 lessons,
with everything baked in (bold key terms, subject titles, drop cap, stat blocks, myth-vs-fact, highlights,
icon lists, section breaks, and the per-section .asetask ASE-task callouts). This is what you edit/rebuild from.b2-unit1-doc.json — the assembled Firestore doc (sections + terms + headCss). Produced by the harness builder.assemble_unit1.py <source.json> — builds the standalone preview mockups/academy-b2-unit1-preview.html.build_sim_harness.py <source.json> — builds the in-simulator preview mockups/academy-b2-simulator-view.html
(it lifts the real player JS out of simulator.html) AND writes /tmp/b2-unit1-doc.json for seeding.
Contains the transforms: declutter_titles, sds_prefix, wrap_images, fix_checks, the POP_CSS block, the
shape-wrap SVGs, and the fake question pool used only for the offline preview.apply_asetasks.py <workflow.output> — inserts the .asetask callouts into the lessons (already applied to u1_enhanced.json).workflows/ — the agent prompts used to generate and enhance the content (authoring, "popize" pop-elements,
asetask mapping, and the original TOC). Re-run these patterns (via the Workflow tool) for new units.u1_enhanced.jsonpython3 functions/scripts/academy-build/assemble_unit1.py functions/scripts/academy-build/u1_enhanced.json
python3 functions/scripts/academy-build/build_sim_harness.py functions/scripts/academy-build/u1_enhanced.json
cd functions && node scripts/seed-academy-b2-unit1.js # pushes /tmp/b2-unit1-doc.json -> academy_lessons/B2-1
cd .. && npx @11ty/eleventy && firebase deploy --only hosting --project ase-portal-5d37c
The .py scripts have hardcoded absolute paths to this project (and to /tmp). If the Mac Mini's home
path differs (e.g. a different username or a Library/CloudStorage/... Drive path), update the paths at the
top of assemble_unit1.py and build_sim_harness.py first. The seed script needs functions/serviceAccountKey.json.