@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
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: update-arch-docs
|
|
3
|
+
description: "Audit, prune, and update the project's governance docs — the COLD reference archives `codev/resources/arch.md` and `codev/resources/lessons-learned.md` AND their always-on HOT companions `codev/resources/arch-critical.md` and `codev/resources/lessons-critical.md` (Spec 987, hot/cold two-tier model). Use this skill when running MAINTAIN's arch-doc step, or when asked to update / audit / prune any of those four files. It polices the hot-tier cap (capped facts/lessons + a bounded cold-doc map), enforces displacement (demote to cold when full), keeps each hot file's map accurate, and is opinionated about what NOT to put in each tier (per-spec changelogs, exhaustive enumerations, aspirational state). Two modes: diff-mode (apply a specific change) and audit-mode (propose cuts with reasons). Edits files directly via normal file-edit tooling; no destructive shell commands."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# update-arch-docs
|
|
7
|
+
|
|
8
|
+
This skill maintains the project's governance docs, each split into **two tiers** (Spec 987):
|
|
9
|
+
|
|
10
|
+
- **COLD reference archives** — `codev/resources/arch.md` (architecture) and `codev/resources/lessons-learned.md` (durable wisdom). Full, on-demand; grepped/read for depth.
|
|
11
|
+
- **HOT always-on companions** — `codev/resources/arch-critical.md` and `codev/resources/lessons-critical.md`. Tiny, **hard-capped**, **always injected** into every porch prompt and into CLAUDE.md/AGENTS.md. Each holds capped facts/lessons **plus a bounded "consult when…" map** of its cold doc's top-level topics.
|
|
12
|
+
|
|
13
|
+
It is invoked by the MAINTAIN protocol's documentation step, and ad-hoc whenever someone updates, audits, or prunes any of these files. The skill is opinionated about *what does not belong* in each tier and **polices the hot-tier cap, displacement, and map accuracy**. Use it whenever a doc change touches any of the four files.
|
|
14
|
+
|
|
15
|
+
## What this skill does NOT do
|
|
16
|
+
|
|
17
|
+
These are the patterns that have, in practice, caused arch.md and lessons-learned.md to grow without bound. Treat them as bright-line rejections during both audit-mode and diff-mode work.
|
|
18
|
+
|
|
19
|
+
### In arch.md
|
|
20
|
+
|
|
21
|
+
- **Per-file enumerations** that go stale the moment they're written. Document the *shape* of a directory and the handful of load-bearing files; do not list every file. `git ls-files` is authoritative; the doc is for orientation.
|
|
22
|
+
- **Per-spec changelog sections** ("Spec 0042 added X, Spec 0073 changed Y"). Architecture is current state, not history. The git log + the spec/review documents own the changelog framing.
|
|
23
|
+
- **Specs/plans tables** that mirror the contents of `codev/specs/` and `codev/plans/`. These are duplicative and rot quickly. Link to the directory; do not paginate it into the doc.
|
|
24
|
+
- **Aspirational state** ("we plan to…", "in the next phase we'll…"). That belongs in the relevant meta-spec or roadmap doc, not in the architecture body. arch.md describes what *is*, not what *might be*.
|
|
25
|
+
- **Date-stamped narrative** ("As of 2026-Q2, the system uses…"). Dates make the doc look fresh while making it harder to maintain. Use git log + commit dates for temporal context.
|
|
26
|
+
- **Duplication of meta-spec content**. If a subsystem has its own meta-spec under `codev/architecture/<domain>.md` or under `codev/specs/`, arch.md should carry a 1-paragraph summary plus a pointer — not a copy.
|
|
27
|
+
- **Retired-component graveyards**. When a component is removed, delete its section. `git log` retains history; an arch.md that describes things that no longer exist is misleading.
|
|
28
|
+
|
|
29
|
+
### In the HOT files (`arch-critical.md`, `lessons-critical.md`)
|
|
30
|
+
|
|
31
|
+
These are capped, always-on, and **behavior-changers only**. Bright-line rejections:
|
|
32
|
+
|
|
33
|
+
- **Anything over the cap.** Each hot file fits in a handful of lines (≈10 single-line facts/lessons + a cold-doc map of ≈12 top-level topics, ≤35 lines). To add an entry, **demote** a weaker one into the cold doc (displacement) — never grow the hot file.
|
|
34
|
+
- **Spec-narrow recipes / reference detail.** Those go in the COLD archive (reference), never the hot file.
|
|
35
|
+
- **A full/auto table of contents** in the cold-doc map. The map lists only **top-level** cold-doc sections, each with a one-line "consult when…" — never every entry.
|
|
36
|
+
- **Multi-paragraph entries.** One line each.
|
|
37
|
+
|
|
38
|
+
### In the COLD archives (`arch.md`, `lessons-learned.md`)
|
|
39
|
+
|
|
40
|
+
These are the on-demand **reference**. They may hold spec-narrow recipes and deeper detail — the anti-accretion discipline lives in the hot cap, not here. Still avoid:
|
|
41
|
+
|
|
42
|
+
- **Multi-paragraph lesson entries**. Split or compress to 1–3 sentences.
|
|
43
|
+
- **Duplicate adjacent entries**. Fold variations of the same lesson into one.
|
|
44
|
+
- **Spec-numbered narrative framing** ("Lesson from #0468:…"). State the general principle; link the review if needed.
|
|
45
|
+
|
|
46
|
+
### In either file (process)
|
|
47
|
+
|
|
48
|
+
- **Destructive shell commands**. The skill must not invoke `rm -rf`, `git rm`, or destructive `sed` scripts. All edits go through the normal Edit tool. The MAINTAIN PR diff is the human-confirmation step; that's enough.
|
|
49
|
+
|
|
50
|
+
## arch.md vs. lessons-learned.md (two-doc framing)
|
|
51
|
+
|
|
52
|
+
Treat the two files as siblings with different purposes. When in doubt about which file a fact belongs in, route by purpose:
|
|
53
|
+
|
|
54
|
+
| Purpose | Goes in |
|
|
55
|
+
|---|---|
|
|
56
|
+
| Current system shape — services, transports, key mental models | `arch.md` |
|
|
57
|
+
| Mechanism for a unique subsystem | `arch.md` (subsystem section) — or its own meta-spec if the mechanism is large enough to warrant one, with arch.md keeping a 1-paragraph summary + pointer |
|
|
58
|
+
| Pointers ("see meta-spec X for details") | `arch.md` |
|
|
59
|
+
| A durable engineering pattern that applies across multiple specs | `lessons-learned.md` |
|
|
60
|
+
| A system-shape surprise verified-wrong in production ("looks like X but isn't") | `arch.md` § "Verified-Wrong Assumptions" — *not* lessons-learned.md, because it's a property of the system, not a general pattern |
|
|
61
|
+
|
|
62
|
+
The "system-shape surprise" routing is the one most often gotten wrong. If a future reader needs to know "the system *looks* like X but actually does Y", that is system shape and lives in arch.md. If they need to know "we learned that doing X is generally a bad idea", that is engineering wisdom and lives in lessons-learned.md.
|
|
63
|
+
|
|
64
|
+
That arch-vs-lessons routing is the **cold-tier** axis. **Orthogonal to it is the hot/cold axis**: once you know a fact is architecture (or a lesson), decide whether it is *behavior-changing enough* to earn a slot in the capped hot companion, or whether it is reference detail for the cold archive.
|
|
65
|
+
|
|
66
|
+
## Hot tier: cap, displacement, and map accuracy
|
|
67
|
+
|
|
68
|
+
The hot files (`arch-critical.md`, `lessons-critical.md`) are the behavior-changers, and their value depends on staying tiny. When MAINTAIN runs — or any update touches them — enforce:
|
|
69
|
+
|
|
70
|
+
- **Cap.** Each hot file fits in a handful of lines: ≈10 single-line facts/lessons **plus** a cold-doc map of ≈12 top-level topics, ≤35 lines total. If an addition would exceed the cap, **demote** the weakest existing entry into the corresponding cold doc rather than growing the hot file. The cap is load-bearing: it is what keeps the hot tier cheap enough to inject into *every* prompt.
|
|
71
|
+
- **Map accuracy (bounded AND accurate).** Each hot file ends with a "Map of <cold doc> (consult when…)" listing only the cold doc's **top-level** sections, each with a one-line "consult when…". As cold-doc sections are added / renamed / removed, update the map to match — but keep it top-level only; never expand it into a full table of contents (that re-creates the accretion the hot tier exists to avoid).
|
|
72
|
+
- **Behavior-changers only.** A hot entry must be something that should change a decision up front. Reference detail, recipes, and one-offs belong in the cold archive — demote on sight.
|
|
73
|
+
|
|
74
|
+
## Sizing by purpose, not by line count
|
|
75
|
+
|
|
76
|
+
There is no line-count budget for either file. The right size for each section is determined by what the section needs to do. If a subsystem genuinely has unique mechanism that takes 80 lines to explain clearly, 80 lines is the right size. If a subsystem can be described in 5 lines and a pointer to a meta-spec, 5 lines is right.
|
|
77
|
+
|
|
78
|
+
What's *wrong* is bulk that comes from any of the patterns in "What this skill does NOT do" above. Strip those, and the file's size will land where it belongs.
|
|
79
|
+
|
|
80
|
+
When proposing a section, ask: "Could a future reader skip this section without losing anything load-bearing?" If yes, the section should not exist. The doc's purpose is orientation, not completeness.
|
|
81
|
+
|
|
82
|
+
## Mode: diff-mode (apply a specific change)
|
|
83
|
+
|
|
84
|
+
Use diff-mode when the request is specific: "add a section about the new caching layer," "update the Glossary entry for Tower," "remove the reference to the deleted dashboard-server."
|
|
85
|
+
|
|
86
|
+
In diff-mode:
|
|
87
|
+
|
|
88
|
+
1. Find the smallest section that needs to change.
|
|
89
|
+
2. Apply the change via the Edit tool.
|
|
90
|
+
3. If the change adds new content, run a quick sanity check against "What this skill does NOT do" before saving — make sure the new content is current state, not aspirational; not duplicative of a meta-spec; not a per-spec changelog entry.
|
|
91
|
+
4. Surface the resulting diff for review.
|
|
92
|
+
|
|
93
|
+
Diff-mode is fast. It is the right mode for ~80% of post-MAINTAIN documentation work.
|
|
94
|
+
|
|
95
|
+
## Mode: audit-mode (identify what to cut)
|
|
96
|
+
|
|
97
|
+
Use audit-mode when the request is general: "the doc feels stale," "MAINTAIN says it's time to prune," "review arch.md against the principles."
|
|
98
|
+
|
|
99
|
+
In audit-mode:
|
|
100
|
+
|
|
101
|
+
1. Read the file end-to-end.
|
|
102
|
+
2. For each section in arch.md, run through the per-section pruning checklist (from the MAINTAIN protocol):
|
|
103
|
+
- Does it describe *current state*? If aspirational, the section moves to a meta-spec; the arch.md keeps a 1-paragraph summary + pointer (or nothing, if the meta-spec stands on its own).
|
|
104
|
+
- Does it duplicate a meta-spec? If yes, replace with a 1-paragraph summary + pointer.
|
|
105
|
+
- Is it a per-file enumeration that's gone stale? If yes, prune to the directory shape + a few key files.
|
|
106
|
+
- Is it a changelog/narrative section ("Spec 0042 added X")? If yes, absorb the architecturally-relevant facts and remove the spec-numbered framing.
|
|
107
|
+
- Is the component still alive? If retired, delete the section entirely.
|
|
108
|
+
3. For each entry in the COLD `lessons-learned.md`, run the per-entry checklist:
|
|
109
|
+
- Is it terse (1–3 sentences)? If multi-paragraph, split or compress.
|
|
110
|
+
- Is the topic section the right one? If filed under "Architecture (continued)" or a spec-numbered section, move it to the right topical home.
|
|
111
|
+
- Is it a duplicate of an adjacent entry? If yes, fold them.
|
|
112
|
+
- (Spec-narrow recipes are **kept** here as reference — do not cut them just for being spec-narrow. Anti-accretion now lives in the hot cap, not in the cold archive.)
|
|
113
|
+
|
|
114
|
+
Then audit each **HOT** file (`arch-critical.md`, `lessons-critical.md`):
|
|
115
|
+
- **Cap**: within ≈10 entries + a ≈12-topic map, ≤35 lines? If over, **demote** the weakest entries into the cold doc.
|
|
116
|
+
- **Map accuracy**: does every map topic name a real top-level cold-doc section, and is any new/renamed section reflected? Fix drift; keep the map top-level only.
|
|
117
|
+
- **Behavior-changers only**: demote any reference detail that crept in.
|
|
118
|
+
4. **When in doubt, KEEP.** This rule comes from the MAINTAIN protocol and applies in audit-mode too. A confident cut is better than three speculative ones. Bias toward fewer, higher-confidence proposals with clear rationale; do not chase a maximum cut count.
|
|
119
|
+
5. Apply the cuts via the Edit tool — the skill does not produce a "candidate-cuts list and stop." The diff *is* the proposal. The MAINTAIN PR review is the human-confirmation step.
|
|
120
|
+
6. Surface a short reason alongside each cut in the run file (`codev/maintain/NNNN.md`) so PR reviewers can evaluate intent ("removed because: per-spec changelog framing"; "compressed because: duplicates the orchestrator meta-spec").
|
|
121
|
+
|
|
122
|
+
Audit-mode is slower than diff-mode and produces larger diffs. Reserve it for explicit audit invocations, not for routine doc updates.
|
|
123
|
+
|
|
124
|
+
## Output contract
|
|
125
|
+
|
|
126
|
+
The skill commits to the following:
|
|
127
|
+
|
|
128
|
+
- It edits the four governance files — `codev/resources/arch.md` / `arch-critical.md` and `codev/resources/lessons-learned.md` / `lessons-critical.md` — directly via the Edit tool.
|
|
129
|
+
- It does not invoke destructive shell commands (no `rm -rf`, no `git rm`, no destructive `sed`). File deletions happen only through Edit removing the relevant content; whole-file removal would be a structural change that is out of scope for this skill.
|
|
130
|
+
- In audit-mode, every removal is paired with a one-line reason in the MAINTAIN run file's `## Audit Findings` section. Rationale lives there so reviewers can evaluate intent without re-deriving it from the diff.
|
|
131
|
+
- The skill does not modify other files (specs, plans, reviews, source code). If a fact belongs somewhere else, the skill flags it; it does not move it.
|
|
132
|
+
- The skill does not edit live arch.md or lessons-learned.md content as a side effect of being read or invoked — only when the user/MAINTAIN protocol explicitly asks for an update or audit.
|
|
@@ -4,33 +4,33 @@ You are implementing {{input_description}}.
|
|
|
4
4
|
|
|
5
5
|
{{#if mode_soft}}
|
|
6
6
|
## Mode: SOFT
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- The architect monitors your work and verifies you're adhering to the protocol
|
|
10
|
-
- Consultation is optional — use your judgement based on complexity
|
|
11
|
-
- You have flexibility in execution, but must stay compliant with the protocol
|
|
7
|
+
|
|
8
|
+
You follow the protocol yourself; the architect verifies compliance.
|
|
12
9
|
{{/if}}
|
|
13
10
|
|
|
14
11
|
{{#if mode_strict}}
|
|
15
12
|
## Mode: STRICT
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
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
|
|
13
|
+
|
|
14
|
+
Porch orchestrates. `porch next` gives you tasks; `porch done` signals completion. Never
|
|
15
|
+
hand-edit `status.yaml` — only porch commands modify project state.
|
|
24
16
|
{{/if}}
|
|
25
17
|
|
|
26
18
|
## Protocol
|
|
27
|
-
|
|
19
|
+
|
|
20
|
+
The full protocol text is inlined below under **## Protocol Reference (full text)** — you do not
|
|
21
|
+
need to fetch it.
|
|
28
22
|
|
|
29
23
|
## Baked Decisions
|
|
30
24
|
|
|
31
|
-
If the issue body contains a section named "Baked Decisions" (any heading level,
|
|
25
|
+
If the issue body contains a section named "Baked Decisions" (any heading level,
|
|
26
|
+
case-insensitive), treat its contents as fixed architectural decisions baked in by the
|
|
27
|
+
architect. Do not autonomously override them in your spec, plan, or implementation. If you
|
|
28
|
+
discover a serious reason to question a baked decision, surface that concern to the architect
|
|
29
|
+
via `afx send` rather than relitigating it inside the spec/plan/review.
|
|
32
30
|
|
|
33
|
-
If the architect's baked-decisions section contains internal contradictions (e.g., two different
|
|
31
|
+
If the architect's baked-decisions section contains internal contradictions (e.g., two different
|
|
32
|
+
language choices), do not pick one — pause, flag the contradiction to the architect via
|
|
33
|
+
`afx send`, and wait for resolution before proceeding.
|
|
34
34
|
|
|
35
35
|
{{#if issue}}
|
|
36
36
|
## Issue #{{issue.number}}
|
|
@@ -38,44 +38,25 @@ If the architect's baked-decisions section contains internal contradictions (e.g
|
|
|
38
38
|
|
|
39
39
|
**Description**:
|
|
40
40
|
{{issue.body}}
|
|
41
|
+
{{/if}}
|
|
41
42
|
|
|
42
43
|
## Your Mission
|
|
43
|
-
1. Read the issue requirements carefully
|
|
44
|
-
2. Implement the feature (< 300 LOC)
|
|
45
|
-
3. Write tests for the feature
|
|
46
|
-
4. Create PR with review in the PR body (NOT as a separate file)
|
|
47
|
-
5. Notify architect via `afx send architect "PR #N ready for review (implements #{{issue.number}})"`
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
1. Implement the feature from the issue (<300 LOC)
|
|
46
|
+
2. Write tests for it
|
|
47
|
+
3. Open a PR with the review **in the PR body**, not as a separate file
|
|
48
|
+
4. Notify: `afx send architect "PR #N ready for review (implements #{{issue.number}})"`
|
|
49
|
+
|
|
50
|
+
**AIR produces no spec, plan, or review files.** That is the whole economy of the protocol.
|
|
51
|
+
|
|
52
|
+
If the feature turns out larger than AIR fits (>300 LOC, or an architectural decision the issue
|
|
53
|
+
does not make), stop and say so rather than growing it quietly:
|
|
50
54
|
|
|
51
|
-
If the feature is too complex (> 300 LOC or architectural changes), notify the Architect via:
|
|
52
55
|
```bash
|
|
53
56
|
afx send architect "Issue #{{issue.number}} is more complex than expected. [Reason]. Recommend escalating to ASPIR."
|
|
54
57
|
```
|
|
55
58
|
|
|
56
59
|
## Notifications
|
|
57
|
-
Always use `afx send architect "..."` to notify the architect at key moments:
|
|
58
|
-
- **PR ready**: `afx send architect "PR #N ready for review (implements #{{issue.number}})"`
|
|
59
|
-
- **PR merged**: `afx send architect "PR #N merged for issue #{{issue.number}}. Ready for cleanup."`
|
|
60
|
-
- **Blocked**: `afx send architect "Blocked on issue #{{issue.number}}: [reason]"`
|
|
61
|
-
{{/if}}
|
|
62
|
-
|
|
63
|
-
## Handling Flaky Tests
|
|
64
|
-
|
|
65
|
-
If you encounter **pre-existing flaky tests** (intermittent failures unrelated to your changes):
|
|
66
|
-
1. **DO NOT** edit `status.yaml` to bypass checks
|
|
67
|
-
2. **DO NOT** skip porch checks or use any workaround to avoid the failure
|
|
68
|
-
3. **DO** mark the test as skipped with a clear annotation (e.g., `it.skip('...') // FLAKY: skipped pending investigation`)
|
|
69
|
-
4. **DO** document each skipped flaky test in the PR body under a "Flaky Tests" section
|
|
70
|
-
5. Commit the skip and continue with your work
|
|
71
|
-
|
|
72
|
-
## Getting Started
|
|
73
|
-
1. Read the AIR protocol
|
|
74
|
-
2. Review the issue details
|
|
75
|
-
3. Implement the feature
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Protocol Reference (full text)
|
|
80
60
|
|
|
81
|
-
|
|
61
|
+
The architect is not watching. `afx send architect "..."` at each of: gate reached, PR ready, PR
|
|
62
|
+
merged, blocked.
|
|
@@ -1,43 +1,32 @@
|
|
|
1
1
|
# Implementation Review Prompt
|
|
2
2
|
|
|
3
3
|
## Context
|
|
4
|
-
You are reviewing implementation work for a small feature built under the AIR protocol. The builder implemented directly from a GitHub issue — there is no spec or plan document. Your job is to verify the implementation matches the issue requirements and follows good practices.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
You are reviewing implementation work built under the AIR protocol — a small feature implemented directly from a GitHub issue, with no spec or plan document. Verify it matches the issue and follows good practice; review against the issue, not against artifacts AIR does not produce.
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
## Verify before flagging
|
|
8
|
+
|
|
9
|
+
Before requesting changes for missing configuration, wrong patterns, or framework issues, confirm the claim against the project rather than your training data:
|
|
10
|
+
|
|
11
|
+
- Check `package.json` for the actual dependency versions — framework conventions change between major versions.
|
|
12
|
+
- Read the actual config files (or confirm their deliberate absence) before flagging a missing config.
|
|
12
13
|
|
|
13
14
|
## Baked Decisions
|
|
14
15
|
|
|
15
16
|
If the issue body includes content under a "Baked Decisions" heading, the architect has marked those choices as fixed. Do not autonomously challenge them: do not propose alternative languages, frameworks, deployment shapes, or dependencies that contradict a baked decision. You may `COMMENT` with concerns about a baked decision (the architect decides whether to rescind it); reserve `REQUEST_CHANGES` for the case where the implementation **fails to honor** a stated baked decision — that is a real defect.
|
|
16
17
|
|
|
17
|
-
If the baked decisions themselves
|
|
18
|
+
If the baked decisions themselves contradict each other, do not pick one — `REQUEST_CHANGES` and ask the architect to clarify before proceeding.
|
|
18
19
|
|
|
19
20
|
## Focus Areas
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
2. **Code Quality**
|
|
26
|
-
- Is the code readable and maintainable?
|
|
27
|
-
- Are there obvious bugs or issues?
|
|
28
|
-
- Are error cases handled appropriately?
|
|
29
|
-
|
|
30
|
-
3. **Test Coverage**
|
|
31
|
-
- Are the tests adequate?
|
|
32
|
-
- Do tests cover the main paths AND edge cases?
|
|
33
|
-
|
|
34
|
-
4. **Scope**
|
|
35
|
-
- Is the change under 300 LOC? If not, should this be escalated to ASPIR?
|
|
36
|
-
- Does the implementation stay focused on the issue, or does it include unrelated changes?
|
|
22
|
+
- **Issue Adherence** — the implementation fulfills the issue's requirements and acceptance criteria.
|
|
23
|
+
- **Code Quality** — readable and maintainable; no obvious bugs; error cases handled.
|
|
24
|
+
- **Test Coverage** — tests are adequate and cover main paths and edge cases.
|
|
25
|
+
- **Scope** — the change stays focused on the issue and under ~300 LOC; if larger, it should escalate to ASPIR.
|
|
37
26
|
|
|
38
27
|
## Verdict Format
|
|
39
28
|
|
|
40
|
-
|
|
29
|
+
Provide your verdict in exactly this format — `consult` parses it:
|
|
41
30
|
|
|
42
31
|
```
|
|
43
32
|
---
|
|
@@ -51,14 +40,8 @@ KEY_ISSUES:
|
|
|
51
40
|
...
|
|
52
41
|
```
|
|
53
42
|
|
|
54
|
-
|
|
55
|
-
- `
|
|
56
|
-
- `
|
|
57
|
-
- `COMMENT`: Minor suggestions, can proceed but note feedback
|
|
58
|
-
|
|
59
|
-
## Notes
|
|
43
|
+
- `APPROVE`: implementation looks good, ready for PR.
|
|
44
|
+
- `REQUEST_CHANGES`: issues that must be fixed.
|
|
45
|
+
- `COMMENT`: minor suggestions; can proceed but note the feedback.
|
|
60
46
|
|
|
61
|
-
|
|
62
|
-
- Focus on "does this feature work correctly" not "is this architecturally perfect"
|
|
63
|
-
- If referencing line numbers, use `file:line` format
|
|
64
|
-
- The builder needs actionable feedback
|
|
47
|
+
AIR has no spec or plan — review against the GitHub issue, and judge "does this feature work correctly", not "is this architecturally perfect".
|
|
@@ -1,48 +1,30 @@
|
|
|
1
1
|
# PR Ready Review Prompt
|
|
2
2
|
|
|
3
3
|
## Context
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
You are reviewing a pull request created under the AIR protocol — a small feature implemented directly from a GitHub issue, with no spec, plan, or review file. The review is embedded in the PR body.
|
|
5
6
|
|
|
6
7
|
## Baked Decisions
|
|
7
8
|
|
|
8
9
|
If the issue body includes content under a "Baked Decisions" heading, the architect has marked those choices as fixed. Do not autonomously challenge them: do not propose alternative languages, frameworks, deployment shapes, or dependencies that contradict a baked decision. You may `COMMENT` with concerns about a baked decision (the architect decides whether to rescind it); reserve `REQUEST_CHANGES` for the case where the code **fails to honor** a stated baked decision — that is a real defect.
|
|
9
10
|
|
|
10
|
-
If the baked decisions themselves
|
|
11
|
+
If the baked decisions themselves contradict each other, do not pick one — `REQUEST_CHANGES` and ask the architect to clarify before proceeding.
|
|
11
12
|
|
|
12
13
|
## Focus Areas
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
2. **Test Status**
|
|
20
|
-
- Do all tests pass?
|
|
21
|
-
- Is test coverage adequate for the changes?
|
|
22
|
-
- Are there any skipped or flaky tests?
|
|
23
|
-
|
|
24
|
-
3. **Code Cleanliness**
|
|
25
|
-
- Is there any debug code left in?
|
|
26
|
-
- Are there any TODO comments that should be resolved?
|
|
27
|
-
- Is the code properly formatted?
|
|
28
|
-
|
|
29
|
-
4. **Scope**
|
|
30
|
-
- Is the change under 300 LOC?
|
|
31
|
-
- Does the implementation stay focused on the issue?
|
|
32
|
-
- Are there unrelated changes bundled in?
|
|
33
|
-
|
|
34
|
-
5. **PR Quality**
|
|
35
|
-
- Does the PR link to the issue?
|
|
36
|
-
- Is the PR body review section informative?
|
|
37
|
-
- Is the branch up to date with its base (the integration branch the PR targets)?
|
|
15
|
+
- **Completeness** — the issue's requirements are implemented and the PR body's review section (summary, key decisions, test plan) is filled out.
|
|
16
|
+
- **Test Status** — all tests pass, coverage is adequate, and any skipped/flaky tests are accounted for.
|
|
17
|
+
- **Code Cleanliness** — no debug code, no stray `TODO`, code properly formatted.
|
|
18
|
+
- **Scope** — the change stays under ~300 LOC and focused on the issue, with no unrelated changes bundled in.
|
|
19
|
+
- **PR Quality** — the PR links to the issue, the body's review section is informative, and the branch is up to date with its base (the integration branch the PR targets).
|
|
38
20
|
|
|
39
21
|
## Scope
|
|
40
22
|
|
|
41
|
-
|
|
23
|
+
Do not flag the syntax of `git diff` examples that appear in review-file prose (e.g. `git diff ci..HEAD` inside a "Files Changed" caption) — quoted diff syntax is documentation, not a command. Apply two-dot/three-dot scrutiny only to diffs you compute yourself.
|
|
42
24
|
|
|
43
25
|
## Verdict Format
|
|
44
26
|
|
|
45
|
-
|
|
27
|
+
Provide your verdict in exactly this format — `consult` parses it:
|
|
46
28
|
|
|
47
29
|
```
|
|
48
30
|
---
|
|
@@ -56,13 +38,8 @@ KEY_ISSUES:
|
|
|
56
38
|
...
|
|
57
39
|
```
|
|
58
40
|
|
|
59
|
-
|
|
60
|
-
- `
|
|
61
|
-
- `
|
|
62
|
-
- `COMMENT`: Minor items, can proceed but note feedback
|
|
63
|
-
|
|
64
|
-
## Notes
|
|
41
|
+
- `APPROVE`: ready for architect review.
|
|
42
|
+
- `REQUEST_CHANGES`: issues to fix before review.
|
|
43
|
+
- `COMMENT`: minor items; can proceed but note the feedback.
|
|
65
44
|
|
|
66
|
-
|
|
67
|
-
- Focus on "is this ready for someone else to review" not "is this perfect"
|
|
68
|
-
- Any issues found here are cheaper to fix than during integration review
|
|
45
|
+
AIR has no spec, plan, or review files — review the PR body and the code diff.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
You are executing the **IMPLEMENT** phase of the AIR protocol.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Goal
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Implement the feature described in the issue, with tests, as a focused change under ~300 LOC. AIR produces no `codev/specs/` or `codev/plans/` artifacts.
|
|
8
8
|
|
|
9
9
|
## Baked Decisions
|
|
10
10
|
|
|
@@ -17,79 +17,26 @@ If two baked decisions contradict each other, do not pick one — pause, flag th
|
|
|
17
17
|
- **Issue**: #{{issue.number}} — {{issue.title}}
|
|
18
18
|
- **Current State**: {{current_state}}
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## What must be true when you finish
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
- **The feature matches the issue.** You have read it fully — desired behavior, acceptance criteria, any examples — and implemented exactly what it describes: no refactoring of surrounding code, no features beyond the issue, no unrelated bug fixes (file separate issues for those). Self-documenting code, no debug or commented-out code, existing project conventions.
|
|
23
|
+
- **Tests exist.** They cover the happy path and the key edge cases, and are deterministic. (Purely declarative changes — config only — may not need them; say so.)
|
|
24
|
+
- **Build and tests pass.** Confirm the real project commands (check `package.json` if unsure) and run them; fix failures before signaling.
|
|
25
|
+
- **The change stays within AIR scope.** If it grows past ~300 LOC or turns architectural, signal `TOO_COMPLEX` rather than pressing on.
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
- What is the desired behavior?
|
|
26
|
-
- What are the acceptance criteria?
|
|
27
|
-
- Are there examples or mockups?
|
|
28
|
-
- What files/modules are likely affected?
|
|
29
|
-
|
|
30
|
-
### 2. Implement the Feature
|
|
31
|
-
|
|
32
|
-
Apply a focused implementation:
|
|
33
|
-
- Implement what the issue describes — no more, no less
|
|
34
|
-
- Do NOT refactor surrounding code
|
|
35
|
-
- Do NOT add features beyond what's described in the issue
|
|
36
|
-
- Do NOT fix unrelated bugs you happen to notice (file separate issues)
|
|
37
|
-
|
|
38
|
-
**Code Quality**:
|
|
39
|
-
- Self-documenting code (clear names, obvious structure)
|
|
40
|
-
- No commented-out code or debug prints
|
|
41
|
-
- Follow existing project conventions
|
|
42
|
-
|
|
43
|
-
### 3. Add Tests
|
|
44
|
-
|
|
45
|
-
Write tests that:
|
|
46
|
-
- Cover the main happy path
|
|
47
|
-
- Cover key edge cases
|
|
48
|
-
- Are deterministic (not flaky)
|
|
49
|
-
|
|
50
|
-
Place tests following project conventions (`__tests__/`, `*.test.ts`, etc.).
|
|
51
|
-
|
|
52
|
-
### 4. Verify the Build
|
|
53
|
-
|
|
54
|
-
Run build and tests:
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
npm run build # Must pass
|
|
58
|
-
npm test # Must pass
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Fix any failures before proceeding. If build/test commands don't exist, check `package.json`.
|
|
62
|
-
|
|
63
|
-
### 5. Commit
|
|
64
|
-
|
|
65
|
-
Stage and commit your changes:
|
|
66
|
-
- Use explicit file paths (never `git add -A` or `git add .`)
|
|
67
|
-
- Commit message: `[Air #{{issue.number}}] feat: <brief description>`
|
|
27
|
+
Commit with an explicit staged path and the message `[Air #{{issue.number}}] feat: <brief description>`.
|
|
68
28
|
|
|
69
29
|
## Signals
|
|
70
30
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
If you're blocked (missing context, unclear requirements, etc.):
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
<signal>BLOCKED:reason goes here</signal>
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Important Notes
|
|
90
|
-
|
|
91
|
-
1. **Stay focused** — Implement what the issue describes, nothing else
|
|
92
|
-
2. **Tests are expected** — Add tests unless the change is purely declarative (e.g., config only)
|
|
93
|
-
3. **Build AND tests must pass** — Don't signal complete until both pass
|
|
94
|
-
4. **Stay under 300 LOC** — If the feature grows beyond this, signal `TOO_COMPLEX`
|
|
95
|
-
5. **No spec/plan artifacts** — AIR does not create files in `codev/specs/` or `codev/plans/`
|
|
31
|
+
- Implementation and tests complete and passing:
|
|
32
|
+
```
|
|
33
|
+
<signal>PHASE_COMPLETE</signal>
|
|
34
|
+
```
|
|
35
|
+
- Too complex for AIR (> ~300 LOC or architectural):
|
|
36
|
+
```
|
|
37
|
+
<signal>TOO_COMPLEX</signal>
|
|
38
|
+
```
|
|
39
|
+
- Blocked (missing context, unclear requirements):
|
|
40
|
+
```
|
|
41
|
+
<signal>BLOCKED:reason goes here</signal>
|
|
42
|
+
```
|
|
@@ -2,32 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
You are executing the **PR** phase of the AIR protocol.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Goal
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Open the PR with the review embedded in its body, optionally run CMAP, and notify the architect.
|
|
8
8
|
|
|
9
9
|
## Context
|
|
10
10
|
|
|
11
11
|
- **Issue**: #{{issue.number}} — {{issue.title}}
|
|
12
12
|
- **Current State**: {{current_state}}
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Create the PR
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
**The PR body IS the review for AIR** — do not create a file in `codev/reviews/`. Include a summary, the key decisions, and a test plan in the body itself.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
**PR body requirements**: The PR body MUST include `Closes #<N>` (where `<N>` is
|
|
21
|
-
the driving issue number) so GitHub auto-closes the issue on merge. If the PR
|
|
22
|
-
closes multiple issues (e.g. duplicates consolidated), include one `Closes #<N>`
|
|
23
|
-
per issue. Without this, GitHub will not auto-close the issue.
|
|
24
|
-
|
|
25
|
-
**Exception**: if this PR only partially addresses the issue, use `Refs #<N>`
|
|
26
|
-
or `Part of #<N>` instead of `Closes` — the issue stays open until a
|
|
27
|
-
follow-up PR closes it.
|
|
28
|
-
|
|
29
|
-
**Note**: substitute the real issue number for `<N>` — do not leave the
|
|
30
|
-
placeholder or any `{{...}}` template tag in the committed PR body.
|
|
18
|
+
The body must carry `Closes #<N>` for the driving issue — one per issue if several — so GitHub auto-closes it on merge. **Exception:** a partial fix uses `Refs #<N>` or `Part of #<N>` instead. Substitute the real number for `<N>`; leave no `{{...}}` tag or `<N>` placeholder in the committed body.
|
|
31
19
|
|
|
32
20
|
```bash
|
|
33
21
|
gh pr create --title "[Air #<N>] feat: <brief description>" --body "$(cat <<'EOF'
|
|
@@ -35,15 +23,15 @@ gh pr create --title "[Air #<N>] feat: <brief description>" --body "$(cat <<'EOF
|
|
|
35
23
|
|
|
36
24
|
<1-2 sentence description of the feature>
|
|
37
25
|
|
|
38
|
-
Closes #<N> <!-- Substitute <N>
|
|
26
|
+
Closes #<N> <!-- Substitute <N>; use "Refs #<N>" for a partial fix -->
|
|
39
27
|
|
|
40
28
|
## What Changed
|
|
41
29
|
|
|
42
|
-
<
|
|
30
|
+
<the implementation approach>
|
|
43
31
|
|
|
44
32
|
## Key Decisions
|
|
45
33
|
|
|
46
|
-
<
|
|
34
|
+
<notable decisions, or "None — straightforward implementation">
|
|
47
35
|
|
|
48
36
|
## Test Plan
|
|
49
37
|
|
|
@@ -53,16 +41,14 @@ Closes #<N> <!-- Substitute <N> with the real issue number -->
|
|
|
53
41
|
|
|
54
42
|
## Review Notes
|
|
55
43
|
|
|
56
|
-
<
|
|
44
|
+
<anything the reviewer should focus on, or "Standard implementation — no special concerns">
|
|
57
45
|
EOF
|
|
58
46
|
)"
|
|
59
47
|
```
|
|
60
48
|
|
|
61
|
-
|
|
49
|
+
## Optional CMAP review
|
|
62
50
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
If the implementation is non-trivial, run 3-way consultation:
|
|
51
|
+
CMAP is your judgement call for AIR. Skip it for simple changes (config, small UI); run it for features touching core logic or several modules:
|
|
66
52
|
|
|
67
53
|
```bash
|
|
68
54
|
consult -m gemini --protocol air --type pr &
|
|
@@ -70,41 +56,23 @@ consult -m codex --protocol air --type pr &
|
|
|
70
56
|
consult -m claude --protocol air --type pr &
|
|
71
57
|
```
|
|
72
58
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
**This is optional** — use your judgement. For simple features (config changes, small UI additions), you may skip consultation. For features touching core logic or multiple modules, run it.
|
|
59
|
+
If you run it, wait for all three, record each verdict, fix real issues, and push.
|
|
76
60
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
If you ran CMAP:
|
|
80
|
-
- Wait for all consultations to complete
|
|
81
|
-
- Record each model's verdict
|
|
82
|
-
- Fix any issues identified
|
|
83
|
-
- Push updates to the PR branch
|
|
84
|
-
|
|
85
|
-
### 4. Notify Architect
|
|
86
|
-
|
|
87
|
-
Send notification with PR link:
|
|
61
|
+
## Notify the architect
|
|
88
62
|
|
|
89
63
|
```bash
|
|
90
64
|
afx send architect "PR #<number> ready for review (implements issue #{{issue.number}})"
|
|
91
65
|
```
|
|
92
66
|
|
|
93
|
-
If
|
|
94
|
-
```bash
|
|
95
|
-
afx send architect "PR #<number> ready for review (implements issue #{{issue.number}}). CMAP: gemini=<verdict>, codex=<verdict>, claude=<verdict>"
|
|
96
|
-
```
|
|
67
|
+
If you ran CMAP, include the verdicts: `CMAP: gemini=<verdict>, codex=<verdict>, claude=<verdict>`.
|
|
97
68
|
|
|
98
69
|
## Signals
|
|
99
70
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
<signal>BLOCKED:reason goes here</signal>
|
|
110
|
-
```
|
|
71
|
+
- PR created and ready for review:
|
|
72
|
+
```
|
|
73
|
+
<signal>PHASE_COMPLETE</signal>
|
|
74
|
+
```
|
|
75
|
+
- Blocked:
|
|
76
|
+
```
|
|
77
|
+
<signal>BLOCKED:reason goes here</signal>
|
|
78
|
+
```
|