Files
storybook/docs/examples/24-baker-family-complete.md
Sienna Meridian Satterwhite 16deb5d237 release: Storybook v0.2.0 - Major syntax and features update
BREAKING CHANGES:
- Relationship syntax now requires blocks for all participants
- Removed self/other perspective blocks from relationships
- Replaced 'guard' keyword with 'if' for behavior tree decorators

Language Features:
- Add tree-sitter grammar with improved if/condition disambiguation
- Add comprehensive tutorial and reference documentation
- Add SBIR v0.2.0 binary format specification
- Add resource linking system for behaviors and schedules
- Add year-long schedule patterns (day, season, recurrence)
- Add behavior tree enhancements (named nodes, decorators)

Documentation:
- Complete tutorial series (9 chapters) with baker family examples
- Complete reference documentation for all language features
- SBIR v0.2.0 specification with binary format details
- Added locations and institutions documentation

Examples:
- Convert all examples to baker family scenario
- Add comprehensive working examples

Tooling:
- Zed extension with LSP integration
- Tree-sitter grammar for syntax highlighting
- Build scripts and development tools

Version Updates:
- Main package: 0.1.0 → 0.2.0
- Tree-sitter grammar: 0.1.0 → 0.2.0
- Zed extension: 0.1.0 → 0.2.0
- Storybook editor: 0.1.0 → 0.2.0
2026-02-13 21:52:03 +00:00

14 KiB

Baker Family Complete

This example demonstrates a complete Storybook project modeling Martha's bakery and the people around it. It showcases all major language features working together.

Project Structure

baker-family/
  schema/
    core_enums.sb       # Enum definitions
    templates.sb        # Reusable templates
    beings.sb           # Species definitions
  world/
    characters/
      martha.sb         # Martha, master baker
      jane.sb           # Jane, pastry specialist
      elena.sb          # Elena, apprentice
      gregory.sb        # Gregory, regular customer
      family.sb         # David, Tommy, Emma
    behaviors/
      bakery_behaviors.sb
    relationships/
      bakery_relationships.sb
    locations/
      bakery_places.sb
    institutions/
      bakery_institutions.sb
    schedules/
      bakery_schedules.sb

Schema Layer

Enums

// schema/core_enums.sb

enum SkillLevel {
    novice,
    beginner,
    intermediate,
    advanced,
    expert,
    master
}

enum Specialty {
    sourdough,
    pastries,
    cakes,
    general,
    bread
}

enum Confidence {
    timid,
    uncertain,
    growing,
    steady,
    confident,
    commanding
}

enum DayPart {
    early_morning,
    morning,
    midday,
    afternoon,
    evening,
    night
}

Species

// schema/beings.sb

species Human {
    lifespan: 80

    ---description
    Bipedal mammals with complex language and tool use.
    ---
}

species Cat {
    lifespan: 15

    ---description
    Domestic cats often found in bakeries for pest control
    and companionship.
    ---
}

Templates

// schema/templates.sb

template SkilledWorker {
    skill_level: SkillLevel
    confidence: Confidence
    years_experience: 0..50
    can_work_independently: false
}

template Baker {
    include SkilledWorker
    specialty: Specialty
    recipes_mastered: 0..200
    sourdough_starter_health: 0.0..1.0
}

template BusinessOwner {
    include SkilledWorker
    revenue_monthly: 0..100000
    employees: 0..20
    years_in_business: 0..50
}

template Apprentice {
    include SkilledWorker
    skill_level: novice
    confidence: timid
    mentor: string
    dedication: 0.0..1.0
}

Characters

Martha

// world/characters/martha.sb

use schema::core_enums::{SkillLevel, Specialty, Confidence};
use schema::templates::{Baker, BusinessOwner};
use schema::beings::Human;

character Martha: Human from Baker, BusinessOwner {
    uses behaviors: [
        { tree: BakerMorningRoutine },
        { tree: HandleEmergency, when: emergency_detected, priority: critical }
    ]

    age: 34
    specialty: sourdough
    skill_level: master
    confidence: commanding
    recipes_mastered: 85
    years_experience: 22
    sourdough_starter_health: 0.95

    revenue_monthly: 12000
    employees: 3
    years_in_business: 8

    ---backstory
    Martha learned to bake from her grandmother, starting at age twelve.
    By twenty she had won regional competitions. At twenty-six she opened
    her own bakery, which quickly became the most popular in town. Her
    sourdough is legendary -- she maintains a starter that is fifteen
    years old.
    ---
}

