Roadmap
This page distinguishes verified work from planned work. Each new milestone still needs an OpenSpec change with scenarios and engine fixtures before it is called shipped.
Verified nine-proof stage and stage shell
The current content and engine proof set is nine authored levels:
- Core: three MIAU teaching levels for YOU, PUSH, STOP, WIN, and AND.
- Basic Proofs (
garden-basicsis the stable internal pack ID): three CommonJS levels for PUSH, SINK, and DEFEAT. - Word Lab: three CommonJS levels for shared control, noun transformation, and moving one property out of a stacked rule.
On a fresh save, INDEX leaves the first proof of each chapter open even though
the nine proofs share one sheet: Core core/ (01), Basic Proofs
garden-basics/ (04), and Word Lab word-lab/ (07).
Later locks and progress remain keyed by stable packId/ pairs.
The engine exposes E3 physical sentence spans (state.sentences) with source
IDs and axis, while semantic rule records remain deduplicated. E3 is archived
under openspec/.
The E4 pack service and persistent pack library are implemented and tested for
preview, explicit installation, reload, replacement, forking, export, URL
links, and removal. Local imports and shared URLs both enter an explicit Gift
preview before installation. Workshop exposes Import, Play, Share link, Export,
and Remove. E4 is archived under
openspec/.
The S3–S10 full-screen stage is implemented: Title, INDEX, Proof, Pause, Win,
Workshop, and Gift scenes share the canvas, input, settled-event juice, audio,
Recursive font, mobile controls, reduced-motion path, and ?dev diagnostics.
The stable public build is revision 10. It passed 185
Node tests, the full sharing and automata browser suites, focused mobile
death/Undo visual regression, the Tidewater solver pass, and the production build. It includes the
next-proof first-frame, same-entity win, spatial INDEX navigation, directional
facing, direct Workshop access, Gift layout, and death/Undo visual fixes. The
same-entity win change is archived under
openspec/. The designer
accepted the stage visual gate, and its change is archived under
openspec/. Death/Undo visual
recovery is archived under
openspec/; Gift layout remains
active for designer review.
The runtime architecture review is archived under
openspec/.
The settled rule refresh for contact destruction is archived under
openspec/.
The world team is independently rechecking Tidewater before it is bundled.
1. Playable foundation — shipped
Three MIAU puzzles establish the turn contract: stacked occupancy, cardinal movement, atomic push chains, IS and AND, six properties, transformations, undo, a CommonJS content format, and a fixed emoji grid. The completed OpenSpec change is archived at openspec/; its behavioral requirements are now the live specs in openspec/.
2. Make the rule language composable — planned
Proposed changes: add-negation-and-conditions, then add-paired-interactions.
- Add
NOTwith explicit contradiction and transformation precedence. - Add
ON,NEAR, andLONELYonly after the parser can report why a rule is active for each object. - Add paired effects (
OPEN/SHUT,HOT/MELT) with conflict examples in fixtures. - Keep
ALL,EMPTY,TEXT, andLEVELout of this milestone because they change selection and meta rules more broadly.
Gate: every new word has a small teaching level, a rule display explanation, a conflict test, and an undo/replay fixture.
3. Let mods define behavior — planned
Proposed change: add-deterministic-mod-systems.
The current CommonJS contract adds nouns, emoji, and levels. A later contract should register named properties and pure effect handlers against explicit turn phases. The host should pass read-only state queries and queue mutations; hooks should never directly edit the rule table or renderer. Decide save serialization and load order before freezing the API. For untrusted shared mods, move execution into an isolated worker or iframe with a versioned message protocol.
Gate: a sample mod adds one genuinely new property, reproduces the same result from a recorded intent sequence, and fails cleanly when its handler errors.
4. Author and test puzzles — planned
Proposed change: add-level-editor-and-replay.
- Add a grid editor with a palette derived from the vocabulary registry.
- Show active sentences and source word coordinates while editing.
- Export/import CommonJS level packs and compact replay traces.
- Check bounds, initial
YOUcontrol, reachable rule words, and common Sokoban dead squares. Treat solver output as a hint for authors rather than proof of puzzle quality.
Gate: a designer can build, play, undo, export, reload, and replay a puzzle without changing source files.
5. Campaign and sharing — v0.3 in progress
The pack service, persistence, data-only sharing path, local import preview, URL Gift preview, Workshop actions, and stage shell are implemented. E3, E4, and the stage are archived. Campaign UI polish continues as a new change.
The public reduced-motion walkthrough passed at 1280×800 and 390×844. The next design pass covers an audio mix check against the shipped Kenney clip map and spacing checks for new teaching proofs. These do not reopen the accepted stage gate.
Proposed change: add-campaign-progression.
Group levels by the word they introduce, mark challenges separately, and preserve multiple paths through hard sections. Test for unintended shortcuts as well as intended solutions. Extend the existing stable-ID progress model to track chapter and challenge paths.
Current decisions to preserve or revisit deliberately
- Multiple
YOUobjects resolve in a stable direction-aware order. Future simultaneous movement would need a new rule-engine spec and replay fixtures. STOPtakes precedence overPUSHon the same object. A blocked intent does not consume a move.- Contacts resolve
SINK, thenDEFEAT, thenWIN, so a defeated controlled object cannot win in the same cell. - Stacked words generate sentence combinations in stable object order; the UI offsets occupants and shows a stack count.
- No
YOUstate is recoverable with undo or restart. A later loss screen should be designed only if puzzles need it.
The design backbone explains the research behind these priorities. The first release documents its actual behavior in openspec/.