@mrciphersmith/keryx 0.2.70 → 0.2.72

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 (192) hide show
  1. package/dist/cli.js +25237 -17483
  2. package/docs/README.md +54 -0
  3. package/docs/requirements/shared-agent-context/README.md +104 -0
  4. package/package.json +3 -2
  5. package/src/gdskills/bundled/rules/core/code-review-learned-profile.mdc +81 -0
  6. package/src/gdskills/bundled/rules/core/jobs-documentation.mdc +1 -1
  7. package/src/gdskills/bundled/rules/core/model-selection.mdc +184 -31
  8. package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +8 -4
  9. package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +36 -0
  10. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +1 -1
  11. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +1 -1
  12. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +2 -1
  13. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +1 -1
  14. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +1 -1
  15. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +3 -3
  16. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +3 -3
  17. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +3 -3
  18. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +3 -3
  19. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +3 -3
  20. package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +2 -2
  21. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +4 -4
  22. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +4 -4
  23. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +4 -4
  24. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +4 -4
  25. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +4 -4
  26. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +2 -2
  27. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +2 -2
  28. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +3 -3
  29. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +80 -21
  30. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +1 -1
  31. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +1 -1
  32. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +1 -1
  33. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +1 -1
  34. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +1 -1
  35. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +2 -2
  36. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +2 -2
  37. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +3 -2
  38. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +2 -2
  39. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +2 -2
  40. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +997 -509
  41. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +997 -509
  42. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +968 -513
  43. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +997 -509
  44. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +997 -509
  45. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json +38 -28
  46. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/orchestrator-prompt.md +98 -66
  47. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/output-contract.schema.json +27 -5
  48. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +20 -2
  49. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +20 -2
  50. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +21 -2
  51. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +20 -2
  52. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +20 -2
  53. package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +1 -1
  54. package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +2 -1
  55. package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +3 -1
  56. package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +2 -1
  57. package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +2 -1
  58. package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +2 -1
  59. package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +2 -1
  60. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +1 -1
  61. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +1 -1
  62. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +1 -1
  63. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +1 -1
  64. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +1 -1
  65. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +2 -1
  66. package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +1 -1
  67. package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +1 -1
  68. package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +1 -1
  69. package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +1 -1
  70. package/src/gdskills/bundled/skills/planning/interview/SKILL.md +1 -1
  71. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +1 -1
  72. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +1 -1
  73. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +1 -1
  74. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +1 -1
  75. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +1 -1
  76. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +2 -1
  77. package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +1 -1
  78. package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +1 -1
  79. package/src/gdskills/bundled/skills/planning/planner/SKILL.md +2 -1
  80. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +1 -1
  81. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +1 -1
  82. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +1 -1
  83. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +1 -1
  84. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +1 -1
  85. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +1 -1
  86. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +1 -1
  87. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +2 -1
  88. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +1 -1
  89. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +1 -1
  90. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +2 -1
  91. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +1 -1
  92. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +1 -1
  93. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +2 -1
  94. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +1 -1
  95. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +1 -1
  96. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +2 -1
  97. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +1 -1
  98. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +1 -1
  99. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +1 -1
  100. package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +1 -1
  101. package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +1 -1
  102. package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +1 -1
  103. package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +1 -1
  104. package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +1 -1
  105. package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +1 -1
  106. package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +1 -1
  107. package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +1 -1
  108. package/src/gdskills/bundled/skills/quality/commit/SKILL.md +1 -1
  109. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +1 -1
  110. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +1 -1
  111. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +1 -1
  112. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +1 -1
  113. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +1 -1
  114. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +1 -1
  115. package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +1 -1
  116. package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +1 -1
  117. package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +1 -1
  118. package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +1 -1
  119. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +1 -1
  120. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +1 -1
  121. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +1 -1
  122. package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +1 -1
  123. package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +1 -1
  124. package/src/gdskills/bundled/skills/quality/pr/SKILL.md +1 -1
  125. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +1 -1
  126. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +1 -1
  127. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +1 -1
  128. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +1 -1
  129. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +1 -1
  130. package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +1 -1
  131. package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +1 -1
  132. package/src/gdskills/bundled/skills/quality/push/SKILL.md +1 -1
  133. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +1 -1
  134. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +1 -1
  135. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +1 -1
  136. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +1 -1
  137. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +1 -1
  138. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +1 -1
  139. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +1 -1
  140. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +1 -1
  141. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +1 -1
  142. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +1 -1
  143. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +1 -1
  144. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +1 -1
  145. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +1 -1
  146. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +3 -3
  147. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +1 -1
  148. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +1 -1
  149. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +252 -0
  150. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +252 -0
  151. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +243 -0
  152. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +252 -0
  153. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +252 -0
  154. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +1 -1
  155. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +1 -1
  156. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +3 -2
  157. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +1 -1
  158. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +1 -1
  159. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +1 -1
  160. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +1 -1
  161. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +2 -2
  162. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +1 -1
  163. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +1 -1
  164. package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +38 -11
  165. package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +49 -15
  166. package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +50 -13
  167. package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +35 -3
  168. package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +34 -3
  169. package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +71 -30
  170. package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +35 -4
  171. package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +50 -16
  172. package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +41 -13
  173. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +599 -30
  174. package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-finding.schema.json +7 -0
  175. package/src/gdskills/bundled/skills/review/review-orchestrator/verification-claim.schema.json +78 -0
  176. package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +44 -14
  177. package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +44 -19
  178. package/src/gdskills/bundled/skills/review/review-regression/SKILL.md +185 -0
  179. package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +45 -14
  180. package/src/gdskills/bundled/skills/review/review-style/SKILL.md +27 -7
  181. package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +36 -4
  182. package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +276 -0
  183. package/src/gdskills/bundled/skills/shared/git-merge-base.md +1 -1
  184. package/src/gdskills/contracts/review-finding.schema.json +119 -1
  185. package/src/gdskills/contracts/subagent-dispatch.schema.json +59 -3
  186. package/src/gdskills/bundled/rules/core/code-review-b091-profile.mdc +0 -48
  187. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.codex.md +0 -209
  188. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.cursor.md +0 -209
  189. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.md +0 -208
  190. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.opencode.md +0 -209
  191. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.zed.md +0 -209
  192. package/src/gdskills/bundled/skills/review/review-strict/SKILL.md +0 -328
