---
name: eventmodeling-plotting-events
description: "Step 2 of Event Modeling - Arrange events chronologically in logical narrative sequence. Create timeline showing event flow and dependencies. Use after brainstorming events. Do not use for: brainstorming new events (use eventmodeling-brainstorming-events) or designing command/read model architecture (use eventmodeling-designing-event-models)."
allowed-tools:
  - Write
---

# Plotting Events

Arrange all brainstormed events chronologically to create a logical sequence that makes sense as a narrative timeline. Show how events flow and depend on each other.

## Workflow

Given a list of brainstormed events, create the chronological plot:

### 1. Sequence Events Chronologically
Order events in time-based narrative:
- What happens first?
- What depends on what?
- What's the causal chain?

Format:
```
Timeline: Order Processing

1. Customer initiates → OrderCreated
   (Event: OrderCreated)

2. Order confirmed → OrderConfirmed
   Depends on: OrderCreated happened
   (Event: OrderConfirmed)

3. Payment processed → PaymentAuthorized
   Depends on: OrderConfirmed happened
   (Event: PaymentAuthorized)

4. Inventory reserved → InventoryReserved
   Depends on: PaymentAuthorized happened
   (Event: InventoryReserved)

5. Order shipped → OrderShipped
   Depends on: InventoryReserved happened
   (Event: OrderShipped)

6. Delivery confirmed → DeliveryConfirmed
   Depends on: OrderShipped happened
   (Event: DeliveryConfirmed)
```

### 2. Show Dependencies and Causality
Document what triggers each event:
```
Event: OrderConfirmed
Can only happen after: OrderCreated
Triggered by: Customer confirms order
Precondition: Order in Draft state

Event: PaymentAuthorized
Can only happen after: OrderConfirmed
Triggered by: Payment gateway authorizes
Precondition: Order confirmed and payment submitted
```

### 3. Identify Alternative Paths
Show events that can diverge:
```
After OrderCreated:
Path A: Customer confirms → OrderConfirmed
Path B: Customer cancels → OrderCancelled

After PaymentAuthorized:
Path A: Payment succeeds → PaymentProcessed
Path B: Payment fails → PaymentFailed → OrderCancelled
```

### 4. Create Timeline Diagram
Visual representation of event flow:

```

 Time →                                           

 OrderCreated                                     
    ↓                                             
 OrderConfirmed                                   
    → PaymentAuthorized                          
        → InventoryReserved                     
            → OrderShipped                     
                 → DeliveryConfirmed           
        → PaymentFailed → OrderCancelled        
    → OrderCancelled (rejected before payment)   

```

## Output Format

Present as:

```markdown
# The Plot: [Domain Name]

## Chronological Event Sequence

### Phase 1: Order Initiation
1. **OrderCreated** - When: Customer submits order
   - Previous state: None (initial event)
   - Next possible: OrderConfirmed or OrderCancelled

### Phase 2: Order Confirmation
2. **OrderConfirmed** - When: Customer confirms and payment ready
   - Depends on: OrderCreated
   - Next possible: PaymentAuthorized or OrderCancelled

### Phase 3: Payment Processing
3. **PaymentAuthorized** - When: Payment gateway approves
   - Depends on: OrderConfirmed
   - Next possible: InventoryReserved or PaymentFailed

4. **PaymentFailed** - When: Payment declined
   - Depends on: OrderConfirmed (payment attempted)
   - Next possible: OrderCancelled (or retry)

### Phase 4: Fulfillment
5. **InventoryReserved** - When: Inventory allocated
   - Depends on: PaymentAuthorized
   - Next possible: OrderShipped

6. **OrderShipped** - When: Order leaves warehouse
   - Depends on: InventoryReserved
   - Next possible: DeliveryConfirmed

### Phase 5: Delivery
7. **DeliveryConfirmed** - When: Customer receives order
   - Depends on: OrderShipped
   - Next possible: None (terminal)

### Phase 6: Cancellations (Alternative Path)
8. **OrderCancelled** - When: Customer cancels or payment fails
   - Can happen after: OrderCreated, OrderConfirmed, PaymentFailed
   - Next possible: RefundInitiated

9. **RefundInitiated** - When: Refund processed
   - Depends on: OrderCancelled
   - Next possible: None (terminal)

## Event Flow Diagram

[ASCII or text representation of timeline]

## Key Insights

- **Critical Path**: Events that must happen in order
- **Decision Points**: Where flow branches
- **Terminal Events**: Where flow ends
- **Compensation Events**: How to handle cancellations
- **Wait States**: Where system pauses for external action
```

## Quality Checklist

- [ ] Every event has clear predecessor
- [ ] Dependencies are explicitly documented
- [ ] Alternative paths are shown
- [ ] Flow forms a coherent narrative
- [ ] No events without trigger
- [ ] Terminal states are clear
- [ ] Compensation/cancellation flows are complete
- [ ] Timeline makes business sense

## Principles

1. **Narrative Coherence**: Events tell a story
2. **Dependency Clarity**: What must come before what
3. **Alternative Paths**: Show all possible flows (happy path + errors)
4. **Natural Sequence**: Order matches business domain logic
5. **Completeness**: Every brainstormed event appears
