Rewrote the baker-family example around a unified story: the annual Harvest Baking Competition is Saturday. Martha's sourdough starter Old Maggie is sluggish from a cold snap, Jane is secretly entering the FreeStyle category, Emma's science fair project is "The Chemistry of Fermentation", Henry is judging for the first time and worried about impartiality, and Roland is defending last year's title. The week's schedules (Mon guild meeting → Tue test bakes → Wed sourcing → Thu dough prep → Fri science fair → Sat competition → Sun recovery) are now fully populated with narrative-specific actions. Files split for composability: - behaviors/baker_behaviors.sb → 5 focused files by character/domain - schema/types.sb → 4 files (core, baking, world, social) - schedules/work_schedules.sb → 4 files (one per schedule) - relationships/baker_family_relationships.sb → family + bakery Strong typing: replaced all enumerable string fields with concepts (BakerSpecialty, Occupation, LocationType, InstitutionType, ParentingStyle, Intensity, BakeryDomain, BakingDiscipline, ManagementDomain, CompetitiveAdvantage). Remove new-syntax-demo.sb (superseded by baker-family example).
Baker Family Example
A comprehensive example demonstrating Storybook v0.3.0 features through a realistic multi-character scenario with relationships, locations, institutions, and advanced type system usage.
Characters
| Character | Age | Role | Template |
|---|---|---|---|
| Martha | 34 | Master baker, business co-owner | Baker |
| Jane | 36 | Pastry chef, Martha's wife, co-owner | Baker |
| Emma | 12 | Their daughter, science enthusiast | Child |
| Henry | 68 | Retired teacher, loyal customer | Person |
| Roland | 42 | Competing baker from next town | Baker |
Martha and Jane are a married couple who co-run the bakery. Emma is their daughter. Henry and Roland are community members connected to the family through the bakery.
Features Demonstrated
Type System (v0.3.0)
- Species definitions:
species Human { ... }provides default fields for all human characters - Species-based templates:
template Person: Human { ... }inherits species fields as base layer - Concepts and sub-concepts:
concept BakedGoodwithsub_concept BakedGood.Category { Bread, Pastry, Cake } - Sub-concept dot notation: Parent.Name format for clear ownership
- Concept comparisons:
SkillLevelmaps skill tiers to quality expectations - Life arc requirements:
life_arc BakerCareer requires { baking_skill: Number }for compile-time validation
Relationships
- Marriage: Martha and Jane, a lesbian couple with asymmetric bakery roles
- Parent-Child: Martha-Emma and Jane-Emma with different parenting styles
- Business Partnership: Martha and Jane co-owning and co-running the bakery
- Customer Relationship: Martha and Henry (daily loyalty)
- Competition: Martha and Roland (rival bakers)
- Asymmetric perspectives: Each participant has role-specific fields
Locations
- MarthasBakery: Detailed shop with prose description, capacity, hours
- MainStreet: Town thoroughfare connecting market and school
Institutions
- BakersGuild: Trade guild with membership, meetings, and governance
Life Arcs
- BakerCareer: Apprentice -> Journeyman -> Master (skill-based progression)
- Childhood: Young child -> School age -> Teenager -> Adult (age-based)
- MarriageQuality: Newlywed -> Established -> Deep bond (relationship arc)
- BusinessGrowth: Starting out -> Growing -> Thriving (business arc)
Resource Linking
- Templates with behaviors:
Bakertemplate specifiesBakingSkillsandCustomerService - Templates with schedules:
Bakertemplate usesBakerSchedule - Multi-level inheritance:
Baker->Worker->Persontemplate chain - Character inheritance: Characters automatically inherit behaviors and schedules from templates
Schedule Composition
- Schedule inheritance:
BakerSchedule modifies WorkWeek - Override blocks: Modify inherited time blocks with
override work { ... } - Named blocks: All blocks have names for the override system
- Action references: Schedule blocks reference behavior trees via
action: BehaviorName - Recurrence patterns: Market day repeats
on Saturday
Behavior Trees
- Comprehensive behavior definitions for all activities
- Referenced from schedule blocks showing integration
- Hierarchical behaviors (sequences, selectors, repeaters)
File Structure
baker-family/
├── README.md
├── schema/
│ ├── templates.sb # Template definitions with species base
│ ├── types.sb # Concepts, sub-concepts, species, concept comparisons
│ └── life_arcs.sb # Career and childhood life arcs
├── characters/
│ ├── martha.sb # Master baker (Baker template, skill_tier: Master)
│ ├── jane.sb # Pastry chef (Baker template, skill_tier: Journeyman)
│ ├── emma.sb # Daughter (Child template)
│ ├── henry.sb # Retired teacher customer (Person template)
│ └── roland.sb # Competing baker (Baker template)
├── relationships/
│ └── baker_family_relationships.sb # All relationships with asymmetric perspectives
├── locations/
│ └── bakery_locations.sb # MarthasBakery and MainStreet
├── institutions/
│ └── bakers_guild.sb # Trade guild
├── life_arcs/
│ └── family_life_arcs.sb # MarriageQuality and BusinessGrowth arcs
├── schedules/
│ └── work_schedules.sb # Composable schedules
└── behaviors/
└── baker_behaviors.sb # Behavior tree definitions
Template Hierarchy
Human (species - default fields: age, energy, mood, occupation)
└─> Person: Human (behaviors: BasicNeeds, SocialInteraction)
├─> Worker (schedule: WorkWeek)
│ └─> Baker (behaviors: +BakingSkills, +CustomerService, schedule: BakerSchedule)
│ ├── Martha (skill_tier: Master)
│ ├── Jane (skill_tier: Journeyman)
│ └── Roland (skill_tier: Journeyman)
│
└─> Child: Human (behaviors: PlayBehavior, LearnBehavior, no schedule)
└── Emma
└─> Henry (Person, retired, no work schedule)
Override chain: Species -> Includes -> Template -> Character (last-one-wins)
Relationship Map
Martha ──── Marriage ──── Jane
│ BusinessPartnership │
│ │
├── ParentChild ── Emma ───┘
│
├── CustomerRelationship ── Henry
│
└── Competition ── Roland
Schedule Inheritance
WorkWeek
├─ morning_prep (08:00-09:00)
├─ work (09:00-17:00)
└─ evening_rest (18:00-22:00)
BakerSchedule modifies WorkWeek
├─ pre_dawn_prep (04:00-05:00) [NEW]
├─ work (05:00-13:00) [OVERRIDE] -> action: BakingWork
├─ evening_rest (18:00-22:00) [INHERITED]
└─ recurrence MarketDay on Saturday
└─ market (06:00-14:00) -> action: SellAtMarket
Life Arcs
BakerCareer requires { baking_skill: Number, work_ethic: Number }
apprentice -> journeyman (when baking_skill > 0.5 and work_ethic > 0.7)
journeyman -> master (when baking_skill > 0.8 and work_ethic > 0.9)
Childhood requires { age: Number, curiosity: Number }
young_child -> school_age -> teenager -> adult
MarriageQuality requires { relationship_quality: Number, years_together: Number }
newlywed -> established -> deep_bond
BusinessGrowth requires { customer_relations: Number, baking_skill: Number }
starting_out -> growing -> thriving
Concept Comparison: SkillLevel
Maps baking skill tiers to quality expectations:
- Apprentice: Any freshness level acceptable while learning
- Journeyman: Any freshness level expected as standard
- Master: Must produce fresh goods to meet the standard
Key Integration Points
-
Martha (character) -> inherits from Baker (template) -> inherits from Human (species)
- Gets default fields from Human species (age, energy, mood, occupation)
- Gets behaviors:
BakingSkills,CustomerService,BasicNeeds,SocialInteraction - Gets schedule:
BakerSchedule(which modifiesWorkWeek) - Has
skill_tier: Masterfor concept comparison mapping
-
Relationships -> connect characters with asymmetric perspectives
- Martha and Jane's Marriage and BusinessPartnership show the same couple in different roles
- Each participant has role-specific fields
- Competition relationship shows non-familial connections
-
Locations -> provide narrative context with prose descriptions
MarthasBakeryis referenced by schedules and behaviorsMainStreetconnects the bakery to the wider community
-
Life arcs -> track progression across multiple dimensions
- Career (BakerCareer), personal growth (Childhood)
- Relationship quality (MarriageQuality), business success (BusinessGrowth)
Usage
This example shows how to:
- Define species with default fields for character archetypes
- Build reusable templates with species inheritance
- Use concepts and sub-concepts for type-safe enumerations
- Create concept comparisons for compile-time pattern matching
- Define life arcs with field requirements for validation
- Model relationships with asymmetric participant perspectives
- Create locations and institutions with prose descriptions
- Compose schedules through inheritance and overrides
- Link schedules to behaviors through action references
- Model realistic daily routines with time-of-day variations