feat: implement storybook DSL with template composition and validation
Add complete domain-specific language for authoring narrative content for agent simulations. Features: - Complete parser using LALRPOP + logos lexer - Template composition (includes + multiple inheritance) - Strict mode validation for templates - Reserved keyword protection - Semantic validators (trait ranges, schedule overlaps, life arcs, behaviors) - Name resolution and cross-reference tracking - CLI tool (validate, inspect, query commands) - Query API with filtering - 260 comprehensive tests (unit, integration, property-based) Implementation phases: - Phase 1 (Parser): Complete - Phase 2 (Resolution + Validation): Complete - Phase 3 (Public API + CLI): Complete BREAKING CHANGE: Initial implementation
This commit is contained in:
10
proptest-regressions/resolve/convert_prop_tests.txt
Normal file
10
proptest-regressions/resolve/convert_prop_tests.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
# Seeds for failure cases proptest has generated in the past. It is
|
||||
# automatically read and these particular cases re-run before any
|
||||
# novel cases are generated.
|
||||
#
|
||||
# It is recommended to check this file in to source control so that
|
||||
# everyone who runs the test benefits from these saved cases.
|
||||
cc a644ac460409a340ff5c7dbcd81d70af69fae9377cb341737664abfc6a40af59 # shrinks to name = "a", field_name = "on", string_val = ""
|
||||
cc 97f6965a47e710d070b9ab3eb8c9151d2b0eaf511a83a5b2fe51e6d39c3e1dc8 # shrinks to characters = [Character { name: "a", fields: [Field { name: "on", value: Int(0), span: Span { start: 0, end: 10 } }], template: None, span: Span { start: 0, end: 100 } }], enums = []
|
||||
cc 1ebabf7786f4c8470a5fc7205572ce1f628372efa9c8642ce66ba2b3f1cae43b # shrinks to characters = [Character { name: "k", fields: [], template: None, span: Span { start: 0, end: 100 } }], enums = [EnumDecl { name: "k", variants: ["_"], span: Span { start: 0, end: 100 } }]
|
||||
cc 8e01a6f55648de32d55edeade86fff607f0080045ea6155343a0400ca7a7140e # shrinks to characters = [Character { name: "_", fields: [], template: None, span: Span { start: 0, end: 100 } }, Character { name: "_", fields: [], template: None, span: Span { start: 0, end: 100 } }], use_count = 0
|
||||
7
proptest-regressions/resolve/links_prop_tests.txt
Normal file
7
proptest-regressions/resolve/links_prop_tests.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
# Seeds for failure cases proptest has generated in the past. It is
|
||||
# automatically read and these particular cases re-run before any
|
||||
# novel cases are generated.
|
||||
#
|
||||
# It is recommended to check this file in to source control so that
|
||||
# everyone who runs the test benefits from these saved cases.
|
||||
cc f001e5854731fe83d1c75e58f0519043c413356fcad528eb53a5337077bcfafa # shrinks to (rel1, rel2) = (Relationship { name: "a", participants: [Participant { role: None, name: ["_"], self_block: Some([]), other_block: None, span: Span { start: 0, end: 10 } }, Participant { role: None, name: ["a"], self_block: None, other_block: None, span: Span { start: 0, end: 10 } }], fields: [Field { name: "_", value: Int(0), span: Span { start: 0, end: 10 } }, Field { name: "_", value: Int(1), span: Span { start: 0, end: 10 } }], span: Span { start: 0, end: 10 } }, Relationship { name: "a", participants: [Participant { role: None, name: ["a"], self_block: Some([]), other_block: None, span: Span { start: 20, end: 30 } }, Participant { role: None, name: ["_"], self_block: None, other_block: None, span: Span { start: 20, end: 30 } }], fields: [Field { name: "_", value: Int(0), span: Span { start: 0, end: 10 } }, Field { name: "_", value: Int(1), span: Span { start: 0, end: 10 } }], span: Span { start: 20, end: 30 } })
|
||||
7
proptest-regressions/resolve/validate_prop_tests.txt
Normal file
7
proptest-regressions/resolve/validate_prop_tests.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
# Seeds for failure cases proptest has generated in the past. It is
|
||||
# automatically read and these particular cases re-run before any
|
||||
# novel cases are generated.
|
||||
#
|
||||
# It is recommended to check this file in to source control so that
|
||||
# everyone who runs the test benefits from these saved cases.
|
||||
cc 5ee477ca84df23fbe1a1ecfd0b8b9216539ca7a2f766e8a82f86de31878015dd # shrinks to tree_name = "aaa", action_name = "aaa"
|
||||
8
proptest-regressions/syntax/prop_tests.txt
Normal file
8
proptest-regressions/syntax/prop_tests.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
# Seeds for failure cases proptest has generated in the past. It is
|
||||
# automatically read and these particular cases re-run before any
|
||||
# novel cases are generated.
|
||||
#
|
||||
# It is recommended to check this file in to source control so that
|
||||
# everyone who runs the test benefits from these saved cases.
|
||||
cc 8ac445fa78ef3f5ec7fb7d096cbe589988a9478352f82cdac195f5cea57ec47a # shrinks to name = "A", tag = "A", content = "\n¡"
|
||||
cc 739a6de85e6f514f93fc2d077e929658b31c65294dd44b192972ed882a42171a # shrinks to name = "A", tag = "in", content = ""
|
||||
Reference in New Issue
Block a user