@milehimikey/em 1.15.0 → 1.16.0

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.
Files changed (89) hide show
  1. package/.claude/agents/em-implementer.md +12 -2
  2. package/.claude/agents/em-validator.md +2 -1
  3. package/.claude/skills/event-modeling/SKILL.md +1 -1
  4. package/.claude/skills/event-modeling-conform/SKILL.md +1 -1
  5. package/.claude/skills/event-modeling-design/SKILL.md +1 -1
  6. package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
  7. package/.claude/skills/event-modeling-engagement/SKILL.md +9 -5
  8. package/.claude/skills/event-modeling-engagement/reference/engagement.md +8 -0
  9. package/.claude/skills/event-modeling-implement/SKILL.md +3 -3
  10. package/.claude/skills/event-modeling-implement/reference/implement.md +18 -8
  11. package/.claude/skills/event-modeling-review/SKILL.md +1 -1
  12. package/.claude/skills/event-modeling-shared/reference/em-dsl.md +6 -3
  13. package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +12 -1
  14. package/.claude-plugin/marketplace.json +2 -2
  15. package/dist/catalog/deferQueue.d.ts +20 -0
  16. package/dist/catalog/deferQueue.js +63 -0
  17. package/dist/catalog/deferQueue.js.map +1 -0
  18. package/dist/catalog/docJoin.d.ts +5 -0
  19. package/dist/catalog/docJoin.js +6 -3
  20. package/dist/catalog/docJoin.js.map +1 -1
  21. package/dist/catalog/docModelConsistencyValidate.js +4 -8
  22. package/dist/catalog/docModelConsistencyValidate.js.map +1 -1
  23. package/dist/catalog/sliceDoc.d.ts +3 -3
  24. package/dist/catalog/sliceDoc.js +3 -3
  25. package/dist/catalog/sliceDoc.js.map +1 -1
  26. package/dist/catalog/sliceReadyValidate.js +7 -1
  27. package/dist/catalog/sliceReadyValidate.js.map +1 -1
  28. package/dist/catalog/sliceSections.d.ts +5 -0
  29. package/dist/catalog/sliceSections.js +11 -2
  30. package/dist/catalog/sliceSections.js.map +1 -1
  31. package/dist/cli/defer.d.ts +45 -0
  32. package/dist/cli/defer.js +162 -10
  33. package/dist/cli/defer.js.map +1 -1
  34. package/dist/cli/engagement.d.ts +13 -0
  35. package/dist/cli/engagement.js +31 -11
  36. package/dist/cli/engagement.js.map +1 -1
  37. package/dist/cli/engagementFile.d.ts +2 -0
  38. package/dist/cli/engagementFile.js +5 -3
  39. package/dist/cli/engagementFile.js.map +1 -1
  40. package/dist/cli/markImplemented.d.ts +4 -1
  41. package/dist/cli/markImplemented.js +10 -5
  42. package/dist/cli/markImplemented.js.map +1 -1
  43. package/dist/cli/revise.d.ts +13 -3
  44. package/dist/cli/revise.js +33 -11
  45. package/dist/cli/revise.js.map +1 -1
  46. package/dist/cli/status.d.ts +22 -6
  47. package/dist/cli/status.js +52 -15
  48. package/dist/cli/status.js.map +1 -1
  49. package/dist/cli/upgrade.js +10 -8
  50. package/dist/cli/upgrade.js.map +1 -1
  51. package/dist/cli.js +61 -13
  52. package/dist/cli.js.map +1 -1
  53. package/dist/emit/engagementJson.d.ts +7 -4
  54. package/dist/emit/engagementJson.js +11 -4
  55. package/dist/emit/engagementJson.js.map +1 -1
  56. package/dist/emit/json.d.ts +1 -1
  57. package/dist/emit/json.js +6 -5
  58. package/dist/emit/json.js.map +1 -1
  59. package/dist/emit/statusJson.d.ts +1 -1
  60. package/dist/emit/statusJson.js +3 -1
  61. package/dist/emit/statusJson.js.map +1 -1
  62. package/dist/model/continuation.d.ts +11 -1
  63. package/dist/model/continuation.js +29 -0
  64. package/dist/model/continuation.js.map +1 -1
  65. package/dist/model/resolveSlice.d.ts +19 -0
  66. package/dist/model/resolveSlice.js +69 -0
  67. package/dist/model/resolveSlice.js.map +1 -0
  68. package/dist/model/sliceDocIndex.d.ts +2 -0
  69. package/dist/model/sliceDocIndex.js +4 -3
  70. package/dist/model/sliceDocIndex.js.map +1 -1
  71. package/dist/model/validate.js +5 -2
  72. package/dist/model/validate.js.map +1 -1
  73. package/dist/parser/parser.js +55 -1
  74. package/dist/parser/parser.js.map +1 -1
  75. package/package.json +1 -1
  76. package/plugin/.claude-plugin/plugin.json +2 -2
  77. package/plugin/agents/em-implementer.md +12 -2
  78. package/plugin/agents/em-validator.md +2 -1
  79. package/plugin/shared/reference/em-dsl.md +6 -3
  80. package/plugin/shared/reference/slice-doc-schema.md +12 -1
  81. package/plugin/skills/conform/SKILL.md +1 -1
  82. package/plugin/skills/design/SKILL.md +1 -1
  83. package/plugin/skills/discover/SKILL.md +1 -1
  84. package/plugin/skills/engagement/SKILL.md +9 -5
  85. package/plugin/skills/engagement/reference/engagement.md +8 -0
  86. package/plugin/skills/event-modeling/SKILL.md +1 -1
  87. package/plugin/skills/implement/SKILL.md +3 -3
  88. package/plugin/skills/implement/reference/implement.md +18 -8
  89. package/plugin/skills/review/SKILL.md +1 -1
