@eventmodelers/cli 1.0.26 → 1.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eventmodelers/cli",
3
- "version": "1.0.26",
3
+ "version": "1.0.27",
4
4
  "description": "Eventmodelers CLI — real-time Claude agent + skills for Claude Code, for any stack (Node, Supabase, Axon, Cratis, or modeling-only)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -172,9 +172,7 @@ Update this file as each step completes.
172
172
 
173
173
  ## Phase Transition Protocol (Mandatory After Every Step)
174
174
 
175
- After each step completes, before invoking the next skill:
176
-
177
- ### 1. Write a phase summary to memory
175
+ After each step completes, before invoking the next skill, write a phase summary to memory.
178
176
 
179
177
  Append a summary block to `.trogonai/interviews/[project-name]/EVENTMODELING.md`:
180
178
 
@@ -187,12 +185,6 @@ Append a summary block to `.trogonai/interviews/[project-name]/EVENTMODELING.md`
187
185
 
188
186
  Also update the Interview Trail table row for this step (Status → Done, Key Output → one-line summary).
189
187
 
190
- ### 2. Compact the context
191
-
192
- After writing the summary, run `/compact` to clear the accumulated context before loading the next skill. The summary written above is the handoff — the next skill reads it from the file, not from the conversation history.
193
-
194
- This keeps each step's context lean and prevents token bloat from accumulating across all 11 steps.
195
-
196
188
  ---
197
189
 
198
190
  ## Mid-Workflow Entry
@@ -480,4 +472,4 @@ specific needs:
480
472
  - [ ] Completeness check shows no unresolved field traceability gaps
481
473
  - [ ] Validation returns PASS or PASS WITH WARNINGS with all critical issues resolved
482
474
  - [ ] Interview trail in `.trogonai/` updated with status of each completed step
483
- - [ ] Phase summary written to memory and `/compact` run after every completed step before loading the next skill
475
+ - [ ] Phase summary written to memory after every completed step before loading the next skill
@@ -215,7 +215,7 @@ Order Entry UI
215
215
 
216
216
  ### 5. Organize Screens by Swimlane (Actor/System)
217
217
 
218
- **MANDATORY**: Use the **Role Catalog** from Step 1 (eventmodeling-brainstorming-events) as the source of swimlanes. Every human role in the catalog MUST have its own swimlane. Every system actor that has a UI or todo-list view gets a swimlane too.
218
+ **MANDATORY**: Use the **Role Catalog** from Step 1 (eventmodeling-brainstorming-events) as the source of swimlanes. Every human role in the catalog MUST have its own swimlane. Every system actor that has a UI or todo-list view gets a swimlane too — but this swimlane is narrative-only (see "Board Integration" below): system actors never get a physical actor lane of their own on the board, only human roles do.
219
219
 
220
220
  Group screens by who interacts with them:
221
221
 
@@ -254,7 +254,7 @@ Swimlane: Fulfillment System (System Actor)
254
254
 
255
255
  This shows which actors interact with which screens and helps visualize system boundaries.
256
256
 
257
- **This grouping is not just narrative** — "Board Integration" below turns each swimlane in this catalog into its own physical actor lane on the board, so a screen's role determines which lane it is actually placed in, not just how it is described in the report.
257
+ **This grouping is not just narrative for human roles** — "Board Integration" below turns each *human role's* swimlane in this catalog into its own physical actor lane on the board, so a screen's role determines which lane it is actually placed in, not just how it is described in the report. System actor swimlanes stay narrative-only: their automations are placed in the chapter's shared default actor lane, never a lane fabricated to mimic a human role's lane (see "Placing Automations" below).
258
258
 
259
259
  ### 6. Show Processor "Todo List" Pattern
260
260
  For automated processors, show the todo list metaphor:
@@ -321,9 +321,9 @@ curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
321
321
 
322
322
  After completing the screen analysis, use the `handle-comment` skill to post a QUESTION comment on any screen node where data fields are unclear or missing sources are identified.
323
323
 
324
- ## Resolve One Actor Lane Per Role (do this once, before placing any screens)
324
+ ## Resolve One Actor Lane Per Human Role (do this once, before placing any screens)
325
325
 
