@cluesmith/codev 3.0.0-rc.0 → 3.0.0-rc.10

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 (331) hide show
  1. package/LICENSE +201 -0
  2. package/bin/af.js +2 -2
  3. package/bin/afx.js +8 -0
  4. package/bin/consult.js +2 -1
  5. package/bin/team.js +8 -0
  6. package/{dashboard/dist/assets/index-nr0cXxtf.css → dashboard-dist/assets/index-Bs8I7N2s.css} +1 -1
  7. package/dashboard-dist/assets/index-CkNo2z6t.js +195 -0
  8. package/dashboard-dist/assets/index-CkNo2z6t.js.map +1 -0
  9. package/dashboard-dist/dist/assets/index-Bs8I7N2s.css +32 -0
  10. package/dashboard-dist/dist/assets/index-CkNo2z6t.js +195 -0
  11. package/dashboard-dist/dist/assets/index-CkNo2z6t.js.map +1 -0
  12. package/{dashboard → dashboard-dist}/dist/index.html +2 -2
  13. package/dashboard-dist/index.html +14 -0
  14. package/dist/agent-farm/cli.d.ts.map +1 -1
  15. package/dist/agent-farm/cli.js +21 -13
  16. package/dist/agent-farm/cli.js.map +1 -1
  17. package/dist/agent-farm/commands/architect.d.ts +4 -4
  18. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  19. package/dist/agent-farm/commands/architect.js +23 -12
  20. package/dist/agent-farm/commands/architect.js.map +1 -1
  21. package/dist/agent-farm/commands/attach.js +8 -8
  22. package/dist/agent-farm/commands/attach.js.map +1 -1
  23. package/dist/agent-farm/commands/bench.d.ts +1 -1
  24. package/dist/agent-farm/commands/bench.js +1 -1
  25. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  26. package/dist/agent-farm/commands/cleanup.js +10 -5
  27. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  28. package/dist/agent-farm/commands/cron.js +1 -1
  29. package/dist/agent-farm/commands/cron.js.map +1 -1
  30. package/dist/agent-farm/commands/db.d.ts +3 -3
  31. package/dist/agent-farm/commands/db.js +4 -4
  32. package/dist/agent-farm/commands/db.js.map +1 -1
  33. package/dist/agent-farm/commands/open.js +2 -2
  34. package/dist/agent-farm/commands/open.js.map +1 -1
  35. package/dist/agent-farm/commands/rename.js +1 -1
  36. package/dist/agent-farm/commands/rename.js.map +1 -1
  37. package/dist/agent-farm/commands/send.d.ts +4 -1
  38. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  39. package/dist/agent-farm/commands/send.js +8 -5
  40. package/dist/agent-farm/commands/send.js.map +1 -1
  41. package/dist/agent-farm/commands/shell.js +3 -3
  42. package/dist/agent-farm/commands/shell.js.map +1 -1
  43. package/dist/agent-farm/commands/spawn-roles.d.ts +2 -1
  44. package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
  45. package/dist/agent-farm/commands/spawn-roles.js +1 -1
  46. package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
  47. package/dist/agent-farm/commands/spawn-worktree.d.ts +49 -10
  48. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  49. package/dist/agent-farm/commands/spawn-worktree.js +357 -49
  50. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  51. package/dist/agent-farm/commands/spawn.d.ts +6 -6
  52. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  53. package/dist/agent-farm/commands/spawn.js +182 -74
  54. package/dist/agent-farm/commands/spawn.js.map +1 -1
  55. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  56. package/dist/agent-farm/commands/status.js +48 -3
  57. package/dist/agent-farm/commands/status.js.map +1 -1
  58. package/dist/agent-farm/commands/team-update.d.ts +1 -1
  59. package/dist/agent-farm/commands/team-update.d.ts.map +1 -1
  60. package/dist/agent-farm/commands/team-update.js +8 -5
  61. package/dist/agent-farm/commands/team-update.js.map +1 -1
  62. package/dist/agent-farm/commands/team.d.ts +7 -1
  63. package/dist/agent-farm/commands/team.d.ts.map +1 -1
  64. package/dist/agent-farm/commands/team.js +36 -4
  65. package/dist/agent-farm/commands/team.js.map +1 -1
  66. package/dist/agent-farm/commands/tower-cloud.d.ts +2 -2
  67. package/dist/agent-farm/commands/tower-cloud.js +3 -3
  68. package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
  69. package/dist/agent-farm/commands/tower.d.ts +1 -0
  70. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  71. package/dist/agent-farm/commands/tower.js +54 -3
  72. package/dist/agent-farm/commands/tower.js.map +1 -1
  73. package/dist/agent-farm/lib/cloud-config.js +2 -2
  74. package/dist/agent-farm/lib/cloud-config.js.map +1 -1
  75. package/dist/agent-farm/lib/tower-client.d.ts +6 -230
  76. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  77. package/dist/agent-farm/lib/tower-client.js +6 -293
  78. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  79. package/dist/agent-farm/lib/tunnel-client.js +1 -1
  80. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  81. package/dist/agent-farm/servers/message-write.d.ts +24 -0
  82. package/dist/agent-farm/servers/message-write.d.ts.map +1 -0
  83. package/dist/agent-farm/servers/message-write.js +63 -0
  84. package/dist/agent-farm/servers/message-write.js.map +1 -0
  85. package/dist/agent-farm/servers/overview.d.ts +10 -8
  86. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  87. package/dist/agent-farm/servers/overview.js +78 -38
  88. package/dist/agent-farm/servers/overview.js.map +1 -1
  89. package/dist/agent-farm/servers/send-buffer.d.ts +4 -3
  90. package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
  91. package/dist/agent-farm/servers/send-buffer.js +7 -4
  92. package/dist/agent-farm/servers/send-buffer.js.map +1 -1
  93. package/dist/agent-farm/servers/tower-cron-parser.js +1 -1
  94. package/dist/agent-farm/servers/tower-cron-parser.js.map +1 -1
  95. package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
  96. package/dist/agent-farm/servers/tower-cron.js +4 -5
  97. package/dist/agent-farm/servers/tower-cron.js.map +1 -1
  98. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  99. package/dist/agent-farm/servers/tower-instances.js +24 -15
  100. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  101. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  102. package/dist/agent-farm/servers/tower-routes.js +9 -16
  103. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  104. package/dist/agent-farm/servers/tower-server.js +15 -1
  105. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  106. package/dist/agent-farm/servers/tower-terminals.d.ts +2 -2
  107. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  108. package/dist/agent-farm/servers/tower-terminals.js +64 -36
  109. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  110. package/dist/agent-farm/servers/tower-tunnel.js +2 -2
  111. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  112. package/dist/agent-farm/servers/tower-utils.d.ts +9 -6
  113. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  114. package/dist/agent-farm/servers/tower-utils.js +13 -7
  115. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  116. package/dist/agent-farm/types.d.ts +13 -0
  117. package/dist/agent-farm/types.d.ts.map +1 -1
  118. package/dist/agent-farm/utils/config.d.ts +11 -0
  119. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  120. package/dist/agent-farm/utils/config.js +39 -17
  121. package/dist/agent-farm/utils/config.js.map +1 -1
  122. package/dist/agent-farm/utils/harness.d.ts +85 -0
  123. package/dist/agent-farm/utils/harness.d.ts.map +1 -0
  124. package/dist/agent-farm/utils/harness.js +212 -0
  125. package/dist/agent-farm/utils/harness.js.map +1 -0
  126. package/dist/agent-farm/utils/roles.d.ts +11 -4
  127. package/dist/agent-farm/utils/roles.d.ts.map +1 -1
  128. package/dist/agent-farm/utils/roles.js +21 -6
  129. package/dist/agent-farm/utils/roles.js.map +1 -1
  130. package/dist/cli.d.ts +1 -1
  131. package/dist/cli.d.ts.map +1 -1
  132. package/dist/cli.js +118 -5
  133. package/dist/cli.js.map +1 -1
  134. package/dist/commands/adopt.d.ts.map +1 -1
  135. package/dist/commands/adopt.js +16 -45
  136. package/dist/commands/adopt.js.map +1 -1
  137. package/dist/commands/consult/index.d.ts +6 -2
  138. package/dist/commands/consult/index.d.ts.map +1 -1
  139. package/dist/commands/consult/index.js +231 -183
  140. package/dist/commands/consult/index.js.map +1 -1
  141. package/dist/commands/doctor.d.ts.map +1 -1
  142. package/dist/commands/doctor.js +121 -31
  143. package/dist/commands/doctor.js.map +1 -1
  144. package/dist/commands/init.d.ts.map +1 -1
  145. package/dist/commands/init.js +13 -43
  146. package/dist/commands/init.js.map +1 -1
  147. package/dist/commands/porch/artifacts.d.ts +69 -0
  148. package/dist/commands/porch/artifacts.d.ts.map +1 -0
  149. package/dist/commands/porch/artifacts.js +368 -0
  150. package/dist/commands/porch/artifacts.js.map +1 -0
  151. package/dist/commands/porch/checks.d.ts +14 -3
  152. package/dist/commands/porch/checks.d.ts.map +1 -1
  153. package/dist/commands/porch/checks.js +150 -4
  154. package/dist/commands/porch/checks.js.map +1 -1
  155. package/dist/commands/porch/config.d.ts +6 -9
  156. package/dist/commands/porch/config.d.ts.map +1 -1
  157. package/dist/commands/porch/config.js +12 -37
  158. package/dist/commands/porch/config.js.map +1 -1
  159. package/dist/commands/porch/index.d.ts +12 -7
  160. package/dist/commands/porch/index.d.ts.map +1 -1
  161. package/dist/commands/porch/index.js +273 -82
  162. package/dist/commands/porch/index.js.map +1 -1
  163. package/dist/commands/porch/next.d.ts.map +1 -1
  164. package/dist/commands/porch/next.js +142 -75
  165. package/dist/commands/porch/next.js.map +1 -1
  166. package/dist/commands/porch/notify.d.ts +2 -2
  167. package/dist/commands/porch/notify.js +5 -5
  168. package/dist/commands/porch/notify.js.map +1 -1
  169. package/dist/commands/porch/prompts.d.ts +2 -1
  170. package/dist/commands/porch/prompts.d.ts.map +1 -1
  171. package/dist/commands/porch/prompts.js +34 -38
  172. package/dist/commands/porch/prompts.js.map +1 -1
  173. package/dist/commands/porch/protocol.d.ts +4 -3
  174. package/dist/commands/porch/protocol.d.ts.map +1 -1
  175. package/dist/commands/porch/protocol.js +21 -21
  176. package/dist/commands/porch/protocol.js.map +1 -1
  177. package/dist/commands/porch/state.d.ts +27 -2
  178. package/dist/commands/porch/state.d.ts.map +1 -1
  179. package/dist/commands/porch/state.js +100 -9
  180. package/dist/commands/porch/state.js.map +1 -1
  181. package/dist/commands/porch/types.d.ts +10 -2
  182. package/dist/commands/porch/types.d.ts.map +1 -1
  183. package/dist/commands/sync.d.ts +26 -0
  184. package/dist/commands/sync.d.ts.map +1 -0
  185. package/dist/commands/sync.js +207 -0
  186. package/dist/commands/sync.js.map +1 -0
  187. package/dist/commands/update.d.ts +15 -2
  188. package/dist/commands/update.d.ts.map +1 -1
  189. package/dist/commands/update.js +159 -202
  190. package/dist/commands/update.js.map +1 -1
  191. package/dist/lib/config.d.ts +96 -0
  192. package/dist/lib/config.d.ts.map +1 -0
  193. package/dist/lib/config.js +165 -0
  194. package/dist/lib/config.js.map +1 -0
  195. package/dist/lib/forge-contracts.d.ts +100 -0
  196. package/dist/lib/forge-contracts.d.ts.map +1 -0
  197. package/dist/lib/forge-contracts.js +35 -0
  198. package/dist/lib/forge-contracts.js.map +1 -0
  199. package/dist/lib/forge.d.ts +102 -0
  200. package/dist/lib/forge.d.ts.map +1 -0
  201. package/dist/lib/forge.js +376 -0
  202. package/dist/lib/forge.js.map +1 -0
  203. package/dist/lib/github.d.ts +68 -60
  204. package/dist/lib/github.d.ts.map +1 -1
  205. package/dist/lib/github.js +160 -169
  206. package/dist/lib/github.js.map +1 -1
  207. package/dist/lib/skeleton.d.ts +15 -5
  208. package/dist/lib/skeleton.d.ts.map +1 -1
  209. package/dist/lib/skeleton.js +82 -7
  210. package/dist/lib/skeleton.js.map +1 -1
  211. package/dist/lib/team-github.d.ts +7 -3
  212. package/dist/lib/team-github.d.ts.map +1 -1
  213. package/dist/lib/team-github.js +29 -19
  214. package/dist/lib/team-github.js.map +1 -1
  215. package/dist/lib/team.d.ts.map +1 -1
  216. package/dist/lib/team.js +4 -1
  217. package/dist/lib/team.js.map +1 -1
  218. package/dist/terminal/pty-manager.d.ts.map +1 -1
  219. package/dist/terminal/pty-manager.js +2 -0
  220. package/dist/terminal/pty-manager.js.map +1 -1
  221. package/dist/terminal/ws-protocol.d.ts +10 -8
  222. package/dist/terminal/ws-protocol.d.ts.map +1 -1
  223. package/dist/terminal/ws-protocol.js +3 -0
  224. package/dist/terminal/ws-protocol.js.map +1 -1
  225. package/package.json +28 -24
  226. package/scripts/forge/gitea/auth-status.sh +3 -0
  227. package/scripts/forge/gitea/issue-comment.sh +3 -0
  228. package/scripts/forge/gitea/issue-list.sh +3 -0
  229. package/scripts/forge/gitea/issue-view.sh +3 -0
  230. package/scripts/forge/gitea/pr-exists.sh +6 -0
  231. package/scripts/forge/gitea/pr-list.sh +3 -0
  232. package/scripts/forge/gitea/pr-merge.sh +3 -0
  233. package/scripts/forge/gitea/pr-view.sh +3 -0
  234. package/scripts/forge/gitea/recently-closed.sh +3 -0
  235. package/scripts/forge/gitea/recently-merged.sh +3 -0
  236. package/scripts/forge/gitea/repo-archive.sh +11 -0
  237. package/scripts/forge/gitea/user-identity.sh +3 -0
  238. package/scripts/forge/github/auth-status.sh +4 -0
  239. package/scripts/forge/github/issue-comment.sh +5 -0
  240. package/scripts/forge/github/issue-list.sh +4 -0
  241. package/scripts/forge/github/issue-view.sh +5 -0
  242. package/scripts/forge/github/on-it-timestamps.sh +8 -0
  243. package/scripts/forge/github/pr-diff.sh +10 -0
  244. package/scripts/forge/github/pr-exists.sh +7 -0
  245. package/scripts/forge/github/pr-list.sh +4 -0
  246. package/scripts/forge/github/pr-merge.sh +5 -0
  247. package/scripts/forge/github/pr-search.sh +5 -0
  248. package/scripts/forge/github/pr-view.sh +11 -0
  249. package/scripts/forge/github/recently-closed.sh +15 -0
  250. package/scripts/forge/github/recently-merged.sh +15 -0
  251. package/scripts/forge/github/repo-archive.sh +10 -0
  252. package/scripts/forge/github/team-activity.sh +5 -0
  253. package/scripts/forge/github/user-identity.sh +4 -0
  254. package/scripts/forge/gitlab/auth-status.sh +3 -0
  255. package/scripts/forge/gitlab/issue-comment.sh +3 -0
  256. package/scripts/forge/gitlab/issue-list.sh +3 -0
  257. package/scripts/forge/gitlab/issue-view.sh +3 -0
  258. package/scripts/forge/gitlab/pr-diff.sh +3 -0
  259. package/scripts/forge/gitlab/pr-exists.sh +5 -0
  260. package/scripts/forge/gitlab/pr-list.sh +3 -0
  261. package/scripts/forge/gitlab/pr-merge.sh +3 -0
  262. package/scripts/forge/gitlab/pr-search.sh +3 -0
  263. package/scripts/forge/gitlab/pr-view.sh +3 -0
  264. package/scripts/forge/gitlab/recently-closed.sh +3 -0
  265. package/scripts/forge/gitlab/recently-merged.sh +3 -0
  266. package/scripts/forge/gitlab/repo-archive.sh +12 -0
  267. package/scripts/forge/gitlab/user-identity.sh +3 -0
  268. package/skeleton/.claude/skills/afx/SKILL.md +144 -0
  269. package/skeleton/.claude/skills/codev/SKILL.md +3 -3
  270. package/skeleton/.claude/skills/consult/SKILL.md +1 -1
  271. package/skeleton/.claude/skills/porch/SKILL.md +2 -2
  272. package/skeleton/DEPENDENCIES.md +1 -1
  273. package/skeleton/builders.md +4 -4
  274. package/skeleton/protocol-schema.json +2 -2
  275. package/skeleton/protocols/air/builder-prompt.md +6 -6
  276. package/skeleton/protocols/air/prompts/pr.md +2 -2
  277. package/skeleton/protocols/air/protocol.md +1 -2
  278. package/skeleton/protocols/aspir/builder-prompt.md +28 -6
  279. package/skeleton/protocols/aspir/protocol.json +9 -1
  280. package/skeleton/protocols/aspir/protocol.md +1 -1
  281. package/skeleton/protocols/aspir/templates/plan.md +0 -20
  282. package/skeleton/protocols/aspir/templates/spec.md +0 -28
  283. package/skeleton/protocols/bugfix/builder-prompt.md +6 -6
  284. package/skeleton/protocols/bugfix/prompts/pr.md +1 -1
  285. package/skeleton/protocols/experiment/protocol.md +1 -6
  286. package/skeleton/protocols/maintain/builder-prompt.md +12 -11
  287. package/skeleton/protocols/maintain/prompts/maintain.md +88 -0
  288. package/skeleton/protocols/maintain/prompts/review.md +72 -0
  289. package/skeleton/protocols/maintain/protocol.json +14 -68
  290. package/skeleton/protocols/maintain/protocol.md +111 -409
  291. package/skeleton/protocols/maintain/templates/maintenance-run.md +18 -49
  292. package/skeleton/protocols/protocol-schema.json +1 -1
  293. package/skeleton/protocols/spike/builder-prompt.md +1 -1
  294. package/skeleton/protocols/spike/protocol.md +4 -4
  295. package/skeleton/protocols/spir/builder-prompt.md +28 -5
  296. package/skeleton/protocols/spir/protocol.json +9 -1
  297. package/skeleton/protocols/spir/protocol.md +2 -2
  298. package/skeleton/protocols/spir/templates/plan.md +0 -20
  299. package/skeleton/protocols/spir/templates/spec.md +0 -28
  300. package/skeleton/resources/commands/agent-farm.md +84 -84
  301. package/skeleton/resources/commands/codev.md +1 -1
  302. package/skeleton/resources/commands/consult.md +16 -7
  303. package/skeleton/resources/commands/overview.md +14 -15
  304. package/skeleton/resources/risk-triage.md +1 -1
  305. package/skeleton/resources/workflow-reference.md +14 -14
  306. package/skeleton/roles/architect.md +55 -43
  307. package/skeleton/roles/builder.md +22 -14
  308. package/skeleton/templates/AGENTS.md +4 -3
  309. package/skeleton/templates/CLAUDE.md +4 -3
  310. package/skeleton/templates/cheatsheet.md +11 -12
  311. package/templates/3d-viewer.html +16 -18
  312. package/templates/tower.html +1 -1
  313. package/dashboard/dist/assets/index-CiIBsixF.js +0 -194
  314. package/dashboard/dist/assets/index-CiIBsixF.js.map +0 -1
  315. package/skeleton/.claude/skills/af/SKILL.md +0 -146
  316. package/skeleton/porch/prompts/understand.md +0 -61
  317. package/skeleton/porch/prompts/verify.md +0 -58
  318. package/skeleton/protocols/maintain/prompts/audit.md +0 -111
  319. package/skeleton/protocols/maintain/prompts/clean.md +0 -91
  320. package/skeleton/protocols/maintain/prompts/sync.md +0 -113
  321. package/skeleton/protocols/maintain/prompts/verify.md +0 -110
  322. package/skeleton/protocols/tick/builder-prompt.md +0 -65
  323. package/skeleton/protocols/tick/consult-types/impl-review.md +0 -72
  324. package/skeleton/protocols/tick/consult-types/plan-review.md +0 -59
  325. package/skeleton/protocols/tick/consult-types/pr-review.md +0 -72
  326. package/skeleton/protocols/tick/consult-types/spec-review.md +0 -55
  327. package/skeleton/protocols/tick/protocol.json +0 -151
  328. package/skeleton/protocols/tick/protocol.md +0 -277
  329. package/skeleton/protocols/tick/templates/plan.md +0 -67
  330. package/skeleton/protocols/tick/templates/review.md +0 -89
  331. package/skeleton/protocols/tick/templates/spec.md +0 -61
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://codev.dev/protocol-schema.json",
4
4
  "title": "Codev Protocol Definition",
