@cluesmith/codev 2.0.0-rc.7 → 2.0.0-rc.71

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.
Files changed (456) hide show
  1. package/bin/af.js +2 -2
  2. package/bin/consult.js +1 -1
  3. package/bin/porch.js +6 -35
  4. package/dashboard/dist/assets/index-C7FtNK6Y.css +32 -0
  5. package/dashboard/dist/assets/index-CDAINZKT.js +131 -0
  6. package/dashboard/dist/assets/index-CDAINZKT.js.map +1 -0
  7. package/dashboard/dist/index.html +14 -0
  8. package/dist/agent-farm/cli.d.ts.map +1 -1
  9. package/dist/agent-farm/cli.js +173 -118
  10. package/dist/agent-farm/cli.js.map +1 -1
  11. package/dist/agent-farm/commands/architect.d.ts +3 -3
  12. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  13. package/dist/agent-farm/commands/architect.js +20 -147
  14. package/dist/agent-farm/commands/architect.js.map +1 -1
  15. package/dist/agent-farm/commands/attach.d.ts +13 -0
  16. package/dist/agent-farm/commands/attach.d.ts.map +1 -0
  17. package/dist/agent-farm/commands/attach.js +144 -0
  18. package/dist/agent-farm/commands/attach.js.map +1 -0
  19. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  20. package/dist/agent-farm/commands/cleanup.js +35 -19
  21. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  22. package/dist/agent-farm/commands/consult.d.ts +3 -4
  23. package/dist/agent-farm/commands/consult.d.ts.map +1 -1
  24. package/dist/agent-farm/commands/consult.js +27 -37
  25. package/dist/agent-farm/commands/consult.js.map +1 -1
  26. package/dist/agent-farm/commands/index.d.ts +2 -2
  27. package/dist/agent-farm/commands/index.d.ts.map +1 -1
  28. package/dist/agent-farm/commands/index.js +2 -2
  29. package/dist/agent-farm/commands/index.js.map +1 -1
  30. package/dist/agent-farm/commands/open.d.ts +4 -2
  31. package/dist/agent-farm/commands/open.d.ts.map +1 -1
  32. package/dist/agent-farm/commands/open.js +33 -83
  33. package/dist/agent-farm/commands/open.js.map +1 -1
  34. package/dist/agent-farm/commands/send.d.ts +1 -1
  35. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  36. package/dist/agent-farm/commands/send.js +60 -79
  37. package/dist/agent-farm/commands/send.js.map +1 -1
  38. package/dist/agent-farm/commands/shell.d.ts +15 -0
  39. package/dist/agent-farm/commands/shell.d.ts.map +1 -0
  40. package/dist/agent-farm/commands/shell.js +50 -0
  41. package/dist/agent-farm/commands/shell.js.map +1 -0
  42. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  43. package/dist/agent-farm/commands/spawn.js +597 -281
  44. package/dist/agent-farm/commands/spawn.js.map +1 -1
  45. package/dist/agent-farm/commands/start.d.ts +10 -20
  46. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  47. package/dist/agent-farm/commands/start.js +45 -491
  48. package/dist/agent-farm/commands/start.js.map +1 -1
  49. package/dist/agent-farm/commands/status.d.ts +2 -0
  50. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  51. package/dist/agent-farm/commands/status.js +75 -24
  52. package/dist/agent-farm/commands/status.js.map +1 -1
  53. package/dist/agent-farm/commands/stop.d.ts +6 -0
  54. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  55. package/dist/agent-farm/commands/stop.js +49 -109
  56. package/dist/agent-farm/commands/stop.js.map +1 -1
  57. package/dist/agent-farm/commands/tower-cloud.d.ts +48 -0
  58. package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -0
  59. package/dist/agent-farm/commands/tower-cloud.js +329 -0
  60. package/dist/agent-farm/commands/tower-cloud.js.map +1 -0
  61. package/dist/agent-farm/commands/tower.d.ts +9 -0
  62. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  63. package/dist/agent-farm/commands/tower.js +59 -19
  64. package/dist/agent-farm/commands/tower.js.map +1 -1
  65. package/dist/agent-farm/db/index.d.ts +6 -2
  66. package/dist/agent-farm/db/index.d.ts.map +1 -1
  67. package/dist/agent-farm/db/index.js +246 -18
  68. package/dist/agent-farm/db/index.js.map +1 -1
  69. package/dist/agent-farm/db/migrate.d.ts +0 -4
  70. package/dist/agent-farm/db/migrate.d.ts.map +1 -1
  71. package/dist/agent-farm/db/migrate.js +6 -55
  72. package/dist/agent-farm/db/migrate.js.map +1 -1
  73. package/dist/agent-farm/db/schema.d.ts +3 -3
  74. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  75. package/dist/agent-farm/db/schema.js +25 -19
  76. package/dist/agent-farm/db/schema.js.map +1 -1
  77. package/dist/agent-farm/db/types.d.ts +3 -13
  78. package/dist/agent-farm/db/types.d.ts.map +1 -1
  79. package/dist/agent-farm/db/types.js +3 -11
  80. package/dist/agent-farm/db/types.js.map +1 -1
  81. package/dist/agent-farm/hq-connector.d.ts +2 -6
  82. package/dist/agent-farm/hq-connector.d.ts.map +1 -1
  83. package/dist/agent-farm/hq-connector.js +2 -17
  84. package/dist/agent-farm/hq-connector.js.map +1 -1
  85. package/dist/agent-farm/lib/cloud-config.d.ts +59 -0
  86. package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -0
  87. package/dist/agent-farm/lib/cloud-config.js +143 -0
  88. package/dist/agent-farm/lib/cloud-config.js.map +1 -0
  89. package/dist/agent-farm/lib/tower-client.d.ts +163 -0
  90. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
  91. package/dist/agent-farm/lib/tower-client.js +233 -0
  92. package/dist/agent-farm/lib/tower-client.js.map +1 -0
  93. package/dist/agent-farm/lib/tunnel-client.d.ts +117 -0
  94. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -0
  95. package/dist/agent-farm/lib/tunnel-client.js +504 -0
  96. package/dist/agent-farm/lib/tunnel-client.js.map +1 -0
  97. package/dist/agent-farm/servers/tower-server.js +2653 -185
  98. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  99. package/dist/agent-farm/state.d.ts +6 -12
  100. package/dist/agent-farm/state.d.ts.map +1 -1
  101. package/dist/agent-farm/state.js +34 -49
  102. package/dist/agent-farm/state.js.map +1 -1
  103. package/dist/agent-farm/types.d.ts +49 -26
  104. package/dist/agent-farm/types.d.ts.map +1 -1
  105. package/dist/agent-farm/utils/config.d.ts +0 -5
  106. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  107. package/dist/agent-farm/utils/config.js +12 -44
  108. package/dist/agent-farm/utils/config.js.map +1 -1
  109. package/dist/agent-farm/utils/deps.d.ts.map +1 -1
  110. package/dist/agent-farm/utils/deps.js +0 -32
  111. package/dist/agent-farm/utils/deps.js.map +1 -1
  112. package/dist/agent-farm/utils/file-tabs.d.ts +27 -0
  113. package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -0
  114. package/dist/agent-farm/utils/file-tabs.js +46 -0
  115. package/dist/agent-farm/utils/file-tabs.js.map +1 -0
  116. package/dist/agent-farm/utils/gate-status.d.ts +16 -0
  117. package/dist/agent-farm/utils/gate-status.d.ts.map +1 -0
  118. package/dist/agent-farm/utils/gate-status.js +79 -0
  119. package/dist/agent-farm/utils/gate-status.js.map +1 -0
  120. package/dist/agent-farm/utils/gate-watcher.d.ts +38 -0
  121. package/dist/agent-farm/utils/gate-watcher.d.ts.map +1 -0
  122. package/dist/agent-farm/utils/gate-watcher.js +122 -0
  123. package/dist/agent-farm/utils/gate-watcher.js.map +1 -0
  124. package/dist/agent-farm/utils/index.d.ts +0 -1
  125. package/dist/agent-farm/utils/index.d.ts.map +1 -1
  126. package/dist/agent-farm/utils/index.js +0 -1
  127. package/dist/agent-farm/utils/index.js.map +1 -1
  128. package/dist/agent-farm/utils/notifications.d.ts +30 -0
  129. package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
  130. package/dist/agent-farm/utils/notifications.js +121 -0
  131. package/dist/agent-farm/utils/notifications.js.map +1 -0
  132. package/dist/agent-farm/utils/server-utils.d.ts +5 -5
  133. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  134. package/dist/agent-farm/utils/server-utils.js +5 -16
  135. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  136. package/dist/agent-farm/utils/session.d.ts +32 -0
  137. package/dist/agent-farm/utils/session.d.ts.map +1 -0
  138. package/dist/agent-farm/utils/session.js +57 -0
  139. package/dist/agent-farm/utils/session.js.map +1 -0
  140. package/dist/agent-farm/utils/shell.d.ts +9 -22
  141. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  142. package/dist/agent-farm/utils/shell.js +34 -34
  143. package/dist/agent-farm/utils/shell.js.map +1 -1
  144. package/dist/cli.d.ts.map +1 -1
  145. package/dist/cli.js +11 -54
  146. package/dist/cli.js.map +1 -1
  147. package/dist/commands/adopt.d.ts.map +1 -1
  148. package/dist/commands/adopt.js +49 -4
  149. package/dist/commands/adopt.js.map +1 -1
  150. package/dist/commands/consult/index.d.ts +13 -2
  151. package/dist/commands/consult/index.d.ts.map +1 -1
  152. package/dist/commands/consult/index.js +245 -29
  153. package/dist/commands/consult/index.js.map +1 -1
  154. package/dist/commands/doctor.d.ts.map +1 -1
  155. package/dist/commands/doctor.js +96 -79
  156. package/dist/commands/doctor.js.map +1 -1
  157. package/dist/commands/init.d.ts.map +1 -1
  158. package/dist/commands/init.js +41 -2
  159. package/dist/commands/init.js.map +1 -1
  160. package/dist/commands/porch/build-counter.d.ts +5 -0
  161. package/dist/commands/porch/build-counter.d.ts.map +1 -0
  162. package/dist/commands/porch/build-counter.js +5 -0
  163. package/dist/commands/porch/build-counter.js.map +1 -0
  164. package/dist/commands/porch/checks.d.ts +17 -29
  165. package/dist/commands/porch/checks.d.ts.map +1 -1
  166. package/dist/commands/porch/checks.js +96 -144
  167. package/dist/commands/porch/checks.js.map +1 -1
  168. package/dist/commands/porch/index.d.ts +25 -43
  169. package/dist/commands/porch/index.d.ts.map +1 -1
  170. package/dist/commands/porch/index.js +463 -1116
  171. package/dist/commands/porch/index.js.map +1 -1
  172. package/dist/commands/porch/next.d.ts +22 -0
  173. package/dist/commands/porch/next.d.ts.map +1 -0
  174. package/dist/commands/porch/next.js +571 -0
  175. package/dist/commands/porch/next.js.map +1 -0
  176. package/dist/commands/porch/plan.d.ts +70 -0
  177. package/dist/commands/porch/plan.d.ts.map +1 -0
  178. package/dist/commands/porch/plan.js +190 -0
  179. package/dist/commands/porch/plan.js.map +1 -0
  180. package/dist/commands/porch/prompts.d.ts +19 -0
  181. package/dist/commands/porch/prompts.d.ts.map +1 -0
  182. package/dist/commands/porch/prompts.js +277 -0
  183. package/dist/commands/porch/prompts.js.map +1 -0
  184. package/dist/commands/porch/protocol.d.ts +59 -0
  185. package/dist/commands/porch/protocol.d.ts.map +1 -0
  186. package/dist/commands/porch/protocol.js +294 -0
  187. package/dist/commands/porch/protocol.js.map +1 -0
  188. package/dist/commands/porch/state.d.ts +36 -107
  189. package/dist/commands/porch/state.d.ts.map +1 -1
  190. package/dist/commands/porch/state.js +120 -699
  191. package/dist/commands/porch/state.js.map +1 -1
  192. package/dist/commands/porch/types.d.ts +99 -164
  193. package/dist/commands/porch/types.d.ts.map +1 -1
  194. package/dist/commands/porch/types.js +2 -1
  195. package/dist/commands/porch/types.js.map +1 -1
  196. package/dist/commands/porch/verdict.d.ts +31 -0
  197. package/dist/commands/porch/verdict.d.ts.map +1 -0
  198. package/dist/commands/porch/verdict.js +59 -0
  199. package/dist/commands/porch/verdict.js.map +1 -0
  200. package/dist/commands/update.d.ts.map +1 -1
  201. package/dist/commands/update.js +31 -0
  202. package/dist/commands/update.js.map +1 -1
  203. package/dist/lib/scaffold.d.ts +37 -0
  204. package/dist/lib/scaffold.d.ts.map +1 -1
  205. package/dist/lib/scaffold.js +114 -0
  206. package/dist/lib/scaffold.js.map +1 -1
  207. package/dist/terminal/index.d.ts +8 -0
  208. package/dist/terminal/index.d.ts.map +1 -0
  209. package/dist/terminal/index.js +5 -0
  210. package/dist/terminal/index.js.map +1 -0
  211. package/dist/terminal/pty-manager.d.ts +69 -0
  212. package/dist/terminal/pty-manager.d.ts.map +1 -0
  213. package/dist/terminal/pty-manager.js +377 -0
  214. package/dist/terminal/pty-manager.js.map +1 -0
  215. package/dist/terminal/pty-session.d.ts +104 -0
  216. package/dist/terminal/pty-session.d.ts.map +1 -0
  217. package/dist/terminal/pty-session.js +327 -0
  218. package/dist/terminal/pty-session.js.map +1 -0
  219. package/dist/terminal/ring-buffer.d.ts +34 -0
  220. package/dist/terminal/ring-buffer.d.ts.map +1 -0
  221. package/dist/terminal/ring-buffer.js +94 -0
  222. package/dist/terminal/ring-buffer.js.map +1 -0
  223. package/dist/terminal/session-manager.d.ts +115 -0
  224. package/dist/terminal/session-manager.d.ts.map +1 -0
  225. package/dist/terminal/session-manager.js +582 -0
  226. package/dist/terminal/session-manager.js.map +1 -0
  227. package/dist/terminal/shepherd-client.d.ts +66 -0
  228. package/dist/terminal/shepherd-client.d.ts.map +1 -0
  229. package/dist/terminal/shepherd-client.js +234 -0
  230. package/dist/terminal/shepherd-client.js.map +1 -0
  231. package/dist/terminal/shepherd-main.d.ts +19 -0
  232. package/dist/terminal/shepherd-main.d.ts.map +1 -0
  233. package/dist/terminal/shepherd-main.js +153 -0
  234. package/dist/terminal/shepherd-main.js.map +1 -0
  235. package/dist/terminal/shepherd-process.d.ts +75 -0
  236. package/dist/terminal/shepherd-process.d.ts.map +1 -0
  237. package/dist/terminal/shepherd-process.js +279 -0
  238. package/dist/terminal/shepherd-process.js.map +1 -0
  239. package/dist/terminal/shepherd-protocol.d.ts +115 -0
  240. package/dist/terminal/shepherd-protocol.d.ts.map +1 -0
  241. package/dist/terminal/shepherd-protocol.js +214 -0
  242. package/dist/terminal/shepherd-protocol.js.map +1 -0
  243. package/dist/terminal/shepherd-replay-buffer.d.ts +38 -0
  244. package/dist/terminal/shepherd-replay-buffer.d.ts.map +1 -0
  245. package/dist/terminal/shepherd-replay-buffer.js +94 -0
  246. package/dist/terminal/shepherd-replay-buffer.js.map +1 -0
  247. package/dist/terminal/ws-protocol.d.ts +27 -0
  248. package/dist/terminal/ws-protocol.d.ts.map +1 -0
  249. package/dist/terminal/ws-protocol.js +44 -0
  250. package/dist/terminal/ws-protocol.js.map +1 -0
  251. package/package.json +19 -5
  252. package/skeleton/.claude/skills/af/SKILL.md +89 -0
  253. package/skeleton/.claude/skills/codev/SKILL.md +41 -0
  254. package/skeleton/.claude/skills/consult/SKILL.md +81 -0
  255. package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
  256. package/skeleton/DEPENDENCIES.md +4 -62
  257. package/skeleton/builders.md +1 -1
  258. package/skeleton/consult-types/impl-review.md +18 -9
  259. package/skeleton/consult-types/integration-review.md +1 -1
  260. package/skeleton/consult-types/plan-review.md +1 -1
  261. package/skeleton/consult-types/pr-ready.md +1 -1
  262. package/skeleton/consult-types/spec-review.md +1 -1
  263. package/skeleton/porch/prompts/defend.md +1 -1
  264. package/skeleton/porch/prompts/evaluate.md +2 -2
  265. package/skeleton/porch/prompts/implement.md +1 -1
  266. package/skeleton/porch/prompts/plan.md +1 -1
  267. package/skeleton/porch/prompts/review.md +4 -4
  268. package/skeleton/porch/prompts/specify.md +1 -1
  269. package/skeleton/porch/prompts/understand.md +2 -2
  270. package/skeleton/protocol-schema.json +282 -0
  271. package/skeleton/protocols/bugfix/builder-prompt.md +54 -0
  272. package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
  273. package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
  274. package/skeleton/protocols/bugfix/prompts/pr.md +84 -0
  275. package/skeleton/protocols/bugfix/protocol.json +20 -33
  276. package/skeleton/protocols/experiment/builder-prompt.md +52 -0
  277. package/skeleton/protocols/experiment/protocol.json +101 -0
  278. package/skeleton/protocols/experiment/protocol.md +3 -3
  279. package/skeleton/protocols/experiment/templates/notes.md +1 -1
  280. package/skeleton/protocols/maintain/builder-prompt.md +46 -0
  281. package/skeleton/protocols/maintain/prompts/audit.md +111 -0
  282. package/skeleton/protocols/maintain/prompts/clean.md +91 -0
  283. package/skeleton/protocols/maintain/prompts/sync.md +113 -0
  284. package/skeleton/protocols/maintain/prompts/verify.md +110 -0
  285. package/skeleton/protocols/maintain/protocol.json +141 -0
  286. package/skeleton/protocols/maintain/protocol.md +17 -11
  287. package/skeleton/protocols/protocol-schema.json +54 -1
  288. package/skeleton/protocols/spir/builder-prompt.md +59 -0
  289. package/skeleton/protocols/spir/prompts/implement.md +208 -0
  290. package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
  291. package/skeleton/protocols/{spider → spir}/prompts/review.md +20 -39
  292. package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
  293. package/skeleton/protocols/spir/protocol.json +156 -0
  294. package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
  295. package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
  296. package/skeleton/protocols/spir/templates/review.md +89 -0
  297. package/skeleton/protocols/tick/builder-prompt.md +56 -0
  298. package/skeleton/protocols/tick/protocol.json +7 -2
  299. package/skeleton/protocols/tick/protocol.md +18 -18
  300. package/skeleton/protocols/tick/templates/review.md +1 -1
  301. package/skeleton/resources/commands/agent-farm.md +63 -46
  302. package/skeleton/resources/commands/codev.md +0 -2
  303. package/skeleton/resources/commands/overview.md +7 -17
  304. package/skeleton/resources/workflow-reference.md +4 -4
  305. package/skeleton/roles/architect.md +152 -315
  306. package/skeleton/roles/builder.md +110 -218
  307. package/skeleton/roles/consultant.md +6 -6
  308. package/skeleton/templates/AGENTS.md +2 -2
  309. package/skeleton/templates/CLAUDE.md +2 -2
  310. package/skeleton/templates/cheatsheet.md +7 -5
  311. package/skeleton/templates/projectlist.md +1 -1
  312. package/templates/dashboard/index.html +17 -43
  313. package/templates/dashboard/js/dialogs.js +7 -7
  314. package/templates/dashboard/js/files.js +2 -2
  315. package/templates/dashboard/js/main.js +4 -4
  316. package/templates/dashboard/js/projects.js +3 -3
  317. package/templates/dashboard/js/tabs.js +1 -1
  318. package/templates/dashboard/js/utils.js +22 -87
  319. package/templates/open.html +26 -0
  320. package/templates/tower.html +642 -36
  321. package/dist/agent-farm/commands/kickoff.d.ts +0 -20
  322. package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
  323. package/dist/agent-farm/commands/kickoff.js +0 -337
  324. package/dist/agent-farm/commands/kickoff.js.map +0 -1
  325. package/dist/agent-farm/commands/rename.d.ts +0 -13
  326. package/dist/agent-farm/commands/rename.d.ts.map +0 -1
  327. package/dist/agent-farm/commands/rename.js +0 -33
  328. package/dist/agent-farm/commands/rename.js.map +0 -1
  329. package/dist/agent-farm/commands/tutorial.d.ts +0 -10
  330. package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
  331. package/dist/agent-farm/commands/tutorial.js +0 -49
  332. package/dist/agent-farm/commands/tutorial.js.map +0 -1
  333. package/dist/agent-farm/commands/util.d.ts +0 -15
  334. package/dist/agent-farm/commands/util.d.ts.map +0 -1
  335. package/dist/agent-farm/commands/util.js +0 -108
  336. package/dist/agent-farm/commands/util.js.map +0 -1
  337. package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
  338. package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
  339. package/dist/agent-farm/servers/dashboard-server.js +0 -1872
  340. package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
  341. package/dist/agent-farm/servers/open-server.d.ts +0 -7
  342. package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
  343. package/dist/agent-farm/servers/open-server.js +0 -315
  344. package/dist/agent-farm/servers/open-server.js.map +0 -1
  345. package/dist/agent-farm/tutorial/index.d.ts +0 -8
  346. package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
  347. package/dist/agent-farm/tutorial/index.js +0 -8
  348. package/dist/agent-farm/tutorial/index.js.map +0 -1
  349. package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
  350. package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
  351. package/dist/agent-farm/tutorial/prompts.js +0 -147
  352. package/dist/agent-farm/tutorial/prompts.js.map +0 -1
  353. package/dist/agent-farm/tutorial/runner.d.ts +0 -52
  354. package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
  355. package/dist/agent-farm/tutorial/runner.js +0 -204
  356. package/dist/agent-farm/tutorial/runner.js.map +0 -1
  357. package/dist/agent-farm/tutorial/state.d.ts +0 -26
  358. package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
  359. package/dist/agent-farm/tutorial/state.js +0 -89
  360. package/dist/agent-farm/tutorial/state.js.map +0 -1
  361. package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
  362. package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
  363. package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
  364. package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
  365. package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
  366. package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
  367. package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
  368. package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
  369. package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
  370. package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
  371. package/dist/agent-farm/tutorial/steps/index.js +0 -10
  372. package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
  373. package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
  374. package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
  375. package/dist/agent-farm/tutorial/steps/planning.js +0 -143
  376. package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
  377. package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
  378. package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
  379. package/dist/agent-farm/tutorial/steps/review.js +0 -78
  380. package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
  381. package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
  382. package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
  383. package/dist/agent-farm/tutorial/steps/setup.js +0 -126
  384. package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
  385. package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
  386. package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
  387. package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
  388. package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
  389. package/dist/agent-farm/utils/orphan-handler.d.ts +0 -27
  390. package/dist/agent-farm/utils/orphan-handler.d.ts.map +0 -1
  391. package/dist/agent-farm/utils/orphan-handler.js +0 -149
  392. package/dist/agent-farm/utils/orphan-handler.js.map +0 -1
  393. package/dist/agent-farm/utils/port-registry.d.ts +0 -58
  394. package/dist/agent-farm/utils/port-registry.d.ts.map +0 -1
  395. package/dist/agent-farm/utils/port-registry.js +0 -166
  396. package/dist/agent-farm/utils/port-registry.js.map +0 -1
  397. package/dist/agent-farm/utils/terminal-ports.d.ts +0 -18
  398. package/dist/agent-farm/utils/terminal-ports.d.ts.map +0 -1
  399. package/dist/agent-farm/utils/terminal-ports.js +0 -35
  400. package/dist/agent-farm/utils/terminal-ports.js.map +0 -1
  401. package/dist/commands/pcheck/cache.d.ts +0 -48
  402. package/dist/commands/pcheck/cache.d.ts.map +0 -1
  403. package/dist/commands/pcheck/cache.js +0 -170
  404. package/dist/commands/pcheck/cache.js.map +0 -1
  405. package/dist/commands/pcheck/evaluator.d.ts +0 -15
  406. package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
  407. package/dist/commands/pcheck/evaluator.js +0 -246
  408. package/dist/commands/pcheck/evaluator.js.map +0 -1
  409. package/dist/commands/pcheck/index.d.ts +0 -12
  410. package/dist/commands/pcheck/index.d.ts.map +0 -1
  411. package/dist/commands/pcheck/index.js +0 -249
  412. package/dist/commands/pcheck/index.js.map +0 -1
  413. package/dist/commands/pcheck/parser.d.ts +0 -39
  414. package/dist/commands/pcheck/parser.d.ts.map +0 -1
  415. package/dist/commands/pcheck/parser.js +0 -155
  416. package/dist/commands/pcheck/parser.js.map +0 -1
  417. package/dist/commands/pcheck/types.d.ts +0 -82
  418. package/dist/commands/pcheck/types.d.ts.map +0 -1
  419. package/dist/commands/pcheck/types.js +0 -5
  420. package/dist/commands/pcheck/types.js.map +0 -1
  421. package/dist/commands/porch/consultation.d.ts +0 -56
  422. package/dist/commands/porch/consultation.d.ts.map +0 -1
  423. package/dist/commands/porch/consultation.js +0 -330
  424. package/dist/commands/porch/consultation.js.map +0 -1
  425. package/dist/commands/porch/notifications.d.ts +0 -99
  426. package/dist/commands/porch/notifications.d.ts.map +0 -1
  427. package/dist/commands/porch/notifications.js +0 -223
  428. package/dist/commands/porch/notifications.js.map +0 -1
  429. package/dist/commands/porch/plan-parser.d.ts +0 -38
  430. package/dist/commands/porch/plan-parser.d.ts.map +0 -1
  431. package/dist/commands/porch/plan-parser.js +0 -166
  432. package/dist/commands/porch/plan-parser.js.map +0 -1
  433. package/dist/commands/porch/protocol-loader.d.ts +0 -46
  434. package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
  435. package/dist/commands/porch/protocol-loader.js +0 -253
  436. package/dist/commands/porch/protocol-loader.js.map +0 -1
  437. package/dist/commands/porch/signal-parser.d.ts +0 -88
  438. package/dist/commands/porch/signal-parser.d.ts.map +0 -1
  439. package/dist/commands/porch/signal-parser.js +0 -148
  440. package/dist/commands/porch/signal-parser.js.map +0 -1
  441. package/dist/commands/tower.d.ts +0 -16
  442. package/dist/commands/tower.d.ts.map +0 -1
  443. package/dist/commands/tower.js +0 -21
  444. package/dist/commands/tower.js.map +0 -1
  445. package/skeleton/config.json +0 -7
  446. package/skeleton/porch/protocols/bugfix.json +0 -85
  447. package/skeleton/porch/protocols/spider.json +0 -135
  448. package/skeleton/porch/protocols/tick.json +0 -76
  449. package/skeleton/protocols/spider/prompts/defend.md +0 -215
  450. package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
  451. package/skeleton/protocols/spider/prompts/implement.md +0 -149
  452. package/skeleton/protocols/spider/protocol.json +0 -210
  453. package/skeleton/protocols/spider/templates/review.md +0 -207
  454. package/templates/dashboard/css/activity.css +0 -151
  455. package/templates/dashboard/js/activity.js +0 -112
  456. /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
