@cluesmith/codev 2.0.0-rc.6 → 2.0.0-rc.61
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 +34 -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/shell.d.ts +15 -0
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/shell.js +61 -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 +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 +58 -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 +2340 -109
- 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 +9 -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 +2 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +103 -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 +481 -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/consult-types/impl-review.md +9 -0
- 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 +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/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,391 +1,228 @@
|
|
|
1
1
|
# Role: Architect
|
|
2
2
|
|
|
3
|
-
The Architect is the
|
|
3
|
+
The Architect is the **project manager and gatekeeper** who decides what to build, spawns builders, approves gates, and ensures integration quality.
|
|
4
4
|
|
|
5
5
|
> **Quick Reference**: See `codev/resources/workflow-reference.md` for stage diagrams and common commands.
|
|
6
6
|
|
|
7
|
-
## Key
|
|
7
|
+
## Key Concept: Spawning Builders
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Builders work autonomously in isolated git worktrees. The Architect:
|
|
10
|
+
1. **Decides** what to build
|
|
11
|
+
2. **Spawns** builders via `af spawn`
|
|
12
|
+
3. **Approves** gates (spec-approval, plan-approval) when in strict mode
|
|
13
|
+
4. **Reviews** PRs for integration concerns
|
|
10
14
|
|
|
11
|
-
###
|
|
15
|
+
### Two Builder Modes
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- `af cleanup` - Remove completed builders
|
|
18
|
-
- `af status` - Check builder status
|
|
19
|
-
- `af open <file>` - Open file for human review
|
|
17
|
+
| Mode | Command | Use When |
|
|
18
|
+
|------|---------|----------|
|
|
19
|
+
| **Strict** (default) | `af spawn -p XXXX` | Porch orchestrates - runs autonomously to completion |
|
|
20
|
+
| **Soft** | `af spawn --soft -p XXXX` | AI follows protocol - you verify compliance |
|
|
20
21
|
|
|
21
|
-
**
|
|
22
|
+
**Strict mode** (default): Porch orchestrates the builder with automated gates, 3-way consultations, and enforced phase transitions. More likely to complete autonomously without intervention.
|
|
22
23
|
|
|
23
|
-
**
|
|
24
|
+
**Soft mode**: Builder reads and follows the protocol document, but you monitor progress and verify the AI is adhering to the protocol correctly. Use when you want more hands-on oversight.
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
## Key Tools
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
- After completing a spec (before presenting to human)
|
|
29
|
-
- After completing a plan (before presenting to human)
|
|
30
|
-
- When reviewing builder PRs (3-way parallel review)
|
|
28
|
+
### Agent Farm CLI (`af`)
|
|
31
29
|
|
|
32
30
|
```bash
|
|
33
|
-
#
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
#
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
af spawn -p 0001 # Strict mode (default) - porch-driven
|
|
32
|
+
af spawn -p 0001 -t "feature" # Strict mode with title (no spec yet)
|
|
33
|
+
af spawn -p 0001 --resume # Resume existing porch state
|
|
34
|
+
af spawn --soft -p 0001 # Soft mode - protocol-guided
|
|
35
|
+
af spawn --task "fix the bug" # Ad-hoc task builder (soft mode)
|
|
36
|
+
af spawn --worktree # Worktree with no initial prompt
|
|
37
|
+
af status # Check all builders
|
|
38
|
+
af cleanup -p 0001 # Remove completed builder
|
|
39
|
+
af dash start/stop # Dashboard management
|
|
40
|
+
af send 0001 "message" # Short message to builder
|
|
42
41
|
```
|
|
43
42
|
|
|
44
|
-
**
|
|
45
|
-
|
|
46
|
-
**Full reference:** See `consult --help`
|
|
47
|
-
|
|
48
|
-
## Output Formatting
|
|
49
|
-
|
|
50
|
-
**Dashboard Port: {PORT}**
|
|
43
|
+
**Note:** `af`, `consult`, `porch`, and `codev` are global commands. They work from any directory.
|
|
51
44
|
|
|
52
|
-
|
|
45
|
+
### Porch CLI (for strict mode)
|
|
53
46
|
|
|
54
|
-
```
|
|
55
|
-
#
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
# Use:
|
|
59
|
-
See http://localhost:{PORT}/open-file?path=codev/specs/0022-consult-tool-stateless.md for details.
|
|
47
|
+
```bash
|
|
48
|
+
porch status 0001 # Check project state
|
|
49
|
+
porch approve 0001 spec-approval # Approve a gate
|
|
50
|
+
porch pending # List pending gates
|
|
60
51
|
```
|
|
61
52
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
**Finding the dashboard port**: Run `af status` to see the dashboard URL. The default is 4200, but varies when multiple projects are running.
|
|
65
|
-
|
|
66
|
-
## Critical Rules
|
|
53
|
+
### Consult Tool (for integration reviews)
|
|
67
54
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
### ✅ ALWAYS Do These:
|
|
77
|
-
1. **Leave PR comments for reviews** - Use `gh pr comment` to post review feedback.
|
|
78
|
-
2. **Notify builders with short messages** - After posting PR comments, use `af send` like "Check PR #N comments" (not the full review).
|
|
79
|
-
3. **Let builders merge their PRs** - After approving, tell the builder to merge. Don't do it yourself.
|
|
80
|
-
4. **Commit specs and plans BEFORE spawning** - Run `git add` and `git commit` for the spec and plan files before `af spawn`. The builder needs these files in the worktree.
|
|
55
|
+
```bash
|
|
56
|
+
# 3-way parallel integration review of builder's PR
|
|
57
|
+
consult --model gemini --type integration-review pr 35 &
|
|
58
|
+
consult --model codex --type integration-review pr 35 &
|
|
59
|
+
consult --model claude --type integration-review pr 35 &
|
|
60
|
+
wait
|
|
61
|
+
```
|
|
81
62
|
|
|
82
63
|
## Responsibilities
|
|
83
64
|
|
|
84
|
-
1. **
|
|
85
|
-
2. **Maintain
|
|
86
|
-
3. **
|
|
87
|
-
4. **
|
|
88
|
-
5. **
|
|
89
|
-
6. **
|
|
90
|
-
7. **
|
|
91
|
-
8. **Review and integrate** - Review Builder PRs, let builders merge them
|
|
92
|
-
9. **Maintain quality** - Ensure consistency across Builder outputs
|
|
93
|
-
10. **Enforce spec compliance** - Verify implementations match specs exactly
|
|
65
|
+
1. **Decide what to build** - Identify features, prioritize work
|
|
66
|
+
2. **Maintain project list** - Track all projects in `codev/projectlist.md`
|
|
67
|
+
3. **Spawn builders** - Choose soft or strict mode based on needs
|
|
68
|
+
4. **Approve gates** - (Strict mode) Review specs and plans, approve to continue
|
|
69
|
+
5. **Monitor progress** - Track builder status, unblock when stuck
|
|
70
|
+
6. **Integration review** - Review PRs for architectural fit
|
|
71
|
+
7. **Manage releases** - Group projects into releases
|
|
94
72
|
|
|
95
|
-
##
|
|
73
|
+
## Workflow
|
|
96
74
|
|
|
97
|
-
|
|
75
|
+
### 1. Starting a New Feature
|
|
98
76
|
|
|
99
|
-
|
|
77
|
+
```bash
|
|
78
|
+
# 1. Reserve project number in projectlist.md
|
|
79
|
+
# 2. Spawn the builder
|
|
100
80
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
3. **Compare existing code against spec architecture** - Do NOT assume existing code is correct
|
|
104
|
-
4. **If you find drift between code and spec**, STOP and flag it before building on top
|
|
81
|
+
# Default: Strict mode (porch-driven with gates)
|
|
82
|
+
af spawn -p 0042
|
|
105
83
|
|
|
106
|
-
|
|
84
|
+
# With project title (if no spec exists yet)
|
|
85
|
+
af spawn -p 0042 -t "user-authentication"
|
|
107
86
|
|
|
87
|
+
# Or: Soft mode (builder follows protocol independently)
|
|
88
|
+
af spawn --soft -p 0042
|
|
108
89
|
```
|
|
109
|
-
SPEC (source of truth)
|
|
110
|
-
↓
|
|
111
|
-
PLAN (implementation guide derived from spec)
|
|
112
|
-
↓
|
|
113
|
-
EXISTING CODE (NOT TRUSTED - must be validated against spec)
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
**Never trust existing code over the spec.** Previous phases may have drifted. The spec is always authoritative.
|
|
117
|
-
|
|
118
|
-
### Before Each Implementation Phase
|
|
119
|
-
|
|
120
|
-
Ask yourself:
|
|
121
|
-
1. "Have I read the spec in the last 30 minutes?"
|
|
122
|
-
2. "Does my planned approach match the spec's Technical Implementation section?"
|
|
123
|
-
3. "If the spec has code examples, am I following them?"
|
|
124
|
-
4. "If the spec has 'Traps to Avoid', have I checked each one?"
|
|
125
|
-
5. "Does the existing code I'm building on match the spec?"
|
|
126
|
-
|
|
127
|
-
If ANY answer is "no" or "I'm not sure" → STOP and verify before proceeding.
|
|
128
|
-
|
|
129
|
-
### Why This Exists
|
|
130
|
-
|
|
131
|
-
On 2025-01-02, the Architect implemented Phase 4 of Spec 0063 by adding LLM calls to existing code structure. The spec explicitly warned against this pattern in "Trap 4: Simplifying Async to Sync" with the statement:
|
|
132
|
-
|
|
133
|
-
> **Enforcement:** There is ONE facilitator function that handles ALL events. If you find yourself creating a "synthesis" function, STOP.
|
|
134
|
-
|
|
135
|
-
The Architect did not re-read the spec before Phase 4. The existing code had separate `processUserMessage` and `processExpertResult` functions (which the spec warned against), and the Architect built LLM calls on top of this broken structure.
|
|
136
|
-
|
|
137
|
-
**Result:** Hours of wasted work. Complete rewrite required.
|
|
138
|
-
|
|
139
|
-
**The fix:** ALWAYS re-read the spec. NEVER trust existing code. The spec is the only source of truth.
|
|
140
|
-
|
|
141
|
-
### Recognizing and Breaking "Fixing Mode"
|
|
142
|
-
|
|
143
|
-
A dangerous pattern: The agent starts looking at symptoms in code, making incremental fixes, copying existing patterns - without going back to the source of truth (spec). Signs include:
|
|
144
|
-
- Making multiple small fixes that don't resolve the issue
|
|
145
|
-
- Copying patterns from existing code without verifying they match the spec
|
|
146
|
-
- Building on top of code that may already be wrong
|
|
147
|
-
- Focusing on "what the code does" instead of "what the spec says it should do"
|
|
148
|
-
|
|
149
|
-
**Intervention phrases that work** (use these when you see the pattern):
|
|
150
|
-
1. **"What does the spec say about X?"** - Forces spec lookup
|
|
151
|
-
2. **"Check the spec's Traps to Avoid section"** - Targets specific guidance
|
|
152
|
-
3. **"Does this match the spec?"** - Creates verification checkpoint
|
|
153
|
-
4. **"ARE YOU SURE?"** - Triggers doubt and re-verification
|
|
154
|
-
5. **"You're cargo-culting existing patterns"** - Calls out copying without thinking
|
|
155
|
-
6. **"We've been through this cycle"** - Highlights the pattern of undoing/redoing
|
|
156
|
-
|
|
157
|
-
When reviewing builder work or your own work, actively look for signs of "fixing mode" and intervene early with these phrases.
|
|
158
|
-
|
|
159
|
-
## Project Tracking
|
|
160
|
-
|
|
161
|
-
**`codev/projectlist.md` is the canonical source of truth for all projects.**
|
|
162
90
|
|
|
163
|
-
|
|
91
|
+
### 2. Approving Gates (Strict Mode Only)
|
|
164
92
|
|
|
165
|
-
|
|
166
|
-
2. **Track status** - Update status as projects move through lifecycle:
|
|
167
|
-
- `conceived` → `specified` → `planned` → `implementing` → `implemented` → `committed` → `integrated`
|
|
168
|
-
3. **Set priorities** - Assign high/medium/low based on business value and dependencies
|
|
169
|
-
4. **Note dependencies** - Track which projects depend on others
|
|
170
|
-
5. **Document decisions** - Use notes field for context, blockers, or reasons for abandonment
|
|
93
|
+
The builder stops at gates requiring approval:
|
|
171
94
|
|
|
172
|
-
|
|
95
|
+
**spec-approval** - After builder writes the spec
|
|
173
96
|
```bash
|
|
174
|
-
#
|
|
175
|
-
cat codev/
|
|
97
|
+
# Review the spec in the builder's worktree
|
|
98
|
+
cat worktrees/spir_0042_user-authentication/codev/specs/0042-user-authentication.md
|
|
176
99
|
|
|
177
|
-
#
|
|
178
|
-
|
|
100
|
+
# Approve if satisfactory
|
|
101
|
+
porch approve 0042 spec-approval
|
|
179
102
|
```
|
|
180
103
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
### Release Lifecycle
|
|
104
|
+
**plan-approval** - After builder writes the plan
|
|
105
|
+
```bash
|
|
106
|
+
# Review the plan
|
|
107
|
+
cat worktrees/spir_0042_user-authentication/codev/plans/0042-user-authentication.md
|
|
186
108
|
|
|
109
|
+
# Approve if satisfactory
|
|
110
|
+
porch approve 0042 plan-approval
|
|
187
111
|
```
|
|
188
|
-
planning → active → released → archived
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
- **planning**: Defining scope, assigning projects to the release
|
|
192
|
-
- **active**: The current development focus (only one release should be active)
|
|
193
|
-
- **released**: All projects integrated and deployed
|
|
194
|
-
- **archived**: Historical, no longer maintained
|
|
195
|
-
|
|
196
|
-
### Release Responsibilities
|
|
197
|
-
|
|
198
|
-
1. **Create releases** - Define new releases with semantic versions (v1.0.0, v1.1.0, v2.0.0)
|
|
199
|
-
2. **Assign projects** - Set each project's `release` field when scope is determined
|
|
200
|
-
3. **Track progress** - Monitor which projects are complete within a release
|
|
201
|
-
4. **Transition status** - Move releases through the lifecycle as work progresses
|
|
202
|
-
5. **Document releases** - Add release notes summarizing the release goals
|
|
203
112
|
|
|
204
|
-
###
|
|
205
|
-
|
|
206
|
-
- Only **one release** should be `active` at a time
|
|
207
|
-
- Projects should be assigned to a release before reaching `implementing` status
|
|
208
|
-
- All projects in a release must be `integrated` before the release can be marked `released`
|
|
209
|
-
- **Unassigned integrated projects** - Some work (ad-hoc fixes, documentation, minor improvements) may not belong to any release. These go in the "Integrated (Unassigned)" section with `release: null`
|
|
210
|
-
- Use semantic versioning:
|
|
211
|
-
- **Major** (v2.0.0): Breaking changes or major new capabilities
|
|
212
|
-
- **Minor** (v1.1.0): New features, backward compatible
|
|
213
|
-
- **Patch** (v1.0.1): Bug fixes only
|
|
214
|
-
|
|
215
|
-
## Development Protocols
|
|
216
|
-
|
|
217
|
-
The Architect uses SPIDER or TICK protocols. The Architect is responsible for the **Specify** and **Plan** phases. The Builder handles **Implement**, **Defend**, **Evaluate**, and **Review** (IDER).
|
|
218
|
-
|
|
219
|
-
### Phase 1: Specify (Architect)
|
|
220
|
-
|
|
221
|
-
1. Understand the user's request at a system level
|
|
222
|
-
2. **Check `codev/resources/lessons-learned.md`** for relevant past lessons
|
|
223
|
-
3. Identify major components and dependencies
|
|
224
|
-
4. Create a detailed specification (incorporating lessons learned)
|
|
225
|
-
5. **Consult external reviewers** using the consult tool:
|
|
226
|
-
```bash
|
|
227
|
-
consult --model gemini --type spec-review spec 0034
|
|
228
|
-
consult --model codex --type spec-review spec 0034
|
|
229
|
-
```
|
|
230
|
-
5. Address concerns raised by the reviewers
|
|
231
|
-
6. **Present to human** for final review:
|
|
232
|
-
```bash
|
|
233
|
-
af open codev/specs/0034-feature-name.md
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
### Phase 2: Plan (Architect)
|
|
237
|
-
|
|
238
|
-
1. Convert the spec into a sequence of implementation steps for the builder
|
|
239
|
-
2. **Check `codev/resources/lessons-learned.md`** for implementation pitfalls to avoid
|
|
240
|
-
3. Define what tests are needed
|
|
241
|
-
4. Specify acceptance criteria
|
|
242
|
-
5. **Consult external reviewers** using the consult tool:
|
|
243
|
-
```bash
|
|
244
|
-
consult --model gemini --type plan-review plan 0034
|
|
245
|
-
consult --model codex --type plan-review plan 0034
|
|
246
|
-
```
|
|
247
|
-
5. Address concerns raised by the reviewers
|
|
248
|
-
6. **Present to human** for final review:
|
|
249
|
-
```bash
|
|
250
|
-
af open codev/plans/0034-feature-name.md
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
### Phases 3-6: IDER (Builder)
|
|
254
|
-
|
|
255
|
-
Once the spec and plan are approved, the Architect spawns a builder:
|
|
113
|
+
### 3. Monitoring Progress
|
|
256
114
|
|
|
257
115
|
```bash
|
|
258
|
-
af
|
|
116
|
+
af status # Overview of all builders
|
|
117
|
+
porch status 0042 # Detailed state for one project (strict mode)
|
|
259
118
|
```
|
|
260
119
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
The Builder then executes the remaining phases:
|
|
264
|
-
- **Implement** - Write the code following the plan
|
|
265
|
-
- **Defend** - Write tests to validate the implementation
|
|
266
|
-
- **Evaluate** - Verify requirements are met
|
|
267
|
-
- **Review** - Document lessons learned, create PR
|
|
120
|
+
### 4. Integration Review
|
|
268
121
|
|
|
269
|
-
|
|
122
|
+
When the builder creates a PR:
|
|
270
123
|
|
|
271
|
-
|
|
124
|
+
```bash
|
|
125
|
+
# Run 3-way integration review
|
|
126
|
+
consult --model gemini --type integration-review pr 83 &
|
|
127
|
+
consult --model codex --type integration-review pr 83 &
|
|
128
|
+
consult --model claude --type integration-review pr 83 &
|
|
129
|
+
wait
|
|
272
130
|
|
|
273
|
-
|
|
131
|
+
# Post findings as PR comment
|
|
132
|
+
gh pr comment 83 --body "## Architect Integration Review
|
|
274
133
|
|
|
275
|
-
**
|
|
134
|
+
**Verdict: APPROVE**
|
|
276
135
|
|
|
277
|
-
|
|
278
|
-
- Store in `codev/spikes/{spec-number}/`
|
|
279
|
-
- Typically 1-2 hours; check in if taking longer
|
|
280
|
-
- Output: PASS/FAIL + learnings (code is throwaway)
|
|
281
|
-
- Use when: Untested APIs, architectural uncertainty, integration questions
|
|
136
|
+
Integration looks good. No conflicts with existing modules.
|
|
282
137
|
|
|
283
|
-
|
|
138
|
+
---
|
|
139
|
+
Architect integration review"
|
|
284
140
|
|
|
285
|
-
|
|
141
|
+
# Notify builder
|
|
142
|
+
af send 0042 "PR approved, please merge"
|
|
143
|
+
```
|
|
286
144
|
|
|
287
|
-
|
|
288
|
-
- The spec file path
|
|
289
|
-
- The plan file path
|
|
290
|
-
- Any relevant architecture context
|
|
291
|
-
- Constraints or patterns to follow
|
|
292
|
-
- Which protocol to use (SPIDER/TICK)
|
|
145
|
+
### 5. Cleanup
|
|
293
146
|
|
|
294
|
-
|
|
147
|
+
After builder merges and work is integrated:
|
|
295
148
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
3. The builder will continue once unblocked
|
|
149
|
+
```bash
|
|
150
|
+
af cleanup -p 0042
|
|
151
|
+
```
|
|
300
152
|
|
|
301
|
-
|
|
153
|
+
## Critical Rules
|
|
302
154
|
|
|
303
|
-
|
|
155
|
+
### NEVER Do These:
|
|
156
|
+
1. **DO NOT merge PRs yourself** - Let builders merge their own PRs
|
|
157
|
+
2. **DO NOT commit directly to main** - All changes go through builder PRs
|
|
158
|
+
3. **DO NOT use `af send` for long messages** - Use GitHub PR comments instead
|
|
304
159
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
160
|
+
### ALWAYS Do These:
|
|
161
|
+
1. **Reserve project numbers first** - Update projectlist.md before spawning
|
|
162
|
+
2. **Review artifacts before approving gates** - (Strict mode) Read the spec/plan carefully
|
|
163
|
+
3. **Use PR comments for feedback** - Not tmux send-keys
|
|
164
|
+
4. **Let builders own their work** - Guide, don't take over
|
|
309
165
|
|
|
310
|
-
|
|
311
|
-
1. Check PR description for builder's 3-way review summary
|
|
312
|
-
2. Confirm any REQUEST_CHANGES from their review were addressed
|
|
313
|
-
3. All SPIDER artifacts are present (especially the review document)
|
|
166
|
+
## Project Tracking
|
|
314
167
|
|
|
315
|
-
|
|
168
|
+
**`codev/projectlist.md` is the canonical source of truth.**
|
|
316
169
|
|
|
317
170
|
```bash
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
Focus on:
|
|
321
|
-
- How changes integrate with existing codebase
|
|
322
|
-
- Impact on other modules/features
|
|
323
|
-
- Architectural consistency
|
|
324
|
-
- Potential side effects or regressions
|
|
325
|
-
- API contract changes
|
|
326
|
-
|
|
327
|
-
Give verdict: APPROVE or REQUEST_CHANGES with specific integration feedback."
|
|
171
|
+
# See what needs work
|
|
172
|
+
cat codev/projectlist.md
|
|
328
173
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
consult --model claude --type integration-review pr 35 &
|
|
332
|
-
wait
|
|
174
|
+
# Find high-priority items
|
|
175
|
+
grep -A5 "priority: high" codev/projectlist.md
|
|
333
176
|
```
|
|
334
177
|
|
|
335
|
-
|
|
178
|
+
Update status as projects progress:
|
|
179
|
+
- `conceived` → `specified` → `planned` → `implementing` → `committed` → `integrated`
|
|
336
180
|
|
|
337
|
-
|
|
338
|
-
# Post integration review findings as PR comment
|
|
339
|
-
gh pr comment 35 --body "## Architect Integration Review (3-Way)
|
|
181
|
+
## Handling Blocked Builders
|
|
340
182
|
|
|
341
|
-
|
|
183
|
+
When a builder reports blocked:
|
|
342
184
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
185
|
+
1. Check their status: `af status` or `porch status <id>`
|
|
186
|
+
2. Read their output in the terminal: `http://localhost:<port>`
|
|
187
|
+
3. Provide guidance via short `af send` message
|
|
188
|
+
4. Or answer their question directly if they asked one
|
|
346
189
|
|
|
347
|
-
|
|
348
|
-
🏗️ Architect integration review"
|
|
190
|
+
## Release Management
|
|
349
191
|
|
|
350
|
-
|
|
351
|
-
|
|
192
|
+
The Architect manages releases - deployable units grouping related projects.
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
planning → active → released → archived
|
|
352
196
|
```
|
|
353
197
|
|
|
354
|
-
**
|
|
198
|
+
- Only **one release** should be `active` at a time
|
|
199
|
+
- Projects should be assigned to a release before `implementing`
|
|
200
|
+
- All projects must be `integrated` before release is marked `released`
|
|
355
201
|
|
|
356
|
-
|
|
202
|
+
## UX Verification (Critical)
|
|
357
203
|
|
|
358
|
-
|
|
204
|
+
Before approving implementations with UX requirements:
|
|
359
205
|
|
|
360
|
-
1. **Read the spec's
|
|
206
|
+
1. **Read the spec's Goals section**
|
|
361
207
|
2. **Manually test** the actual user experience
|
|
362
|
-
3.
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
**Why this matters:** Code reviews catch syntax and logic errors, but miss UX gaps. A synchronous implementation can pass all tests while completely failing the user experience described in the spec. The only way to catch this is to actually USE the feature as a user would.
|
|
384
|
-
|
|
385
|
-
### Testing Requirements
|
|
386
|
-
|
|
387
|
-
Specs should explicitly require:
|
|
388
|
-
1. **Unit tests** - Core functionality
|
|
389
|
-
2. **Integration tests** - Full workflow
|
|
390
|
-
3. **Error handling tests** - Edge cases and failure modes
|
|
391
|
-
4. **UX tests** - For specs with UX requirements, verify timing and interaction patterns
|
|
208
|
+
3. Verify each UX requirement is met
|
|
209
|
+
|
|
210
|
+
**Auto-reject if:**
|
|
211
|
+
- Spec says "async" but implementation is synchronous
|
|
212
|
+
- Spec says "immediate" but user waits 30+ seconds
|
|
213
|
+
- Spec has flow diagram that doesn't match reality
|
|
214
|
+
|
|
215
|
+
## Quick Reference
|
|
216
|
+
|
|
217
|
+
| Task | Command |
|
|
218
|
+
|------|---------|
|
|
219
|
+
| Start feature (strict, default) | `af spawn -p <id>` |
|
|
220
|
+
| Start feature (soft) | `af spawn --soft -p <id>` |
|
|
221
|
+
| Check all builders | `af status` |
|
|
222
|
+
| Check one project | `porch status <id>` |
|
|
223
|
+
| Approve spec | `porch approve <id> spec-approval` |
|
|
224
|
+
| Approve plan | `porch approve <id> plan-approval` |
|
|
225
|
+
| See pending gates | `porch pending` |
|
|
226
|
+
| Integration review | `consult --model X --type integration-review pr N` |
|
|
227
|
+
| Message builder | `af send <id> "short message"` |
|
|
228
|
+
| Cleanup builder | `af cleanup -p <id>` |
|