5
- "description": "Schema for porch protocol definitions (SPIR, TICK, BUGFIX, etc.)",
5
+ "description": "Schema for porch protocol definitions (SPIR, BUGFIX, AIR, etc.)",
6
6
  "type": "object",
7
7
  "required": ["name", "phases"],
8
8
  "properties": {
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "name": {
14
14
  "type": "string",
15
- "description": "Protocol name (e.g., 'spir', 'tick', 'bugfix')",
15
+ "description": "Protocol name (e.g., 'spir', 'bugfix', 'air')",
16
16
  "pattern": "^[a-z][a-z0-9-]*$"
17
17
  },
18
18
  "alias": {
@@ -38,20 +38,20 @@ Follow the AIR protocol: `codev/protocols/air/protocol.md`
38
38
  2. Implement the feature (< 300 LOC)
39
39
  3. Write tests for the feature
40
40
  4. Create PR with review in the PR body (NOT as a separate file)
41
- 5. Notify architect via `af send architect "PR #N ready for review (implements #{{issue.number}})"`
41
+ 5. Notify architect via `afx send architect "PR #N ready for review (implements #{{issue.number}})"`
42
42
 
43
43
  **IMPORTANT**: AIR produces NO spec, plan, or review files. The review goes in the PR body.
44
44
 
45
45
  If the feature is too complex (> 300 LOC or architectural changes), notify the Architect via:
46
46
  ```bash
47
- af send architect "Issue #{{issue.number}} is more complex than expected. [Reason]. Recommend escalating to ASPIR."
47
+ afx send architect "Issue #{{issue.number}} is more complex than expected. [Reason]. Recommend escalating to ASPIR."
48
48
  ```
49
49
 
50
50
  ## Notifications
51
- Always use `af send architect "..."` to notify the architect at key moments:
52
- - **PR ready**: `af send architect "PR #N ready for review (implements #{{issue.number}})"`
53
- - **PR merged**: `af send architect "PR #N merged for issue #{{issue.number}}. Ready for cleanup."`
54
- - **Blocked**: `af send architect "Blocked on issue #{{issue.number}}: [reason]"`
51
+ Always use `afx send architect "..."` to notify the architect at key moments:
52
+ - **PR ready**: `afx send architect "PR #N ready for review (implements #{{issue.number}})"`
53
+ - **PR merged**: `afx send architect "PR #N merged for issue #{{issue.number}}. Ready for cleanup."`
54
+ - **Blocked**: `afx send architect "Blocked on issue #{{issue.number}}: [reason]"`
55
55
  {{/if}}
56
56
 
57
57
  ## Handling Flaky Tests
@@ -75,12 +75,12 @@ If you ran CMAP:
75
75
  Send notification with PR link:
76
76
 
77
77
  ```bash
78
- af send architect "PR #<number> ready for review (implements issue #{{issue.number}})"
78
+ afx send architect "PR #<number> ready for review (implements issue #{{issue.number}})"
79
79
  ```
80
80
 
81
81
  If CMAP was run, include verdicts:
82
82
  ```bash
83
- af send architect "PR #<number> ready for review (implements issue #{{issue.number}}). CMAP: gemini=<verdict>, codex=<verdict>, claude=<verdict>"
83
+ afx send architect "PR #<number> ready for review (implements issue #{{issue.number}}). CMAP: gemini=<verdict>, codex=<verdict>, claude=<verdict>"
84
84
  ```
85
85
 
86
86
  ## Signals
@@ -34,7 +34,6 @@ AIR is a minimal protocol for implementing small features (< 300 LOC) where the
34
34
 
35
35
  - Bug fixes → use **BUGFIX**
36
36
  - Features needing spec discussion → use **SPIR** or **ASPIR**
37
- - Amendments to existing specs → use **TICK**
38
37
  - Architectural changes → use **SPIR**
39
38
  - Complex features with multiple phases → use **SPIR** or **ASPIR**
40
39
 
@@ -67,7 +66,7 @@ The **PR gate** is preserved — a human reviews all code before merge.
67
66
 
68
67
  ```bash
69
68
  # Spawn a builder using AIR
70
- af spawn 42 --protocol air
69
+ afx spawn 42 --protocol air
71
70
 
72
71
  # The builder implements autonomously and stops at the PR gate
73
72
  ```
@@ -27,7 +27,7 @@ You are running in STRICT mode. This means:
27
27
  {{/if}}
28
28
 
29
29
  ## Protocol
30
- Follow the SPIR protocol: `codev/protocols/spir/protocol.md`
30
+ Follow the ASPIR protocol: `codev/protocols/aspir/protocol.md`
31
31
  Read and internalize the protocol before starting any work.
32
32
 
33
33
  {{#if spec}}
@@ -53,12 +53,34 @@ Follow the implementation plan at: `{{plan.path}}`
53
53
  {{task_text}}
54
54
  {{/if}}
55
55
 
56
+ ## Multi-PR Workflow
57
+
58
+ Your worktree is persistent — it survives across PR merges. You can produce multiple PRs sequentially:
59
+
60
+ 1. Cut a branch, open a PR, wait for merge
61
+ 2. After merge: `git fetch origin main && git checkout -b <next-branch> origin/main`
62
+ 3. Continue to the next phase, open another PR
63
+
64
+ **Important**: Do NOT run `git checkout main` — git worktrees cannot check out a branch that's checked out elsewhere. Always branch off `origin/main` via fetch.
65
+
66
+ Record PRs: `porch done {{project_id}} --pr <N> --branch <name>`
67
+ Record merges: `porch done {{project_id}} --merged <N>`
68
+
69
+ ## Verify Phase
70
+
71
+ After the final PR merges, the project enters the **verify** phase. You stay alive through verify:
72
+ 1. Pull main into your worktree
73
+ 2. Run `porch done {{project_id}}` to signal verification is ready
74
+ 3. The architect approves `verify-approval` when satisfied
75
+
76
+ If verification is not needed: `porch verify {{project_id}} --skip "reason"`
77
+
56
78
  ## Notifications
57
- Always use `af send architect "..."` to notify the architect at key moments:
58
- - **Gate reached**: `af send architect "Project {{project_id}}: <gate-name> ready for approval"`
59
- - **PR ready**: `af send architect "PR #N ready for review (project {{project_id}})"`
60
- - **PR merged**: `af send architect "Project {{project_id}} complete. PR merged. Ready for cleanup."`
61
- - **Blocked**: `af send architect "Blocked on project {{project_id}}: [reason]"`
79
+ Always use `afx send architect "..."` to notify the architect at key moments:
80
+ - **Gate reached**: `afx send architect "Project {{project_id}}: <gate-name> ready for approval"`
81
+ - **PR ready**: `afx send architect "PR #N ready for review (project {{project_id}})"`
82
+ - **PR merged**: `afx send architect "Project {{project_id}} PR merged. Entering verify phase."`
83
+ - **Blocked**: `afx send architect "Blocked on project {{project_id}}: [reason]"`
62
84
 
63
85
  ## Handling Flaky Tests
64
86
 
@@ -51,7 +51,7 @@
51
51
  },
52
52
  "checks": {
53
53
  "plan_exists": "test -f codev/plans/${PROJECT_TITLE}.md",
54
- "has_phases_json": "grep -q '\"phases\":' codev/plans/${PROJECT_TITLE}.md",
54
+ "has_phases_json": "grep -qE '\"phases\"\\s*:' codev/plans/${PROJECT_TITLE}.md",
55
55
  "min_two_phases": "grep -o '\"id\": *\"[^\"]*\"' codev/plans/${PROJECT_TITLE}.md | wc -l | awk '$1 >= 2 {exit 0} {exit 1}'"
56
56
  },
57
57
  "next": "implement"
@@ -132,6 +132,14 @@
132
132
  }
133
133
  },
134
134
  "gate": "pr",
135
+ "next": "verify"
136
+ },
137
+ {
138
+ "id": "verify",
139
+ "name": "Verify",
140
+ "description": "Post-merge environmental verification (optional — skip with porch verify --skip)",
141
+ "type": "once",
142
+ "gate": "verify-approval",
135
143
  "next": null
136
144
  }
