@cluesmith/codev 2.0.0-rc.7 → 2.0.0-rc.70
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-C7FtNK6Y.css +32 -0
- package/dashboard/dist/assets/index-CDAINZKT.js +131 -0
- package/dashboard/dist/assets/index-CDAINZKT.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 +173 -118
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +3 -3
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +20 -147
- 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 +144 -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 +35 -19
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/consult.d.ts +3 -4
- package/dist/agent-farm/commands/consult.d.ts.map +1 -1
- package/dist/agent-farm/commands/consult.js +27 -37
- 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 +33 -83
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +60 -79
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/shell.d.ts +15 -0
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/shell.js +50 -0
- 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 +597 -281
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts +10 -20
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +45 -491
- 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 +75 -24
- 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 +49 -109
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +48 -0
- package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -0
- package/dist/agent-farm/commands/tower-cloud.js +334 -0
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -0
- 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 +6 -2
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +246 -18
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/migrate.d.ts +0 -4
- package/dist/agent-farm/db/migrate.d.ts.map +1 -1
- package/dist/agent-farm/db/migrate.js +6 -55
- package/dist/agent-farm/db/migrate.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +3 -3
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +25 -19
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +3 -13
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js +3 -11
- 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/cloud-config.d.ts +59 -0
- package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -0
- package/dist/agent-farm/lib/cloud-config.js +143 -0
- package/dist/agent-farm/lib/cloud-config.js.map +1 -0
- package/dist/agent-farm/lib/tower-client.d.ts +163 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tower-client.js +233 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts +117 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.js +504 -0
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -0
- package/dist/agent-farm/servers/tower-server.js +2650 -185
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +6 -12
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +34 -49
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +49 -26
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +0 -5
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +12 -44
- 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 -32
- package/dist/agent-farm/utils/deps.js.map +1 -1
- package/dist/agent-farm/utils/file-tabs.d.ts +27 -0
- package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -0
- package/dist/agent-farm/utils/file-tabs.js +46 -0
- package/dist/agent-farm/utils/file-tabs.js.map +1 -0
- package/dist/agent-farm/utils/gate-status.d.ts +16 -0
- package/dist/agent-farm/utils/gate-status.d.ts.map +1 -0
- package/dist/agent-farm/utils/gate-status.js +79 -0
- package/dist/agent-farm/utils/gate-status.js.map +1 -0
- package/dist/agent-farm/utils/gate-watcher.d.ts +38 -0
- package/dist/agent-farm/utils/gate-watcher.d.ts.map +1 -0
- package/dist/agent-farm/utils/gate-watcher.js +122 -0
- package/dist/agent-farm/utils/gate-watcher.js.map +1 -0
- package/dist/agent-farm/utils/index.d.ts +0 -1
- package/dist/agent-farm/utils/index.d.ts.map +1 -1
- package/dist/agent-farm/utils/index.js +0 -1
- package/dist/agent-farm/utils/index.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/server-utils.d.ts +5 -5
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +5 -16
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/agent-farm/utils/session.d.ts +32 -0
- package/dist/agent-farm/utils/session.d.ts.map +1 -0
- package/dist/agent-farm/utils/session.js +57 -0
- package/dist/agent-farm/utils/session.js.map +1 -0
- 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/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -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 +13 -2
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +245 -29
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +96 -79
- 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 +25 -43
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +463 -1116
- 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 +571 -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 +277 -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 +36 -107
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +120 -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 +69 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -0
- package/dist/terminal/pty-manager.js +377 -0
- package/dist/terminal/pty-manager.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +104 -0
- package/dist/terminal/pty-session.d.ts.map +1 -0
- package/dist/terminal/pty-session.js +327 -0
- package/dist/terminal/pty-session.js.map +1 -0
- package/dist/terminal/ring-buffer.d.ts +34 -0
- package/dist/terminal/ring-buffer.d.ts.map +1 -0
- package/dist/terminal/ring-buffer.js +94 -0
- package/dist/terminal/ring-buffer.js.map +1 -0
- package/dist/terminal/session-manager.d.ts +115 -0
- package/dist/terminal/session-manager.d.ts.map +1 -0
- package/dist/terminal/session-manager.js +582 -0
- package/dist/terminal/session-manager.js.map +1 -0
- package/dist/terminal/shepherd-client.d.ts +58 -0
- package/dist/terminal/shepherd-client.d.ts.map +1 -0
- package/dist/terminal/shepherd-client.js +212 -0
- package/dist/terminal/shepherd-client.js.map +1 -0
- package/dist/terminal/shepherd-main.d.ts +19 -0
- package/dist/terminal/shepherd-main.d.ts.map +1 -0
- package/dist/terminal/shepherd-main.js +153 -0
- package/dist/terminal/shepherd-main.js.map +1 -0
- package/dist/terminal/shepherd-process.d.ts +75 -0
- package/dist/terminal/shepherd-process.d.ts.map +1 -0
- package/dist/terminal/shepherd-process.js +279 -0
- package/dist/terminal/shepherd-process.js.map +1 -0
- package/dist/terminal/shepherd-protocol.d.ts +115 -0
- package/dist/terminal/shepherd-protocol.d.ts.map +1 -0
- package/dist/terminal/shepherd-protocol.js +214 -0
- package/dist/terminal/shepherd-protocol.js.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts +38 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.js +94 -0
- package/dist/terminal/shepherd-replay-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 +19 -5
- package/skeleton/.claude/skills/af/SKILL.md +89 -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 +4 -62
- package/skeleton/builders.md +1 -1
- package/skeleton/consult-types/impl-review.md +18 -9
- package/skeleton/consult-types/integration-review.md +1 -1
- package/skeleton/consult-types/plan-review.md +1 -1
- package/skeleton/consult-types/pr-ready.md +1 -1
- package/skeleton/consult-types/spec-review.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 +84 -0
- package/skeleton/protocols/bugfix/protocol.json +20 -33
- 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 +17 -11
- 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 +20 -39
- package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
- package/skeleton/protocols/spir/protocol.json +156 -0
- package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
- package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
- package/skeleton/protocols/spir/templates/review.md +89 -0
- 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 +63 -46
- package/skeleton/resources/commands/codev.md +0 -2
- 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 +110 -218
- package/skeleton/roles/consultant.md +6 -6
- 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 +642 -36
- package/dist/agent-farm/commands/kickoff.d.ts +0 -20
- package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
- package/dist/agent-farm/commands/kickoff.js +0 -337
- 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 +0 -15
- package/dist/agent-farm/commands/util.d.ts.map +0 -1
- package/dist/agent-farm/commands/util.js +0 -108
- 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/agent-farm/utils/orphan-handler.d.ts +0 -27
- package/dist/agent-farm/utils/orphan-handler.d.ts.map +0 -1
- package/dist/agent-farm/utils/orphan-handler.js +0 -149
- package/dist/agent-farm/utils/orphan-handler.js.map +0 -1
- package/dist/agent-farm/utils/port-registry.d.ts +0 -58
- package/dist/agent-farm/utils/port-registry.d.ts.map +0 -1
- package/dist/agent-farm/utils/port-registry.js +0 -166
- package/dist/agent-farm/utils/port-registry.js.map +0 -1
- package/dist/agent-farm/utils/terminal-ports.d.ts +0 -18
- package/dist/agent-farm/utils/terminal-ports.d.ts.map +0 -1
- package/dist/agent-farm/utils/terminal-ports.js +0 -35
- package/dist/agent-farm/utils/terminal-ports.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/skeleton/protocols/spider/templates/review.md +0 -207
- 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
|
@@ -0,0 +1,156 @@
|
|
|
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
|
+
"pr_exists": {
|
|
120
|
+
"command": "gh pr list --head \"$(git branch --show-current)\" --json number --jq 'length' | grep -q '^[1-9]'",
|
|
121
|
+
"description": "PR must be created before signaling completion"
|
|
122
|
+
},
|
|
123
|
+
"e2e_tests": {
|
|
124
|
+
"command": "npm run test:e2e 2>&1 || echo 'e2e tests skipped (not configured)'",
|
|
125
|
+
"description": "Full e2e test suite - only runs in review phase",
|
|
126
|
+
"optional": true
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"gate": "pr-ready",
|
|
130
|
+
"next": null
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"signals": {
|
|
134
|
+
"PHASE_COMPLETE": {
|
|
135
|
+
"description": "Signal current build phase is complete",
|
|
136
|
+
"transitions_to": "verify"
|
|
137
|
+
},
|
|
138
|
+
"BLOCKED": {
|
|
139
|
+
"description": "Signal implementation is blocked",
|
|
140
|
+
"requires": "reason"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"phase_completion": {
|
|
144
|
+
"build_succeeds": "npm run build 2>&1",
|
|
145
|
+
"tests_pass": "npm test 2>&1",
|
|
146
|
+
"commit_has_code": "git log -1 --name-only --pretty=format: | grep -qE '\\.(ts|tsx|js|jsx|py|go|rs)$'"
|
|
147
|
+
},
|
|
148
|
+
"defaults": {
|
|
149
|
+
"mode": "strict",
|
|
150
|
+
"max_iterations": 7,
|
|
151
|
+
"verify": {
|
|
152
|
+
"models": ["gemini", "codex", "claude"],
|
|
153
|
+
"parallel": true
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -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]
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Review: [Feature/Project Name]
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
[1-3 sentences: what was built, how many phases, net outcome.]
|
|
6
|
+
|
|
7
|
+
## Spec Compliance
|
|
8
|
+
|
|
9
|
+
- [x] AC1: [Description] (Phase N)
|
|
10
|
+
- [x] AC2: [Description] (Phase N)
|
|
11
|
+
- [ ] ACn: [Not met — reason]
|
|
12
|
+
|
|
13
|
+
## Deviations from Plan
|
|
14
|
+
|
|
15
|
+
- **Phase N**: [What changed and why]
|
|
16
|
+
|
|
17
|
+
## Key Metrics
|
|
18
|
+
|
|
19
|
+
- **Commits**: [N] on the branch
|
|
20
|
+
- **Tests**: [N] passing ([N] existing + [N] new)
|
|
21
|
+
- **Files created**: [list]
|
|
22
|
+
- **Files deleted**: [list]
|
|
23
|
+
- **Net LOC impact**: [+/-N lines]
|
|
24
|
+
|
|
25
|
+
## Timelog
|
|
26
|
+
|
|
27
|
+
All times [timezone], [date range].
|
|
28
|
+
|
|
29
|
+
| Time | Event |
|
|
30
|
+
|------|-------|
|
|
31
|
+
| HH:MM | First commit: [description] |
|
|
32
|
+
| HH:MM | [Phase/milestone] |
|
|
33
|
+
| — | **GATE: [gate-name]** (human approval required) |
|
|
34
|
+
| HH:MM | Implementation begins |
|
|
35
|
+
| HH:MM | Phase N complete after N iterations |
|
|
36
|
+
| HH:MM | **GATE: pr-ready** |
|
|
37
|
+
|
|
38
|
+
### Autonomous Operation
|
|
39
|
+
|
|
40
|
+
| Period | Duration | Activity |
|
|
41
|
+
|--------|----------|----------|
|
|
42
|
+
| Spec + Plan | ~Nm | [Summary] |
|
|
43
|
+
| Human gate wait | ~Nh Nm | Idle — waiting for approval |
|
|
44
|
+
| Implementation → PR | ~Nh Nm | N phases, N consultation rounds |
|
|
45
|
+
|
|
46
|
+
**Total wall clock** (first commit to pr-ready): **Xh Ym**
|
|
47
|
+
**Total autonomous work time** (excluding gate waits): **~Xh Ym**
|
|
48
|
+
**Context window resets**: [N] (resumed automatically / required manual restart)
|
|
49
|
+
|
|
50
|
+
## Consultation Iteration Summary
|
|
51
|
+
|
|
52
|
+
[N] consultation files produced ([N] rounds x [N] models). [N] APPROVE, [N] REQUEST_CHANGES, [N] COMMENT.
|
|
53
|
+
|
|
54
|
+
| Phase | Iters | Who Blocked | What They Caught |
|
|
55
|
+
|-------|-------|-------------|------------------|
|
|
56
|
+
| Specify | N | [Model] | [Brief description] |
|
|
57
|
+
| Plan | N | [Model] | [Brief description] |
|
|
58
|
+
| Phase 1 | N | [Model] | [Brief description] |
|
|
59
|
+
| Phase N | N | [Model] | [Brief description] |
|
|
60
|
+
| Review | N | [Model] | [Brief description] |
|
|
61
|
+
|
|
62
|
+
**Most frequent blocker**: [Model] — blocked in N of N rounds, focused on: [pattern].
|
|
63
|
+
|
|
64
|
+
### Avoidable Iterations
|
|
65
|
+
|
|
66
|
+
Iterations that could have been prevented with better builder behavior:
|
|
67
|
+
|
|
68
|
+
1. **[Pattern]**: [Specific thing the builder should have done without needing reviewer feedback. E.g., "Run exhaustive grep before claiming all instances fixed."]
|
|
69
|
+
|
|
70
|
+
2. **[Pattern]**: [Another avoidable iteration pattern.]
|
|
71
|
+
|
|
72
|
+
## Lessons Learned
|
|
73
|
+
|
|
74
|
+
### What Went Well
|
|
75
|
+
- [Specific positive observation — what worked and why]
|
|
76
|
+
|
|
77
|
+
### Challenges Encountered
|
|
78
|
+
- **[Challenge]**: [How it was resolved. How many iterations it cost.]
|
|
79
|
+
|
|
80
|
+
### What Would Be Done Differently
|
|
81
|
+
- [Actionable improvement for future builders]
|
|
82
|
+
|
|
83
|
+
## Technical Debt
|
|
84
|
+
|
|
85
|
+
- [Any shortcuts taken or inconsistencies introduced]
|
|
86
|
+
|
|
87
|
+
## Follow-up Items
|
|
88
|
+
|
|
89
|
+
- [Items identified for future work, outside this spec's scope]
|
|
@@ -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 next` to get your next tasks
|
|
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": "strict",
|
|
141
146
|
"consultation": {
|
|
142
147
|
"enabled": true,
|
|
143
148
|
"models": ["gemini", "codex"],
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
## Overview
|
|
5
5
|
|
|
6
|
-
TICK is an **amendment workflow** for existing
|
|
6
|
+
TICK is an **amendment workflow** for existing SPIR specifications. Rather than creating new standalone specs, TICK modifies existing spec and plan documents in-place, tracking changes in an "Amendments" section.
|
|
7
7
|
|
|
8
|
-
**Core Principle**: TICK is for *refining* existing specs.
|
|
8
|
+
**Core Principle**: TICK is for *refining* existing specs. SPIR is for *creating* new specs.
|
|
9
9
|
|
|
10
|
-
**Key Insight**: TICKs are not small
|
|
10
|
+
**Key Insight**: TICKs are not small SPIRs - they're amendments to existing SPIRs. This eliminates the "TICK vs SPIR" decision problem and keeps related work together.
|
|
11
11
|
|
|
12
12
|
## When to Use TICK
|
|
13
13
|
|
|
14
14
|
### Use TICK when:
|
|
15
|
-
- Making **amendments to an existing
|
|
15
|
+
- Making **amendments to an existing SPIR spec** that is already `integrated`
|
|
16
16
|
- Small scope (< 300 lines of new/changed code)
|
|
17
17
|
- Requirements are clear and well-defined
|
|
18
18
|
- No fundamental architecture changes
|
|
@@ -23,7 +23,7 @@ TICK is an **amendment workflow** for existing SPIDER specifications. Rather tha
|
|
|
23
23
|
- Utility function additions to existing modules
|
|
24
24
|
- Refactoring within an existing feature
|
|
25
25
|
|
|
26
|
-
### Use
|
|
26
|
+
### Use SPIR instead when:
|
|
27
27
|
- Creating a **new feature from scratch** (no existing spec to amend)
|
|
28
28
|
- Major architecture changes (scope too large for amendment)
|
|
29
29
|
- Unclear requirements needing exploration
|
|
@@ -31,8 +31,8 @@ TICK is an **amendment workflow** for existing SPIDER specifications. Rather tha
|
|
|
31
31
|
- Multiple stakeholders need alignment
|
|
32
32
|
|
|
33
33
|
### Cannot Use TICK when:
|
|
34
|
-
- No relevant
|
|
35
|
-
- Target spec is not yet `integrated` (complete the
|
|
34
|
+
- No relevant SPIR spec exists (create a new SPIR spec instead)
|
|
35
|
+
- Target spec is not yet `integrated` (complete the SPIR cycle first)
|
|
36
36
|
|
|
37
37
|
## Amendment Workflow
|
|
38
38
|
|
|
@@ -162,9 +162,9 @@ The format `[TICK ####-NNN]` identifies:
|
|
|
162
162
|
- `####`: Parent spec number (e.g., 0002)
|
|
163
163
|
- `NNN`: TICK amendment number (e.g., 001, 002, 003)
|
|
164
164
|
|
|
165
|
-
## Key Differences from
|
|
165
|
+
## Key Differences from SPIR
|
|
166
166
|
|
|
167
|
-
| Aspect |
|
|
167
|
+
| Aspect | SPIR | TICK |
|
|
168
168
|
|--------|--------|------|
|
|
169
169
|
| Purpose | Create new features | Amend existing features |
|
|
170
170
|
| File creation | Creates new spec/plan/review | Modifies spec/plan, creates review |
|
|
@@ -178,16 +178,16 @@ The format `[TICK ####-NNN]` identifies:
|
|
|
178
178
|
|
|
179
179
|
```
|
|
180
180
|
Is there an existing spec to amend?
|
|
181
|
-
├── NO → Use
|
|
181
|
+
├── NO → Use SPIR (create new spec)
|
|
182
182
|
└── YES → Is it integrated?
|
|
183
|
-
├── NO → Complete
|
|
183
|
+
├── NO → Complete SPIR cycle first
|
|
184
184
|
└── YES → Is the change small (<300 LOC)?
|
|
185
185
|
├── YES → Use TICK (amend existing spec)
|
|
186
|
-
└── NO → Use
|
|
186
|
+
└── NO → Use SPIR (scope too large)
|
|
187
187
|
```
|
|
188
188
|
|
|
189
189
|
**Mental Model**:
|
|
190
|
-
-
|
|
190
|
+
- SPIR = Create new feature from scratch
|
|
191
191
|
- TICK = Refine/extend existing feature
|
|
192
192
|
|
|
193
193
|
## Example TICK Workflow
|
|
@@ -251,7 +251,7 @@ Existing standalone TICK projects (created before this protocol change) are gran
|
|
|
251
251
|
1. **Single source of truth**: Spec file shows complete feature evolution
|
|
252
252
|
2. **Clear history**: Amendments section documents all changes chronologically
|
|
253
253
|
3. **Reduced fragmentation**: Related work stays together
|
|
254
|
-
4. **Simpler mental model**: "New vs amendment" is clearer than "
|
|
254
|
+
4. **Simpler mental model**: "New vs amendment" is clearer than "SPIR vs TICK"
|
|
255
255
|
5. **Preserved context**: Looking at a spec shows all refinements
|
|
256
256
|
|
|
257
257
|
## Limitations
|
|
@@ -264,14 +264,14 @@ Existing standalone TICK projects (created before this protocol change) are gran
|
|
|
264
264
|
## Best Practices
|
|
265
265
|
|
|
266
266
|
1. **Verify spec is integrated**: Never TICK a spec that isn't complete
|
|
267
|
-
2. **Keep TICKs small**: If scope grows, consider new
|
|
267
|
+
2. **Keep TICKs small**: If scope grows, consider new SPIR spec
|
|
268
268
|
3. **Clear summaries**: Amendment entries should be self-explanatory
|
|
269
269
|
4. **Test before review**: Always test functionality before presenting
|
|
270
270
|
5. **Honest documentation**: Document all deviations in review
|
|
271
271
|
|
|
272
272
|
## Templates
|
|
273
273
|
|
|
274
|
-
TICK uses the standard
|
|
275
|
-
- Spec template: `codev/protocols/
|
|
276
|
-
- Plan template: `codev/protocols/
|
|
274
|
+
TICK uses the standard SPIR templates with amendments sections:
|
|
275
|
+
- Spec template: `codev/protocols/spir/templates/spec.md` (includes Amendments section)
|
|
276
|
+
- Plan template: `codev/protocols/spir/templates/plan.md` (includes Amendment History section)
|
|
277
277
|
- Review template: `codev/protocols/tick/templates/review.md` (TICK-specific)
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
|
|
78
78
|
## TICK Protocol Feedback
|
|
79
79
|
- **Autonomous execution**: [Worked well / Issues encountered]
|
|
80
|
-
- **Single-phase approach**: [Appropriate / Should have used
|
|
80
|
+
- **Single-phase approach**: [Appropriate / Should have used SPIR]
|
|
81
81
|
- **Speed vs quality trade-off**: [Balanced / Too fast / Too slow]
|
|
82
82
|
- **End-only consultation**: [Caught issues / Missed opportunities]
|
|
83
83
|
|