@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 +31 -2
- package/CHANGELOG.md +5 -0
- package/README.md +1 -1
- package/ROADMAP.md +389 -0
- package/package.json +2 -1
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](
|
|
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
|
-
|
|
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](
|
|
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.
|
|
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",
|