Wanderland

Wanderland Tutorial Storyboard

The curriculum map for the tutorial corpus on wanderland.dev. Where the style guide names voice and shape, this storyboard names the concept order — what each tutorial introduces, what it assumes, where it sits in a series. Read it before drafting a new tutorial or updating an existing one so the layering stays consistent: don't reintroduce a concept already covered upstream, don't skip a foundation a downstream tutorial leans on.

The corpus today is two arcs: the Getting Started trio that scaffolds a new wanderland-core application, and the Engine in a Box series that builds a real puzzle engine on top of that foundation.

Getting Started

Three posts, taken in order. By the end the reader has a working my-app/ directory with custom boundaries, scenarios passing under three test lenses, and an HTTP adapter wrapping external calls — the framework's surface for a typical microservice.

1. Hello World

Scope: Scaffold a new wanderland-core application from empty directory through running tests, in 21 numbered steps.

Introduces:

Assumes: Ruby fundamentals, Bundler.

2. Writing Boundaries

Scope: Walk through writing two real-world HTTP-calling boundaries (baby_lookup, babies_by_origin) end-to-end with halts and scenarios.

Introduces:

Assumes: Hello World — project structure, scenarios block, custom boundary basics. Ruby HTTP basics.

3. Adapter Modes

Scope: Port the two HTTP boundaries from Writing Boundaries onto the HTTP adapter; record cassettes; introduce per-scenario mocks; toggle modes via env.

Introduces:

Assumes: Writing Boundaries — HTTP boundary code. Hello World — config.yml, scenarios.

Engine in a Box

Six posts, taken in order, drafted iteratively. The series scaffolds sprout-engine — a wanderland-core application that runs grid-shaped workflows for the puzzle UI in sprout-shorts-context-accumulating-dag. Each post extends the previous one's running engine.

1. Engine in a Box

Scope: Scaffold sprout-engine from empty directory to running Docker container with the full introspection surface answering against an /echo route.

Introduces:

Assumes: Hello World — project bones, routes. Bundler, Docker basics.

2. Walking the Grid

Scope: Add a grid route (POST /run, POST /run/step) that walks Nita's grocery errand. Introduces run_grid, the located-context model, ShapeMatcher in depth, and pause-resume mechanics.

Introduces:

Assumes: Engine in a Box #1 — sprout-engine scaffold, introspection surface. Hello World — scenarios, --type test, rspec hook. Writing Boundaries — boundary registration anatomy.

3. Web Signals

Scope: Fan events[] out via window.lanternBus; drive <oculus-node> scene swaps; opt into the full trace via X-Wanderland-Trace.

4. Puzzle Component

Scope: Native <wanderland-puzzle> Custom Element. Render-from-state, Run / Step buttons, walks events[], calls lanternBus.emit(action, payload).

5. Puzzle IDE

Scope: Palette, placements loader, modeline-base header, footer modelines, trace panel with playback controls, harvests panel.

6. Shorts Integration

Scope: Drive sprout-shorts-context-accumulating-dag scene swaps from the puzzle. Wire wanderland-engine into the larger sprout compose orchestration.

Concept index

Quick "where is X introduced?" lookup for the active corpus.

Concept Tutorial
Project structure (Gemfile, config.yml, ...) Hello World
Custom boundary registration Hello World
Routes — single boundary Hello World
Scenarios block Hello World
--type test runner Hello World
X-Wanderland-Verify header Hello World
Scenario.rspec_describe! Hello World
Boundary anatomy in depth Writing Boundaries
Halt semantics Writing Boundaries
HTTP boundary (raw Net::HTTP) Writing Boundaries
Adapter concept Adapter Modes
live / replay / mock modes Adapter Modes
Cassette recording Adapter Modes
!Fixture / !Merge mock tags Adapter Modes
WANDERLAND_HTTP_MODE env override Adapter Modes
Liveness triptych (/health, /status, /healthcheck) Engine in a Box
Introspection endpoints Engine in a Box
CORE_ROUTES Engine in a Box
Default injections (enforce_denials, ...) Engine in a Box
Diagnostics cache Engine in a Box
Dockerfile / docker-compose Engine in a Box
Grid routes Walking the Grid
run_grid boundary Walking the Grid
Located context Walking the Grid
Wanderland::Context (in tutorials) Walking the Grid
Cells, springs, harvests, connections Walking the Grid
Stateless stepping Walking the Grid
Pause / args_override / resume Walking the Grid
Dead-end halt Walking the Grid
ShapeMatcher predicates Walking the Grid
oculus_fence boundary Walking the Grid
emit_signal boundary Walking the Grid

How to use this storyboard

When drafting or updating a tutorial:

Site Audit

wanderland.dev

oculus-view: fence: Fence execute bit is disabled. Use force=true to override.