@@ -75,6 +75,14 @@ constitution. The implementer stops and reports it as the doc line plus the ques
75
75
  4. Carry on with every other startable slice. Never answer the question yourself, never edit the
76
76
  doc, and never let the implementer guess.
77
77
 
78
+ A question the build can finish without (it does not block the slice) is not a gap: queue it with
79
+ `em slice defer <model>.em <key> "<question>" --until v<n> --decision "<what this version does>"`
80
+ (GH #236). On a ratified doc that never edits the body — `ratifiedHash` and `--slice-ready` stay
81
+ green — and records the question in `.event-modeling.md` for `<key>@v<N+1>`; `mark-implemented`
82
+ at merge opens v<N+1> as a draft with it in Open Questions. Never write the `- [ ]` into the
83
+ ratified doc, and do not run `em slice revise` for it (an unshipped ratified doc refuses
84
+ `revise` without `--withdraw`).
85
+
78
86
  The question is answered in a design session (`em:design`), which re-ratifies the
79
87
  doc. The slice is then built in a later engagement.
80
88
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: event-modeling
3
- em-version: 1.15.0
3
+ em-version: 1.16.0
4
4
  description: >-
5
5
  Use when the user runs `/em:event-modeling` (with or without a phase name), or wants to resume an
6
6
  event-modeling session without specifying which part of the process applies. Reads the model's
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: implement
3
- em-version: 1.15.0
3
+ em-version: 1.16.0
4
4
  description: >-
5
5
  Use when building a single ratified event-modeling slice (status: ready-to-implement) into
6
6
  merged, tested code — the one phase where the agent builds rather than facilitates. Gates on
@@ -35,8 +35,8 @@ em-sdd-bridge (redirect mode) and never run `/speckit.specify`.
35
35
  **Gate: no constitution, no first slice.** The constitution is the project's ratified house rules
36
36
  — stack and architectural shape (including which implementation skill each slice pattern routes
37
37
  to), code style, testing norms, NFR baselines, review/merge norms. It lives at
38
- `.specify/memory/constitution.md` in a spec-kit project, otherwise `constitution.md` beside the
39
- model; `em status` reports which, and whether it's there. If it's missing — or its `ratifiedBy:`
38
+ `.specify/memory/constitution.md` in a spec-kit project (when that file exists), otherwise
39
+ `constitution.md` beside the model; `em status` reports which, and whether it's there. If it's missing — or its `ratifiedBy:`
40
40
  is empty, meaning nobody has signed it off — run `reference/implement.md` §7 ("Before the first
41
41
  slice: the constitution") first: ask its questions conversationally, write the answers in, and
42
42
  have a human ratify them. Don't decide the project's stack or style yourself to get moving.
@@ -49,12 +49,14 @@ facilitated session, not in an implementation branch.
49
49
 
50
50
  **First, read the project's constitution** — the house rules for *how* implementation happens
51
51
  here (stack and architectural shape, which implementation skill each slice pattern routes to,
52
- code style, testing norms, NFR baselines, review and merge norms). It lives in one of exactly two
53
- places, never both:
52
+ code style, testing norms, NFR baselines, review and merge norms). It lives in one place, found by
53
+ one lookup (shared by `em status` and `em upgrade`):
54
54
 
55
55
  - **spec-kit project** (a `.specify/` directory exists at or above the model):
56
- `.specify/memory/constitution.md` — spec-kit's own slot, which em defers to.
57
- - **anything else**: `constitution.md` beside the model, where `em scaffold` writes it.
56
+ `.specify/memory/constitution.md` — spec-kit's own slot, which em defers to — wins whenever it
57
+ exists.
58
+ - **otherwise, or while that slot is empty**: `constitution.md` beside the model, where
59
+ `em scaffold` writes it (a symlink to a repo-root file counts).
58
60
 
59
61
  `em status <model>.em --json` reports which one applies and whether it's there
60
62
  (`conformance[].constitution`) — existence only; nothing in `em` reads or judges its content.
@@ -158,10 +160,17 @@ undocumented ordering, a contradiction with adjacent code. The discipline:
158
160
  your recommendation. The human resolves it — at the model, where the resolution lands as an
159
161
  answered open question or a small ratified delta alongside your fix, so the decision is
160
162
  recorded instead of buried in an implementation diff.
163
+ - **A question this build will not wait on is queued, never written into the doc** (GH #236). On a
164
+ ratified doc the body is the signed spec: `em slice defer <model>.em <slice-key> "<question>"
165
+ --until v<n> --decision "<what this version does>"` records it in `.event-modeling.md` as queued
166
+ for `<key>@v<N+1>` and leaves the doc — and `ratifiedHash`, and `--slice-ready` — untouched. When
167
+ the slice merges (`mark-implemented`) or is revised, the queued question is injected into the
168
+ v<N+1> draft's Open Questions. Never add the `- [ ]` item to the ratified doc yourself.
161
169
  - **How a delta is ratified on a doc that never shipped** (it is `ready-to-implement` with
162
- `ratifiedBy` set): once the human has answered, the doc changes by `em slice revise
163
- <model>.em <slice-key>` (MIL-283: opens the next version as a `draft` — `version:` bumped,
164
- the old sign-off cleared; the ratification of the unshipped version is withdrawn),
170
+ `ratifiedBy` set) when the spec itself must change: once the human has answered, the doc changes
171
+ by `em slice revise <model>.em <slice-key> --withdraw` (MIL-283: opens the next version as a
172
+ `draft` — `version:` bumped, the old sign-off cleared; the ratification of the unshipped version
173
+ is withdrawn, which is why GH #236 makes you pass `--withdraw` — plain `revise` refuses),
165
174
  the answer is written into the doc and committed, the room reviews it (`em slice review
166
175
  --by`), and the human re-signs with `em slice ratify
167
176
  <model>.em <slice-key> --by <name>` (it records the commit it signs and refuses uncommitted
@@ -240,7 +249,8 @@ Prefer it over hand-editing the doc's frontmatter. It also writes the **shipped
240
249
  (`shippedVersion:`/`shippedRef:`/`shippedOn:`, MIL-284) — what every reader decides "has this
241
250
  shipped?" on since 1.15.0 — and, when the ratified doc deferred a question to the next version,
242
251
  **opens that version as a `draft` on the same write** (MIL-283: `status: draft`, `version` bumped,
243
- the question back to `- [ ]`; the version you built stays shipped). If it prints `opened draft
252
+ the question back to `- [ ]`; the version you built stays shipped) — questions queued with `em slice
253
+ defer` while the doc was ratified (GH #236) are injected into that draft too. If it prints `opened draft
244
254
  v<N+1>`, say so in your report: the slice has known work, and a design session, not you, decides it.
245
255
 
246
256
  Then, if the project keeps a model README (from `../../../shared/templates/model-readme.md`), run
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: review
3
- em-version: 1.15.0
3
+ em-version: 1.16.0
4
4
  description: >-
5
5
  Use when starting em's live browser viewer (`em watch --serve`) so a team can watch a model
6
6
  update in real time, or facilitating a SCHEDULED stakeholder walkthrough that steps through