@@ -4,11 +4,25 @@
4
4
  "title": "Job Orchestrator Input Contract",
5
5
  "description": "Defines all input parameters required to run job-orchestrator. This is the top-level entry point for the AI implementation pipeline.",
6
6
  "type": "object",
7
- "required": ["issue", "codebase", "automation"],
7
+ "required": ["intent", "codebase", "automation"],
8
+ "allOf": [
9
+ {
10
+ "if": { "properties": { "intent": { "enum": ["implement", "analyze"] } } },
11
+ "then": {
12
+ "required": ["issue"],
13
+ "description": "implement and analyze start from an issue, so one is required. review and custom have no issue and never did — requiring it unconditionally made two of the four intents unrepresentable."
14
+ }
15
+ }
16
+ ],
8
17
  "properties": {
18
+ "intent": {
19
+ "type": "string",
20
+ "enum": ["implement", "analyze", "review", "custom"],
21
+ "description": "What the job is for. Selects the plan (SKILL.md 1.1) and decides whether `issue` is required."
22
+ },
9
23
  "issue": {
10
24
  "type": "object",
11
- "description": "GitHub issue identification. Provide EITHER url OR repo+number.",
25
+ "description": "GitHub issue identification. Required for the implement and analyze intents. Provide EITHER url OR repo+number.",
12
26
  "properties": {
13
27
  "url": {
14
28
  "type": "string",
@@ -52,8 +66,7 @@
52
66
  },
53
67
  "base_branch": {
54
68
  "type": "string",
55
- "default": "develop-2",
56
- "description": "Base branch to create feature branch from"
69
+ "description": "Base branch to create the feature branch from. NO DEFAULT, deliberately: SKILL.md 0.2 auto-detects the repository's own default branch and asks the operator to confirm it. The value shipped here used to be `develop-2`, a branch from an unrelated project, which a caller that omitted the field would silently have inherited."
57
70
  },
58
71
  "additional_codebases": {
59
72
  "type": "array",
@@ -86,43 +99,40 @@
86
99
  "skip_confirmation": {
87
100
  "type": "boolean",
88
101
  "const": true,
89
- "description": "Must be true — sub-agents run without confirmation"
102
+ "description": "Must be true — DISPATCHED SUB-AGENTS run without per-dispatch confirmation. It does not govern the Phase 0.4 operator gate ('Proceed?'), which is a question to the human and is controlled by `plan_approval`. The two were read as contradictory only because they shared a name."
90
103
  },
91
104
  "max_review_iterations": {
92
105
  "type": "integer",
93
106
  "minimum": 1,
94
107
  "maximum": 3,
95
- "default": 2,
96
- "description": "Max review → fix iterations"
108
+ "default": 3,
109
+ "description": "Max review → fix iterations. Three: the same bound `task-implementer`, `flow-orchestrator` and SKILL.md 2.7 carry, pinned across all of them by src/gdskills/round-bound.test.ts. The default was 2 here, which made the contract disagree with the skill it validates."
110
+ },
111
+ "plan_approval": {
112
+ "type": "boolean",
113
+ "default": true,
114
+ "description": "Show the execution plan and ask the operator to approve or adjust before Phase 2 (SKILL.md 1.3). This is the automation switch for an operator question; `skip_confirmation` is not."
97
115
  },
98
116
  "auto_create_pr": {
99
117
  "type": "boolean",
100
118
  "default": false,
101
119
  "description": "Auto-create draft PR without asking user (default: ask)"
102
120
  },
103
- "reviewers": {
121
+ "review_flags": {
104
122
  "type": "array",
105
- "items": {
106
- "type": "string",
107
- "enum": [
108
- "code-ai-review",
109
- "code-boss-review",
110
- "code-style-review",
111
- "code-mobx-store-review"
112
- ]
113
- },
114
- "default": ["code-ai-review", "code-boss-review", "code-style-review"],
115
- "description": "Review skills to always run"
123
+ "items": { "type": "string" },
124
+ "description": "Reviewer selection passed straight to `review-orchestrator` (for example [\"--backend\", \"--security\"]). Omit to let it auto-detect from the diff. This replaces the former `reviewers`/`conditional_reviewers` pair, which named individual review skills for a hand-dispatch path SKILL.md 2.6 no longer takes: reviewers are selected by flag and gated by `keryx review stack`, not listed here."
116
125
  },
117
- "conditional_reviewers": {
118
- "type": "object",
119
- "additionalProperties": {
120
- "type": "string"
121
- },
122
- "default": {
123
- "code-mobx-store-review": "*.store.ts"
124
- },
125
- "description": "Review skills to run conditionally: {skill_name: file_glob_pattern}"
126
+ "convention_reviewers": {
127
+ "type": "string",
128
+ "default": "ask",
129
+ "description": "Optional project-convention reviewers: \"ask\" (prompt the operator), \"all\", \"none\", or a comma-separated list of skill names."
130
+ },
131
+ "verification_mode": {
132
+ "type": "string",
133
+ "enum": ["off", "annotate", "filter"],
134
+ "default": "annotate",
135
+ "description": "Passed to `review-orchestrator` and to `keryx review ingest --verification-mode`. `annotate` records verifier verdicts without removing findings."
126
136
  },
127
137
  "run_final_checks": {
128
138
  "type": "boolean",
@@ -12,28 +12,35 @@
12
12
  ↓
13
13
  [Orchestrator] → loads SKILL.md, follows this checklist
14
14
  ↓
15
- Phase 0: Context collection, intent determination, plan building
15
+ Phase 0: keryx job list --json → resume or start; collect context; confirm
16
16
  ↓
17
- Phase 1: [job-documenter sub-agent] → initialize .metaproject/jobs/<job-name>/ + README + plan
17
+ Phase 1: keryx job init --name <slug> --intent <intent> --project <path>
18
18
  ↓
19
- Phase 2: Execute plan dynamically:
19
+ Phase 2: Execute plan, bracketing every step with keryx job step:
20
20
  ↓
21
21
  ├─ [issue-analyzer sub-agent] → JSON analysis result
22
22
  ├─ git worktree add → feature branch (NEVER git checkout -b)
23
- ├─ FOR EACH wave → [wave-executor sub-agent] → compact WAVE_DONE summary
24
- ├─ Load review skills → findings
25
- ├─ IF findings → [task-implementer sub-agent (fix)] → re-review (max 2x)
26
- ├─ npm run lint && type-check && test
27
- └─ [job-documenter] → document each step result
23
+ ├─ FOR EACH wave → [tests-creator × tasks] then [task-implementer × tasks]
24
+ ├─ [code-verifier sub-agent] → quality gate
25
+ ├─ keryx review start → [review-orchestrator sub-agent] → keryx review ingest
26
+ ├─ IF blocker/major → [task-implementer (fix)] → next managed round (max 3)
27
+ ├─ keryx review complete --finding … --disposition … --evidence …
28
+ └─ keryx job document → each step's artifact recorded in the package
28
29
  ↓
29
- Phase 3: [job-documenter] → finalize → final report
30
+ Phase 3: keryx job complete <job-name> → final report
30
31
  ↓
31
32
  (Optional) gh pr create --draft
32
33
  ```
33
34
 
35
+ Every sub-agent dispatch uses `subagent_type: "general-purpose"`.
36
+
34
37
  ## Phase 0: Context Collection (Guard Clause)
35
38
 
36
- Before starting, determine intent and collect context:
39
+ 0. **Check for an unfinished job first:**
40
+ ```bash
41
+ keryx job list --json # phase != COMPLETION means unfinished
42
+ keryx job status <name> --json # next_step is where to resume
43
+ ```
37
44
 
38
45
  1. **Determine intent** from user request:
39
46
  - "Implement issue" → `implement` (full cycle)
@@ -47,9 +54,9 @@ Before starting, determine intent and collect context:
47
54
  ○ Type the full absolute path to your project
48
55
  ```
49
56
 
50
- 3. **Base branch** → ask to confirm (no default).
57
+ 3. **Base branch** → auto-detect, present, ask to confirm. No hardcoded default.
51
58
 
52
- 4. **Job name** → auto-generate + confirm:
59
+ 4. **Job name** → auto-generate + confirm. Must match `^[a-z0-9-]+$`:
53
60
  - `issue-<N>--<slug>` for implement
54
61
  - `analysis--issue-<N>` for analyze
55
62
  - `review--<slug>` for review
@@ -59,28 +66,37 @@ Before starting, determine intent and collect context:
59
66
  - `implement`: Create PR? (default: yes)
60
67
  - `analyze`: nothing (ask about implementation after analysis)
61
68
 
62
- 6. **Show summary and ask for confirmation** before starting.
69
+ 6. **Show summary and ask for confirmation** before starting. This operator gate is
70
+ not governed by `skip_confirmation`, which covers sub-agent dispatch only.
63
71
 
64
- ## Phase 1: Initialize Documentation
72
+ ## Phase 1: Create the Job Package
65
73
 
66
- Dispatch `job-documenter` sub-agent with `ACTION: init`.
67
-
68
- Write initial `state.json` to `.metaproject/jobs/<job-name>/state.json` after job docs are initialized.
74
+ ```bash
75
+ keryx job init --name <job-name> --intent implement|analyze|review|custom --project <project_dir>
76
+ keryx job status <job-name> # confirm the plan, phase and first open step
77
+ ```
69
78
 
70
- Verify `DOCUMENTER_RESULT.status == "success"`.
79
+ `keryx job` is the only writer of `state.json`, and it validates every write against
80
+ the registered contract `job-orchestrator-state`. Never hand-write the file.
71
81
 
72
82
  ## Phase 2: Execute Plan
73
83
 
74
- Execute plan steps sequentially. After each step:
75
- 1. Collect result
76
- 2. Send to `job-documenter` (ACTION: add-document)
77
- 3. Update README (ACTION: update-readme)
78
- 4. Update `state.json` with step completion
79
- 5. Mark step as completed
84
+ Execute plan steps in order. For each step:
85
+
86
+ ```bash
87
+ keryx job step <job-name> <step-id> --status in-progress # counts a retry on re-entry
88
+ # … run the step …
89
+ keryx job document <job-name> --type <analysis|implementation-report|review|verification-report> --file <path>
90
+ keryx job status <job-name> # the job index
91
+ keryx job step <job-name> <step-id> --status completed
92
+ ```
93
+
94
+ A conditional step whose trigger did not fire is closed too:
95
+ `keryx job step <job-name> <step-id> --status skipped --reason "<why>"`.
80
96
 
81
97
  ### Step: ANALYZE
82
98
 
83
- Read `skills/issue-analyzer/orchestrator-prompt.md`, fill in parameters:
99
+ Read `skills/gdskills/orchestration/issue-analyzer/orchestrator-prompt.md`, fill in parameters:
84
100
 
85
101
  ```
86
102
  ISSUE_URL: <url> (or ISSUE_REPO + ISSUE_NUMBER)
@@ -92,7 +108,7 @@ SEARCH_DEPTH: focused (default)
92
108
  Launch Task(issue-analyzer). Parse JSON result — extract tasks and dependency_order.
93
109
 
94
110
  For `analyze` intent: show result, ask "Implement? (yes/no)".
95
- - yes → extend plan: prepare → implement → review → fix → checks → report → pr
111
+ - yes → create a second package: `keryx job init --name <name>-impl --intent implement …`
96
112
  - no → Phase 3
97
113
 
98
114
  ### Step: PREPARE — Create Feature Branch
@@ -102,62 +118,78 @@ For `analyze` intent: show result, ask "Implement? (yes/no)".
102
118
  ```bash
103
119
  git -C <project_dir> fetch origin <base_branch>
104
120
  git -C <project_dir> worktree add ../<branch-slug> -b feature/<branch-slug> origin/<base_branch>
105
- npm install --prefix <worktree_path>
121
+ # then install with the DETECTED package manager — never hardcode npm
106
122
  ```
107
123
 
108
- All subsequent operations ONLY in worktree directory.
124
+ All subsequent operations ONLY in the worktree directory.
109
125
 
110
- ### Step: IMPLEMENT — Wave Isolation
126
+ ### Step: TESTS-CREATOR + IMPLEMENT — Waves
111
127
 
112
128
  ```
113
- WAVES = topological_sort_into_waves(dependency_order, task_dependencies)
129
+ WAVES = dependency_order from ANALYSIS_RESULT (already topologically sorted)
114
130
 
115
131
  FOR wave_index, wave_tasks in enumerate(WAVES):
116
- 1. Dispatch single Agent("wave-executor") with all tasks in this wave
117
- (see skills/job-orchestrator/SKILL.md step 2.4.1 for full prompt template)
118
- 2. Receive compact WAVE_RESULT:
119
- STATUS: WAVE_DONE | WAVE_PARTIAL | WAVE_FAILED
120
- Commits: [hash msg, ...]
121
- Tests: N passed, M failed
122
- Tasks: task-1 ✅, task-2 ✅
123
- 3. Decision:
124
- WAVE_DONE → continue to next wave
125
- WAVE_PARTIAL → log concerns (read result files if needed), continue
126
- WAVE_FAILED → STOP, read result files for failed tasks, ask user
127
-
128
- Do NOT dispatch task-implementers directly — always via wave-executor.
129
- Context budget rule: orchestrator only accumulates compact wave summaries,
130
- never raw task-implementer output.
132
+ 1. Dispatch one tests-creator per task, in a SINGLE turn (parallel). Wait for all.
133
+ Load skill: skills/gdskills/quality/tests-creator/SKILL.md
134
+ 2. Parallel safety check: tasks sharing a target_file run sequentially.
135
+ 3. Dispatch one task-implementer per task, in a SINGLE turn (parallel). Wait for all.
136
+ Load skill: skills/gdskills/orchestration/task-implementer/SKILL.md
137
+ 4. Read each STATUS line:
138
+ all DONE → next wave
139
+ any DONE_WITH_CONCERNS → record concerns, continue
140
+ any BLOCKED → STOP, read the result file, resolve or ask the user
141
+
142
+ There is no wave-executor agent. Instruct every dispatched agent to write full
143
+ detail to <JOBS_ROOT>/<job-name>/results/<task_id>.json and return only a compact
144
+ summary — context grows with what agents RETURN.
131
145
  ```
132
146
 
133
- Document result in job-documenter.
147
+ Record with `keryx job document --type implementation-report`.
134
148
 
135
- ### Step: REVIEW — Run Reviewers
149
+ ### Step: VERIFY — Quality Gate
136
150
 
137
- ```
138
- REVIEWERS = ["code-ai-review", "code-boss-review", "code-style-review"]
139
- IF *.store.ts modified: add "code-mobx-store-review"
151
+ Dispatch `code-verifier` (`skills/gdskills/orchestration/code-verifier/SKILL.md`) with
152
+ `codebase_path`, `base_branch`, `scope: changed`. Record with
153
+ `keryx job document --type verification-report`.
154
+
155
+ ### Step: REVIEW — One Managed Round
140
156
 
141
- FOR reviewer in REVIEWERS:
142
- Load skill → execute → collect findings as JSON
157
+ ```bash
158
+ keryx review budget --spent <usd> --outstanding <subagents in flight> # STOP on non-zero exit
159
+ keryx review start --target branch --ref <feature-branch> --head "$(git rev-parse HEAD)"
160
+ keryx review comments collect --repo <owner/repo> --pr <n> --sha <head-sha> --round <n> --out <file>
161
+ keryx review scope --ref "$BASE_SHA" --json > scope.json
162
+ keryx review blast-radius --ref "$BASE_SHA" --json > blast-radius.json # KEEP BOTH
163
+ keryx review stack --json # which reviewers apply
164
+ keryx review tier --scope <scope> --diff-lines <n> --json # model per dispatch
165
+ # dispatch review-orchestrator (skills/gdskills/review/review-orchestrator/SKILL.md);
166
+ # it runs review-verifier in Wave C and emits the ```json keryx:findings``` block
167
+ keryx review ingest --report <report.md> --ref <feature-branch> --head <sha> \
168
+ --scope scope.json --blast-radius blast-radius.json \
169
+ --verifications <file> --refuted <file> --outstanding <n>
143
170
  ```
144
171
 
145
- Document result.
172
+ `--blast-radius` is required on any round that dispatched `review-regression`; an
173
+ ingest carrying a scope-B finding without it is refused. Severities are
174
+ `blocker|major|minor|info`. Record with `keryx job document --type review`.
146
175
 
147
- ### Step: FIX — Review-Fix Loop (max 2 iterations)
176
+ ### Step: FIX — Review-Fix Loop (max 3 iterations)
148
177
 
149
- If CRITICAL or WARNING findings exist:
178
+ If `blocker` or `major` findings exist:
150
179
  1. Group by file
151
- 2. Launch task-implementer (task_type: "fix") with review findings JSON
152
- 3. Re-run reviewers
153
- 4. Recount findings
154
-
155
- ### Step: CHECKS — Final Verification
180
+ 2. Launch task-implementer (`task_type: "fix"`) with the findings
181
+ 3. Run the sanity check — verify commits were made
182
+ 4. Run the NEXT managed round (the whole REVIEW sequence above, `is_fix_round: true`)
183
+ 5. Disposition every finding of the previous round:
184
+ ```bash
185
+ keryx review complete <review-id> --finding F-001 --disposition acted-on --evidence "<commit>"
186
+ ```
187
+ 6. STUCK CHECK — break on a repeated finding identity or an identical report, even
188
+ with iterations left. `keryx review loop --flow <id>` detects it from the record.
156
189
 
190
+ After the LAST round only:
157
191
  ```bash
158
- npm run lint
159
- npm run type-check
160
- npm test
192
+ keryx review comments reply --repo <owner/repo> --pr <n> --outcomes <file> --sha <sha> --final
161
193
  ```
162
194
 
163
195
  ### Step: REPORT — Generate Final Report
@@ -174,6 +206,6 @@ gh pr create --title "<title>" --body "..." --base <base> --head <head> --draft
174
206
 
175
207
  ## Phase 3: Completion
176
208
 
177
- 1. Dispatch `job-documenter` with `ACTION: finalize`
178
- 2. Update `state.json` with `phase: "COMPLETION"`
179
- 3. Tell user what was accomplished + documentation path + PR URL (if created)
209
+ 1. Close every remaining step: `keryx job step <job-name> <step-id> --status completed|skipped --reason "<why>"`
210
+ 2. `keryx job complete <job-name>` — refused while any step is open or failed, and it names them
211
+ 3. Tell the user what was accomplished, the package path, and the PR URL (if created)
@@ -22,15 +22,19 @@
22
22
  "type": "string",
23
23
  "enum": [
24
24
  "Summary",
25
+ "Analysis",
25
26
  "Tasks",
26
27
  "Review Results",
27
28
  "Unresolved Issues",
28
29
  "Final Checks",
30
+ "Skill Updates",
31
+ "Metrics",
32
+ "Execution Metrics",
29
33
  "Changes Summary",
30
34
  "PR Proposal"
31
35
  ]
32
36
  },
33
- "description": "Sections in the report"
37
+ "description": "Sections in the report. The enum matches the template in SKILL.md 2.9 — it was closed at seven values and excluded two sections the skill instructs the orchestrator to emit, so a conforming report was unrepresentable."
34
38
  }
35
39
  }
36
40
  },
@@ -47,10 +51,13 @@
47
51
  "branch_name": { "type": "string" },
48
52
  "tasks_completed": { "type": "integer" },
49
53
  "tasks_total": { "type": "integer" },
50
- "review_iterations": { "type": "integer" },
54
+ "review_rounds": {
55
+ "type": "integer",
56
+ "description": "Managed review rounds run — each one has a package under .metaproject/reviews/."
57
+ },
51
58
  "final_status": {
52
59
  "type": "string",
53
- "enum": ["READY FOR PR", "HAS WARNINGS", "HAS ISSUES", "FAILED"]
60
+ "enum": ["READY FOR PR", "HAS WARNINGS", "HAS ISSUES", "ANALYSIS ONLY", "FAILED"]
54
61
  }
55
62
  }
56
63
  },
@@ -69,16 +76,31 @@
69
76
  },