@@ -0,0 +1,156 @@
1
+ {
2
+ "$schema": "../../protocol-schema.json",
3
+ "name": "spir",
4
+ "alias": "spider",
5
+ "version": "2.2.0",
6
+ "description": "SPIR: Specify → Plan → Implement → Review with build-verify cycles",
7
+ "input": {
8
+ "type": "spec",
9
+ "required": false,
10
+ "default_for": ["--project", "-p"]
11
+ },
12
+ "phases": [
13
+ {
14
+ "id": "specify",
15
+ "name": "Specify",
16
+ "description": "Write specification with 3-way review",
17
+ "type": "build_verify",
18
+ "build": {
19
+ "prompt": "specify.md",
20
+ "artifact": "codev/specs/${PROJECT_ID}-*.md"
21
+ },
22
+ "verify": {
23
+ "type": "spec-review",
24
+ "models": ["gemini", "codex", "claude"],
25
+ "parallel": true
26
+ },
27
+ "max_iterations": 7,
28
+ "on_complete": {
29
+ "commit": true,
30
+ "push": true
31
+ },
32
+ "gate": "spec-approval",
33
+ "next": "plan"
34
+ },
35
+ {
36
+ "id": "plan",
37
+ "name": "Plan",
38
+ "description": "Write implementation plan with 3-way review",
39
+ "type": "build_verify",
40
+ "build": {
41
+ "prompt": "plan.md",
42
+ "artifact": "codev/plans/${PROJECT_ID}-*.md"
43
+ },
44
+ "verify": {
45
+ "type": "plan-review",
46
+ "models": ["gemini", "codex", "claude"],
47
+ "parallel": true
48
+ },
49
+ "max_iterations": 7,
50
+ "on_complete": {
51
+ "commit": true,
52
+ "push": true
53
+ },
54
+ "checks": {
55
+ "plan_exists": "test -f codev/plans/${PROJECT_ID}-*.md",
56
+ "has_phases_json": "grep -q '\"phases\":' codev/plans/${PROJECT_ID}-*.md",
57
+ "min_two_phases": "grep -o '\"id\": *\"[^\"]*\"' codev/plans/${PROJECT_ID}-*.md | wc -l | awk '$1 >= 2 {exit 0} {exit 1}'"
58
+ },
59
+ "gate": "plan-approval",
60
+ "next": "implement"
61
+ },
62
+ {
63
+ "id": "implement",
64
+ "name": "Implement",
65
+ "description": "Implement code with 3-way review per plan phase",
66
+ "type": "per_plan_phase",
67
+ "build": {
68
+ "prompt": "implement.md",
69
+ "artifact": "src/**/*.{ts,tsx,js,jsx}"
70
+ },
71
+ "verify": {
72
+ "type": "impl-review",
73
+ "models": ["gemini", "codex", "claude"],
74
+ "parallel": true
75
+ },
76
+ "max_iterations": 7,
77
+ "on_complete": {
78
+ "commit": true,
79
+ "push": true
80
+ },
81
+ "checks": {
82
+ "build": {
83
+ "command": "npm run build",
84
+ "on_fail": "retry",
85
+ "max_retries": 2
86
+ },
87
+ "tests": {
88
+ "command": "npm test -- --exclude='**/e2e/**'",
89
+ "description": "Unit tests only - e2e tests run in review phase",
90
+ "on_fail": "retry",
91
+ "max_retries": 2
92
+ }
93
+ },
94
+ "transition": {
95
+ "on_complete": "implement",
96
+ "on_all_phases_complete": "review"
97
+ }
98
+ },
99
+ {
100
+ "id": "review",
101
+ "name": "Review",
102
+ "description": "Final review and PR with 3-way review",
103
+ "type": "build_verify",
104
+ "build": {
105
+ "prompt": "review.md",
106
+ "artifact": "codev/reviews/${PROJECT_ID}-*.md"
107
+ },
108
+ "verify": {
109
+ "type": "pr-ready",
110
+ "models": ["gemini", "codex", "claude"],
111
+ "parallel": true
112
+ },
113
+ "max_iterations": 7,
114
+ "on_complete": {
115
+ "commit": true,
116
+ "push": true
117
+ },
118
+ "checks": {
119
+ "pr_exists": {
120
+ "command": "gh pr list --head \"$(git branch --show-current)\" --json number --jq 'length' | grep -q '^[1-9]'",
121
+ "description": "PR must be created before signaling completion"
122
+ },
123
+ "e2e_tests": {
124
+ "command": "npm run test:e2e 2>&1 || echo 'e2e tests skipped (not configured)'",
125
+ "description": "Full e2e test suite - only runs in review phase",
126
+ "optional": true
127
+ }
128
+ },
129
+ "gate": "pr-ready",
130
+ "next": null
131
+ }
132
+ ],
133
+ "signals": {
134
+ "PHASE_COMPLETE": {
135
+ "description": "Signal current build phase is complete",
136
+ "transitions_to": "verify"
137
+ },
138
+ "BLOCKED": {
139
+ "description": "Signal implementation is blocked",
140
+ "requires": "reason"
141
+ }
142
+ },
143
+ "phase_completion": {
144
+ "build_succeeds": "npm run build 2>&1",
145
+ "tests_pass": "npm test 2>&1",
146
+ "commit_has_code": "git log -1 --name-only --pretty=format: | grep -qE '\\.(ts|tsx|js|jsx|py|go|rs)$'"
147
+ },
148
+ "defaults": {
149
+ "mode": "strict",
150
+ "max_iterations": 7,
151
+ "verify": {
152
+ "models": ["gemini", "codex", "claude"],
153
+ "parallel": true
154
+ }
155
+ }
156
+ }
@@ -1,9 +1,19 @@
1
- # SPIDER Protocol
1
+ # SPIR Protocol
2
+
3
+ > **SPIR** = **S**pecify → **P**lan → **I**mplement → **R**eview
4
+ >
5
+ > Each phase has one build-verify cycle with 3-way consultation.
2
6
 
