@milehimikey/em 1.15.0 → 1.16.1
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/.claude/agents/em-implementer.md +12 -2
- package/.claude/agents/em-validator.md +2 -1
- package/.claude/skills/event-modeling/SKILL.md +1 -1
- package/.claude/skills/event-modeling-conform/SKILL.md +1 -1
- package/.claude/skills/event-modeling-design/SKILL.md +1 -1
- package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
- package/.claude/skills/event-modeling-engagement/SKILL.md +9 -5
- package/.claude/skills/event-modeling-engagement/reference/engagement.md +8 -0
- package/.claude/skills/event-modeling-implement/SKILL.md +3 -3
- package/.claude/skills/event-modeling-implement/reference/implement.md +18 -8
- package/.claude/skills/event-modeling-review/SKILL.md +1 -1
- package/.claude/skills/event-modeling-shared/reference/em-dsl.md +6 -3
- package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +12 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/dist/catalog/deferQueue.d.ts +20 -0
- package/dist/catalog/deferQueue.js +63 -0
- package/dist/catalog/deferQueue.js.map +1 -0
- package/dist/catalog/docJoin.d.ts +5 -0
- package/dist/catalog/docJoin.js +6 -3
- package/dist/catalog/docJoin.js.map +1 -1
- package/dist/catalog/docModelConsistencyValidate.js +4 -8
- package/dist/catalog/docModelConsistencyValidate.js.map +1 -1
- package/dist/catalog/sliceDoc.d.ts +3 -3
- package/dist/catalog/sliceDoc.js +3 -3
- package/dist/catalog/sliceDoc.js.map +1 -1
- package/dist/catalog/sliceReadyValidate.js +7 -1
- package/dist/catalog/sliceReadyValidate.js.map +1 -1
- package/dist/catalog/sliceSections.d.ts +5 -0
- package/dist/catalog/sliceSections.js +11 -2
- package/dist/catalog/sliceSections.js.map +1 -1
- package/dist/cli/defer.d.ts +45 -0
- package/dist/cli/defer.js +162 -10
- package/dist/cli/defer.js.map +1 -1
- package/dist/cli/engagement.d.ts +13 -0
- package/dist/cli/engagement.js +31 -11
- package/dist/cli/engagement.js.map +1 -1
- package/dist/cli/engagementFile.d.ts +2 -0
- package/dist/cli/engagementFile.js +5 -3
- package/dist/cli/engagementFile.js.map +1 -1
- package/dist/cli/markImplemented.d.ts +4 -1
- package/dist/cli/markImplemented.js +10 -5
- package/dist/cli/markImplemented.js.map +1 -1
- package/dist/cli/revise.d.ts +13 -3
- package/dist/cli/revise.js +33 -11
- package/dist/cli/revise.js.map +1 -1
- package/dist/cli/status.d.ts +22 -6
- package/dist/cli/status.js +52 -15
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/upgrade.js +10 -8
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli.js +65 -15
- package/dist/cli.js.map +1 -1
- package/dist/emit/engagementJson.d.ts +7 -4
- package/dist/emit/engagementJson.js +11 -4
- package/dist/emit/engagementJson.js.map +1 -1
- package/dist/emit/json.d.ts +1 -1
- package/dist/emit/json.js +6 -5
- package/dist/emit/json.js.map +1 -1
- package/dist/emit/statusJson.d.ts +1 -1
- package/dist/emit/statusJson.js +3 -1
- package/dist/emit/statusJson.js.map +1 -1
- package/dist/model/continuation.d.ts +11 -1
- package/dist/model/continuation.js +29 -0
- package/dist/model/continuation.js.map +1 -1
- package/dist/model/resolveSlice.d.ts +19 -0
- package/dist/model/resolveSlice.js +69 -0
- package/dist/model/resolveSlice.js.map +1 -0
- package/dist/model/sliceDocIndex.d.ts +2 -0
- package/dist/model/sliceDocIndex.js +4 -3
- package/dist/model/sliceDocIndex.js.map +1 -1
- package/dist/model/validate.js +5 -2
- package/dist/model/validate.js.map +1 -1
- package/dist/parser/parser.js +55 -1
- package/dist/parser/parser.js.map +1 -1
- package/dist/render/watch.d.ts +2 -2
- package/dist/render/watch.js +9 -5
- package/dist/render/watch.js.map +1 -1
- package/package.json +2 -2
- package/plugin/.claude-plugin/plugin.json +2 -2
- package/plugin/agents/em-implementer.md +12 -2
- package/plugin/agents/em-validator.md +2 -1
- package/plugin/shared/reference/em-dsl.md +6 -3
- package/plugin/shared/reference/slice-doc-schema.md +12 -1
- package/plugin/skills/conform/SKILL.md +1 -1
- package/plugin/skills/design/SKILL.md +1 -1
- package/plugin/skills/discover/SKILL.md +1 -1
- package/plugin/skills/engagement/SKILL.md +9 -5
- package/plugin/skills/engagement/reference/engagement.md +8 -0
- package/plugin/skills/event-modeling/SKILL.md +1 -1
- package/plugin/skills/implement/SKILL.md +3 -3
- package/plugin/skills/implement/reference/implement.md +18 -8
- package/plugin/skills/review/SKILL.md +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design
|
|
3
|
-
em-version: 1.
|
|
3
|
+
em-version: 1.16.1
|
|
4
4
|
description: >-
|
|
5
5
|
Use when structuring a draft event model into swimlanes and the four patterns (State Change,
|
|
6
6
|
State View, Automation, Translation), evaluating a model's structural completeness, or writing
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: discover
|
|
3
|
-
em-version: 1.
|
|
3
|
+
em-version: 1.16.1
|
|
4
4
|
description: >-
|
|
5
5
|
Use when starting a brand-new event model from scratch — greenfield discovery: brainstorming
|
|
6
6
|
past-tense events, storyboarding the happy path, finding the commands and read models — or when
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: engagement
|
|
3
|
-
em-version: 1.
|
|
3
|
+
em-version: 1.16.1
|
|
4
4
|
description: >-
|
|
5
5
|
Use when leading an engagement: building a named set of ratified event-modeling slices
|
|
6
6
|
(`em engagement`) into one independent PR per slice, each against main, by dispatching the
|
|
@@ -99,9 +99,12 @@ For each slice the plan lists as not held:
|
|
|
99
99
|
4. Record it:
|
|
100
100
|
`em engagement set <model>.em <slug> <key> --state building --branch impl/<key> --base <base>`
|
|
101
101
|
5. Dispatch `em-implementer` (`em:em-implementer` under the plugin) on the implementer model.
|
|
102
|
-
Its prompt is ONLY the slice key
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
Its prompt is ONLY the slice key, the absolute worktree path and, when the plan's slice
|
|
103
|
+
carries one, its tracking key (`tracking` in `em engagement plan --json` — GH #241). That
|
|
104
|
+
field is already resolved: the slice doc's own `tracking:` wins over the engagement's
|
|
105
|
+
`--tracking`, and it is `null` when neither is set (then say nothing about tracking). It reads
|
|
106
|
+
its own spec, the constitution and the implement contract. Give it no plan, no other slice,
|
|
107
|
+
and no merge instructions.
|
|
105
108
|
|
|
106
109
|
## 4. Validate, review, criticise
|
|
107
110
|
|
|
@@ -110,7 +113,8 @@ When the implementer returns a PR URL (and a per-invariant test map):
|
|
|
110
113
|
1. `em engagement set <model>.em <slug> <key> --state validating --pr <url>`. Check the PR's
|
|
111
114
|
base: `gh pr view <url> --json baseRefName` must be `main`. If not, fix it with
|
|
112
115
|
`gh pr edit <url> --base main`. That is a lead step; the implementer never changes a base.
|
|
113
|
-
2. Dispatch `em-validator` (`em:em-validator`) with the slice key
|
|
116
|
+
2. Dispatch `em-validator` (`em:em-validator`) with the slice key, the worktree path and the same
|
|
117
|
+
tracking key (when the slice has one). It
|
|
114
118
|
returns one PASS/FAIL line per check and `OVERALL: PASS` or a failure.
|
|
115
119
|
3. On `OVERALL: PASS`: `em engagement set <model>.em <slug> <key> --state review`. Dispatch
|
|
116
120
|
`em-reviewer` (`em:em-reviewer`) with the slice key and the PR URL. Dispatch `em-critic`
|
|
@@ -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.
|
|
3
|
+
em-version: 1.16.1
|
|
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.
|
|
3
|
+
em-version: 1.16.1
|
|
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
|
|
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
|
|
53
|
-
|
|
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
|
-
|
|
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
|
|
163
|
-
<model>.em <slice-key
|
|
164
|
-
the old sign-off cleared; the ratification of the unshipped version
|
|
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)
|
|
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
|