# Design Artifact Template Use this template when drafting a design manually or when asking an LLM to produce a design artifact for review. ## 1. Story Write the business situation in plain language. ```text A attempts to . If , it succeeds. If , it fails. ``` ## 2. Event storming ### Command ```text ``` ### Timeline 1. 2. 3. ### Events ```text ``` ## 3. Core sketch Write the first policy sketch with rough concepts if needed. ```fsharp decide : NeededInput -> NeededState -> Result ``` Then rewrite it using domain-specific concepts. ## 4. Domain model ### Primitives ```fsharp type ExampleId = string ``` ### Compound objects ```fsharp type Example = { Id: ExampleId } ``` ### State variants ```fsharp type ActiveExample = { Id: ExampleId } type ArchivedExample = { Id: ExampleId } type ExampleState = | Active of ActiveExample | Archived of ArchivedExample ``` ### Events ```fsharp type ExampleSucceeded = { Id: ExampleId } type ExampleRejected = { Reason: RejectionReason } ``` ## 5. Final contract ```fsharp decide : Input -> State -> Result apply : State -> SuccessEvent -> State workflow : InputId -> Effect ``` ## 6. Shared language and naming decisions Record the canonical words for this feature so design and code stay consistent. If a term is project-wide rather than feature-local, also add it to `docs/reference/shared-language.md`. ### Canonical terms - ``: short definition - ``: short definition ### Rejected synonyms - Use ``, not `` - Use ``, not `` ### Naming grammar for this feature - Commands use: `` - Events use: `` - States / objects use: `` - Workflow names use: `` ## 7. Reviewer notes Document any assumptions, open domain questions, or naming choices the reviewer should inspect.