326
- **Each role/actor gets its own physical lane — never place two different roles' screens in the same actor row.** A chapter is created with exactly one default `actor` lane, but a chapter can hold several actor-type lanes at once (`learn-eventmodelers-api` §2, `POST .../lanes`). Build a role→lane map once per chapter, before the screen-placement loop, instead of resolving it screen-by-screen:
326
+ **Each human role gets its own physical lane — never place two different human roles' screens in the same actor row.** **System actors and processors are not part of this map** — they are never given a labeled lane of their own; every automation renders in the chapter's shared default actor lane instead (see "Placing Automations" below). A chapter is created with exactly one default `actor` lane, but a chapter can hold several actor-type lanes at once (`learn-eventmodelers-api` §2, `POST .../lanes`). Build a role→lane map covering human roles only, once per chapter, before the screen-placement loop, instead of resolving it screen-by-screen:
327
327
 
328
328
  1. Fetch the chapter and collect every row where `type === "actor"`, keyed by its `label`:
329
329
 
@@ -339,7 +339,7 @@ After completing the screen analysis, use the `handle-comment` skill to post a Q
339
339
  "$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes/$CHAPTER_ID"
340
340
  ```
341
341
 
342
- 2. For every human role and system actor in the Role Catalog (Step 1's swimlane list above), check the map for a `label` that matches the role name (case-insensitive). If found, reuse that `rowId`.
342
+ 2. For every **human role only** in the Role Catalog (Step 1's swimlane list above), check the map for a `label` that matches the role name (case-insensitive). If found, reuse that `rowId`. **Skip system actors/processors entirely** — do not create or look up a lane for them here; they never get an entry in this map.
343
343
 
344
344
  3. **If no matching lane exists, create one** — labeled with the role name, so the lane is visibly identifiable on the board:
345
345
 
@@ -360,7 +360,7 @@ After completing the screen analysis, use the `handle-comment` skill to post a Q
360
360
 
361
361
  4. **Leave the chapter's original default actor lane alone** — there is no rename endpoint for an existing lane, so don't try to relabel it or force the first role into it. It is fine for it to stay unused; every role, including the first one, gets a freshly labeled lane from Step 3.
362
362
 
363
- The result is a `{ roleName: actorRowId }` map used by every screen placed in this chapter (Step A below) — resolve it once, not per screen, and re-fetch/extend it only if a new role appears mid-session that wasn't in the original catalog.
363
+ The result is a `{ roleName: actorRowId }` map, covering human roles only, used by every SCREEN placed in this chapter (Step A below) — resolve it once, not per screen, and re-fetch/extend it only if a new human role appears mid-session that wasn't in the original catalog. **AUTOMATION nodes never consult this map** — they always target the chapter's default actor lane (see "Placing Automations" below).
364
364
 
365
365
  ## Mandatory Field Definitions on Screen Nodes
366
366
 
@@ -443,7 +443,7 @@ A screen that only has a title and no fields is an empty placeholder — place t
443
443
 
444
444
  Every screen node requires rendered content. **HTML_SCREEN (via the `html-screen` rendering path below) is the default for every screen** — render a real HTML/CSS mockup, not a wireframe sketch. Only use the sketch path (plain SCREEN node, grid elements) when the user's request explicitly asked for a "sketch", "wireframe", or "low-fidelity mockup". The correct order for every screen is:
445
445
 
446
- **Step A — Compute the cell ID.** Screens go in **that screen's own role's actor lane** in their target column — look up `actorRowId` from the role→lane map built above, keyed by the screen's role (e.g. "Admin", "User"). Never fall back to "the" actor lane as if there were only one.
446
+ **Step A — Compute the cell ID.** This applies to SCREEN nodes (human roles only) — AUTOMATION nodes follow "Placing Automations" below instead. Screens go in **that screen's own role's actor lane** in their target column — look up `actorRowId` from the role→lane map built above, keyed by the screen's role (e.g. "Admin", "User"). Never fall back to "the" actor lane as if there were only one.
447
447
 
448
448
  1. Determine the target column (same column as the event/command, OR one column to the right of the read model).
449
449
  2. `actorRowId = roleLaneMap[<this screen's role>]` — the map was already resolved once for the whole chapter; do not re-fetch the chapter per screen. If this screen's role is genuinely new (wasn't in the original Role Catalog), resolve/create its lane now the same way (see above) and add it to the map before continuing.
@@ -597,7 +597,9 @@ Storyboarding renders **one plain screen per screen state** — do not pre-split
597
597
 
598
598
  ### Placing Automations
599
599
 
600
- When a processor or system actor reacts to events automatically (no human interaction), place an **AUTOMATION** node in that system actor's own actor lane instead of a SCREEN — resolved from the role→lane map the same way as a human role. Automations go in the same column as the COMMAND they trigger and the READMODEL that feeds them.
600
+ When a processor or system actor reacts to events automatically (no human interaction), place an **AUTOMATION** node in the chapter's **default actor lane** instead of a SCREEN — never create, reuse, or look up a per-system-actor lane for it, and never resolve it through the human role→lane map above. Automations go in the same column as the COMMAND they trigger and the READMODEL that feeds them.
601
+
602
+ **Do not design automation actor lanes to mimic human ones.** A "Payment Processor" or "Inventory System" swimlane in the narrative report (Step 5 above) is a documentation grouping only — it must never be materialized as its own labeled `actor`-type lane on the board. Only human roles get a physical lane; every automation, regardless of which system actor it narratively belongs to, renders in the same shared default actor lane.
601
603
 
602
604
  A column is an automation column (not a screen column) when:
603
605
  - The action is triggered by the system, not a user gesture
@@ -609,7 +611,7 @@ Examples:
609
611
  - Inventory check fires after payment authorized → AUTOMATION "Reserve Inventory"
610
612
  - Notification service sends an email → AUTOMATION "Send Confirmation Email"
611
613
 
612
- Human roles get SCREEN nodes. System actors and processors get AUTOMATION nodes. Place both types during storyboarding — do not defer automations to a later step.
614
+ Human roles get SCREEN nodes placed in their own labeled actor lane. System actors and processors get AUTOMATION nodes placed in the shared default actor lane. Place both types during storyboarding — do not defer automations to a later step.
613
615
 
614
616
  ### One Screen Per Column (Hard Rule)
615
617
 
@@ -644,6 +646,8 @@ Present as:
644
646
 
645
647
  ### System Actor Swimlanes
646
648
 
649
+ _(Narrative grouping only — these are not physical board lanes. Every automation below renders in the chapter's shared default actor lane; see "Placing Automations".)_
650
+
647
651
  #### Payment Processor Swimlane
648
652
  - Screen 1: Payment Verification (automated)
649
653
  - [Shows what UI/views the processor interacts with]
@@ -728,9 +732,10 @@ Failure produces: [Event]
728
732
  - [ ] Alternative states are shown
729
733
  - [ ] Error states are shown
730
734
  - [ ] **Every human role from the Role Catalog has at least one swimlane**
731
- - [ ] **Every swimlane is labeled with the role/actor name from the catalog**
732
- - [ ] **Swimlanes organized by actor/system**
733
- - [ ] **Every role's swimlane is a real, distinct `actor`-type lane on the board (`meta.timelineData.rows`), not just a grouping in the markdown report** — no two different roles share the same `actorRowId`
735
+ - [ ] **Every human-role swimlane is labeled with the role name from the catalog**
736
+ - [ ] **Swimlanes organized by actor/system in the narrative report**
737
+ - [ ] **Every human role's swimlane is a real, distinct `actor`-type lane on the board (`meta.timelineData.rows`), not just a grouping in the markdown report** — no two different human roles share the same `actorRowId`
738
+ - [ ] **No system actor / processor has been given its own labeled actor lane** — every AUTOMATION node sits in the chapter's default actor lane, never a lane fabricated to mimic a human role's
734
739
  - [ ] **Human role screens clearly separated from processor screens**
735
740
  - [ ] **Processor todo list pattern shown for automated systems**
736
741
  - [ ] **System boundaries visible through swimlane organization**