This document explains how OpenMAIC generates interactive scenes — self-contained interactive widgets embedded in a lesson, of which simulation is one type (the default one, and the running example used throughout this doc). It's written to be readable without prior knowledge of the codebase; file paths are included so you can jump to the source.
A classroom (Stage) is a list of scenes. One scene type is interactive (lib/types/stage.ts, packages/@openmaic/dsl/src/stage.ts). An interactive scene isn't one fixed thing — it's a widget, and the widget has a WidgetType:
simulation | diagram | code | game | visualization3d | procedural-skill
