@polymorphism-tech/morph-spec 7.4.0 → 7.5.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/README.md +2 -2
- package/bin/morph-spec.js +18 -0
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/CLAUDE.md +9 -4
- package/framework/MORPH.md +4 -4
- package/framework/commands/create-umbraco-lp.md +35 -0
- package/framework/commands/migrate-lp-to-umbraco.md +33 -0
- package/framework/commands/morph-archive.md +17 -27
- package/framework/hooks/claude-code/core/enforce-phase-writes.js +115 -90
- package/framework/hooks/claude-code/core/protect-spec-files.js +32 -30
- package/framework/hooks/claude-code/core/state-sync.js +16 -48
- package/framework/hooks/shared/state-reader.js +74 -8
- package/framework/hooks/shared/state-writer.js +124 -0
- package/framework/rules/morph-task-tracking.md +69 -49
- package/framework/rules/morph-workflow.md +192 -191
- package/framework/skills/core/create-umbraco-lp/SKILL.md +252 -0
- package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +452 -0
- package/framework/skills/core/morph-apply/SKILL.md +15 -15
- package/framework/skills/core/morph-brainstorming/SKILL.md +5 -5
- package/framework/skills/core/morph-eval/SKILL.md +1 -1
- package/framework/skills/core/morph-implement/SKILL.md +5 -4
- package/framework/skills/core/morph-plan/SKILL.md +6 -6
- package/framework/skills/core/morph-proposal/SKILL.md +8 -7
- package/framework/skills/core/morph-review/SKILL.md +3 -3
- package/framework/skills/core/morph-stack-scan/SKILL.md +1 -1
- package/framework/skills/core/morph-standards/SKILL.md +1 -1
- package/framework/templates/REGISTRY.json +1 -3
- package/framework/templates/context/CONTEXT-FEATURE.md +10 -17
- package/framework/templates/context/CONTEXT.md +181 -180
- package/framework/templates/docs/onboarding.md +122 -118
- package/framework/templates/docs/proposal.md +10 -0
- package/framework/templates/docs/spec.md +228 -228
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -80
- package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +90 -89
- package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +2 -1
- package/framework/templates/meta-prompts/squad-leaders/squad-leader.md +44 -43
- package/framework/templates/meta-prompts/validators/checkpoint-validator.md +107 -107
- package/package.json +1 -1
- package/src/commands/project/update.js +415 -368
- package/src/commands/project/worktree.js +212 -210
- package/src/commands/state/advance.js +82 -0
- package/src/commands/state/archive.js +111 -0
- package/src/commands/validation/validate-feature.js +229 -105
- package/src/core/state/state-manager.js +238 -66
- package/src/dashboard/scanner/state-scanner.js +35 -8
- package/src/lib/generators/context-generator.js +12 -8
- package/src/utils/file-copier.js +7 -0
|
@@ -1,228 +1,228 @@
|
|
|
1
|
-
# Feature Specification: {{titleCase FEATURE_NAME}}
|
|
2
|
-
|
|
3
|
-
| Field | Value |
|
|
4
|
-
|-------|-------|
|
|
5
|
-
| **ID** | {{FEATURE_NAME}} |
|
|
6
|
-
| **Status** | Draft / In Review / Approved / In Progress / Done |
|
|
7
|
-
| **Created** | {{DATE}} |
|
|
8
|
-
| **Stack** | {{STACK}} |
|
|
9
|
-
| **Complexity** | Low / Medium / High |
|
|
10
|
-
| **Estimated Cost** | $X/month |
|
|
11
|
-
| **Agents** | Core: All / Specialists: {list} |
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Overview
|
|
16
|
-
|
|
17
|
-
**Problem:** {What problem this feature solves}
|
|
18
|
-
|
|
19
|
-
**Solution:** {High-level solution}
|
|
20
|
-
|
|
21
|
-
**Success Criteria:**
|
|
22
|
-
- [ ] {Criterion 1}
|
|
23
|
-
- [ ] {Criterion 2}
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Requirements
|
|
28
|
-
|
|
29
|
-
**Functional:** FR1: {desc} | FR2: {desc} | FR3: {desc}
|
|
30
|
-
|
|
31
|
-
**Non-Functional:** NFR1: Performance - {target} | NFR2: Reliability - {target}
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## User Stories
|
|
36
|
-
|
|
37
|
-
### US001: {Title}
|
|
38
|
-
**As** {user type} **I want** {feature} **so that** {benefit}
|
|
39
|
-
|
|
40
|
-
**Acceptance Criteria:** 1. {criterion} 2. {criterion}
|
|
41
|
-
|
|
42
|
-
**Edge Cases:** {edge case}: {handling}
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## Technical
|
|
47
|
-
|
|
48
|
-
### Stack
|
|
49
|
-
| Component | Technology |
|
|
50
|
-
|-----------|------------|
|
|
51
|
-
| Frontend | {Next.js / .NET 10} |
|
|
52
|
-
| Backend | .NET 10 / C# 14 |
|
|
53
|
-
| Database | {Azure SQL / Cosmos DB} |
|
|
54
|
-
|
|
55
|
-
### Data Model
|
|
56
|
-
|
|
57
|
-
#### {EntityName}
|
|
58
|
-
| Column | Type | Constraints |
|
|
59
|
-
|--------|------|-------------|
|
|
60
|
-
| Id | Guid | PK |
|
|
61
|
-
| {Property} | {Type} | {Constraints} |
|
|
62
|
-
| CreatedAt | datetime2 | Default: GETUTCDATE() |
|
|
63
|
-
|
|
64
|
-
### Contracts
|
|
65
|
-
|
|
66
|
-
```csharp
|
|
67
|
-
public interface I{{pascalCase FEATURE_NAME}}Service
|
|
68
|
-
{
|
|
69
|
-
Task<{{pascalCase FEATURE_NAME}}Dto> GetByIdAsync(int id);
|
|
70
|
-
Task<{{pascalCase FEATURE_NAME}}Dto> CreateAsync(Create{{pascalCase FEATURE_NAME}}Request request);
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
**Contracts Workflow:** Generate `contracts.cs` FIRST → validate names → reference in spec → approve with user.
|
|
75
|
-
|
|
76
|
-
**Validation Checklist:**
|
|
77
|
-
- [ ] Property names are descriptive (not generic "Data", "Value")
|
|
78
|
-
- [ ] Records use correct types (Stream vs byte[], Guid vs string)
|
|
79
|
-
- [ ] Response DTOs have all properties needed for UI
|
|
80
|
-
- [ ] Request DTOs have implicit validations (required, nullable)
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Domain Complexity
|
|
85
|
-
|
|
86
|
-
**Nível:** {1 — CRUD / 2 — Business Logic / 3 — Bounded Context}
|
|
87
|
-
|
|
88
|
-
**Justificativa:** {Por que este nível foi escolhido — mencionar invariants, eventos ou BCs se Nível 2+}
|
|
89
|
-
|
|
90
|
-
**Padrões Aplicados:**
|
|
91
|
-
- {Nível 1: Entity simples, Service CRUD, DTOs}
|
|
92
|
-
- {Nível 2: AggregateRoot, Value Objects, Domain Events, CQRS}
|
|
93
|
-
- {Nível 3: Bounded Context isolation, cross-BC events, Linguagem Ubíqua}
|
|
94
|
-
|
|
95
|
-
**Padrões Omitidos:**
|
|
96
|
-
- {ex: Bounded Contexts — sistema single-domain}
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## Architecture Style: Vertical Slice
|
|
101
|
-
|
|
102
|
-
> Preencher SOMENTE se `config.architecture.style === "vertical-slice"`. Omitir em projetos DDD.
|
|
103
|
-
|
|
104
|
-
**Architecture Style:** Vertical Slice Architecture (VSA)
|
|
105
|
-
|
|
106
|
-
**Entity Fields:**
|
|
107
|
-
| Field | Type | Constraints |
|
|
108
|
-
|-------|------|-------------|
|
|
109
|
-
| Id | Guid | PK, `Guid.CreateVersion7()` |
|
|
110
|
-
| {Field} | {C# Type} | {Required / Optional / Unique} |
|
|
111
|
-
| CreatedAt | DateTimeOffset | Auto |
|
|
112
|
-
|
|
113
|
-
**Operations:**
|
|
114
|
-
| Slice | HTTP | Route | Has Validator |
|
|
115
|
-
|-------|------|-------|---------------|
|
|
116
|
-
| Create{Entity} | POST | {ROUTE} | Yes |
|
|
117
|
-
| GetAll{Entity}s | GET | {ROUTE} | No |
|
|
118
|
-
| Get{Entity}ById | GET | {ROUTE}/{id} | Yes |
|
|
119
|
-
| Update{Entity} | PUT | {ROUTE}/{id} | Yes |
|
|
120
|
-
| Delete{Entity} | DELETE | {ROUTE}/{id} | Yes |
|
|
121
|
-
|
|
122
|
-
**Error Types ({Entity}Errors):**
|
|
123
|
-
- `{Entity}Errors.{ErrorName}()` — {description}
|
|
124
|
-
|
|
125
|
-
**Validation Rules:**
|
|
126
|
-
| Field | Rules |
|
|
127
|
-
|-------|-------|
|
|
128
|
-
| {Field} | NotEmpty(), MaxLength({N}), {etc.} |
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Aggregate Blueprint (Nível 2+ apenas)
|
|
133
|
-
|
|
134
|
-
> Omitir esta seção se Nível 1 (CRUD) ou se Architecture Style = Vertical Slice.
|
|
135
|
-
|
|
136
|
-
### Aggregate Root: {EntityName}
|
|
137
|
-
|
|
138
|
-
**Invariants:**
|
|
139
|
-
- {Invariant 1 em linguagem natural}
|
|
140
|
-
- {Invariant 2}
|
|
141
|
-
|
|
142
|
-
**Estados e Transições:**
|
|
143
|
-
```
|
|
144
|
-
{Status.Draft} → Confirm() → {Status.Confirmed} → Cancel() → {Status.Cancelled}
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
**Domain Events:**
|
|
148
|
-
- `{EntityName}CreatedEvent` — publicado ao criar
|
|
149
|
-
- `{EntityName}StatusChangedEvent` — publicado em mudança de estado
|
|
150
|
-
|
|
151
|
-
**Value Objects:**
|
|
152
|
-
- `{ValueObjectName}` — {por que não é primitivo simples}
|
|
153
|
-
|
|
154
|
-
**Referências Cross-Aggregate (por ID):**
|
|
155
|
-
- `{OtherEntity}Id: Guid`
|
|
156
|
-
|
|
157
|
-
### Linguagem Ubíqua
|
|
158
|
-
|
|
159
|
-
| Termo | Definição | Código |
|
|
160
|
-
|-------|-----------|--------|
|
|
161
|
-
| {Termo} | {Definição do negócio} | `{ClassName.MethodName()}` |
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## UI/UX Design (if front-end)
|
|
166
|
-
|
|
167
|
-
### Wireframes
|
|
168
|
-
```
|
|
169
|
-
{ASCII wireframe per screen - include states: loading, error, empty}
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### User Flow
|
|
173
|
-
1. {Step} → {System response}
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Flows
|
|
178
|
-
|
|
179
|
-
### {Flow Name}
|
|
180
|
-
**Trigger:** {what starts this flow}
|
|
181
|
-
1. {Actor} {action} → {system response}
|
|
182
|
-
2. If {condition}: Path A / Else: Path B
|
|
183
|
-
**End State:** {final state}
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## Cost Estimate
|
|
188
|
-
|
|
189
|
-
| Resource | SKU | Monthly Cost | Justification |
|
|
190
|
-
|----------|-----|--------------|---------------|
|
|
191
|
-
| {Resource} | {SKU} | ${X} | {Why} |
|
|
192
|
-
| **Total** | | **${X}/month** | |
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## ADRs (Architectural Decision Records)
|
|
197
|
-
|
|
198
|
-
### ADR-001: {Decision Title}
|
|
199
|
-
**Status:** Proposed / Accepted
|
|
200
|
-
**Context:** {Why decide now}
|
|
201
|
-
**Decision:** {What we chose}
|
|
202
|
-
**Alternatives:** 1. {Alt} (pros/cons) 2. {Alt} (pros/cons)
|
|
203
|
-
**Trade-offs:** {key trade-offs}
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
## Security
|
|
208
|
-
|
|
209
|
-
| Action | Required Policy |
|
|
210
|
-
|--------|-----------------|
|
|
211
|
-
| View | CanView{Feature} |
|
|
212
|
-
| Create | CanManage{Feature} |
|
|
213
|
-
|
|
214
|
-
## Risks
|
|
215
|
-
|
|
216
|
-
| Risk | Impact | Mitigation |
|
|
217
|
-
|------|--------|------------|
|
|
218
|
-
| {Risk} | {H/M/L} | {Mitigation} |
|
|
219
|
-
|
|
220
|
-
## Out of Scope
|
|
221
|
-
- {Item}
|
|
222
|
-
|
|
223
|
-
## Definition of Done
|
|
224
|
-
- [ ] Code implemented
|
|
225
|
-
- [ ] Tests >80% coverage
|
|
226
|
-
- [ ] Code review approved
|
|
227
|
-
- [ ] Deploy to staging
|
|
228
|
-
- [ ] Recap.md generated
|
|
1
|
+
# Feature Specification: {{titleCase FEATURE_NAME}}
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| **ID** | {{FEATURE_NAME}} |
|
|
6
|
+
| **Status** | Draft / In Review / Approved / In Progress / Done |
|
|
7
|
+
| **Created** | {{DATE}} |
|
|
8
|
+
| **Stack** | {{STACK}} |
|
|
9
|
+
| **Complexity** | Low / Medium / High |
|
|
10
|
+
| **Estimated Cost** | $X/month |
|
|
11
|
+
| **Agents** | Core: All / Specialists: {list} |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
**Problem:** {What problem this feature solves}
|
|
18
|
+
|
|
19
|
+
**Solution:** {High-level solution}
|
|
20
|
+
|
|
21
|
+
**Success Criteria:**
|
|
22
|
+
- [ ] {Criterion 1}
|
|
23
|
+
- [ ] {Criterion 2}
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Requirements
|
|
28
|
+
|
|
29
|
+
**Functional:** FR1: {desc} | FR2: {desc} | FR3: {desc}
|
|
30
|
+
|
|
31
|
+
**Non-Functional:** NFR1: Performance - {target} | NFR2: Reliability - {target}
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## User Stories
|
|
36
|
+
|
|
37
|
+
### US001: {Title}
|
|
38
|
+
**As** {user type} **I want** {feature} **so that** {benefit}
|
|
39
|
+
|
|
40
|
+
**Acceptance Criteria:** 1. {criterion} 2. {criterion}
|
|
41
|
+
|
|
42
|
+
**Edge Cases:** {edge case}: {handling}
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Technical Architecture
|
|
47
|
+
|
|
48
|
+
### Stack
|
|
49
|
+
| Component | Technology |
|
|
50
|
+
|-----------|------------|
|
|
51
|
+
| Frontend | {Next.js / .NET 10} |
|
|
52
|
+
| Backend | .NET 10 / C# 14 |
|
|
53
|
+
| Database | {Azure SQL / Cosmos DB} |
|
|
54
|
+
|
|
55
|
+
### Data Model
|
|
56
|
+
|
|
57
|
+
#### {EntityName}
|
|
58
|
+
| Column | Type | Constraints |
|
|
59
|
+
|--------|------|-------------|
|
|
60
|
+
| Id | Guid | PK |
|
|
61
|
+
| {Property} | {Type} | {Constraints} |
|
|
62
|
+
| CreatedAt | datetime2 | Default: GETUTCDATE() |
|
|
63
|
+
|
|
64
|
+
### Contracts
|
|
65
|
+
|
|
66
|
+
```csharp
|
|
67
|
+
public interface I{{pascalCase FEATURE_NAME}}Service
|
|
68
|
+
{
|
|
69
|
+
Task<{{pascalCase FEATURE_NAME}}Dto> GetByIdAsync(int id);
|
|
70
|
+
Task<{{pascalCase FEATURE_NAME}}Dto> CreateAsync(Create{{pascalCase FEATURE_NAME}}Request request);
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Contracts Workflow:** Generate `contracts.cs` FIRST → validate names → reference in spec → approve with user.
|
|
75
|
+
|
|
76
|
+
**Validation Checklist:**
|
|
77
|
+
- [ ] Property names are descriptive (not generic "Data", "Value")
|
|
78
|
+
- [ ] Records use correct types (Stream vs byte[], Guid vs string)
|
|
79
|
+
- [ ] Response DTOs have all properties needed for UI
|
|
80
|
+
- [ ] Request DTOs have implicit validations (required, nullable)
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Domain Complexity
|
|
85
|
+
|
|
86
|
+
**Nível:** {1 — CRUD / 2 — Business Logic / 3 — Bounded Context}
|
|
87
|
+
|
|
88
|
+
**Justificativa:** {Por que este nível foi escolhido — mencionar invariants, eventos ou BCs se Nível 2+}
|
|
89
|
+
|
|
90
|
+
**Padrões Aplicados:**
|
|
91
|
+
- {Nível 1: Entity simples, Service CRUD, DTOs}
|
|
92
|
+
- {Nível 2: AggregateRoot, Value Objects, Domain Events, CQRS}
|
|
93
|
+
- {Nível 3: Bounded Context isolation, cross-BC events, Linguagem Ubíqua}
|
|
94
|
+
|
|
95
|
+
**Padrões Omitidos:**
|
|
96
|
+
- {ex: Bounded Contexts — sistema single-domain}
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Architecture Style: Vertical Slice
|
|
101
|
+
|
|
102
|
+
> Preencher SOMENTE se `config.architecture.style === "vertical-slice"`. Omitir em projetos DDD.
|
|
103
|
+
|
|
104
|
+
**Architecture Style:** Vertical Slice Architecture (VSA)
|
|
105
|
+
|
|
106
|
+
**Entity Fields:**
|
|
107
|
+
| Field | Type | Constraints |
|
|
108
|
+
|-------|------|-------------|
|
|
109
|
+
| Id | Guid | PK, `Guid.CreateVersion7()` |
|
|
110
|
+
| {Field} | {C# Type} | {Required / Optional / Unique} |
|
|
111
|
+
| CreatedAt | DateTimeOffset | Auto |
|
|
112
|
+
|
|
113
|
+
**Operations:**
|
|
114
|
+
| Slice | HTTP | Route | Has Validator |
|
|
115
|
+
|-------|------|-------|---------------|
|
|
116
|
+
| Create{Entity} | POST | {ROUTE} | Yes |
|
|
117
|
+
| GetAll{Entity}s | GET | {ROUTE} | No |
|
|
118
|
+
| Get{Entity}ById | GET | {ROUTE}/{id} | Yes |
|
|
119
|
+
| Update{Entity} | PUT | {ROUTE}/{id} | Yes |
|
|
120
|
+
| Delete{Entity} | DELETE | {ROUTE}/{id} | Yes |
|
|
121
|
+
|
|
122
|
+
**Error Types ({Entity}Errors):**
|
|
123
|
+
- `{Entity}Errors.{ErrorName}()` — {description}
|
|
124
|
+
|
|
125
|
+
**Validation Rules:**
|
|
126
|
+
| Field | Rules |
|
|
127
|
+
|-------|-------|
|
|
128
|
+
| {Field} | NotEmpty(), MaxLength({N}), {etc.} |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Aggregate Blueprint (Nível 2+ apenas)
|
|
133
|
+
|
|
134
|
+
> Omitir esta seção se Nível 1 (CRUD) ou se Architecture Style = Vertical Slice.
|
|
135
|
+
|
|
136
|
+
### Aggregate Root: {EntityName}
|
|
137
|
+
|
|
138
|
+
**Invariants:**
|
|
139
|
+
- {Invariant 1 em linguagem natural}
|
|
140
|
+
- {Invariant 2}
|
|
141
|
+
|
|
142
|
+
**Estados e Transições:**
|
|
143
|
+
```
|
|
144
|
+
{Status.Draft} → Confirm() → {Status.Confirmed} → Cancel() → {Status.Cancelled}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Domain Events:**
|
|
148
|
+
- `{EntityName}CreatedEvent` — publicado ao criar
|
|
149
|
+
- `{EntityName}StatusChangedEvent` — publicado em mudança de estado
|
|
150
|
+
|
|
151
|
+
**Value Objects:**
|
|
152
|
+
- `{ValueObjectName}` — {por que não é primitivo simples}
|
|
153
|
+
|
|
154
|
+
**Referências Cross-Aggregate (por ID):**
|
|
155
|
+
- `{OtherEntity}Id: Guid`
|
|
156
|
+
|
|
157
|
+
### Linguagem Ubíqua
|
|
158
|
+
|
|
159
|
+
| Termo | Definição | Código |
|
|
160
|
+
|-------|-----------|--------|
|
|
161
|
+
| {Termo} | {Definição do negócio} | `{ClassName.MethodName()}` |
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## UI/UX Design (if front-end)
|
|
166
|
+
|
|
167
|
+
### Wireframes
|
|
168
|
+
```
|
|
169
|
+
{ASCII wireframe per screen - include states: loading, error, empty}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### User Flow
|
|
173
|
+
1. {Step} → {System response}
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Flows
|
|
178
|
+
|
|
179
|
+
### {Flow Name}
|
|
180
|
+
**Trigger:** {what starts this flow}
|
|
181
|
+
1. {Actor} {action} → {system response}
|
|
182
|
+
2. If {condition}: Path A / Else: Path B
|
|
183
|
+
**End State:** {final state}
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Cost Estimate
|
|
188
|
+
|
|
189
|
+
| Resource | SKU | Monthly Cost | Justification |
|
|
190
|
+
|----------|-----|--------------|---------------|
|
|
191
|
+
| {Resource} | {SKU} | ${X} | {Why} |
|
|
192
|
+
| **Total** | | **${X}/month** | |
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## ADRs (Architectural Decision Records)
|
|
197
|
+
|
|
198
|
+
### ADR-001: {Decision Title}
|
|
199
|
+
**Status:** Proposed / Accepted
|
|
200
|
+
**Context:** {Why decide now}
|
|
201
|
+
**Decision:** {What we chose}
|
|
202
|
+
**Alternatives:** 1. {Alt} (pros/cons) 2. {Alt} (pros/cons)
|
|
203
|
+
**Trade-offs:** {key trade-offs}
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Security
|
|
208
|
+
|
|
209
|
+
| Action | Required Policy |
|
|
210
|
+
|--------|-----------------|
|
|
211
|
+
| View | CanView{Feature} |
|
|
212
|
+
| Create | CanManage{Feature} |
|
|
213
|
+
|
|
214
|
+
## Risks
|
|
215
|
+
|
|
216
|
+
| Risk | Impact | Mitigation |
|
|
217
|
+
|------|--------|------------|
|
|
218
|
+
| {Risk} | {H/M/L} | {Mitigation} |
|
|
219
|
+
|
|
220
|
+
## Out of Scope
|
|
221
|
+
- {Item}
|
|
222
|
+
|
|
223
|
+
## Definition of Done
|
|
224
|
+
- [ ] Code implemented
|
|
225
|
+
- [ ] Tests >80% coverage
|
|
226
|
+
- [ ] Code review approved
|
|
227
|
+
- [ ] Deploy to staging
|
|
228
|
+
- [ ] Recap.md generated
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
# Parallel Worker — {{AGENT_ID}}
|
|
2
|
-
|
|
3
|
-
You are a **Parallel Worker** (P-Thread) executing concurrently with other agents.
|
|
4
|
-
|
|
5
|
-
## Your Identity
|
|
6
|
-
- Agent: {{AGENT_ID}}
|
|
7
|
-
- Role: Parallel Worker (P-Thread)
|
|
8
|
-
- Thread ID: {{THREAD_ID}}
|
|
9
|
-
- Feature: {{FEATURE_NAME}}
|
|
10
|
-
|
|
11
|
-
## Your Isolated Mission
|
|
12
|
-
{{MISSION}}
|
|
13
|
-
|
|
14
|
-
## CRITICAL: Isolation Rules
|
|
15
|
-
|
|
16
|
-
You are running **concurrently** with other workers. To avoid conflicts:
|
|
17
|
-
|
|
18
|
-
1. **Write ONLY to your assigned files** (listed under Deliverables)
|
|
19
|
-
2. **Do NOT modify shared files** (state.json, agents.json, config files)
|
|
20
|
-
3. **Do NOT depend on output from other parallel workers** (your tasks are self-contained)
|
|
21
|
-
4. **Read from shared files is OK** (spec.md, standards, contracts)
|
|
22
|
-
5. **Report blockers** instead of waiting for another worker
|
|
23
|
-
|
|
24
|
-
## Your Assigned Scope
|
|
25
|
-
{{SCOPE}}
|
|
26
|
-
|
|
27
|
-
Files you OWN (safe to create/modify):
|
|
28
|
-
{{DELIVERABLES}}
|
|
29
|
-
|
|
30
|
-
Files you can READ (shared, do not modify):
|
|
31
|
-
- `.morph/features/{{FEATURE_NAME}}/2-design/spec.md`
|
|
32
|
-
- `framework/standards/` (all)
|
|
33
|
-
- `.morph/features/{{FEATURE_NAME}}/2-design/contracts.*`
|
|
34
|
-
|
|
35
|
-
## Spec Summary
|
|
36
|
-
{{SPEC_SUMMARY}}
|
|
37
|
-
|
|
38
|
-
## Standards to Follow
|
|
39
|
-
{{STANDARDS}}
|
|
40
|
-
|
|
41
|
-
## Your Tasks (Isolated)
|
|
42
|
-
{{TASKS}}
|
|
43
|
-
|
|
44
|
-
These tasks are **independent** — no cross-worker dependencies. If you encounter a dependency, document it and skip.
|
|
45
|
-
|
|
46
|
-
## How to Work
|
|
47
|
-
1. Verify your file scope — check you're not touching shared files
|
|
48
|
-
2. Implement tasks in order within your scope
|
|
49
|
-
3. After every 3 tasks,
|
|
50
|
-
4. If blocked by missing dependency, note it in your report and continue
|
|
51
|
-
5. Complete ALL tasks in your scope before reporting back
|
|
52
|
-
|
|
53
|
-
## Completion Report
|
|
54
|
-
When done, provide a structured report:
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
PARALLEL WORKER REPORT
|
|
58
|
-
Thread: {{THREAD_ID}}
|
|
59
|
-
Agent: {{AGENT_ID}}
|
|
60
|
-
Status: [COMPLETE | PARTIAL | BLOCKED]
|
|
61
|
-
|
|
62
|
-
Files Created:
|
|
63
|
-
- [list each file with brief description]
|
|
64
|
-
|
|
65
|
-
Files Modified:
|
|
66
|
-
- [list each file with what changed]
|
|
67
|
-
|
|
68
|
-
Tasks Completed: X/Y
|
|
69
|
-
Tasks Skipped: [list with reason]
|
|
70
|
-
|
|
71
|
-
Blockers:
|
|
72
|
-
- [any dependencies or conflicts encountered]
|
|
73
|
-
|
|
74
|
-
Checkpoints: [PASSED | FAILED | N/A]
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Important
|
|
78
|
-
- Do NOT wait for other workers — complete what you can
|
|
79
|
-
- Do NOT create files outside your assigned scope
|
|
80
|
-
- Coordinator will merge results after all workers complete
|
|
1
|
+
# Parallel Worker — {{AGENT_ID}}
|
|
2
|
+
|
|
3
|
+
You are a **Parallel Worker** (P-Thread) executing concurrently with other agents.
|
|
4
|
+
|
|
5
|
+
## Your Identity
|
|
6
|
+
- Agent: {{AGENT_ID}}
|
|
7
|
+
- Role: Parallel Worker (P-Thread)
|
|
8
|
+
- Thread ID: {{THREAD_ID}}
|
|
9
|
+
- Feature: {{FEATURE_NAME}}
|
|
10
|
+
|
|
11
|
+
## Your Isolated Mission
|
|
12
|
+
{{MISSION}}
|
|
13
|
+
|
|
14
|
+
## CRITICAL: Isolation Rules
|
|
15
|
+
|
|
16
|
+
You are running **concurrently** with other workers. To avoid conflicts:
|
|
17
|
+
|
|
18
|
+
1. **Write ONLY to your assigned files** (listed under Deliverables)
|
|
19
|
+
2. **Do NOT modify shared files** (state.json, agents.json, config files)
|
|
20
|
+
3. **Do NOT depend on output from other parallel workers** (your tasks are self-contained)
|
|
21
|
+
4. **Read from shared files is OK** (spec.md, standards, contracts)
|
|
22
|
+
5. **Report blockers** instead of waiting for another worker
|
|
23
|
+
|
|
24
|
+
## Your Assigned Scope
|
|
25
|
+
{{SCOPE}}
|
|
26
|
+
|
|
27
|
+
Files you OWN (safe to create/modify):
|
|
28
|
+
{{DELIVERABLES}}
|
|
29
|
+
|
|
30
|
+
Files you can READ (shared, do not modify):
|
|
31
|
+
- `.morph/features/{{FEATURE_NAME}}/2-design/spec.md`
|
|
32
|
+
- `framework/standards/` (all)
|
|
33
|
+
- `.morph/features/{{FEATURE_NAME}}/2-design/contracts.*`
|
|
34
|
+
|
|
35
|
+
## Spec Summary
|
|
36
|
+
{{SPEC_SUMMARY}}
|
|
37
|
+
|
|
38
|
+
## Standards to Follow
|
|
39
|
+
{{STANDARDS}}
|
|
40
|
+
|
|
41
|
+
## Your Tasks (Isolated)
|
|
42
|
+
{{TASKS}}
|
|
43
|
+
|
|
44
|
+
These tasks are **independent** — no cross-worker dependencies. If you encounter a dependency, document it and skip.
|
|
45
|
+
|
|
46
|
+
## How to Work
|
|
47
|
+
1. Verify your file scope — check you're not touching shared files
|
|
48
|
+
2. Implement tasks in order within your scope
|
|
49
|
+
3. After every 3 tasks, persist completed tasks to `tasks.json` (`status`/`outputs`/`notes` only) and run the checkpoint
|
|
50
|
+
4. If blocked by missing dependency, note it in your report and continue
|
|
51
|
+
5. Complete ALL tasks in your scope before reporting back
|
|
52
|
+
|
|
53
|
+
## Completion Report
|
|
54
|
+
When done, provide a structured report:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
PARALLEL WORKER REPORT
|
|
58
|
+
Thread: {{THREAD_ID}}
|
|
59
|
+
Agent: {{AGENT_ID}}
|
|
60
|
+
Status: [COMPLETE | PARTIAL | BLOCKED]
|
|
61
|
+
|
|
62
|
+
Files Created:
|
|
63
|
+
- [list each file with brief description]
|
|
64
|
+
|
|
65
|
+
Files Modified:
|
|
66
|
+
- [list each file with what changed]
|
|
67
|
+
|
|
68
|
+
Tasks Completed: X/Y
|
|
69
|
+
Tasks Skipped: [list with reason]
|
|
70
|
+
|
|
71
|
+
Blockers:
|
|
72
|
+
- [any dependencies or conflicts encountered]
|
|
73
|
+
|
|
74
|
+
Checkpoints: [PASSED | FAILED | N/A]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Important
|
|
78
|
+
- Do NOT wait for other workers — complete what you can
|
|
79
|
+
- Do NOT create files outside your assigned scope
|
|
80
|
+
- Coordinator will merge results after all workers complete
|