3
7
  > **Quick Reference**: See `codev/resources/workflow-reference.md` for stage diagrams and common commands.
4
8
 
5
9
  ## Prerequisites
6
10
 
11
+ **Clean Worktree Before Spawning Builders**:
12
+ - All specs, plans, and local changes **MUST be committed** before `af spawn`
13
+ - Builders work in git worktrees branched from HEAD — uncommitted files are invisible
14
+ - This includes `codev update` results, spec drafts, and plan approvals
15
+ - The `af spawn` command enforces this (use `--force` to override)
16
+
7
17
  **Required for Multi-Agent Consultation**:
8
18
  - The `consult` CLI must be available (installed with `npm install -g @cluesmith/codev`)
9
19
  - At least one consultation backend: `claude`, `gemini-cli`, or `codex`
@@ -14,17 +24,17 @@
14
24
  ### Multi-Agent Consultation (ENABLED BY DEFAULT)
15
25
 
16
26
  **DEFAULT BEHAVIOR:**
17
- Multi-agent consultation is **ENABLED BY DEFAULT** when using SPIDER protocol.
27
+ Multi-agent consultation is **ENABLED BY DEFAULT** when using SPIR protocol.
18
28
 
19
29
  **DEFAULT AGENTS:**
20
30
  - **GPT-5 Codex**: Primary reviewer for architecture, feasibility, and code quality
