All 20 demo types
This is the full palette of interactive blocks the course is built from. Every lesson you read is assembled out of these twenty formats — a diagram here, a simulator there, a state panel, a quiz. This page is the catalogue and the playbook: what each type is for, exactly when it earns a place in the loop, and the one rule that governs all of it — a lesson uses one or many of them, merged freely, with no maximum.
01One or many — there is no cap
The most common mistake is to treat these twenty types as a menu where you order exactly one dish. They are not. They are a paint palette. A lesson is a painting, and you pick up as many colours as the canvas asks for — sometimes one bold stroke, sometimes a dozen blended. A thin idea may need a single diagram. A rich, multi-beat lesson can stack a slide deck to set the scene, an annotated SVG to show the anatomy, a simulator for the reader to drive, a state panel to read the situation, and a quiz to check it stuck. All of that, in one lesson, is not too much — it is precisely the point.
- One is fine. A single well-chosen flowchart can carry a whole lesson about a branching process.
- Many is fine — and encouraged. Chain several in section order; each gets its own plain-language intro.
- Merging is fine. Fuse two exemplars into one widget — a flowchart whose nodes drive a state panel, say.
- Reusing across lessons is fine. The same type, framed for a different teaching job, teaches better than forcing a fresh one.
- There is no maximum. Fit before count — never pad a thin beat, never starve a rich one. Use as many as the teaching genuinely asks for: one, or forty.
Build a lesson's demo set
Below is the feature-flags format (type 19) rewired to this page's idea. Each switch turns on a demo type for an imagined lesson. Some types depend on another being present first — a quiz to "check it stuck" only makes sense after something has been shown; a worked example needs the concept explained. Flip one on without its support and a warning slides in. The summary tells you how many demos your lesson uses now — and notice it never stops you for using too many. There is no cap.
Your lesson's demo set
Order is a real constraint
Pedagogy has a grammar: you can't check what was never shown, and a reader can't drive a flow they never saw. Encoding that as a dependency map turns a loose "good order" into a visible warning — exactly what the type-19 format is for. The summary count is deliberately uncapped: the warning fires on inconsistency (a beat missing its prerequisite), never on quantity. Five beats, all satisfied, is a perfectly good lesson; one is too.
const requires = { g19_explain: [], // base beat g19_show: ['g19_explain'], // show needs the concept first g19_try: ['g19_show'], // drive what was shown g19_check: ['g19_try'], // check what they tried g19_summarise: [] // independent — add anytime }; // no rule caps the size of the set — only consistency is enforced.
02The choice is a per-beat debate
So if it isn't "always tabs" and it isn't "always one", how do you choose? You break the lesson into its beats and debate each beat on its own. A beat is a teaching move: explain how it works, then show it, then let them try, then check it stuck. Each beat has exactly one teaching job, and each job has a small short-list of types that do it well. The debate is short and explicit, and you record the verdict so the next person sees the reasoning, not just the result.
The debate has four moves. Run it once per beat:
- Name the job in one sentence — explain how something works, compare options, show a process over time, read the current state, teach through a failure, let the reader drive, summarise, narrate a change, or tune parameters.
- List two or three candidates from the job→type map for that sentence.
- Pick the best fit with a one-line reason — and name the runner-up you rejected and why. The reason is the debate.
- Decide how many. One beat is one demo; a multi-beat lesson chains several; two tightly-coupled jobs can fuse into one widget.
Walk the choice, one question at a time
Here is the flowchart format (type 13) rewired as the chooser itself. Pick a teaching job at the top, then press Next to watch the decision descend through the gates to the best-fit demo type. Each "yes" commits a family; a clean run lands on a specific type. This is move-3 "pick" of the debate, made mechanical.
Start here
Name this beat's teaching job
Pick a job above, then press Next to walk it down to a best-fit demo type. Switch the job to see a different route.
The job → candidate-type map
The flowchart commits fast; the real short-list is richer. This is the full map every "list candidates" move pulls from — the runner-up you name will usually be the second row of the same job.
Name the job, reach the type
One more rewiring of the same idea, this time as the state-machine format (type 08). Each button is a teaching job; pressing it moves the highlighted node to the family that does that job, and the readout names the exact type plus its runner-up. It's a tiny machine: (start, job) → type. Reach a type, then reset to try another job.
The clay node is the family you landed on. Faded nodes are the jobs you didn't pick this round.
Type picked
— none yet —
Press a job below. The machine moves to the family that does it and names the best-fit type and its runner-up.
Available jobs
Match log
03Which demo at which loop moment
This is a course about the loop LEARN → ANALYZE → EXECUTE → VERIFY, so the most useful way to read the palette is by where in the loop each type does its work. A demo is not decoration; it makes a specific moment of the loop seen and felt. The captions on each card below name that moment exactly. Here is the shape of it:
Read it as a rough assignment, not a law: exploration and research types tend to feed LEARN and ANALYZE (see the real state, weigh options); design, prototype and code types feed EXECUTE (build the one bounded unit); report and editor types feed VERIFY and the gates (prove, read state, tune). Many types serve more than one moment — which is why the per-beat debate, not a lookup table, gets the final word.
Cover the palette — a coverage tracker
A complete course exercises most or all twenty types; collapsing to one or two is a bad smell — the reader stops engaging. Here is the status-report format (type 11) rewired to track palette coverage across this very course. Press Build next lesson to fold in a lesson's demo set and watch the tiles climb, or flip Auto-build to watch the eight lessons assemble. The table shows, per type, how many lessons reached for it.
Palette coverage — Loop Engineering course
8 lessons + this gallery · goal: exercise the full palette
| Demo type | Family | Lessons using it | Coverage |
|---|
One count, four readings
A single type → count map drives everything: types used is the count of non-zero entries, families covered are the distinct families among them, palette exercised is used / 20, and ★ used counts the eight high-value types reached. The status pill rolls up the worst signal: full coverage is green, partial is amber, barely-started is rust — the same good/bad-not-direction rule the original type-11 format uses.
04The whole idea in seven slides
Before the catalogue itself, here is this page's argument compressed into a deck — one idea per slide. Click forward, or use the keyboard arrows.
05The catalogue, grouped by family
The twenty types split into seven families by the kind of work they do. Inside each card: the number and name, a one- or two-line note on when and how to use it in the loop, a dark-safe thumbnail of its format, and an Open link to the full standalone demo. A star (★) marks the highest-value types.
Exploration
— compare options before committing · feeds ANALYZEIn ANALYZE, when the gap admits 3–4 paths: lay them side by side with pros, cons, and a "pick this when" so the bounded unit you choose is defensible.
Abrir→Early in ANALYZE when the unit is visual: a variant gallery/picker (layouts, deployments) so the reader chooses the shape before any one is built.
Abrir→Code
— walk through and explain a change · feeds EXECUTE & VERIFYAt the VERIFY boundary of a code unit: diff blocks + risk badges + reviewer notes to make "what changed and what could break" reviewable, not hand-waved.
Abrir→In LEARN, to see how a system works end to end before touching it: sticky contents + prose + inline code + SVG. The anti-assumption tool.
Abrir→Design
— teach conventions & variants · feeds EXECUTEWhen the unit must follow conventions: swatches, a naming table, and do/don't pairs so an EXECUTE step stays consistent with the surrounding system.
Abrir→When a unit has many states: a comparison matrix + a card per variant so the reader sees the whole surface before building or reviewing.
Abrir→Prototype
— a process, animated or driven · feeds EXECUTEWhen a unit is change-over-time: an animated SVG with play/step to show a process unfolding — great for visualising one loop iteration in motion.
Abrir→When the rule is "which moves are valid here": a clickable state machine that fades invalid transitions — lets the reader drive and feel the constraint.
Abrir→Research
— go deep & make it visible · feeds LEARNIn LEARN, to make architecture seen: one large annotated inline SVG sheet. The best tool for "show me the whole shape at once".
Abrir→In LEARN, to go deep on a feature/mechanism you depend on: contents + tabbed code + FAQ. Anchors the unit in how the thing really behaves.
Abrir→When the unit rests on an abstract idea: an interactive demo + glossary that teaches the concept concretely (e.g. one-shot vs the loop, side by side).
Abrir→Report
— summarise · read state · learn through failure · feeds VERIFYTo summarise a whole topic at a glance — or recap one loop pass: full-bleed slides, one big idea each. Great as a lesson opener or closer.
Abrir→In LEARN (read the ground truth) and VERIFY (is it healthy now?): KPI tiles + a status table. The dashboard view of a system's current state.
Abrir→To teach through a real failure — the most memorable lesson: a timeline + root cause + action items. Perfect for "watch the loop catch a regression".
Abrir→For any branching process — including the loop's own gates: an interactive SVG flow with step highlighting. Walk one path at a time, fork on each yes/no.
Abrir→Editor & Plan
— plan · triage · toggle · tune · feeds ANALYZE & VERIFYWhen the work spans many units: phase cards + a milestone bar. Sequences the bounded units so every EXECUTE pass has a clear next.
Abrir→After a unit converges: narrate motivation → file tour → the tricky bit → rollout. The story of the change, for the human who reviews it at the gate.
Abrir→In ANALYZE, to see the whole backlog and pick one: columns of cards (kanban). Mirrors the loop move "classify the gap, pick ONE unit".
Abrir→To teach switches and how settings depend on one another: switches + live dependency warnings. Shows how one EXECUTE change can require another.
Abrir→When the lesson is "tune the inputs and watch the output": controls + a live preview panel. Mirrors the loop's IMPROVE step — adjust, observe, repeat.
Abrir→06Quick check
Five questions on the one rule and the debate. Pick an answer to grade it on the spot; the right one turns olive and a short note explains why.
Q1How many demo types can a single lesson use?
Correct. The palette has no maximum. Fit is the only test — one if it suffices, many when the beats ask for it.
Not quite. "Exactly one" is the menu mindset. A rich lesson stacks several; the palette has no cap. Try again.
Not quite. There is no fixed cap like three. Fit decides the count — sometimes well more than three. Try again.
Q2The choice of which demo type to use is made…
Correct. Each beat gets its own short debate — name the job, list candidates, pick the fit, decide how many.
Not quite. Defaulting to tabs is exactly the habit to avoid; choose per beat by its job. Try again.
Not quite. A static table can't weigh a beat's job; the per-beat debate gets the final word. Try again.
Q3What makes the "pick" step of the debate explicit?
Correct. The reason is the debate. Recording the runner-up and why you dropped it leaves the reasoning visible.
Not quite. Build time is not the criterion; the teaching job and a stated reason are. Try again.
Not quite. Copying the last lesson skips the debate entirely. Name the fit and the runner-up. Try again.
Q4A beat's job is "teach through a real failure". Best fit?
Correct. Teaching through failure is exactly the incident-report job (12): a timeline down to a root cause and the fixes.
Not quite. A deck summarises; it doesn't do root-cause analysis. The job points to incident-report. Try again.
Not quite. A design system teaches conventions, not failures. Match the job to incident-report. Try again.
Q5Reusing a single widget for every beat of a lesson is…
Correct. Same-widget-every-beat is a bad smell; variety keeps engagement. A whole course exercises most of the twenty.
Not quite. Sameness loses the reader. Instead, vary the type by each beat's job. Try again.
Not quite. Nothing requires a single type throughout; reusing the same one every beat is the bad smell. Try again.
./demos/, re-label them for your content, and compose. The palette is the floor, not the ceiling.