Files
storybook/examples/alice-in-wonderland/README.md
Sienna Meridian Satterwhite ae5e9fdcd8 docs: add Alice in Wonderland example storybook
Add comprehensive example demonstrating all major features of the
Storybook DSL through Lewis Carroll's Alice in Wonderland.

Contents:
- 12 characters (Alice, WhiteRabbit, CheshireCat, MadHatter, etc.)
- 7 relationships with named participant blocks
- 3 institutions (tea parties, royal court)
- 1 schedule (Mad Tea Party eternal rotation)
- 12 behavior trees using new syntax features
- 1 life arc (Alice's journey)

Demonstrates:
- Cross-file template resolution (schema/templates.sb)
- Template inheritance and includes
- Strict template validation
- Action parameters and repeater decorators
- Named participant relationship blocks
- Species-based character typing
- Rich prose blocks throughout

All content validates successfully.
2026-02-08 15:46:52 +00:00

337 lines
10 KiB
Markdown

# Alice's Adventures in Wonderland - Storybook Example
A comprehensive demonstration of the Storybook DSL, modeling Lewis Carroll's *Alice's Adventures in Wonderland* with accuracy to the source material and showcasing all advanced language features.
## Overview
This example shows how Storybook enables complex narrative modeling for agent simulation games. It demonstrates:
- **Advanced behavior trees** for complex, context-dependent character actions
- **Life arcs** tracking transformative character journeys
- **Schedules** modeling eternal time loops and recurring events
- **Template composition** with inheritance and strict mode
- **Bidirectional relationships** with asymmetric perspectives
- **Cross-file references** creating an interconnected world model
## Contents
### Schema Layer
**`schema/core_enums.sb`**
- Core value types used throughout: `Size`, `EmotionalState`, `CardSuit`, `CardRank`, `TimeState`, `ManifestationLevel`
- Demonstrates enumeration definitions
**`schema/templates.sb`**
- Base template `WonderlandCreature` for all sentient beings
- Specialized templates with `include`: `SizeChanging`, `MadTeaPartyMember`, `Supernatural`
- **Strict template** `PlayingCard` enforcing concrete values
- Shows vertical inheritance (includes) and horizontal composition (multiple `from` clauses)
**`schema/species.sb`**
- Species definitions: `Human`, `Rabbit`, `Cat`, `Hare`, `Dormouse`, `Caterpillar`, `PlayingCardPerson`
- Rich prose blocks describing characteristics and abilities
### World Layer
#### Characters
**`alice.sb`** - The protagonist
- Inherits from `SizeChanging` template
- **Life arc `AliceJourney`** with states: `falling`, `tiny_alice`, `giant_alice`, `normal_alice_garden`, `enlightened_alice`
- Shows how life arcs track transformative journeys with state-specific field modifications
**`white_rabbit.sb`** - The anxious herald
- **Behavior tree `WhiteRabbit_ConstantlyLate`** using selectors (`?`) and sequences (`>`)
- Demonstrates hierarchical behavior modeling with panic strategies
**`cheshire_cat.sb`** - The enigmatic guide
- **Three behavior trees**:
- `CheshireCat_AppearDisappear` - context-dependent materialization
- `CheshireCat_GradualManifestation` - piece-by-piece appearance (grin first!)
- `CheshireCat_GradualDematerialization` - fading away (grin lingers longest)
- Shows complex multi-step sequences with timing and state transitions
**`mad_tea_party.sb`** - The eternal tea party trio
- Three characters: `MadHatter`, `MarchHare`, `Dormouse`
- **Schedule `MadTeaPartyRotation`** modeling the time loop (always 6 o'clock)
- **Behavior `MadTeaParty_CoordinatedMadness`** showing multi-agent coordination
- Demonstrates repeater decorator (`*`) for infinite loops
**`royal_court.sb`** - The Court of Hearts
- Characters: `QueenOfHearts`, `KingOfHearts`, `CardGardenerTwo`, `CardGardenerFive`, `CardGardenerSeven`
- Inherits from `PlayingCard` strict template - card suit/rank must be concrete
- **Behavior `QueenOfHearts_RagePattern`** - hair-trigger temper response
- **Behavior `KingOfHearts_SecretPardons`** - background mercy system
**`caterpillar.sb`** - The philosophical teacher
- **Behavior `Caterpillar_SocraticMethod`** - interrogative teaching style
- Shows question-answer tree structures
#### Locations
**`wonderland_places.sb`**
- `RabbitHole`, `HallOfDoors`, `Garden`, `MadTeaPartyTable`, `CroquetGround`, `QueensPalace`, `MushroomTop`
- Each location has physical properties, symbolic meaning, and narrative significance
- Demonstrates rich prose blocks for description and analysis
#### Institutions
**`wonderland_institutions.sb`**
- `CourtOfHearts` - tyrannical monarchy with interesting power dynamics
- `MadTeaParty` - eternal social gathering stuck in time
- `WonderlandDreamLogic` - the meta-institution governing reality itself
- Shows how social structures can be modeled with hierarchies and rules
#### Relationships
**`wonderland_relationships.sb`**
- **Bidirectional relationships** with `self` and `other` blocks showing asymmetric perspectives:
- `AliceAndWhiteRabbit` - pursuer/unwitting guide
- `AliceAndCheshireCat` - seeker/amused observer
- `QueenAndKing` - tyrant/secret rebel
- `AliceAndCaterpillar` - frustrated student/Socratic teacher
- Demonstrates how different characters perceive the same relationship differently
#### Behaviors
**`alice_behaviors.sb`** - Alice's strategic behaviors
- `Alice_SizeManagement` - learning to control size through trial and error
- `Alice_NavigateConversation` - dealing with nonsensical logic
- `Alice_EmotionalJourney` - state transitions from curiosity to enlightenment
- `Alice_ProblemSolving` - adapting normal-world logic to Wonderland
## Language Features Demonstrated
### 1. Template Composition
```storybook
template WonderlandCreature {
current_size: Size
emotional_state: EmotionalState
follows_logic: false..true
}
template SizeChanging {
include WonderlandCreature
natural_size: Size
size_changes_today: 0..50
}
character Alice from SizeChanging {
// Inherits all fields from WonderlandCreature and SizeChanging
age: 7
current_size: normal
}
```
### 2. Strict Templates
```storybook
template strict PlayingCard {
suit: CardSuit
rank: CardRank
// Characters using this template MUST provide concrete values
}
character QueenOfHearts from PlayingCard {
suit: hearts // Required: must be concrete enum value
rank: queen // Required: must be concrete enum value
}
```
### 3. Life Arcs
```storybook
life_arc AliceJourney {
state tiny_alice {
on enter {
Alice.current_size: tiny
Alice.size_changes_today: +1
}
}
state giant_alice {
on enter {
Alice.current_size: huge
}
}
}
```
### 4. Schedules
```storybook
schedule MadTeaPartyRotation {
18:00 -> 18:01: TeaRound { }
18:01 -> 18:02: RiddlePhase { }
// ... more phases
18:05 -> 18:00: LoopToBeginning { } // Loops back!
}
```
### 5. Behavior Trees
```storybook
behavior CheshireCat_AppearDisappear {
? { // Selector: try branches until one succeeds
> { // Sequence: all must succeed in order
IsInvisible
DecideToAppear
GradualManifestation
}
> {
IsVisible
DecideToLeave
GradualDematerialization
}
}
}
```
### 6. Repeater Decorator
```storybook
behavior MadTeaParty_CoordinatedMadness {
* { // Repeater: loop forever
? {
> { AskRiddle; ReceiveNoAnswer }
> { RotateSeats; CheckTime }
}
}
}
```
### 7. Bidirectional Relationships
```storybook
relationship QueenAndKing {
QueenOfHearts
KingOfHearts
bond: 0.4
self {
// Queen's perspective
role: dominant_spouse
aware_of_pardons: false
}
other {
// King's perspective
role: secret_moderator
subverts_authority: 1.0
}
}
```
### 8. Rich Prose Blocks
```storybook
character CheshireCat {
---description
A large cat with a permanent, unsettling grin. Possesses the
ability to appear and disappear at will, often leaving only
its grin behind.
---
---philosophy
The Cheshire Cat represents the absurdist nature of Wonderland
itself. His vanishing act defies physical law but seems
perfectly natural in Wonderland's logic.
---
}
```
### 9. Cross-File References
```storybook
// In alice.sb
use schema::core_enums::{Size, EmotionalState};
use schema::templates::SizeChanging;
character Alice from SizeChanging {
current_size: normal // Uses Size enum from core_enums
}
```
### 10. Field Modifications in Life Arcs
```storybook
state enlightened_alice {
on enter {
Alice.emotional_state: brave
Alice.awareness_of_absurdity: 1.0 // Absolute assignment
Alice.size_changes_today: +1 // Increment
}
}
```
## Accuracy to Source Material
This example stays faithful to Carroll's original text:
- **Mad Tea Party**: Time frozen at 6 o'clock, rotating seats, butter in the watch
- **Cheshire Cat**: Grin appearing first/last, cryptic directions, "we're all mad here"
- **Queen of Hearts**: Constant "Off with their heads!", card gardeners, croquet with flamingos
- **Alice's transformations**: Specific size states from the book
- **Caterpillar's advice**: Terse questions, mushroom sides
- **Character dynamics**: White Rabbit's anxiety, Dormouse's drowsiness, King's secret mercy
## Running the Example
```bash
# Validate the entire project
sb validate examples/alice-in-wonderland/
# Query characters
sb query "characters where follows_logic == false"
# Inspect a specific character
sb inspect Alice
# Show all relationships
sb query "relationships where bond > 0.5"
```
## What This Demonstrates
### For Content Authors (Lonni)
- **Rich character modeling**: Personality traits, motivations, relationships
- **Narrative structure**: Life arcs track character journeys
- **World building**: Locations, institutions, social dynamics
- **Prose integration**: Backstories, descriptions, and philosophical notes
### For Developers (Sienna)
- **Complex behavior trees**: Multi-level selectors, sequences, repeaters
- **State management**: Life arcs with field modifications
- **Scheduling systems**: Time loops and recurring events
- **Type safety**: Strict templates enforce constraints
- **Cross-referencing**: Build interconnected world models
### For Agent Simulation
This model could drive an agent-based simulation where:
- Alice's behavior tree decides how to navigate conversations and obstacles
- The Mad Tea Party schedule creates a time-loop environment
- Cheshire Cat's appearance/disappearance behavior creates mystery
- Queen's rage pattern generates conflict
- Relationships determine interaction dynamics
## Extending This Example
Ideas for additions:
- **More chapters**: Mock Turtle, Gryphon, Trial scene
- **Croquet game logic**: Behavior trees for live hedgehog/flamingo equipment
- **Size change mechanics**: Fine-grained mushroom nibbling behavior
- **Dream logic system**: Meta-rules governing Wonderland physics
- **Alice's awakening**: Final life arc state transitioning back to reality
## License
Source material: *Alice's Adventures in Wonderland* by Lewis Carroll (public domain)
Storybook adaptation: MIT License