Files
storybook/examples/baker-family
Sienna Meridian Satterwhite 9c18bfa028 feat(lang): rename concept_comparison to definition (v0.3.2)
Renames the `concept_comparison` keyword to `definition` across the
entire codebase for better readability and conciseness.

Changes:
- Tree-sitter grammar: `concept_comparison` node → `definition`
- Tree-sitter queries: highlights, outline, and indents updated
- Zed extension highlights.scm updated to match
- Lexer: `Token::ConceptComparison` → `Token::Definition`
- Parser: `ConceptComparisonDecl` rule → `DefinitionDecl`
- AST: `Declaration::ConceptComparison` → `Declaration::Definition`,
  `ConceptComparisonDecl` struct → `DefinitionDecl`
- All Rust source files updated (validate, names, convert, references,
  semantic_tokens, symbols, code_actions, hover, completion)
- `validate_concept_comparison_patterns` → `validate_definition_patterns`
- Example file and test corpus updated
- Spec docs: created SBIR-v0.3.2-SPEC.md, updated TYPE-SYSTEM.md,
  README.md, SBIR-CHANGELOG.md, SBIR-v0.3.1-SPEC.md
2026-02-23 20:37:52 +00:00
..
2026-02-14 14:45:17 +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