137
145
  ],
@@ -61,7 +61,7 @@ Final review, PR preparation, and 3-way review. **PR gate preserved** — builde
61
61
 
62
62
  ```bash
63
63
  # Spawn a builder using ASPIR
64
- af spawn 42 --protocol aspir
64
+ afx spawn 42 --protocol aspir
65
65
 
66
66
  # The builder runs autonomously through Specify → Plan → Implement
67
67
  # and stops only at the PR gate in the Review phase
@@ -182,23 +182,3 @@ Phase 1 ──→ Phase 2 ──→ Phase 3
182
182
  ## Notes
183
183
  [Additional context, assumptions, or considerations]
184
184
 
185
- ---
186
-
187
- ## Amendment History
188
-
189
- This section tracks all TICK amendments to this plan. TICKs modify both the spec and plan together as an atomic unit.
190
-
191
- <!-- When adding a TICK amendment, add a new entry below this line in chronological order -->
192
-
193
- <!--
194
- ### TICK-001: [Amendment Title] (YYYY-MM-DD)
195
-
196
- **Changes**:
197
- - [Phase added]: [Description of new phase]
198
- - [Phase modified]: [What was updated]
199
- - [Implementation steps]: [New steps added]
200
-
201
- **Review**: See `reviews/####-name-tick-001.md`
202
-
203
- ---
204
- -->
@@ -152,31 +152,3 @@ Note: All consultation feedback has been incorporated directly into the relevant
152
152
  ## Notes
