@bonesofspring/ai-rules 0.2.29 → 0.2.31

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 (536) hide show
  1. package/package.json +5 -1
  2. package/presets/_shared/core/agent-team/agent-artifact-contracts.md +6 -4
  3. package/presets/_shared/core/agent-team/agent-task-metrics.md +14 -1
  4. package/presets/_shared/core/agent-team/agent-team-orchestrator.md +3 -1
  5. package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +2 -2
  6. package/presets/claude/android-kotlin/agents/api-contract-reviewer.md +2 -2
  7. package/presets/claude/android-kotlin/agents/build-verifier.md +1 -1
  8. package/presets/claude/android-kotlin/agents/ci-investigator.md +2 -2
  9. package/presets/claude/android-kotlin/agents/code-reviewer.md +2 -2
  10. package/presets/claude/android-kotlin/agents/debugger.md +2 -2
  11. package/presets/claude/android-kotlin/agents/feature-developer.md +2 -2
  12. package/presets/claude/android-kotlin/agents/migration-specialist.md +2 -2
  13. package/presets/claude/android-kotlin/agents/mockup-reviewer.md +2 -2
  14. package/presets/claude/android-kotlin/agents/openspec-author.md +2 -2
  15. package/presets/claude/android-kotlin/agents/performance-auditor.md +2 -2
  16. package/presets/claude/android-kotlin/agents/qa-tester.md +2 -2
  17. package/presets/claude/android-kotlin/agents/security-reviewer.md +2 -2
  18. package/presets/claude/android-kotlin/agents/task-analyst.md +1 -1
  19. package/presets/claude/android-kotlin/agents/task-router.md +1 -1
  20. package/presets/claude/android-kotlin/agents/tech-writer.md +2 -2
  21. package/presets/claude/android-kotlin/agents/unit-test-generator.md +2 -2
  22. package/presets/claude/android-kotlin/agents/unit-test-healer.md +2 -2
  23. package/presets/claude/android-kotlin/agents/unit-test-planner.md +2 -2
  24. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  25. package/presets/claude/go/agents/build-verifier.md +2 -2
  26. package/presets/claude/go/agents/code-reviewer.md +2 -2
  27. package/presets/claude/go/agents/feature-developer.md +2 -2
  28. package/presets/claude/go/agents/openspec-author.md +2 -2
  29. package/presets/claude/go/agents/task-analyst.md +1 -1
  30. package/presets/claude/go/agents/task-router.md +1 -1
  31. package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  32. package/presets/claude/ios-swift/agents/build-verifier.md +2 -2
  33. package/presets/claude/ios-swift/agents/code-reviewer.md +2 -2
  34. package/presets/claude/ios-swift/agents/feature-developer.md +2 -2
  35. package/presets/claude/ios-swift/agents/mockup-reviewer.md +2 -2
  36. package/presets/claude/ios-swift/agents/openspec-author.md +2 -2
  37. package/presets/claude/ios-swift/agents/task-analyst.md +1 -1
  38. package/presets/claude/ios-swift/agents/task-router.md +1 -1
  39. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  40. package/presets/claude/java/agents/build-verifier.md +2 -2
  41. package/presets/claude/java/agents/code-reviewer.md +2 -2
  42. package/presets/claude/java/agents/feature-developer.md +2 -2
  43. package/presets/claude/java/agents/openspec-author.md +2 -2
  44. package/presets/claude/java/agents/task-analyst.md +1 -1
  45. package/presets/claude/java/agents/task-router.md +1 -1
  46. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  47. package/presets/claude/mcp-ts/agents/build-verifier.md +2 -2
  48. package/presets/claude/mcp-ts/agents/feature-developer.md +2 -2
  49. package/presets/claude/mcp-ts/agents/task-analyst.md +1 -1
  50. package/presets/claude/mcp-ts/agents/task-router.md +1 -1
  51. package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  52. package/presets/claude/next/agents/accessibility-reviewer.md +2 -2
  53. package/presets/claude/next/agents/api-contract-reviewer.md +2 -2
  54. package/presets/claude/next/agents/build-verifier.md +2 -2
  55. package/presets/claude/next/agents/ci-investigator.md +2 -2
  56. package/presets/claude/next/agents/code-reviewer.md +37 -2
  57. package/presets/claude/next/agents/debugger.md +2 -2
  58. package/presets/claude/next/agents/feature-developer.md +14 -2
  59. package/presets/claude/next/agents/migration-specialist.md +2 -2
  60. package/presets/claude/next/agents/mockup-reviewer.md +29 -3
  61. package/presets/claude/next/agents/openspec-author.md +2 -2
  62. package/presets/claude/next/agents/performance-auditor.md +2 -2
  63. package/presets/claude/next/agents/qa-tester.md +2 -2
  64. package/presets/claude/next/agents/security-reviewer.md +2 -2
  65. package/presets/claude/next/agents/solution-architect.md +2 -2
  66. package/presets/claude/next/agents/task-analyst.md +1 -1
  67. package/presets/claude/next/agents/task-router.md +1 -1
  68. package/presets/claude/next/agents/tech-writer.md +2 -2
  69. package/presets/claude/next/agents/unit-test-generator.md +2 -2
  70. package/presets/claude/next/agents/unit-test-healer.md +2 -2
  71. package/presets/claude/next/agents/unit-test-planner.md +2 -2
  72. package/presets/claude/next/hooks/chain-team-phases.sh +46 -1
  73. package/presets/claude/next/rules/README.md +2 -1
  74. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +17 -0
  75. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  76. package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +10 -0
  77. package/presets/claude/next/rules/tooling-and-review/mockup-review.md +9 -0
  78. package/presets/claude/next/rules/ui-and-accessibility/design-tokens-binding.md +42 -0
  79. package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +1 -0
  80. package/presets/claude/next/skills/code-review/SKILL.md +1 -0
  81. package/presets/claude/nuxt/agents/accessibility-reviewer.md +2 -2
  82. package/presets/claude/nuxt/agents/api-contract-reviewer.md +2 -2
  83. package/presets/claude/nuxt/agents/build-verifier.md +2 -2
  84. package/presets/claude/nuxt/agents/ci-investigator.md +2 -2
  85. package/presets/claude/nuxt/agents/code-reviewer.md +2 -2
  86. package/presets/claude/nuxt/agents/debugger.md +2 -2
  87. package/presets/claude/nuxt/agents/feature-developer.md +2 -2
  88. package/presets/claude/nuxt/agents/migration-specialist.md +2 -2
  89. package/presets/claude/nuxt/agents/mockup-reviewer.md +2 -2
  90. package/presets/claude/nuxt/agents/openspec-author.md +2 -2
  91. package/presets/claude/nuxt/agents/performance-auditor.md +2 -2
  92. package/presets/claude/nuxt/agents/qa-tester.md +2 -2
  93. package/presets/claude/nuxt/agents/security-reviewer.md +2 -2
  94. package/presets/claude/nuxt/agents/solution-architect.md +2 -2
  95. package/presets/claude/nuxt/agents/task-analyst.md +1 -1
  96. package/presets/claude/nuxt/agents/task-router.md +1 -1
  97. package/presets/claude/nuxt/agents/tech-writer.md +2 -2
  98. package/presets/claude/nuxt/agents/unit-test-generator.md +2 -2
  99. package/presets/claude/nuxt/agents/unit-test-healer.md +2 -2
  100. package/presets/claude/nuxt/agents/unit-test-planner.md +2 -2
  101. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  102. package/presets/claude/php-hexagonal/agents/build-verifier.md +2 -2
  103. package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -2
  104. package/presets/claude/php-hexagonal/agents/feature-developer.md +2 -2
  105. package/presets/claude/php-hexagonal/agents/openspec-author.md +2 -2
  106. package/presets/claude/php-hexagonal/agents/task-analyst.md +1 -1
  107. package/presets/claude/php-hexagonal/agents/task-router.md +1 -1
  108. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  109. package/presets/claude/php-laravel/agents/build-verifier.md +2 -2
  110. package/presets/claude/php-laravel/agents/code-reviewer.md +2 -2
  111. package/presets/claude/php-laravel/agents/feature-developer.md +2 -2
  112. package/presets/claude/php-laravel/agents/openspec-author.md +2 -2
  113. package/presets/claude/php-laravel/agents/task-analyst.md +1 -1
  114. package/presets/claude/php-laravel/agents/task-router.md +1 -1
  115. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  116. package/presets/claude/svelte/agents/accessibility-reviewer.md +2 -2
  117. package/presets/claude/svelte/agents/api-contract-reviewer.md +2 -2
  118. package/presets/claude/svelte/agents/build-verifier.md +2 -2
  119. package/presets/claude/svelte/agents/ci-investigator.md +2 -2
  120. package/presets/claude/svelte/agents/code-reviewer.md +2 -2
  121. package/presets/claude/svelte/agents/debugger.md +2 -2
  122. package/presets/claude/svelte/agents/feature-developer.md +2 -2
  123. package/presets/claude/svelte/agents/migration-specialist.md +2 -2
  124. package/presets/claude/svelte/agents/mockup-reviewer.md +2 -2
  125. package/presets/claude/svelte/agents/openspec-author.md +2 -2
  126. package/presets/claude/svelte/agents/performance-auditor.md +2 -2
  127. package/presets/claude/svelte/agents/qa-tester.md +2 -2
  128. package/presets/claude/svelte/agents/security-reviewer.md +2 -2
  129. package/presets/claude/svelte/agents/solution-architect.md +2 -2
  130. package/presets/claude/svelte/agents/task-analyst.md +1 -1
  131. package/presets/claude/svelte/agents/task-router.md +1 -1
  132. package/presets/claude/svelte/agents/tech-writer.md +2 -2
  133. package/presets/claude/svelte/agents/unit-test-generator.md +2 -2
  134. package/presets/claude/svelte/agents/unit-test-healer.md +2 -2
  135. package/presets/claude/svelte/agents/unit-test-planner.md +2 -2
  136. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  137. package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +2 -2
  138. package/presets/cursor/android-kotlin/agents/api-contract-reviewer.md +2 -2
  139. package/presets/cursor/android-kotlin/agents/build-verifier.md +1 -1
  140. package/presets/cursor/android-kotlin/agents/ci-investigator.md +2 -2
  141. package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -2
  142. package/presets/cursor/android-kotlin/agents/debugger.md +2 -2
  143. package/presets/cursor/android-kotlin/agents/feature-developer.md +2 -2
  144. package/presets/cursor/android-kotlin/agents/migration-specialist.md +2 -2
  145. package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +2 -2
  146. package/presets/cursor/android-kotlin/agents/openspec-author.md +2 -2
  147. package/presets/cursor/android-kotlin/agents/performance-auditor.md +2 -2
  148. package/presets/cursor/android-kotlin/agents/qa-tester.md +2 -2
  149. package/presets/cursor/android-kotlin/agents/security-reviewer.md +2 -2
  150. package/presets/cursor/android-kotlin/agents/task-analyst.md +1 -1
  151. package/presets/cursor/android-kotlin/agents/task-router.md +1 -1
  152. package/presets/cursor/android-kotlin/agents/tech-writer.md +2 -2
  153. package/presets/cursor/android-kotlin/agents/unit-test-generator.md +2 -2
  154. package/presets/cursor/android-kotlin/agents/unit-test-healer.md +2 -2
  155. package/presets/cursor/android-kotlin/agents/unit-test-planner.md +2 -2
  156. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +1 -1
  157. package/presets/cursor/go/agents/build-verifier.md +2 -2
  158. package/presets/cursor/go/agents/code-reviewer.md +2 -2
  159. package/presets/cursor/go/agents/feature-developer.md +2 -2
  160. package/presets/cursor/go/agents/openspec-author.md +2 -2
  161. package/presets/cursor/go/agents/task-analyst.md +1 -1
  162. package/presets/cursor/go/agents/task-router.md +1 -1
  163. package/presets/cursor/go/rules/agent-team-orchestrator.mdc +3 -1
  164. package/presets/cursor/ios-swift/agents/build-verifier.md +2 -2
  165. package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -2
  166. package/presets/cursor/ios-swift/agents/feature-developer.md +2 -2
  167. package/presets/cursor/ios-swift/agents/mockup-reviewer.md +2 -2
  168. package/presets/cursor/ios-swift/agents/openspec-author.md +2 -2
  169. package/presets/cursor/ios-swift/agents/task-analyst.md +1 -1
  170. package/presets/cursor/ios-swift/agents/task-router.md +1 -1
  171. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +1 -1
  172. package/presets/cursor/java/agents/build-verifier.md +2 -2
  173. package/presets/cursor/java/agents/code-reviewer.md +2 -2
  174. package/presets/cursor/java/agents/feature-developer.md +2 -2
  175. package/presets/cursor/java/agents/openspec-author.md +2 -2
  176. package/presets/cursor/java/agents/task-analyst.md +1 -1
  177. package/presets/cursor/java/agents/task-router.md +1 -1
  178. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +3 -1
  179. package/presets/cursor/mcp-ts/agents/build-verifier.md +2 -2
  180. package/presets/cursor/mcp-ts/agents/feature-developer.md +2 -2
  181. package/presets/cursor/mcp-ts/agents/task-analyst.md +1 -1
  182. package/presets/cursor/mcp-ts/agents/task-router.md +1 -1
  183. package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +3 -1
  184. package/presets/cursor/next/agents/accessibility-reviewer.md +2 -2
  185. package/presets/cursor/next/agents/api-contract-reviewer.md +2 -2
  186. package/presets/cursor/next/agents/build-verifier.md +2 -2
  187. package/presets/cursor/next/agents/ci-investigator.md +2 -2
  188. package/presets/cursor/next/agents/code-reviewer.md +37 -2
  189. package/presets/cursor/next/agents/debugger.md +2 -2
  190. package/presets/cursor/next/agents/feature-developer.md +24 -2
  191. package/presets/cursor/next/agents/migration-specialist.md +2 -2
  192. package/presets/cursor/next/agents/mockup-reviewer.md +29 -3
  193. package/presets/cursor/next/agents/openspec-author.md +2 -2
  194. package/presets/cursor/next/agents/performance-auditor.md +2 -2
  195. package/presets/cursor/next/agents/qa-tester.md +2 -2
  196. package/presets/cursor/next/agents/security-reviewer.md +2 -2
  197. package/presets/cursor/next/agents/solution-architect.md +2 -2
  198. package/presets/cursor/next/agents/task-analyst.md +1 -1
  199. package/presets/cursor/next/agents/task-router.md +1 -1
  200. package/presets/cursor/next/agents/tech-writer.md +2 -2
  201. package/presets/cursor/next/agents/unit-test-generator.md +2 -2
  202. package/presets/cursor/next/agents/unit-test-healer.md +2 -2
  203. package/presets/cursor/next/agents/unit-test-planner.md +2 -2
  204. package/presets/cursor/next/hooks/chain-team-phases.sh +46 -1
  205. package/presets/cursor/next/rules/README.md +3 -1
  206. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +3 -1
  207. package/presets/cursor/next/rules/code-review-mr.mdc +10 -0
  208. package/presets/cursor/next/rules/design-tokens-binding.mdc +41 -0
  209. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +17 -0
  210. package/presets/cursor/next/rules/mockup-review.mdc +9 -0
  211. package/presets/cursor/next/rules/react-ui.mdc +1 -0
  212. package/presets/cursor/next/skills/code-review/SKILL.md +1 -0
  213. package/presets/cursor/nuxt/agents/accessibility-reviewer.md +2 -2
  214. package/presets/cursor/nuxt/agents/api-contract-reviewer.md +2 -2
  215. package/presets/cursor/nuxt/agents/build-verifier.md +2 -2
  216. package/presets/cursor/nuxt/agents/ci-investigator.md +2 -2
  217. package/presets/cursor/nuxt/agents/code-reviewer.md +2 -2
  218. package/presets/cursor/nuxt/agents/debugger.md +2 -2
  219. package/presets/cursor/nuxt/agents/feature-developer.md +2 -2
  220. package/presets/cursor/nuxt/agents/migration-specialist.md +2 -2
  221. package/presets/cursor/nuxt/agents/mockup-reviewer.md +2 -2
  222. package/presets/cursor/nuxt/agents/openspec-author.md +2 -2
  223. package/presets/cursor/nuxt/agents/performance-auditor.md +2 -2
  224. package/presets/cursor/nuxt/agents/qa-tester.md +2 -2
  225. package/presets/cursor/nuxt/agents/security-reviewer.md +2 -2
  226. package/presets/cursor/nuxt/agents/solution-architect.md +2 -2
  227. package/presets/cursor/nuxt/agents/task-analyst.md +1 -1
  228. package/presets/cursor/nuxt/agents/task-router.md +1 -1
  229. package/presets/cursor/nuxt/agents/tech-writer.md +2 -2
  230. package/presets/cursor/nuxt/agents/unit-test-generator.md +2 -2
  231. package/presets/cursor/nuxt/agents/unit-test-healer.md +2 -2
  232. package/presets/cursor/nuxt/agents/unit-test-planner.md +2 -2
  233. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +3 -1
  234. package/presets/cursor/php-hexagonal/agents/build-verifier.md +2 -2
  235. package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -2
  236. package/presets/cursor/php-hexagonal/agents/feature-developer.md +2 -2
  237. package/presets/cursor/php-hexagonal/agents/openspec-author.md +2 -2
  238. package/presets/cursor/php-hexagonal/agents/task-analyst.md +1 -1
  239. package/presets/cursor/php-hexagonal/agents/task-router.md +1 -1
  240. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +3 -1
  241. package/presets/cursor/php-laravel/agents/build-verifier.md +2 -2
  242. package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -2
  243. package/presets/cursor/php-laravel/agents/feature-developer.md +2 -2
  244. package/presets/cursor/php-laravel/agents/openspec-author.md +2 -2
  245. package/presets/cursor/php-laravel/agents/task-analyst.md +1 -1
  246. package/presets/cursor/php-laravel/agents/task-router.md +1 -1
  247. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +3 -1
  248. package/presets/cursor/svelte/agents/accessibility-reviewer.md +2 -2
  249. package/presets/cursor/svelte/agents/api-contract-reviewer.md +2 -2
  250. package/presets/cursor/svelte/agents/build-verifier.md +2 -2
  251. package/presets/cursor/svelte/agents/ci-investigator.md +2 -2
  252. package/presets/cursor/svelte/agents/code-reviewer.md +2 -2
  253. package/presets/cursor/svelte/agents/debugger.md +2 -2
  254. package/presets/cursor/svelte/agents/feature-developer.md +2 -2
  255. package/presets/cursor/svelte/agents/migration-specialist.md +2 -2
  256. package/presets/cursor/svelte/agents/mockup-reviewer.md +2 -2
  257. package/presets/cursor/svelte/agents/openspec-author.md +2 -2
  258. package/presets/cursor/svelte/agents/performance-auditor.md +2 -2
  259. package/presets/cursor/svelte/agents/qa-tester.md +2 -2
  260. package/presets/cursor/svelte/agents/security-reviewer.md +2 -2
  261. package/presets/cursor/svelte/agents/solution-architect.md +2 -2
  262. package/presets/cursor/svelte/agents/task-analyst.md +1 -1
  263. package/presets/cursor/svelte/agents/task-router.md +1 -1
  264. package/presets/cursor/svelte/agents/tech-writer.md +2 -2
  265. package/presets/cursor/svelte/agents/unit-test-generator.md +2 -2
  266. package/presets/cursor/svelte/agents/unit-test-healer.md +2 -2
  267. package/presets/cursor/svelte/agents/unit-test-planner.md +2 -2
  268. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +3 -1
  269. package/presets/mavis/android-kotlin/agents/accessibility-reviewer.md +2 -2
  270. package/presets/mavis/android-kotlin/agents/api-contract-reviewer.md +2 -2
  271. package/presets/mavis/android-kotlin/agents/build-verifier.md +1 -1
  272. package/presets/mavis/android-kotlin/agents/ci-investigator.md +2 -2
  273. package/presets/mavis/android-kotlin/agents/code-reviewer.md +2 -2
  274. package/presets/mavis/android-kotlin/agents/debugger.md +2 -2
  275. package/presets/mavis/android-kotlin/agents/feature-developer.md +2 -2
  276. package/presets/mavis/android-kotlin/agents/migration-specialist.md +2 -2
  277. package/presets/mavis/android-kotlin/agents/mockup-reviewer.md +2 -2
  278. package/presets/mavis/android-kotlin/agents/openspec-author.md +2 -2
  279. package/presets/mavis/android-kotlin/agents/performance-auditor.md +2 -2
  280. package/presets/mavis/android-kotlin/agents/qa-tester.md +2 -2
  281. package/presets/mavis/android-kotlin/agents/security-reviewer.md +2 -2
  282. package/presets/mavis/android-kotlin/agents/task-analyst.md +1 -1
  283. package/presets/mavis/android-kotlin/agents/task-router.md +1 -1
  284. package/presets/mavis/android-kotlin/agents/tech-writer.md +2 -2
  285. package/presets/mavis/android-kotlin/agents/unit-test-generator.md +2 -2
  286. package/presets/mavis/android-kotlin/agents/unit-test-healer.md +2 -2
  287. package/presets/mavis/android-kotlin/agents/unit-test-planner.md +2 -2
  288. package/presets/mavis/android-kotlin/rules/agent-team-orchestrator.md +4 -1
  289. package/presets/mavis/go/agents/build-verifier.md +2 -2
  290. package/presets/mavis/go/agents/code-reviewer.md +2 -2
  291. package/presets/mavis/go/agents/feature-developer.md +2 -2
  292. package/presets/mavis/go/agents/openspec-author.md +2 -2
  293. package/presets/mavis/go/agents/task-analyst.md +1 -1
  294. package/presets/mavis/go/agents/task-router.md +1 -1
  295. package/presets/mavis/go/rules/agent-team-orchestrator.md +4 -1
  296. package/presets/mavis/ios-swift/agents/build-verifier.md +2 -2
  297. package/presets/mavis/ios-swift/agents/code-reviewer.md +2 -2
  298. package/presets/mavis/ios-swift/agents/feature-developer.md +2 -2
  299. package/presets/mavis/ios-swift/agents/mockup-reviewer.md +2 -2
  300. package/presets/mavis/ios-swift/agents/openspec-author.md +2 -2
  301. package/presets/mavis/ios-swift/agents/task-analyst.md +1 -1
  302. package/presets/mavis/ios-swift/agents/task-router.md +1 -1
  303. package/presets/mavis/ios-swift/rules/agent-team-orchestrator.md +4 -1
  304. package/presets/mavis/java/agents/build-verifier.md +2 -2
  305. package/presets/mavis/java/agents/code-reviewer.md +2 -2
  306. package/presets/mavis/java/agents/feature-developer.md +2 -2
  307. package/presets/mavis/java/agents/openspec-author.md +2 -2
  308. package/presets/mavis/java/agents/task-analyst.md +1 -1
  309. package/presets/mavis/java/agents/task-router.md +1 -1
  310. package/presets/mavis/java/rules/agent-team-orchestrator.md +4 -1
  311. package/presets/mavis/mcp-ts/agents/build-verifier.md +2 -2
  312. package/presets/mavis/mcp-ts/agents/feature-developer.md +2 -2
  313. package/presets/mavis/mcp-ts/agents/task-analyst.md +1 -1
  314. package/presets/mavis/mcp-ts/agents/task-router.md +1 -1
  315. package/presets/mavis/mcp-ts/rules/agent-team-orchestrator.md +4 -1
  316. package/presets/mavis/next/adapter-map.json +9 -1
  317. package/presets/mavis/next/agents/accessibility-reviewer.md +2 -2
  318. package/presets/mavis/next/agents/api-contract-reviewer.md +2 -2
  319. package/presets/mavis/next/agents/build-verifier.md +2 -2
  320. package/presets/mavis/next/agents/ci-investigator.md +2 -2
  321. package/presets/mavis/next/agents/code-reviewer.md +37 -2
  322. package/presets/mavis/next/agents/debugger.md +2 -2
  323. package/presets/mavis/next/agents/feature-developer.md +24 -2
  324. package/presets/mavis/next/agents/migration-specialist.md +2 -2
  325. package/presets/mavis/next/agents/mockup-reviewer.md +29 -3
  326. package/presets/mavis/next/agents/openspec-author.md +2 -2
  327. package/presets/mavis/next/agents/performance-auditor.md +2 -2
  328. package/presets/mavis/next/agents/qa-tester.md +2 -2
  329. package/presets/mavis/next/agents/security-reviewer.md +2 -2
  330. package/presets/mavis/next/agents/solution-architect.md +2 -2
  331. package/presets/mavis/next/agents/task-analyst.md +1 -1
  332. package/presets/mavis/next/agents/task-router.md +1 -1
  333. package/presets/mavis/next/agents/tech-writer.md +2 -2
  334. package/presets/mavis/next/agents/unit-test-generator.md +2 -2
  335. package/presets/mavis/next/agents/unit-test-healer.md +2 -2
  336. package/presets/mavis/next/agents/unit-test-planner.md +2 -2
  337. package/presets/mavis/next/hooks/chain-team-phases.sh +46 -1
  338. package/presets/mavis/next/rules/agent-team-orchestrator.md +4 -1
  339. package/presets/mavis/next/rules/code-review-mr.md +10 -0
  340. package/presets/mavis/next/rules/design-tokens-binding.md +35 -0
  341. package/presets/mavis/next/rules/feature-delivery-workflow.md +17 -0
  342. package/presets/mavis/next/rules/mockup-review.md +9 -0
  343. package/presets/mavis/next/rules/react-ui.md +1 -0
  344. package/presets/mavis/next/skills/code-review/SKILL.md +1 -0
  345. package/presets/mavis/nuxt/agents/accessibility-reviewer.md +2 -2
  346. package/presets/mavis/nuxt/agents/api-contract-reviewer.md +2 -2
  347. package/presets/mavis/nuxt/agents/build-verifier.md +2 -2
  348. package/presets/mavis/nuxt/agents/ci-investigator.md +2 -2
  349. package/presets/mavis/nuxt/agents/code-reviewer.md +2 -2
  350. package/presets/mavis/nuxt/agents/debugger.md +2 -2
  351. package/presets/mavis/nuxt/agents/feature-developer.md +2 -2
  352. package/presets/mavis/nuxt/agents/migration-specialist.md +2 -2
  353. package/presets/mavis/nuxt/agents/mockup-reviewer.md +2 -2
  354. package/presets/mavis/nuxt/agents/openspec-author.md +2 -2
  355. package/presets/mavis/nuxt/agents/performance-auditor.md +2 -2
  356. package/presets/mavis/nuxt/agents/qa-tester.md +2 -2
  357. package/presets/mavis/nuxt/agents/security-reviewer.md +2 -2
  358. package/presets/mavis/nuxt/agents/solution-architect.md +2 -2
  359. package/presets/mavis/nuxt/agents/task-analyst.md +1 -1
  360. package/presets/mavis/nuxt/agents/task-router.md +1 -1
  361. package/presets/mavis/nuxt/agents/tech-writer.md +2 -2
  362. package/presets/mavis/nuxt/agents/unit-test-generator.md +2 -2
  363. package/presets/mavis/nuxt/agents/unit-test-healer.md +2 -2
  364. package/presets/mavis/nuxt/agents/unit-test-planner.md +2 -2
  365. package/presets/mavis/nuxt/rules/agent-team-orchestrator.md +4 -1
  366. package/presets/mavis/php-hexagonal/agents/build-verifier.md +2 -2
  367. package/presets/mavis/php-hexagonal/agents/code-reviewer.md +2 -2
  368. package/presets/mavis/php-hexagonal/agents/feature-developer.md +2 -2
  369. package/presets/mavis/php-hexagonal/agents/openspec-author.md +2 -2
  370. package/presets/mavis/php-hexagonal/agents/task-analyst.md +1 -1
  371. package/presets/mavis/php-hexagonal/agents/task-router.md +1 -1
  372. package/presets/mavis/php-hexagonal/rules/agent-team-orchestrator.md +4 -1
  373. package/presets/mavis/php-laravel/agents/build-verifier.md +2 -2
  374. package/presets/mavis/php-laravel/agents/code-reviewer.md +2 -2
  375. package/presets/mavis/php-laravel/agents/feature-developer.md +2 -2
  376. package/presets/mavis/php-laravel/agents/openspec-author.md +2 -2
  377. package/presets/mavis/php-laravel/agents/task-analyst.md +1 -1
  378. package/presets/mavis/php-laravel/agents/task-router.md +1 -1
  379. package/presets/mavis/php-laravel/rules/agent-team-orchestrator.md +4 -1
  380. package/presets/mavis/svelte/agents/accessibility-reviewer.md +2 -2
  381. package/presets/mavis/svelte/agents/api-contract-reviewer.md +2 -2
  382. package/presets/mavis/svelte/agents/build-verifier.md +2 -2
  383. package/presets/mavis/svelte/agents/ci-investigator.md +2 -2
  384. package/presets/mavis/svelte/agents/code-reviewer.md +2 -2
  385. package/presets/mavis/svelte/agents/debugger.md +2 -2
  386. package/presets/mavis/svelte/agents/feature-developer.md +2 -2
  387. package/presets/mavis/svelte/agents/migration-specialist.md +2 -2
  388. package/presets/mavis/svelte/agents/mockup-reviewer.md +2 -2
  389. package/presets/mavis/svelte/agents/openspec-author.md +2 -2
  390. package/presets/mavis/svelte/agents/performance-auditor.md +2 -2
  391. package/presets/mavis/svelte/agents/qa-tester.md +2 -2
  392. package/presets/mavis/svelte/agents/security-reviewer.md +2 -2
  393. package/presets/mavis/svelte/agents/solution-architect.md +2 -2
  394. package/presets/mavis/svelte/agents/task-analyst.md +1 -1
  395. package/presets/mavis/svelte/agents/task-router.md +1 -1
  396. package/presets/mavis/svelte/agents/tech-writer.md +2 -2
  397. package/presets/mavis/svelte/agents/unit-test-generator.md +2 -2
  398. package/presets/mavis/svelte/agents/unit-test-healer.md +2 -2
  399. package/presets/mavis/svelte/agents/unit-test-planner.md +2 -2
  400. package/presets/mavis/svelte/rules/agent-team-orchestrator.md +4 -1
  401. package/presets/opencode/android-kotlin/agents/accessibility-reviewer.md +2 -2
  402. package/presets/opencode/android-kotlin/agents/api-contract-reviewer.md +2 -2
  403. package/presets/opencode/android-kotlin/agents/build-verifier.md +1 -1
  404. package/presets/opencode/android-kotlin/agents/ci-investigator.md +2 -2
  405. package/presets/opencode/android-kotlin/agents/code-reviewer.md +2 -2
  406. package/presets/opencode/android-kotlin/agents/debugger.md +2 -2
  407. package/presets/opencode/android-kotlin/agents/feature-developer.md +2 -2
  408. package/presets/opencode/android-kotlin/agents/migration-specialist.md +2 -2
  409. package/presets/opencode/android-kotlin/agents/mockup-reviewer.md +2 -2
  410. package/presets/opencode/android-kotlin/agents/openspec-author.md +2 -2
  411. package/presets/opencode/android-kotlin/agents/performance-auditor.md +2 -2
  412. package/presets/opencode/android-kotlin/agents/qa-tester.md +2 -2
  413. package/presets/opencode/android-kotlin/agents/security-reviewer.md +2 -2
  414. package/presets/opencode/android-kotlin/agents/task-analyst.md +1 -1
  415. package/presets/opencode/android-kotlin/agents/task-router.md +1 -1
  416. package/presets/opencode/android-kotlin/agents/tech-writer.md +2 -2
  417. package/presets/opencode/android-kotlin/agents/unit-test-generator.md +2 -2
  418. package/presets/opencode/android-kotlin/agents/unit-test-healer.md +2 -2
  419. package/presets/opencode/android-kotlin/agents/unit-test-planner.md +2 -2
  420. package/presets/opencode/android-kotlin/rules/agent-team-orchestrator.md +4 -1
  421. package/presets/opencode/go/agents/build-verifier.md +2 -2
  422. package/presets/opencode/go/agents/code-reviewer.md +2 -2
  423. package/presets/opencode/go/agents/feature-developer.md +2 -2
  424. package/presets/opencode/go/agents/openspec-author.md +2 -2
  425. package/presets/opencode/go/agents/task-analyst.md +1 -1
  426. package/presets/opencode/go/agents/task-router.md +1 -1
  427. package/presets/opencode/go/rules/agent-team-orchestrator.md +4 -1
  428. package/presets/opencode/ios-swift/agents/build-verifier.md +2 -2
  429. package/presets/opencode/ios-swift/agents/code-reviewer.md +2 -2
  430. package/presets/opencode/ios-swift/agents/feature-developer.md +2 -2
  431. package/presets/opencode/ios-swift/agents/mockup-reviewer.md +2 -2
  432. package/presets/opencode/ios-swift/agents/openspec-author.md +2 -2
  433. package/presets/opencode/ios-swift/agents/task-analyst.md +1 -1
  434. package/presets/opencode/ios-swift/agents/task-router.md +1 -1
  435. package/presets/opencode/ios-swift/rules/agent-team-orchestrator.md +4 -1
  436. package/presets/opencode/java/agents/build-verifier.md +2 -2
  437. package/presets/opencode/java/agents/code-reviewer.md +2 -2
  438. package/presets/opencode/java/agents/feature-developer.md +2 -2
  439. package/presets/opencode/java/agents/openspec-author.md +2 -2
  440. package/presets/opencode/java/agents/task-analyst.md +1 -1
  441. package/presets/opencode/java/agents/task-router.md +1 -1
  442. package/presets/opencode/java/rules/agent-team-orchestrator.md +4 -1
  443. package/presets/opencode/mcp-ts/agents/build-verifier.md +2 -2
  444. package/presets/opencode/mcp-ts/agents/feature-developer.md +2 -2
  445. package/presets/opencode/mcp-ts/agents/task-analyst.md +1 -1
  446. package/presets/opencode/mcp-ts/agents/task-router.md +1 -1
  447. package/presets/opencode/mcp-ts/rules/agent-team-orchestrator.md +4 -1
  448. package/presets/opencode/next/adapter-map.json +9 -1
  449. package/presets/opencode/next/agents/accessibility-reviewer.md +2 -2
  450. package/presets/opencode/next/agents/api-contract-reviewer.md +2 -2
  451. package/presets/opencode/next/agents/build-verifier.md +2 -2
  452. package/presets/opencode/next/agents/ci-investigator.md +2 -2
  453. package/presets/opencode/next/agents/code-reviewer.md +37 -2
  454. package/presets/opencode/next/agents/debugger.md +2 -2
  455. package/presets/opencode/next/agents/feature-developer.md +24 -2
  456. package/presets/opencode/next/agents/migration-specialist.md +2 -2
  457. package/presets/opencode/next/agents/mockup-reviewer.md +29 -3
  458. package/presets/opencode/next/agents/openspec-author.md +2 -2
  459. package/presets/opencode/next/agents/performance-auditor.md +2 -2
  460. package/presets/opencode/next/agents/qa-tester.md +2 -2
  461. package/presets/opencode/next/agents/security-reviewer.md +2 -2
  462. package/presets/opencode/next/agents/solution-architect.md +2 -2
  463. package/presets/opencode/next/agents/task-analyst.md +1 -1
  464. package/presets/opencode/next/agents/task-router.md +1 -1
  465. package/presets/opencode/next/agents/tech-writer.md +2 -2
  466. package/presets/opencode/next/agents/unit-test-generator.md +2 -2
  467. package/presets/opencode/next/agents/unit-test-healer.md +2 -2
  468. package/presets/opencode/next/agents/unit-test-planner.md +2 -2
  469. package/presets/opencode/next/hooks/chain-team-phases.sh +46 -1
  470. package/presets/opencode/next/rules/agent-team-orchestrator.md +4 -1
  471. package/presets/opencode/next/rules/code-review-mr.md +10 -0
  472. package/presets/opencode/next/rules/design-tokens-binding.md +35 -0
  473. package/presets/opencode/next/rules/feature-delivery-workflow.md +17 -0
  474. package/presets/opencode/next/rules/mockup-review.md +9 -0
  475. package/presets/opencode/next/rules/react-ui.md +1 -0
  476. package/presets/opencode/next/skills/code-review/SKILL.md +1 -0
  477. package/presets/opencode/nuxt/agents/accessibility-reviewer.md +2 -2
  478. package/presets/opencode/nuxt/agents/api-contract-reviewer.md +2 -2
  479. package/presets/opencode/nuxt/agents/build-verifier.md +2 -2
  480. package/presets/opencode/nuxt/agents/ci-investigator.md +2 -2
  481. package/presets/opencode/nuxt/agents/code-reviewer.md +2 -2
  482. package/presets/opencode/nuxt/agents/debugger.md +2 -2
  483. package/presets/opencode/nuxt/agents/feature-developer.md +2 -2
  484. package/presets/opencode/nuxt/agents/migration-specialist.md +2 -2
  485. package/presets/opencode/nuxt/agents/mockup-reviewer.md +2 -2
  486. package/presets/opencode/nuxt/agents/openspec-author.md +2 -2
  487. package/presets/opencode/nuxt/agents/performance-auditor.md +2 -2
  488. package/presets/opencode/nuxt/agents/qa-tester.md +2 -2
  489. package/presets/opencode/nuxt/agents/security-reviewer.md +2 -2
  490. package/presets/opencode/nuxt/agents/solution-architect.md +2 -2
  491. package/presets/opencode/nuxt/agents/task-analyst.md +1 -1
  492. package/presets/opencode/nuxt/agents/task-router.md +1 -1
  493. package/presets/opencode/nuxt/agents/tech-writer.md +2 -2
  494. package/presets/opencode/nuxt/agents/unit-test-generator.md +2 -2
  495. package/presets/opencode/nuxt/agents/unit-test-healer.md +2 -2
  496. package/presets/opencode/nuxt/agents/unit-test-planner.md +2 -2
  497. package/presets/opencode/nuxt/rules/agent-team-orchestrator.md +4 -1
  498. package/presets/opencode/php-hexagonal/agents/build-verifier.md +2 -2
  499. package/presets/opencode/php-hexagonal/agents/code-reviewer.md +2 -2
  500. package/presets/opencode/php-hexagonal/agents/feature-developer.md +2 -2
  501. package/presets/opencode/php-hexagonal/agents/openspec-author.md +2 -2
  502. package/presets/opencode/php-hexagonal/agents/task-analyst.md +1 -1
  503. package/presets/opencode/php-hexagonal/agents/task-router.md +1 -1
  504. package/presets/opencode/php-hexagonal/rules/agent-team-orchestrator.md +4 -1
  505. package/presets/opencode/php-laravel/agents/build-verifier.md +2 -2
  506. package/presets/opencode/php-laravel/agents/code-reviewer.md +2 -2
  507. package/presets/opencode/php-laravel/agents/feature-developer.md +2 -2
  508. package/presets/opencode/php-laravel/agents/openspec-author.md +2 -2
  509. package/presets/opencode/php-laravel/agents/task-analyst.md +1 -1
  510. package/presets/opencode/php-laravel/agents/task-router.md +1 -1
  511. package/presets/opencode/php-laravel/rules/agent-team-orchestrator.md +4 -1
  512. package/presets/opencode/svelte/agents/accessibility-reviewer.md +2 -2
  513. package/presets/opencode/svelte/agents/api-contract-reviewer.md +2 -2
  514. package/presets/opencode/svelte/agents/build-verifier.md +2 -2
  515. package/presets/opencode/svelte/agents/ci-investigator.md +2 -2
  516. package/presets/opencode/svelte/agents/code-reviewer.md +2 -2
  517. package/presets/opencode/svelte/agents/debugger.md +2 -2
  518. package/presets/opencode/svelte/agents/feature-developer.md +2 -2
  519. package/presets/opencode/svelte/agents/migration-specialist.md +2 -2
  520. package/presets/opencode/svelte/agents/mockup-reviewer.md +2 -2
  521. package/presets/opencode/svelte/agents/openspec-author.md +2 -2
  522. package/presets/opencode/svelte/agents/performance-auditor.md +2 -2
  523. package/presets/opencode/svelte/agents/qa-tester.md +2 -2
  524. package/presets/opencode/svelte/agents/security-reviewer.md +2 -2
  525. package/presets/opencode/svelte/agents/solution-architect.md +2 -2
  526. package/presets/opencode/svelte/agents/task-analyst.md +1 -1
  527. package/presets/opencode/svelte/agents/task-router.md +1 -1
  528. package/presets/opencode/svelte/agents/tech-writer.md +2 -2
  529. package/presets/opencode/svelte/agents/unit-test-generator.md +2 -2
  530. package/presets/opencode/svelte/agents/unit-test-healer.md +2 -2
  531. package/presets/opencode/svelte/agents/unit-test-planner.md +2 -2
  532. package/presets/opencode/svelte/rules/agent-team-orchestrator.md +4 -1
  533. package/scripts/fixtures/cli-golden/claude/next.json +11 -10
  534. package/scripts/fixtures/cli-golden/cursor/next.json +10 -9
  535. package/scripts/fixtures/cli-golden/mavis/next.json +9 -8
  536. package/scripts/fixtures/cli-golden/opencode/next.json +9 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bonesofspring/ai-rules",