21
31
  - **Gemini Pro**: Secondary reviewer for completeness, edge cases, and alternative approaches
22
32
 
23
33
  **DISABLING CONSULTATION:**
24
- To run SPIDER without consultation, say "without consultation" when starting work.
34
+ To run SPIR without consultation, say "without consultation" when starting work.
25
35
 
26
36
  **CUSTOM AGENTS:**
27
- The user can specify different agents by saying: "use SPIDER with consultation from [agent1] and [agent2]"
37
+ The user can specify different agents by saying: "use SPIR with consultation from [agent1] and [agent2]"
28
38
 
29
39
  **CONSULTATION BEHAVIOR:**
30
40
  - DEFAULT: MANDATORY consultation with GPT-5 and Gemini Pro at EVERY checkpoint
@@ -40,13 +50,21 @@ The user can specify different agents by saying: "use SPIDER with consultation f
40
50
  - **Review**: After review document
41
51
 
42
52
  ## Overview
43
- SPIDER is a structured development protocol that emphasizes specification-driven development with iterative implementation and continuous review. It builds upon the DAPPER methodology with a focus on context-first development and multi-agent collaboration.
53
+ SPIR is a structured development protocol that emphasizes specification-driven development with iterative implementation and continuous review. It builds upon the DAPPER methodology with a focus on context-first development and multi-agent collaboration.
54
+
55
+ **The SPIR Model**:
56
+ - **S - Specify**: Write specification with 3-way review → Gate: `spec-approval`
57
+ - **P - Plan**: Write implementation plan with 3-way review → Gate: `plan-approval`
58
+ - **I - Implement**: Execute each plan phase with build-verify cycle (one cycle per phase)
59
+ - **R - Review**: Final review and PR preparation with 3-way review
60
+
61
+ Each phase follows a build-verify loop: build the artifact, then verify with 3-way consultation (Gemini, Codex, Claude).
44
62
 
