@emiliosp/pi-maestro 0.6.3 → 0.7.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/README.md +17 -5
- package/agents/builder.md +6 -7
- package/agents/verifier.md +3 -3
- package/changelog.md +85 -0
- package/docs/glossary.md +69 -0
- package/docs/subagent-integration.md +1 -1
- package/docs/workflow.md +55 -23
- package/extensions/maestro-subagent.ts +0 -2
- package/extensions/maestro.ts +5 -5
- package/mission.md +7 -0
- package/package.json +7 -4
- package/roadmap.md +85 -0
- package/src/MaestroPaths.ts +0 -32
- package/src/artifacts/builder-handoff/assertBuilderHandoff.ts +29 -0
- package/src/artifacts/builder-handoff/schema.ts +87 -23
- package/src/maestro/instructions/getMaestroInstructions.ts +7 -7
- package/src/specs/create.ts +0 -4
- package/src/tools/child/record-builder-handoff.ts +14 -16
- package/src/tools/main/resolve-escalations.ts +72 -0
- package/src/tools/main/run-builder.ts +14 -10
- package/src/workflow/builder/completeBuilderPass.ts +20 -32
- package/src/workflow/escalation/resolveEscalations.ts +100 -0
- package/tech-stack.md +14 -0
- package/src/artifacts/escalation/assertEscalation.ts +0 -66
- package/src/artifacts/escalation/createEscalation.ts +0 -52
- package/src/artifacts/escalation/getNextEscalationId.ts +0 -23
- package/src/artifacts/escalation/readEscalation.ts +0 -40
- package/src/artifacts/escalation/readEscalationHistory.ts +0 -44
- package/src/artifacts/escalation/resolveEscalation.ts +0 -43
- package/src/artifacts/escalation/schema.ts +0 -73
- package/src/tools/child/open-escalation.ts +0 -71
- package/src/tools/main/resolve-escalation.ts +0 -65
- package/src/workflow/escalation/openBuilderEscalation.ts +0 -82
- package/src/workflow/escalation/resolveBuilderEscalation.ts +0 -118
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# pi-maestro
|
|
2
2
|
|
|
3
|
+
[](https://codecov.io/gh/emiliosp/pi-maestro)
|
|
4
|
+
|
|
3
5
|
Pi extension for a spec-driven multiagent development workflow.
|
|
4
6
|
|
|
5
7
|

|
|
@@ -66,11 +68,11 @@ The owner follows this workflow:
|
|
|
66
68
|
1. Describes one change to Maestro.
|
|
67
69
|
2. Reviews the spec, including its acceptance criteria and concrete examples.
|
|
68
70
|
3. Replies `GREEN FLAG` when Maestro asks for approval. Maestro records the approval and starts the builder.
|
|
69
|
-
4. Reviews builder
|
|
71
|
+
4. Reviews every current builder escalation and gives Maestro an answer and reason for each question.
|
|
70
72
|
5. Reviews verifier findings and chooses an action for every finding.
|
|
71
73
|
6. Reads Maestro's summary at `candidate-ready` and performs the final review.
|
|
72
74
|
|
|
73
|
-
Maestro starts the verifier after a successful builder run.
|
|
75
|
+
Maestro starts the verifier after a successful builder run.
|
|
74
76
|
Both agents run in the foreground: Pi waits for each run to finish and Maestro shows the current phase in Pi's status, while `pi-subagents` FleetView and `/subagents-fleet` show agent activity and transcripts.
|
|
75
77
|
|
|
76
78
|
The owner must not edit product files while the workflow runs.
|
|
@@ -89,6 +91,16 @@ Maestro uses default values when `.pi/maestro.json` is absent from the project r
|
|
|
89
91
|
|
|
90
92
|
## Documentation
|
|
91
93
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
The reading order is:
|
|
95
|
+
|
|
96
|
+
1. [Glossary](docs/glossary.md): terms and identifiers used in specs, reports, and Maestro messages. Read this before the first workflow.
|
|
97
|
+
2. [Workflow](docs/workflow.md): approvals, decisions, and how each run produces artifacts.
|
|
98
|
+
3. [Configuration](docs/configuration.md): project paths, models, and timeouts.
|
|
99
|
+
4. [Subagent integration](docs/subagent-integration.md): agent context, execution, and activity tracking.
|
|
100
|
+
|
|
101
|
+
## Project constitution
|
|
102
|
+
|
|
103
|
+
1. [Mission](mission.md): purpose, scope, and owner responsibilities.
|
|
104
|
+
2. [Tech stack](tech-stack.md): runtime technologies and development tools.
|
|
105
|
+
3. [Roadmap](roadmap.md): completed outcomes and planned priorities.
|
|
106
|
+
4. [Changelog](changelog.md): meaningful codebase changes and breaking contracts.
|
package/agents/builder.md
CHANGED
|
@@ -6,7 +6,6 @@ systemPromptMode: replace
|
|
|
6
6
|
inheritProjectContext: true
|
|
7
7
|
inheritGlobalContext: true
|
|
8
8
|
inheritSkills: true
|
|
9
|
-
completionGuard: false
|
|
10
9
|
subagentOnlyExtensions: ../extensions/maestro-subagent.ts
|
|
11
10
|
---
|
|
12
11
|
|
|
@@ -22,7 +21,7 @@ Do not delegate, contact the owner directly, or approve your own work.
|
|
|
22
21
|
1. Use the exact `specId` supplied by Maestro. Do not select another spec.
|
|
23
22
|
2. Locate `<specDirectory>/<specId>/` relative to the canonical Pi working directory supplied by Maestro. Use `specDirectory` from `.pi/maestro.json`, or `.specs` when unset.
|
|
24
23
|
3. Read `spec.md`, relevant `prototypes/`, `workflow.json`, and applicable `AGENTS.md` files.
|
|
25
|
-
4. Read available handoffs and escalation resolutions for this spec. Earlier numbered artifacts remain on the file system.
|
|
24
|
+
4. Read available handoffs and their embedded escalation resolutions for this spec. Earlier numbered artifacts remain on the file system.
|
|
26
25
|
5. Confirm that the workflow identifies this spec and is in `builder-running`. Maestro already saved that phase.
|
|
27
26
|
|
|
28
27
|
If the supplied spec is missing or the phase is wrong, report the mismatch to Maestro and stop. Do not repair workflow state.
|
|
@@ -32,7 +31,7 @@ The highest numeric sequence is the active handoff for each role. Earlier record
|
|
|
32
31
|
|
|
33
32
|
Do not edit the frozen spec during builder or verifier execution.
|
|
34
33
|
The approved spec defines the required behavior, constraints, technical decisions, scope, and acceptance criteria.
|
|
35
|
-
If this pass follows
|
|
34
|
+
If this pass follows escalation resolutions, read them from the active builder handoff and follow each owner decision.
|
|
36
35
|
If this pass follows `fix-code`, fix all current findings assigned for repair. These contain an explicit `decision: { decision: "fix-code" }` from the owner.
|
|
37
36
|
Do not fix rejected findings merely because they appear in the handoff.
|
|
38
37
|
After a spec revision, earlier escalations and findings are historical context, not active repair instructions.
|
|
@@ -43,8 +42,8 @@ Use the active spec and the active handoff to assess repair instructions. A find
|
|
|
43
42
|
Change only product files needed to meet the approved contract, within the project root.
|
|
44
43
|
Use existing repository patterns for routine implementation details that the spec leaves open. Do not add unrelated improvements.
|
|
45
44
|
Follow applicable repository commands and technical rules. Inspect scripts before running them. Do not invent required commands.
|
|
46
|
-
Do not edit `spec.md`, prototypes, `workflow.json`,
|
|
47
|
-
Use `maestro_record_builder_handoff`
|
|
45
|
+
Do not edit `spec.md`, prototypes, `workflow.json`, or handoffs directly through any tool.
|
|
46
|
+
Use `maestro_record_builder_handoff` for protocol changes. The tool supplies artifact paths and versions.
|
|
48
47
|
|
|
49
48
|
If a significant discovery requires an owner choice, stop implementation and use the escalation outcome below.
|
|
50
49
|
Examples include a spec conflict, undefined behavior, a material architectural alternative, scope changes, or verification and reversibility decisions.
|
|
@@ -75,8 +74,8 @@ Include every spec criterion once. Do not omit unrun criteria, fabricate evidenc
|
|
|
75
74
|
Before any terminal tool call, restore temporary verification changes and remove temporary verification files. Keep the implementation work.
|
|
76
75
|
Choose the outcome from the actual result:
|
|
77
76
|
|
|
78
|
-
1. `done`: Implementation and required checks are complete. Every criterion has `probeStatus: passed`. Call `maestro_record_builder_handoff` with `specId`, `status: done`, `summary`, `acceptanceCriteria`, and `
|
|
79
|
-
2.
|
|
77
|
+
1. `done`: Implementation and required checks are complete. Every criterion has `probeStatus: passed`. Call `maestro_record_builder_handoff` with `specId`, `status: done`, `summary`, `acceptanceCriteria`, `notes`, and `escalations: []`.
|
|
78
|
+
2. `escalation`: An owner decision is required. Call `maestro_record_builder_handoff` with `specId`, `status: escalation`, `summary`, every criterion result, `notes`, and all `escalations`. Assign sequential IDs in array order: `E1`, `E2`, and so on. Restart at `E1` for each handoff. Each entry contains `id`, `question`, `context`, `options`, `recommendation`, `notes`, and `resolution: null`. Include evidence in the context. Give each option an ID, description, consequences, and next step. Use `recommendation: null` unless evidence supports an option. Refer to questions with both IDs, such as `B1/E1`. Record actual probe results, including incomplete probes. All probes can pass when an owner decision remains necessary. Save one handoff and stop.
|
|
80
79
|
3. `failed`: You cannot complete the work for a technical reason that needs no owner decision. Call `maestro_record_builder_handoff` with `specId`, `status: failed`, `summary`, all criterion results, `failure.reason`, and `notes`. Report actual statuses, including `not-run` where applicable.
|
|
81
80
|
|
|
82
81
|
After a successful terminal call, return the saved outcome and artifact path to Maestro. Stop the pass.
|
package/agents/verifier.md
CHANGED
|
@@ -6,7 +6,6 @@ systemPromptMode: replace
|
|
|
6
6
|
inheritProjectContext: true
|
|
7
7
|
inheritGlobalContext: true
|
|
8
8
|
inheritSkills: true
|
|
9
|
-
completionGuard: false
|
|
10
9
|
subagentOnlyExtensions: ../extensions/maestro-subagent.ts
|
|
11
10
|
---
|
|
12
11
|
|
|
@@ -22,7 +21,7 @@ Do not delegate, contact the owner directly, repair the implementation, or issue
|
|
|
22
21
|
1. Use the exact `specId` and project directory supplied by Maestro. Do not select another spec or project.
|
|
23
22
|
2. Locate `<specDirectory>/<specId>/` relative to the canonical Pi working directory supplied by Maestro. Use `specDirectory` from `.pi/maestro.json`, or `.specs` when unset.
|
|
24
23
|
3. Read `spec.md`, relevant `prototypes/`, `workflow.json`, and applicable `AGENTS.md` files.
|
|
25
|
-
4. Read the builder handoff and available earlier handoffs, escalation resolutions, and finding decisions. Earlier numbered artifacts remain on the file system.
|
|
24
|
+
4. Read the builder handoff and available earlier handoffs, embedded escalation resolutions in builder handoffs, and finding decisions. Earlier numbered artifacts remain on the file system.
|
|
26
25
|
5. Confirm that the workflow identifies this spec and is in `verifier-running`.
|
|
27
26
|
|
|
28
27
|
If the required inputs or phase do not match, report the mismatch to Maestro and stop. Do not reset unrelated changes.
|
|
@@ -30,6 +29,7 @@ The candidate is the live project. Maestro creates no product snapshot or file-h
|
|
|
30
29
|
This workflow assumes no external product edits during verification.
|
|
31
30
|
Handoffs use `handoffs/builder/B1.json`, `B2.json` and `handoffs/verifier/V1.json`, `V2.json`.
|
|
32
31
|
The highest numeric sequence is the active handoff for each role. Earlier handoffs and their owner decisions remain references.
|
|
32
|
+
Escalation questions and owner resolutions are inside builder handoffs. Use handoff-qualified references, such as `B1/E1` and `B2/E1`.
|
|
33
33
|
You start with a fresh context. Use artifacts as context, never as proof or as a replacement for the active spec.
|
|
34
34
|
After a spec revision, assess historical observations against the revised contract. Do not carry forward old findings without fresh evidence.
|
|
35
35
|
|
|
@@ -89,7 +89,7 @@ Before each temporary change, retain the exact original file contents and note w
|
|
|
89
89
|
Before handoff, restore only your temporary changes from probes and repository checks to those exact contents.
|
|
90
90
|
Remove only temporary files created during this pass. Preserve all pre-existing files and content. Do not use blanket cleanup commands.
|
|
91
91
|
For example, restore `src/total.ts` from `return 0` to its original `return 42`, remove your `probe.txt`, and leave pre-existing `notes.txt` unchanged.
|
|
92
|
-
The spec, prototypes, earlier handoffs
|
|
92
|
+
The spec, prototypes, and earlier handoffs must remain unchanged. Findings do not relax this requirement.
|
|
93
93
|
If cleanup cannot finish safely, stop and report the remaining changes. Maestro validates the protocol, not product restoration.
|
|
94
94
|
|
|
95
95
|
Call `maestro_record_verifier_handoff` with `specId`, `summary`, every criterion result, `findings`, and `notes`.
|
package/changelog.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
This file summarizes meaningful changes to the codebase, including behavior, contracts, architecture, and development tools. Git tags identify version boundaries; GitHub Releases are not required. Version-only changes and routine maintenance are omitted.
|
|
4
|
+
|
|
5
|
+
## 0.7.1
|
|
6
|
+
|
|
7
|
+
1. Documented the project mission, current tech stack, owner responsibilities, roadmap, and codebase change history. See [PR #30](https://github.com/emilioSp/pi-maestro/pull/30).
|
|
8
|
+
2. Replaced `TODO.md` with the roadmap and included the four project constitution documents in the npm package.
|
|
9
|
+
3. Updated documentation audits to compare all current documentation and the project constitution with the working tree without requesting a comparison baseline.
|
|
10
|
+
|
|
11
|
+
## 0.7.0
|
|
12
|
+
|
|
13
|
+
1. Stored multiple escalation questions and owner resolutions inside numbered builder handoffs. Earlier handoffs remain available as history. See [PR #27](https://github.com/emilioSp/pi-maestro/pull/27).
|
|
14
|
+
2. Breaking: replaced `maestro_open_escalation` and `maestro_resolve_escalation` with `maestro_record_builder_handoff` and `maestro_resolve_escalations`. Done handoffs require `escalations: []`. Standalone escalation storage was removed without migration or compatibility readers. Artifact versions remain `1.0.0`.
|
|
15
|
+
3. Added LCOV coverage reports and Codecov uploads from CI. See [PR #28](https://github.com/emilioSp/pi-maestro/pull/28).
|
|
16
|
+
|
|
17
|
+
Reload Maestro extensions before starting new workflows so sessions use the new tool contracts.
|
|
18
|
+
|
|
19
|
+
## 0.6.2
|
|
20
|
+
|
|
21
|
+
Added phase icons, theme colors, and display-only shortening of long spec IDs. Successful activation shows the configured agent settings in a UI-only notice, outside session history and model context. See [PR #26](https://github.com/emilioSp/pi-maestro/pull/26).
|
|
22
|
+
|
|
23
|
+
## 0.6.0
|
|
24
|
+
|
|
25
|
+
1. Removed Git requirements, checkpoints, and automatic commits from the workflow. Maestro uses Pi's project directory and saved workflow phase. See [PR #25](https://github.com/emilioSp/pi-maestro/pull/25).
|
|
26
|
+
2. Retained numbered builder and verifier handoffs and explicit owner finding decisions. Removed workflow revision counters and writer locks.
|
|
27
|
+
3. Breaking: changed artifact contracts, handoff paths, and tool results without migration or compatibility readers. Removed revision and commit fields. Artifact versions remain `1.0.0`. Interrupted and older workflows require manual owner handling.
|
|
28
|
+
|
|
29
|
+
## 0.5.2
|
|
30
|
+
|
|
31
|
+
Reverted the spec question-dependency instructions introduced in `0.5.1`. See [commit 13cad11](https://github.com/emilioSp/pi-maestro/commit/13cad11).
|
|
32
|
+
|
|
33
|
+
## 0.5.1
|
|
34
|
+
|
|
35
|
+
Added instructions to resolve prerequisite decisions before asking dependent spec questions and to review unresolved decisions before approval. These instructions were reverted in `0.5.2`.
|
|
36
|
+
|
|
37
|
+
## 0.5.0
|
|
38
|
+
|
|
39
|
+
Removed breakage checks from specs, handoffs, validation, and agent instructions. Breakage checks temporarily introduced faults to test error detection. Acceptance criteria retain probes, expected results, and concrete examples. See [PR #24](https://github.com/emilioSp/pi-maestro/pull/24).
|
|
40
|
+
|
|
41
|
+
Breaking: handoffs no longer accept `breakageStatus`. Older handoffs containing that field must be regenerated. Artifact versions remain `1.0.0`.
|
|
42
|
+
|
|
43
|
+
## 0.4.5
|
|
44
|
+
|
|
45
|
+
Required a concrete example in every acceptance criterion, both in the spec and when presenting it to the owner. Examples identify starting conditions, an action, and the expected observable result.
|
|
46
|
+
|
|
47
|
+
## 0.4.4
|
|
48
|
+
|
|
49
|
+
Expanded Maestro's explanations of findings and escalations with code evidence, concrete examples, available choices, and their consequences. The owner retains control of each decision.
|
|
50
|
+
|
|
51
|
+
## 0.4.3
|
|
52
|
+
|
|
53
|
+
Removed explicit builder and verifier tool allowlists and enabled inherited skills. Workflow boundaries remain defined by agent instructions.
|
|
54
|
+
|
|
55
|
+
## 0.4.2
|
|
56
|
+
|
|
57
|
+
Made breakage checks optional when the approved spec did not require them. Required acceptance probes remained mandatory. Breakage checks were later removed in `0.5.0`. See [PR #23](https://github.com/emilioSp/pi-maestro/pull/23).
|
|
58
|
+
|
|
59
|
+
## 0.4.1
|
|
60
|
+
|
|
61
|
+
Enabled inheritance of global instructions for builder and verifier agents, alongside project context.
|
|
62
|
+
|
|
63
|
+
## 0.4.0
|
|
64
|
+
|
|
65
|
+
1. Fixed delegated handoffs that depended on unavailable parent session memory. See [PR #22](https://github.com/emilioSp/pi-maestro/pull/22).
|
|
66
|
+
2. Removed hash-based spec guards and checkpoint-based verifier comparisons. Spec preservation and restoration rely on agent instructions.
|
|
67
|
+
3. Refreshed the running status before delegation and required repository investigation before presenting technical decisions during spec preparation.
|
|
68
|
+
|
|
69
|
+
## 0.3.0
|
|
70
|
+
|
|
71
|
+
Clarified Maestro, builder, and verifier responsibilities, spec and prototype revisions, permitted experiments, evidence requirements, and cleanup. See [PR #21](https://github.com/emilioSp/pi-maestro/pull/21).
|
|
72
|
+
|
|
73
|
+
## 0.2.0
|
|
74
|
+
|
|
75
|
+
Moved TypeBox to peer dependencies and loosened Pi peer dependency version constraints. Kept `pi-subagents` bundled with the package.
|
|
76
|
+
|
|
77
|
+
## 0.1.2
|
|
78
|
+
|
|
79
|
+
Pinned verifier comparisons to a fixed candidate checkpoint rather than the current HEAD's parent. This checkpoint mechanism was later removed in `0.4.0`. See [PR #20](https://github.com/emilioSp/pi-maestro/pull/20).
|
|
80
|
+
|
|
81
|
+
Breaking: renamed `maestro_launch_builder` and `maestro_launch_verifier` to `maestro_run_builder` and `maestro_run_verifier`. Renamed the corresponding workflow events from `launch-*` to `run-*`.
|
|
82
|
+
|
|
83
|
+
## 0.1.1
|
|
84
|
+
|
|
85
|
+
First tagged baseline with `/maestro`, spec creation and approval, and foreground builder and verifier runs. The owner decides escalation questions and verifier findings. The workflow ends at `candidate-ready`, leaving final review to the owner. See [PR #14](https://github.com/emilioSp/pi-maestro/pull/14) and [PR #13](https://github.com/emilioSp/pi-maestro/pull/13).
|
package/docs/glossary.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Glossary
|
|
2
|
+
|
|
3
|
+
## Terms
|
|
4
|
+
|
|
5
|
+
| Term | Meaning |
|
|
6
|
+
|---|---|
|
|
7
|
+
| Owner | The person who approves the spec, decides questions and findings, and performs the final review. |
|
|
8
|
+
| Maestro | The coordinator that prepares the spec, runs the agents, and records owner decisions. |
|
|
9
|
+
| Builder | The agent that implements the approved spec and runs its probes. |
|
|
10
|
+
| Verifier | The independent agent that checks the implementation and reports technical issues. |
|
|
11
|
+
| Spec | A specification that describes one change and its acceptance criteria. It is saved as `spec.md`. |
|
|
12
|
+
| Contract | The approved spec that defines the required behavior and scope. |
|
|
13
|
+
| Acceptance criterion (AC) | One required, observable result defined in the spec. |
|
|
14
|
+
| Probe | A scenario used to test an acceptance criterion. Reports record the actual command or procedure and its outcome. |
|
|
15
|
+
| Expected result | The observable result that a probe must produce. |
|
|
16
|
+
| Artifact | A saved workflow file, such as a spec, or a handoff between agents. |
|
|
17
|
+
| Handoff | A saved builder or verifier report with results, probe outcomes, and notes. |
|
|
18
|
+
| Run or pass | One execution of the builder or verifier with a fresh conversation. |
|
|
19
|
+
| Candidate | The project files created by agents after a workflow run |
|
|
20
|
+
| Finding | A technical issue that the verifier records for an owner decision. |
|
|
21
|
+
| Escalation | An implementation question that the builder records in its handoff for an owner decision. |
|
|
22
|
+
| `GREEN FLAG` | The owner's explicit reply that approves the current spec and starts the builder. |
|
|
23
|
+
| `fix-code` | An owner decision that requests code fixes without changing the approved spec. |
|
|
24
|
+
| `reject` | An owner decision that declines a finding and records a reason. It does not mean that verification passed. |
|
|
25
|
+
| `candidate-ready` | The completed workflow phase. The verifier reported no findings, or the owner rejected every finding with a reason. Final review remains with the owner. |
|
|
26
|
+
|
|
27
|
+
## Identifiers and file names
|
|
28
|
+
|
|
29
|
+
An ID is an identifier that names one record. These labels refer to records within one spec, not across all workflows.
|
|
30
|
+
|
|
31
|
+
| Label | Meaning | Location or scope |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `<spec-id>` | The identifier shared by the spec and its workflow artifacts. | The directory name under `<project-root>/.specs/` by default. |
|
|
34
|
+
| `B1`, `B2` | Builder handoff 1, builder handoff 2. | `handoffs/builder/B1.json`, `handoffs/builder/B2.json`. |
|
|
35
|
+
| `V1`, `V2` | Verifier handoff 1, verifier handoff 2. | `handoffs/verifier/V1.json`, `handoffs/verifier/V2.json`. |
|
|
36
|
+
| `E1`, `E2` | Escalation 1, escalation 2 within one builder report. | Entries in that report's `escalations` list. |
|
|
37
|
+
| `F1`, `F2` | Finding 1, finding 2 within one verifier report. | Entries in that report's `findings` list. |
|
|
38
|
+
| `AC1`, `AC2` | Acceptance criterion 1, acceptance criterion 2. | Criteria in `spec.md` and the matching `acceptanceCriteria` entries in reports. |
|
|
39
|
+
| `B1/E1` | Escalation 1 in builder handoff 1. | The question with `id: "E1"` inside `handoffs/builder/B1.json`. |
|
|
40
|
+
| `V1/F2` | Finding 2 in verifier handoff 1. | The finding with `id: "F2"` inside `handoffs/verifier/V1.json`. |
|
|
41
|
+
|
|
42
|
+
All paths in this table are relative to the spec directory unless stated otherwise. The [configuration](configuration.md#path-rules) can change the directory that contains specs.
|
|
43
|
+
|
|
44
|
+
The `AC` prefix is the template's naming convention. Criterion IDs must be unique within the spec. Reports use the exact IDs from the spec.
|
|
45
|
+
|
|
46
|
+
Builder and verifier numbers count saved handoffs in separate sequences.
|
|
47
|
+
|
|
48
|
+
## Escalation references
|
|
49
|
+
|
|
50
|
+
Read `B1/E1` as "escalation 1 in builder report 1". `B1` selects `handoffs/builder/B1.json`. `E1` selects the entry with `id: "E1"` in its `escalations` list.
|
|
51
|
+
|
|
52
|
+
Escalation numbers restart at `E1` in each builder report. `B1/E1` and `B2/E1` identify different questions, even if they concern the same topic.
|
|
53
|
+
|
|
54
|
+
The owner discusses every current question with Maestro. Maestro records all answers and reasons together in that same builder report. See [Escalations](workflow.md#escalations) for the available choices and their effects.
|
|
55
|
+
|
|
56
|
+
## Finding references
|
|
57
|
+
|
|
58
|
+
Read `V1/F2` as "finding 2 in verifier report 1". `V1` selects `handoffs/verifier/V1.json`. `F2` selects the entry with `id: "F2"` in its `findings` list.
|
|
59
|
+
|
|
60
|
+
Finding numbers restart at `F1` in each verifier report. `V1/F2` and `V2/F2` identify different records, even if they describe a similar issue.
|
|
61
|
+
|
|
62
|
+
For example, a finding about a saved title can appear in a Maestro message like this:
|
|
63
|
+
|
|
64
|
+
> Verifier report 1, finding 2 (`V1/F2`): the title returns to "Draft" after saving "Ready" and reopening the item.
|
|
65
|
+
> Acceptance criterion 1 (`AC1`) requires the saved title to remain "Ready".
|
|
66
|
+
|
|
67
|
+
In this example, the finding's `acceptanceCriterion: "AC1"` connects the issue to criterion `AC1` in `spec.md`.
|
|
68
|
+
|
|
69
|
+
The owner discusses the issue with Maestro. Maestro records the decision in the same verifier report. See [Findings](workflow.md#findings) for the available choices and their effects.
|
|
@@ -23,7 +23,7 @@ Runs stay in the foreground and occur one at a time. Pi waits for each run to fi
|
|
|
23
23
|
|
|
24
24
|
Maestro's Pi status shows the workflow phase. `pi-subagents` FleetView shows agent activity, and `/subagents-fleet` opens its inspector for details and transcripts.
|
|
25
25
|
|
|
26
|
-
Each child saves its result through Maestro tools before returning.
|
|
26
|
+
Each child saves its result through Maestro tools before returning. Builder results produce `B1.json`, `B2.json`, and so on. Verifier results produce `V1.json`, `V2.json`, and so on. See [Stored artifacts](workflow.md#stored-artifacts) for the creation sequence.
|
|
27
27
|
|
|
28
28
|
If a run fails or returns without a valid saved result, Maestro reports the error and stops. Manual follow-up is described in [Limitations](workflow.md#limitations).
|
|
29
29
|
|
package/docs/workflow.md
CHANGED
|
@@ -4,15 +4,12 @@ Maestro manages one spec-driven workflow in the current Pi session. The owner wo
|
|
|
4
4
|
|
|
5
5
|
The approved `spec.md` is the contract for the change. It defines behavior, scope, constraints, technical decisions, and acceptance criteria.
|
|
6
6
|
|
|
7
|
-
An acceptance criterion contains a probe, an expected result and an example.
|
|
7
|
+
An acceptance criterion contains a probe, an expected result, and an example. A probe is a scenario used to test behavior.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
The handoff can contain:
|
|
11
|
-
- Escalations: the owner have to decide implementation questions.
|
|
12
|
-
- Findings: technical issues on the implementation
|
|
13
|
-
- Evidences: work executed by agents
|
|
9
|
+
A handoff is a saved report from a builder or verifier run. It records the result, probe outcomes, and notes.
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
A builder handoff can contain escalations, which are questions that need owner decisions.
|
|
12
|
+
A verifier handoff can contain findings, which are technical issues.
|
|
16
13
|
|
|
17
14
|
## Roles
|
|
18
15
|
|
|
@@ -50,8 +47,8 @@ flowchart TD
|
|
|
50
47
|
verify --> findings
|
|
51
48
|
findings -->|None| candidate
|
|
52
49
|
|
|
53
|
-
buildOutcome -->|Escalation| ownerEscalation{Owner decides}
|
|
54
|
-
ownerEscalation -->|Contract unchanged| recordEscalation[Maestro records
|
|
50
|
+
buildOutcome -->|Escalation| ownerEscalation{Owner decides every question}
|
|
51
|
+
ownerEscalation -->|Contract unchanged| recordEscalation[Maestro records all answers]
|
|
55
52
|
recordEscalation --> build
|
|
56
53
|
ownerEscalation -->|Contract changes| reviseSpec[Owner and Maestro revise the spec]
|
|
57
54
|
reviseSpec --> approval
|
|
@@ -81,7 +78,7 @@ The default path is `.specs/<spec-id>/workflow.json`. The spec directory is [con
|
|
|
81
78
|
| `drafting-spec` | The owner and Maestro are preparing the initial spec. |
|
|
82
79
|
| `ready-for-builder` | The approved spec or recorded owner decisions permit a builder run. |
|
|
83
80
|
| `builder-running` | A builder run is active. |
|
|
84
|
-
| `escalation-decision` | The owner must decide how to handle
|
|
81
|
+
| `escalation-decision` | The owner must decide how to handle every escalation question. |
|
|
85
82
|
| `builder-failed` | The builder recorded a technical failure. The workflow stops. |
|
|
86
83
|
| `ready-for-verifier` | The builder completed the work and the verifier can start. |
|
|
87
84
|
| `verifier-running` | A verifier run is active. |
|
|
@@ -101,7 +98,9 @@ Approval freezes the spec as the contract. The spec and its visual prototypes re
|
|
|
101
98
|
|
|
102
99
|
## Acceptance criteria
|
|
103
100
|
|
|
104
|
-
Each acceptance criterion has a unique ID and describes one observable result.
|
|
101
|
+
Each acceptance criterion has a unique ID and describes one observable result.
|
|
102
|
+
|
|
103
|
+
Each criterion contains these parts:
|
|
105
104
|
|
|
106
105
|
| Part | Content |
|
|
107
106
|
|---|---|
|
|
@@ -113,19 +112,27 @@ Each acceptance criterion has a unique ID and describes one observable result. I
|
|
|
113
112
|
|
|
114
113
|
An escalation returns an implementation decision to the owner. It does not necessarily mean that a technical failure occurred. Examples include undefined behavior, a conflict with the spec, or a possible scope change.
|
|
115
114
|
|
|
116
|
-
|
|
115
|
+
The builder saves all questions from one pass in the `escalations` list of its numbered handoff. Maestro identifies each question with both report and escalation IDs, such as `B1/E1`. See [Escalation references](glossary.md#escalation-references) for their scope.
|
|
116
|
+
|
|
117
|
+
Maestro presents each question, evidence, options, consequences, and next steps. The workflow pauses in `escalation-decision` while the owner decides how to proceed.
|
|
118
|
+
|
|
119
|
+
If the contract stays unchanged, the owner gives Maestro an answer and reason for every current question. The owner can select a listed option or give a different decision.
|
|
117
120
|
|
|
118
121
|
| Owner choice | Result |
|
|
119
122
|
|---|---|
|
|
120
|
-
| Keep the current contract | Maestro
|
|
123
|
+
| Keep the current contract | Maestro saves all answers and reasons together in the active builder handoff, returns to `ready-for-builder`, and starts another builder run. |
|
|
121
124
|
| Change the contract | The owner and Maestro revise the same spec and obtain renewed approval before another builder run. |
|
|
122
125
|
|
|
123
|
-
The
|
|
126
|
+
Owner decisions update only the questions' `resolution` fields. The handoff's other content and earlier handoffs remain unchanged.
|
|
124
127
|
|
|
125
128
|
## Findings
|
|
126
129
|
|
|
127
130
|
Every current finding requires an owner decision, regardless of severity. Maestro explains the issue, evidence, practical effect, and available choices.
|
|
128
131
|
|
|
132
|
+
Maestro identifies each finding with its report and finding IDs. For example, `V1/F2` means finding 2 in verifier report `V1.json`. The finding is an entry in that file's `findings` list, not a separate `F2.json` file. Finding numbers restart at `F1` in each verifier report. See [Finding references](glossary.md#finding-references) for a worked example.
|
|
133
|
+
|
|
134
|
+
Maestro records owner decisions in the same verifier report, e.g. decisions about `V1/F2` update `V1.json`, not a new `V2.json`. A new verifier result creates the next report (`V2.json`).
|
|
135
|
+
|
|
129
136
|
| Decision | Result |
|
|
130
137
|
|---|---|
|
|
131
138
|
| `reject` | Records the owner's reason. If every finding is rejected, the workflow reaches `candidate-ready`. |
|
|
@@ -141,7 +148,7 @@ Contract revisions are allowed only in `escalation-decision` or `findings-decisi
|
|
|
141
148
|
|
|
142
149
|
After review and cleanup, Maestro asks the owner to inspect the revised spec and reply `GREEN FLAG` again. Maestro then records `ready-for-builder` and starts another builder run.
|
|
143
150
|
|
|
144
|
-
Previous escalations, findings, and handoffs remain as historical context. The revised spec is the contract for subsequent work.
|
|
151
|
+
Previous escalations, findings, and handoffs remain as historical context. The new (revised) spec is the contract for subsequent work.
|
|
145
152
|
|
|
146
153
|
## Verification boundary
|
|
147
154
|
|
|
@@ -157,7 +164,27 @@ The owner performs the final review and controls any later Git use, pull request
|
|
|
157
164
|
|
|
158
165
|
## Stored artifacts
|
|
159
166
|
|
|
160
|
-
Maestro creates the spec directory with `spec.md`, `workflow.json`, and empty `
|
|
167
|
+
An artifact is a saved workflow file. Maestro creates the spec directory with `spec.md`, `workflow.json`, and an empty `prototypes/` directory. Builder and verifier handoff directories appear when those results are saved.
|
|
168
|
+
|
|
169
|
+
The agents submit results through Maestro tools instead of writing the reports directly. A successful submission saves the result and updates the phase in `workflow.json` before the agent returns.
|
|
170
|
+
|
|
171
|
+
Builder (`B`) and verifier (`V`) numbers count saved handoffs within one spec. Each sequence starts at 1 and advances independently. Every saved builder outcome, including escalation, creates the next `B` report. Revising the same spec keeps these sequences. A new spec starts new sequences.
|
|
172
|
+
|
|
173
|
+
Escalation (`E`) numbers identify questions within a builder handoff. They restart at `E1` in each handoff.
|
|
174
|
+
|
|
175
|
+
For example, a repair cycle with successful builder results produces these files:
|
|
176
|
+
|
|
177
|
+
| Step | Action | Report saved or updated |
|
|
178
|
+
|---|---|---|
|
|
179
|
+
| 1 | The builder completes the implementation. | Creates `handoffs/builder/B1.json`. |
|
|
180
|
+
| 2 | The verifier checks it and reports findings. | Creates `handoffs/verifier/V1.json`. |
|
|
181
|
+
| 3 | The owner decides every finding and requests a code fix. | Updates decisions in the existing `V1.json`. |
|
|
182
|
+
| 4 | A new builder run completes the fixes. | Creates `handoffs/builder/B2.json`. |
|
|
183
|
+
| 5 | A new verifier run checks the work again and reports no findings. | Creates `handoffs/verifier/V2.json`. The workflow reaches `candidate-ready`. |
|
|
184
|
+
|
|
185
|
+
If the first builder run escalates, it creates `B1.json` with its questions. Owner answers update `B1.json`. The next saved builder result creates `B2.json`.
|
|
186
|
+
|
|
187
|
+
A builder report with `status: failed` stops the workflow without a verifier run. If an agent returns without a valid saved result, Maestro stops and reports the error. See [Limitations](#limitations).
|
|
161
188
|
|
|
162
189
|
The default layout after multiple runs is:
|
|
163
190
|
|
|
@@ -169,19 +196,24 @@ The default layout after multiple runs is:
|
|
|
169
196
|
│ ├── builder/
|
|
170
197
|
│ │ ├── B1.json
|
|
171
198
|
│ │ └── B2.json
|
|
172
|
-
│
|
|
173
|
-
│
|
|
174
|
-
│
|
|
175
|
-
│ └── escalations/
|
|
176
|
-
│ ├── E1.json
|
|
177
|
-
│ └── ...
|
|
199
|
+
│ └── verifier/
|
|
200
|
+
│ ├── V1.json
|
|
201
|
+
│ └── V2.json
|
|
178
202
|
└── prototypes/
|
|
179
203
|
```
|
|
180
204
|
|
|
181
|
-
|
|
205
|
+
Maestro uses the latest saved handoff in each role's sequence as the active result. New results do not replace earlier numbered reports. Earlier reports remain available as context, not as proof for the current run. Owner decisions update the active builder or verifier handoff without creating another numbered report.
|
|
182
206
|
|
|
183
207
|
## Limitations
|
|
184
208
|
|
|
209
|
+
### No small models
|
|
210
|
+
The owner must not use small models with a `low` thinking level for this workflow. These combinations cannot reliably follow the workflow rules.
|
|
211
|
+
One example is `gpt-luna-6` with `thinking: "low"`.
|
|
212
|
+
|
|
213
|
+
Moreover, the workflow works well with a defined harness: tests, lint for code rules, anti-slop checks for unwanted patterns, and `AGENTS.md`. Maestro does not supply these project-specific checks.
|
|
214
|
+
|
|
215
|
+
### No automatic rollback
|
|
185
216
|
Maestro provides no automatic rollback, repair, or recovery for failed or interrupted workflows. The files that remain are available for owner inspection. The owner handles the workflow manually.
|
|
186
217
|
|
|
218
|
+
### No reconciliation
|
|
187
219
|
Disabling Maestro, restarting Pi, or using `/resume` clears live Maestro session state and leaves project files unchanged. Maestro starts disabled in a new or resumed session. Reactivating it does not reconstruct or resume a saved workflow.
|
|
@@ -4,12 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
|
|
7
|
-
import { registerOpenEscalationTool } from '#tools/child/open-escalation.ts';
|
|
8
7
|
import { registerRecordBuilderHandoffTool } from '#tools/child/record-builder-handoff.ts';
|
|
9
8
|
import { registerRecordVerifierHandoffTool } from '#tools/child/record-verifier-handoff.ts';
|
|
10
9
|
|
|
11
10
|
export default (pi: ExtensionAPI): void => {
|
|
12
|
-
registerOpenEscalationTool(pi);
|
|
13
11
|
registerRecordBuilderHandoffTool(pi);
|
|
14
12
|
registerRecordVerifierHandoffTool(pi);
|
|
15
13
|
};
|
package/extensions/maestro.ts
CHANGED
|
@@ -18,9 +18,9 @@ import {
|
|
|
18
18
|
registerMarkSpecReadyTool,
|
|
19
19
|
} from '#tools/main/mark-spec-ready.ts';
|
|
20
20
|
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
} from '#tools/main/resolve-
|
|
21
|
+
RESOLVE_ESCALATIONS_TOOL,
|
|
22
|
+
registerResolveEscalationsTool,
|
|
23
|
+
} from '#tools/main/resolve-escalations.ts';
|
|
24
24
|
import {
|
|
25
25
|
RESOLVE_FINDINGS_TOOL,
|
|
26
26
|
registerResolveFindingsTool,
|
|
@@ -38,7 +38,7 @@ const MAIN_TOOL_NAMES: readonly string[] = [
|
|
|
38
38
|
CREATE_SPEC_TOOL.NAME,
|
|
39
39
|
MARK_SPEC_READY_TOOL.NAME,
|
|
40
40
|
RUN_BUILDER_TOOL.NAME,
|
|
41
|
-
|
|
41
|
+
RESOLVE_ESCALATIONS_TOOL.NAME,
|
|
42
42
|
RUN_VERIFIER_TOOL.NAME,
|
|
43
43
|
RESOLVE_FINDINGS_TOOL.NAME,
|
|
44
44
|
];
|
|
@@ -47,7 +47,7 @@ export default (pi: ExtensionAPI): void => {
|
|
|
47
47
|
registerCreateSpecTool(pi);
|
|
48
48
|
registerMarkSpecReadyTool(pi);
|
|
49
49
|
registerRunBuilderTool(pi);
|
|
50
|
-
|
|
50
|
+
registerResolveEscalationsTool(pi);
|
|
51
51
|
registerRunVerifierTool(pi);
|
|
52
52
|
registerResolveFindingsTool(pi);
|
|
53
53
|
|
package/mission.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Mission
|
|
2
|
+
|
|
3
|
+
Maestro uses spec-driven development to improve quality when coding with agents. It guides the owner to define requirements and think through a feature before writing code.
|
|
4
|
+
It provides a clear path from an approved spec to verified code and manages agent coordination for the owner.
|
|
5
|
+
|
|
6
|
+
The owner remains responsible for final code review, pull requests, and merging. The owner also provides and maintains the project's development checks and instructions, including linters, tests, anti-slop checks, and `AGENTS.md`.
|
|
7
|
+
Maestro and its agents use these checks and instructions.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emiliosp/pi-maestro",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "A spec-driven multiagent development workflow for Pi.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -33,6 +33,10 @@
|
|
|
33
33
|
"src/",
|
|
34
34
|
"!**/*.test.ts",
|
|
35
35
|
"docs/",
|
|
36
|
+
"mission.md",
|
|
37
|
+
"tech-stack.md",
|
|
38
|
+
"roadmap.md",
|
|
39
|
+
"changelog.md",
|
|
36
40
|
"README.md",
|
|
37
41
|
"LICENSE"
|
|
38
42
|
],
|
|
@@ -50,9 +54,7 @@
|
|
|
50
54
|
},
|
|
51
55
|
"scripts": {
|
|
52
56
|
"typecheck": "tsc --noEmit",
|
|
53
|
-
"test": "
|
|
54
|
-
"test:unit": "vitest run --exclude \"**/*.integration.test.ts\"",
|
|
55
|
-
"test:integration": "vitest run --exclude \"**/*.unit.test.ts\"",
|
|
57
|
+
"test": "vitest run --coverage --config vitest.config.ts",
|
|
56
58
|
"check": "npm run lint:fix && npm run typecheck && npm test",
|
|
57
59
|
"prepublishOnly": "npm run check",
|
|
58
60
|
"publish:npm": "npm publish --access public",
|
|
@@ -75,6 +77,7 @@
|
|
|
75
77
|
"@biomejs/biome": "2.5.15",
|
|
76
78
|
"@earendil-works/pi-agent-core": "1.0.3",
|
|
77
79
|
"@earendil-works/pi-tui": "1.0.3",
|
|
80
|
+
"@vitest/coverage-v8": "5.0.3",
|
|
78
81
|
"@types/node": "26.6.4",
|
|
79
82
|
"oxlint": "1.87.0",
|
|
80
83
|
"oxlint-anti-slop": "0.3.3",
|
package/roadmap.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Roadmap
|
|
2
|
+
|
|
3
|
+
This roadmap records planned outcomes, not permission to implement them. The owner selects work and approves its specification before implementation starts. Detailed requirements, technical decisions, and acceptance criteria belong in that specification.
|
|
4
|
+
|
|
5
|
+
"Now" is the current priority. "Next" follows it. “Later” contains uncommitted ideas with no promised order or date.
|
|
6
|
+
|
|
7
|
+
Item identifiers remain stable when priorities change. The owner approves changes to priorities and scope.
|
|
8
|
+
|
|
9
|
+
## Completed
|
|
10
|
+
|
|
11
|
+
### R-01: Improve status presentation and activation feedback
|
|
12
|
+
|
|
13
|
+
The status bar uses phase icons, theme colors, and shortened spec IDs. Successful activation shows the configured builder and verifier settings without adding the notice to session history or model context. All 12 acceptance criteria passed with no verifier findings; the saved workflow reached `candidate-ready`.
|
|
14
|
+
|
|
15
|
+
Evidence: [Specification](.specs/20261007-170438-update-maestro-status-bar-with-agent-models-theme-colors-and-phase-icons/spec.md), [verifier report](.specs/20261007-170438-update-maestro-status-bar-with-agent-models-theme-colors-and-phase-icons/handoffs/verifier/V1.json), and [merged PR #26](https://github.com/emilioSp/pi-maestro/pull/26).
|
|
16
|
+
|
|
17
|
+
### R-02: Store escalations and owner decisions in builder handoffs
|
|
18
|
+
|
|
19
|
+
Numbered builder handoffs contain multiple escalation questions and their owner resolutions. The owner resolves all current questions in one batch, while earlier handoffs remain available as history. All 10 acceptance criteria passed with no verifier findings; the saved workflow reached `candidate-ready`.
|
|
20
|
+
|
|
21
|
+
Evidence: [Specification](.specs/20261008-132344-store-escalations-in-builder-handoffs/spec.md), [verifier report](.specs/20261008-132344-store-escalations-in-builder-handoffs/handoffs/verifier/V1.json), and [merged PR #27](https://github.com/emilioSp/pi-maestro/pull/27).
|
|
22
|
+
|
|
23
|
+
## Now
|
|
24
|
+
|
|
25
|
+
### R-03: Route builder failures through owner escalations
|
|
26
|
+
|
|
27
|
+
A technical builder failure currently ends the workflow in `builder-failed`. Replace the builder's `failed` handoff status and the `builder-failed` workflow phase with an escalation. The owner decides how to proceed through the existing escalation process.
|
|
28
|
+
|
|
29
|
+
Complete when builder failures produce owner escalations instead of a terminal failure state. Individual checks retain `failed` as a valid result. Agent instructions, tools, workflow transitions, tests, and documentation must describe the same behavior.
|
|
30
|
+
|
|
31
|
+
Automatic recovery of interrupted runs is outside this item. No specification is approved yet.
|
|
32
|
+
|
|
33
|
+
## Next
|
|
34
|
+
|
|
35
|
+
### R-04: Rename the npm package
|
|
36
|
+
|
|
37
|
+
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 workflow.
|
|
38
|
+
|
|
39
|
+
Complete when package metadata and installation documentation use the new name and the package is available under it. Compatibility with installations under the old name must be decided in the specification. No specification is approved yet.
|
|
40
|
+
|
|
41
|
+
## Later
|
|
42
|
+
|
|
43
|
+
These items need scope review before specification approval. Existing behavior must be checked before adding new code. Dependencies between these items are not yet agreed.
|
|
44
|
+
|
|
45
|
+
### R-05: Keep acceptance criterion numbering continuous
|
|
46
|
+
|
|
47
|
+
When criteria are removed during spec preparation or revision, renumber the remaining criteria without gaps. Numbering starts at `AC1` and continues through the final criterion. Complete when the spec and its current references use consistent numbering.
|
|
48
|
+
|
|
49
|
+
### R-06: Check subagent extensions at activation
|
|
50
|
+
|
|
51
|
+
Make extension availability problems visible before a builder or verifier run starts. Activation already checks agent launch contracts, so first identify any missing extension checks. Complete when unavailable required subagent extensions prevent activation and the error identifies the problem.
|
|
52
|
+
|
|
53
|
+
### R-07: Guide initial configuration
|
|
54
|
+
|
|
55
|
+
Help the owner create Maestro configuration through an interview. Maestro asks questions and writes the agreed configuration. Complete when the owner can create a valid project configuration without writing the file manually.
|
|
56
|
+
|
|
57
|
+
### R-08: Change agent models before a builder run
|
|
58
|
+
|
|
59
|
+
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. Complete when the owner can select available models in those phases and Maestro uses the selections.
|
|
60
|
+
|
|
61
|
+
### R-09: Define workflow reconciliation
|
|
62
|
+
|
|
63
|
+
Explore how Maestro can reconcile saved artifacts and workflow state. The recovery scope is not yet defined. The owner must define the intended outcome, recovery boundaries, and completion condition before this item can move forward.
|
|
64
|
+
|
|
65
|
+
### R-10: Match handoff criteria to the approved spec
|
|
66
|
+
|
|
67
|
+
Prevent builder and verifier reports from omitting or adding acceptance criteria. Each report must contain exactly the criterion IDs in the approved spec, with no duplicates in either place. Existing duplicate checks in reports do not establish this match.
|
|
68
|
+
|
|
69
|
+
Complete when both handoff submissions reject missing, extra, or duplicate criterion IDs before saving a report or changing phase. The specification must define the criterion heading format used to extract IDs. For example, a heading can use `### AC1: ...`.
|
|
70
|
+
|
|
71
|
+
### R-11: Reduce temporary verifier changes
|
|
72
|
+
|
|
73
|
+
Reduce the risk that verification changes the candidate. Existing instructions already require exact restoration, cleanup, and reporting of unresolved restoration problems. Refine the remaining guidance rather than duplicate those rules.
|
|
74
|
+
|
|
75
|
+
Prefer checks that leave existing files unchanged and use separate temporary files when possible. Change an existing file only when a criterion requires it, retain its exact contents, and restore it immediately after each probe, including failed probes. Prefer check-only commands over commands that apply automatic fixes.
|
|
76
|
+
|
|
77
|
+
Complete when verifier instructions cover these limits and require restoration and temporary-file cleanup before handoff. If restoration fails, the verifier must stop and report affected paths and remaining changes. Maestro currently has no file-hash restoration check; adding one requires a separate scope decision.
|
|
78
|
+
|
|
79
|
+
### R-12: Format glossary terms consistently
|
|
80
|
+
|
|
81
|
+
Use inline code formatting for glossary terms throughout the documentation. This lets the owner recognize the same term across documents. Complete when occurrences of glossary terms consistently use formatting such as `candidate-ready`.
|
|
82
|
+
|
|
83
|
+
### R-13: Show when Maestro is working
|
|
84
|
+
|
|
85
|
+
Show an activity indicator in Pi's status bar while progress does not require an owner decision. A spinner is one option, not an agreed implementation. Complete when the status clearly distinguishes work in progress from a request for owner action.
|