153
153
  [Any additional context or considerations not covered above]
154
154
 
155
- ---
156
-
157
- ## Amendments
158
-
159
- This section tracks all TICK amendments to this specification. TICKs are lightweight changes that refine an existing spec rather than creating a new one.
160
-
161
- <!-- When adding a TICK amendment, add a new entry below this line in chronological order -->
162
-
163
- <!--
164
- ### TICK-001: [Amendment Title] (YYYY-MM-DD)
165
-
166
- **Summary**: [One-line description of what changed]
167
-
168
- **Problem Addressed**:
169
- [Why this amendment was needed - what gap or issue in the original spec]
170
-
171
- **Spec Changes**:
172
- - [Section modified]: [What changed and why]
173
- - [New section added]: [Purpose]
174
-
175
- **Plan Changes**:
176
- - [Phase added/modified]: [Description]
177
- - [Implementation steps]: [What was updated]
178
-
179
- **Review**: See `reviews/####-name-tick-001.md`
180
-
181
- ---
182
- -->
@@ -40,18 +40,18 @@ Follow the BUGFIX protocol: `codev/protocols/bugfix/protocol.md`
40
40
  3. Implement fix (< 300 LOC)
41
41
  4. Add regression test
42
42
  5. Create PR with "Fixes #{{issue.number}}" in body
