@cluesmith/codev 3.2.3 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard-dist/assets/index-BZRTEMtH.css +32 -0
- package/dashboard-dist/assets/{index-BZ1x7x1X.js → index-JCbkpAcV.js} +33 -33
- package/dashboard-dist/assets/index-JCbkpAcV.js.map +1 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +173 -0
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/attach.js +2 -2
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +16 -0
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/inbox.d.ts +42 -0
- package/dist/agent-farm/commands/inbox.d.ts.map +1 -0
- package/dist/agent-farm/commands/inbox.js +129 -0
- package/dist/agent-farm/commands/inbox.js.map +1 -0
- package/dist/agent-farm/commands/interrupt.d.ts +20 -0
- package/dist/agent-farm/commands/interrupt.d.ts.map +1 -0
- package/dist/agent-farm/commands/interrupt.js +65 -0
- package/dist/agent-farm/commands/interrupt.js.map +1 -0
- package/dist/agent-farm/commands/reset/constants.d.ts +52 -0
- package/dist/agent-farm/commands/reset/constants.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/constants.js +52 -0
- package/dist/agent-farm/commands/reset/constants.js.map +1 -0
- package/dist/agent-farm/commands/reset/context.d.ts +230 -0
- package/dist/agent-farm/commands/reset/context.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/context.js +428 -0
- package/dist/agent-farm/commands/reset/context.js.map +1 -0
- package/dist/agent-farm/commands/reset/index.d.ts +192 -0
- package/dist/agent-farm/commands/reset/index.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/index.js +488 -0
- package/dist/agent-farm/commands/reset/index.js.map +1 -0
- package/dist/agent-farm/commands/reset/receipt.d.ts +97 -0
- package/dist/agent-farm/commands/reset/receipt.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/receipt.js +149 -0
- package/dist/agent-farm/commands/reset/receipt.js.map +1 -0
- package/dist/agent-farm/commands/reset/reorient.d.ts +117 -0
- package/dist/agent-farm/commands/reset/reorient.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/reorient.js +313 -0
- package/dist/agent-farm/commands/reset/reorient.js.map +1 -0
- package/dist/agent-farm/commands/reset.d.ts +19 -0
- package/dist/agent-farm/commands/reset.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset.js +292 -0
- package/dist/agent-farm/commands/reset.js.map +1 -0
- package/dist/agent-farm/commands/send.d.ts +2 -2
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +52 -11
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/setup.d.ts +4 -1
- package/dist/agent-farm/commands/setup.d.ts.map +1 -1
- package/dist/agent-farm/commands/setup.js +8 -4
- package/dist/agent-farm/commands/setup.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +116 -6
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +345 -74
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +13 -1
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +105 -9
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/tower-sweep-husks.d.ts +6 -0
- package/dist/agent-farm/commands/tower-sweep-husks.d.ts.map +1 -0
- package/dist/agent-farm/commands/tower-sweep-husks.js +77 -0
- package/dist/agent-farm/commands/tower-sweep-husks.js.map +1 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +34 -0
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/commands/whoami.d.ts +65 -0
- package/dist/agent-farm/commands/whoami.d.ts.map +1 -0
- package/dist/agent-farm/commands/whoami.js +196 -0
- package/dist/agent-farm/commands/whoami.js.map +1 -0
- package/dist/agent-farm/db/index.d.ts +1 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +80 -1
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/mailbox.d.ts +222 -0
- package/dist/agent-farm/db/mailbox.d.ts.map +1 -0
- package/dist/agent-farm/db/mailbox.js +304 -0
- package/dist/agent-farm/db/mailbox.js.map +1 -0
- package/dist/agent-farm/db/schema.d.ts +1 -1
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +35 -0
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +45 -0
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/lib/builder-lookup.d.ts +1 -1
- package/dist/agent-farm/lib/builder-lookup.js +2 -2
- package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
- package/dist/agent-farm/lib/reconnect-backoff.d.ts +54 -0
- package/dist/agent-farm/lib/reconnect-backoff.d.ts.map +1 -0
- package/dist/agent-farm/lib/reconnect-backoff.js +47 -0
- package/dist/agent-farm/lib/reconnect-backoff.js.map +1 -0
- package/dist/agent-farm/lib/tower-client.d.ts +16 -6
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +37 -6
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.d.ts +69 -1
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +218 -27
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/architect-session-holder.d.ts +133 -0
- package/dist/agent-farm/servers/architect-session-holder.d.ts.map +1 -0
- package/dist/agent-farm/servers/architect-session-holder.js +268 -0
- package/dist/agent-farm/servers/architect-session-holder.js.map +1 -0
- package/dist/agent-farm/servers/cron-delivery.d.ts +72 -0
- package/dist/agent-farm/servers/cron-delivery.d.ts.map +1 -0
- package/dist/agent-farm/servers/cron-delivery.js +80 -0
- package/dist/agent-farm/servers/cron-delivery.js.map +1 -0
- package/dist/agent-farm/servers/delayed-send.d.ts +85 -0
- package/dist/agent-farm/servers/delayed-send.d.ts.map +1 -0
- package/dist/agent-farm/servers/delayed-send.js +165 -0
- package/dist/agent-farm/servers/delayed-send.js.map +1 -0
- package/dist/agent-farm/servers/gate-profiles.d.ts +67 -0
- package/dist/agent-farm/servers/gate-profiles.d.ts.map +1 -0
- package/dist/agent-farm/servers/gate-profiles.js +113 -0
- package/dist/agent-farm/servers/gate-profiles.js.map +1 -0
- package/dist/agent-farm/servers/mailbox-delivery.d.ts +370 -0
- package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -0
- package/dist/agent-farm/servers/mailbox-delivery.js +617 -0
- package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -0
- package/dist/agent-farm/servers/mailbox-wiring.d.ts +125 -0
- package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -0
- package/dist/agent-farm/servers/mailbox-wiring.js +425 -0
- package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -0
- package/dist/agent-farm/servers/message-write.d.ts +53 -1
- package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
- package/dist/agent-farm/servers/message-write.js +63 -0
- package/dist/agent-farm/servers/message-write.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +23 -4
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/process-census.d.ts +41 -0
- package/dist/agent-farm/servers/process-census.d.ts.map +1 -0
- package/dist/agent-farm/servers/process-census.js +62 -0
- package/dist/agent-farm/servers/process-census.js.map +1 -0
- package/dist/agent-farm/servers/render-gate.d.ts +141 -0
- package/dist/agent-farm/servers/render-gate.d.ts.map +1 -0
- package/dist/agent-farm/servers/render-gate.js +251 -0
- package/dist/agent-farm/servers/render-gate.js.map +1 -0
- package/dist/agent-farm/servers/session-log-sweep.d.ts +93 -0
- package/dist/agent-farm/servers/session-log-sweep.d.ts.map +1 -0
- package/dist/agent-farm/servers/session-log-sweep.js +165 -0
- package/dist/agent-farm/servers/session-log-sweep.js.map +1 -0
- package/dist/agent-farm/servers/session-submit.d.ts +90 -0
- package/dist/agent-farm/servers/session-submit.d.ts.map +1 -0
- package/dist/agent-farm/servers/session-submit.js +127 -0
- package/dist/agent-farm/servers/session-submit.js.map +1 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.d.ts +87 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.d.ts.map +1 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.js +129 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.js.map +1 -0
- package/dist/agent-farm/servers/tower-cron.d.ts +10 -7
- package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-cron.js +58 -53
- package/dist/agent-farm/servers/tower-cron.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts +14 -2
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +128 -19
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-messages.d.ts +38 -1
- package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-messages.js +106 -1
- package/dist/agent-farm/servers/tower-messages.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts +16 -4
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +807 -99
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +241 -15
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +17 -2
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +139 -124
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +63 -4
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/servers/tower-types.d.ts +2 -1
- package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts +99 -1
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +242 -6
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +6 -21
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/servers/write-queue.d.ts +35 -0
- package/dist/agent-farm/servers/write-queue.d.ts.map +1 -0
- package/dist/agent-farm/servers/write-queue.js +56 -0
- package/dist/agent-farm/servers/write-queue.js.map +1 -0
- package/dist/agent-farm/state.d.ts +6 -1
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +5 -2
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +39 -0
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/agent-names.d.ts +2 -2
- package/dist/agent-farm/utils/agent-names.d.ts.map +1 -1
- package/dist/agent-farm/utils/agent-names.js +3 -3
- package/dist/agent-farm/utils/agent-names.js.map +1 -1
- package/dist/agent-farm/utils/architect-name.d.ts +2 -2
- package/dist/agent-farm/utils/architect-name.d.ts.map +1 -1
- package/dist/agent-farm/utils/architect-name.js +3 -3
- package/dist/agent-farm/utils/architect-name.js.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +13 -0
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +33 -1
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/harness.d.ts +103 -7
- package/dist/agent-farm/utils/harness.d.ts.map +1 -1
- package/dist/agent-farm/utils/harness.js +126 -19
- package/dist/agent-farm/utils/harness.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -32
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +3 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +7 -6
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/agy-auth-cache.d.ts +97 -0
- package/dist/commands/consult/agy-auth-cache.d.ts.map +1 -0
- package/dist/commands/consult/agy-auth-cache.js +320 -0
- package/dist/commands/consult/agy-auth-cache.js.map +1 -0
- package/dist/commands/consult/cli-options.d.ts +34 -0
- package/dist/commands/consult/cli-options.d.ts.map +1 -0
- package/dist/commands/consult/cli-options.js +67 -0
- package/dist/commands/consult/cli-options.js.map +1 -0
- package/dist/commands/consult/index.d.ts +56 -2
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +330 -27
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/metrics.d.ts +42 -0
- package/dist/commands/consult/metrics.d.ts.map +1 -1
- package/dist/commands/consult/metrics.js +129 -9
- package/dist/commands/consult/metrics.js.map +1 -1
- package/dist/commands/doctor.d.ts +28 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +258 -22
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +3 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +7 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/checks.d.ts +23 -0
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +60 -0
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/config.d.ts +20 -0
- package/dist/commands/porch/config.d.ts.map +1 -1
- package/dist/commands/porch/config.js +20 -0
- package/dist/commands/porch/config.js.map +1 -1
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +32 -36
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +2 -41
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/update.d.ts +4 -4
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -11
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/config.d.ts +70 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +67 -3
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/consult-lanes.d.ts +149 -0
- package/dist/lib/consult-lanes.d.ts.map +1 -0
- package/dist/lib/consult-lanes.js +360 -0
- package/dist/lib/consult-lanes.js.map +1 -0
- package/dist/lib/default-branch.d.ts +1 -1
- package/dist/lib/default-branch.js +1 -1
- package/dist/lib/github.js +1 -1
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/gitignore.d.ts +25 -2
- package/dist/lib/gitignore.d.ts.map +1 -1
- package/dist/lib/gitignore.js +70 -0
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/lib/migration-backup-audit.d.ts +64 -0
- package/dist/lib/migration-backup-audit.d.ts.map +1 -0
- package/dist/lib/migration-backup-audit.js +145 -0
- package/dist/lib/migration-backup-audit.js.map +1 -0
- package/dist/lib/prompt-behavior-metrics.d.ts +67 -0
- package/dist/lib/prompt-behavior-metrics.d.ts.map +1 -0
- package/dist/lib/prompt-behavior-metrics.js +290 -0
- package/dist/lib/prompt-behavior-metrics.js.map +1 -0
- package/dist/lib/protocol-drift-audit.d.ts +118 -0
- package/dist/lib/protocol-drift-audit.d.ts.map +1 -0
- package/dist/lib/protocol-drift-audit.js +217 -0
- package/dist/lib/protocol-drift-audit.js.map +1 -0
- package/dist/lib/scaffold.d.ts +10 -3
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +29 -26
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/lib/skeleton.d.ts +22 -1
- package/dist/lib/skeleton.d.ts.map +1 -1
- package/dist/lib/skeleton.js +120 -0
- package/dist/lib/skeleton.js.map +1 -1
- package/dist/lib/test-env.d.ts +74 -0
- package/dist/lib/test-env.d.ts.map +1 -0
- package/dist/lib/test-env.js +92 -0
- package/dist/lib/test-env.js.map +1 -0
- package/dist/terminal/pty-manager.d.ts +9 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +32 -6
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +156 -4
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +307 -42
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/ring-buffer.d.ts +39 -6
- package/dist/terminal/ring-buffer.d.ts.map +1 -1
- package/dist/terminal/ring-buffer.js +74 -6
- package/dist/terminal/ring-buffer.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +129 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +337 -44
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/session-screen.d.ts +91 -0
- package/dist/terminal/session-screen.d.ts.map +1 -0
- package/dist/terminal/session-screen.js +135 -0
- package/dist/terminal/session-screen.js.map +1 -0
- package/dist/terminal/shellper-client.d.ts +19 -4
- package/dist/terminal/shellper-client.d.ts.map +1 -1
- package/dist/terminal/shellper-client.js +70 -8
- package/dist/terminal/shellper-client.js.map +1 -1
- package/dist/terminal/shellper-main.js +2 -1
- package/dist/terminal/shellper-main.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts +1 -1
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +33 -9
- package/dist/terminal/shellper-process.js.map +1 -1
- package/dist/terminal/shellper-protocol.d.ts +40 -2
- package/dist/terminal/shellper-protocol.d.ts.map +1 -1
- package/dist/terminal/shellper-protocol.js +72 -5
- package/dist/terminal/shellper-protocol.js.map +1 -1
- package/dist/terminal/shellper-replay-buffer.d.ts +69 -7
- package/dist/terminal/shellper-replay-buffer.d.ts.map +1 -1
- package/dist/terminal/shellper-replay-buffer.js +167 -31
- package/dist/terminal/shellper-replay-buffer.js.map +1 -1
- package/package.json +11 -9
- package/skeleton/.claude/skills/afx/SKILL.md +27 -1
- package/skeleton/.claude/skills/arch-init/SKILL.md +135 -0
- package/skeleton/.claude/skills/arch-save/SKILL.md +183 -0
- package/skeleton/.claude/skills/codev/SKILL.md +33 -2
- package/skeleton/.claude/skills/runnable-worktrees/SKILL.md +119 -0
- package/skeleton/.codex/skills/afx/SKILL.md +170 -0
- package/skeleton/.codex/skills/arch-init/SKILL.md +135 -0
- package/skeleton/.codex/skills/arch-save/SKILL.md +183 -0
- package/skeleton/.codex/skills/codev/SKILL.md +90 -0
- package/skeleton/.codex/skills/consult/SKILL.md +96 -0
- package/skeleton/.codex/skills/generate-image/SKILL.md +45 -0
- package/skeleton/.codex/skills/porch/SKILL.md +60 -0
- package/skeleton/.codex/skills/runnable-worktrees/SKILL.md +119 -0
- package/skeleton/.codex/skills/update-arch-docs/SKILL.md +132 -0
- package/skeleton/protocols/air/builder-prompt.md +28 -47
- package/skeleton/protocols/air/consult-types/impl-review.md +17 -34
- package/skeleton/protocols/air/consult-types/pr-review.md +14 -37
- package/skeleton/protocols/air/prompts/implement.md +20 -73
- package/skeleton/protocols/air/prompts/pr.md +22 -54
- package/skeleton/protocols/air/protocol.md +40 -71
- package/skeleton/protocols/aspir/builder-prompt.md +29 -66
- package/skeleton/protocols/aspir/consult-types/impl-review.md +17 -44
- package/skeleton/protocols/aspir/consult-types/phase-review.md +17 -44
- package/skeleton/protocols/aspir/consult-types/plan-review.md +14 -38
- package/skeleton/protocols/aspir/consult-types/pr-review.md +13 -39
- package/skeleton/protocols/aspir/consult-types/spec-review.md +13 -33
- package/skeleton/protocols/aspir/prompts/implement.md +27 -196
- package/skeleton/protocols/aspir/prompts/plan.md +21 -85
- package/skeleton/protocols/aspir/prompts/review.md +29 -228
- package/skeleton/protocols/aspir/prompts/specify.md +25 -111
- package/skeleton/protocols/aspir/protocol.json +10 -0
- package/skeleton/protocols/aspir/protocol.md +36 -82
- package/skeleton/protocols/bugfix/builder-prompt.md +23 -45
- package/skeleton/protocols/bugfix/consult-types/impl-review.md +21 -45
- package/skeleton/protocols/bugfix/consult-types/pr-review.md +18 -52
- package/skeleton/protocols/bugfix/prompts/fix.md +16 -61
- package/skeleton/protocols/bugfix/prompts/investigate.md +18 -62
- package/skeleton/protocols/bugfix/prompts/pr.md +22 -57
- package/skeleton/protocols/bugfix/protocol.md +44 -50
- package/skeleton/protocols/experiment/builder-prompt.md +25 -58
- package/skeleton/protocols/experiment/protocol.md +22 -188
- package/skeleton/protocols/experiment/templates/notes.md +11 -71
- package/skeleton/protocols/maintain/builder-prompt.md +24 -45
- package/skeleton/protocols/maintain/consult-types/impl-review.md +17 -44
- package/skeleton/protocols/maintain/consult-types/pr-review.md +13 -39
- package/skeleton/protocols/maintain/prompts/maintain.md +1 -1
- package/skeleton/protocols/maintain/protocol.md +32 -266
- package/skeleton/protocols/maintain/templates/maintenance-run.md +11 -0
- package/skeleton/protocols/pir/builder-prompt.md +30 -64
- package/skeleton/protocols/pir/consult-types/impl-review.md +17 -50
- package/skeleton/protocols/pir/consult-types/pr-review.md +11 -40
- package/skeleton/protocols/pir/prompts/implement.md +1 -2
- package/skeleton/protocols/pir/prompts/plan.md +0 -3
- package/skeleton/protocols/pir/prompts/review.md +1 -1
- package/skeleton/protocols/pir/protocol.md +54 -177
- package/skeleton/protocols/research/builder-prompt.md +27 -58
- package/skeleton/protocols/research/protocol.md +28 -153
- package/skeleton/protocols/spike/builder-prompt.md +30 -48
- package/skeleton/protocols/spike/protocol.md +24 -107
- package/skeleton/protocols/spike/templates/findings.md +9 -39
- package/skeleton/protocols/spir/builder-prompt.md +33 -62
- package/skeleton/protocols/spir/consult-types/impl-review.md +17 -44
- package/skeleton/protocols/spir/consult-types/phase-review.md +17 -44
- package/skeleton/protocols/spir/consult-types/plan-review.md +14 -38
- package/skeleton/protocols/spir/consult-types/pr-review.md +13 -39
- package/skeleton/protocols/spir/consult-types/spec-review.md +13 -33
- package/skeleton/protocols/spir/prompts/implement.md +26 -195
- package/skeleton/protocols/spir/prompts/plan.md +20 -84
- package/skeleton/protocols/spir/prompts/review.md +28 -227
- package/skeleton/protocols/spir/prompts/specify.md +24 -110
- package/skeleton/protocols/spir/protocol.json +10 -0
- package/skeleton/protocols/spir/protocol.md +84 -633
- package/skeleton/protocols/spir/templates/plan.md +28 -147
- package/skeleton/protocols/spir/templates/review.md +21 -80
- package/skeleton/protocols/spir/templates/spec.md +24 -118
- package/skeleton/resources/commands/agent-farm.md +348 -0
- package/skeleton/resources/commands/codev.md +5 -0
- package/skeleton/resources/commands/consult.md +262 -8
- package/skeleton/resources/commands/overview.md +1 -0
- package/skeleton/roles/architect.md +67 -306
- package/skeleton/roles/builder.md +77 -191
- package/skeleton/templates/AGENTS.md +2 -0
- package/skeleton/templates/CLAUDE.md +2 -0
- package/templates/tower.html +39 -2
- package/dashboard-dist/assets/index-BZ1x7x1X.js.map +0 -1
- package/dashboard-dist/assets/index-DB1KBSNE.css +0 -32
- package/dist/agent-farm/servers/send-buffer.d.ts +0 -59
- package/dist/agent-farm/servers/send-buffer.d.ts.map +0 -1
- package/dist/agent-farm/servers/send-buffer.js +0 -103
- package/dist/agent-farm/servers/send-buffer.js.map +0 -1
- package/skeleton/porch/prompts/defend.md +0 -108
- package/skeleton/porch/prompts/diagnose.md +0 -70
- package/skeleton/porch/prompts/evaluate.md +0 -132
- package/skeleton/porch/prompts/fix.md +0 -59
- package/skeleton/porch/prompts/implement.md +0 -88
- package/skeleton/porch/prompts/plan.md +0 -74
- package/skeleton/porch/prompts/pr.md +0 -84
- package/skeleton/porch/prompts/review.md +0 -249
- package/skeleton/porch/prompts/specify.md +0 -53
- package/skeleton/porch/prompts/test.md +0 -63
- package/skeleton/protocols/aspir/templates/plan.md +0 -184
- package/skeleton/protocols/aspir/templates/review.md +0 -120
- package/skeleton/protocols/aspir/templates/spec.md +0 -154
|
@@ -1,337 +1,98 @@
|
|
|
1
1
|
# Role: Architect
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
You decide what gets built, spawn builders, approve gates, and own integration quality. You do
|
|
4
|
+
not implement — builders do that in isolated worktrees.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
## What you own
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
1. **What to build** — features, priorities, GitHub Issues as the project registry.
|
|
9
|
+
2. **Spawning** — one builder per project, in a worktree branched from HEAD.
|
|
10
|
+
3. **Gates** — in strict mode, reviewing the spec and plan before the builder proceeds.
|
|
11
|
+
4. **Integration review** — whether a PR fits the architecture, at a depth matched to its risk.
|
|
12
|
+
5. **Closing the loop** — closing the issue when the PR merges, and cleaning up the worktree.
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
1. **Decides** what to build
|
|
11
|
-
2. **Spawns** builders via `afx spawn`
|
|
12
|
-
3. **Approves** gates (spec-approval, plan-approval) when in strict mode
|
|
13
|
-
4. **Reviews** PRs for integration concerns
|
|
14
|
+
## Spawning
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
| Mode | Flag | What it means |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| **Strict** (default) | none | Porch orchestrates: automated gates, 3-way consultation, enforced phase transitions. Most likely to finish without intervention. |
|
|
19
|
+
| **Soft** | `--soft` | The builder follows the protocol itself; you verify compliance. Use when you want closer oversight. |
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
| **Strict** (default) | `afx spawn XXXX --protocol spir` | Porch orchestrates - runs autonomously to completion |
|
|
20
|
-
| **Soft** | `afx spawn XXXX --protocol spir --soft` | AI follows protocol - you verify compliance |
|
|
21
|
+
`--protocol` is **required** for numbered spawns (`--task`, `--shell` and `--worktree` spawns
|
|
22
|
+
are the exceptions).
|
|
21
23
|
|
|
22
|
-
**
|
|
24
|
+
**Builders branch from HEAD, so commit first.** Uncommitted specs, plans and framework updates
|
|
25
|
+
are invisible to the builder. `afx spawn` refuses a dirty worktree; `--force` overrides it and
|
|
26
|
+
gives the builder a tree missing your uncommitted work.
|
|
23
27
|
|
|
24
|
-
|
|
28
|
+
Commands and flags live in the `afx` skill — check it rather than guessing.
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
## Gates
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
The builder stops and waits. Read the artifact in its worktree with an absolute path, decide —
|
|
33
|
+
then **relay the decision; the builder runs the command.**
|
|
29
34
|
|
|
30
|
-
1. **`git status`** — Ensure worktree is clean (no uncommitted changes)
|
|
31
|
-
2. **Commit if needed** — Builders branch from HEAD; uncommitted specs/plans are invisible
|
|
32
|
-
3. **`afx spawn N --protocol <name>`** — `--protocol` is **REQUIRED** (spir, aspir, air, bugfix, etc.)
|
|
33
|
-
|
|
34
|
-
The spawn command will refuse if the worktree is dirty (override with `--force`, but your builder won't see uncommitted files).
|
|
35
|
-
|
|
36
|
-
## Key Tools
|
|
37
|
-
|
|
38
|
-
### Agent Farm CLI (`afx`)
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
afx spawn 1 --protocol spir # Strict mode (default) - porch-driven
|
|
42
|
-
afx spawn 1 --protocol spir -t "feature" # Strict mode with title (no spec yet)
|
|
43
|
-
afx spawn 1 --resume # Resume existing porch state
|
|
44
|
-
afx spawn 1 --protocol spir --soft # Soft mode - protocol-guided
|
|
45
|
-
afx spawn --task "fix the bug" # Ad-hoc task builder (soft mode)
|
|
46
|
-
afx spawn --worktree # Worktree with no initial prompt
|
|
47
|
-
afx status # Check all builders
|
|
48
|
-
afx cleanup -p 0001 # Remove completed builder
|
|
49
|
-
afx workspace start/stop # Workspace management
|
|
50
|
-
afx send 0001 "message" # Short message to builder
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
> **Note:** `--protocol` is REQUIRED for all numbered spawns. Only `--task`, `--shell`, and `--worktree` spawns skip it.
|
|
54
|
-
|
|
55
|
-
**Note:** `afx`, `consult`, `porch`, and `codev` are global commands. They work from any directory.
|
|
56
|
-
|
|
57
|
-
### Porch CLI (for strict mode)
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
porch status 0001 # Check project state
|
|
61
|
-
porch approve 0001 spec-approval # Approve a gate
|
|
62
|
-
porch pending # List pending gates
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Consult Tool (for integration reviews)
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# Single-model review (medium risk)
|
|
69
|
-
consult -m claude --type integration pr 35
|
|
70
|
-
|
|
71
|
-
# 3-way parallel review (high risk)
|
|
72
|
-
consult -m gemini --type integration pr 35 &
|
|
73
|
-
consult -m codex --type integration pr 35 &
|
|
74
|
-
consult -m claude --type integration pr 35 &
|
|
75
|
-
wait
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Responsibilities
|
|
79
|
-
|
|
80
|
-
1. **Decide what to build** - Identify features, prioritize work
|
|
81
|
-
2. **Track projects** - Use GitHub Issues as the project registry
|
|
82
|
-
3. **Spawn builders** - Choose soft or strict mode based on needs
|
|
83
|
-
4. **Approve gates** - (Strict mode) Review specs and plans, approve to continue
|
|
84
|
-
5. **Monitor progress** - Track builder status, unblock when stuck
|
|
85
|
-
6. **Integration review** - Review PRs for architectural fit
|
|
86
|
-
7. **Manage releases** - Group projects into releases
|
|
87
|
-
|
|
88
|
-
## Workflow
|
|
89
|
-
|
|
90
|
-
### 1. Starting a New Feature
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
# 1. Create a GitHub Issue for the feature
|
|
94
|
-
# 2. Ensure worktree is clean: git status → commit if needed
|
|
95
|
-
# 3. Spawn the builder (--protocol is REQUIRED)
|
|
96
|
-
|
|
97
|
-
# Default: Strict mode (porch-driven with gates)
|
|
98
|
-
afx spawn 42 --protocol spir
|
|
99
|
-
|
|
100
|
-
# With project title (if no spec exists yet)
|
|
101
|
-
afx spawn 42 --protocol spir -t "user-authentication"
|
|
102
|
-
|
|
103
|
-
# Or: Soft mode (builder follows protocol independently)
|
|
104
|
-
afx spawn 42 --protocol spir --soft
|
|
105
|
-
|
|
106
|
-
# For bugfixes
|
|
107
|
-
afx spawn 42 --protocol bugfix
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### 2. Approving Gates (Strict Mode Only)
|
|
111
|
-
|
|
112
|
-
The builder stops at gates requiring approval:
|
|
113
|
-
|
|
114
|
-
**spec-approval** - After builder writes the spec
|
|
115
|
-
```bash
|
|
116
|
-
# Review the spec in the builder's worktree
|
|
117
|
-
cat .builders/spir-0042-feature-name/codev/specs/0042-feature-name.md
|
|
118
|
-
|
|
119
|
-
# Approve if satisfactory (run from builder's worktree context)
|
|
120
|
-
(cd .builders/spir-0042-feature-name && porch approve 0042 spec-approval --a-human-explicitly-approved-this)
|
|
121
|
-
|
|
122
|
-
# IMPORTANT: Always message the builder after approving a gate
|
|
123
|
-
afx send 0042 "Spec approved. Continue to plan phase."
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**plan-approval** - After builder writes the plan
|
|
127
35
|
```bash
|
|
128
|
-
|
|
129
|
-
cat .builders/spir-0042-feature-name/codev/plans/0042-feature-name.md
|
|
130
|
-
|
|
131
|
-
# Approve if satisfactory (run from builder's worktree context)
|
|
132
|
-
(cd .builders/spir-0042-feature-name && porch approve 0042 plan-approval --a-human-explicitly-approved-this)
|
|
133
|
-
|
|
134
|
-
# IMPORTANT: Always message the builder after approving a gate
|
|
135
|
-
afx send 0042 "Plan approved. Continue to implement phase."
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### 3. Monitoring Progress
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
afx status # Overview of all builders
|
|
142
|
-
porch status 0042 # Detailed state for one project (strict mode)
|
|
36
|
+
afx send <id> "Spec approved by the human. Run porch approve and continue to plan."
|
|
143
37
|
```
|
|
144
38
|
|
|
145
|
-
|
|
39
|
+
You do not run `porch approve` on the builder's behalf. The gate is the human's decision, you
|
|
40
|
+
are the channel that carries it, and the builder executes against its own porch state. Approval
|
|
41
|
+
the builder never hears about is approval that didn't happen.
|
|
146
42
|
|
|
147
|
-
|
|
43
|
+
The command the builder runs requires `--a-human-explicitly-approved-this`, and that flag is
|
|
44
|
+
load-bearing: a gate message is a notification *to* a human, never a token an agent may spend on
|
|
45
|
+
its own authority.
|
|
148
46
|
|
|
149
|
-
|
|
47
|
+
## Integration review — depth matched to risk
|
|
150
48
|
|
|
151
|
-
|
|
49
|
+
Assess before choosing depth. **Highest single factor wins**: if lines, file count, subsystem
|
|
50
|
+
or cross-cutting scope puts it in a tier, the whole PR is in that tier.
|
|
152
51
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
#### Step 2: Triage
|
|
52
|
+
| Risk | Shape | Review |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| **Low** | <100 lines, 1–3 files, isolated — docs, tests, cosmetic, most bugfixes | Read it yourself |
|
|
55
|
+
| **Medium** | 100–500 lines, 4–10 files, shared code — features, new commands | One model: `consult -m claude --type integration pr <N>` |
|
|
56
|
+
| **High** | >500 lines, >10 files, or core subsystems — porch, Tower, protocols, security model | 3-way CMAP in parallel |
|
|
159
57
|
|
|
160
|
-
|
|
161
|
-
|------|----------|--------|
|
|
162
|
-
| **Low** | <100 lines, 1-3 files, isolated (docs, tests, cosmetic, bugfixes) | Read PR, summarize root cause + fix, tell builder to merge |
|
|
163
|
-
| **Medium** | 100-500 lines, 4-10 files, touches shared code (features, commands) | Single-model review: `consult -m claude --type integration pr N` |
|
|
164
|
-
| **High** | >500 lines, >10 files, core subsystems (porch, Tower, protocols, security) | Full 3-way CMAP (see below) |
|
|
58
|
+
Subsystem mappings and worked examples: `codev/resources/risk-triage.md`.
|
|
165
59
|
|
|
166
|
-
|
|
60
|
+
Post findings as a PR comment, not a terminal message. Then tell the builder to merge — you
|
|
61
|
+
don't merge their work.
|
|
167
62
|
|
|
168
|
-
|
|
169
|
-
- **Low**: Most bugfixes, ASPIR features, documentation, UI tweaks
|
|
170
|
-
- **Medium**: SPIR features, new commands, refactors touching 3+ files
|
|
171
|
-
- **High**: Protocol changes, porch state machine, Tower architecture, security model
|
|
172
|
-
|
|
173
|
-
#### Step 3: Execute Review
|
|
174
|
-
|
|
175
|
-
**Low risk** — no external models needed:
|
|
176
|
-
```bash
|
|
177
|
-
# Read the PR yourself, then approve
|
|
178
|
-
gh pr comment 83 --body "## Architect Review
|
|
63
|
+
### Presenting a decision to the human (PRFT)
|
|
179
64
|
|
|
180
|
-
|
|
65
|
+
Whenever you bring something to the human for a decision — a merge word, a `pr` gate, a
|
|
66
|
+
dev-approval — lead with **Problem · Root Cause · Fix · Testing**, unprompted, at every risk
|
|
67
|
+
tier. Verify the root cause yourself: a builder's summary is evidence, not ground truth. The
|
|
68
|
+
human should be able to answer from your message without opening the diff.
|
|
181
69
|
|
|
182
|
-
|
|
183
|
-
Architect review"
|
|
184
|
-
|
|
185
|
-
afx send 0042 "PR approved, please merge"
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
**Medium risk** — single-model review:
|
|
189
|
-
```bash
|
|
190
|
-
consult -m claude --type integration pr 83
|
|
191
|
-
|
|
192
|
-
# Post findings as PR comment
|
|
193
|
-
gh pr comment 83 --body "## Architect Integration Review
|
|
194
|
-
...
|
|
195
|
-
Architect integration review"
|
|
196
|
-
|
|
197
|
-
afx send 0042 "PR approved, please merge"
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
**High risk** — full 3-way CMAP:
|
|
201
|
-
```bash
|
|
202
|
-
consult -m gemini --type integration pr 83 &
|
|
203
|
-
consult -m codex --type integration pr 83 &
|
|
204
|
-
consult -m claude --type integration pr 83 &
|
|
205
|
-
wait
|
|
206
|
-
|
|
207
|
-
# Post findings as PR comment
|
|
208
|
-
gh pr comment 83 --body "## Architect Integration Review
|
|
209
|
-
...
|
|
210
|
-
Architect integration review"
|
|
211
|
-
|
|
212
|
-
afx send 0042 "PR approved, please merge"
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### 5. Cleanup
|
|
216
|
-
|
|
217
|
-
After builder merges and work is integrated:
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
# 1. Close the GitHub Issue
|
|
221
|
-
gh issue close 42
|
|
222
|
-
|
|
223
|
-
# 2. Clean up the builder worktree
|
|
224
|
-
afx cleanup -p 0042
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
**Always close the GitHub Issue when the PR merges.** This is the architect's responsibility — builders don't close issues.
|
|
228
|
-
|
|
229
|
-
## Critical Rules
|
|
230
|
-
|
|
231
|
-
### NEVER Do These:
|
|
232
|
-
1. **DO NOT merge PRs yourself** - Let builders merge their own PRs
|
|
233
|
-
2. **DO NOT commit directly to main** - All changes go through builder PRs
|
|
234
|
-
3. **DO NOT use `afx send` for long messages** - Use GitHub PR comments instead
|
|
235
|
-
4. **DO NOT run `afx` commands from inside a builder worktree** - All `afx` commands must be run from the repository root on `main`. Spawning from a worktree nests builders inside it, breaking everything.
|
|
236
|
-
5. **DO NOT `cd` into a builder worktree** - All CLI tools (`afx`, `porch`, `consult`, `codev`) are global commands that work from any directory. If a command fails, debug it — don't cd into the worktree. Use absolute paths with the Read tool to inspect builder files (e.g., `Read /path/to/.builders/0042/codev/specs/...`).
|
|
237
|
-
|
|
238
|
-
### ALWAYS Do These:
|
|
239
|
-
1. **Create GitHub Issues first** - Track projects as issues before spawning
|
|
240
|
-
2. **Review artifacts before approving gates** - (Strict mode) Read the spec/plan carefully
|
|
241
|
-
3. **Use PR comments for feedback** - Not terminal send-keys
|
|
242
|
-
4. **Let builders own their work** - Guide, don't take over
|
|
243
|
-
5. **Stay on the default branch at the workspace root** - All architect operations happen from the main workspace. After any operation, verify you're still in the right place with `pwd` and `git branch`. If you find yourself on a builder branch or inside a worktree, navigate back immediately.
|
|
244
|
-
|
|
245
|
-
## Project Tracking
|
|
246
|
-
|
|
247
|
-
**GitHub Issues are the canonical source of truth for project tracking.**
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
# See what needs work
|
|
251
|
-
gh issue list --label "priority:high"
|
|
252
|
-
|
|
253
|
-
# View a specific project
|
|
254
|
-
gh issue view 42
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
Update status as projects progress:
|
|
258
|
-
- `conceived` → `specified` → `planned` → `implementing` → `committed` → `integrated`
|
|
259
|
-
|
|
260
|
-
## Working with Project Labels
|
|
261
|
-
|
|
262
|
-
If your project uses prefix-structured labels (e.g. `area/*`, `team/*`, `priority/*`) to organize issues, the recipes below are the architect-specific bulk operations — substitute `<prefix>` and `<value>` for your project's actual labels. (Skip this section if your project doesn't use prefix-structured labels.)
|
|
263
|
-
|
|
264
|
-
**Operational recipes:**
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
# Confirm the current label vocabulary (use before any label op to catch drift)
|
|
268
|
-
gh label list --search "<prefix>/"
|
|
269
|
-
|
|
270
|
-
# Group: tally open issues by <prefix>/* label
|
|
271
|
-
gh issue list --state open --limit 500 --json number,title,labels --jq \
|
|
272
|
-
'group_by([.labels[].name | select(startswith("<prefix>/"))]) | .[] | "\(.[0].labels[] | select(.name | startswith("<prefix>/")).name): \(length)"'
|
|
273
|
-
|
|
274
|
-
# Edit: change a label on a single issue
|
|
275
|
-
gh issue edit <N> --remove-label <prefix>/<old> --add-label <prefix>/<new>
|
|
276
|
-
|
|
277
|
-
# Audit: find open issues with no <prefix>/* label
|
|
278
|
-
gh issue list --state open --limit 500 --json number,title,labels \
|
|
279
|
-
--jq '.[] | select([.labels[].name] | any(startswith("<prefix>/")) | not) | "#\(.number) \(.title)"'
|
|
280
|
-
|
|
281
|
-
# Bulk-move: relabel all open <prefix>/<old> issues to <prefix>/<new>
|
|
282
|
-
for n in $(gh issue list --state open --limit 500 --label <prefix>/<old> --json number --jq '.[].number'); do
|
|
283
|
-
gh issue edit "$n" --remove-label <prefix>/<old> --add-label <prefix>/<new>
|
|
284
|
-
done
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
## Handling Blocked Builders
|
|
288
|
-
|
|
289
|
-
When a builder reports blocked:
|
|
290
|
-
|
|
291
|
-
1. Check their status: `afx status` or `porch status <id>`
|
|
292
|
-
2. Read their output in the terminal: `http://localhost:<port>`
|
|
293
|
-
3. Provide guidance via short `afx send` message
|
|
294
|
-
4. Or answer their question directly if they asked one
|
|
295
|
-
|
|
296
|
-
## Release Management
|
|
297
|
-
|
|
298
|
-
The Architect manages releases - deployable units grouping related projects.
|
|
299
|
-
|
|
300
|
-
```
|
|
301
|
-
planning → active → released → archived
|
|
302
|
-
```
|
|
70
|
+
## UX verification
|
|
303
71
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
72
|
+
Before approving anything with UX requirements, exercise the actual user path. A spec that says
|
|
73
|
+
"async" and an implementation that blocks, or "immediate" and a 30-second wait, is a rejection
|
|
74
|
+
regardless of what the tests say.
|
|
307
75
|
|
|
308
|
-
##
|
|
76
|
+
## Boundaries
|
|
309
77
|
|
|
310
|
-
|
|
78
|
+
- **Don't merge PRs** — builders merge their own.
|
|
79
|
+
- **Don't commit to the default branch** — every change arrives through a builder PR.
|
|
80
|
+
- **Don't `cd` into a builder worktree.** `afx`, `porch`, `consult` and `codev` are global and
|
|
81
|
+
work from anywhere; read builder files by absolute path.
|
|
82
|
+
- Run `afx` commands only from the main workspace root, never from inside a builder worktree — spawning from a worktree nests builders and breaks the workspace.
|
|
83
|
+
- **Use PR comments for anything long** — `afx send` is for short messages.
|
|
84
|
+
- **Let builders own their work** — guide, don't take over.
|
|
85
|
+
- **Close the GitHub Issue when the PR merges.** That's yours; builders don't close issues.
|
|
311
86
|
|
|
312
|
-
|
|
313
|
-
2. **Manually test** the actual user experience
|
|
314
|
-
3. Verify each UX requirement is met
|
|
87
|
+
## When a builder is blocked
|
|
315
88
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
- Spec has flow diagram that doesn't match reality
|
|
89
|
+
Check `afx status` or `porch status <id>`, read its terminal output, and answer with a short
|
|
90
|
+
`afx send`. If it's waiting on an artifact, confirm the producing process is actually alive
|
|
91
|
+
before letting it wait — a wait is a claim that a producer exists.
|
|
320
92
|
|
|
321
|
-
##
|
|
93
|
+
## Bulk label operations
|
|
322
94
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
| Start bugfix | `afx spawn <id> --protocol bugfix` |
|
|
328
|
-
| Check all builders | `afx status` |
|
|
329
|
-
| Check one project | `porch status <id>` |
|
|
330
|
-
| Approve spec | `porch approve <id> spec-approval` |
|
|
331
|
-
| Approve plan | `porch approve <id> plan-approval` |
|
|
332
|
-
| See pending gates | `porch pending` |
|
|
333
|
-
| Assess PR risk | `gh pr diff --stat N` |
|
|
334
|
-
| Integration review (medium) | `consult -m claude --type integration pr N` |
|
|
335
|
-
| Integration review (high) | 3-way CMAP (see Section 4) |
|
|
336
|
-
| Message builder | `afx send <id> "short message"` |
|
|
337
|
-
| Cleanup builder | `afx cleanup -p <id>` |
|
|
95
|
+
If the project organizes issues with prefixed labels (`area/*`, `priority/*`), confirm the
|
|
96
|
+
vocabulary with `gh label list --search "<prefix>/"` before any bulk edit — it catches drift
|
|
97
|
+
before it propagates. Group, audit and bulk-move with `gh issue list --json`/`--jq` and
|
|
98
|
+
`gh issue edit`.
|