45
63
  **Core Principle**: Each feature is tracked through exactly THREE documents - a specification, a plan, and a review with lessons learned - all sharing the same filename and sequential identifier.
46
64
 
47
- ## When to Use SPIDER
65
+ ## When to Use SPIR
48
66
 
49
- ### Use SPIDER for:
67
+ ### Use SPIR for:
50
68
  - New feature development
51
69
  - Architecture changes
52
70
  - Complex refactoring
@@ -54,7 +72,7 @@ SPIDER is a structured development protocol that emphasizes specification-driven
54
72
  - API design and implementation
55
73
  - Performance optimization initiatives
56
74
 
57
- ### Skip SPIDER for:
75
+ ### Skip SPIR for:
58
76
  - Simple bug fixes (< 10 lines)
59
77
  - Documentation updates
60
78
  - Configuration changes
@@ -224,25 +242,21 @@ Each phase should be:
224
242
  **Template**: `templates/plan.md`
225
243
  **Review Required**: Yes - Technical lead approval AFTER consultations
226
244
 
227
- ### (IDE) - Implementation Loop
228
-
229
- Execute for each phase in the plan. This is a strict cycle that must be completed in order.
245
+ ### I - Implement (Per Plan Phase)
230
246
 
231
- **⚠️ MANDATORY**: The I-D-E cycle MUST be completed for EACH PHASE, not just at the end of all phases. Skipping D (Defend) or E (Evaluate) for any phase is a PROTOCOL VIOLATION.
247
+ Execute for each phase in the plan. Each phase follows a build-verify cycle.
232
248
 
