Files
storybook/docs/SBIR-CHANGELOG.md
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

5.2 KiB

SBIR Changelog

All notable changes to the Storybook Intermediate Representation format.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Note: As of v0.3.0, value type names have been renamed: Int→Number, Float→Decimal, String→Text, Bool→Boolean. Historical entries below use the original terminology from their respective versions.


[0.3.2] - 2026-02-23

Changed

Keyword Rename:

  • The concept_comparison keyword has been renamed to definition
    • Old: concept_comparison SkillLevel { ... }
    • New: definition SkillLevel { ... }
    • No binary format changes required - this is a source-level rename only
    • The Rust AST type ConceptComparisonDecl is renamed to DefinitionDecl

0.2.0 - 2026-02-13

Added

Resource Linking System:

  • BehaviorLink struct for conditional behavior attachment
    • Priority system (Low, Normal, High, Critical)
    • Conditional activation via expressions
    • Default fallback behavior
  • ScheduleLink struct for conditional schedule attachment
    • First-match conditional selection
    • Default fallback schedule
  • Extended Character with behavior_links and schedule_links vectors
  • Extended Institution with behavior_links and schedule_links vectors

Year-Long Schedule System:

  • Schedule.parent_schedule_id for inheritance
  • Schedule.patterns for temporal patterns
  • SchedulePattern enum with three variants:
    • DayPattern - day-specific blocks
    • SeasonPattern - seasonal blocks
    • RecurrencePattern - recurring events
  • RecurrenceSpec with variants:
    • Every N days
    • Weekly on specific days
    • Monthly on day N
    • Annually on month/day
  • Pattern-based schedule composition and merging
  • User-definable calendar enums (DayOfWeek, Season, Month)

Behavior Tree Enhancements:

  • Optional label field on Selector and Sequence nodes (for debugging)
  • Parameterized decorators:
    • DecoratorRepeatN(u32) - repeat N times
    • DecoratorRepeatRange(u32, u32) - repeat min..max times
    • DecoratorRetry(u32) - retry up to N times
    • DecoratorTimeout(u64) - timeout after milliseconds
    • DecoratorCooldown(u64) - cooldown period
    • DecoratorIf(Expression) - conditional if
    • DecoratorSucceedAlways - always succeed
    • DecoratorFailAlways - always fail
  • Keyword syntax support (choose, then, if, when, repeat, etc.)

Changed

Breaking:

  • ScheduleBlock.name is now required (was Option<String>)
  • ScheduleBlock.start and end changed from Time struct to u16 (minutes since midnight)
  • ScheduleBlock.activity: String removed, replaced with behavior_ref: Option<Vec<String>>
  • Binary format version updated from 0x0001 to 0x0002
  • Character and Institution sections have different binary layout (added link vectors)
  • Schedule section completely redesigned

Non-breaking:

  • Behavior tree Selector/Sequence nodes extended (backward compatible if label is None)

Removed

  • ScheduleBlock.activity field (replaced by behavior_ref)

Deprecated

  • None (first formal release)

Fixed

  • None (first formal release)

Security

  • None

[0.1.0] - Implicit (Pre-Release)

Initial format (inferred from codebase, never formally specified).

Included

  • Basic entity storage:
    • Characters with species and field maps
    • Templates with includes
    • Species definitions
    • Enums
  • Simple schedules:
    • Time blocks with activity strings
    • Optional block names
  • Behavior trees:
    • Symbolic syntax (?, >, !, @, ~)
    • Basic decorators (repeat with * sigil)
    • Action nodes with parameters
    • Conditions and subtree references
  • Relationships with participants
  • Locations
  • Life arcs (state machines)
  • Institutions

Known Limitations

  • No resource linking (behaviors/schedules hard-coded per entity)
  • No schedule patterns (single 24-hour template only)
  • No parameterized decorators
  • No named behavior tree nodes
  • No formal specification document

Migration Notes

From 0.1.0 to 0.2.0

Required Actions:

  1. Recompile source files OR
  2. Use storybook-migrate tool for binary migration

Key Changes:

  • All schedules must have named blocks
  • Activity strings converted to behavior references
  • Characters/Institutions gain empty link vectors (if not specified)
  • Time values converted to minutes since midnight

See: /docs/SBIR-MIGRATION-GUIDE.md for detailed instructions.


Version Numbering

SBIR follows semantic versioning:

  • Major (x.0.0): Incompatible changes requiring migration
  • Minor (0.x.0): Backward-compatible additions
  • Patch (0.0.x): Bug fixes, no format changes

Current: v0.2.0 (first formal release) Next Minor: v0.3.0 (planned features TBD) Next Major: v1.0.0 (when format stabilizes)


Unreleased

Track upcoming changes here

Planned for v0.3.0

  • Compressed string table option
  • Symbol index for faster lookups
  • Metadata section for tooling info

Under Consideration

  • Module system for multi-file worlds
  • Asset references (audio, images)
  • Localization support

[0.1.0]: (implicit, no release)