-
Notifications
You must be signed in to change notification settings - Fork 1
Execute semicolon-separated Programs across Rust, Python, and CLI #38
Copy link
Copy link
Open
Labels
area:cli-tuiCommand-line and Textual interfacesCommand-line and Textual interfacesarea:engineEvaluation, randomness, safety, and result coreEvaluation, randomness, safety, and result corearea:languageDice expression syntax and semanticsDice expression syntax and semanticsarea:pythonPython API, bindings, typing, and packagingPython API, bindings, typing, and packagingblockedCannot proceed until a listed dependency is completeCannot proceed until a listed dependency is completebreaking-changeChanges public syntax, semantics, or API contractsChanges public syntax, semantics, or API contractspriority:p1Required for the current production milestoneRequired for the current production milestonetype:featureA user-visible vertical feature sliceA user-visible vertical feature sliceworkflow:afkReady for independent implementationReady for independent implementation
Milestone
Description
Metadata
Metadata
Assignees
Labels
area:cli-tuiCommand-line and Textual interfacesCommand-line and Textual interfacesarea:engineEvaluation, randomness, safety, and result coreEvaluation, randomness, safety, and result corearea:languageDice expression syntax and semanticsDice expression syntax and semanticsarea:pythonPython API, bindings, typing, and packagingPython API, bindings, typing, and packagingblockedCannot proceed until a listed dependency is completeCannot proceed until a listed dependency is completebreaking-changeChanges public syntax, semantics, or API contractsChanges public syntax, semantics, or API contractspriority:p1Required for the current production milestoneRequired for the current production milestonetype:featureA user-visible vertical feature sliceA user-visible vertical feature sliceworkflow:afkReady for independent implementationReady for independent implementation
Parent
What to build
Move semicolon execution onto the accepted typed Engine and RFC-0003 ProgramResult without regressing compatibility
roll()orrun().Frozen contract
Engine.rollaccepts exactly one Instruction and returnsInstructionResult;Engine.runaccepts source text and returnsProgramResult.roll/runretain v1 dictionaries through adapters over the same Engine.Acceptance criteria
Engine.run("1d6; 2d6 # encounter")returns two ordered typed instructions plus Program metadata.Engine.rollrejects separators and returns one typed InstructionResult.to_dict(), and CLI JSON validate against RFC-0003 and agree on ordering and IDs.roll()andrun()retain legacy dictionaries through Engine adapters.Blocked by