Files
Sienna Meridian Satterwhite abd54e4c33 feat(examples): rewrite baker-family as coherent Competition Week narrative
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).
2026-02-23 21:51:01 +00:00
..

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 BakedGood with sub_concept BakedGood.Category { Bread, Pastry, Cake }
  • Sub-concept dot notation: Parent.Name format for clear ownership
  • Concept comparisons: SkillLevel maps 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: Baker template specifies BakingSkills and CustomerService
  • Templates with schedules: Baker template uses BakerSchedule
  • Multi-level inheritance: Baker -> Worker -> Person template 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

  1. 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 modifies WorkWeek)
    • Has skill_tier: Master for concept comparison mapping
  2. 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
  3. Locations -> provide narrative context with prose descriptions

    • MarthasBakery is referenced by schedules and behaviors
    • MainStreet connects the bakery to the wider community
  4. 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