233
249
  **CRITICAL PRECONDITION**: Before starting any phase, verify the previous phase was committed to git. No phase can begin without the prior phase's commit.
234
250
 
235
- **Phase Completion Process**:
236
- 1. **Implement** - Build the code for this phase
237
- 2. **Defend** - Write comprehensive tests that guard functionality
238
- 3. **Evaluate** - Assess and discuss with user
251
+ **Build-Verify Cycle Per Phase**:
252
+ 1. **Build** - Implement code and tests for this phase
253
+ 2. **Verify** - 3-way consultation (Gemini, Codex, Claude)
254
+ 3. **Iterate** - Address feedback until verification passes
239
255
  4. **Commit** - Single atomic commit for the phase (MANDATORY before next phase)
240
256
  5. **Proceed** - Move to next phase only after commit
241
257
 
242
258
  **Handling Failures**:
243
- - If **Defend** phase reveals gaps → return to **Implement** to fix
244
- - If **Evaluation** reveals unmet criteria → return to **Implement**
245
- - If user requests changes → return to **Implement**
259
+ - If verification reveals gaps → iterate and fix
246
260
  - If fundamental plan flaws found → mark phase as `blocked` and revise plan
247
261
 
248
262
  **Commit Requirements**:
@@ -586,12 +600,12 @@ Implements bcrypt-based password hashing with configurable rounds
586
600
 
587
601
  ### Branch Naming
588
602
  ```
589
- spider/####-<spec-name>/<phase-name>
603
+ spir/####-<spec-name>/<phase-name>
590
604
  ```
591
605
 
592
606
  Example:
593
607
  ```
594
- spider/0001-user-authentication/database-schema
608
+ spir/0001-user-authentication/database-schema
595
609
  ```
596
610
 
597
611
 
@@ -17,6 +17,20 @@
17
17
  - [ ] Zero critical security issues
18
18
  - [ ] Documentation complete
19
19
 
