@emiliosp/pi-maestro 0.14.0 → 0.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.
- package/ADR.md +155 -0
- package/CHANGELOG.md +19 -0
- package/README.md +33 -19
- package/ROADMAP.md +176 -40
- package/agents/simplifier.md +2 -1
- package/agents/verifier.md +2 -1
- package/docs/configuration.md +49 -26
- package/docs/glossary.md +1 -1
- package/docs/subagent-integration.md +8 -6
- package/docs/workflow.md +32 -23
- package/extensions/maestro.ts +11 -13
- package/package.json +3 -3
- package/src/artifacts/builder-handoff/schema.ts +1 -2
- package/src/config/assertConfiguration.ts +0 -6
- package/src/config/defaults.ts +3 -5
- package/src/config/schema.ts +2 -14
- package/src/maestro/checks/assertEnvironment.ts +24 -9
- package/src/maestro/instructions/getMaestroInstructions.ts +19 -11
- package/src/tools/child/record-builder-handoff.ts +2 -6
- package/src/tools/child/record-simplifier-handoff.ts +2 -1
- package/src/tools/child/record-verifier-handoff.ts +2 -6
- package/src/tools/child/utils/resolveWorkflowContext.ts +2 -2
- package/src/tools/main/mark-spec-ready.ts +8 -3
- package/src/tools/main/resolve-escalations.ts +2 -1
- package/src/tools/main/resolve-findings.ts +9 -10
- package/src/tools/main/run-builder.ts +47 -15
- package/src/tools/main/run-simplifier.ts +3 -3
- package/src/tools/main/run-verifier.ts +19 -8
- package/src/tools/utils/pi-subagent-delegation.ts +3 -0
- package/src/workflow/builder/completeBuilderPass.ts +4 -0
- package/src/workflow/builder/prepareBuilderRun.ts +7 -1
- package/src/workflow/builder/resolveEscalations.ts +4 -0
- package/src/workflow/simplifier/completeSimplifierPass.ts +4 -0
- package/src/workflow/spec/markSpecReady.ts +4 -0
- package/src/workflow/transitions.ts +28 -7
- package/src/workflow/verifier/completeVerifierPass.ts +4 -0
- package/src/workflow/verifier/prepareVerifierRun.ts +7 -1
- package/src/workflow/verifier/resolveFindings.ts +4 -0
package/ADR.md
CHANGED
|
@@ -247,3 +247,158 @@ failures during delegation still use the existing `run` failure path. Workflow r
|
|
|
247
247
|
|
|
248
248
|
[Configuration](docs/configuration.md#model-access), [activation checks](src/maestro/checks/assertEnvironment.ts), and
|
|
249
249
|
[delegation](src/tools/utils/pi-subagent-delegation.ts).
|
|
250
|
+
|
|
251
|
+
## ADR-009: Select optional phases in the transition table
|
|
252
|
+
|
|
253
|
+
### Status
|
|
254
|
+
|
|
255
|
+
Accepted. Implemented under MAESTRO-27.
|
|
256
|
+
|
|
257
|
+
### Context
|
|
258
|
+
|
|
259
|
+
The `owner` selected configuration flags to support workflows with only an approved `spec` and independently optional later agents without a separate phase-selection
|
|
260
|
+
interface.
|
|
261
|
+
|
|
262
|
+
### Decision
|
|
263
|
+
|
|
264
|
+
Each agent has a `required` boolean that defaults to `true`. Disabling `builder` skips all agents. Otherwise `verifier` and `simplifier` can be disabled independently.
|
|
265
|
+
Flags are set before activation and stay unchanged during the workflow. Keep existing configuration reads, without caching or runtime controls.
|
|
266
|
+
|
|
267
|
+
Keep destination selection in `src/workflow/transitions.ts`. A transition destination is either a fixed phase or a pure function of resolved configuration. Callers pass
|
|
268
|
+
configuration to `transitionWorkflow` and save its returned state. No new workflow states, events, or persisted selection fields are needed.
|
|
269
|
+
|
|
270
|
+
### Consequences
|
|
271
|
+
|
|
272
|
+
Approval can finish at `candidate-ready` without agent execution. Agent and model availability checks apply only to selected phases; activation with only an approved
|
|
273
|
+
`spec` needs no `pi-subagents` ping. Final summaries identify skipped work, without claiming implementation or independent verification occurred.
|
|
274
|
+
|
|
275
|
+
### Evidence
|
|
276
|
+
|
|
277
|
+
[Approved design](.specs/20261103-161424-maestro-27-make-implementation-phases-optional/design.md) and [phase selection](docs/configuration.md#phase-selection).
|
|
278
|
+
|
|
279
|
+
## ADR-010: Use the Pi SDK for sequential agent delegation
|
|
280
|
+
|
|
281
|
+
### Status
|
|
282
|
+
|
|
283
|
+
Design decisions confirmed by the `owner`. Not implemented.
|
|
284
|
+
|
|
285
|
+
### Context
|
|
286
|
+
|
|
287
|
+
`Maestro` currently depends on `pi-subagents` to execute the `builder`, `verifier`, and `simplifier`. Its delegation needs are limited: only one workflow and one child
|
|
288
|
+
agent execute at a time, and `Maestro` waits for each child to finish. `Maestro` already owns workflow transitions, role instructions, saved `handoffs`, and result
|
|
289
|
+
validation.
|
|
290
|
+
|
|
291
|
+
The `owner` wants to remove the `pi-subagents` dependency without building a general-purpose delegation framework. Pi provides `createAgentSession()` for direct SDK
|
|
292
|
+
integration and `RpcClient` for subprocess control. Separate conversations do not require separate processes.
|
|
293
|
+
|
|
294
|
+
### Decision
|
|
295
|
+
|
|
296
|
+
1. Replace `pi-subagents` delegation with direct use of the Pi SDK through `createAgentSession()`, rather than RPC subprocesses.
|
|
297
|
+
2. Preserve sequential execution: one workflow at a time, one child agent at a time, with `Maestro` waiting for completion.
|
|
298
|
+
3. Use task-and-handoff communication, not a live supervisor dialogue. `Maestro` assigns the task; the child works, saves its `handoff`, and finishes.
|
|
299
|
+
4. When an `owner` decision is needed, the `builder` saves an `escalation` and ends its `run`. `Maestro` discusses it with the `owner` and records the decisions through
|
|
300
|
+
the existing workflow. Any subsequent `builder` `run` starts a fresh conversation and reads the saved decisions.
|
|
301
|
+
5. Child sessions must have access to the same working tools available to `Maestro`, plus the tools needed to save their own `handoffs`. Do not load the main `Maestro`
|
|
302
|
+
extension into child sessions. Tools supplied by other extensions may remain available even if they support delegation; role instructions forbid using them to
|
|
303
|
+
delegate. This is a tool-access requirement, not merely an extension-loading policy.
|
|
304
|
+
6. Automatically load enabled global and project extensions, excluding the main `Maestro` extension. Provide the corresponding working-tool environment through Pi's
|
|
305
|
+
native APIs and configuration, including separate Pi support such as MCP and `codemode` where needed. Loading the same extensions alone does not reproduce every CLI
|
|
306
|
+
capability. Compatibility of arbitrary extensions, tools, and model providers is outside Maestro's responsibility; do not add custom compatibility checks or adapters.
|
|
307
|
+
7. All three child roles receive the owner's global instruction file, normally `~/.pi/agent/AGENTS.md`, preserving the current `inheritGlobalContext: true` behavior.
|
|
308
|
+
These instructions are not the parent's conversation history.
|
|
309
|
+
8. All three child roles automatically receive project instructions discovered by Pi, such as applicable `AGENTS.md` files, preserving the current
|
|
310
|
+
`inheritProjectContext: true` behavior. These instructions supplement global instructions and role-specific guidance.
|
|
311
|
+
9. All three child roles can discover and use available skills, preserving the current `inheritSkills: true` behavior. Expose the skill catalog without loading every
|
|
312
|
+
skill's full contents into the conversation. Skills remain subject to the child's role boundaries and permitted tools; they do not authorize delegation or workflow
|
|
313
|
+
management.
|
|
314
|
+
10. During a child `run`, report the role, elapsed time, current tool, and recent normal assistant text through Pi's standard tool-progress updates (`onUpdate`). Use Pi's
|
|
315
|
+
built-in presentation, including its default layout, truncation, and expansion behavior. Do not build a custom renderer or implement a fixed visible-line count or
|
|
316
|
+
terminal-height adaptation. Update progress in place instead of appending intermediate messages to the main conversation. Do not include internal reasoning or full
|
|
317
|
+
command output. Continue reporting activity when the child produces no text; do not prompt it to generate artificial progress messages.
|
|
318
|
+
11. Intermediate activity text is UI-only and must not enter the main model's context. `Maestro` continues to receive the existing workflow result. Pi's display limits do
|
|
319
|
+
not truncate the saved child conversation. The five-, ten-, and twenty-line alternatives are superseded by the decision to use Pi's standard presentation.
|
|
320
|
+
12. Persist child conversations using Pi's native session format, rather than a custom transcript format. Saved sessions remain available after execution for diagnosis,
|
|
321
|
+
including unsuccessful executions. Each child `run` starts a new conversation; persistence does not introduce automatic session reuse or workflow recovery.
|
|
322
|
+
13. At child completion or failure, show the `owner` the path to its saved Pi session file, when one exists. The `owner` can inspect the file directly or use Pi's native
|
|
323
|
+
HTML export with `pi --export <session-file> conversation.html`. Do not build a transcript inspector inside `Maestro`. Reading or exporting a transcript does not
|
|
324
|
+
resume child execution.
|
|
325
|
+
14. Do not impose an automatic child `run` timeout in `Maestro`. Remove `builder.timeoutMinutes`, `verifier.timeoutMinutes`, and `simplifier.timeoutMinutes` from
|
|
326
|
+
`.pi/maestro.json` configuration support, including schema validation, defaults, launch inputs, and configuration documentation. A child continues until it finishes,
|
|
327
|
+
fails, or is manually interrupted. This removes the workflow-level deadline, not the elapsed-time progress display or timeouts internal to Pi and its tools.
|
|
328
|
+
15. Remove `timeoutMinutes` from the configuration schemas and retain `additionalProperties: false`. Existing TypeBox-based validation rejects configuration files that
|
|
329
|
+
still contain the field. Do not add a migration, ignored legacy fields, or special compatibility handling. The `owner` removes obsolete fields manually.
|
|
330
|
+
16. Preserve the existing execution-error policy. Launch failures, failed child executions, and missing or invalid `handoffs` stop the workflow and report the error.
|
|
331
|
+
`Maestro` does not automatically start another child session to retry, repair saved state, or roll back files. Preserve the remaining project files and saved workflow
|
|
332
|
+
state for manual `owner` follow-up, including partial protocol writes. Errors do not introduce recovery transitions or synthetic `escalations`.
|
|
333
|
+
17. Propagate manual cancellation of the main tool to its active child through `session.abort()` and await the interruption before releasing the child session. Do not
|
|
334
|
+
send a final model prompt asking the child to finish, and do not generate a synthetic `handoff`. Leave project files and saved workflow state unchanged by cleanup.
|
|
335
|
+
Close child sessions and release progress subscriptions and session resources on completion, failure, or cancellation. Do not start another child while the previous
|
|
336
|
+
child remains active.
|
|
337
|
+
18. Store child sessions in a `subagents/` subdirectory of Pi's normal project session directory, normally `~/.pi/agent/sessions/--<project-path>--/subagents/`. Resolve
|
|
338
|
+
the parent directory through Pi's session-directory API rather than reimplementing project-path encoding. Use Pi's native `SessionManager` with this directory. Do not
|
|
339
|
+
create a `subagents/` directory inside the project repository.
|
|
340
|
+
19. Require Pi 1.5.0 or later for the SDK-based implementation. Update the declared Pi requirement and align implementation verification with this baseline. Do not add
|
|
341
|
+
compatibility fallbacks for earlier Pi versions. This minimum is a scope choice, not a claim that all earlier versions lack the required APIs.
|
|
342
|
+
20. Do not build an additional tool allowlist or exclusion list to prevent child delegation. Children may have delegation tools available, but their role instructions
|
|
343
|
+
forbid using them. This deliberately relies on instruction compliance rather than technical removal of delegation capabilities. The main `Maestro` extension remains
|
|
344
|
+
excluded.
|
|
345
|
+
21. Leave compatibility of external integrations to Pi and the `owner`. Do not add a preflight that compares parent and child tool availability, extension health checks,
|
|
346
|
+
special adapters, or a fallback system for incompatible integrations. This scope boundary does not suppress errors actually reported during launch or execution; those
|
|
347
|
+
follow the existing stop-and-report policy.
|
|
348
|
+
|
|
349
|
+
### Consequences
|
|
350
|
+
|
|
351
|
+
The replacement does not need supervisor request routing or a mechanism that makes the main model answer a child while waiting for it. Saved `handoffs` remain the
|
|
352
|
+
communication boundary for completed work and `escalations`.
|
|
353
|
+
|
|
354
|
+
SDK sessions share a Node.js process. Separate conversation histories do not isolate module-level mutable state or project files. Child resource loading must account for
|
|
355
|
+
this distinction.
|
|
356
|
+
|
|
357
|
+
Automatic extension loading intentionally differs from the current foreground behavior of `pi-subagents` 0.78.0, which does not automatically load the parent's global and
|
|
358
|
+
project extensions. Shared working-tool access is provided through Pi's native environment, not an independent compatibility guarantee for every integration. The
|
|
359
|
+
replacement must use Pi's tool activation and support such as MCP and `codemode`, rather than assuming the SDK supplies the CLI's capabilities by default. There is no
|
|
360
|
+
custom parity check, health gate, or adapter layer for third-party integrations. Children do not inherit the parent's conversation, but they share the process and may
|
|
361
|
+
interact with process-wide mutable state. Loaded extensions can create additional connections, timers, and process-wide effects. Excluding the main `Maestro` extension
|
|
362
|
+
does not establish compatibility with every other extension or remove delegation tools supplied by other extensions. `Maestro` launches its own children sequentially;
|
|
363
|
+
compliance with the broader no-delegation rule relies on child instructions. A child that ignores those instructions could launch other agents. This accepted limitation
|
|
364
|
+
avoids maintaining tool classifications and exclusion lists and does not claim a sandbox; even ordinary shell access can launch processes.
|
|
365
|
+
|
|
366
|
+
Pi's standard tool-progress presentation replaces FleetView's live activity display, not its full transcript inspector. `Maestro` owns the progress data, not a new
|
|
367
|
+
rendering system or a guaranteed panel size. Displaying text already produced by the child requires no additional model generation and does not add that text to the main
|
|
368
|
+
model's context. Full transcript inspection uses saved session files and Pi's existing export capability rather than a replacement inspector. The main tool must connect
|
|
369
|
+
cancellation to the child SDK session and perform session cleanup; selecting the SDK alone does not wire these operations together.
|
|
370
|
+
|
|
371
|
+
Native session files retain child messages, tool calls, and tool results beyond the lifetime of the child session. They may contain project data present in those messages
|
|
372
|
+
and results. Persistence is separate from the live progress display and does not add the transcript to the main model's context. The dedicated `subagents/` subdirectory
|
|
373
|
+
keeps child session files separate from the main session files without adding transcript files to the project repository or introducing a custom storage format.
|
|
374
|
+
|
|
375
|
+
Removing the configured deadline simplifies child execution but permits indefinitely running work until manual interruption. This is a breaking configuration change:
|
|
376
|
+
files that still contain `timeoutMinutes` fail existing configuration validation until the `owner` removes the obsolete fields. Document the removal without adding legacy
|
|
377
|
+
compatibility code.
|
|
378
|
+
|
|
379
|
+
Manual cancellation uses Pi's in-process cancellation lifecycle, not termination of a separate operating-system process. It does not undo completed writes or introduce a
|
|
380
|
+
final model turn. `Maestro` uses Pi's cancellation and cleanup lifecycle; behavior of third-party integrations remains outside its compatibility contract.
|
|
381
|
+
|
|
382
|
+
The Pi minimum increases from the currently documented 1.0.0 to 1.5.0. Earlier hosts are outside the new compatibility contract. At decision time, the project has Pi
|
|
383
|
+
1.0.3 installed locally and the active harness uses Pi 1.5.0; the implementation must be verified against the selected baseline rather than treating the older local
|
|
384
|
+
installation as sufficient verification. This ADR changes no installed dependencies.
|
|
385
|
+
|
|
386
|
+
### Evidence
|
|
387
|
+
|
|
388
|
+
During the architecture discussion, the `owner` selected the SDK and task-and-handoff communication, then clarified the tool-access contract: the same working tools as
|
|
389
|
+
`Maestro`, plus child handoff tools, with the main `Maestro` extension excluded. The `owner` subsequently accepted that delegation tools from other extensions may remain
|
|
390
|
+
available, with their use forbidden by instructions rather than additional tool filters. The `owner` also confirmed that all three roles continue receiving global and
|
|
391
|
+
automatically discovered project instructions, as declared by `inheritGlobalContext: true` and `inheritProjectContext: true` in the existing role definitions. All three
|
|
392
|
+
roles also retain access to the skill catalog and can load relevant skill instructions, consistent with their existing `inheritSkills: true` setting and subject to role
|
|
393
|
+
and tool restrictions. After discussing bounded display sizes, the `owner` selected Pi's standard tool-progress presentation rather than custom rendering, while retaining
|
|
394
|
+
recent assistant text without sending intermediate text to the main model. The `owner` selected persistent transcripts in Pi's native session format, while keeping each
|
|
395
|
+
child conversation fresh. The `owner` chose to receive the saved session path and use direct file inspection or Pi's native HTML export, without a `Maestro` transcript
|
|
396
|
+
inspector. The `owner` chose the simplest execution option: no automatic child deadline, with the timeout settings removed from configuration. The `owner` accepted that
|
|
397
|
+
existing TypeBox-based validation rejects configurations retaining `timeoutMinutes`, without migration or compatibility handling, and confirmed the existing
|
|
398
|
+
execution-error policy: stop and report, retain files, and leave follow-up to the `owner`, without automatic retries, repair, or rollback. The `owner` selected manual
|
|
399
|
+
interruption through `session.abort()` followed by session cleanup, without a final model turn or synthetic `handoff`, and placed saved child sessions in `subagents/`
|
|
400
|
+
beneath Pi's project session directory, not inside the repository. The `owner` chose Pi 1.5.0 as the minimum supported version, without fallbacks for earlier hosts. The
|
|
401
|
+
`owner` explicitly excluded compatibility handling for external integrations from scope; no custom checks, adapters, or reduced-capacity fallback system are required.
|
|
402
|
+
Existing boundaries are described in [subagent integration](docs/subagent-integration.md), [delegation](src/tools/utils/pi-subagent-delegation.ts),
|
|
403
|
+
[builder execution](src/tools/main/run-builder.ts), and the [child extension](extensions/maestro-subagent.ts). These links describe the current implementation, not the
|
|
404
|
+
planned SDK replacement.
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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.16.0
|
|
7
|
+
|
|
8
|
+
1. Required Pi 1.5.0 or later and pinned the development Pi dependencies to that baseline, so type checks and tests run against the declared host. The extension now uses
|
|
9
|
+
TypeBox `Type.Enum` with an explicit string type instead of the `StringEnum` helper, calls `before_agent_start` with Pi's message object, and expects the `truncated`
|
|
10
|
+
field on `exec` results. See [PR #46](https://github.com/emilioSp/pi-maestro/pull/46).
|
|
11
|
+
2. Breaking: removed `timeoutMinutes` from the agent configuration. Configuration files that still contain the field fail validation until the `owner` removes it; no
|
|
12
|
+
migration or legacy handling is provided.
|
|
13
|
+
3. Replaced the configured per-agent timeout with a fixed, non-configurable deadline passed to `pi-subagents` for every `run`. A `run` is no longer bounded by a
|
|
14
|
+
configured duration.
|
|
15
|
+
4. Updated `ADR.md`, `ROADMAP.md`, `README.md`, and `docs/` for the new baseline and the removed timeout settings. `MAESTRO-FREE-1` is recorded as completed.
|
|
16
|
+
|
|
17
|
+
## 0.15.0
|
|
18
|
+
|
|
19
|
+
1. Added per-agent `required` booleans in `.pi/maestro.json`, all defaulting to `true`. Disabling `builder` completes the workflow at `spec` approval without agents;
|
|
20
|
+
otherwise `verifier` and `simplifier` can be disabled independently. See [PR #45](https://github.com/emilioSp/pi-maestro/pull/45).
|
|
21
|
+
2. Limited activation checks and displayed agent details to enabled phases. With `builder` disabled, activation requires no agents, models, or `pi-subagents` ping.
|
|
22
|
+
3. Updated workflow transitions, tool messages, agent guidance, and documentation for optional phases. Final-summary guidance identifies skipped work without claiming
|
|
23
|
+
implementation, independent verification, or simplification occurred.
|
|
24
|
+
|
|
6
25
|
## 0.14.0
|
|
7
26
|
|
|
8
27
|
1. Removed Maestro's model format regex while retaining activation checks against Pi's available model registry. Complete identifiers, including
|
package/README.md
CHANGED
|
@@ -2,23 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://codecov.io/gh/emiliosp/pi-maestro)
|
|
4
4
|
|
|
5
|
-
Pi extension for a spec-driven multiagent
|
|
5
|
+
Pi extension for writing a `spec` and optionally implementing it through a spec-driven multiagent workflow.
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
9
|
## The idea
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
`Maestro` has two goals:
|
|
12
|
+
|
|
13
|
+
1. Help the `owner` write and approve a `specification` (`spec`) for one reversible change.
|
|
14
|
+
2. Implement the approved `spec` through a multiagent workflow.
|
|
15
|
+
|
|
16
|
+
The `owner` can use `Maestro` only to write and approve a `spec`, leaving implementation to another workflow, or to write the `spec` and implement it within `Maestro`.
|
|
17
|
+
`Spec` preparation and approval are required. The entire implementation stage is optional, and each of its phases is optional too:
|
|
18
|
+
|
|
19
|
+
1. The `builder` implements the approved `spec`.
|
|
20
|
+
2. The independent `verifier` checks every `acceptance criterion`.
|
|
21
|
+
3. The `simplifier` refactors accepted code without changing behavior.
|
|
22
|
+
|
|
23
|
+
Disabling the `builder` skips the entire implementation stage. With the `builder` enabled, the `verifier` and `simplifier` can be disabled independently. All three are
|
|
24
|
+
enabled by default. See [Phase selection](docs/configuration.md#phase-selection).
|
|
25
|
+
|
|
26
|
+
The `owner` performs the final review.
|
|
16
27
|
|
|
17
28
|
Five principles hold the workflow together:
|
|
18
29
|
|
|
19
30
|
1. The approved `spec` defines the required work for the `builder` and `verifier`.
|
|
20
31
|
2. No agent approves its own work.
|
|
21
|
-
3.
|
|
32
|
+
3. When enabled, the `verifier` checks every `acceptance criterion` independently.
|
|
22
33
|
4. The `owner` decides requirements, scope, and unresolved questions.
|
|
23
34
|
5. Each agent has one and only one role. Specific and with clear instruction.
|
|
24
35
|
|
|
@@ -72,9 +83,9 @@ An `escalation` asks the `owner` to decide an implementation question. A `findin
|
|
|
72
83
|
|
|
73
84
|
1. macOS.
|
|
74
85
|
2. Node.js 26 or later.
|
|
75
|
-
3. Pi 1.
|
|
76
|
-
4. `pi-subagents` installed and enabled in Pi.
|
|
77
|
-
5. Access to the
|
|
86
|
+
3. Pi 1.5.0 or later.
|
|
87
|
+
4. `pi-subagents` installed and enabled in Pi when `builder` is enabled.
|
|
88
|
+
5. Access to the models for enabled agents.
|
|
78
89
|
6. A project directory that Pi trusts.
|
|
79
90
|
|
|
80
91
|
## Installation
|
|
@@ -101,20 +112,20 @@ Activate `Maestro`:
|
|
|
101
112
|
/maestro
|
|
102
113
|
```
|
|
103
114
|
|
|
104
|
-
During activation, `Maestro` checks project trust, configuration,
|
|
105
|
-
`Maestro` stays disabled and reports the problem.
|
|
115
|
+
During activation, `Maestro` checks project trust, configuration, and enabled agent and model availability. With `builder` disabled, only project trust and configuration
|
|
116
|
+
are checked. Model availability comes from Pi's model registry. If a check fails, `Maestro` stays disabled and reports the problem.
|
|
106
117
|
|
|
107
118
|
The `owner` follows this workflow:
|
|
108
119
|
|
|
109
120
|
1. Describes one change to `Maestro`.
|
|
110
121
|
2. Reviews the `spec`, including its `acceptance criteria` and concrete examples.
|
|
111
|
-
3. Replies `GREEN FLAG` when `Maestro` asks for approval. `Maestro` records the approval and starts the
|
|
122
|
+
3. Replies `GREEN FLAG` when `Maestro` asks for approval. `Maestro` records the approval and starts the selected phases.
|
|
112
123
|
4. Reviews every current `builder` `escalation` and gives `Maestro` an answer and reason for each question.
|
|
113
124
|
5. Reviews `verifier` `findings` and chooses an action for every `finding`.
|
|
114
125
|
6. Reads Maestro's summary at `candidate-ready` and performs the final review.
|
|
115
126
|
|
|
116
|
-
`Maestro` starts the `verifier
|
|
117
|
-
current phase in Pi's status, while `pi-subagents` FleetView and `/subagents-fleet` show agent activity and transcripts.
|
|
127
|
+
`Maestro` starts the `verifier`, when enabled, after a successful `builder` `run`. Selected agents run in the foreground: Pi waits for each `run` to finish and `Maestro`
|
|
128
|
+
shows the current phase in Pi's status, while `pi-subagents` FleetView and `/subagents-fleet` show agent activity and transcripts.
|
|
118
129
|
|
|
119
130
|
The `owner` must not edit product files while the workflow runs. `Maestro` can perform temporary experiments with `owner` agreement during `spec` preparation and
|
|
120
131
|
permitted revisions. See [Workflow](docs/workflow.md#spec-approval).
|
|
@@ -126,8 +137,9 @@ changing phase.
|
|
|
126
137
|
If any decision requires a `spec` change, the workflow returns to `drafting-spec` before the `owner` and `Maestro` revise the same `spec`. The `owner` reviews the revised
|
|
127
138
|
`spec` and replies `GREEN FLAG` again. `Maestro` records renewed approval separately before another `builder` `run`.
|
|
128
139
|
|
|
129
|
-
|
|
130
|
-
`Maestro` warns and skips simplification. The `simplifier` selects all uncommitted code changes, including
|
|
140
|
+
When enabled, `Maestro` starts the `simplifier` after successful verification, rejection of all `findings`, or `builder` completion with verification disabled. Only this
|
|
141
|
+
step requires Git. If Git readiness cannot be confirmed, `Maestro` warns and skips simplification. The `simplifier` selects all uncommitted code changes, including
|
|
142
|
+
pre-existing staged, unstaged, and untracked files.
|
|
131
143
|
|
|
132
144
|
The workflow ends at `candidate-ready`. Rejected `findings` retain their reasons and accepted failures can remain. Maestro's summary separates independent verification
|
|
133
145
|
from the later simplifier's report. After the final summary finishes successfully, `Maestro` automatically turns off. The `owner` controls later review, commits, pull
|
|
@@ -139,7 +151,9 @@ files do not automatically restore or resume an incomplete workflow. The `owner`
|
|
|
139
151
|
## Configuration
|
|
140
152
|
|
|
141
153
|
`Maestro` uses default values when `.pi/maestro.json` is absent from the project root. The `owner` can add this file to change the `spec` directory, models, thinking
|
|
142
|
-
levels, or
|
|
154
|
+
levels, or selected phases. Each agent has a `required` boolean that defaults to `true`. Set flags before activation and keep configuration unchanged during the workflow.
|
|
155
|
+
With `builder.required: false`, approval finishes with only an approved `spec` for implementation elsewhere. Otherwise `verifier` and `simplifier` can be disabled
|
|
156
|
+
independently. Skipped work is identified in the final summary and is not claimed as completed. See [Configuration](docs/configuration.md#phase-selection).
|
|
143
157
|
|
|
144
158
|
## Documentation
|
|
145
159
|
|
|
@@ -147,7 +161,7 @@ The reading order is:
|
|
|
147
161
|
|
|
148
162
|
1. [Glossary](docs/glossary.md): terms and identifiers used in `specs`, reports, and `Maestro` messages. Read this before the first workflow.
|
|
149
163
|
2. [Workflow](docs/workflow.md): approvals, decisions, and how each `run` produces `artifacts`.
|
|
150
|
-
3. [Configuration](docs/configuration.md): project paths, models, and
|
|
164
|
+
3. [Configuration](docs/configuration.md): project paths, models, and thinking levels.
|
|
151
165
|
4. [Subagent integration](docs/subagent-integration.md): agent context, execution, and activity tracking.
|
|
152
166
|
|
|
153
167
|
## Project constitution
|
package/ROADMAP.md
CHANGED
|
@@ -10,30 +10,37 @@ reaching `candidate-ready`. Linear onboarding and test issues are not project ro
|
|
|
10
10
|
|
|
11
11
|
## Overview
|
|
12
12
|
|
|
13
|
-
| ID
|
|
14
|
-
|
|
|
15
|
-
| MAESTRO-6
|
|
16
|
-
| MAESTRO-7
|
|
17
|
-
| MAESTRO-8
|
|
18
|
-
| MAESTRO-9
|
|
19
|
-
| MAESTRO-10
|
|
20
|
-
| MAESTRO-11
|
|
21
|
-
| MAESTRO-12
|
|
22
|
-
| MAESTRO-13
|
|
23
|
-
| MAESTRO-14
|
|
24
|
-
| MAESTRO-15
|
|
25
|
-
| MAESTRO-16
|
|
26
|
-
| MAESTRO-17
|
|
27
|
-
| MAESTRO-18
|
|
28
|
-
| MAESTRO-19
|
|
29
|
-
| MAESTRO-20
|
|
30
|
-
| MAESTRO-21
|
|
31
|
-
| MAESTRO-22
|
|
32
|
-
| MAESTRO-23
|
|
33
|
-
| MAESTRO-24
|
|
34
|
-
| MAESTRO-25
|
|
35
|
-
| MAESTRO-26
|
|
36
|
-
| MAESTRO-27
|
|
13
|
+
| ID | Item | Status |
|
|
14
|
+
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------- | --------- |
|
|
15
|
+
| MAESTRO-6 | [Display specs in a browser](#maestro-6-display-specs-in-a-browser) | Backlog |
|
|
16
|
+
| MAESTRO-7 | [Route builder failures through owner escalations](#maestro-7-route-builder-failures-through-owner-escalations) | Completed |
|
|
17
|
+
| MAESTRO-8 | [Store escalations and owner decisions in builder handoffs](#maestro-8-store-escalations-and-owner-decisions-in-builder-handoffs) | Completed |
|
|
18
|
+
| MAESTRO-9 | [Format glossary terms consistently](#maestro-9-format-glossary-terms-consistently) | Completed |
|
|
19
|
+
| MAESTRO-10 | [Improve status presentation and activation feedback](#maestro-10-improve-status-presentation-and-activation-feedback) | Completed |
|
|
20
|
+
| MAESTRO-11 | [Introduce Maestro at activation](#maestro-11-introduce-maestro-at-activation) | Completed |
|
|
21
|
+
| MAESTRO-12 | [Verify code quality against AGENTS.md instructions](#maestro-12-verify-code-quality-against-agentsmd-instructions) | Completed |
|
|
22
|
+
| MAESTRO-13 | [Check subagent extensions at activation](#maestro-13-check-subagent-extensions-at-activation) | Completed |
|
|
23
|
+
| MAESTRO-14 | [Rename the test support directory](#maestro-14-rename-the-test-support-directory) | Completed |
|
|
24
|
+
| MAESTRO-15 | [Match handoff criteria to the approved spec](#maestro-15-match-handoff-criteria-to-the-approved-spec) | Completed |
|
|
25
|
+
| MAESTRO-16 | [Route finding-driven spec revisions through drafting-spec](#maestro-16-route-finding-driven-spec-revisions-through-drafting-spec) | Completed |
|
|
26
|
+
| MAESTRO-17 | [Keep acceptance criterion numbering continuous](#maestro-17-keep-acceptance-criterion-numbering-continuous) | Completed |
|
|
27
|
+
| MAESTRO-18 | [Record escalation resolutions when the spec changes](#maestro-18-record-escalation-resolutions-when-the-spec-changes) | Completed |
|
|
28
|
+
| MAESTRO-19 | [Guide initial configuration](#maestro-19-guide-initial-configuration) | Backlog |
|
|
29
|
+
| MAESTRO-20 | [Rename the npm package](#maestro-20-rename-the-npm-package) | Backlog |
|
|
30
|
+
| MAESTRO-21 | [Label acceptance criterion coverage](#maestro-21-label-acceptance-criterion-coverage) | Completed |
|
|
31
|
+
| MAESTRO-22 | [Avoid acceptance criteria already covered by tests](#maestro-22-avoid-acceptance-criteria-already-covered-by-tests) | Completed |
|
|
32
|
+
| MAESTRO-23 | [Change agent models before a builder run](#maestro-23-change-agent-models-before-a-builder-run) | Backlog |
|
|
33
|
+
| MAESTRO-24 | [Add a simplifier with one clear purpose per agent](#maestro-24-add-a-simplifier-with-one-clear-purpose-per-agent) | Completed |
|
|
34
|
+
| MAESTRO-25 | [Define workflow reconciliation](#maestro-25-define-workflow-reconciliation) | Backlog |
|
|
35
|
+
| MAESTRO-26 | [Exit Maestro mode automatically at workflow completion](#maestro-26-exit-maestro-mode-automatically-at-workflow-completion) | Completed |
|
|
36
|
+
| MAESTRO-27 | [Make all implementation phases optional](#maestro-27-make-all-implementation-phases-optional) | Completed |
|
|
37
|
+
| MAESTRO-FREE-1 | [Require Pi 1.5.0](#maestro-free-1-require-pi-150) | Completed |
|
|
38
|
+
| MAESTRO-FREE-2 | [Remove Maestro run timeouts](#maestro-free-2-remove-maestro-run-timeouts) | Backlog |
|
|
39
|
+
| MAESTRO-FREE-3 | [Run the builder through the Pi SDK](#maestro-free-3-run-the-builder-through-the-pi-sdk) | Backlog |
|
|
40
|
+
| MAESTRO-FREE-4 | [Run the verifier through the Pi SDK](#maestro-free-4-run-the-verifier-through-the-pi-sdk) | Backlog |
|
|
41
|
+
| MAESTRO-FREE-5 | [Run the simplifier through the Pi SDK](#maestro-free-5-run-the-simplifier-through-the-pi-sdk) | Backlog |
|
|
42
|
+
| MAESTRO-FREE-6 | [Show SDK agent activity through Pi](#maestro-free-6-show-sdk-agent-activity-through-pi) | Backlog |
|
|
43
|
+
| MAESTRO-FREE-7 | [Remove the pi-subagents dependency](#maestro-free-7-remove-the-pi-subagents-dependency) | Backlog |
|
|
37
44
|
|
|
38
45
|
## Backlog
|
|
39
46
|
|
|
@@ -90,32 +97,107 @@ Explore how `Maestro` can reconcile saved `artifacts` and workflow state. The re
|
|
|
90
97
|
|
|
91
98
|
Not yet defined. The `owner` must define the intended outcome, recovery boundaries, and completion condition before this item can move forward.
|
|
92
99
|
|
|
93
|
-
### MAESTRO-
|
|
100
|
+
### MAESTRO-FREE-2: Remove Maestro run timeouts
|
|
94
101
|
|
|
95
102
|
#### Objective
|
|
96
103
|
|
|
97
|
-
|
|
104
|
+
Remove Maestro's per-agent deadline and the three `timeoutMinutes` settings, as decided in [ADR-010](ADR.md#adr-010-use-the-pi-sdk-for-sequential-agent-delegation).
|
|
105
|
+
Remove schema fields, defaults, delegation timeout inputs, and related configuration documentation together.
|
|
98
106
|
|
|
99
|
-
|
|
107
|
+
#### Completed when
|
|
108
|
+
|
|
109
|
+
1. `Maestro` no longer supplies a per-agent deadline. Elapsed-time display and timeouts internal to Pi, tools, or the remaining `pi-subagents` integration are unchanged.
|
|
110
|
+
2. Configuration without `timeoutMinutes` works; configuration retaining it fails existing TypeBox validation with no migration or compatibility handling.
|
|
111
|
+
3. Other configuration behavior and the existing workflow remain unchanged.
|
|
112
|
+
|
|
113
|
+
### MAESTRO-FREE-3: Run the builder through the Pi SDK
|
|
114
|
+
|
|
115
|
+
#### Objective
|
|
116
|
+
|
|
117
|
+
Replace `builder` delegation with `createAgentSession()` and deliver a complete, usable SDK `builder` `run`, following
|
|
118
|
+
[ADR-010](ADR.md#adr-010-use-the-pi-sdk-for-sequential-agent-delegation). This item includes the internal execution operation used by later role migrations; do not
|
|
119
|
+
release an incomplete `builder` pending separate context, cancellation, or persistence work.
|
|
120
|
+
|
|
121
|
+
#### Scope and dependencies
|
|
122
|
+
|
|
123
|
+
Requires [MAESTRO-FREE-1](#maestro-free-1-require-pi-150) and [MAESTRO-FREE-2](#maestro-free-2-remove-maestro-run-timeouts). Keep the `verifier` and `simplifier` on
|
|
124
|
+
`pi-subagents`. The temporary routing is fixed in code, not a configurable engine selector or a general-purpose delegation framework. Human documentation must describe
|
|
125
|
+
the actual mixed-engine state. Live SDK progress is covered separately by [MAESTRO-FREE-6](#maestro-free-6-show-sdk-agent-activity-through-pi); existing workflow-phase
|
|
126
|
+
status remains available in the meantime.
|
|
100
127
|
|
|
101
128
|
#### Completed when
|
|
102
129
|
|
|
103
|
-
1.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
130
|
+
1. An approved `spec` can be implemented by an SDK `builder` with fresh conversation history, the configured model and thinking level, role guidance, global and project
|
|
131
|
+
instructions, skills, working tools, and existing `handoff` tools.
|
|
132
|
+
2. Enabled global and project extensions load through Pi, excluding the main `Maestro` extension. Instructions forbid further delegation; there are no additional tool
|
|
133
|
+
filters, integration health gates, compatibility adapters, or automatic retries.
|
|
134
|
+
3. `done` and `escalation` outcomes preserve existing saved `handoffs`, validation, phase transitions, and subsequent workflow routes. A later `builder` `pass` starts
|
|
135
|
+
fresh and reads saved decisions rather than restoring the previous conversation.
|
|
136
|
+
4. Errors stop the workflow without rollback or repair. Manual cancellation reaches `session.abort()`, and child sessions and subscriptions are cleaned up on every exit.
|
|
137
|
+
5. Native Pi session files are saved beneath the project's Pi session directory in `subagents/`. The `owner` receives the saved path on completion or failure when a file
|
|
138
|
+
exists; it can be inspected or exported with Pi, without automatic resumption.
|
|
139
|
+
6. Existing trust, configuration, and model checks remain applicable. `pi-subagents` ping and launch-contract checks apply only to enabled roles still using that engine;
|
|
140
|
+
a `builder`-only workflow uses the SDK without requiring a `pi-subagents` availability reply.
|
|
141
|
+
7. Each `run` waits for its child to finish or be interrupted before another starts. Existing optional-phase behavior remains intact.
|
|
142
|
+
|
|
143
|
+
### MAESTRO-FREE-4: Run the verifier through the Pi SDK
|
|
108
144
|
|
|
109
|
-
####
|
|
145
|
+
#### Objective
|
|
110
146
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
3. Whether selections can change after a workflow starts.
|
|
147
|
+
Move the `verifier` to the SDK execution operation delivered by [MAESTRO-FREE-3](#maestro-free-3-run-the-builder-through-the-pi-sdk), following
|
|
148
|
+
[ADR-010](ADR.md#adr-010-use-the-pi-sdk-for-sequential-agent-delegation). Do not redesign verification or its reports.
|
|
114
149
|
|
|
115
|
-
####
|
|
150
|
+
#### Completed when
|
|
116
151
|
|
|
117
|
-
|
|
118
|
-
|
|
152
|
+
1. The SDK `verifier` independently checks the approved `spec` and saves existing numbered `handoffs`, preserving criterion validation, `finding` decisions, and phase
|
|
153
|
+
transitions.
|
|
154
|
+
2. It reuses the established fresh-session context, tools, persistence, cancellation, cleanup, and error policy without a second execution mechanism.
|
|
155
|
+
3. Activation no longer asks `pi-subagents` to check or execute the `verifier`. Its remaining checks apply only to enabled roles still on that engine.
|
|
156
|
+
4. Workflows with verification enabled or disabled retain their existing routes. If the `simplifier` is not yet migrated, it continues to use `pi-subagents` unchanged.
|
|
157
|
+
|
|
158
|
+
### MAESTRO-FREE-5: Run the simplifier through the Pi SDK
|
|
159
|
+
|
|
160
|
+
#### Objective
|
|
161
|
+
|
|
162
|
+
Move the `simplifier` to the SDK execution operation delivered by [MAESTRO-FREE-3](#maestro-free-3-run-the-builder-through-the-pi-sdk), following
|
|
163
|
+
[ADR-010](ADR.md#adr-010-use-the-pi-sdk-for-sequential-agent-delegation). Keep its existing purpose and Git-only scope.
|
|
164
|
+
|
|
165
|
+
#### Completed when
|
|
166
|
+
|
|
167
|
+
1. The SDK `simplifier` preserves the current Git readiness decision, skip behavior, and entry routes. No Git readiness check moves into activation or an earlier phase.
|
|
168
|
+
2. Successful execution saves the existing unnumbered `S.json` `handoff` and reaches `candidate-ready`; optional-phase behavior remains unchanged.
|
|
169
|
+
3. It reuses the established context, tools, persistence, cancellation, cleanup, and error policy.
|
|
170
|
+
4. Activation no longer asks `pi-subagents` to check or execute the `simplifier`. Once all roles have migrated, no workflow path requires its ping or launch preflight.
|
|
171
|
+
|
|
172
|
+
### MAESTRO-FREE-6: Show SDK agent activity through Pi
|
|
173
|
+
|
|
174
|
+
#### Objective
|
|
175
|
+
|
|
176
|
+
Show activity for SDK-based agent `runs` through Pi's standard `onUpdate` presentation, as decided in
|
|
177
|
+
[ADR-010](ADR.md#adr-010-use-the-pi-sdk-for-sequential-agent-delegation). Requires [MAESTRO-FREE-3](#maestro-free-3-run-the-builder-through-the-pi-sdk) and applies to
|
|
178
|
+
each role as it is migrated.
|
|
179
|
+
|
|
180
|
+
#### Completed when
|
|
181
|
+
|
|
182
|
+
1. Progress reports the role, elapsed time, current tool, and recent normal assistant text, including activity while the agent produces no text.
|
|
183
|
+
2. Pi controls layout, truncation, and expansion. There is no custom renderer, fixed line count, transcript inspector, or artificial progress prompting.
|
|
184
|
+
3. Intermediate text stays out of the main model's context. Final workflow results, saved session contents, and cancellation behavior remain unchanged.
|
|
185
|
+
4. Progress subscriptions are released when the child finishes, fails, or is interrupted. Roles still on `pi-subagents` retain their existing presentation.
|
|
186
|
+
|
|
187
|
+
### MAESTRO-FREE-7: Remove the pi-subagents dependency
|
|
188
|
+
|
|
189
|
+
#### Objective
|
|
190
|
+
|
|
191
|
+
Finish [ADR-010](ADR.md#adr-010-use-the-pi-sdk-for-sequential-agent-delegation) by removing the package dependency, bundling, and remaining integration metadata after
|
|
192
|
+
[MAESTRO-FREE-3](#maestro-free-3-run-the-builder-through-the-pi-sdk), [MAESTRO-FREE-4](#maestro-free-4-run-the-verifier-through-the-pi-sdk), and
|
|
193
|
+
[MAESTRO-FREE-5](#maestro-free-5-run-the-simplifier-through-the-pi-sdk). This is dependency removal, not another execution-engine switch.
|
|
194
|
+
|
|
195
|
+
#### Completed when
|
|
196
|
+
|
|
197
|
+
1. `Maestro` neither imports nor bundles `pi-subagents`, and package metadata, role frontmatter, tests, installation instructions, and current human documentation no
|
|
198
|
+
longer require it. Historical records remain historical evidence.
|
|
199
|
+
2. A clean installation can activate and complete workflows without `pi-subagents` installed or enabled, including the supported optional-phase combinations.
|
|
200
|
+
3. Existing workflow and `handoff` formats remain unchanged. No compatibility framework, engine-selection flags, or migration of interrupted workflows is added.
|
|
119
201
|
|
|
120
202
|
## Implemented, acceptance not confirmed
|
|
121
203
|
|
|
@@ -135,7 +217,61 @@ Linear marks this item Done, but its description still says final `owner` accept
|
|
|
135
217
|
|
|
136
218
|
## Completed
|
|
137
219
|
|
|
138
|
-
|
|
220
|
+
Completed entries include historical records imported from Linear and work explicitly accepted by the `owner`. Historical verification evidence alone does not establish
|
|
221
|
+
final `owner` acceptance.
|
|
222
|
+
|
|
223
|
+
### MAESTRO-FREE-1: Require Pi 1.5.0
|
|
224
|
+
|
|
225
|
+
#### Objective
|
|
226
|
+
|
|
227
|
+
Adopt Pi 1.5.0 as the minimum supported host and verification baseline for [ADR-010](ADR.md#adr-010-use-the-pi-sdk-for-sequential-agent-delegation), without changing the
|
|
228
|
+
delegation engine or adding compatibility fallbacks.
|
|
229
|
+
|
|
230
|
+
#### Completed when
|
|
231
|
+
|
|
232
|
+
1. Declared requirements and the development verification environment use the selected Pi baseline consistently.
|
|
233
|
+
2. The existing extension and `pi-subagents` workflow continue to work on Pi 1.5.0.
|
|
234
|
+
|
|
235
|
+
#### Implementation and evidence
|
|
236
|
+
|
|
237
|
+
The `owner` confirmed completion. `README.md` declares Pi 1.5.0 as the minimum host. Development dependencies for the four Pi packages are pinned to 1.5.0, so type checks
|
|
238
|
+
and tests run against that baseline. Schema enums use TypeBox `Type.Enum` with an explicit string type. `npm run check` passes on 1.5.0, including the extension and
|
|
239
|
+
`pi-subagents` integration tests.
|
|
240
|
+
|
|
241
|
+
### MAESTRO-27: Make all implementation phases optional
|
|
242
|
+
|
|
243
|
+
#### Objective
|
|
244
|
+
|
|
245
|
+
Make the entire implementation stage optional, including the `builder`, `verifier`, and `simplifier` phases. Let the `owner` use `Maestro` only to prepare and approve a
|
|
246
|
+
`spec`, leaving implementation to another workflow.
|
|
247
|
+
|
|
248
|
+
When implementation runs in `Maestro`, the `owner` can still independently enable or disable the `verifier` and `simplifier` phases. `Spec` preparation and approval
|
|
249
|
+
remain required.
|
|
250
|
+
|
|
251
|
+
#### Completed when
|
|
252
|
+
|
|
253
|
+
1. The `owner` can complete a workflow with only an approved `spec`, without running the `builder`, `verifier`, or `simplifier`.
|
|
254
|
+
2. Implementation can be performed through another workflow using the approved `spec`, without requiring further execution in `Maestro`.
|
|
255
|
+
3. The existing requested combinations remain available: `builder` only; `builder` and `verifier`; `builder` and `simplifier`; or all three.
|
|
256
|
+
4. Disabled phases are not delegated and do not block workflow completion.
|
|
257
|
+
5. The workflow reaches `candidate-ready` after `spec` approval when no agent phases are selected, or after the selected phases complete and any required `owner`
|
|
258
|
+
decisions are resolved.
|
|
259
|
+
6. The final summary clearly identifies skipped phases and does not claim that skipped implementation or verification has been completed.
|
|
260
|
+
|
|
261
|
+
#### Implementation and evidence
|
|
262
|
+
|
|
263
|
+
Implemented under the [specification](.specs/20261103-161424-maestro-27-make-implementation-phases-optional/spec.md). The `owner` confirmed completion. Each agent's
|
|
264
|
+
`required` boolean in `.pi/maestro.json` defaults to `true`. Flags are set before activation and remain unchanged during the workflow. Disabling `builder` skips all three
|
|
265
|
+
agents; otherwise `verifier` and `simplifier` are independently optional. `Spec` preparation and approval remain required. The activation notice lists only enabled agents
|
|
266
|
+
and no agents when `builder` is disabled.
|
|
267
|
+
|
|
268
|
+
The [README](README.md#the-idea) presents the two uses of `Maestro`: writing and approving a `spec` only, or also implementing it through optional agent phases.
|
|
269
|
+
|
|
270
|
+
#### Context
|
|
271
|
+
|
|
272
|
+
[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`
|
|
273
|
+
choice. This item originally made only the post-`builder` phases optional. The `owner` expanded the scope to include the `builder`, so `Maestro` can also be used solely
|
|
274
|
+
for writing and approving a `spec`.
|
|
139
275
|
|
|
140
276
|
### MAESTRO-7: Route builder failures through owner escalations
|
|
141
277
|
|
package/agents/simplifier.md
CHANGED
|
@@ -21,7 +21,8 @@ delegate, approve work, implement new behavior, or raise findings or escalations
|
|
|
21
21
|
files. The present documents form one approved contract: motivation and scope in the proposal, behavior and all acceptance criteria, including standalone regressions,
|
|
22
22
|
in the spec, technical decisions in the optional design.
|
|
23
23
|
3. Read relevant builder and verifier handoffs and embedded owner decisions. The highest numeric B or V sequence is active; earlier numbered handoffs are context, not
|
|
24
|
-
active instructions.
|
|
24
|
+
active instructions. When verification is disabled, no verifier handoff is required; use the builder report and its check baseline, without claiming independent
|
|
25
|
+
verification.
|
|
25
26
|
4. Confirm that the saved workflow identifies this spec and is in `simplifier-running`. If inputs or phase do not match, report the mismatch to Maestro and stop. Do not
|
|
26
27
|
repair protocol state.
|
|
27
28
|
|
package/agents/verifier.md
CHANGED
|
@@ -89,4 +89,5 @@ facts. If the tool already wrote an artifact or changed phase before an error, d
|
|
|
89
89
|
force completion. If restoration or submission cannot be completed safely, report the exact blocker and remaining changes to Maestro and stop.
|
|
90
90
|
|
|
91
91
|
After a successful handoff, return a concise summary and the saved artifact path to Maestro and stop. Do not run more checks. The handoff produces `finding-decisions`
|
|
92
|
-
when findings exist
|
|
92
|
+
when findings exist. With no findings, it produces `simplifier-running` when simplification is enabled, otherwise `candidate-ready`. Report that tool result without
|
|
93
|
+
deciding whether the owner must accept, reject, or fix any finding.
|