@cluesmith/codev 2.0.0-rc.6 → 2.0.0-rc.60
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/af.js +2 -2
- package/bin/consult.js +1 -1
- package/bin/porch.js +6 -35
- package/dashboard/dist/assets/index-CXloFYpB.css +32 -0
- package/dashboard/dist/assets/index-Ca2fjOJf.js +131 -0
- package/dashboard/dist/assets/index-Ca2fjOJf.js.map +1 -0
- package/dashboard/dist/index.html +14 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +94 -65
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +13 -6
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +13 -0
- package/dist/agent-farm/commands/attach.d.ts.map +1 -0
- package/dist/agent-farm/commands/attach.js +202 -0
- package/dist/agent-farm/commands/attach.js.map +1 -0
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +30 -3
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/consult.js +1 -1
- package/dist/agent-farm/commands/consult.js.map +1 -1
- package/dist/agent-farm/commands/index.d.ts +2 -2
- package/dist/agent-farm/commands/index.d.ts.map +1 -1
- package/dist/agent-farm/commands/index.js +2 -2
- package/dist/agent-farm/commands/index.js.map +1 -1
- package/dist/agent-farm/commands/open.d.ts +4 -2
- package/dist/agent-farm/commands/open.d.ts.map +1 -1
- package/dist/agent-farm/commands/open.js +37 -70
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +55 -17
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/{util.d.ts → shell.d.ts} +5 -5
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/{util.js → shell.js} +23 -36
- package/dist/agent-farm/commands/shell.js.map +1 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +503 -226
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts +3 -0
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +55 -265
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts +2 -0
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +61 -3
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/stop.d.ts +6 -0
- package/dist/agent-farm/commands/stop.d.ts.map +1 -1
- package/dist/agent-farm/commands/stop.js +116 -12
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower.d.ts +9 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +59 -19
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +124 -0
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +2 -2
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +26 -5
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +3 -0
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js +3 -0
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/hq-connector.d.ts +2 -6
- package/dist/agent-farm/hq-connector.d.ts.map +1 -1
- package/dist/agent-farm/hq-connector.js +2 -17
- package/dist/agent-farm/hq-connector.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +157 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tower-client.js +223 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -0
- package/dist/agent-farm/servers/tower-server.js +2137 -112
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +4 -10
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +30 -31
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +48 -1
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +13 -14
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/deps.d.ts.map +1 -1
- package/dist/agent-farm/utils/deps.js +0 -16
- package/dist/agent-farm/utils/deps.js.map +1 -1
- package/dist/agent-farm/utils/notifications.d.ts +30 -0
- package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
- package/dist/agent-farm/utils/notifications.js +121 -0
- package/dist/agent-farm/utils/notifications.js.map +1 -0
- package/dist/agent-farm/utils/port-registry.d.ts +0 -1
- package/dist/agent-farm/utils/port-registry.d.ts.map +1 -1
- package/dist/agent-farm/utils/port-registry.js +1 -1
- package/dist/agent-farm/utils/port-registry.js.map +1 -1
- package/dist/agent-farm/utils/server-utils.d.ts +4 -4
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +4 -15
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/agent-farm/utils/shell.d.ts +9 -22
- package/dist/agent-farm/utils/shell.d.ts.map +1 -1
- package/dist/agent-farm/utils/shell.js +34 -34
- package/dist/agent-farm/utils/shell.js.map +1 -1
- package/dist/agent-farm/utils/terminal-ports.d.ts +1 -1
- package/dist/agent-farm/utils/terminal-ports.js +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -54
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +49 -4
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +1 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +85 -6
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +0 -15
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +41 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/build-counter.d.ts +5 -0
- package/dist/commands/porch/build-counter.d.ts.map +1 -0
- package/dist/commands/porch/build-counter.js +5 -0
- package/dist/commands/porch/build-counter.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +17 -29
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +96 -144
- package/dist/commands/porch/checks.js.map +1 -1
- 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 +418 -1123
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts +22 -0
- package/dist/commands/porch/next.d.ts.map +1 -0
- package/dist/commands/porch/next.js +479 -0
- package/dist/commands/porch/next.js.map +1 -0
- package/dist/commands/porch/plan.d.ts +70 -0
- package/dist/commands/porch/plan.d.ts.map +1 -0
- package/dist/commands/porch/plan.js +190 -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 +255 -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 +294 -0
- package/dist/commands/porch/protocol.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 +81 -699
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +99 -164
- 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/porch/verdict.d.ts +31 -0
- package/dist/commands/porch/verdict.d.ts.map +1 -0
- package/dist/commands/porch/verdict.js +59 -0
- package/dist/commands/porch/verdict.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +31 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/scaffold.d.ts +37 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +114 -0
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/index.d.ts +8 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +5 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/pty-manager.d.ts +60 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -0
- package/dist/terminal/pty-manager.js +334 -0
- package/dist/terminal/pty-manager.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +79 -0
- package/dist/terminal/pty-session.d.ts.map +1 -0
- package/dist/terminal/pty-session.js +215 -0
- package/dist/terminal/pty-session.js.map +1 -0
- package/dist/terminal/ring-buffer.d.ts +27 -0
- package/dist/terminal/ring-buffer.d.ts.map +1 -0
- package/dist/terminal/ring-buffer.js +74 -0
- package/dist/terminal/ring-buffer.js.map +1 -0
- package/dist/terminal/ws-protocol.d.ts +27 -0
- package/dist/terminal/ws-protocol.d.ts.map +1 -0
- package/dist/terminal/ws-protocol.js +44 -0
- package/dist/terminal/ws-protocol.js.map +1 -0
- package/package.json +18 -5
- package/skeleton/.claude/skills/af/SKILL.md +74 -0
- package/skeleton/.claude/skills/codev/SKILL.md +41 -0
- package/skeleton/.claude/skills/consult/SKILL.md +81 -0
- package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
- package/skeleton/DEPENDENCIES.md +3 -29
- package/skeleton/builders.md +1 -1
- package/skeleton/porch/prompts/defend.md +1 -1
- package/skeleton/porch/prompts/evaluate.md +2 -2
- package/skeleton/porch/prompts/implement.md +1 -1
- package/skeleton/porch/prompts/plan.md +1 -1
- package/skeleton/porch/prompts/review.md +4 -4
- package/skeleton/porch/prompts/specify.md +1 -1
- package/skeleton/porch/prompts/understand.md +2 -2
- package/skeleton/protocol-schema.json +282 -0
- package/skeleton/protocols/bugfix/builder-prompt.md +54 -0
- package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
- package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
- package/skeleton/protocols/bugfix/prompts/pr.md +61 -0
- package/skeleton/protocols/bugfix/protocol.json +19 -2
- package/skeleton/protocols/experiment/builder-prompt.md +52 -0
- package/skeleton/protocols/experiment/protocol.json +101 -0
- package/skeleton/protocols/experiment/protocol.md +3 -3
- package/skeleton/protocols/experiment/templates/notes.md +1 -1
- package/skeleton/protocols/maintain/builder-prompt.md +46 -0
- package/skeleton/protocols/maintain/prompts/audit.md +111 -0
- package/skeleton/protocols/maintain/prompts/clean.md +91 -0
- package/skeleton/protocols/maintain/prompts/sync.md +113 -0
- package/skeleton/protocols/maintain/prompts/verify.md +110 -0
- package/skeleton/protocols/maintain/protocol.json +141 -0
- package/skeleton/protocols/maintain/protocol.md +14 -8
- package/skeleton/protocols/protocol-schema.json +54 -1
- package/skeleton/protocols/spir/builder-prompt.md +59 -0
- package/skeleton/protocols/spir/prompts/implement.md +208 -0
- package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
- package/skeleton/protocols/{spider → spir}/prompts/review.md +7 -25
- package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
- package/skeleton/protocols/spir/protocol.json +152 -0
- package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
- package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
- package/skeleton/protocols/{spider → spir}/templates/review.md +1 -1
- package/skeleton/protocols/tick/builder-prompt.md +56 -0
- package/skeleton/protocols/tick/protocol.json +7 -2
- package/skeleton/protocols/tick/protocol.md +18 -18
- package/skeleton/protocols/tick/templates/review.md +1 -1
- package/skeleton/resources/commands/agent-farm.md +25 -43
- package/skeleton/resources/commands/overview.md +7 -17
- package/skeleton/resources/workflow-reference.md +4 -4
- package/skeleton/roles/architect.md +152 -315
- package/skeleton/roles/builder.md +109 -218
- package/skeleton/templates/AGENTS.md +2 -2
- package/skeleton/templates/CLAUDE.md +2 -2
- package/skeleton/templates/cheatsheet.md +7 -5
- package/skeleton/templates/projectlist.md +1 -1
- package/templates/dashboard/index.html +17 -43
- package/templates/dashboard/js/dialogs.js +7 -7
- package/templates/dashboard/js/files.js +2 -2
- package/templates/dashboard/js/main.js +4 -4
- package/templates/dashboard/js/projects.js +3 -3
- package/templates/dashboard/js/tabs.js +1 -1
- package/templates/dashboard/js/utils.js +22 -87
- package/templates/open.html +26 -0
- package/templates/tower.html +542 -27
- package/dist/agent-farm/commands/kickoff.d.ts +0 -19
- package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
- package/dist/agent-farm/commands/kickoff.js +0 -331
- package/dist/agent-farm/commands/kickoff.js.map +0 -1
- 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/agent-farm/commands/tutorial.d.ts +0 -10
- package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
- package/dist/agent-farm/commands/tutorial.js +0 -49
- package/dist/agent-farm/commands/tutorial.js.map +0 -1
- package/dist/agent-farm/commands/util.d.ts.map +0 -1
- package/dist/agent-farm/commands/util.js.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
- package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.js +0 -1872
- package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
- package/dist/agent-farm/servers/open-server.d.ts +0 -7
- package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/open-server.js +0 -315
- package/dist/agent-farm/servers/open-server.js.map +0 -1
- package/dist/agent-farm/tutorial/index.d.ts +0 -8
- package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/index.js +0 -8
- package/dist/agent-farm/tutorial/index.js.map +0 -1
- package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
- package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/prompts.js +0 -147
- package/dist/agent-farm/tutorial/prompts.js.map +0 -1
- package/dist/agent-farm/tutorial/runner.d.ts +0 -52
- package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/runner.js +0 -204
- package/dist/agent-farm/tutorial/runner.js.map +0 -1
- package/dist/agent-farm/tutorial/state.d.ts +0 -26
- package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/state.js +0 -89
- package/dist/agent-farm/tutorial/state.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
- package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
- package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
- package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.js +0 -10
- package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.js +0 -143
- package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.js +0 -78
- package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.js +0 -126
- package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
- package/dist/agent-farm/tutorial/steps/welcome.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 -253
- 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/dist/commands/tower.d.ts +0 -16
- package/dist/commands/tower.d.ts.map +0 -1
- package/dist/commands/tower.js +0 -21
- package/dist/commands/tower.js.map +0 -1
- package/skeleton/config.json +0 -7
- 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/skeleton/protocols/spider/prompts/defend.md +0 -215
- package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
- package/skeleton/protocols/spider/prompts/implement.md +0 -149
- package/skeleton/protocols/spider/protocol.json +0 -210
- package/templates/dashboard/css/activity.css +0 -151
- package/templates/dashboard/js/activity.js +0 -112
- /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
# REVIEW Phase Prompt
|
|
2
2
|
|
|
3
|
-
You are executing the **REVIEW** phase of the
|
|
3
|
+
You are executing the **REVIEW** phase of the SPIR protocol.
|
|
4
4
|
|
|
5
5
|
## Your Goal
|
|
6
6
|
|
|
7
|
-
Perform a comprehensive review, document lessons learned,
|
|
8
|
-
|
|
9
|
-
## CRITICAL: Final Consultation Before PR
|
|
10
|
-
|
|
11
|
-
The SPIDER protocol **requires** a final consultation with GPT-5 Codex AND Gemini Pro before submitting the PR. This ensures the complete implementation is reviewed.
|
|
7
|
+
Perform a comprehensive review, document lessons learned, and prepare for PR submission.
|
|
12
8
|
|
|
13
9
|
## Context
|
|
14
10
|
|
|
@@ -92,7 +88,7 @@ Brief description of what was implemented.
|
|
|
92
88
|
- [Insight 2]
|
|
93
89
|
|
|
94
90
|
### Methodology Improvements
|
|
95
|
-
- [Suggested improvement to
|
|
91
|
+
- [Suggested improvement to SPIR protocol]
|
|
96
92
|
- [Suggested improvement to tooling]
|
|
97
93
|
|
|
98
94
|
## Technical Debt
|
|
@@ -118,22 +114,9 @@ Before PR:
|
|
|
118
114
|
- [ ] No uncommitted changes: `git status`
|
|
119
115
|
- [ ] Review document complete
|
|
120
116
|
|
|
121
|
-
### 6.
|
|
122
|
-
|
|
123
|
-
**Before creating the PR, run final consultation:**
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
# Run consultations in parallel (REQUIRED)
|
|
127
|
-
consult --model gemini --type pr-ready spec {{project_id}} &
|
|
128
|
-
consult --model codex --type pr-ready spec {{project_id}} &
|
|
129
|
-
wait
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
- Review ALL feedback from both models
|
|
133
|
-
- Address any final issues identified
|
|
134
|
-
- This is the last chance to catch problems before PR
|
|
117
|
+
### 6. Create Pull Request
|
|
135
118
|
|
|
136
|
-
|
|
119
|
+
After the review document is complete, signal completion. Porch will run 3-way consultation (Gemini, Codex, Claude) automatically via the verify step. If reviewers request changes, you'll be respawned with their feedback.
|
|
137
120
|
|
|
138
121
|
Prepare PR with:
|
|
139
122
|
|
|
@@ -187,8 +170,7 @@ Emit appropriate signals based on your progress:
|
|
|
187
170
|
|
|
188
171
|
## Important Notes
|
|
189
172
|
|
|
190
|
-
1. **
|
|
191
|
-
2. **Be honest in lessons learned** - Future you will thank present you
|
|
173
|
+
1. **Be honest in lessons learned** - Future you will thank present you
|
|
192
174
|
3. **Document deviations** - They're not failures, they're learnings
|
|
193
175
|
4. **Update methodology** - If you found a better way, document it
|
|
194
176
|
5. **Don't skip the checklist** - It catches last-minute issues
|
|
@@ -196,7 +178,7 @@ Emit appropriate signals based on your progress:
|
|
|
196
178
|
|
|
197
179
|
## What NOT to Do
|
|
198
180
|
|
|
199
|
-
- Don't
|
|
181
|
+
- Don't run `consult` commands yourself (porch handles consultations)
|
|
200
182
|
- Don't skip lessons learned ("nothing to report")
|
|
201
183
|
- Don't merge your own PR (Architect handles integration)
|
|
202
184
|
- Don't leave uncommitted changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SPECIFY Phase Prompt
|
|
2
2
|
|
|
3
|
-
You are executing the **SPECIFY** phase of the
|
|
3
|
+
You are executing the **SPECIFY** phase of the SPIR protocol.
|
|
4
4
|
|
|
5
5
|
## Your Goal
|
|
6
6
|
|
|
@@ -13,13 +13,25 @@ Create a comprehensive specification document that thoroughly explores the probl
|
|
|
13
13
|
- **Current State**: {{current_state}}
|
|
14
14
|
- **Spec File**: `codev/specs/{{project_id}}-{{title}}.md`
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## Process
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
### 0. Check for Existing Spec (ALWAYS DO THIS FIRST)
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
**Before asking ANY questions**, check if a spec already exists:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
ls codev/specs/{{project_id}}-*.md
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**If a spec file exists:**
|
|
27
|
+
1. READ IT COMPLETELY - the answers to your questions are already there
|
|
28
|
+
2. The spec author has already made the key decisions
|
|
29
|
+
3. DO NOT ask clarifying questions - proceed directly to consultation
|
|
30
|
+
4. Your job is to REVIEW and IMPROVE the existing spec, not rewrite it from scratch
|
|
31
|
+
|
|
32
|
+
**If no spec exists:** Proceed to Step 1 below.
|
|
21
33
|
|
|
22
|
-
### 1. Clarifying Questions (
|
|
34
|
+
### 1. Clarifying Questions (ONLY IF NO SPEC EXISTS)
|
|
23
35
|
|
|
24
36
|
Before writing anything, ask clarifying questions to understand:
|
|
25
37
|
- What problem is being solved?
|
|
@@ -28,7 +40,9 @@ Before writing anything, ask clarifying questions to understand:
|
|
|
28
40
|
- What's in scope vs out of scope?
|
|
29
41
|
- What does success look like?
|
|
30
42
|
|
|
31
|
-
If this is your first iteration, ask these questions now and wait for answers.
|
|
43
|
+
If this is your first iteration AND no spec exists, ask these questions now and wait for answers.
|
|
44
|
+
|
|
45
|
+
**CRITICAL**: Do NOT ask questions if a spec already exists. The spec IS the answer.
|
|
32
46
|
|
|
33
47
|
**On subsequent iterations**: If questions were already answered, acknowledge the answers and proceed to the next step.
|
|
34
48
|
|
|
@@ -62,45 +76,9 @@ Define measurable acceptance criteria:
|
|
|
62
76
|
- Non-functional requirements (performance, security)
|
|
63
77
|
- Test scenarios
|
|
64
78
|
|
|
65
|
-
### 6.
|
|
66
|
-
|
|
67
|
-
After completing the initial spec draft:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
# Run consultations in parallel (REQUIRED)
|
|
71
|
-
consult --model gemini spec {{project_id}} &
|
|
72
|
-
consult --model codex spec {{project_id}} &
|
|
73
|
-
wait
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
- Review ALL feedback from both models
|
|
77
|
-
- Update the spec with incorporated feedback
|
|
78
|
-
- Add a **Consultation Log** section documenting:
|
|
79
|
-
- Key feedback received
|
|
80
|
-
- Changes made in response
|
|
81
|
-
- Any feedback intentionally not incorporated (with reasoning)
|
|
82
|
-
|
|
83
|
-
### 7. Human Review
|
|
79
|
+
### 6. Finalize
|
|
84
80
|
|
|
85
|
-
After consultation
|
|
86
|
-
- Present the spec for human review
|
|
87
|
-
- Wait for approval or change requests
|
|
88
|
-
- If changes requested, make them and proceed to Step 8
|
|
89
|
-
|
|
90
|
-
### 8. MANDATORY: Second Consultation (After Human Feedback)
|
|
91
|
-
|
|
92
|
-
After incorporating human feedback:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
# Run consultations again (REQUIRED)
|
|
96
|
-
consult --model gemini spec {{project_id}} &
|
|
97
|
-
consult --model codex spec {{project_id}} &
|
|
98
|
-
wait
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
- Update Consultation Log with new feedback
|
|
102
|
-
- Incorporate changes
|
|
103
|
-
- Prepare final spec for approval
|
|
81
|
+
After completing the spec draft, signal completion. Porch will run 3-way consultation (Gemini, Codex, Claude) automatically via the verify step. If reviewers request changes, you'll be respawned with their feedback.
|
|
104
82
|
|
|
105
83
|
## Output
|
|
106
84
|
|
|
@@ -111,31 +89,27 @@ Create or update the specification file at `codev/specs/{{project_id}}-{{title}}
|
|
|
111
89
|
- Plan: `codev/plans/{{project_id}}-{{title}}.md`
|
|
112
90
|
- Review: `codev/reviews/{{project_id}}-{{title}}.md`
|
|
113
91
|
|
|
114
|
-
Include a **Consultation Log** section in the spec documenting all consultation feedback.
|
|
115
|
-
|
|
116
92
|
## Signals
|
|
117
93
|
|
|
118
94
|
Emit appropriate signals based on your progress:
|
|
119
95
|
|
|
120
|
-
- When waiting for clarifying question answers
|
|
96
|
+
- When waiting for clarifying question answers, **include your questions in the signal**:
|
|
121
97
|
```
|
|
122
|
-
<signal
|
|
98
|
+
<signal type=AWAITING_INPUT>
|
|
99
|
+
Please answer these questions:
|
|
100
|
+
1. What should the primary use case be - internal tooling or customer-facing?
|
|
101
|
+
2. What are the key constraints we should consider?
|
|
102
|
+
3. Who are the main stakeholders?
|
|
103
|
+
</signal>
|
|
123
104
|
```
|
|
124
105
|
|
|
106
|
+
The content inside the signal tag is displayed prominently to the user.
|
|
107
|
+
|
|
125
108
|
- After completing the initial spec draft:
|
|
126
109
|
```
|
|
127
110
|
<signal>SPEC_DRAFTED</signal>
|
|
128
111
|
```
|
|
129
112
|
|
|
130
|
-
- After incorporating consultation feedback:
|
|
131
|
-
```
|
|
132
|
-
<signal>CONSULTATION_INCORPORATED</signal>
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
- After final spec is ready for human approval:
|
|
136
|
-
```
|
|
137
|
-
<signal>SPEC_READY_FOR_APPROVAL</signal>
|
|
138
|
-
```
|
|
139
113
|
|
|
140
114
|
## Commit Cadence
|
|
141
115
|
|
|
@@ -152,15 +126,13 @@ git add codev/specs/{{project_id}}-{{title}}.md
|
|
|
152
126
|
|
|
153
127
|
## Important Notes
|
|
154
128
|
|
|
155
|
-
1. **
|
|
156
|
-
2. **Be thorough** - A good spec prevents implementation problems
|
|
129
|
+
1. **Be thorough** - A good spec prevents implementation problems
|
|
157
130
|
3. **Be specific** - Vague specs lead to wrong implementations
|
|
158
131
|
4. **Include examples** - Concrete examples clarify intent
|
|
159
|
-
5. **Document consultations** - Maintain the Consultation Log section
|
|
160
132
|
|
|
161
133
|
## What NOT to Do
|
|
162
134
|
|
|
163
|
-
- Don't
|
|
135
|
+
- Don't run `consult` commands yourself (porch handles consultations)
|
|
164
136
|
- Don't include implementation details (that's for the Plan phase)
|
|
165
137
|
- Don't estimate time (AI makes time estimates meaningless)
|
|
166
138
|
- Don't start coding (you're in Specify, not Implement)
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../protocol-schema.json",
|
|
3
|
+
"name": "spir",
|
|
4
|
+
"alias": "spider",
|
|
5
|
+
"version": "2.2.0",
|
|
6
|
+
"description": "SPIR: Specify → Plan → Implement → Review with build-verify cycles",
|
|
7
|
+
"input": {
|
|
8
|
+
"type": "spec",
|
|
9
|
+
"required": false,
|
|
10
|
+
"default_for": ["--project", "-p"]
|
|
11
|
+
},
|
|
12
|
+
"phases": [
|
|
13
|
+
{
|
|
14
|
+
"id": "specify",
|
|
15
|
+
"name": "Specify",
|
|
16
|
+
"description": "Write specification with 3-way review",
|
|
17
|
+
"type": "build_verify",
|
|
18
|
+
"build": {
|
|
19
|
+
"prompt": "specify.md",
|
|
20
|
+
"artifact": "codev/specs/${PROJECT_ID}-*.md"
|
|
21
|
+
},
|
|
22
|
+
"verify": {
|
|
23
|
+
"type": "spec-review",
|
|
24
|
+
"models": ["gemini", "codex", "claude"],
|
|
25
|
+
"parallel": true
|
|
26
|
+
},
|
|
27
|
+
"max_iterations": 7,
|
|
28
|
+
"on_complete": {
|
|
29
|
+
"commit": true,
|
|
30
|
+
"push": true
|
|
31
|
+
},
|
|
32
|
+
"gate": "spec-approval",
|
|
33
|
+
"next": "plan"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "plan",
|
|
37
|
+
"name": "Plan",
|
|
38
|
+
"description": "Write implementation plan with 3-way review",
|
|
39
|
+
"type": "build_verify",
|
|
40
|
+
"build": {
|
|
41
|
+
"prompt": "plan.md",
|
|
42
|
+
"artifact": "codev/plans/${PROJECT_ID}-*.md"
|
|
43
|
+
},
|
|
44
|
+
"verify": {
|
|
45
|
+
"type": "plan-review",
|
|
46
|
+
"models": ["gemini", "codex", "claude"],
|
|
47
|
+
"parallel": true
|
|
48
|
+
},
|
|
49
|
+
"max_iterations": 7,
|
|
50
|
+
"on_complete": {
|
|
51
|
+
"commit": true,
|
|
52
|
+
"push": true
|
|
53
|
+
},
|
|
54
|
+
"checks": {
|
|
55
|
+
"plan_exists": "test -f codev/plans/${PROJECT_ID}-*.md",
|
|
56
|
+
"has_phases_json": "grep -q '\"phases\":' codev/plans/${PROJECT_ID}-*.md",
|
|
57
|
+
"min_two_phases": "grep -o '\"id\": *\"[^\"]*\"' codev/plans/${PROJECT_ID}-*.md | wc -l | awk '$1 >= 2 {exit 0} {exit 1}'"
|
|
58
|
+
},
|
|
59
|
+
"gate": "plan-approval",
|
|
60
|
+
"next": "implement"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "implement",
|
|
64
|
+
"name": "Implement",
|
|
65
|
+
"description": "Implement code with 3-way review per plan phase",
|
|
66
|
+
"type": "per_plan_phase",
|
|
67
|
+
"build": {
|
|
68
|
+
"prompt": "implement.md",
|
|
69
|
+
"artifact": "src/**/*.{ts,tsx,js,jsx}"
|
|
70
|
+
},
|
|
71
|
+
"verify": {
|
|
72
|
+
"type": "impl-review",
|
|
73
|
+
"models": ["gemini", "codex", "claude"],
|
|
74
|
+
"parallel": true
|
|
75
|
+
},
|
|
76
|
+
"max_iterations": 7,
|
|
77
|
+
"on_complete": {
|
|
78
|
+
"commit": true,
|
|
79
|
+
"push": true
|
|
80
|
+
},
|
|
81
|
+
"checks": {
|
|
82
|
+
"build": {
|
|
83
|
+
"command": "npm run build",
|
|
84
|
+
"on_fail": "retry",
|
|
85
|
+
"max_retries": 2
|
|
86
|
+
},
|
|
87
|
+
"tests": {
|
|
88
|
+
"command": "npm test -- --exclude='**/e2e/**'",
|
|
89
|
+
"description": "Unit tests only - e2e tests run in review phase",
|
|
90
|
+
"on_fail": "retry",
|
|
91
|
+
"max_retries": 2
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"transition": {
|
|
95
|
+
"on_complete": "implement",
|
|
96
|
+
"on_all_phases_complete": "review"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "review",
|
|
101
|
+
"name": "Review",
|
|
102
|
+
"description": "Final review and PR with 3-way review",
|
|
103
|
+
"type": "build_verify",
|
|
104
|
+
"build": {
|
|
105
|
+
"prompt": "review.md",
|
|
106
|
+
"artifact": "codev/reviews/${PROJECT_ID}-*.md"
|
|
107
|
+
},
|
|
108
|
+
"verify": {
|
|
109
|
+
"type": "pr-ready",
|
|
110
|
+
"models": ["gemini", "codex", "claude"],
|
|
111
|
+
"parallel": true
|
|
112
|
+
},
|
|
113
|
+
"max_iterations": 7,
|
|
114
|
+
"on_complete": {
|
|
115
|
+
"commit": true,
|
|
116
|
+
"push": true
|
|
117
|
+
},
|
|
118
|
+
"checks": {
|
|
119
|
+
"e2e_tests": {
|
|
120
|
+
"command": "npm run test:e2e 2>&1 || echo 'e2e tests skipped (not configured)'",
|
|
121
|
+
"description": "Full e2e test suite - only runs in review phase",
|
|
122
|
+
"optional": true
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"gate": "pr-ready",
|
|
126
|
+
"next": null
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"signals": {
|
|
130
|
+
"PHASE_COMPLETE": {
|
|
131
|
+
"description": "Signal current build phase is complete",
|
|
132
|
+
"transitions_to": "verify"
|
|
133
|
+
},
|
|
134
|
+
"BLOCKED": {
|
|
135
|
+
"description": "Signal implementation is blocked",
|
|
136
|
+
"requires": "reason"
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"phase_completion": {
|
|
140
|
+
"build_succeeds": "npm run build 2>&1",
|
|
141
|
+
"tests_pass": "npm test 2>&1",
|
|
142
|
+
"commit_has_code": "git log -1 --name-only --pretty=format: | grep -qE '\\.(ts|tsx|js|jsx|py|go|rs)$'"
|
|
143
|
+
},
|
|
144
|
+
"defaults": {
|
|
145
|
+
"mode": "strict",
|
|
146
|
+
"max_iterations": 7,
|
|
147
|
+
"verify": {
|
|
148
|
+
"models": ["gemini", "codex", "claude"],
|
|
149
|
+
"parallel": true
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SPIR Protocol
|
|
2
|
+
|
|
3
|
+
> **SPIR** = **S**pecify → **P**lan → **I**mplement → **R**eview
|
|
4
|
+
>
|
|
5
|
+
> Each phase has one build-verify cycle with 3-way consultation.
|
|
2
6
|
|
|
3
7
|
> **Quick Reference**: See `codev/resources/workflow-reference.md` for stage diagrams and common commands.
|
|
4
8
|
|
|
5
9
|
## Prerequisites
|
|
6
10
|
|
|
11
|
+
**Clean Worktree Before Spawning Builders**:
|
|
12
|
+
- All specs, plans, and local changes **MUST be committed** before `af spawn`
|
|
13
|
+
- Builders work in git worktrees branched from HEAD — uncommitted files are invisible
|
|
14
|
+
- This includes `codev update` results, spec drafts, and plan approvals
|
|
15
|
+
- The `af spawn` command enforces this (use `--force` to override)
|
|
16
|
+
|
|
7
17
|
**Required for Multi-Agent Consultation**:
|
|
8
18
|
- The `consult` CLI must be available (installed with `npm install -g @cluesmith/codev`)
|
|
9
19
|
- At least one consultation backend: `claude`, `gemini-cli`, or `codex`
|
|
@@ -14,17 +24,17 @@
|
|
|
14
24
|
### Multi-Agent Consultation (ENABLED BY DEFAULT)
|
|
15
25
|
|
|
16
26
|
**DEFAULT BEHAVIOR:**
|
|
17
|
-
Multi-agent consultation is **ENABLED BY DEFAULT** when using
|
|
27
|
+
Multi-agent consultation is **ENABLED BY DEFAULT** when using SPIR protocol.
|
|
18
28
|
|
|
19
29
|
**DEFAULT AGENTS:**
|
|
20
30
|
- **GPT-5 Codex**: Primary reviewer for architecture, feasibility, and code quality
|
|
21
31
|
- **Gemini Pro**: Secondary reviewer for completeness, edge cases, and alternative approaches
|
|
22
32
|
|
|
23
33
|
**DISABLING CONSULTATION:**
|
|
24
|
-
To run
|
|
34
|
+
To run SPIR without consultation, say "without consultation" when starting work.
|
|
25
35
|
|
|
26
36
|
**CUSTOM AGENTS:**
|
|
27
|
-
The user can specify different agents by saying: "use
|
|
37
|
+
The user can specify different agents by saying: "use SPIR with consultation from [agent1] and [agent2]"
|
|
28
38
|
|
|
29
39
|
**CONSULTATION BEHAVIOR:**
|
|
30
40
|
- DEFAULT: MANDATORY consultation with GPT-5 and Gemini Pro at EVERY checkpoint
|
|
@@ -40,13 +50,21 @@ The user can specify different agents by saying: "use SPIDER with consultation f
|
|
|
40
50
|
- **Review**: After review document
|
|
41
51
|
|
|
42
52
|
## Overview
|
|
43
|
-
|
|
53
|
+
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.
|
|
54
|
+
|
|
55
|
+
**The SPIR Model**:
|
|
56
|
+
- **S - Specify**: Write specification with 3-way review → Gate: `spec-approval`
|
|
57
|
+
- **P - Plan**: Write implementation plan with 3-way review → Gate: `plan-approval`
|
|
58
|
+
- **I - Implement**: Execute each plan phase with build-verify cycle (one cycle per phase)
|
|
59
|
+
- **R - Review**: Final review and PR preparation with 3-way review
|
|
60
|
+
|
|
61
|
+
Each phase follows a build-verify loop: build the artifact, then verify with 3-way consultation (Gemini, Codex, Claude).
|
|
44
62
|
|
|
45
63
|
**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
64
|
|
|
47
|
-
## When to Use
|
|
65
|
+
## When to Use SPIR
|
|
48
66
|
|
|
49
|
-
### Use
|
|
67
|
+
### Use SPIR for:
|
|
50
68
|
- New feature development
|
|
51
69
|
- Architecture changes
|
|
52
70
|
- Complex refactoring
|
|
@@ -54,7 +72,7 @@ SPIDER is a structured development protocol that emphasizes specification-driven
|
|
|
54
72
|
- API design and implementation
|
|
55
73
|
- Performance optimization initiatives
|
|
56
74
|
|
|
57
|
-
### Skip
|
|
75
|
+
### Skip SPIR for:
|
|
58
76
|
- Simple bug fixes (< 10 lines)
|
|
59
77
|
- Documentation updates
|
|
60
78
|
- Configuration changes
|
|
@@ -224,25 +242,21 @@ Each phase should be:
|
|
|
224
242
|
**Template**: `templates/plan.md`
|
|
225
243
|
**Review Required**: Yes - Technical lead approval AFTER consultations
|
|
226
244
|
|
|
227
|
-
###
|
|
228
|
-
|
|
229
|
-
Execute for each phase in the plan. This is a strict cycle that must be completed in order.
|
|
245
|
+
### I - Implement (Per Plan Phase)
|
|
230
246
|
|
|
231
|
-
|
|
247
|
+
Execute for each phase in the plan. Each phase follows a build-verify cycle.
|
|
232
248
|
|
|
233
249
|
**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
250
|
|
|
235
|
-
**
|
|
236
|
-
1. **
|
|
237
|
-
2. **
|
|
238
|
-
3. **
|
|
251
|
+
**Build-Verify Cycle Per Phase**:
|
|
252
|
+
1. **Build** - Implement code and tests for this phase
|
|
253
|
+
2. **Verify** - 3-way consultation (Gemini, Codex, Claude)
|
|
254
|
+
3. **Iterate** - Address feedback until verification passes
|
|
239
255
|
4. **Commit** - Single atomic commit for the phase (MANDATORY before next phase)
|
|
240
256
|
5. **Proceed** - Move to next phase only after commit
|
|
241
257
|
|
|
242
258
|
**Handling Failures**:
|
|
243
|
-
- If
|
|
244
|
-
- If **Evaluation** reveals unmet criteria → return to **Implement**
|
|
245
|
-
- If user requests changes → return to **Implement**
|
|
259
|
+
- If verification reveals gaps → iterate and fix
|
|
246
260
|
- If fundamental plan flaws found → mark phase as `blocked` and revise plan
|
|
247
261
|
|
|
248
262
|
**Commit Requirements**:
|
|
@@ -586,12 +600,12 @@ Implements bcrypt-based password hashing with configurable rounds
|
|
|
586
600
|
|
|
587
601
|
### Branch Naming
|
|
588
602
|
```
|
|
589
|
-
|
|
603
|
+
spir/####-<spec-name>/<phase-name>
|
|
590
604
|
```
|
|
591
605
|
|
|
592
606
|
Example:
|
|
593
607
|
```
|
|
594
|
-
|
|
608
|
+
spir/0001-user-authentication/database-schema
|
|
595
609
|
```
|
|
596
610
|
|
|
597
611
|
|
|
@@ -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]
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
|
|
107
107
|
## Methodology Feedback
|
|
108
108
|
|
|
109
|
-
###
|
|
109
|
+
### SPIR Protocol Effectiveness
|
|
110
110
|
- **Specification Phase**: [Was it thorough enough? Too detailed?]
|
|
111
111
|
- **Planning Phase**: [Were estimates accurate? Phases well-sized?]
|
|
112
112
|
- **Implementation Loop**: [Did IDE cycle work well?]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# {{protocol_name}} Builder ({{mode}} mode)
|
|
2
|
+
|
|
3
|
+
You are implementing {{input_description}}.
|
|
4
|
+
|
|
5
|
+
{{#if mode_soft}}
|
|
6
|
+
## Mode: SOFT
|
|
7
|
+
You are running in SOFT mode. This means:
|
|
8
|
+
- You follow the TICK protocol yourself (no porch orchestration)
|
|
9
|
+
- The architect monitors your work and verifies you're adhering to the protocol
|
|
10
|
+
- Run consultations manually when the protocol calls for them
|
|
11
|
+
- You have flexibility in execution, but must stay compliant with the protocol
|
|
12
|
+
{{/if}}
|
|
13
|
+
|
|
14
|
+
{{#if mode_strict}}
|
|
15
|
+
## Mode: STRICT
|
|
16
|
+
You are running in STRICT mode. This means:
|
|
17
|
+
- Porch orchestrates your work
|
|
18
|
+
- Run: `porch run {{project_id}}`
|
|
19
|
+
- Follow porch signals and gate approvals
|
|
20
|
+
|
|
21
|
+
### ABSOLUTE RESTRICTIONS (STRICT MODE)
|
|
22
|
+
- **NEVER edit `status.yaml` directly** — only porch commands may modify project state
|
|
23
|
+
- **NEVER call `porch approve` without explicit human approval** — only run it after the architect says to
|
|
24
|
+
- **NEVER skip the 3-way review** — always follow porch next → porch done cycle
|
|
25
|
+
{{/if}}
|
|
26
|
+
|
|
27
|
+
## Protocol
|
|
28
|
+
Follow the TICK protocol: `codev/protocols/tick/protocol.md`
|
|
29
|
+
|
|
30
|
+
TICK is for amendments to existing SPIR specifications. You will:
|
|
31
|
+
1. Identify the target spec to amend
|
|
32
|
+
2. Update the spec with the amendment
|
|
33
|
+
3. Update the plan
|
|
34
|
+
4. Implement the changes
|
|
35
|
+
5. Defend with tests
|
|
36
|
+
6. Create review
|
|
37
|
+
|
|
38
|
+
{{#if spec}}
|
|
39
|
+
## Target Spec
|
|
40
|
+
The spec to amend is at: `{{spec.path}}`
|
|
41
|
+
{{/if}}
|
|
42
|
+
|
|
43
|
+
{{#if plan}}
|
|
44
|
+
## Target Plan
|
|
45
|
+
The plan to amend is at: `{{plan.path}}`
|
|
46
|
+
{{/if}}
|
|
47
|
+
|
|
48
|
+
{{#if task}}
|
|
49
|
+
## Amendment Description
|
|
50
|
+
{{task_text}}
|
|
51
|
+
{{/if}}
|
|
52
|
+
|
|
53
|
+
## Getting Started
|
|
54
|
+
1. Read the TICK protocol thoroughly
|
|
55
|
+
2. Identify what needs to change in the existing spec
|
|
56
|
+
3. Follow the amendment workflow
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "../../protocol-schema.json",
|
|
3
3
|
"name": "tick",
|
|
4
|
-
"version": "1.
|
|
5
|
-
"description": "Amendment workflow for existing
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"description": "Amendment workflow for existing SPIR specifications",
|
|
6
|
+
"input": {
|
|
7
|
+
"type": "spec",
|
|
8
|
+
"required": false
|
|
9
|
+
},
|
|
6
10
|
"phases": [
|
|
7
11
|
{
|
|
8
12
|
"id": "identify",
|
|
@@ -138,6 +142,7 @@
|
|
|
138
142
|
}
|
|
139
143
|
},
|
|
140
144
|
"defaults": {
|
|
145
|
+
"mode": "soft",
|
|
141
146
|
"consultation": {
|
|
142
147
|
"enabled": true,
|
|
143
148
|
"models": ["gemini", "codex"],
|