70
77
  "review_results": {
71
78
  "type": "array",
79
+ "description": "Per-reviewer counts, in the canonical severity vocabulary of review-finding.schema.json. The old critical/warning/info triple could not be populated from findings the reviewers actually produce.",
72
80
  "items": {
73
81
  "type": "object",
74
82
  "properties": {
75
83
  "reviewer": { "type": "string" },
76
- "critical": { "type": "integer" },
77
- "warning": { "type": "integer" },
84
+ "review_id": { "type": "string", "description": "The managed review package this round was ingested into." },
85
+ "blocker": { "type": "integer" },
86
+ "major": { "type": "integer" },
87
+ "minor": { "type": "integer" },
78
88
  "info": { "type": "integer" }
79
89
  }
80
90
  }
81
91
  },
92
+ "dispositions": {
93
+ "type": "object",
94
+ "description": "Terminal disposition counts recorded by `keryx review complete`. `unknown` above zero means findings were closed without anyone writing down what happened to them.",
95
+ "properties": {
96
+ "unknown": { "type": "integer" },
97
+ "acted-on": { "type": "integer" },
98
+ "dismissed-incorrect": { "type": "integer" },
99
+ "dismissed-wont-fix": { "type": "integer" },
100
+ "dismissed-out-of-scope": { "type": "integer" },
101
+ "dismissed-deprioritised": { "type": "integer" }
102
+ }
103
+ },
82
104
  "final_checks": {
83
105
  "type": "object",
84
106
  "properties": {
@@ -11,8 +11,8 @@ metadata:
11
11
  author: "MrCipherSmith"
12
12
  version: "1.0.0"
13
13
  category: "implementation"
14
+ compatible_harnesses: "cursor,codex,zed,opencode"
14
15
  license: "MIT"
15
- compatibility: "cursor,codex,zed,opencode"
16
16
  ---
17
17
 
18
18
  # Task Implementer
@@ -284,7 +284,25 @@ npm run build-storybook # Verify stories compile
284
284
  | Test failures | Fix failing tests, re-commit |
285
285
  | Story build failure | Fix story code, re-commit |
286
286
 
287
- Maximum 3 self-fix attempts per verification step.
287
+ Maximum 3 self-fix attempts per verification step.
288
+
289
+ Three, and it is the same three `job-orchestrator` and `flow-orchestrator`
290
+ use: one round bound, not four. *"The first three to four repair iterations
291
+ account for most achievable gains"*
292
+ ([arXiv:2607.05197](https://arxiv.org/abs/2607.05197)); correctness falls
293
+ **0.820 -> 0.673** across two forced revisions while cumulative ever-correct is
294
+ **0.847** ([arXiv:2607.24604](https://arxiv.org/abs/2607.24604)) — the agent
295
+ finds the fix and then destroys it. Aider hardcodes `max_reflections = 3`;
296
+ OpenHands' critic uses 3.
297
+
298
+ **Stop earlier on repetition, whatever the count says.** If an attempt produces
299
+ the same failure output as the previous attempt — the same failing test with the
300
+ same message, the same type error at the same site — do NOT spend the remaining
301
+ attempts. The counter cannot tell "converging slowly" from "stuck", and three
302
+ identical outputs cost the whole budget to learn what the second one already
303
+ said. Report the block instead, naming what repeated.
304
+
305
+
288
306
  **ROLLBACK POLICY**: If implementation fatally fails (e.g. tests still failing after 3 attempts or unresolvable compilation errors), you MUST run `git reset --hard` to clean the worktree before reporting the failure in Phase 6, unless explicitly instructed to leave it dirty.
289
307
 
290
308
  **5.5 Re-commit fixes if any:**
@@ -11,8 +11,8 @@ metadata:
11
11
  author: "MrCipherSmith"
12
12
  version: "1.0.0"
13
13
  category: "implementation"
14
+ compatible_harnesses: "cursor,codex,zed,opencode"
14
15
  license: "MIT"
15
- compatibility: "cursor,codex,zed,opencode"
16
16
  ---
17
17
 
18
18
  # Task Implementer
@@ -284,7 +284,25 @@ npm run build-storybook # Verify stories compile
284
284
  | Test failures | Fix failing tests, re-commit |
285
285
  | Story build failure | Fix story code, re-commit |
286
286
 
287
- Maximum 3 self-fix attempts per verification step.
287
+ Maximum 3 self-fix attempts per verification step.
288
+
289
+ Three, and it is the same three `job-orchestrator` and `flow-orchestrator`
290
+ use: one round bound, not four. *"The first three to four repair iterations
291
+ account for most achievable gains"*
292
+ ([arXiv:2607.05197](https://arxiv.org/abs/2607.05197)); correctness falls
293
+ **0.820 -> 0.673** across two forced revisions while cumulative ever-correct is
294
+ **0.847** ([arXiv:2607.24604](https://arxiv.org/abs/2607.24604)) — the agent
295
+ finds the fix and then destroys it. Aider hardcodes `max_reflections = 3`;
296
+ OpenHands' critic uses 3.
297
+
298
+ **Stop earlier on repetition, whatever the count says.** If an attempt produces
299
+ the same failure output as the previous attempt — the same failing test with the
300
+ same message, the same type error at the same site — do NOT spend the remaining
301
+ attempts. The counter cannot tell "converging slowly" from "stuck", and three
302
+ identical outputs cost the whole budget to learn what the second one already
303
+ said. Report the block instead, naming what repeated.
304
+
305
+
288
306
  **ROLLBACK POLICY**: If implementation fatally fails (e.g. tests still failing after 3 attempts or unresolvable compilation errors), you MUST run `git reset --hard` to clean the worktree before reporting the failure in Phase 6, unless explicitly instructed to leave it dirty.
289
307
 
290
308
  **5.5 Re-commit fixes if any:**
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: task-implementer
3
+ model_tier: standard
3
4
  description: "Use when implementing a single decomposed task from issue-analyzer end-to-end, or executing autonomous code changes from a JSON task object."
4
5
  triggers:
5
6
  - "Implement task"
@@ -12,8 +13,8 @@ metadata:
12
13
  version: "1.2.0"
13
14
  category: "implementation"
14
15
  agent_worthy: true
16
+ compatible_harnesses: "cursor,codex,zed,opencode"
15
17
  license: "MIT"
16
- compatibility: "cursor,codex,zed,opencode"
17
18
  ---
18
19
 
19
20
  # Task Implementer
@@ -333,7 +334,25 @@ npm run build-storybook # Verify stories compile
333
334
  | Test failures | Fix failing tests, re-commit |
334
335
  | Story build failure | Fix story code, re-commit |
335
336
 
336
- Maximum 3 self-fix attempts per verification step.
337
+ Maximum 3 self-fix attempts per verification step.
338
+
339
+ Three, and it is the same three `job-orchestrator` and `flow-orchestrator`
340
+ use: one round bound, not four. *"The first three to four repair iterations
341
+ account for most achievable gains"*
342
+ ([arXiv:2607.05197](https://arxiv.org/abs/2607.05197)); correctness falls
343
+ **0.820 -> 0.673** across two forced revisions while cumulative ever-correct is
344
+ **0.847** ([arXiv:2607.24604](https://arxiv.org/abs/2607.24604)) — the agent
345
+ finds the fix and then destroys it. Aider hardcodes `max_reflections = 3`;
346
+ OpenHands' critic uses 3.
347
+
348
+ **Stop earlier on repetition, whatever the count says.** If an attempt produces
349
+ the same failure output as the previous attempt — the same failing test with the
350
+ same message, the same type error at the same site — do NOT spend the remaining
351
+ attempts. The counter cannot tell "converging slowly" from "stuck", and three
352
+ identical outputs cost the whole budget to learn what the second one already
353
+ said. Report the block instead, naming what repeated.
354
+
355
+
337
356
  **ROLLBACK POLICY**: If implementation fatally fails (e.g. tests still failing after 3 attempts or unresolvable compilation errors), you MUST run `git reset --hard` to clean the worktree before reporting the failure in Phase 6, unless explicitly instructed to leave it dirty.
338
357
 
339
358
  **5.5 Re-commit fixes if any:**
@@ -11,8 +11,8 @@ metadata:
11
11
  author: "MrCipherSmith"
12
12
  version: "1.0.0"
13
13
  category: "implementation"
14
+ compatible_harnesses: "cursor,codex,zed,opencode"
14
15
  license: "MIT"
15
- compatibility: "cursor,codex,zed,opencode"
16
16
  ---
17
17
 
18
18
  # Task Implementer
@@ -284,7 +284,25 @@ npm run build-storybook # Verify stories compile
284
284
  | Test failures | Fix failing tests, re-commit |
285
285
  | Story build failure | Fix story code, re-commit |
286
286
 
287
- Maximum 3 self-fix attempts per verification step.
287
+ Maximum 3 self-fix attempts per verification step.
288
+
289
+ Three, and it is the same three `job-orchestrator` and `flow-orchestrator`
290
+ use: one round bound, not four. *"The first three to four repair iterations
291
+ account for most achievable gains"*
292
+ ([arXiv:2607.05197](https://arxiv.org/abs/2607.05197)); correctness falls
293
+ **0.820 -> 0.673** across two forced revisions while cumulative ever-correct is
294
+ **0.847** ([arXiv:2607.24604](https://arxiv.org/abs/2607.24604)) — the agent
295
+ finds the fix and then destroys it. Aider hardcodes `max_reflections = 3`;
296
+ OpenHands' critic uses 3.
297
+
298
+ **Stop earlier on repetition, whatever the count says.** If an attempt produces
299
+ the same failure output as the previous attempt — the same failing test with the
300
+ same message, the same type error at the same site — do NOT spend the remaining
301
+ attempts. The counter cannot tell "converging slowly" from "stuck", and three
302
+ identical outputs cost the whole budget to learn what the second one already
303
+ said. Report the block instead, naming what repeated.
304
+
305
+
288
306
  **ROLLBACK POLICY**: If implementation fatally fails (e.g. tests still failing after 3 attempts or unresolvable compilation errors), you MUST run `git reset --hard` to clean the worktree before reporting the failure in Phase 6, unless explicitly instructed to leave it dirty.
289
307
 
290
308
  **5.5 Re-commit fixes if any:**
@@ -11,8 +11,8 @@ metadata:
11
11
  author: "MrCipherSmith"
12
12
  version: "1.0.0"
13
13
  category: "implementation"
14
+ compatible_harnesses: "cursor,codex,zed,opencode"
14
15
  license: "MIT"
15
- compatibility: "cursor,codex,zed,opencode"
16
16
  ---
17
17
 
18
18
  # Task Implementer
@@ -284,7 +284,25 @@ npm run build-storybook # Verify stories compile
284
284
  | Test failures | Fix failing tests, re-commit |
285
285
  | Story build failure | Fix story code, re-commit |
286
286
 
287
- Maximum 3 self-fix attempts per verification step.
287
+ Maximum 3 self-fix attempts per verification step.
288
+
289
+ Three, and it is the same three `job-orchestrator` and `flow-orchestrator`
290
+ use: one round bound, not four. *"The first three to four repair iterations
291
+ account for most achievable gains"*
292
+ ([arXiv:2607.05197](https://arxiv.org/abs/2607.05197)); correctness falls
293
+ **0.820 -> 0.673** across two forced revisions while cumulative ever-correct is
294
+ **0.847** ([arXiv:2607.24604](https://arxiv.org/abs/2607.24604)) — the agent
295
+ finds the fix and then destroys it. Aider hardcodes `max_reflections = 3`;
296
+ OpenHands' critic uses 3.
297
+
298
+ **Stop earlier on repetition, whatever the count says.** If an attempt produces
299
+ the same failure output as the previous attempt — the same failing test with the
300
+ same message, the same type error at the same site — do NOT spend the remaining
301
+ attempts. The counter cannot tell "converging slowly" from "stuck", and three
302
+ identical outputs cost the whole budget to learn what the second one already
303
+ said. Report the block instead, naming what repeated.
304
+
305
+
288
306
  **ROLLBACK POLICY**: If implementation fatally fails (e.g. tests still failing after 3 attempts or unresolvable compilation errors), you MUST run `git reset --hard` to clean the worktree before reporting the failure in Phase 6, unless explicitly instructed to leave it dirty.
289
307
 
290
308
  **5.5 Re-commit fixes if any:**
@@ -137,7 +137,7 @@
137
137
  "reviewer": {
138
138
  "type": "string",
139
139
  "description": "Which review skill found this",
140
- "examples": ["code-ai-review", "code-boss-review", "code-style-review"]
140
+ "examples": ["code-ai-review", "code-learned-review", "code-style-review"]
141
141
  }
142
142
  }
143
143
  },
@@ -5,7 +5,8 @@ description: >
5
5
  to extract purpose, structure, public API surface, patterns, and key dependencies.
6
6
  Use when: dispatched by autodoc-orchestrator Phase 2 (one instance per module).
7
7
  NOT for: direct user invocation.
8
- version: 1.0.0
8
+ metadata:
9
+ version: 1.0.0
9
10
  ---
10
11
 
11
12
  # autodoc-analyst