@cluesmith/codev 3.0.0-rc.1 → 3.0.0-rc.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/bin/af.js +2 -2
- package/bin/afx.js +8 -0
- package/bin/consult.js +2 -1
- package/bin/team.js +2 -1
- package/{dashboard/dist/assets/index-nr0cXxtf.css → dashboard-dist/assets/index-Bs8I7N2s.css} +1 -1
- package/dashboard-dist/assets/index-CkNo2z6t.js +195 -0
- package/dashboard-dist/assets/index-CkNo2z6t.js.map +1 -0
- package/dashboard-dist/dist/assets/index-Bs8I7N2s.css +32 -0
- package/dashboard-dist/dist/assets/index-CkNo2z6t.js +195 -0
- package/dashboard-dist/dist/assets/index-CkNo2z6t.js.map +1 -0
- package/{dashboard → dashboard-dist}/dist/index.html +2 -2
- package/dashboard-dist/index.html +14 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +17 -14
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +4 -4
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +23 -12
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.js +8 -8
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/bench.d.ts +1 -1
- package/dist/agent-farm/commands/bench.js +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +10 -5
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/cron.js +1 -1
- package/dist/agent-farm/commands/cron.js.map +1 -1
- package/dist/agent-farm/commands/db.d.ts +3 -3
- package/dist/agent-farm/commands/db.js +4 -4
- package/dist/agent-farm/commands/db.js.map +1 -1
- package/dist/agent-farm/commands/open.js +2 -2
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/rename.js +1 -1
- package/dist/agent-farm/commands/rename.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +4 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +8 -5
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/shell.js +3 -3
- package/dist/agent-farm/commands/shell.js.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts +2 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.js +1 -1
- package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +49 -10
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +356 -51
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +6 -6
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +182 -74
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +48 -3
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/team-update.d.ts +1 -1
- package/dist/agent-farm/commands/team-update.d.ts.map +1 -1
- package/dist/agent-farm/commands/team-update.js +8 -5
- package/dist/agent-farm/commands/team-update.js.map +1 -1
- package/dist/agent-farm/commands/team.d.ts +1 -1
- package/dist/agent-farm/commands/team.d.ts.map +1 -1
- package/dist/agent-farm/commands/team.js +7 -3
- package/dist/agent-farm/commands/team.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +2 -2
- package/dist/agent-farm/commands/tower-cloud.js +3 -3
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
- package/dist/agent-farm/commands/tower.js +2 -2
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/lib/cloud-config.js +2 -2
- package/dist/agent-farm/lib/cloud-config.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +6 -230
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +6 -293
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +1 -1
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/message-write.d.ts +24 -0
- package/dist/agent-farm/servers/message-write.d.ts.map +1 -0
- package/dist/agent-farm/servers/message-write.js +63 -0
- package/dist/agent-farm/servers/message-write.js.map +1 -0
- package/dist/agent-farm/servers/overview.d.ts +10 -8
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +78 -38
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/send-buffer.d.ts +4 -3
- package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
- package/dist/agent-farm/servers/send-buffer.js +7 -4
- package/dist/agent-farm/servers/send-buffer.js.map +1 -1
- package/dist/agent-farm/servers/tower-cron-parser.js +1 -1
- package/dist/agent-farm/servers/tower-cron-parser.js.map +1 -1
- package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-cron.js +4 -5
- package/dist/agent-farm/servers/tower-cron.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +15 -13
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +9 -16
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +2 -2
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +64 -36
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +2 -2
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts +9 -6
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +13 -7
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/types.d.ts +13 -0
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +11 -0
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +39 -17
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/harness.d.ts +85 -0
- package/dist/agent-farm/utils/harness.d.ts.map +1 -0
- package/dist/agent-farm/utils/harness.js +212 -0
- package/dist/agent-farm/utils/harness.js.map +1 -0
- package/dist/agent-farm/utils/roles.d.ts +11 -4
- package/dist/agent-farm/utils/roles.d.ts.map +1 -1
- package/dist/agent-farm/utils/roles.js +21 -6
- package/dist/agent-farm/utils/roles.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +40 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +16 -45
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +37 -3
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +281 -194
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +121 -31
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +13 -43
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/artifacts.d.ts +69 -0
- package/dist/commands/porch/artifacts.d.ts.map +1 -0
- package/dist/commands/porch/artifacts.js +368 -0
- package/dist/commands/porch/artifacts.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +14 -3
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +150 -4
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/config.d.ts +6 -9
- package/dist/commands/porch/config.d.ts.map +1 -1
- package/dist/commands/porch/config.js +12 -37
- package/dist/commands/porch/config.js.map +1 -1
- package/dist/commands/porch/index.d.ts +12 -7
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +273 -82
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +142 -75
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/notify.d.ts +2 -2
- package/dist/commands/porch/notify.js +5 -5
- package/dist/commands/porch/notify.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts +2 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +34 -38
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/protocol.d.ts +4 -3
- package/dist/commands/porch/protocol.d.ts.map +1 -1
- package/dist/commands/porch/protocol.js +21 -21
- package/dist/commands/porch/protocol.js.map +1 -1
- package/dist/commands/porch/state.d.ts +27 -2
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +100 -9
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +10 -2
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/sync.d.ts +26 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +207 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/update.d.ts +15 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +159 -202
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/config.d.ts +96 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +165 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/forge-contracts.d.ts +100 -0
- package/dist/lib/forge-contracts.d.ts.map +1 -0
- package/dist/lib/forge-contracts.js +35 -0
- package/dist/lib/forge-contracts.js.map +1 -0
- package/dist/lib/forge.d.ts +102 -0
- package/dist/lib/forge.d.ts.map +1 -0
- package/dist/lib/forge.js +376 -0
- package/dist/lib/forge.js.map +1 -0
- package/dist/lib/github.d.ts +68 -60
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +160 -169
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/skeleton.d.ts +15 -5
- package/dist/lib/skeleton.d.ts.map +1 -1
- package/dist/lib/skeleton.js +82 -7
- package/dist/lib/skeleton.js.map +1 -1
- package/dist/lib/team-github.d.ts +7 -3
- package/dist/lib/team-github.d.ts.map +1 -1
- package/dist/lib/team-github.js +29 -19
- package/dist/lib/team-github.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +2 -0
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/ws-protocol.d.ts +10 -8
- package/dist/terminal/ws-protocol.d.ts.map +1 -1
- package/dist/terminal/ws-protocol.js +3 -0
- package/dist/terminal/ws-protocol.js.map +1 -1
- package/package.json +27 -24
- package/scripts/forge/gitea/auth-status.sh +3 -0
- package/scripts/forge/gitea/issue-comment.sh +3 -0
- package/scripts/forge/gitea/issue-list.sh +3 -0
- package/scripts/forge/gitea/issue-view.sh +3 -0
- package/scripts/forge/gitea/pr-exists.sh +6 -0
- package/scripts/forge/gitea/pr-list.sh +3 -0
- package/scripts/forge/gitea/pr-merge.sh +3 -0
- package/scripts/forge/gitea/pr-view.sh +3 -0
- package/scripts/forge/gitea/recently-closed.sh +3 -0
- package/scripts/forge/gitea/recently-merged.sh +3 -0
- package/scripts/forge/gitea/repo-archive.sh +11 -0
- package/scripts/forge/gitea/user-identity.sh +3 -0
- package/scripts/forge/github/auth-status.sh +4 -0
- package/scripts/forge/github/issue-comment.sh +5 -0
- package/scripts/forge/github/issue-list.sh +4 -0
- package/scripts/forge/github/issue-view.sh +5 -0
- package/scripts/forge/github/on-it-timestamps.sh +8 -0
- package/scripts/forge/github/pr-diff.sh +10 -0
- package/scripts/forge/github/pr-exists.sh +7 -0
- package/scripts/forge/github/pr-list.sh +4 -0
- package/scripts/forge/github/pr-merge.sh +5 -0
- package/scripts/forge/github/pr-search.sh +5 -0
- package/scripts/forge/github/pr-view.sh +11 -0
- package/scripts/forge/github/recently-closed.sh +15 -0
- package/scripts/forge/github/recently-merged.sh +15 -0
- package/scripts/forge/github/repo-archive.sh +10 -0
- package/scripts/forge/github/team-activity.sh +5 -0
- package/scripts/forge/github/user-identity.sh +4 -0
- package/scripts/forge/gitlab/auth-status.sh +3 -0
- package/scripts/forge/gitlab/issue-comment.sh +3 -0
- package/scripts/forge/gitlab/issue-list.sh +3 -0
- package/scripts/forge/gitlab/issue-view.sh +3 -0
- package/scripts/forge/gitlab/pr-diff.sh +3 -0
- package/scripts/forge/gitlab/pr-exists.sh +5 -0
- package/scripts/forge/gitlab/pr-list.sh +3 -0
- package/scripts/forge/gitlab/pr-merge.sh +3 -0
- package/scripts/forge/gitlab/pr-search.sh +3 -0
- package/scripts/forge/gitlab/pr-view.sh +3 -0
- package/scripts/forge/gitlab/recently-closed.sh +3 -0
- package/scripts/forge/gitlab/recently-merged.sh +3 -0
- package/scripts/forge/gitlab/repo-archive.sh +12 -0
- package/scripts/forge/gitlab/user-identity.sh +3 -0
- package/skeleton/.claude/skills/afx/SKILL.md +144 -0
- package/skeleton/.claude/skills/codev/SKILL.md +3 -3
- package/skeleton/.claude/skills/consult/SKILL.md +1 -1
- package/skeleton/.claude/skills/porch/SKILL.md +2 -2
- package/skeleton/DEPENDENCIES.md +1 -1
- package/skeleton/builders.md +4 -4
- package/skeleton/protocol-schema.json +2 -2
- package/skeleton/protocols/air/builder-prompt.md +6 -6
- package/skeleton/protocols/air/prompts/pr.md +17 -5
- package/skeleton/protocols/air/protocol.md +1 -2
- package/skeleton/protocols/aspir/builder-prompt.md +28 -6
- package/skeleton/protocols/aspir/prompts/review.md +11 -0
- package/skeleton/protocols/aspir/protocol.json +9 -1
- package/skeleton/protocols/aspir/protocol.md +1 -1
- package/skeleton/protocols/aspir/templates/plan.md +0 -20
- package/skeleton/protocols/aspir/templates/spec.md +0 -28
- package/skeleton/protocols/bugfix/builder-prompt.md +6 -6
- package/skeleton/protocols/bugfix/prompts/pr.md +16 -4
- package/skeleton/protocols/experiment/builder-prompt.md +15 -0
- package/skeleton/protocols/experiment/protocol.md +1 -6
- package/skeleton/protocols/maintain/builder-prompt.md +12 -11
- package/skeleton/protocols/maintain/prompts/maintain.md +88 -0
- package/skeleton/protocols/maintain/prompts/review.md +84 -0
- package/skeleton/protocols/maintain/protocol.json +14 -68
- package/skeleton/protocols/maintain/protocol.md +111 -409
- package/skeleton/protocols/maintain/templates/maintenance-run.md +18 -49
- package/skeleton/protocols/protocol-schema.json +1 -1
- package/skeleton/protocols/spike/builder-prompt.md +1 -1
- package/skeleton/protocols/spike/protocol.md +4 -4
- package/skeleton/protocols/spir/builder-prompt.md +28 -5
- package/skeleton/protocols/spir/prompts/review.md +11 -0
- package/skeleton/protocols/spir/protocol.json +9 -1
- package/skeleton/protocols/spir/protocol.md +2 -2
- package/skeleton/protocols/spir/templates/plan.md +0 -20
- package/skeleton/protocols/spir/templates/spec.md +0 -28
- package/skeleton/resources/commands/agent-farm.md +84 -84
- package/skeleton/resources/commands/codev.md +1 -1
- package/skeleton/resources/commands/consult.md +16 -7
- package/skeleton/resources/commands/overview.md +14 -15
- package/skeleton/resources/risk-triage.md +1 -1
- package/skeleton/resources/workflow-reference.md +14 -14
- package/skeleton/roles/architect.md +55 -43
- package/skeleton/roles/builder.md +22 -14
- package/skeleton/templates/AGENTS.md +4 -3
- package/skeleton/templates/CLAUDE.md +4 -3
- package/skeleton/templates/cheatsheet.md +11 -12
- package/templates/3d-viewer.html +16 -18
- package/templates/tower.html +1 -1
- package/dashboard/dist/assets/index-CiIBsixF.js +0 -194
- package/dashboard/dist/assets/index-CiIBsixF.js.map +0 -1
- package/skeleton/.claude/skills/af/SKILL.md +0 -146
- package/skeleton/porch/prompts/understand.md +0 -61
- package/skeleton/porch/prompts/verify.md +0 -58
- package/skeleton/protocols/maintain/prompts/audit.md +0 -111
- package/skeleton/protocols/maintain/prompts/clean.md +0 -91
- package/skeleton/protocols/maintain/prompts/sync.md +0 -113
- package/skeleton/protocols/maintain/prompts/verify.md +0 -110
- package/skeleton/protocols/tick/builder-prompt.md +0 -65
- package/skeleton/protocols/tick/consult-types/impl-review.md +0 -72
- package/skeleton/protocols/tick/consult-types/plan-review.md +0 -59
- package/skeleton/protocols/tick/consult-types/pr-review.md +0 -72
- package/skeleton/protocols/tick/consult-types/spec-review.md +0 -55
- package/skeleton/protocols/tick/protocol.json +0 -151
- package/skeleton/protocols/tick/protocol.md +0 -277
- package/skeleton/protocols/tick/templates/plan.md +0 -67
- package/skeleton/protocols/tick/templates/review.md +0 -89
- package/skeleton/protocols/tick/templates/spec.md +0 -61
|
@@ -181,11 +181,22 @@ Before PR:
|
|
|
181
181
|
porch consultation reviews the actual PR, and the architect can review a real PR
|
|
182
182
|
when the pr gate fires.
|
|
183
183
|
|
|
184
|
+
**PR body requirements**: The PR body MUST include `Closes #<N>` (for feature issues)
|
|
185
|
+
or `Fixes #<N>` (for bug issues) for the driving GitHub issue. If the PR closes
|
|
186
|
+
multiple issues (e.g. duplicates consolidated), include one keyword per issue.
|
|
187
|
+
Without this, GitHub will not auto-close the issue on merge.
|
|
188
|
+
|
|
189
|
+
**Exception**: if this PR only partially addresses the issue (e.g. one phase of a
|
|
190
|
+
multi-PR effort), DO NOT use `Closes`/`Fixes` — reference the issue with `Refs #<N>`
|
|
191
|
+
or `Part of #<N>` instead. The issue stays open until the follow-up PR closes it.
|
|
192
|
+
|
|
184
193
|
```bash
|
|
185
194
|
gh pr create --title "[Spec {{project_id}}] {{title}}" --body "$(cat <<'EOF'
|
|
186
195
|
## Summary
|
|
187
196
|
[Brief description of the implementation]
|
|
188
197
|
|
|
198
|
+
Closes #<N> <!-- Replace <N> with the driving issue number, or use "Refs #<N>" for partial fixes -->
|
|
199
|
+
|
|
189
200
|
## Changes
|
|
190
201
|
- [Change 1]
|
|
191
202
|
- [Change 2]
|
|
@@ -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 -
|
|
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
|
-
|
|
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 `
|
|
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
|
-
|
|
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 `
|
|
52
|
-
- **PR ready**: `
|
|
53
|
-
- **PR merged**: `
|
|
54
|
-
- **Blocked**: `
|
|
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
|
|
@@ -15,15 +15,27 @@ Create a pull request, run CMAP review, and address feedback.
|
|
|
15
15
|
|
|
16
16
|
### 1. Create the Pull Request
|
|
17
17
|
|
|
18
|
-
Create a PR that links to the issue
|
|
18
|
+
Create a PR that links to the issue.
|
|
19
|
+
|
|
20
|
+
**PR body requirements**: The PR body MUST include `Fixes #<N>` (where `<N>` is
|
|
21
|
+
the driving issue number) so GitHub auto-closes the issue on merge. If the PR
|
|
22
|
+
fixes multiple issues (e.g. duplicates consolidated), include one `Fixes #<N>`
|
|
23
|
+
per issue. Without this, GitHub will not auto-close the issue.
|
|
24
|
+
|
|
25
|
+
**Exception**: if this PR only partially addresses the issue, use `Refs #<N>`
|
|
26
|
+
or `Part of #<N>` instead of `Fixes` — the issue stays open until a
|
|
27
|
+
follow-up PR closes it.
|
|
28
|
+
|
|
29
|
+
**Note**: substitute the real issue number for `<N>` — do not leave the
|
|
30
|
+
placeholder or any `{{...}}` template tag in the committed PR body.
|
|
19
31
|
|
|
20
32
|
```bash
|
|
21
|
-
gh pr create --title "Fix
|
|
33
|
+
gh pr create --title "Fix #<N>: <brief description>" --body "$(cat <<'EOF'
|
|
22
34
|
## Summary
|
|
23
35
|
|
|
24
36
|
<1-2 sentence description of the bug and fix>
|
|
25
37
|
|
|
26
|
-
Fixes
|
|
38
|
+
Fixes #<N> <!-- Substitute <N> with the real issue number -->
|
|
27
39
|
|
|
28
40
|
## Root Cause
|
|
29
41
|
|
|
@@ -74,7 +86,7 @@ You must have three concrete verdicts (e.g., "gemini: APPROVE, codex: APPROVE, c
|
|
|
74
86
|
Send a **single** notification that includes the PR link and each model's verdict:
|
|
75
87
|
|
|
76
88
|
```bash
|
|
77
|
-
|
|
89
|
+
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
90
|
```
|
|
79
91
|
|
|
80
92
|
**This is the only notification you send.** After this, your work is done — the architect
|
|
@@ -46,6 +46,21 @@ The EXPERIMENT protocol ensures disciplined experimentation:
|
|
|
46
46
|
- Document findings regardless of outcome
|
|
47
47
|
- Separate experiment artifacts from production code
|
|
48
48
|
|
|
49
|
+
## If You Open a PR
|
|
50
|
+
|
|
51
|
+
Most experiments are committed to a branch without a PR, but if you do open one
|
|
52
|
+
to integrate findings and the experiment was triggered by a GitHub issue:
|
|
53
|
+
|
|
54
|
+
**PR body requirements**: The PR body MUST include `Closes #<N>` (for feature
|
|
55
|
+
issues) or `Fixes #<N>` (for bug issues) for the driving issue so GitHub
|
|
56
|
+
auto-closes it on merge. If the PR closes multiple issues, include one keyword
|
|
57
|
+
per issue.
|
|
58
|
+
|
|
59
|
+
**Exception**: if this PR only partially addresses the issue (e.g. experiment
|
|
60
|
+
validates an approach but production implementation is deferred), use
|
|
61
|
+
`Refs #<N>` or `Part of #<N>` instead — the issue stays open until a follow-up
|
|
62
|
+
PR closes it.
|
|
63
|
+
|
|
49
64
|
## Handling Flaky Tests
|
|
50
65
|
|
|
51
66
|
If you encounter **pre-existing flaky tests** (intermittent failures unrelated to your changes):
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
-
|
|
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
|
|
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.
|
|
55
|
-
3.
|
|
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,84 @@
|
|
|
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
|
+
**PR body requirements**: If this maintenance run was triggered by a GitHub issue
|
|
37
|
+
(e.g. "track down dead X", "clean up Y module"), the PR body MUST include
|
|
38
|
+
`Closes #<N>` for that issue so GitHub auto-closes it on merge. If multiple
|
|
39
|
+
issues are addressed in one run, include one `Closes #<N>` per issue.
|
|
40
|
+
|
|
41
|
+
**Exception**: if this PR only partially addresses a tracking issue (e.g. more
|
|
42
|
+
cleanup passes are planned), use `Refs #<N>` or `Part of #<N>` instead.
|
|
43
|
+
|
|
44
|
+
If the run was not tied to any issue, the `Closes` line can be omitted.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git push origin HEAD
|
|
48
|
+
|
|
49
|
+
gh pr create --title "[Maintain] Codebase maintenance run NNNN" --body "$(cat <<'PREOF'
|
|
50
|
+
## Summary
|
|
51
|
+
|
|
52
|
+
<2-3 bullet points of what was done>
|
|
53
|
+
|
|
54
|
+
Closes #<N> <!-- Only if this run was triggered by a GitHub issue. Use "Refs #<N>" for partial cleanup. -->
|
|
55
|
+
|
|
56
|
+
## Changes
|
|
57
|
+
|
|
58
|
+
- Dead code removed: X items
|
|
59
|
+
- Dependencies cleaned: Y packages
|
|
60
|
+
- Documentation updated: arch.md, lessons-learned.md
|
|
61
|
+
- Tests: all passing
|
|
62
|
+
|
|
63
|
+
## Test plan
|
|
64
|
+
|
|
65
|
+
- [x] Build passes
|
|
66
|
+
- [x] All tests pass
|
|
67
|
+
- [x] Documentation links resolve
|
|
68
|
+
PREOF
|
|
69
|
+
)"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Signals
|
|
73
|
+
|
|
74
|
+
When PR is created:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
<signal>PHASE_COMPLETE</signal>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
If blocked:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
<signal>BLOCKED:reason</signal>
|
|
84
|
+
```
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"$schema": "../../protocol-schema.json",
|
|
3
3
|
"name": "maintain",
|
|
4
4
|
"alias": "maint",
|
|
5
|
-
"version": "
|
|
6
|
-
"description": "Codebase maintenance -
|
|
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": "
|
|
15
|
-
"name": "
|
|
16
|
-
"description": "
|
|
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": "
|
|
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": "
|
|
34
|
+
"command": "pnpm build",
|
|
56
35
|
"on_fail": "retry",
|
|
57
36
|
"max_retries": 2
|
|
58
37
|
},
|
|
59
38
|
"tests": {
|
|
60
|
-
"command": "
|
|
39
|
+
"command": "pnpm test",
|
|
61
40
|
"on_fail": "retry",
|
|
62
41
|
"max_retries": 2
|
|
63
42
|
}
|
|
64
43
|
},
|
|
65
|
-
"next": "
|
|
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": "
|
|
90
|
-
"name": "
|
|
91
|
-
"description": "Final validation
|
|
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": "
|
|
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": "
|
|
72
|
+
"transitions_to": "review"
|
|
127
73
|
},
|
|
128
74
|
"BLOCKED": {
|
|
129
75
|
"description": "Signal maintenance is blocked",
|