3
- "version": "0.2.29",
3
+ "version": "0.2.31",
4
4
  "description": "Presets of Cursor, Claude, Mavis, and OpenCode rules/commands for Revy Ross personal use",
5
5
  "license": "MIT",
6
6
  "author": "Revy Ross",
@@ -68,5 +68,9 @@
68
68
  },
69
69
  "publishConfig": {
70
70
  "access": "public"
71
+ },
72
+ "devDependencies": {
73
+ "@commitlint/cli": "^21.2.3",
74
+ "@commitlint/config-conventional": "^21.2.3"
71
75
  }
72
76
  }
@@ -34,6 +34,8 @@ Markdown remains the narrative evidence. The manifest identifies authoritative i
34
34
  }
35
35
  ```
36
36
 
37
+ > **Schema field name — do not rename.** The top-level array is **`artifacts`**, not `entries`. The hook at `chain-team-phases.sh:readBoundReceiptOutcome` reads only `manifest.artifacts`; an upsert written under a top-level `entries` key is invisible to reconciliation and the step hangs in `awaiting_artifact_receipt`. Merge by stable `entry.id` **inside** the `artifacts` array. A `manifest.entries` key is a silent bug — the hook logs a `WARNING: manifest has unexpected 'entries' key; reading only 'artifacts' per schema` when it sees one.
38
+
37
39
  ### Required fields
38
40
 
39
41
  | Location | Field | Contract |
@@ -50,7 +52,7 @@ Markdown remains the narrative evidence. The manifest identifies authoritative i
50
52
  | artifact | `timestamps` | `createdAt`, `updatedAt`, and `completedAt` for terminal entries; ISO 8601 |
51
53
  | artifact | `receipt` | Required when `status` is terminal (`completed`, `blocked`, or `superseded`) |
52
54
 
53
- Unknown fields are ignored in schema v1 for forward compatibility. Producers must preserve entries and fields they do not own.
55
+ Unknown fields are ignored in schema v1 for forward compatibility. Producers must preserve items in `manifest.artifacts[]` and fields they do not own. A top-level `entries` key is not part of the schema and is treated as a bug by the hook.
54
56
 
55
57
  ## Context index conventions
56
58
 
@@ -79,8 +81,8 @@ A producer finishes its step by upserting only its owned artifact entry and term
79
81
 
80
82
  ## Ownership and writes
81
83
 
82
- - Agents own their output artifacts and their manifest entries/receipts. They merge by stable `id` and preserve all foreign entries.
83
- - The router owns `pipeline.json` and its routing manifest entry. The analyst owns analysis entries; implementers own implementation entries; reviewers and verifiers own their report entries.
84
+ - Agents own their output artifacts and their items in `manifest.artifacts[]` (with their receipts). They merge by stable `id` and preserve all foreign items.
85
+ - The router owns `pipeline.json` and its routing entry in `manifest.artifacts[]`. The analyst owns analysis entries; implementers own implementation entries; reviewers and verifiers own their report entries.
84
86
  - The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but do not rewrite `pipelineIndex`, `currentAgent`, `state`, gates, retry fields, active attempts, timestamps, or metrics.
85
87
  - On `subagentStop`, the hook reconciles the completing producer's attempt-bound or assigned-output receipt and maps `completed` / `blocked` / `changes_requested` / `validation_failed` onto `status.state` before metrics terminal events and retry/advance logic. Tasks without a readable manifest retain the host-completion fallback. Parent orchestrators must not start the next step until reconciliation lands.
86
88
  - A producer never edits another producer's receipt. Corrections create a new owned entry or supersede an earlier entry owned by the same producer.
@@ -118,7 +120,7 @@ A producer finishes its step by upserting only its owned artifact entry and term
118
120
  | `integration-test-*` | `integration-test-plan` / `integration-test-spec` / `integration-test-heal` | backend integration tests |
119
121
  | `xcuitest-test-*` | `xcuitest-plan` / `xcuitest-spec` / `xcuitest-heal` | iOS XCUITest plans/specs |
120
122
 
121
- Use these defaults unless a step's `artifactOutputId` / `artifactOutputIds` assigns a distinct owned ID (parallel reviewers must not share one `id`). `artifactInputIds` defaults to the applicable authoritative entries already present in the manifest.
123
+ Use these defaults unless a step's `artifactOutputId` / `artifactOutputIds` assigns a distinct owned ID (parallel reviewers must not share one `id`). `artifactInputIds` defaults to the applicable authoritative items already present in `manifest.artifacts[]`.
122
124
 
123
125
  > **Leakage note:** `openspec-author` ships only in presets that bundle an `openspec-author.md` agent. `mcp-ts` (no UI/contracts author) does **not** ship the agent file or the default entry — do not backfill it into mcp-ts hooks. UI-only agents (`accessibility-reviewer`, `mockup-reviewer`) must **not** appear in `DEFAULT_ARTIFACT_OUTPUT_IDS` for backend stacks (`go`, `java`, `php-*`, `mcp-ts`) even as dead ids — drop them when copying a hook from a UI preset.
124
126
 
@@ -16,7 +16,20 @@ Each pipeline run owns `<team>/tasks/<slug>/metrics.json`:
16
16
 
17
17
  `events` is append-only. A task is one `runId`; a subtask is one invocation of `pipeline.steps[i]`. Every invocation has an `attemptId`, including each member of a parallel step. Events inherit the immutable task dimensions rather than duplicating them.
18
18
 
19
- Allowed event types are `task_started`, `attempt_started`, `attempt_finished`, `retry_scheduled`, `attempt_skipped`, `human_gate_started`, `human_gate_ended`, `pipeline_parse_error`, and `task_completed`. Terminal outcomes are `completed`, `changes_requested`, `validation_failed`, `skipped`, `cancelled`, or `unknown`.
19
+ Allowed event types are `task_started`, `attempt_started`, `attempt_finished`, `retry_scheduled`, `attempt_skipped`, `human_gate_started`, `human_gate_ended`, `pipeline_parse_error`, and `task_completed`.
20
+
21
+ Outcome values, with their actual emission site:
22
+
23
+ | Outcome | Emitted by | Level |
24
+ |---------|-----------|-------|
25
+ | `completed` | `attempt_finished` when `status.state === 'completed'` (producer's terminal receipt) | per-attempt |
26
+ | `changes_requested` | `attempt_finished` when `status.state === 'changes_requested'` | per-attempt |
27
+ | `validation_failed` | `attempt_finished` when `status.state === 'validation_failed'` | per-attempt |
28
+ | `blocked` | `attempt_finished` when `status.state === 'blocked'` | per-attempt |
29
+ | `skipped` | `attempt_skipped` events for steps with `skipIf` that fired | per-step (`skipIf`) |
30
+ | `unknown` | `attempt_finished` when no terminal state and the producer has not emitted a receipt | per-attempt fallback |
31
+
32
+ The hook never writes `cancelled`; the previous version of this doc listed it, but the code does not produce it. Do not add a `cancelled` outcome — the pipeline halts on `blocked` or human-gate, it does not cancel. Aggregate `cancelled` as `blocked` in retro reports.
20
33
 
21
34
  ## Collection policy
22
35
 
@@ -103,7 +103,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Th
103
103
 
104
104
  - Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
105
105
  - Markdown remains detailed evidence; the manifest points to authoritative paths and records producer, status, timestamps, outcome, and evidence paths.
106
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
106
+ - Agents upsert only the items they own in `manifest.artifacts[]` and preserve all foreign items in that array. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges. The top-level array key is `artifacts` — not `entries`; see `agent-artifact-contracts.md` for the schema callout.
107
107
  - The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite unrelated state, gate, retry, attempt, timestamp, or metrics fields.
108
108
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
109
109
 
@@ -139,6 +139,8 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Th
139
139
  | `awaiting_approval` | Human gate; wait for `/task-continue` |
140
140
  | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
141
141
  | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
142
+ | `blocked` | Pipeline / step cannot proceed (e.g. `pipeline_parse_error`, completion of a parallel step whose producer's receipt was missing — see `agent-artifact-contracts.md` § Completion receipts) |
143
+ | `awaiting_artifact_receipt` | Producer stopped but the bound or assigned-output receipt was missing or stale; hook keeps the attempt active and does not advance. See `agent-artifact-contracts.md` (Schema field name + Receipt binding) for the silent-bug class that lands here. |
142
144
 
143
145
  On each `subagentStop`, the hook reconciles `status.state` from the completing producer's terminal `artifact-manifest.json` receipt (`completed` \| `changes_requested` \| `validation_failed`) when agents left lifecycle fields untouched. Parent orchestrators must wait for that handoff before invoking the next step.
144
146
 
@@ -71,8 +71,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
71
71
 
72
72
  ## Artifact contract
73
73
 
74
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation or UI diff scope, and prior review artifacts when present.
75
- - **Owned outputs:** `a11y-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `a11y-review`) and preserve all foreign entries.
74
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation or UI diff scope, and prior review artifacts when present.
75
+ - **Owned outputs:** `a11y-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `a11y-review`) and preserve all foreign items in `manifest.artifacts[]`.
76
76
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
77
77
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
78
78
 
@@ -75,8 +75,8 @@ Write the owned terminal receipt described under **Artifact contract**.
75
75
 
76
76
  ## Artifact contract
77
77
 
78
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
79
- - **Owned outputs:** `api-contract-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `api-contract-review`) and preserve all foreign entries.
78
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
79
+ - **Owned outputs:** `api-contract-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `api-contract-review`) and preserve all foreign items in `manifest.artifacts[]`.
80
80
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
81
81
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
82
82
 
@@ -93,7 +93,7 @@ Write the owned validation receipt (`completed` or `validation_failed`). Do not
93
93
  ## Artifact contract
94
94
 
95
95
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied.
96
- - **Owned outputs:** `validation-report.md`; upsert only the assigned manifest entry; preserve foreign entries.
96
+ - **Owned outputs:** `validation-report.md`; upsert only the entry in `manifest.artifacts[]` assigned to you; preserve foreign items in `manifest.artifacts[]`.
97
97
  - **Terminal receipt:** cover applicable AC/task IDs; emit `completed` or `validation_failed`.
98
98
  - **Shared state:** never mutate `status.json` or `metrics.json`.
99
99
 
@@ -95,8 +95,8 @@ If a Sentry/Datadog (or similar) MCP is ready and the task is a production error
95
95
 
96
96
  ## Artifact contract
97
97
 
98
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
99
- - **Owned outputs:** `ci-report.md` plus any minimal CI fix paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `ci-report`) and preserve all foreign entries.
98
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
99
+ - **Owned outputs:** `ci-report.md` plus any minimal CI fix paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `ci-report`) and preserve all foreign items in `manifest.artifacts[]`.
100
100
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
101
101
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
102
102
 
@@ -90,7 +90,7 @@ Do not mix this output with retrospective facilitation — keep review and retro
90
90
 
91
91
  ## Artifact contract
92
92
 
93
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation, validation evidence, and the scoped git diff.
94
- - **Owned outputs:** `review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign entries.
93
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation, validation evidence, and the scoped git diff.
94
+ - **Owned outputs:** `review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign items in `manifest.artifacts[]`.
95
95
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
96
96
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -97,8 +97,8 @@ If a Sentry/Datadog (or similar) MCP is ready and the task is a production error
97
97
 
98
98
  ## Artifact contract
99
99
 
100
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
101
- - **Owned outputs:** `debug-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `debug`) and preserve all foreign entries.
100
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
101
+ - **Owned outputs:** `debug-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `debug`) and preserve all foreign items in `manifest.artifacts[]`.
102
102
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
103
103
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
104
104
 
@@ -128,7 +128,7 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
128
128
 
129
129
  ## Artifact contract
130
130
 
131
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
132
- - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign entries.
131
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
132
+ - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign items in `manifest.artifacts[]`.
133
133
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
134
134
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -83,8 +83,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
83
83
 
84
84
  ## Artifact contract
85
85
 
86
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
87
- - **Owned outputs:** `migration-plan.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `migration-plan`) and preserve all foreign entries.
86
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
87
+ - **Owned outputs:** `migration-plan.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `migration-plan`) and preserve all foreign items in `manifest.artifacts[]`.
88
88
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
89
89
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
90
90
 
@@ -66,8 +66,8 @@ Standalone FAIL must **not** set `changes_requested`. Embedded FAIL is a FAIL-on
66
66
 
67
67
  ## Artifact contract
68
68
 
69
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for routing + analysis when present (standalone may have only the prompt + URL).
70
- - **Owned outputs:** `mockup-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign entries.
69
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for routing + analysis when present (standalone may have only the prompt + URL).
70
+ - **Owned outputs:** `mockup-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign items in `manifest.artifacts[]`.
71
71
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed`, `changes_requested`, or `blocked` per the table above. Bind it to the supplied `attemptId` when present.
72
72
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
73
73
 