43
- 6. Notify architect via `af send architect "PR #N ready for review (fixes #{{issue.number}})"`
43
+ 6. Notify architect via `afx send architect "PR #N ready for review (fixes #{{issue.number}})"`
44
44
 
45
45
  If the fix is too complex (> 300 LOC or architectural changes), notify the Architect via:
46
46
  ```bash
47
- af send architect "Issue #{{issue.number}} is more complex than expected. [Reason]. Recommend escalating to SPIR/TICK."
47
+ afx send architect "Issue #{{issue.number}} is more complex than expected. [Reason]. Recommend escalating to SPIR."
48
48
  ```
49
49
 
50
50
  ## Notifications
51
- Always use `af send architect "..."` to notify the architect at key moments:
52
- - **PR ready**: `af send architect "PR #N ready for review (fixes #{{issue.number}})"`
53
- - **PR merged**: `af send architect "PR #N merged for issue #{{issue.number}}. Ready for cleanup."`
54
- - **Blocked**: `af send architect "Blocked on issue #{{issue.number}}: [reason]"`
51
+ Always use `afx send architect "..."` to notify the architect at key moments:
52
+ - **PR ready**: `afx send architect "PR #N ready for review (fixes #{{issue.number}})"`
53
+ - **PR merged**: `afx send architect "PR #N merged for issue #{{issue.number}}. Ready for cleanup."`
54
+ - **Blocked**: `afx send architect "Blocked on issue #{{issue.number}}: [reason]"`
55
55
  {{/if}}