life_arc MarthaCareerArc {
    ---description
    Tracks Martha's evolution from established baker to community leader.
    ---

    state running_bakery {
        on enter {
            Martha.confidence: commanding
            Martha.skill_level: master
        }
        on employees > 5 -> expanding
    }

    state expanding {
        on enter {
            Martha.revenue_monthly: 20000
        }
        on second_location_opened -> community_leader
    }

    state community_leader {
        on enter {
            Martha.can_teach: true
            Martha.mentors_count: 3
        }

        ---narrative
        Martha's bakery has become a training ground for the next
        generation of bakers. She sits on the guild board and her
        sourdough recipe is studied at culinary schools.
        ---
    }
}

Jane

// world/characters/jane.sb

use schema::core_enums::{SkillLevel, Specialty, Confidence};
use schema::templates::Baker;
use schema::beings::Human;

character Jane: Human from Baker {
    age: 36
    specialty: pastries
    skill_level: expert
    confidence: confident
    recipes_mastered: 120
    years_experience: 18
    can_work_independently: true

    ---backstory
    Jane trained at a prestigious culinary school before joining
    Martha's bakery as co-owner. Where Martha excels at bread, Jane
    is a pastry artist. Her croissants draw customers from three
    towns over.
    ---

    ---appearance
    A focused woman with flour-dusted apron and steady hands.
    Known for her intricate pastry decorations and precise
    temperature control.
    ---
}

Elena

// world/characters/elena.sb

use schema::core_enums::{SkillLevel, Confidence};
use schema::templates::Apprentice;
use schema::beings::Human;

character Elena: Human from Apprentice {
    age: 16
    skill_level: novice
    confidence: timid
    mentor: "Martha"
    dedication: 0.9
    natural_talent: 0.8
    recipes_mastered: 2

    ---backstory
    Elena comes from a family of farmers who could never afford to
    buy bread from the bakery. When Martha offered her an apprenticeship,
    she jumped at the chance to learn a trade.
    ---
}

life_arc ElenaCareer {
    ---description
    Tracks Elena's progression from nervous apprentice to confident
    master baker. Each state represents a key phase of her career.
    ---

    state early_apprentice {
        on enter {
            Elena.skill_level: novice
            Elena.confidence: timid
        }

        on recipes_mastered > 5 -> growing_apprentice

        ---narrative
        Elena's hands shake as she measures flour. She checks the
        recipe three times before adding each ingredient. Martha
        patiently corrects her technique.
        ---
    }

    state growing_apprentice {
        on enter {
            Elena.skill_level: beginner
            Elena.confidence: uncertain
        }

        on recipes_mastered > 15 -> journeyman

        ---narrative
        The shaking stops. Elena can make basic breads without
        looking at the recipe. She still doubts herself but
        Martha's encouragement is taking root.
        ---
    }

    state journeyman {
        on enter {
            Elena.skill_level: intermediate
            Elena.confidence: growing
            Elena.can_work_independently: true
        }

        on recipes_mastered > 30 -> senior_journeyman

        ---narrative
        Elena runs the morning shift alone while Martha handles
        special orders. Customers start asking for "Elena's rolls."
        She begins experimenting with her own recipes.
        ---
    }

    state senior_journeyman {
        on enter {
            Elena.skill_level: advanced
            Elena.confidence: steady
        }

        on recipes_mastered > 50 -> master

        ---narrative
        Elena develops her signature recipe: rosemary olive bread
        that becomes the bakery's bestseller. She handles difficult
        customers with grace and trains new helpers.
        ---
    }

    state master {
        on enter {
            Elena.skill_level: master
            Elena.confidence: commanding
            Elena.can_teach: true
        }

        ---narrative
        Master Baker Elena. She has earned it. The guild acknowledges
        her mastery, and Martha beams with pride. Elena begins
        mentoring her own apprentice.
        ---
    }
}

Gregory

// world/characters/gregory.sb

use schema::beings::Human;

character Gregory: Human {
    age: 68
    occupation: "retired_teacher"
    always_orders: "sourdough_loaf"
    visits_daily: true
    years_as_customer: 15
    knows_everyone: true

    ---backstory
    Gregory has been buying Martha's bread every morning for
    fifteen years. Their brief daily exchanges about the weather
    and local gossip are a comforting routine for both of them.
    ---
}

Behaviors

// world/behaviors/bakery_behaviors.sb

behavior BakerMorningRoutine {
    ---description
    Martha's morning routine: prepare dough step by step,
    from mixing to shaping to baking.
    ---

    then morning_baking {
        // Start with sourdough
        then prepare_starter {
            CheckStarter
            FeedStarter
            WaitForActivity
        }

        // Mix the dough
        then mix_dough {
            MeasureFlour
            AddWater
            IncorporateStarter
        }

        // Knead and shape
        then shape_loaves {
            KneadDough
            FirstRise
            ShapeLoaves
        }

        // Bake
        then bake {
            PreHeatOven
            LoadLoaves
            MonitorBaking
        }
    }
}

