@cluesmith/codev 2.0.0-rc.2 → 2.0.0-rc.24
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/bin/porch.js +6 -35
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +2 -14
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +29 -2
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/kickoff.d.ts +1 -0
- package/dist/agent-farm/commands/kickoff.d.ts.map +1 -1
- package/dist/agent-farm/commands/kickoff.js +151 -77
- package/dist/agent-farm/commands/kickoff.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +30 -54
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +8 -50
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/servers/dashboard-server.js +17 -16
- package/dist/agent-farm/servers/dashboard-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +0 -10
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +0 -24
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -17
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +17 -1
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +83 -2
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/checks.d.ts +16 -29
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +90 -144
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/claude.d.ts +29 -0
- package/dist/commands/porch/claude.d.ts.map +1 -0
- package/dist/commands/porch/claude.js +80 -0
- package/dist/commands/porch/claude.js.map +1 -0
- package/dist/commands/porch/index.d.ts +21 -43
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +468 -753
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/plan.d.ts +60 -0
- package/dist/commands/porch/plan.d.ts.map +1 -0
- package/dist/commands/porch/plan.js +162 -0
- package/dist/commands/porch/plan.js.map +1 -0
- package/dist/commands/porch/prompts.d.ts +19 -0
- package/dist/commands/porch/prompts.d.ts.map +1 -0
- package/dist/commands/porch/prompts.js +270 -0
- package/dist/commands/porch/prompts.js.map +1 -0
- package/dist/commands/porch/protocol.d.ts +59 -0
- package/dist/commands/porch/protocol.d.ts.map +1 -0
- package/dist/commands/porch/protocol.js +260 -0
- package/dist/commands/porch/protocol.js.map +1 -0
- package/dist/commands/porch/repl.d.ts +33 -0
- package/dist/commands/porch/repl.d.ts.map +1 -0
- package/dist/commands/porch/repl.js +206 -0
- package/dist/commands/porch/repl.js.map +1 -0
- package/dist/commands/porch/run.d.ts +23 -0
- package/dist/commands/porch/run.d.ts.map +1 -0
- package/dist/commands/porch/run.js +743 -0
- package/dist/commands/porch/run.js.map +1 -0
- package/dist/commands/porch/signals.d.ts +38 -0
- package/dist/commands/porch/signals.d.ts.map +1 -0
- package/dist/commands/porch/signals.js +81 -0
- package/dist/commands/porch/signals.js.map +1 -0
- package/dist/commands/porch/state.d.ts +23 -112
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +119 -680
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +69 -173
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/porch/types.js +2 -1
- package/dist/commands/porch/types.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +12 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/scaffold.d.ts +24 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +78 -0
- package/dist/lib/scaffold.js.map +1 -1
- package/package.json +7 -2
- package/skeleton/protocols/bugfix/protocol.json +1 -1
- package/skeleton/protocols/spider/prompts/implement.md +201 -0
- package/skeleton/protocols/spider/prompts/plan.md +214 -0
- package/skeleton/protocols/spider/prompts/review.md +217 -0
- package/skeleton/protocols/spider/prompts/specify.md +192 -0
- package/skeleton/protocols/spider/protocol.json +90 -148
- package/skeleton/protocols/spider/protocol.md +26 -16
- package/skeleton/protocols/spider/templates/plan.md +14 -0
- package/skeleton/protocols/tick/protocol.json +1 -1
- package/skeleton/roles/architect.md +140 -319
- package/skeleton/roles/builder.md +135 -213
- package/templates/dashboard/index.html +0 -27
- package/templates/dashboard/js/utils.js +0 -86
- package/dist/agent-farm/commands/rename.d.ts +0 -13
- package/dist/agent-farm/commands/rename.d.ts.map +0 -1
- package/dist/agent-farm/commands/rename.js +0 -33
- package/dist/agent-farm/commands/rename.js.map +0 -1
- package/dist/commands/pcheck/cache.d.ts +0 -48
- package/dist/commands/pcheck/cache.d.ts.map +0 -1
- package/dist/commands/pcheck/cache.js +0 -170
- package/dist/commands/pcheck/cache.js.map +0 -1
- package/dist/commands/pcheck/evaluator.d.ts +0 -15
- package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
- package/dist/commands/pcheck/evaluator.js +0 -246
- package/dist/commands/pcheck/evaluator.js.map +0 -1
- package/dist/commands/pcheck/index.d.ts +0 -12
- package/dist/commands/pcheck/index.d.ts.map +0 -1
- package/dist/commands/pcheck/index.js +0 -249
- package/dist/commands/pcheck/index.js.map +0 -1
- package/dist/commands/pcheck/parser.d.ts +0 -39
- package/dist/commands/pcheck/parser.d.ts.map +0 -1
- package/dist/commands/pcheck/parser.js +0 -155
- package/dist/commands/pcheck/parser.js.map +0 -1
- package/dist/commands/pcheck/types.d.ts +0 -82
- package/dist/commands/pcheck/types.d.ts.map +0 -1
- package/dist/commands/pcheck/types.js +0 -5
- package/dist/commands/pcheck/types.js.map +0 -1
- package/dist/commands/porch/consultation.d.ts +0 -56
- package/dist/commands/porch/consultation.d.ts.map +0 -1
- package/dist/commands/porch/consultation.js +0 -330
- package/dist/commands/porch/consultation.js.map +0 -1
- package/dist/commands/porch/notifications.d.ts +0 -99
- package/dist/commands/porch/notifications.d.ts.map +0 -1
- package/dist/commands/porch/notifications.js +0 -223
- package/dist/commands/porch/notifications.js.map +0 -1
- package/dist/commands/porch/plan-parser.d.ts +0 -38
- package/dist/commands/porch/plan-parser.d.ts.map +0 -1
- package/dist/commands/porch/plan-parser.js +0 -166
- package/dist/commands/porch/plan-parser.js.map +0 -1
- package/dist/commands/porch/protocol-loader.d.ts +0 -46
- package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
- package/dist/commands/porch/protocol-loader.js +0 -249
- package/dist/commands/porch/protocol-loader.js.map +0 -1
- package/dist/commands/porch/signal-parser.d.ts +0 -88
- package/dist/commands/porch/signal-parser.d.ts.map +0 -1
- package/dist/commands/porch/signal-parser.js +0 -148
- package/dist/commands/porch/signal-parser.js.map +0 -1
- package/skeleton/porch/protocols/bugfix.json +0 -85
- package/skeleton/porch/protocols/spider.json +0 -135
- package/skeleton/porch/protocols/tick.json +0 -76
- package/templates/dashboard/css/activity.css +0 -151
- package/templates/dashboard/js/activity.js +0 -112
|
@@ -1,147 +1,91 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "../../protocol-schema.json",
|
|
3
3
|
"name": "spider",
|
|
4
|
-
"
|
|
5
|
-
"
|
|
4
|
+
"alias": "spir",
|
|
5
|
+
"version": "2.1.0",
|
|
6
|
+
"description": "SPIR: Specify → Plan → Implement → Review with build-verify cycles",
|
|
6
7
|
"phases": [
|
|
7
8
|
{
|
|
8
9
|
"id": "specify",
|
|
9
10
|
"name": "Specify",
|
|
10
|
-
"description": "
|
|
11
|
-
"type": "
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"success_criteria",
|
|
18
|
-
"spec_draft",
|
|
19
|
-
"consultation_1",
|
|
20
|
-
"human_review",
|
|
21
|
-
"consultation_2",
|
|
22
|
-
"spec_final"
|
|
23
|
-
],
|
|
24
|
-
"consultation": {
|
|
25
|
-
"on": "review",
|
|
26
|
-
"models": ["gemini", "codex", "claude"],
|
|
11
|
+
"description": "Write specification with 3-way review",
|
|
12
|
+
"type": "build_verify",
|
|
13
|
+
"build": {
|
|
14
|
+
"prompt": "specify.md",
|
|
15
|
+
"artifact": "codev/specs/${PROJECT_ID}-*.md"
|
|
16
|
+
},
|
|
17
|
+
"verify": {
|
|
27
18
|
"type": "spec-review",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
19
|
+
"models": ["gemini", "codex", "claude"],
|
|
20
|
+
"parallel": true
|
|
30
21
|
},
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
"max_iterations": 7,
|
|
23
|
+
"on_complete": {
|
|
24
|
+
"commit": true,
|
|
25
|
+
"push": true
|
|
26
|
+
},
|
|
27
|
+
"gate": "spec-approval",
|
|
28
|
+
"next": "plan"
|
|
37
29
|
},
|
|
38
30
|
{
|
|
39
31
|
"id": "plan",
|
|
40
32
|
"name": "Plan",
|
|
41
|
-
"description": "
|
|
42
|
-
"type": "
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"consultation",
|
|
49
|
-
"human_review",
|
|
50
|
-
"plan_final"
|
|
51
|
-
],
|
|
52
|
-
"consultation": {
|
|
53
|
-
"on": "review",
|
|
54
|
-
"models": ["gemini", "codex", "claude"],
|
|
33
|
+
"description": "Write implementation plan with 3-way review",
|
|
34
|
+
"type": "build_verify",
|
|
35
|
+
"build": {
|
|
36
|
+
"prompt": "plan.md",
|
|
37
|
+
"artifact": "codev/plans/${PROJECT_ID}-*.md"
|
|
38
|
+
},
|
|
39
|
+
"verify": {
|
|
55
40
|
"type": "plan-review",
|
|
56
|
-
"
|
|
57
|
-
"
|
|
41
|
+
"models": ["gemini", "codex", "claude"],
|
|
42
|
+
"parallel": true
|
|
58
43
|
},
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
44
|
+
"max_iterations": 7,
|
|
45
|
+
"on_complete": {
|
|
46
|
+
"commit": true,
|
|
47
|
+
"push": true
|
|
48
|
+
},
|
|
49
|
+
"checks": {
|
|
50
|
+
"plan_exists": "test -f codev/plans/${PROJECT_ID}-*.md",
|
|
51
|
+
"has_phases_json": "grep -q '\"phases\":' codev/plans/${PROJECT_ID}-*.md",
|
|
52
|
+
"min_two_phases": "grep -o '\"id\": *\"[^\"]*\"' codev/plans/${PROJECT_ID}-*.md | wc -l | awk '$1 >= 2 {exit 0} {exit 1}'"
|
|
53
|
+
},
|
|
54
|
+
"gate": "plan-approval",
|
|
55
|
+
"next": "implement"
|
|
65
56
|
},
|
|
66
57
|
{
|
|
67
58
|
"id": "implement",
|
|
68
59
|
"name": "Implement",
|
|
69
|
-
"description": "
|
|
60
|
+
"description": "Implement code with 3-way review per plan phase",
|
|
70
61
|
"type": "per_plan_phase",
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
62
|
+
"build": {
|
|
63
|
+
"prompt": "implement.md",
|
|
64
|
+
"artifact": "src/**/*.{ts,tsx,js,jsx}"
|
|
65
|
+
},
|
|
66
|
+
"verify": {
|
|
67
|
+
"type": "impl-review",
|
|
68
|
+
"models": ["gemini", "codex", "claude"],
|
|
69
|
+
"parallel": true
|
|
70
|
+
},
|
|
71
|
+
"max_iterations": 7,
|
|
72
|
+
"on_complete": {
|
|
73
|
+
"commit": true,
|
|
74
|
+
"push": true
|
|
75
|
+
},
|
|
77
76
|
"checks": {
|
|
78
77
|
"build": {
|
|
79
78
|
"command": "npm run build",
|
|
80
79
|
"on_fail": "retry",
|
|
81
80
|
"max_retries": 2
|
|
82
81
|
},
|
|
83
|
-
"typecheck": {
|
|
84
|
-
"command": "npm run typecheck",
|
|
85
|
-
"on_fail": "retry",
|
|
86
|
-
"max_retries": 2
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
"transition": {
|
|
90
|
-
"on_complete": "defend",
|
|
91
|
-
"on_fail": "implement"
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"id": "defend",
|
|
96
|
-
"name": "Defend",
|
|
97
|
-
"description": "Testing and verification",
|
|
98
|
-
"type": "per_plan_phase",
|
|
99
|
-
"steps": [
|
|
100
|
-
"write_tests",
|
|
101
|
-
"run_tests",
|
|
102
|
-
"fix_failures",
|
|
103
|
-
"commit"
|
|
104
|
-
],
|
|
105
|
-
"checks": {
|
|
106
82
|
"tests": {
|
|
107
|
-
"command": "npm test",
|
|
108
|
-
"
|
|
109
|
-
"max_retries": 1
|
|
110
|
-
},
|
|
111
|
-
"lint": {
|
|
112
|
-
"command": "npm run lint",
|
|
83
|
+
"command": "npm test -- --exclude='**/e2e/**'",
|
|
84
|
+
"description": "Unit tests only - e2e tests run in review phase",
|
|
113
85
|
"on_fail": "retry",
|
|
114
|
-
"max_retries":
|
|
86
|
+
"max_retries": 2
|
|
115
87
|
}
|
|
116
88
|
},
|
|
117
|
-
"consultation": {
|
|
118
|
-
"on": "complete",
|
|
119
|
-
"models": ["gemini", "codex", "claude"],
|
|
120
|
-
"type": "impl-review",
|
|
121
|
-
"parallel": true,
|
|
122
|
-
"max_rounds": 2
|
|
123
|
-
},
|
|
124
|
-
"transition": {
|
|
125
|
-
"on_complete": "evaluate",
|
|
126
|
-
"on_fail": "implement"
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"id": "evaluate",
|
|
131
|
-
"name": "Evaluate",
|
|
132
|
-
"description": "Verify implementation against spec",
|
|
133
|
-
"type": "per_plan_phase",
|
|
134
|
-
"steps": [
|
|
135
|
-
"check_spec_compliance",
|
|
136
|
-
"check_success_criteria",
|
|
137
|
-
"document_deviations"
|
|
138
|
-
],
|
|
139
|
-
"gate": {
|
|
140
|
-
"name": "phase-complete",
|
|
141
|
-
"description": "Plan phase implementation is verified",
|
|
142
|
-
"requires": ["all_checks_pass", "spec_compliance"],
|
|
143
|
-
"next": "implement"
|
|
144
|
-
},
|
|
145
89
|
"transition": {
|
|
146
90
|
"on_complete": "implement",
|
|
147
91
|
"on_all_phases_complete": "review"
|
|
@@ -150,55 +94,53 @@
|
|
|
150
94
|
{
|
|
151
95
|
"id": "review",
|
|
152
96
|
"name": "Review",
|
|
153
|
-
"description": "Final review and
|
|
154
|
-
"type": "
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
],
|
|
161
|
-
"consultation": {
|
|
162
|
-
"on": "review",
|
|
163
|
-
"models": ["gemini", "codex", "claude"],
|
|
97
|
+
"description": "Final review and PR with 3-way review",
|
|
98
|
+
"type": "build_verify",
|
|
99
|
+
"build": {
|
|
100
|
+
"prompt": "review.md",
|
|
101
|
+
"artifact": "codev/reviews/${PROJECT_ID}-*.md"
|
|
102
|
+
},
|
|
103
|
+
"verify": {
|
|
164
104
|
"type": "pr-ready",
|
|
165
|
-
"
|
|
166
|
-
"
|
|
105
|
+
"models": ["gemini", "codex", "claude"],
|
|
106
|
+
"parallel": true
|
|
167
107
|
},
|
|
168
|
-
"
|
|
169
|
-
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
|
|
173
|
-
|
|
108
|
+
"max_iterations": 7,
|
|
109
|
+
"on_complete": {
|
|
110
|
+
"commit": true,
|
|
111
|
+
"push": true
|
|
112
|
+
},
|
|
113
|
+
"checks": {
|
|
114
|
+
"e2e_tests": {
|
|
115
|
+
"command": "npm run test:e2e 2>&1 || echo 'e2e tests skipped (not configured)'",
|
|
116
|
+
"description": "Full e2e test suite - only runs in review phase",
|
|
117
|
+
"optional": true
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"gate": "pr-ready",
|
|
121
|
+
"next": null
|
|
174
122
|
}
|
|
175
123
|
],
|
|
176
124
|
"signals": {
|
|
177
125
|
"PHASE_COMPLETE": {
|
|
178
|
-
"description": "Signal current phase is complete",
|
|
179
|
-
"transitions_to": "
|
|
126
|
+
"description": "Signal current build phase is complete",
|
|
127
|
+
"transitions_to": "verify"
|
|
180
128
|
},
|
|
181
129
|
"BLOCKED": {
|
|
182
130
|
"description": "Signal implementation is blocked",
|
|
183
131
|
"requires": "reason"
|
|
184
|
-
},
|
|
185
|
-
"REVISION_NEEDED": {
|
|
186
|
-
"description": "Signal changes requested",
|
|
187
|
-
"transitions_to": "current_phase"
|
|
188
|
-
},
|
|
189
|
-
"APPROVED": {
|
|
190
|
-
"description": "Signal gate approval received"
|
|
191
132
|
}
|
|
192
133
|
},
|
|
134
|
+
"phase_completion": {
|
|
135
|
+
"build_succeeds": "npm run build 2>&1",
|
|
136
|
+
"tests_pass": "npm test 2>&1",
|
|
137
|
+
"commit_has_code": "git log -1 --name-only --pretty=format: | grep -qE '\\.(ts|tsx|js|jsx|py|go|rs)$'"
|
|
138
|
+
},
|
|
193
139
|
"defaults": {
|
|
194
|
-
"
|
|
195
|
-
|
|
140
|
+
"max_iterations": 7,
|
|
141
|
+
"verify": {
|
|
196
142
|
"models": ["gemini", "codex", "claude"],
|
|
197
143
|
"parallel": true
|
|
198
|
-
},
|
|
199
|
-
"checks": {
|
|
200
|
-
"build": "npm run build",
|
|
201
|
-
"test": "npm test"
|
|
202
144
|
}
|
|
203
145
|
}
|
|
204
146
|
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SPIR Protocol (formerly SPIDER)
|
|
2
|
+
|
|
3
|
+
> **Also known as**: SPIDER (legacy name)
|
|
4
|
+
>
|
|
5
|
+
> **SPIR** = **S**pecify → **P**lan → **I**mplement → **R**eview
|
|
6
|
+
>
|
|
7
|
+
> Each phase has one build-verify cycle with 3-way consultation.
|
|
2
8
|
|
|
3
9
|
> **Quick Reference**: See `codev/resources/workflow-reference.md` for stage diagrams and common commands.
|
|
4
10
|
|
|
@@ -40,13 +46,21 @@ The user can specify different agents by saying: "use SPIDER with consultation f
|
|
|
40
46
|
- **Review**: After review document
|
|
41
47
|
|
|
42
48
|
## Overview
|
|
43
|
-
|
|
49
|
+
SPIR is a structured development protocol that emphasizes specification-driven development with iterative implementation and continuous review. It builds upon the DAPPER methodology with a focus on context-first development and multi-agent collaboration.
|
|
50
|
+
|
|
51
|
+
**The SPIR Model**:
|
|
52
|
+
- **S - Specify**: Write specification with 3-way review → Gate: `spec-approval`
|
|
53
|
+
- **P - Plan**: Write implementation plan with 3-way review → Gate: `plan-approval`
|
|
54
|
+
- **I - Implement**: Execute each plan phase with build-verify cycle (one cycle per phase)
|
|
55
|
+
- **R - Review**: Final review and PR preparation with 3-way review
|
|
56
|
+
|
|
57
|
+
Each phase follows a build-verify loop: build the artifact, then verify with 3-way consultation (Gemini, Codex, Claude).
|
|
44
58
|
|
|
45
59
|
**Core Principle**: Each feature is tracked through exactly THREE documents - a specification, a plan, and a review with lessons learned - all sharing the same filename and sequential identifier.
|
|
46
60
|
|
|
47
|
-
## When to Use
|
|
61
|
+
## When to Use SPIR
|
|
48
62
|
|
|
49
|
-
### Use
|
|
63
|
+
### Use SPIR for:
|
|
50
64
|
- New feature development
|
|
51
65
|
- Architecture changes
|
|
52
66
|
- Complex refactoring
|
|
@@ -54,7 +68,7 @@ SPIDER is a structured development protocol that emphasizes specification-driven
|
|
|
54
68
|
- API design and implementation
|
|
55
69
|
- Performance optimization initiatives
|
|
56
70
|
|
|
57
|
-
### Skip
|
|
71
|
+
### Skip SPIR for:
|
|
58
72
|
- Simple bug fixes (< 10 lines)
|
|
59
73
|
- Documentation updates
|
|
60
74
|
- Configuration changes
|
|
@@ -224,25 +238,21 @@ Each phase should be:
|
|
|
224
238
|
**Template**: `templates/plan.md`
|
|
225
239
|
**Review Required**: Yes - Technical lead approval AFTER consultations
|
|
226
240
|
|
|
227
|
-
###
|
|
228
|
-
|
|
229
|
-
Execute for each phase in the plan. This is a strict cycle that must be completed in order.
|
|
241
|
+
### I - Implement (Per Plan Phase)
|
|
230
242
|
|
|
231
|
-
|
|
243
|
+
Execute for each phase in the plan. Each phase follows a build-verify cycle.
|
|
232
244
|
|
|
233
245
|
**CRITICAL PRECONDITION**: Before starting any phase, verify the previous phase was committed to git. No phase can begin without the prior phase's commit.
|
|
234
246
|
|
|
235
|
-
**
|
|
236
|
-
1. **
|
|
237
|
-
2. **
|
|
238
|
-
3. **
|
|
247
|
+
**Build-Verify Cycle Per Phase**:
|
|
248
|
+
1. **Build** - Implement code and tests for this phase
|
|
249
|
+
2. **Verify** - 3-way consultation (Gemini, Codex, Claude)
|
|
250
|
+
3. **Iterate** - Address feedback until verification passes
|
|
239
251
|
4. **Commit** - Single atomic commit for the phase (MANDATORY before next phase)
|
|
240
252
|
5. **Proceed** - Move to next phase only after commit
|
|
241
253
|
|
|
242
254
|
**Handling Failures**:
|
|
243
|
-
- If
|
|
244
|
-
- If **Evaluation** reveals unmet criteria → return to **Implement**
|
|
245
|
-
- If user requests changes → return to **Implement**
|
|
255
|
+
- If verification reveals gaps → iterate and fix
|
|
246
256
|
- If fundamental plan flaws found → mark phase as `blocked` and revise plan
|
|
247
257
|
|
|
248
258
|
**Commit Requirements**:
|
|
@@ -17,6 +17,20 @@
|
|
|
17
17
|
- [ ] Zero critical security issues
|
|
18
18
|
- [ ] Documentation complete
|
|
19
19
|
|
|
20
|
+
## Phases (Machine Readable)
|
|
21
|
+
|
|
22
|
+
<!-- REQUIRED: porch uses this JSON to track phase progress. Update this when adding/removing phases. -->
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"phases": [
|
|
27
|
+
{"id": "phase_1", "title": "Phase 1 Title Here"},
|
|
28
|
+
{"id": "phase_2", "title": "Phase 2 Title Here"},
|
|
29
|
+
{"id": "phase_3", "title": "Phase 3 Title Here"}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
20
34
|
## Phase Breakdown
|
|
21
35
|
|
|
22
36
|
### Phase 1: [Descriptive Name]
|