56
56
 
57
57
  ## Handling Flaky Tests
@@ -74,7 +74,7 @@ You must have three concrete verdicts (e.g., "gemini: APPROVE, codex: APPROVE, c
74
74
  Send a **single** notification that includes the PR link and each model's verdict:
75
75
 
76
76
  ```bash
77
- af send architect "PR #<number> ready for review (fixes issue #{{issue.number}}). CMAP: gemini=<APPROVE|REQUEST_CHANGES>, codex=<APPROVE|REQUEST_CHANGES>, claude=<APPROVE|REQUEST_CHANGES>"
77
+ afx send architect "PR #<number> ready for review (fixes issue #{{issue.number}}). CMAP: gemini=<APPROVE|REQUEST_CHANGES>, codex=<APPROVE|REQUEST_CHANGES>, claude=<APPROVE|REQUEST_CHANGES>"
78
78
  ```
79
79
 
80
80
  **This is the only notification you send.** After this, your work is done — the architect
@@ -10,7 +10,7 @@ Disciplined experimentation: Each experiment gets its own directory with `notes.
10
10
 
11
11
  **Use for**: Testing approaches, evaluating models, prototyping, proof-of-concept work, research spikes
12
12
 
13
- **Skip for**: Production code (use SPIR), simple one-off scripts, well-understood implementations (use TICK)
13
+ **Skip for**: Production code (use SPIR), simple one-off scripts
14
14
 
15
15
  ## Structure
16
16
 
@@ -156,11 +156,6 @@ Experiment 5 validated that [approach] achieves [results].
156
156
  See: experiments/5_validation_test/notes.md
157
157
  ```
158
158
 
159
- ### Experiment → TICK
160
- For small, validated changes discovered during experimentation:
161
- - Use TICK for quick implementation
162
- - Reference experiment as justification
163
-
164
159
  ## Numbering Convention
165
160
 
166
161
  Use four-digit sequential numbering (consistent with project list):
@@ -7,7 +7,7 @@ You are executing the MAINTAIN protocol to clean up and synchronize the codebase
7
7
  You are running in SOFT mode. This means:
8
8
  - You follow the MAINTAIN protocol yourself (no porch orchestration)
9
9
  - The architect monitors your work and verifies you're adhering to the protocol
10
- - Work through each phase methodically
10
+ - Work through each step methodically
11
11
  {{/if}}
12
12
 
13
13
  {{#if mode_strict}}
@@ -20,25 +20,25 @@ You are running in STRICT mode. This means:
20
20
  ### ABSOLUTE RESTRICTIONS (STRICT MODE)
21
21
  - **NEVER edit `status.yaml` directly** — only porch commands may modify project state
22
22
  - **NEVER call `porch approve` without explicit human approval** — only run it after the architect says to
23
- - **NEVER skip the 3-way review** — always follow porch next → porch done cycle
24
23
  {{/if}}
25
24
 
26
25
  ## Protocol
27
26
  Follow the MAINTAIN protocol: `codev/protocols/maintain/protocol.md`
28
27
 
29
28
  ## MAINTAIN Overview
30
- The MAINTAIN protocol handles codebase hygiene:
31
29
 
32
- 1. **Audit Phase**: Scan for dead code, unused dependencies, stale docs
33
- 2. **Clean Phase**: Remove identified cruft, verify build
34
- 3. **Sync Phase**: Update documentation (arch.md, lessons-learned.md, CLAUDE.md)
35
- 4. **Verify Phase**: Run full test suite, confirm health
30
+ Two phases:
31
+ 1. **Maintain**: Single pass — audit findings, clean dead code, sync docs, verify build
32
+ 2. **Review**: Create PR with 3-way consultation
36
33
 
37
34
  ## Key Rules
38
35
  - Use soft deletion (move to `codev/maintain/.trash/`)
39
- - Always verify build passes after removals
36
+ - Verify build passes after each removal (`cd packages/codev && pnpm build && pnpm test`)
40
37
  - Update documentation to match current architecture
41
38
  - Don't remove anything actively used
39
+ - One removal at a time — commit after each
40
+ - Document every deletion with justification
41
+ - Never use `git add -A` or `git add .`
42
42
 
43
43
  ## Handling Flaky Tests
44
44
 
@@ -46,10 +46,11 @@ If you encounter **pre-existing flaky tests** (intermittent failures unrelated t
46
46
  1. **DO NOT** edit `status.yaml` to bypass checks
47
47
  2. **DO NOT** skip porch checks or use any workaround to avoid the failure
48
48
  3. **DO** mark the test as skipped with a clear annotation (e.g., `it.skip('...') // FLAKY: skipped pending investigation`)
49
- 4. **DO** document each skipped flaky test in your review under a `## Flaky Tests` section
49
+ 4. **DO** document each skipped flaky test in your maintenance run file
50
50
  5. Commit the skip and continue with your work
51
51
 
52
52
  ## Getting Started
53
53
  1. Read the MAINTAIN protocol document
54
- 2. Start with the Audit phase
55
- 3. Document all changes made
54
+ 2. Run `porch next` to get your first task
55
+ 3. Work through audit → clean → sync → verify in a single pass
56
+ 4. Document everything in the maintenance run file
@@ -0,0 +1,88 @@
1
+ # MAINTAIN Phase Prompt
2
+
3
+ You are executing the **maintain** phase — a single pass covering audit, cleanup, and doc sync.
4
+
5
+ ## Context
6
+
7
+ - **Current State**: {{current_state}}
8
+
9
+ ## Step 1: Determine Scope
10
+
11
+ ```bash
12
+ ls codev/maintain/
13
+ ```
14
+
15
+ Find the last run number and its base commit. Then see what changed:
16
+
17
+ ```bash
18
+ git log --oneline <base-commit>..HEAD
19
+ ```
20
+
21
+ Create your maintenance run file: `codev/maintain/NNNN.md` (next number in sequence).
22
+
23
+ ## Step 2: Audit
24
+
25
+ Identify dead code, unused dependencies, and stale documentation. Don't fix yet — catalog first.
26
+
27
+ ```bash
28
+ # Dead exports
29
+ npx ts-prune 2>/dev/null || echo "ts-prune not available"
30
+
31
+ # Unused dependencies
32
+ npx depcheck 2>/dev/null || echo "depcheck not available"
33
+
34
+ # Stale arch.md references
35
+ grep -oE '[a-zA-Z]+/[a-zA-Z/]+\.[a-z]+' codev/resources/arch.md | sort -u | while read f; do
36
+ [ -e "$f" ] || echo "Missing: $f"
37
+ done
38
+ ```
39
+
40
+ Record all findings in the maintenance run file.
41
+
42
+ ## Step 3: Clean
43
+
44
+ For each audit finding:
45
+ 1. Verify it's truly unused (grep the codebase)
46
+ 2. Remove with `git rm` (tracked) or move to `codev/maintain/.trash/$(date +%Y-%m-%d)/` (untracked)
47
+ 3. Build and test: `cd packages/codev && pnpm build && pnpm test`
48
+ 4. Commit: `git add <specific-files> && git commit -m "[Maintain] Remove unused X"`
49
+
50
+ One removal at a time. Verify after each. Never use `git add -A`.
51
+
52
+ ## Step 4: Sync Documentation
53
+
54
+ **arch.md**: Read `codev/resources/arch.md`, compare with actual codebase. Update directory structure, component descriptions, key files. Remove references to deleted code. Add new components. Explain HOW things work, not just WHAT.
55
+
56
+ **lessons-learned.md**: Scan `codev/reviews/` for new reviews since the base commit. Extract actionable, durable, general lessons.
57
+
58
+ **CLAUDE.md / AGENTS.md**: `diff CLAUDE.md AGENTS.md` — they must be identical. Update the stale one.
59
+
60
+ **Pruning**: Remove obsolete content. Document every deletion with justification (OBSOLETE, DUPLICATIVE, MOVED, VERBOSE). When in doubt, keep.
61
+
62
+ Commit documentation changes:
63
+ ```bash
64
+ git add codev/resources/arch.md codev/resources/lessons-learned.md
65
+ git commit -m "[Maintain] Update arch.md and lessons-learned.md"
66
+ ```
67
+
68
+ ## Step 5: Final Checks
69
+
70
+ ```bash
71
+ cd packages/codev && pnpm build && pnpm test
72
+ ```
73
+
74
+ Both must pass. Update the maintenance run file with a summary of everything done.
75
+
76
+ ## Signals
77
+
78
+ When all work is complete and build/tests pass:
79
+
80
+ ```
81
+ <signal>PHASE_COMPLETE</signal>
82
+ ```
83
+
84
+ If blocked:
85
+
86
+ ```
87
+ <signal>BLOCKED:reason</signal>
88
+ ```
@@ -0,0 +1,72 @@
1
+ # REVIEW Phase Prompt
2
+
3
+ You are executing the **review** phase of the MAINTAIN protocol.
4
+
5
+ ## Context
6
+
7
+ - **Current State**: {{current_state}}
8
+
9
+ ## Process
10
+
11
+ ### 1. Final Validation
12
+
13
+ ```bash
14
+ cd packages/codev && pnpm build && pnpm test
15
+ ```
16
+
17
+ Both must pass. If either fails, fix before proceeding.
18
+
19
+ ### 2. Verify Documentation Links
20
+
21
+ ```bash
22
+ grep -oE '[a-zA-Z]+/[a-zA-Z/]+\.[a-z]+' codev/resources/arch.md | sort -u | while read f; do
23
+ [ -e "$f" ] || echo "Missing: $f"
24
+ done
25
+ ```
26
+
27
+ ### 3. Finalize Maintenance Run File
28
+
29
+ Update `codev/maintain/NNNN.md` with:
30
+ - PR number (once created)
31
+ - Final summary of what was done
32
+ - Deferred items (if any)
33
+
34
+ ### 4. Create PR
35
+
36
+ ```bash
37
+ git push origin HEAD
38
+
39
+ gh pr create --title "[Maintain] Codebase maintenance run NNNN" --body "$(cat <<'PREOF'
40
+ ## Summary
41
+
42
+ <2-3 bullet points of what was done>
43
+
44
+ ## Changes
45
+
46
+ - Dead code removed: X items
47
+ - Dependencies cleaned: Y packages
48
+ - Documentation updated: arch.md, lessons-learned.md
49
+ - Tests: all passing
50
+
51
+ ## Test plan
52
+
53
+ - [x] Build passes
54
+ - [x] All tests pass
55
+ - [x] Documentation links resolve
56
+ PREOF
57
+ )"
58
+ ```
59
+
60
+ ## Signals
61
+
62
+ When PR is created:
63
+
64
+ ```
65
+ <signal>PHASE_COMPLETE</signal>
66
+ ```
67
+
68
+ If blocked:
69
+
70
+ ```
71
+ <signal>BLOCKED:reason</signal>
72
+ ```
@@ -2,8 +2,8 @@
2
2
  "$schema": "../../protocol-schema.json",
3
3
  "name": "maintain",
4
4
  "alias": "maint",
5
- "version": "2.0.0",
6
- "description": "Codebase maintenance - dead code removal, doc sync, hygiene with 3-way review",
5
+ "version": "3.0.0",
6
+ "description": "Codebase maintenance — single-pass hygiene, doc sync, and cleanup with PR review",
7
7
  "input": {
8
8
  "type": "protocol",
9
9
  "required": false,
@@ -11,12 +11,12 @@
11
11
  },
12
12
  "phases": [
13
13
  {
14
- "id": "audit",
15
- "name": "Audit",
16
- "description": "Analyze codebase for dead code, unused dependencies, stale docs",
14
+ "id": "maintain",
15
+ "name": "Maintain",
16
+ "description": "Single-pass: audit, clean dead code, sync docs, verify build",
17
17
  "type": "build_verify",
18
18
  "build": {
19
- "prompt": "audit.md",
19
+ "prompt": "maintain.md",
20
20
  "artifact": "codev/maintain/*.md"
21
21
  },
22
22
  "verify": {
@@ -24,27 +24,6 @@
24
24
  "models": ["gemini", "codex", "claude"],
25
25
  "parallel": true
26
26
  },
27
- "max_iterations": 3,
28
- "on_complete": {
29
- "commit": true,
30
- "push": true
31
- },
32
- "next": "clean"
33
- },
34
- {
35
- "id": "clean",
36
- "name": "Clean",
37
- "description": "Remove identified dead code and unused dependencies",
38
- "type": "build_verify",
39
- "build": {
40
- "prompt": "clean.md",
41
- "artifact": "src/**/*.{ts,tsx,js,jsx}"
42
- },
43
- "verify": {
44
- "type": "impl",
45
- "models": ["gemini", "codex", "claude"],
46
- "parallel": true
47
- },
48
27
  "max_iterations": 5,
49
28
  "on_complete": {
50
29
  "commit": true,
@@ -52,46 +31,25 @@
52
31
  },
53
32
  "checks": {
54
33
  "build": {
55
- "command": "npm run build",
34
+ "command": "pnpm build",
56
35
  "on_fail": "retry",
57
36
  "max_retries": 2
58
37
  },
59
38
  "tests": {
60
- "command": "npm test -- --exclude='**/e2e/**'",
39
+ "command": "pnpm test",
61
40
  "on_fail": "retry",
62
41
  "max_retries": 2
63
42
  }
64
43
  },
65
- "next": "sync"
66
- },
67
- {
68
- "id": "sync",
69
- "name": "Sync Documentation",
70
- "description": "Update documentation to match current codebase",
71
- "type": "build_verify",
72
- "build": {
73
- "prompt": "sync.md",
74
- "artifact": "codev/resources/*.md"
75
- },
76
- "verify": {
77
- "type": "impl",
78
- "models": ["gemini", "codex", "claude"],
79
- "parallel": true
80
- },
81
- "max_iterations": 5,
82
- "on_complete": {
83
- "commit": true,
84
- "push": true
85
- },
86
- "next": "verify"
44
+ "next": "review"
87
45
  },
88
46
  {
89
- "id": "verify",
90
- "name": "Verify",
91
- "description": "Final validation and PR creation",
47
+ "id": "review",
48
+ "name": "Review",
49
+ "description": "Final validation, PR creation, 3-way review",
92
50
  "type": "build_verify",
93
51
  "build": {
94
- "prompt": "verify.md",
52
+ "prompt": "review.md",
95
53
  "artifact": "codev/maintain/*.md"
96
54
  },
97
55
  "verify": {
@@ -104,18 +62,6 @@
104
62
  "commit": true,
105
63
  "push": true
106
64
  },
107
- "checks": {
108
- "build": {
109
- "command": "npm run build",
110
- "on_fail": "retry",
111
- "max_retries": 2
112
- },
113
- "tests": {
114
- "command": "npm test",
115
- "on_fail": "retry",
116
- "max_retries": 2
117
- }
118
- },
119
65
  "gate": "maintain-complete",
120
66
  "next": null
121
67
  }
@@ -123,7 +69,7 @@
123
69
  "signals": {
124
70
  "PHASE_COMPLETE": {
125
71
  "description": "Signal current phase is complete",
126
- "transitions_to": "verify"
72
+ "transitions_to": "review"
127
73
  },
128
74
  "BLOCKED": {
129
75
  "description": "Signal maintenance is blocked",