20
+ ## Phases (Machine Readable)
21
+
22
+ <!-- REQUIRED: porch uses this JSON to track phase progress. Update this when adding/removing phases. -->
23
+
24
+ ```json
25
+ {
26
+ "phases": [
27
+ {"id": "phase_1", "title": "Phase 1 Title Here"},
28
+ {"id": "phase_2", "title": "Phase 2 Title Here"},
29
+ {"id": "phase_3", "title": "Phase 3 Title Here"}
30
+ ]
31
+ }
32
+ ```
33
+
20
34
  ## Phase Breakdown
21
35
 
22
36
  ### Phase 1: [Descriptive Name]
@@ -0,0 +1,89 @@
1
+ # Review: [Feature/Project Name]
2
+
3
+ ## Summary
4
+
5
+ [1-3 sentences: what was built, how many phases, net outcome.]
6
+
7
+ ## Spec Compliance
8
+
9
+ - [x] AC1: [Description] (Phase N)
10
+ - [x] AC2: [Description] (Phase N)
11
+ - [ ] ACn: [Not met — reason]
12
+
13
+ ## Deviations from Plan
14
+
15
+ - **Phase N**: [What changed and why]
16
+
17
+ ## Key Metrics
18
+
19
+ - **Commits**: [N] on the branch
20
+ - **Tests**: [N] passing ([N] existing + [N] new)
21
+ - **Files created**: [list]
22
+ - **Files deleted**: [list]
23
+ - **Net LOC impact**: [+/-N lines]
24
+
25
+ ## Timelog
26
+
27
+ All times [timezone], [date range].
28
+
29
+ | Time | Event |
30
+ |------|-------|
31
+ | HH:MM | First commit: [description] |
32
+ | HH:MM | [Phase/milestone] |
33
+ | — | **GATE: [gate-name]** (human approval required) |
34
+ | HH:MM | Implementation begins |
35
+ | HH:MM | Phase N complete after N iterations |
36
+ | HH:MM | **GATE: pr-ready** |
37
+
38
+ ### Autonomous Operation
39
+
40
+ | Period | Duration | Activity |
41
+ |--------|----------|----------|
42
+ | Spec + Plan | ~Nm | [Summary] |
43
+ | Human gate wait | ~Nh Nm | Idle — waiting for approval |
44
+ | Implementation → PR | ~Nh Nm | N phases, N consultation rounds |
45
+
46
+ **Total wall clock** (first commit to pr-ready): **Xh Ym**
47
+ **Total autonomous work time** (excluding gate waits): **~Xh Ym**
48
+ **Context window resets**: [N] (resumed automatically / required manual restart)
49
+
50
+ ## Consultation Iteration Summary
51
+
52
+ [N] consultation files produced ([N] rounds x [N] models). [N] APPROVE, [N] REQUEST_CHANGES, [N] COMMENT.
53
+
54
+ | Phase | Iters | Who Blocked | What They Caught |
55
+ |-------|-------|-------------|------------------|
56
+ | Specify | N | [Model] | [Brief description] |
57
+ | Plan | N | [Model] | [Brief description] |
58
+ | Phase 1 | N | [Model] | [Brief description] |
59
+ | Phase N | N | [Model] | [Brief description] |
60
+ | Review | N | [Model] | [Brief description] |
61
+
62
+ **Most frequent blocker**: [Model] — blocked in N of N rounds, focused on: [pattern].
63
+
64
+ ### Avoidable Iterations
65
+
66
+ Iterations that could have been prevented with better builder behavior:
67
+
68
+ 1. **[Pattern]**: [Specific thing the builder should have done without needing reviewer feedback. E.g., "Run exhaustive grep before claiming all instances fixed."]
69
+
70
+ 2. **[Pattern]**: [Another avoidable iteration pattern.]
71
+
72
+ ## Lessons Learned
73
+
74
+ ### What Went Well
75
+ - [Specific positive observation — what worked and why]
76
+
77
+ ### Challenges Encountered
78
+ - **[Challenge]**: [How it was resolved. How many iterations it cost.]
79
+
80
+ ### What Would Be Done Differently
81
+ - [Actionable improvement for future builders]
82
+
83
+ ## Technical Debt
84
+
85
+ - [Any shortcuts taken or inconsistencies introduced]
86
+
87
+ ## Follow-up Items
88
+
89
+ - [Items identified for future work, outside this spec's scope]
@@ -0,0 +1,56 @@
1
+ # {{protocol_name}} Builder ({{mode}} mode)
2
+
3
+ You are implementing {{input_description}}.
4
+
5
+ {{#if mode_soft}}
6
+ ## Mode: SOFT
7
+ You are running in SOFT mode. This means:
8
+ - You follow the TICK protocol yourself (no porch orchestration)
9
+ - The architect monitors your work and verifies you're adhering to the protocol
10
+ - Run consultations manually when the protocol calls for them
11
+ - You have flexibility in execution, but must stay compliant with the protocol
12
+ {{/if}}
13
+
14
+ {{#if mode_strict}}
15
+ ## Mode: STRICT
16
+ You are running in STRICT mode. This means:
17
+ - Porch orchestrates your work
18
+ - Run: `porch next` to get your next tasks
19
+ - Follow porch signals and gate approvals
20
+
21
+ ### ABSOLUTE RESTRICTIONS (STRICT MODE)
22
+ - **NEVER edit `status.yaml` directly** — only porch commands may modify project state
23
+ - **NEVER call `porch approve` without explicit human approval** — only run it after the architect says to
24
+ - **NEVER skip the 3-way review** — always follow porch next → porch done cycle
25
+ {{/if}}
26
+
27
+ ## Protocol
28
+ Follow the TICK protocol: `codev/protocols/tick/protocol.md`
29
+
30
+ TICK is for amendments to existing SPIR specifications. You will:
31
+ 1. Identify the target spec to amend
32
+ 2. Update the spec with the amendment
33
+ 3. Update the plan
34
+ 4. Implement the changes
35
+ 5. Defend with tests
36
+ 6. Create review
37
+
38
+ {{#if spec}}
39
+ ## Target Spec
40
+ The spec to amend is at: `{{spec.path}}`
41
+ {{/if}}
42
+
43
+ {{#if plan}}
44
+ ## Target Plan
45
+ The plan to amend is at: `{{plan.path}}`
46
+ {{/if}}
47
+
48
+ {{#if task}}
49
+ ## Amendment Description
50
+ {{task_text}}
51
+ {{/if}}
52
+
53
+ ## Getting Started
54
+ 1. Read the TICK protocol thoroughly
55
+ 2. Identify what needs to change in the existing spec
56
+ 3. Follow the amendment workflow
@@ -1,8 +1,12 @@
1
1
  {
2
2
  "$schema": "../../protocol-schema.json",
3
3
  "name": "tick",
4
- "version": "1.0.0",
5
- "description": "Amendment workflow for existing SPIDER specifications",
4
+ "version": "1.1.0",
5
+ "description": "Amendment workflow for existing SPIR specifications",
6
+ "input": {
7
+ "type": "spec",
8
+ "required": false
9
+ },
6
10
  "phases": [
7
11
  {
8
12
  "id": "identify",
@@ -138,6 +142,7 @@
138
142
  }
139
143
  },
140
144
  "defaults": {
145
+ "mode": "strict",
141
146
  "consultation": {
142
147
  "enabled": true,
143
148
  "models": ["gemini", "codex"],
@@ -3,16 +3,16 @@
3
3
 
4
4
  ## Overview
5
5
 
6
- TICK is an **amendment workflow** for existing SPIDER specifications. Rather than creating new standalone specs, TICK modifies existing spec and plan documents in-place, tracking changes in an "Amendments" section.
6
+ TICK is an **amendment workflow** for existing SPIR specifications. Rather than creating new standalone specs, TICK modifies existing spec and plan documents in-place, tracking changes in an "Amendments" section.
7
7
 
8
- **Core Principle**: TICK is for *refining* existing specs. SPIDER is for *creating* new specs.
8
+ **Core Principle**: TICK is for *refining* existing specs. SPIR is for *creating* new specs.
9
9
 
10
- **Key Insight**: TICKs are not small SPIDERs - they're amendments to existing SPIDERs. This eliminates the "TICK vs SPIDER" decision problem and keeps related work together.
10
+ **Key Insight**: TICKs are not small SPIRs - they're amendments to existing SPIRs. This eliminates the "TICK vs SPIR" decision problem and keeps related work together.
11
11
 
12
12
  ## When to Use TICK
13
13
 
14
14
  ### Use TICK when:
15
- - Making **amendments to an existing SPIDER spec** that is already `integrated`
15
+ - Making **amendments to an existing SPIR spec** that is already `integrated`
16
16
  - Small scope (< 300 lines of new/changed code)
17
17
  - Requirements are clear and well-defined
18
18
  - No fundamental architecture changes
@@ -23,7 +23,7 @@ TICK is an **amendment workflow** for existing SPIDER specifications. Rather tha
23
23
  - Utility function additions to existing modules
24
24
  - Refactoring within an existing feature
25
25
 
26
- ### Use SPIDER instead when:
26
+ ### Use SPIR instead when:
27
27
  - Creating a **new feature from scratch** (no existing spec to amend)
28
28
  - Major architecture changes (scope too large for amendment)
29
29
  - Unclear requirements needing exploration
@@ -31,8 +31,8 @@ TICK is an **amendment workflow** for existing SPIDER specifications. Rather tha
31
31
  - Multiple stakeholders need alignment
32
32
 
33
33
  ### Cannot Use TICK when:
34
- - No relevant SPIDER spec exists (create a new SPIDER spec instead)
35
- - Target spec is not yet `integrated` (complete the SPIDER cycle first)
34
+ - No relevant SPIR spec exists (create a new SPIR spec instead)
35
+ - Target spec is not yet `integrated` (complete the SPIR cycle first)
36
36
 
37
37
  ## Amendment Workflow
38
38
 
@@ -162,9 +162,9 @@ The format `[TICK ####-NNN]` identifies:
162
162
  - `####`: Parent spec number (e.g., 0002)
163
163
  - `NNN`: TICK amendment number (e.g., 001, 002, 003)
164
164
 
165
- ## Key Differences from SPIDER
165
+ ## Key Differences from SPIR
166
166
 
167
- | Aspect | SPIDER | TICK |
167
+ | Aspect | SPIR | TICK |
168
168
  |--------|--------|------|
169
169
  | Purpose | Create new features | Amend existing features |
170
170
  | File creation | Creates new spec/plan/review | Modifies spec/plan, creates review |
@@ -178,16 +178,16 @@ The format `[TICK ####-NNN]` identifies:
178
178
 
179
179
  ```
180
180
  Is there an existing spec to amend?
181
- ├── NO → Use SPIDER (create new spec)
181
+ ├── NO → Use SPIR (create new spec)
182
182
  └── YES → Is it integrated?
183
- ├── NO → Complete SPIDER cycle first
183
+ ├── NO → Complete SPIR cycle first
184
184
  └── YES → Is the change small (<300 LOC)?
185
185
  ├── YES → Use TICK (amend existing spec)
186
- └── NO → Use SPIDER (scope too large)
186
+ └── NO → Use SPIR (scope too large)
187
187
  ```
188
188
 
189
189
  **Mental Model**:
190
- - SPIDER = Create new feature from scratch
190
+ - SPIR = Create new feature from scratch
191
191
  - TICK = Refine/extend existing feature
192
192
 
193
193
  ## Example TICK Workflow
@@ -251,7 +251,7 @@ Existing standalone TICK projects (created before this protocol change) are gran
251
251
  1. **Single source of truth**: Spec file shows complete feature evolution
252
252
  2. **Clear history**: Amendments section documents all changes chronologically
253
253
  3. **Reduced fragmentation**: Related work stays together
254
- 4. **Simpler mental model**: "New vs amendment" is clearer than "SPIDER vs TICK"
254
+ 4. **Simpler mental model**: "New vs amendment" is clearer than "SPIR vs TICK"
255
255
  5. **Preserved context**: Looking at a spec shows all refinements
256
256
 
257
257
  ## Limitations
@@ -264,14 +264,14 @@ Existing standalone TICK projects (created before this protocol change) are gran
264
264
  ## Best Practices
265
265
 
266
266
  1. **Verify spec is integrated**: Never TICK a spec that isn't complete
267
- 2. **Keep TICKs small**: If scope grows, consider new SPIDER spec
267
+ 2. **Keep TICKs small**: If scope grows, consider new SPIR spec
268
268
  3. **Clear summaries**: Amendment entries should be self-explanatory
269
269
  4. **Test before review**: Always test functionality before presenting
270
270
  5. **Honest documentation**: Document all deviations in review
271
271
 
272
272
  ## Templates
273
273
 
274
- TICK uses the standard SPIDER templates with amendments sections:
275
- - Spec template: `codev/protocols/spider/templates/spec.md` (includes Amendments section)
276
- - Plan template: `codev/protocols/spider/templates/plan.md` (includes Amendment History section)
274
+ TICK uses the standard SPIR templates with amendments sections:
275
+ - Spec template: `codev/protocols/spir/templates/spec.md` (includes Amendments section)
276
+ - Plan template: `codev/protocols/spir/templates/plan.md` (includes Amendment History section)
277
277
  - Review template: `codev/protocols/tick/templates/review.md` (TICK-specific)
@@ -77,7 +77,7 @@
77
77
 
78
78
  ## TICK Protocol Feedback
79
79
  - **Autonomous execution**: [Worked well / Issues encountered]
80
- - **Single-phase approach**: [Appropriate / Should have used SPIDER]
80
+ - **Single-phase approach**: [Appropriate / Should have used SPIR]
81
81
  - **Speed vs quality trade-off**: [Balanced / Too fast / Too slow]
82
82
  - **End-only consultation**: [Caught issues / Missed opportunities]
83
83