behavior CustomerServiceLoop {
    ---description
    The bakery's continuous customer service loop. Uses infinite
    repeat decorator to serve customers throughout the day.
    ---

    repeat {
        then service_cycle {
            // Check for customers
            choose service_mode {
                then serve_waiting {
                    if(customer_waiting)
                    GreetCustomer
                    TakeOrder
                }

                then restock_display {
                    if(display_low)
                    FetchFromKitchen
                    ArrangeOnShelves
                }
            }

            // Process payment
            CollectPayment
            ThankCustomer

            // Brief pause between customers
            timeout(5s) {
                CleanCounter
            }

            PrepareForNextCustomer
        }
    }
}

Relationships

// world/relationships/bakery_relationships.sb

relationship MarthaAndGregory {
    Martha {
        role: shopkeeper
        values_loyalty: 0.9

        ---perspective
        Martha appreciates Gregory's unwavering loyalty. He has
        been buying her sourdough loaf every morning for fifteen
        years. Their brief daily exchanges about the weather and
        local gossip are a comforting routine.
        ---
    }

    Gregory {
        role: regular_customer
        always_orders: "sourdough_loaf"

        ---perspective
        Gregory considers Martha's bakery a cornerstone of his
        daily routine. The bread is excellent, but it is the brief
        human connection that keeps him coming back.
        ---
    }
}

relationship MentorApprentice {
    Martha {
        role: mentor
        teaching_style: "patient"
        investment: 0.9

        ---perspective
        Martha sees Elena as the daughter she might have had in
        the trade. She recognizes the same passion she felt at
        that age and pushes Elena harder because she knows the
        talent is there. Every correction comes from love.
        ---
    }

    Elena {
        role: apprentice
        dedication: 0.9
        anxiety: 0.4

        ---perspective
        Elena idolizes Martha's skill but fears disappointing
        her. Every morning she arrives thirty minutes early to
        practice techniques before Martha gets in. She keeps a
        notebook of every correction, reviewing them each night.
        ---
    }

    bond: 0.85
}

relationship BakeryPartnership {
    Martha {
        role: co_owner
        specialty: "bread"
        handles_finances: true

        ---perspective
        Martha and Jane complement each other perfectly. Martha
        handles the bread and business side while Jane creates
        the pastries that draw customers in. Together they have
        built something neither could alone.
        ---
    }

    Jane {
        role: co_owner
        specialty: "pastries"
        handles_creativity: true

        ---perspective
        Jane considers Martha the steady foundation of their
        partnership. While Jane experiments and creates, Martha
        ensures the bakery runs like clockwork. Their different
        strengths make the bakery stronger.
        ---
    }

    bond: 0.9
}

Locations

// world/locations/bakery_places.sb

location MarthasBakery {
    type: "commercial"
    established: "2018"
    square_feet: 1200
    has_kitchen: true
    has_storefront: true
    seating_capacity: 12

    ---description
    A warm, inviting bakery on Main Street. The aroma of fresh
    bread wafts out the door every morning at 4 AM. Exposed brick
    walls, a glass display case, and a view into the kitchen where
    customers can watch the bakers at work.
    ---
}

location FarmersMarket {
    type: "outdoor_market"
    operates_on: "saturday"
    stalls: 30
    foot_traffic: "high"

    ---description
    The weekly Saturday market where Martha sells her bread directly
    to the community. Her stall is always the first to sell out.
    ---
}

location BakeryKitchen {
    type: "commercial_kitchen"
    ovens: 3
    prep_stations: 4
    walk_in_cooler: true

    ---description
    The heart of the bakery. Three professional ovens line the back
    wall, each at a different temperature for different breads. The
    sourdough starter sits on a shelf near the warmest oven, bubbling
    contentedly in its ceramic crock.
    ---
}

Institutions

// world/institutions/bakery_institutions.sb

institution BakersGuild {
    type: professional_guild
    members: 45
    founded: "1952"
    meets_monthly: true

    ---description
    The local bakers' guild that sets quality standards, organizes
    competitions, and mentors apprentices. Martha has been a board
    member for three years.
    ---
}

Key Takeaways

This example demonstrates:

  1. Layered architecture: Schema (types) separated from world (instances)
  2. Species + Templates: Human species combined with Baker and BusinessOwner templates
  3. Rich behavior trees: Morning routine and customer service with choose, then, and repeat
  4. Asymmetric relationships: Martha and Elena see their mentorship differently
  5. Life arcs: Elena's career journey modeled as a state machine
  6. Prose everywhere: Every declaration includes narrative context

Cross-References