@cluesmith/codev 3.2.4 → 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 +142 -0
- package/dist/agent-farm/cli.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.map +1 -1
- package/dist/agent-farm/commands/send.js +49 -8
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +105 -6
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +289 -66
- 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 +80 -8
- package/dist/agent-farm/commands/status.js.map +1 -1
- 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/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/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-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/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 +78 -16
- 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 +670 -105
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +163 -31
- 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 +104 -122
- 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 +64 -1
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +168 -1
- 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/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/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 +272 -28
- 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.map +1 -1
- package/dist/commands/doctor.js +71 -19
- package/dist/commands/doctor.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.js +21 -28
- 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/lib/config.d.ts +69 -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/github.js +1 -1
- package/dist/lib/github.js.map +1 -1
- 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/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 +2 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +16 -6
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +131 -0
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +232 -39
- 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 +53 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +94 -9
- 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-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 +17 -8
- package/dist/terminal/shellper-process.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 +8 -6
- package/skeleton/.claude/skills/afx/SKILL.md +14 -1
- package/skeleton/.claude/skills/arch-init/SKILL.md +22 -9
- package/skeleton/.claude/skills/arch-save/SKILL.md +183 -0
- package/skeleton/.claude/skills/codev/SKILL.md +31 -0
- package/skeleton/.claude/skills/runnable-worktrees/SKILL.md +119 -0
- package/skeleton/.codex/skills/afx/SKILL.md +14 -1
- package/skeleton/.codex/skills/arch-init/SKILL.md +22 -9
- package/skeleton/.codex/skills/arch-save/SKILL.md +183 -0
- package/skeleton/.codex/skills/codev/SKILL.md +31 -0
- package/skeleton/.codex/skills/runnable-worktrees/SKILL.md +119 -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 +259 -0
- package/skeleton/resources/commands/consult.md +236 -8
- package/skeleton/resources/commands/overview.md +1 -0
- package/skeleton/roles/architect.md +67 -317
- 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 -116
- 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,169 +1,44 @@
|
|
|
1
1
|
# RESEARCH Protocol
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Scope → Investigate → Synthesize → Critique. Multiple models investigate the same question
|
|
4
|
+
independently, their findings are synthesized, and the synthesis is adversarially critiqued
|
|
5
|
+
before it is trusted. **The state machine below is authoritative on which models actually
|
|
6
|
+
run** — the set can be smaller than the ideal when a provider's consult lane is unavailable
|
|
7
|
+
(it is currently `["codex"]` for investigation, the agy/Gemini and hermes lanes being degraded).
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
Use it for competitive and technology analysis, "state of X" questions, and architectural
|
|
10
|
+
decision support in an unfamiliar domain — cases where a single model's confident answer is
|
|
11
|
+
exactly the failure mode.
|
|
6
12
|
|
|
7
|
-
|
|
13
|
+
## The state machine
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
**Skip for**: Implementation work (use SPIR/ASPIR), quick questions (just ask), experiments (use EXPERIMENT), known-answer lookups (just search).
|
|
15
|
+
```json
|
|
16
|
+
{{> protocols/research/protocol.json}}
|
|
17
|
+
```
|
|
14
18
|
|
|
15
19
|
## Output
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
`codev/research/<topic>.md` — the report, with its sources and its disagreements preserved.
|
|
18
22
|
|
|
19
23
|
## Phases
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
The builder:
|
|
26
|
-
1. Reads the architect's research request
|
|
27
|
-
2. Clarifies the question — what specifically are we trying to learn?
|
|
28
|
-
3. Defines the scope — what's in, what's out, what depth is needed
|
|
29
|
-
4. Defines acceptance criteria — what does a good answer look like?
|
|
30
|
-
5. Writes a **research brief** (`codev/research/<topic>-brief.md`) with:
|
|
31
|
-
- The precise question(s)
|
|
32
|
-
- Scope boundaries
|
|
33
|
-
- **Required targets** (when applicable — not all research questions have them). When the user names specific projects, products, or systems, those are exemplars of a CLASS, not an exhaustive list. The brief should:
|
|
34
|
-
- List the named targets as required coverage (each gets a dedicated section)
|
|
35
|
-
- Identify the CLASS they represent (e.g., "open-source always-on agent frameworks")
|
|
36
|
-
- Instruct investigators to find OTHER members of that class the user didn't name — discovering what the user SHOULD be thinking about is often the most valuable part of the research
|
|
37
|
-
- If an investigator cannot find information about a required target, they must say so explicitly — not silently skip it
|
|
38
|
-
- **Optional context** — additional sources that may be useful but are not required
|
|
39
|
-
- What a useful answer looks like
|
|
40
|
-
- Suggested sources or angles for the investigators
|
|
41
|
-
6. Sends the brief to the architect for approval
|
|
42
|
-
|
|
43
|
-
**Gate**: `scope-approval` — the architect confirms the question is correctly scoped before the 3-way investigation begins. This prevents wasting compute on a badly-framed question.
|
|
44
|
-
|
|
45
|
-
### Phase 2: Investigate (3-way parallel)
|
|
46
|
-
|
|
47
|
-
**Purpose**: Get three independent perspectives on the question.
|
|
48
|
-
|
|
49
|
-
The builder dispatches the research brief to three models (Gemini, Codex, Claude) via `consult`. Each model:
|
|
50
|
-
1. Receives the scoped research brief
|
|
51
|
-
2. Independently investigates using web search, its training knowledge, and reasoning
|
|
52
|
-
3. Produces a standalone investigation report with:
|
|
53
|
-
- **A dedicated section for each required target** from the brief. Every required target gets its own heading with specific findings — not mentioned in passing, not substituted with an easier target. If a required target yields no findings, the section must say "No information found" rather than being omitted.
|
|
54
|
-
- Findings (with sources where possible)
|
|
55
|
-
- Confidence levels on key claims
|
|
56
|
-
- Gaps it couldn't fill
|
|
57
|
-
- Surprises or things that contradicted expectations
|
|
58
|
-
|
|
59
|
-
The investigations run in **parallel** — each model works independently without seeing the others' output. This prevents anchoring bias.
|
|
60
|
-
|
|
61
|
-
Investigation reports are saved to:
|
|
62
|
-
- `codev/research/<topic>-gemini.md`
|
|
63
|
-
- `codev/research/<topic>-codex.md`
|
|
64
|
-
- `codev/research/<topic>-claude.md`
|
|
65
|
-
|
|
66
|
-
### Phase 3: Synthesize
|
|
67
|
-
|
|
68
|
-
**Purpose**: Merge three independent reports into one coherent document.
|
|
69
|
-
|
|
70
|
-
The builder:
|
|
71
|
-
1. Reads all three investigation reports
|
|
72
|
-
2. Identifies **consensus** — what all three agree on (highest confidence)
|
|
73
|
-
3. Identifies **disagreements** — where models contradict each other
|
|
74
|
-
4. Resolves conflicts — picks the best-supported position, notes the disagreement
|
|
75
|
-
5. Identifies **unique contributions** — things only one model found that the others missed
|
|
76
|
-
6. Writes the **synthesis report** (`codev/research/<topic>.md`) with:
|
|
77
|
-
- **Scope summary** — a short section (before the executive summary) restating the research question, required targets, and scope boundaries from the brief. A reader should understand what was asked without needing to read the brief separately.
|
|
78
|
-
- Executive summary
|
|
79
|
-
- Findings (organized by topic, not by model)
|
|
80
|
-
- Confidence annotations (consensus vs. single-source)
|
|
81
|
-
- Gaps and limitations
|
|
82
|
-
- Recommendations (if the research brief asked for them)
|
|
83
|
-
|
|
84
|
-
The synthesis is written as a **standalone document** — a reader should never need to reference the individual investigation reports. Those are kept as appendices for traceability.
|
|
85
|
-
|
|
86
|
-
### Phase 4: Critique (3-way review)
|
|
87
|
-
|
|
88
|
-
**Purpose**: Pressure-test the synthesis for gaps, errors, and bias.
|
|
25
|
+
**Scope** — write the research brief: the question, why it matters, what would count as an
|
|
26
|
+
answer, and what is out of scope. Gated by `scope-approval`, because a badly framed question
|
|
27
|
+
wastes the investigation's compute and produces a confident answer to the wrong thing.
|
|
89
28
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
3. Checks for factual errors or unsupported claims
|
|
94
|
-
4. Identifies gaps — important aspects the synthesis missed
|
|
95
|
-
5. Flags potential bias — did the synthesis over-weight one model's perspective?
|
|
96
|
-
6. Suggests specific improvements
|
|
29
|
+
**Investigate** — the configured models (see the state machine) work the question
|
|
30
|
+
**independently**. Independence is the point: cross-contaminated investigations converge on a
|
|
31
|
+
shared error, so where more than one model is available each researches without seeing the others.
|
|
97
32
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
3. Finalizes the report
|
|
102
|
-
4. Commits to `codev/research/<topic>.md`
|
|
33
|
+
**Synthesize** — merge findings and, critically, **preserve disagreement**. Where models
|
|
34
|
+
diverge, say so and say why; a synthesis that smooths over conflict has destroyed the signal
|
|
35
|
+
that made a multi-model investigation worth running.
|
|
103
36
|
|
|
104
|
-
|
|
37
|
+
**Critique** — adversarial pass over the synthesis. What is asserted without a source? What
|
|
38
|
+
would change the conclusion? Reaching `research-complete` means the report survived this, not
|
|
39
|
+
that it was written.
|
|
105
40
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
codev/research/
|
|
110
|
-
├── <topic>-brief.md # Phase 1: scoped research question (checked in)
|
|
111
|
-
└── <topic>.md # Phase 3+4: final synthesis (the deliverable, checked in)
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
The final report includes:
|
|
115
|
-
- A **"Disagreements and resolution"** section documenting where the three investigators disagreed and how the synthesis resolved each disagreement
|
|
116
|
-
- A **"Changes from critique"** section summarizing what the critique phase changed (not the full critique — just what was added, removed, or corrected and why)
|
|
117
|
-
|
|
118
|
-
Individual investigation reports (`<topic>-gemini.md`, `<topic>-codex.md`, `<topic>-claude.md`) and raw critique outputs are kept locally during the research process but NOT committed. The final report is the deliverable; the process artifacts are disposable.
|
|
119
|
-
|
|
120
|
-
## Best Practices
|
|
121
|
-
|
|
122
|
-
### Scoping
|
|
123
|
-
- A good research question is specific enough to answer in 1500-3000 words per model
|
|
124
|
-
- "What's the state of X?" is too broad — "What are the top 5 players in X, their strengths/weaknesses, and the structural gaps?" is better
|
|
125
|
-
- Include the "so what" — why are we researching this? What decision does it inform?
|
|
126
|
-
|
|
127
|
-
### Investigation
|
|
128
|
-
- Tell each model to cite sources where possible
|
|
129
|
-
- Tell each model to be candid about uncertainty — "I don't know" is better than confabulation
|
|
130
|
-
- Tell each model to note surprises — the most valuable findings are often the unexpected ones
|
|
131
|
-
|
|
132
|
-
### Synthesis
|
|
133
|
-
- Organize by topic, not by model ("here's what we found about X" not "here's what Gemini said")
|
|
134
|
-
- Weight consensus over single-model claims
|
|
135
|
-
- Don't smooth over disagreements — note them explicitly
|
|
136
|
-
- Keep the synthesis shorter than the sum of the investigations
|
|
137
|
-
|
|
138
|
-
### Critique
|
|
139
|
-
- Critiquers should focus on gaps and errors, not style
|
|
140
|
-
- A critique that says "add more about X" is useful; "rewrite the intro" is not
|
|
141
|
-
- The builder should reject critique that's outside the original scope
|
|
142
|
-
|
|
143
|
-
## Integration with Other Protocols
|
|
144
|
-
|
|
145
|
-
### Research → SPIR
|
|
146
|
-
When research informs a feature decision:
|
|
147
|
-
1. Reference the research report in the spec
|
|
148
|
-
2. Link specific findings as evidence for design choices
|
|
149
|
-
|
|
150
|
-
### Research → EXPERIMENT
|
|
151
|
-
When research identifies something worth testing:
|
|
152
|
-
1. Create an experiment to validate the research finding
|
|
153
|
-
2. Reference the research report as motivation
|
|
154
|
-
|
|
155
|
-
## Git Workflow
|
|
156
|
-
|
|
157
|
-
### Commits
|
|
158
|
-
```
|
|
159
|
-
[Research: topic] Scoped research brief
|
|
160
|
-
[Research: topic] 3-way investigation complete
|
|
161
|
-
[Research: topic] Synthesis report
|
|
162
|
-
[Research: topic] Final report (post-critique)
|
|
163
|
-
```
|
|
41
|
+
## Reporting standard
|
|
164
42
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
- The final synthesis (the deliverable)
|
|
168
|
-
- The critique rebuttals (for process transparency)
|
|
169
|
-
- Do NOT commit raw web search results or intermediate notes
|
|
43
|
+
Cite sources for factual claims and mark inference as inference. A research report that cannot
|
|
44
|
+
be checked is an opinion with footnotes.
|
|
@@ -1,68 +1,50 @@
|
|
|
1
1
|
# {{protocol_name}} Builder ({{mode}} mode)
|
|
2
2
|
|
|
3
|
-
You are
|
|
3
|
+
You are implementing {{input_description}}.
|
|
4
4
|
|
|
5
5
|
{{#if mode_soft}}
|
|
6
6
|
## Mode: SOFT
|
|
7
|
-
You are running in SOFT mode. This means:
|
|
8
|
-
- You follow the SPIKE protocol yourself (no porch orchestration)
|
|
9
|
-
- Stay focused on the question — don't gold-plate
|
|
10
|
-
- The findings document is your deliverable, not the code
|
|
11
|
-
{{/if}}
|
|
12
|
-
|
|
13
|
-
## Protocol
|
|
14
|
-
Follow the SPIKE protocol. Read and internalize the protocol before starting any work. The full protocol text is included below under **## Protocol Reference (full text)**.
|
|
15
7
|
|
|
16
|
-
|
|
17
|
-
## Spike Question
|
|
18
|
-
{{task_text}}
|
|
8
|
+
You follow the protocol yourself; the architect verifies compliance.
|
|
19
9
|
{{/if}}
|
|
20
10
|
|
|
21
|
-
|
|
11
|
+
{{#if mode_strict}}
|
|
12
|
+
## Mode: STRICT
|
|
22
13
|
|
|
23
|
-
|
|
14
|
+
Porch orchestrates. `porch next` gives you tasks; `porch done` signals completion. Never
|
|
15
|
+
hand-edit `status.yaml` — only porch commands modify project state.
|
|
16
|
+
{{/if}}
|
|
24
17
|
|
|
25
|
-
|
|
26
|
-
- Read documentation, examine existing code, search for prior art
|
|
27
|
-
- Identify constraints, dependencies, and potential blockers
|
|
28
|
-
- Understand the problem space before writing any code
|
|
18
|
+
## Protocol
|
|
29
19
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- Focus on answering the feasibility question, not building production code
|
|
33
|
-
- POC code doesn't need tests or polish
|
|
34
|
-
- **Skip this step** if the answer is clear from research alone
|
|
20
|
+
The full protocol text is inlined below under **## Protocol Reference (full text)** — you do not
|
|
21
|
+
need to fetch it.
|
|
35
22
|
|
|
36
|
-
|
|
37
|
-
- Write findings to `codev/spikes/<id>-<name>.md` using the template
|
|
38
|
-
- Provide a clear feasibility verdict: Feasible / Not Feasible / Feasible with Caveats
|
|
39
|
-
- Commit the findings document
|
|
40
|
-
- Notify the architect: `afx send architect "Spike <id> complete. Verdict: [verdict]"`
|
|
23
|
+
## Spike Question
|
|
41
24
|
|
|
42
|
-
|
|
25
|
+
{{task_text}}
|
|
43
26
|
|
|
44
|
-
|
|
45
|
-
- **Exploration over perfection**: POC code doesn't need tests or polish.
|
|
46
|
-
- **Clear output**: The findings document is the deliverable, not the code.
|
|
47
|
-
- **Know when to stop**: Once you can answer the feasibility question, write findings and stop. Don't keep iterating.
|
|
48
|
-
- **Document failures**: "Not feasible" is a valid and valuable finding.
|
|
27
|
+
## Workflow
|
|
49
28
|
|
|
50
|
-
|
|
29
|
+
Three steps; skip or reorder as the investigation demands.
|
|
51
30
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
2. **
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
31
|
+
1. **Research** — documentation, existing code, prior art. Identify constraints, dependencies
|
|
32
|
+
and blockers before writing any code.
|
|
33
|
+
2. **Iterate** — minimal proof-of-concept to test approaches. POC code needs no tests or polish;
|
|
34
|
+
it exists to answer the question. **Skip this entirely** if research already answers it.
|
|
35
|
+
3. **Findings** — write `codev/spikes/<id>-<name>.md` with a clear verdict (Feasible / Not
|
|
36
|
+
Feasible / Feasible with Caveats), commit it, and notify:
|
|
37
|
+
`afx send architect "Spike <id> complete. Verdict: [verdict]"`
|
|
58
38
|
|
|
59
|
-
##
|
|
60
|
-
1. Read the SPIKE protocol document
|
|
61
|
-
2. Understand the question you're investigating
|
|
62
|
-
3. Start with research — don't jump straight to code
|
|
39
|
+
## Key Principles
|
|
63
40
|
|
|
64
|
-
|
|
41
|
+
- **Time-box**: stay on the question, don't explore tangents
|
|
42
|
+
- **The findings document is the deliverable, not the code**
|
|
43
|
+
- **Know when to stop**: once you can answer the question, write findings and stop
|
|
44
|
+
- **"Not feasible" is a valuable finding.** The failure mode is an inconclusive spike — time
|
|
45
|
+
spent, nothing recorded, question still open
|
|
65
46
|
|
|
66
|
-
##
|
|
47
|
+
## Notifications
|
|
67
48
|
|
|
68
|
-
|
|
49
|
+
The architect is not watching. `afx send architect "..."` at each of: gate reached, PR ready, PR
|
|
50
|
+
merged, blocked.
|
|
@@ -1,128 +1,45 @@
|
|
|
1
1
|
# SPIKE Protocol
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A time-boxed feasibility investigation that answers one question: **can this be done, and at
|
|
4
|
+
what cost?** The deliverable is findings, not shipped code.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
Use it before committing to a SPIR project whose feasibility is genuinely unknown — an unfamiliar
|
|
7
|
+
library, an unproven integration, a performance question that argument cannot settle.
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## The state machine
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
**Use for**: Quick technical feasibility investigations, proof-of-concept explorations, "can we do X?" questions, evaluating approaches before committing to SPIR
|
|
12
|
-
|
|
13
|
-
**Skip for**: Production code (use SPIR), formal hypothesis testing (use EXPERIMENT), bug fixes (use BUGFIX)
|
|
14
|
-
|
|
15
|
-
### Spike vs Experiment
|
|
16
|
-
|
|
17
|
-
| | Spike | Experiment |
|
|
18
|
-
|---|---|---|
|
|
19
|
-
| **Goal** | Answer a feasibility question | Test a formal hypothesis |
|
|
20
|
-
| **Structure** | Lightweight guidance | Formal phases (hypothesis/design/execute/analyze) |
|
|
21
|
-
| **Output** | Findings document | Experiment notes with metrics |
|
|
22
|
-
| **Rigor** | Exploration-first | Measurement-first |
|
|
23
|
-
| **Time** | Short (hours) | Longer (days) |
|
|
24
|
-
|
|
25
|
-
## Spawning a Spike
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
afx spawn --task "Can we use WebSockets for real-time updates?" --protocol spike
|
|
29
|
-
afx spawn --task "What would it take to support SQLite FTS?" --protocol spike
|
|
11
|
+
```json
|
|
12
|
+
{{> protocols/spike/protocol.json}}
|
|
30
13
|
```
|
|
31
14
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
## Recommended Workflow
|
|
35
|
-
|
|
36
|
-
The following 3-step workflow is **guidance only** — not enforced by porch. Follow it, skip steps, or reorder as the investigation demands.
|
|
37
|
-
|
|
38
|
-
### Step 1: Research
|
|
39
|
-
|
|
40
|
-
- Read documentation, examine existing code, search for prior art
|
|
41
|
-
- Identify constraints, dependencies, and potential blockers
|
|
42
|
-
- Understand the problem space before writing any code
|
|
43
|
-
- Check if someone has already investigated this (look in `codev/spikes/`)
|
|
44
|
-
|
|
45
|
-
### Step 2: Iterate
|
|
46
|
-
|
|
47
|
-
- Build minimal proof-of-concept code
|
|
48
|
-
- Try different approaches, hit walls, pivot
|
|
49
|
-
- Focus on answering the feasibility question, not building production code
|
|
50
|
-
- **Skip this step** if the answer is clear from research alone
|
|
51
|
-
|
|
52
|
-
### Step 3: Findings
|
|
53
|
-
|
|
54
|
-
- Write the findings document at `codev/spikes/<id>-<name>.md`
|
|
55
|
-
- Use the embedded template at the end of this protocol
|
|
56
|
-
- Provide a clear feasibility verdict
|
|
57
|
-
- Commit and notify the architect
|
|
15
|
+
## Proof-of-concept code
|
|
58
16
|
|
|
59
|
-
|
|
17
|
+
Throwaway by design. It exists to answer the question, and it is not held to production
|
|
18
|
+
standards — but it must not be quietly promoted into production later either. If the answer is
|
|
19
|
+
"feasible", a SPIR project builds the real thing.
|
|
60
20
|
|
|
61
|
-
|
|
21
|
+
## Outcomes
|
|
62
22
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
23
|
+
| Verdict | What the findings must contain |
|
|
24
|
+
|---|---|
|
|
25
|
+
| **Feasible** | Recommended approach and rough cost, enough for the architect to decide on a SPIR project |
|
|
26
|
+
| **Not feasible** | Why, what was tried, and what alternatives exist — this is what stops the investigation being repeated in six months |
|
|
27
|
+
| **Feasible with caveats** | The conditions, risks and trade-offs that make it conditional |
|
|
66
28
|
|
|
67
|
-
|
|
29
|
+
A negative result is a successful spike. The failure mode is an inconclusive one: time spent,
|
|
30
|
+
nothing recorded, question still open.
|
|
68
31
|
|
|
69
|
-
|
|
32
|
+
Notify the architect with the verdict when done.
|
|
70
33
|
|
|
71
|
-
|
|
34
|
+
## Findings
|
|
72
35
|
|
|
73
|
-
|
|
74
|
-
- POC code does NOT get merged to main — it stays on the spike branch
|
|
75
|
-
- The findings document is the primary deliverable; the code is supporting evidence
|
|
76
|
-
- If the spike leads to a SPIR project, the builder starts fresh
|
|
36
|
+
Write findings using this structure:
|
|
77
37
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
- **Feasible**: Write findings with recommended approach and effort estimate. Architect decides whether to create a SPIR project.
|
|
81
|
-
- **Not Feasible**: Write findings documenting why, what was tried, and what alternatives exist. This prevents future teams from repeating the investigation.
|
|
82
|
-
- **Feasible with Caveats**: Write findings with conditions, risks, and trade-offs.
|
|
83
|
-
|
|
84
|
-
In all cases, notify the architect:
|
|
85
|
-
```bash
|
|
86
|
-
afx send architect "Spike <id> complete. Verdict: [feasible/not feasible/caveats]"
|
|
87
|
-
```
|
|
38
|
+
{{> protocols/spike/templates/findings.md}}
|
|
88
39
|
|
|
89
|
-
## Git
|
|
40
|
+
## Git
|
|
90
41
|
|
|
91
|
-
### Commits
|
|
92
42
|
```
|
|
93
43
|
[Spike 462] Research: WebSocket library comparison
|
|
94
|
-
[Spike 462] Iterate: POC with ws library
|
|
95
44
|
[Spike 462] Findings: WebSockets feasible for real-time updates
|
|
96
45
|
```
|
|
97
|
-
|
|
98
|
-
### When to Commit
|
|
99
|
-
- After significant research findings
|
|
100
|
-
- After each iteration attempt
|
|
101
|
-
- When writing the findings document (final commit)
|
|
102
|
-
|
|
103
|
-
## Integration with Other Protocols
|
|
104
|
-
|
|
105
|
-
### Spike -> SPIR
|
|
106
|
-
When a spike validates feasibility:
|
|
107
|
-
1. Create a SPIR spec referencing the spike findings
|
|
108
|
-
2. Use findings to inform the solution approach
|
|
109
|
-
3. Reference effort estimate for planning
|
|
110
|
-
|
|
111
|
-
Example spec reference:
|
|
112
|
-
```markdown
|
|
113
|
-
## Background
|
|
114
|
-
Spike 462 confirmed WebSocket feasibility with the `ws` library.
|
|
115
|
-
See: codev/spikes/462-websocket-feasibility.md
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Spike -> "Do Not Pursue"
|
|
119
|
-
When a spike finds something is not feasible:
|
|
120
|
-
1. Document clearly in findings
|
|
121
|
-
2. Close the related GitHub issue with a link to findings
|
|
122
|
-
3. The findings become institutional knowledge
|
|
123
|
-
|
|
124
|
-
## Template: findings.md
|
|
125
|
-
|
|
126
|
-
Write the findings document using the following template:
|
|
127
|
-
|
|
128
|
-
{{> protocols/spike/templates/findings.md}}
|
|
@@ -1,67 +1,37 @@
|
|
|
1
1
|
# Spike: [Title]
|
|
2
2
|
|
|
3
|
-
**Date**: YYYY-MM-DD
|
|
4
|
-
|
|
5
|
-
**Verdict**: Feasible | Not Feasible | Feasible with Caveats
|
|
3
|
+
**Date**: YYYY-MM-DD · **Verdict**: Feasible | Not Feasible | Feasible with Caveats
|
|
6
4
|
|
|
7
5
|
## Question
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
- What are you trying to determine?
|
|
11
|
-
- What prompted this investigation?
|
|
12
|
-
- What decision depends on the answer?
|
|
7
|
+
The technical question investigated, what prompted it, and the decision that depends on the answer.
|
|
13
8
|
|
|
14
9
|
## Research Summary
|
|
15
10
|
|
|
16
|
-
What was explored
|
|
17
|
-
- Documentation read
|
|
18
|
-
- Existing code examined
|
|
19
|
-
- Prior art found
|
|
20
|
-
- Key constraints identified
|
|
11
|
+
What was explored — documentation read, existing code examined, prior art, and the key constraints identified.
|
|
21
12
|
|
|
22
13
|
## Approaches Tried
|
|
23
14
|
|
|
24
|
-
What was built or tested
|
|
15
|
+
What was built or tested. For each: what it was, what happened, and whether it worked.
|
|
25
16
|
|
|
26
17
|
### Approach 1: [Name]
|
|
27
|
-
- **What**: Brief description of what was tried
|
|
28
|
-
- **Result**: What happened
|
|
29
|
-
- **Verdict**: Worked / Didn't work / Partially worked
|
|
30
|
-
|
|
31
|
-
### Approach 2: [Name]
|
|
32
|
-
*(Add more approaches as needed, or remove if research alone answered the question)*
|
|
33
18
|
|
|
34
19
|
## Constraints Discovered
|
|
35
20
|
|
|
36
|
-
Technical limitations, dependencies, and gotchas found during the investigation
|
|
37
|
-
- [Constraint 1]
|
|
38
|
-
- [Constraint 2]
|
|
21
|
+
Technical limitations, dependencies, and gotchas found during the investigation.
|
|
39
22
|
|
|
40
23
|
## Recommended Approach
|
|
41
24
|
|
|
42
|
-
|
|
43
|
-
- Recommended library/technique/pattern
|
|
44
|
-
- Key architectural decisions
|
|
45
|
-
- Things to watch out for
|
|
46
|
-
|
|
47
|
-
*(If not feasible)* Why not, and what alternatives exist?
|
|
25
|
+
If feasible: how full implementation should proceed — recommended library/technique/pattern, key architectural decisions, and what to watch out for. If not feasible: why, and what alternatives exist.
|
|
48
26
|
|
|
49
27
|
## Effort Estimate
|
|
50
28
|
|
|
51
|
-
Rough sizing for a full SPIR project: **Small** | **Medium** | **Large**
|
|
52
|
-
|
|
53
|
-
- Small: < 300 LOC, 1-2 files, straightforward
|
|
54
|
-
- Medium: 300-1000 LOC, multiple files, some complexity
|
|
55
|
-
- Large: 1000+ LOC, architectural changes, significant complexity
|
|
29
|
+
Rough sizing for a full SPIR project: **Small** (< 300 LOC) | **Medium** (300–1000 LOC) | **Large** (1000+ LOC, architectural).
|
|
56
30
|
|
|
57
31
|
## Next Steps
|
|
58
32
|
|
|
59
|
-
- [ ]
|
|
60
|
-
- [ ] [Or: "Do not pursue — blocked by X"]
|
|
61
|
-
- [ ] [Or: "Investigate Y further before deciding"]
|
|
33
|
+
- [ ] The recommended action (create a SPIR spec, do not pursue, or investigate further before deciding).
|
|
62
34
|
|
|
63
35
|
## References
|
|
64
36
|
|
|
65
|
-
|
|
66
|
-
- [Link to relevant code/commits]
|
|
67
|
-
- [Link to external resources consulted]
|
|
37
|
+
Relevant documentation, code/commits, and external resources consulted.
|