@@ -136,8 +136,8 @@ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`),
136
136
 
137
137
  ## Artifact contract
138
138
 
139
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and available architecture/migration/review artifacts.
140
- - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign entries; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
139
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and available architecture/migration/review artifacts.
140
+ - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign items in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
141
141
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths under `openspec/changes/<change-id>/**`, attach `openspec validate <change-id> --type change --strict` exit code + deltas-only summary, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
142
142
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
143
143
 
@@ -74,8 +74,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
74
74
 
75
75
  ## Artifact contract
76
76
 
77
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief when present and the scoped git diff / screens under audit.
78
- - **Owned outputs:** `perf-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `perf-report`) and preserve all foreign entries.
77
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief when present and the scoped git diff / screens under audit.
78
+ - **Owned outputs:** `perf-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `perf-report`) and preserve all foreign items in `manifest.artifacts[]`.
79
79
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
80
80
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
81
81
 
@@ -68,8 +68,8 @@ Write the owned terminal receipt described under **Artifact contract**.
68
68
 
69
69
  ## Artifact contract
70
70
 
71
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
72
- - **Owned outputs:** updated JUnit / instrumentation tests and handoff summary; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `qa`) and preserve all foreign entries.
71
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
72
+ - **Owned outputs:** updated JUnit / instrumentation tests and handoff summary; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `qa`) and preserve all foreign items in `manifest.artifacts[]`.
73
73
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
74
74
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
75
75
 
@@ -70,8 +70,8 @@ PASS | PASS_WITH_NOTES | FAIL
70
70
 
71
71
  ## Artifact contract
72
72
 
73
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, prior `review.md` when present, and the scoped git diff.
74
- - **Owned outputs:** `security-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `security-review`) and preserve all foreign entries.
73
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, prior `review.md` when present, and the scoped git diff.
74
+ - **Owned outputs:** `security-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `security-review`) and preserve all foreign items in `manifest.artifacts[]`.
75
75
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
76
76
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
77
77
 
@@ -109,6 +109,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
109
109
  ## Artifact contract
110
110
 
111
111
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume `pipeline.json`, the manifest routing entry, user-approved decisions, and any authoritative architecture/approval entries.
112
- - **Owned outputs:** `brief.md` and `decomposition.md` (plus `ux-design.md` when produced); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
112
+ - **Owned outputs:** `brief.md` and `decomposition.md` (plus `ux-design.md` when produced); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign items in `manifest.artifacts[]`.
113
113
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
114
114
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -161,6 +161,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
161
161
  ## Artifact contract
162
162
 
163
163
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
164
- - **Owned outputs:** `pipeline.json` and the routing manifest entry; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign entries.
164
+ - **Owned outputs:** `pipeline.json` and the routing entry in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign items in `manifest.artifacts[]`.
165
165
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
166
166
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -74,8 +74,8 @@ Post-delivery: when behavior or public docs changed and `docs/specs/` is in play
74
74
 
75
75
  ## Artifact contract
76
76
 
77
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
78
- - **Owned outputs:** `documentation.md` (and Docs paths only if the task explicitly requests); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `documentation`) and preserve all foreign entries.
77
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
78
+ - **Owned outputs:** `documentation.md` (and Docs paths only if the task explicitly requests); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `documentation`) and preserve all foreign items in `manifest.artifacts[]`.
79
79
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
80
80
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
81
81
 
@@ -59,8 +59,8 @@ Write the owned terminal receipt described under **Artifact contract**.
59
59
 
60
60
  ## Artifact contract
61
61
 
62
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
63
- - **Owned outputs:** new/updated `*Test` sources under `src/test`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-tests`) and preserve all foreign entries.
62
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
63
+ - **Owned outputs:** new/updated `*Test` sources under `src/test`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-tests`) and preserve all foreign items in `manifest.artifacts[]`.
64
64
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
65
65
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
66
66
 
@@ -58,8 +58,8 @@ Write the owned terminal receipt described under **Artifact contract**.
58
58
 
59
59
  ## Artifact contract
60
60
 
61
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
62
- - **Owned outputs:** fixed test sources; optional `debug-report.md` when complex; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-test-heal`) and preserve all foreign entries.
61
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
62
+ - **Owned outputs:** fixed test sources; optional `debug-report.md` when complex; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-test-heal`) and preserve all foreign items in `manifest.artifacts[]`.
63
63
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
64
64
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
65
65
 
@@ -69,8 +69,8 @@ Write the owned terminal receipt described under **Artifact contract**.
69
69
 
70
70
  ## Artifact contract
71
71
 
72
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
73
- - **Owned outputs:** `unit-test-plan.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-test-plan`) and preserve all foreign entries.
72
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
73
+ - **Owned outputs:** `unit-test-plan.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-test-plan`) and preserve all foreign items in `manifest.artifacts[]`.
74
74
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
75
75
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
76
76
 
@@ -77,7 +77,8 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
77
77
 
78
78
  - Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
79
79
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
80
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
80
+ -
81
+ Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
81
82
  - The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite state, gate, retry, attempt, timestamp, or metrics fields.
82
83
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
83
84
 
@@ -65,8 +65,8 @@ Document PASS/FAIL in `validation-report.md`.
65
65
 
66
66
  ## Artifact contract
67
67
 
68
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation evidence, pipeline scope, and changed files.
69
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
68
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation evidence, pipeline scope, and changed files.
69
+ - **Owned outputs:** `validation-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign items in `manifest.artifacts[]`.
70
70
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `validation_failed`. Bind it to the supplied `attemptId` when present.
71
71
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
72
72
 
@@ -61,8 +61,8 @@ Write `.ai.local/team/tasks/<slug>/review.md` with verdict APPROVE | REQUEST_CHA
61
61
 
62
62
  ## Artifact contract
63
63
 
64
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation, validation evidence, and the scoped git diff.
65
- - **Owned outputs:** `review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign entries.
64
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation, validation evidence, and the scoped git diff.
65
+ - **Owned outputs:** `review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign items in `manifest.artifacts[]`.
66
66
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
67
67
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
68
68
 
@@ -115,8 +115,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
115
115
 
116
116
  ## Artifact contract
117
117
 
118
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
119
- - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign entries.
118
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
119
+ - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign items in `manifest.artifacts[]`.
120
120
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
121
121
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
122
122
 
@@ -136,8 +136,8 @@ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`),
136
136
 
137
137
  ## Artifact contract
138
138
 
139
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and available architecture/migration/review artifacts.
140
- - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign entries; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
139
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and available architecture/migration/review artifacts.
140
+ - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign items in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
141
141
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths under `openspec/changes/<change-id>/**`, attach `openspec validate <change-id> --type change --strict` exit code + deltas-only summary, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
142
142
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
143
143
 
@@ -88,6 +88,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
88
88
  ## Artifact contract
89
89
 
90
90
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume `pipeline.json`, the manifest routing entry, user-approved decisions, and any authoritative architecture/approval entries.
91
- - **Owned outputs:** `brief.md` and `decomposition.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
91
+ - **Owned outputs:** `brief.md` and `decomposition.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign items in `manifest.artifacts[]`.
92
92
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
93
93
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -150,6 +150,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
150
150
  ## Artifact contract
151
151
 
152
152
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
153
- - **Owned outputs:** `pipeline.json` and the routing manifest entry; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign entries.
153
+ - **Owned outputs:** `pipeline.json` and the routing entry in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign items in `manifest.artifacts[]`.
154
154
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
155
155
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -77,7 +77,8 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
77
77
 
78
78
  - Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
79
79
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
80
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
80
+ -
81
+ Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
81
82
  - The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite state, gate, retry, attempt, timestamp, or metrics fields.
82
83
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
83
84
 
@@ -115,6 +116,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
115
116
  | `awaiting_approval` | Human gate; wait for `/task-continue` |
116
117
  | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
117
118
  | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
119
+ | `blocked` | Pipeline / step cannot proceed (e.g. `pipeline_parse_error`, completion of a parallel step whose producer's receipt was missing — see `agent-artifact-contracts.md` § Completion receipts) |
120
+ | `awaiting_artifact_receipt` | Producer stopped but the bound or assigned-output receipt was missing or stale; hook keeps the attempt active and does not advance. See `agent-artifact-contracts.md` (Schema field name + Receipt binding) for the silent-bug class that lands here. |
118
121
 
119
122
  ## Pipeline step options
120
123
 
@@ -110,8 +110,8 @@ Write the owned validation receipt (`completed` or `validation_failed`). Do not
110
110
 
111
111
  ## Artifact contract
112
112
 
113
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation evidence, pipeline scope, and changed files.
114
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
113
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation evidence, pipeline scope, and changed files.
114
+ - **Owned outputs:** `validation-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign items in `manifest.artifacts[]`.
115
115
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `validation_failed`. Bind it to the supplied `attemptId` when present.
116
116
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
117
117
 
@@ -90,7 +90,7 @@ Do not mix this output with retrospective facilitation — keep review and retro
90
90
 
91
91
  ## Artifact contract
92
92
 
93
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation, validation evidence, and the scoped git diff.
94
- - **Owned outputs:** `review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign entries.
93
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation, validation evidence, and the scoped git diff.
94
+ - **Owned outputs:** `review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign items in `manifest.artifacts[]`.
95
95
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
96
96
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -127,7 +127,7 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
127
127
 
128
128
  ## Artifact contract
129
129
 
130
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
131
- - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign entries.
130
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
131
+ - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign items in `manifest.artifacts[]`.
132
132
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
133
133
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -66,8 +66,8 @@ Standalone FAIL must **not** set `changes_requested`. Embedded FAIL is a FAIL-on
66
66
 
67
67
  ## Artifact contract
68
68
 
69
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for routing + analysis when present (standalone may have only the prompt + URL).
70
- - **Owned outputs:** `mockup-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign entries.
69
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for routing + analysis when present (standalone may have only the prompt + URL).
70
+ - **Owned outputs:** `mockup-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign items in `manifest.artifacts[]`.
71
71
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed`, `changes_requested`, or `blocked` per the table above. Bind it to the supplied `attemptId` when present.
72
72
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
73
73
 
@@ -136,8 +136,8 @@ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`),
136
136
 
137
137
  ## Artifact contract
138
138
 
139
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and available architecture/migration/review artifacts.
140
- - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign entries; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
139
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and available architecture/migration/review artifacts.
140
+ - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign items in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
141
141
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths under `openspec/changes/<change-id>/**`, attach `openspec validate <change-id> --type change --strict` exit code + deltas-only summary, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
142
142
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
143
143
 
@@ -109,6 +109,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
109
109
  ## Artifact contract
110
110
 
111
111
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume `pipeline.json`, the manifest routing entry, user-approved decisions, and any authoritative architecture/approval entries.
112
- - **Owned outputs:** `brief.md` and `decomposition.md` (plus `ux-design.md` when produced); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
112
+ - **Owned outputs:** `brief.md` and `decomposition.md` (plus `ux-design.md` when produced); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign items in `manifest.artifacts[]`.
113
113
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
114
114
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -161,6 +161,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
161
161
  ## Artifact contract
162
162
 
163
163
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
164
- - **Owned outputs:** `pipeline.json` and the routing manifest entry; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign entries.
164
+ - **Owned outputs:** `pipeline.json` and the routing entry in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign items in `manifest.artifacts[]`.
165
165
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
166
166
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -77,7 +77,8 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
77
77
 
78
78
  - Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
79
79
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
80
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
80
+ -
81
+ Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
81
82
  - The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite state, gate, retry, attempt, timestamp, or metrics fields.
82
83
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
83
84
 
@@ -75,8 +75,8 @@ Document PASS/FAIL in `validation-report.md`.
75
75
 
76
76
  ## Artifact contract
77
77
 
78
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation evidence, pipeline scope, and changed files.
79
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
78
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation evidence, pipeline scope, and changed files.
79
+ - **Owned outputs:** `validation-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign items in `manifest.artifacts[]`.
80
80
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `validation_failed`. Bind it to the supplied `attemptId` when present.
81
81
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
82
82