Two different things with a family resemblance: Explore is an interactive step inside a lesson; Labs are standalone simulations with their own pages.
An Explore step is a widget anchored to a concept card, so it arrives at the moment the idea it manipulates has just been introduced. The engine lives in components/interactive/:
Balance · Bars · Categorize · Compounding · Explorer · Gauge · Graph · Grow · Hotspot · Lab · Match · NumberLine · Sort · Steps — plus Challenges, the predict-then-reveal loop.
Each widget carries a takeaway: the one sentence the manipulation is supposed to leave you with. That field is doing real work — it is what makes a widget a lesson step rather than a toy, and it is also the single best-written line in the corpus, which is why the social system mines it.
Primary lessons use KidWidget — a warmer, GSAP/canvas engine with its own 13 widget types and a no-fail interaction model. When a lesson has kid widgets they replace the standard interactives for that tier, with one exception: lab widgets are additive and always survive.
How many appear is an admin setting (0–4), applied at runtime. See 20 · The admin backend.
227 single-file simulations at /labs, one HTML file each: no dependencies, no build step, no network calls. Open one and it runs.
They are real simulations rather than animations — you change a parameter and the thing recomputes, rather than scrubbing a pre-rendered timeline. That distinction is the whole pitch and it is worth protecting in any copy you write about them.
A lab can also appear inside a lesson as a lab-type Explore step, embedded through a postMessage bridge, so the same file serves both surfaces.
Labs are the subject of their own campaign (_labs-social/), with 87 narrated vertical clips cut from screen captures. If you are writing about a specific lab and want to know what it actually demonstrates, watch the clip — the copy in the campaign files was corrected against the running simulation more than once, and the simulation won every time.