@emiliosp/pi-maestro 0.13.0 → 0.13.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/ADR.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  An Architecture Decision Record (ADR) explains an important architectural choice, its context, and its consequences. This file contains one numbered record per decision.
4
4
 
5
- Requirements and routine project rules belong in the [roadmap](https://linear.app/emilio-spatola/team/MAESTRO/overview) or other relevant documentation.
5
+ Requirements and routine project rules belong in the [roadmap](ROADMAP.md) or other relevant documentation.
6
6
 
7
7
  When a new decision replaces an accepted decision, add a new record, mark the earlier record as superseded, and link both records.
8
8
 
@@ -168,7 +168,7 @@ approval.
168
168
 
169
169
  ### Status
170
170
 
171
- Accepted. Implemented.
171
+ Superseded by [ADR-007](#adr-007-maintain-the-roadmap-in-the-repository).
172
172
 
173
173
  ### Context
174
174
 
@@ -190,3 +190,32 @@ commit-pinned links to repository evidence. Removing the local roadmap also remo
190
190
  ### Evidence
191
191
 
192
192
  [Linear roadmap](https://linear.app/emilio-spatola/team/MAESTRO/overview) and [repository instructions](AGENTS.md).
193
+
194
+ ## ADR-007: Maintain the roadmap in the repository
195
+
196
+ ### Status
197
+
198
+ Accepted. Supersedes [ADR-006](#adr-006-maintain-the-roadmap-in-linear).
199
+
200
+ ### Context
201
+
202
+ The `owner` reported excessive token use when accessing Linear and requested restoration of the Markdown roadmap. The `owner` also explicitly prohibited changes to the
203
+ Linear project.
204
+
205
+ ### Decision
206
+
207
+ Maintain the roadmap in `ROADMAP.md` as the source of truth. Restore project items from Linear through read-only access, preserving existing `MAESTRO` identifiers, scope,
208
+ and evidence. Do not transfer Linear onboarding or test issues.
209
+
210
+ Keep Linear unchanged as historical reference. Routine roadmap reading and maintenance use local files, not MCP.
211
+
212
+ ### Consequences
213
+
214
+ Planning no longer requires Linear access. Repository instructions, documentation audit guidance, links, and published package contents refer to the local roadmap. Later
215
+ roadmap changes do not need synchronization with Linear.
216
+
217
+ Conflicting imported status and acceptance evidence remain explicit rather than being treated as proof of final `owner` acceptance.
218
+
219
+ ### Evidence
220
+
221
+ [Roadmap](ROADMAP.md) and [repository instructions](AGENTS.md).
package/CHANGELOG.md CHANGED
@@ -3,6 +3,11 @@
3
3
  This file summarizes meaningful changes to the codebase, including behavior, data formats, architecture, and development tools. Git tags identify version boundaries;
4
4
  GitHub Releases are not required.
5
5
 
6
+ ## 0.13.1
7
+
8
+ 1. Restored `ROADMAP.md` as the planning source of truth from the current Linear issues, retaining their identifiers and recorded evidence. Updated repository guidance,
9
+ documentation links, and package contents so roadmap maintenance no longer requires Linear. Linear data remains unchanged.
10
+
6
11
  ## 0.13.0
7
12
 
8
13
  1. Automatically turn off `Maestro` after successfully delivering the final summary of a completed workflow, including when Git is unavailable and simplification is
package/README.md CHANGED
@@ -153,6 +153,6 @@ The reading order is:
153
153
 
154
154
  1. [Mission](MISSION.md): purpose, scope, and `owner` responsibilities.
155
155
  2. [Tech stack](TECH_STACK.md): runtime technologies and development tools.
156
- 3. [Roadmap](https://linear.app/emilio-spatola/team/MAESTRO/overview): completed outcomes and planned priorities maintained in Linear.
156
+ 3. [Roadmap](ROADMAP.md): completed outcomes and planned work maintained in the repository.
157
157
  4. [Changelog](CHANGELOG.md): meaningful codebase changes and breaking changes.
158
158
  5. [Architecture decision records](ADR.md): architectural choices, context, consequences, and evidence.
package/ROADMAP.md ADDED
@@ -0,0 +1,389 @@
1
+ # Roadmap
2
+
3
+ This file is the source of truth for planned outcomes and recorded completion. Roadmap entries are not permission to implement them. The `owner` selects work and approves
4
+ its `specification` before implementation starts. Detailed requirements, technical decisions, and `acceptance criteria` belong in that `specification`.
5
+
6
+ Items were restored from the Linear `MAESTRO` team. Existing identifiers remain stable; Linear is historical reference only and does not need to be read or updated.
7
+ Backlog items have no agreed order or date. The `owner` approves priority and scope changes.
8
+
9
+ Completed entries preserve recorded outcomes and evidence, which may describe behavior later changed. Completion requires `owner` acceptance, not only passing checks or
10
+ reaching `candidate-ready`. Linear onboarding and test issues are not project roadmap items and are omitted.
11
+
12
+ ## Backlog
13
+
14
+ ### MAESTRO-6: Display specs in a browser
15
+
16
+ #### Objective
17
+
18
+ Display the `spec` documents in a browser to improve readability and help the `owner` understand the proposed change, requirements, and `acceptance criteria`.
19
+
20
+ #### Completed when
21
+
22
+ The `owner` can read the `spec` documents in a browser with formatting designed for human comprehension.
23
+
24
+ ### MAESTRO-19: Guide initial configuration
25
+
26
+ #### Objective
27
+
28
+ Help the `owner` create `Maestro` configuration through an interview. `Maestro` asks questions and writes the agreed configuration.
29
+
30
+ #### Completed when
31
+
32
+ The `owner` can create a valid project configuration without writing the file manually.
33
+
34
+ ### MAESTRO-20: Rename the npm package
35
+
36
+ #### Objective
37
+
38
+ Rename `@emiliosp/pi-maestro` to `pi-maestro-sdd`. The `owner` installs the package under the new name. This item changes the package identity, not the development
39
+ workflow.
40
+
41
+ Compatibility with installations under the old name must be decided in the `specification`. No `specification` is approved yet.
42
+
43
+ #### Completed when
44
+
45
+ Package metadata and installation documentation use the new name. The package is available under that name.
46
+
47
+ ### MAESTRO-23: Change agent models before a builder run
48
+
49
+ #### Objective
50
+
51
+ Let the `owner` change the `builder` and `verifier` models during `spec` preparation and the `ready-for-builder` phase. The selected models apply to subsequent `runs`.
52
+
53
+ #### Completed when
54
+
55
+ The `owner` can select available models in those phases. `Maestro` uses the selections.
56
+
57
+ ### MAESTRO-25: Define workflow reconciliation
58
+
59
+ #### Objective
60
+
61
+ Explore how `Maestro` can reconcile saved `artifacts` and workflow state. The recovery scope is not yet defined.
62
+
63
+ #### Completed when
64
+
65
+ Not yet defined. The `owner` must define the intended outcome, recovery boundaries, and completion condition before this item can move forward.
66
+
67
+ ### MAESTRO-27: Make verifier and simplifier phases optional
68
+
69
+ #### Objective
70
+
71
+ Make the `builder` the only required agent phase. Let the `owner` independently enable or disable the `verifier` and `simplifier` phases.
72
+
73
+ This request concerns agent execution phases, not removal of `spec` preparation or approval.
74
+
75
+ #### Completed when
76
+
77
+ 1. The `builder` remains mandatory.
78
+ 2. The `owner` can select any of these combinations: `builder` only; `builder` and `verifier`; `builder` and `simplifier`; or all three.
79
+ 3. Disabled phases are not delegated and do not block workflow completion.
80
+ 4. The workflow reaches `candidate-ready` after the selected phases complete and any required `owner` decisions are resolved.
81
+ 5. The final summary clearly identifies skipped phases and does not describe skipped verification as passed.
82
+
83
+ #### Decisions to define in the spec
84
+
85
+ 1. Where and when phase selection is configured.
86
+ 2. Default selections.
87
+ 3. Whether selections can change after a workflow starts.
88
+
89
+ #### Context
90
+
91
+ [MAESTRO-24](#maestro-24-add-a-simplifier-with-one-clear-purpose-per-agent) introduced the `simplifier`. Its existing Git-unavailable skip is not an explicit `owner`
92
+ choice. This issue adds independent optionality for both post-`builder` agent phases.
93
+
94
+ ## Implemented, acceptance not confirmed
95
+
96
+ ### MAESTRO-26: Exit Maestro mode automatically at workflow completion
97
+
98
+ Implemented in `0.13.0`. `Maestro` automatically turns off after successfully delivering the final summary of a completed workflow, including when Git is unavailable and
99
+ simplification is skipped. Live tools, status, instructions, and active `spec` selection are cleared; saved workflow files and other extensions remain unchanged.
100
+ Intermediate phases and interrupted workflows do not trigger automatic exit.
101
+
102
+ Linear marks this item Done, but its description still says final `owner` acceptance is pending. Acceptance is not inferred from that status or the release.
103
+
104
+ #### Evidence
105
+
106
+ [Changelog](CHANGELOG.md#0130), [merged PR #43](https://github.com/emilioSp/pi-maestro/pull/43),
107
+ [specification](.specs/20261030-145712-automatically-exit-maestro-mode-at-workflow-completion/spec.md), and
108
+ [original issue](https://linear.app/emilio-spatola/issue/MAESTRO-26/feat-exit-maestro-mode-automatically-at-workflow-completion).
109
+
110
+ ## Completed
111
+
112
+ These entries were recorded as Done in Linear. Their historical verification evidence does not independently establish final `owner` acceptance.
113
+
114
+ ### MAESTRO-7: Route builder failures through owner escalations
115
+
116
+ Route reportable `builder` problems through `owner` `escalations` instead of a terminal failure phase.
117
+
118
+ Released in `0.9.0`. The `builder` reports only `done` or `escalation`. Reportable technical problems use the existing `owner` `escalation` process. Individual `probe`
119
+ results retain `failed`. Execution errors and missing or invalid saved results still stop the workflow without automatic recovery.
120
+
121
+ All 8 `acceptance criteria` passed with no `verifier` `findings`. The saved workflow reached `candidate-ready`.
122
+
123
+ #### Evidence
124
+
125
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-101454-route-builder-failures-through-owner-escalations/spec.md),
126
+ [verifier report](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-101454-route-builder-failures-through-owner-escalations/handoffs/verifier/V1.json),
127
+ and [merged PR #32](https://github.com/emilioSp/pi-maestro/pull/32).
128
+
129
+ ### MAESTRO-8: Store escalations and owner decisions in builder handoffs
130
+
131
+ Keep `escalation` questions and `owner` answers together in numbered `builder` `handoffs`.
132
+
133
+ Numbered `builder` `handoffs` contain multiple `escalation` questions and their `owner` resolutions. The `owner` resolves all current questions in one batch. Earlier
134
+ `handoffs` remain available as history. All 10 `acceptance criteria` passed with no `verifier` `findings`. The saved workflow reached `candidate-ready`.
135
+
136
+ #### Evidence
137
+
138
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261008-132344-store-escalations-in-builder-handoffs/spec.md),
139
+ [verifier report](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261008-132344-store-escalations-in-builder-handoffs/handoffs/verifier/V1.json),
140
+ and [merged PR #27](https://github.com/emilioSp/pi-maestro/pull/27).
141
+
142
+ ### MAESTRO-9: Format glossary terms consistently
143
+
144
+ Apply glossary formatting across documentation and record its exclusions.
145
+
146
+ Applied glossary formatting across the documentation and recorded its exclusions in `AGENTS.md` and the documentation audit skill. The approved change document uses the
147
+ term `spec`. The `owner` confirmed completion.
148
+
149
+ #### Evidence
150
+
151
+ [Glossary](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/docs/glossary.md) and
152
+ [workflow documentation](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/docs/workflow.md).
153
+
154
+ ### MAESTRO-10: Improve status presentation and activation feedback
155
+
156
+ Show clearer status and configured agent details without adding model context.
157
+
158
+ The status bar uses phase icons, theme colors, and shortened `spec` IDs. Successful activation shows the configured `builder` and `verifier` settings without adding the
159
+ notice to session history or model context. All 12 `acceptance criteria` passed with no `verifier` `findings`. The saved workflow reached `candidate-ready`.
160
+
161
+ #### Evidence
162
+
163
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261007-170438-update-maestro-status-bar-with-agent-models-theme-colors-and-phase-icons/spec.md),
164
+ [verifier report](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261007-170438-update-maestro-status-bar-with-agent-models-theme-colors-and-phase-icons/handoffs/verifier/V1.json),
165
+ and [merged PR #26](https://github.com/emilioSp/pi-maestro/pull/26).
166
+
167
+ ### MAESTRO-11: Introduce Maestro at activation
168
+
169
+ Introduce `Maestro` at activation and load relevant documentation only when needed.
170
+
171
+ Implemented in `0.9.1`. Successful activation introduces `Maestro` and invites the `owner` to ask how it works. The UI-only notice retains the configured agent details
172
+ and does not add session history or start a model request.
173
+
174
+ Active instructions identify absolute paths to the installed README and documentation directory. `Maestro` reads relevant documentation on demand without automatically
175
+ loading its contents.
176
+
177
+ All 6 `acceptance criteria` passed with no `verifier` `findings`. The saved workflow reached `candidate-ready`.
178
+
179
+ #### Evidence
180
+
181
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-171954-introduce-maestro-at-activation/spec.md),
182
+ [verifier report](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-171954-introduce-maestro-at-activation/handoffs/verifier/V1.json),
183
+ and [merged PR #33](https://github.com/emilioSp/pi-maestro/pull/33).
184
+
185
+ ### MAESTRO-12: Verify code quality against AGENTS.md instructions
186
+
187
+ Historical outcome: the extra review described below was removed by [MAESTRO-24](#maestro-24-add-a-simplifier-with-one-clear-purpose-per-agent) in `0.11.0`.
188
+
189
+ Require the `verifier` to review affected code against applicable `AGENTS.md` code-quality directives.
190
+
191
+ Implemented in `0.9.2`. `Verifier` guidance now requires code-quality review only for code affected by the approved change when applicable `AGENTS.md` directives exist.
192
+ All existing duties remain unchanged, including independent verification of every `acceptance criterion`.
193
+
194
+ Instruction-violation `findings` identify the instruction file, quote the rule, and explain the violating code through existing evidence fields. Missing files or
195
+ code-quality directives cause only the added review to be skipped. Personal style preferences are not requirements.
196
+
197
+ All 5 `acceptance criteria` passed through independent inspection of the written guidance, with no `verifier` `findings`. No additional model trials were performed. The
198
+ saved workflow reached `candidate-ready`.
199
+
200
+ #### Evidence
201
+
202
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-185941-verify-code-quality-against-agents-md-instructions/spec.md),
203
+ [verifier report](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-185941-verify-code-quality-against-agents-md-instructions/handoffs/verifier/V1.json),
204
+ and [merged PR #34](https://github.com/emilioSp/pi-maestro/pull/34).
205
+
206
+ ### MAESTRO-13: Check subagent extensions at activation
207
+
208
+ Require a successful parent `pi-subagents` availability reply before activation.
209
+
210
+ Implemented in `0.9.3`. Activation requires a matching successful version 1 `ping` reply from the parent `pi-subagents` extension within 2000 ms. A failed or invalid
211
+ reply, emission error, or timeout prevents activation and reports the installation requirement. The check starts no agent and makes no model request. It confirms parent
212
+ extension availability, not child execution readiness.
213
+
214
+ All 7 `acceptance criteria` passed using controlled replies and code inspection, with no `verifier` `findings`. The saved workflow reached `candidate-ready`.
215
+
216
+ A later integration test requested by the `owner` directly checks the environment check's failed-reply error. This test addition is outside the completed independent
217
+ verification.
218
+
219
+ #### Evidence
220
+
221
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-194407-check-pi-subagents-availability-with-ping-at-activation/spec.md),
222
+ [verifier report](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-194407-check-pi-subagents-availability-with-ping-at-activation/handoffs/verifier/V1.json),
223
+ and [merged PR #35](https://github.com/emilioSp/pi-maestro/pull/35).
224
+
225
+ ### MAESTRO-14: Rename the test support directory
226
+
227
+ Rename `test/` to `tests/` and update affected references.
228
+
229
+ Renamed `test/` to `tests/` at the owner's request. Updated imports, fixture paths, lint configuration, and project instructions. This follows the global instruction to
230
+ keep fixtures under `tests/fixtures`. Source tests remain next to their source files. Historical `handoffs` retain their recorded paths.
231
+
232
+ #### Evidence
233
+
234
+ [Test support](https://github.com/emilioSp/pi-maestro/tree/839ab9eb9753df22804d750657a616a9959c2c47/tests/support/),
235
+ [fixtures](https://github.com/emilioSp/pi-maestro/tree/839ab9eb9753df22804d750657a616a9959c2c47/tests/fixtures/), and
236
+ [lint configuration](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.oxlintrc.json).
237
+
238
+ ### MAESTRO-15: Match handoff criteria to the approved spec
239
+
240
+ Require every approved `spec` criterion ID in each submitted `builder` and `verifier` `handoff`.
241
+
242
+ Implemented in `0.9.5` with the narrower scope approved by the `owner`. Both `handoff` submissions require every `acceptance criterion` ID from the approved `spec` before
243
+ saving a report or changing phase. Extra report IDs remain allowed. Existing report validation is unchanged, and no new check rejects duplicate `spec` IDs.
244
+
245
+ Both `acceptance criteria` passed independent verification with no `findings`. The saved workflow reached `candidate-ready`.
246
+
247
+ Later changes requested by the `owner` extracted the shared check and replaced repeated integration scenarios with unit tests. One missing-ID integration test remains per
248
+ role. These changes are outside the completed independent verification. The final `npm run check` passed all 227 tests and coverage thresholds.
249
+
250
+ #### Evidence
251
+
252
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-211629-match-handoff-criteria-to-the-approved-spec/spec.md),
253
+ [verifier report](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-211629-match-handoff-criteria-to-the-approved-spec/handoffs/verifier/V1.json),
254
+ and [merged PR #37](https://github.com/emilioSp/pi-maestro/pull/37).
255
+
256
+ ### MAESTRO-16: Route finding-driven spec revisions through drafting-spec
257
+
258
+ Record `finding` decisions before `spec` revision and require renewed `GREEN FLAG` before another `builder` `run`.
259
+
260
+ Implemented the approved revision route. `Maestro` records every current `finding` decision before returning to `drafting-spec` when revision is required. The `owner`
261
+ reviews the same revised `spec` and gives renewed `GREEN FLAG` before separate approval and another `builder` `run`. Revision takes priority in mixed batches. Direct
262
+ approval from `finding-decisions` is rejected.
263
+
264
+ Later event naming cleanup identifies `builder` and `owner` actions explicitly. Both revision routes use `OWNER_REQUEST_SPEC_REVISION` without changing the phase flow.
265
+ Batch resolution uses `RESOLVE_ESCALATIONS`, and the status label refers to `escalations` in the plural. The saved decision phases are named `escalation-decisions` and
266
+ `finding-decisions`.
267
+
268
+ #### Evidence
269
+
270
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261015-154812-route-finding-driven-spec-revisions-through-drafting-spec/spec.md)
271
+ and
272
+ [resolution integration tests](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/src/tools/main/resolve-findings.integration.test.ts).
273
+
274
+ ### MAESTRO-17: Keep acceptance criterion numbering continuous
275
+
276
+ Reject gaps in `acceptance criterion` numbering before approving a `spec`.
277
+
278
+ Implemented in `0.9.4`. `Spec` approval rejects numbered `acceptance criterion` headings that do not start at `AC1` and continue without gaps. Rejection leaves saved
279
+ files unchanged.
280
+
281
+ `Maestro` corrects numbering and affected references without changing criterion order or requirements, then retries with the existing `GREEN FLAG`. No additional `owner`
282
+ approval is required.
283
+
284
+ All 3 `acceptance criteria` passed with no `verifier` `findings`. The saved workflow reached `candidate-ready`.
285
+
286
+ #### Evidence
287
+
288
+ [Specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-202811-check-acceptance-criterion-numbering-before-builder-execution/spec.md),
289
+ [verifier report](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261013-202811-check-acceptance-criterion-numbering-before-builder-execution/handoffs/verifier/V1.json),
290
+ and [merged PR #36](https://github.com/emilioSp/pi-maestro/pull/36).
291
+
292
+ ### MAESTRO-18: Record escalation resolutions when the spec changes
293
+
294
+ #### Objective
295
+
296
+ Save every current `escalation` answer in the original `builder` `handoff`, whether the `spec` stays unchanged or requires revision. Each `resolution` records the owner's
297
+ chosen solution and reason. A decision requiring revision also identifies the `escalation` and describes the agreed `spec` change.
298
+
299
+ #### Agreed flow
300
+
301
+ `Maestro` records the complete decision batch through `maestro_resolve_escalations` before changing phase.
302
+
303
+ | Decision | Next phase and action |
304
+ | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
305
+ | No `spec` change | `escalation-decisions` → `ready-for-builder`. The `builder` continues under the approved `spec`, without renewed approval. |
306
+ | `Spec` change required | `escalation-decisions` → `drafting-spec`. The `owner` and `Maestro` revise and review the same `spec`. |
307
+ | Revised `spec` receives renewed `GREEN FLAG` | `drafting-spec` → `ready-for-builder` through separate `maestro_mark_spec_ready` approval. |
308
+
309
+ Direct `spec` approval from `escalation-decisions` is rejected. Recording answers does not move to `ready-for-verifier`; that phase requires a completed `builder` `pass`.
310
+
311
+ #### Implementation boundaries
312
+
313
+ Reuse the existing resolution operation and `handoff` fields. Do not add a parallel decision store, tool, or workflow phase. Define both resolution transitions explicitly
314
+ in `src/workflow/transitions.ts` and apply them through `transitionWorkflow`. Direct phase assignment elsewhere is banned. Preserve initial `spec` approval, `verifier`
315
+ `finding` decisions, existing batch validation, and historical `handoffs`.
316
+
317
+ #### Completed when
318
+
319
+ Saved `resolutions`, workflow phases, tool results, agent instructions, and human documentation follow the agreed flow. Verification checks both observable behavior and
320
+ use of the central transition definitions for each resolution branch. Passing behavior tests alone is not enough. The new `spec` includes coverage labels and omits
321
+ `acceptance criteria` already covered by tests of the same scenario.
322
+
323
+ ### MAESTRO-21: Label acceptance criterion coverage
324
+
325
+ Historical outcome: the `Coverage` field described below was removed in `0.12.0`. See [changelog](CHANGELOG.md#0120).
326
+
327
+ Label each `acceptance criterion` as success, failure, or unchanged behavior.
328
+
329
+ Implemented with [MAESTRO-22](#maestro-22-avoid-acceptance-criteria-already-covered-by-tests) as one task, as selected by the `owner`. The `spec` template and `Maestro`
330
+ guidance require one `Coverage` label per `acceptance criterion`:
331
+
332
+ | Label | Purpose |
333
+ | ----------- | -------------------------------------------- |
334
+ | `success` | A valid action produces the required result. |
335
+ | `failure` | An invalid action is correctly rejected. |
336
+ | `unchanged` | The change preserves existing behavior. |
337
+
338
+ Use `unchanged` when the criterion explicitly checks behavior that the change must preserve. Labels describe scenarios, not test outcomes. A `failure` scenario passes
339
+ when the invalid action is correctly rejected. A `spec` does not need all three categories. `Maestro` includes labels when presenting criteria to the `owner` and checks
340
+ them against scenarios and `expected results` during review. Approval validation and `handoff` formats remain unchanged.
341
+
342
+ The existing creation integration test now checks that the generated `spec` includes the coverage field. The final `npm run check` passed all 238 tests and coverage
343
+ thresholds. No model trials were performed.
344
+
345
+ #### Evidence
346
+
347
+ [Spec template](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/templates/spec.md),
348
+ [Maestro guidance](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/src/maestro/instructions/getMaestroInstructions.ts),
349
+ [creation integration test](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/src/specs/create.integration.test.ts), and
350
+ [workflow documentation](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/docs/workflow.md#acceptance-criteria).
351
+
352
+ ### MAESTRO-22: Avoid acceptance criteria already covered by tests
353
+
354
+ Omit `acceptance criteria` whose exact scenarios already have test coverage.
355
+
356
+ Implemented with [MAESTRO-21](#maestro-21-label-acceptance-criterion-coverage). `Maestro` inspects existing tests before writing `acceptance criteria`. It omits a
357
+ criterion only when a test covers the same starting conditions, action, and `expected result`. Partial or uncertain coverage does not justify omission. Similar tests do
358
+ not count.
359
+
360
+ During `spec` review, `Maestro` removes criteria whose exact scenarios already have test coverage. It keeps numbering continuous from `AC1` and updates affected
361
+ references. Required behavior remains documented in the requirements and constraints. The same rules apply during `spec` revisions. No automatic approval check was added.
362
+
363
+ Verification consisted of inspecting the written guidance and running `npm run check`. No model trials were performed.
364
+
365
+ #### Evidence
366
+
367
+ [Maestro guidance](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/src/maestro/instructions/getMaestroInstructions.ts),
368
+ [spec template](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/templates/spec.md), and
369
+ [workflow documentation](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/docs/workflow.md#acceptance-criteria).
370
+
371
+ ### MAESTRO-24: Add a simplifier with one clear purpose per agent
372
+
373
+ Run the `simplifier` after accepted verification, with a Git-only file scope and separate report.
374
+
375
+ Completed under the
376
+ [specification](https://github.com/emilioSp/pi-maestro/blob/839ab9eb9753df22804d750657a616a9959c2c47/.specs/20261016-090319-add-a-dedicated-simplifier-after-verification/spec.md).
377
+ The `owner` confirmed completion. The `builder` implements the approved `spec`. The `verifier` checks its `acceptance criteria`. The `simplifier` refactors accepted code
378
+ for clarity. The extra code-quality review introduced in [MAESTRO-12](#maestro-12-verify-code-quality-against-agentsmd-instructions) is removed from the verifier's
379
+ instructions.
380
+
381
+ Successful verification and rejection of all current `findings` save `simplifier-running`. `Maestro` calls `maestro_run_simplifier` without another approval or
382
+ verification cycle. Only that tool checks Git readiness. If Git is unavailable, it warns and saves `candidate-ready` without delegation or a `simplifier` `handoff`.
383
+
384
+ The `simplifier` selects all uncommitted code changes, including pre-existing staged, unstaged, and untracked files. It preserves observable behavior and the accepted
385
+ check baseline. Rejected `findings` remain rejected, not passed. Required caller updates can include initially unchanged files. Unrelated refactoring, index changes, and
386
+ automatic commits are excluded.
387
+
388
+ A completed `pass` saves the fixed, unnumbered `handoffs/simplifier/S.json`, then saves `candidate-ready`. The report contains refactored files, a summary, and notes. No
389
+ refactoring is required when selected code is already clear. Maestro's final summary separates this report from independent `verifier` evidence.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emiliosp/pi-maestro",
3
- "version": "0.13.0",
3
+ "version": "0.13.1",
4
4
  "description": "A spec-driven multiagent development workflow for Pi.",
5
5
  "keywords": [
6
6
  "orchestration",
@@ -28,6 +28,7 @@
28
28
  "docs/",
29
29
  "MISSION.md",
30
30
  "TECH_STACK.md",
31
+ "ROADMAP.md",
31
32
  "CHANGELOG.md",
32
33
  "ADR.md",
33
34
  "README.md",