@bonesofspring/ai-rules 0.2.30 → 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 (504) hide show
  1. package/package.json +1 -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 +2 -2
  57. package/presets/claude/next/agents/debugger.md +2 -2
  58. package/presets/claude/next/agents/feature-developer.md +2 -2
  59. package/presets/claude/next/agents/migration-specialist.md +2 -2
  60. package/presets/claude/next/agents/mockup-reviewer.md +2 -2
  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/tooling-and-review/agent-team-orchestrator.md +4 -1
  74. package/presets/claude/nuxt/agents/accessibility-reviewer.md +2 -2
  75. package/presets/claude/nuxt/agents/api-contract-reviewer.md +2 -2
  76. package/presets/claude/nuxt/agents/build-verifier.md +2 -2
  77. package/presets/claude/nuxt/agents/ci-investigator.md +2 -2
  78. package/presets/claude/nuxt/agents/code-reviewer.md +2 -2
  79. package/presets/claude/nuxt/agents/debugger.md +2 -2
  80. package/presets/claude/nuxt/agents/feature-developer.md +2 -2
  81. package/presets/claude/nuxt/agents/migration-specialist.md +2 -2
  82. package/presets/claude/nuxt/agents/mockup-reviewer.md +2 -2
  83. package/presets/claude/nuxt/agents/openspec-author.md +2 -2
  84. package/presets/claude/nuxt/agents/performance-auditor.md +2 -2
  85. package/presets/claude/nuxt/agents/qa-tester.md +2 -2
  86. package/presets/claude/nuxt/agents/security-reviewer.md +2 -2
  87. package/presets/claude/nuxt/agents/solution-architect.md +2 -2
  88. package/presets/claude/nuxt/agents/task-analyst.md +1 -1
  89. package/presets/claude/nuxt/agents/task-router.md +1 -1
  90. package/presets/claude/nuxt/agents/tech-writer.md +2 -2
  91. package/presets/claude/nuxt/agents/unit-test-generator.md +2 -2
  92. package/presets/claude/nuxt/agents/unit-test-healer.md +2 -2
  93. package/presets/claude/nuxt/agents/unit-test-planner.md +2 -2
  94. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  95. package/presets/claude/php-hexagonal/agents/build-verifier.md +2 -2
  96. package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -2
  97. package/presets/claude/php-hexagonal/agents/feature-developer.md +2 -2
  98. package/presets/claude/php-hexagonal/agents/openspec-author.md +2 -2
  99. package/presets/claude/php-hexagonal/agents/task-analyst.md +1 -1
  100. package/presets/claude/php-hexagonal/agents/task-router.md +1 -1
  101. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  102. package/presets/claude/php-laravel/agents/build-verifier.md +2 -2
  103. package/presets/claude/php-laravel/agents/code-reviewer.md +2 -2
  104. package/presets/claude/php-laravel/agents/feature-developer.md +2 -2
  105. package/presets/claude/php-laravel/agents/openspec-author.md +2 -2
  106. package/presets/claude/php-laravel/agents/task-analyst.md +1 -1
  107. package/presets/claude/php-laravel/agents/task-router.md +1 -1
  108. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  109. package/presets/claude/svelte/agents/accessibility-reviewer.md +2 -2
  110. package/presets/claude/svelte/agents/api-contract-reviewer.md +2 -2
  111. package/presets/claude/svelte/agents/build-verifier.md +2 -2
  112. package/presets/claude/svelte/agents/ci-investigator.md +2 -2
  113. package/presets/claude/svelte/agents/code-reviewer.md +2 -2
  114. package/presets/claude/svelte/agents/debugger.md +2 -2
  115. package/presets/claude/svelte/agents/feature-developer.md +2 -2
  116. package/presets/claude/svelte/agents/migration-specialist.md +2 -2
  117. package/presets/claude/svelte/agents/mockup-reviewer.md +2 -2
  118. package/presets/claude/svelte/agents/openspec-author.md +2 -2
  119. package/presets/claude/svelte/agents/performance-auditor.md +2 -2
  120. package/presets/claude/svelte/agents/qa-tester.md +2 -2
  121. package/presets/claude/svelte/agents/security-reviewer.md +2 -2
  122. package/presets/claude/svelte/agents/solution-architect.md +2 -2
  123. package/presets/claude/svelte/agents/task-analyst.md +1 -1
  124. package/presets/claude/svelte/agents/task-router.md +1 -1
  125. package/presets/claude/svelte/agents/tech-writer.md +2 -2
  126. package/presets/claude/svelte/agents/unit-test-generator.md +2 -2
  127. package/presets/claude/svelte/agents/unit-test-healer.md +2 -2
  128. package/presets/claude/svelte/agents/unit-test-planner.md +2 -2
  129. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  130. package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +2 -2
  131. package/presets/cursor/android-kotlin/agents/api-contract-reviewer.md +2 -2
  132. package/presets/cursor/android-kotlin/agents/build-verifier.md +1 -1
  133. package/presets/cursor/android-kotlin/agents/ci-investigator.md +2 -2
  134. package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -2
  135. package/presets/cursor/android-kotlin/agents/debugger.md +2 -2
  136. package/presets/cursor/android-kotlin/agents/feature-developer.md +2 -2
  137. package/presets/cursor/android-kotlin/agents/migration-specialist.md +2 -2
  138. package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +2 -2
  139. package/presets/cursor/android-kotlin/agents/openspec-author.md +2 -2
  140. package/presets/cursor/android-kotlin/agents/performance-auditor.md +2 -2
  141. package/presets/cursor/android-kotlin/agents/qa-tester.md +2 -2
  142. package/presets/cursor/android-kotlin/agents/security-reviewer.md +2 -2
  143. package/presets/cursor/android-kotlin/agents/task-analyst.md +1 -1
  144. package/presets/cursor/android-kotlin/agents/task-router.md +1 -1
  145. package/presets/cursor/android-kotlin/agents/tech-writer.md +2 -2
  146. package/presets/cursor/android-kotlin/agents/unit-test-generator.md +2 -2
  147. package/presets/cursor/android-kotlin/agents/unit-test-healer.md +2 -2
  148. package/presets/cursor/android-kotlin/agents/unit-test-planner.md +2 -2
  149. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +1 -1
  150. package/presets/cursor/go/agents/build-verifier.md +2 -2
  151. package/presets/cursor/go/agents/code-reviewer.md +2 -2
  152. package/presets/cursor/go/agents/feature-developer.md +2 -2
  153. package/presets/cursor/go/agents/openspec-author.md +2 -2
  154. package/presets/cursor/go/agents/task-analyst.md +1 -1
  155. package/presets/cursor/go/agents/task-router.md +1 -1
  156. package/presets/cursor/go/rules/agent-team-orchestrator.mdc +3 -1
  157. package/presets/cursor/ios-swift/agents/build-verifier.md +2 -2
  158. package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -2
  159. package/presets/cursor/ios-swift/agents/feature-developer.md +2 -2
  160. package/presets/cursor/ios-swift/agents/mockup-reviewer.md +2 -2
  161. package/presets/cursor/ios-swift/agents/openspec-author.md +2 -2
  162. package/presets/cursor/ios-swift/agents/task-analyst.md +1 -1
  163. package/presets/cursor/ios-swift/agents/task-router.md +1 -1
  164. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +1 -1
  165. package/presets/cursor/java/agents/build-verifier.md +2 -2
  166. package/presets/cursor/java/agents/code-reviewer.md +2 -2
  167. package/presets/cursor/java/agents/feature-developer.md +2 -2
  168. package/presets/cursor/java/agents/openspec-author.md +2 -2
  169. package/presets/cursor/java/agents/task-analyst.md +1 -1
  170. package/presets/cursor/java/agents/task-router.md +1 -1
  171. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +3 -1
  172. package/presets/cursor/mcp-ts/agents/build-verifier.md +2 -2
  173. package/presets/cursor/mcp-ts/agents/feature-developer.md +2 -2
  174. package/presets/cursor/mcp-ts/agents/task-analyst.md +1 -1
  175. package/presets/cursor/mcp-ts/agents/task-router.md +1 -1
  176. package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +3 -1
  177. package/presets/cursor/next/agents/accessibility-reviewer.md +2 -2
  178. package/presets/cursor/next/agents/api-contract-reviewer.md +2 -2
  179. package/presets/cursor/next/agents/build-verifier.md +2 -2
  180. package/presets/cursor/next/agents/ci-investigator.md +2 -2
  181. package/presets/cursor/next/agents/code-reviewer.md +2 -2
  182. package/presets/cursor/next/agents/debugger.md +2 -2
  183. package/presets/cursor/next/agents/feature-developer.md +2 -2
  184. package/presets/cursor/next/agents/migration-specialist.md +2 -2
  185. package/presets/cursor/next/agents/mockup-reviewer.md +2 -2
  186. package/presets/cursor/next/agents/openspec-author.md +2 -2
  187. package/presets/cursor/next/agents/performance-auditor.md +2 -2
  188. package/presets/cursor/next/agents/qa-tester.md +2 -2
  189. package/presets/cursor/next/agents/security-reviewer.md +2 -2
  190. package/presets/cursor/next/agents/solution-architect.md +2 -2
  191. package/presets/cursor/next/agents/task-analyst.md +1 -1
  192. package/presets/cursor/next/agents/task-router.md +1 -1
  193. package/presets/cursor/next/agents/tech-writer.md +2 -2
  194. package/presets/cursor/next/agents/unit-test-generator.md +2 -2
  195. package/presets/cursor/next/agents/unit-test-healer.md +2 -2
  196. package/presets/cursor/next/agents/unit-test-planner.md +2 -2
  197. package/presets/cursor/next/hooks/chain-team-phases.sh +46 -1
  198. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +3 -1
  199. package/presets/cursor/nuxt/agents/accessibility-reviewer.md +2 -2
  200. package/presets/cursor/nuxt/agents/api-contract-reviewer.md +2 -2
  201. package/presets/cursor/nuxt/agents/build-verifier.md +2 -2
  202. package/presets/cursor/nuxt/agents/ci-investigator.md +2 -2
  203. package/presets/cursor/nuxt/agents/code-reviewer.md +2 -2
  204. package/presets/cursor/nuxt/agents/debugger.md +2 -2
  205. package/presets/cursor/nuxt/agents/feature-developer.md +2 -2
  206. package/presets/cursor/nuxt/agents/migration-specialist.md +2 -2
  207. package/presets/cursor/nuxt/agents/mockup-reviewer.md +2 -2
  208. package/presets/cursor/nuxt/agents/openspec-author.md +2 -2
  209. package/presets/cursor/nuxt/agents/performance-auditor.md +2 -2
  210. package/presets/cursor/nuxt/agents/qa-tester.md +2 -2
  211. package/presets/cursor/nuxt/agents/security-reviewer.md +2 -2
  212. package/presets/cursor/nuxt/agents/solution-architect.md +2 -2
  213. package/presets/cursor/nuxt/agents/task-analyst.md +1 -1
  214. package/presets/cursor/nuxt/agents/task-router.md +1 -1
  215. package/presets/cursor/nuxt/agents/tech-writer.md +2 -2
  216. package/presets/cursor/nuxt/agents/unit-test-generator.md +2 -2
  217. package/presets/cursor/nuxt/agents/unit-test-healer.md +2 -2
  218. package/presets/cursor/nuxt/agents/unit-test-planner.md +2 -2
  219. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +3 -1
  220. package/presets/cursor/php-hexagonal/agents/build-verifier.md +2 -2
  221. package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -2
  222. package/presets/cursor/php-hexagonal/agents/feature-developer.md +2 -2
  223. package/presets/cursor/php-hexagonal/agents/openspec-author.md +2 -2
  224. package/presets/cursor/php-hexagonal/agents/task-analyst.md +1 -1
  225. package/presets/cursor/php-hexagonal/agents/task-router.md +1 -1
  226. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +3 -1
  227. package/presets/cursor/php-laravel/agents/build-verifier.md +2 -2
  228. package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -2
  229. package/presets/cursor/php-laravel/agents/feature-developer.md +2 -2
  230. package/presets/cursor/php-laravel/agents/openspec-author.md +2 -2
  231. package/presets/cursor/php-laravel/agents/task-analyst.md +1 -1
  232. package/presets/cursor/php-laravel/agents/task-router.md +1 -1
  233. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +3 -1
  234. package/presets/cursor/svelte/agents/accessibility-reviewer.md +2 -2
  235. package/presets/cursor/svelte/agents/api-contract-reviewer.md +2 -2
  236. package/presets/cursor/svelte/agents/build-verifier.md +2 -2
  237. package/presets/cursor/svelte/agents/ci-investigator.md +2 -2
  238. package/presets/cursor/svelte/agents/code-reviewer.md +2 -2
  239. package/presets/cursor/svelte/agents/debugger.md +2 -2
  240. package/presets/cursor/svelte/agents/feature-developer.md +2 -2
  241. package/presets/cursor/svelte/agents/migration-specialist.md +2 -2
  242. package/presets/cursor/svelte/agents/mockup-reviewer.md +2 -2
  243. package/presets/cursor/svelte/agents/openspec-author.md +2 -2
  244. package/presets/cursor/svelte/agents/performance-auditor.md +2 -2
  245. package/presets/cursor/svelte/agents/qa-tester.md +2 -2
  246. package/presets/cursor/svelte/agents/security-reviewer.md +2 -2
  247. package/presets/cursor/svelte/agents/solution-architect.md +2 -2
  248. package/presets/cursor/svelte/agents/task-analyst.md +1 -1
  249. package/presets/cursor/svelte/agents/task-router.md +1 -1
  250. package/presets/cursor/svelte/agents/tech-writer.md +2 -2
  251. package/presets/cursor/svelte/agents/unit-test-generator.md +2 -2
  252. package/presets/cursor/svelte/agents/unit-test-healer.md +2 -2
  253. package/presets/cursor/svelte/agents/unit-test-planner.md +2 -2
  254. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +3 -1
  255. package/presets/mavis/android-kotlin/agents/accessibility-reviewer.md +2 -2
  256. package/presets/mavis/android-kotlin/agents/api-contract-reviewer.md +2 -2
  257. package/presets/mavis/android-kotlin/agents/build-verifier.md +1 -1
  258. package/presets/mavis/android-kotlin/agents/ci-investigator.md +2 -2
  259. package/presets/mavis/android-kotlin/agents/code-reviewer.md +2 -2
  260. package/presets/mavis/android-kotlin/agents/debugger.md +2 -2
  261. package/presets/mavis/android-kotlin/agents/feature-developer.md +2 -2
  262. package/presets/mavis/android-kotlin/agents/migration-specialist.md +2 -2
  263. package/presets/mavis/android-kotlin/agents/mockup-reviewer.md +2 -2
  264. package/presets/mavis/android-kotlin/agents/openspec-author.md +2 -2
  265. package/presets/mavis/android-kotlin/agents/performance-auditor.md +2 -2
  266. package/presets/mavis/android-kotlin/agents/qa-tester.md +2 -2
  267. package/presets/mavis/android-kotlin/agents/security-reviewer.md +2 -2
  268. package/presets/mavis/android-kotlin/agents/task-analyst.md +1 -1
  269. package/presets/mavis/android-kotlin/agents/task-router.md +1 -1
  270. package/presets/mavis/android-kotlin/agents/tech-writer.md +2 -2
  271. package/presets/mavis/android-kotlin/agents/unit-test-generator.md +2 -2
  272. package/presets/mavis/android-kotlin/agents/unit-test-healer.md +2 -2
  273. package/presets/mavis/android-kotlin/agents/unit-test-planner.md +2 -2
  274. package/presets/mavis/android-kotlin/rules/agent-team-orchestrator.md +4 -1
  275. package/presets/mavis/go/agents/build-verifier.md +2 -2
  276. package/presets/mavis/go/agents/code-reviewer.md +2 -2
  277. package/presets/mavis/go/agents/feature-developer.md +2 -2
  278. package/presets/mavis/go/agents/openspec-author.md +2 -2
  279. package/presets/mavis/go/agents/task-analyst.md +1 -1
  280. package/presets/mavis/go/agents/task-router.md +1 -1
  281. package/presets/mavis/go/rules/agent-team-orchestrator.md +4 -1
  282. package/presets/mavis/ios-swift/agents/build-verifier.md +2 -2
  283. package/presets/mavis/ios-swift/agents/code-reviewer.md +2 -2
  284. package/presets/mavis/ios-swift/agents/feature-developer.md +2 -2
  285. package/presets/mavis/ios-swift/agents/mockup-reviewer.md +2 -2
  286. package/presets/mavis/ios-swift/agents/openspec-author.md +2 -2
  287. package/presets/mavis/ios-swift/agents/task-analyst.md +1 -1
  288. package/presets/mavis/ios-swift/agents/task-router.md +1 -1
  289. package/presets/mavis/ios-swift/rules/agent-team-orchestrator.md +4 -1
  290. package/presets/mavis/java/agents/build-verifier.md +2 -2
  291. package/presets/mavis/java/agents/code-reviewer.md +2 -2
  292. package/presets/mavis/java/agents/feature-developer.md +2 -2
  293. package/presets/mavis/java/agents/openspec-author.md +2 -2
  294. package/presets/mavis/java/agents/task-analyst.md +1 -1
  295. package/presets/mavis/java/agents/task-router.md +1 -1
  296. package/presets/mavis/java/rules/agent-team-orchestrator.md +4 -1
  297. package/presets/mavis/mcp-ts/agents/build-verifier.md +2 -2
  298. package/presets/mavis/mcp-ts/agents/feature-developer.md +2 -2
  299. package/presets/mavis/mcp-ts/agents/task-analyst.md +1 -1
  300. package/presets/mavis/mcp-ts/agents/task-router.md +1 -1
  301. package/presets/mavis/mcp-ts/rules/agent-team-orchestrator.md +4 -1
  302. package/presets/mavis/next/agents/accessibility-reviewer.md +2 -2
  303. package/presets/mavis/next/agents/api-contract-reviewer.md +2 -2
  304. package/presets/mavis/next/agents/build-verifier.md +2 -2
  305. package/presets/mavis/next/agents/ci-investigator.md +2 -2
  306. package/presets/mavis/next/agents/code-reviewer.md +2 -2
  307. package/presets/mavis/next/agents/debugger.md +2 -2
  308. package/presets/mavis/next/agents/feature-developer.md +2 -2
  309. package/presets/mavis/next/agents/migration-specialist.md +2 -2
  310. package/presets/mavis/next/agents/mockup-reviewer.md +2 -2
  311. package/presets/mavis/next/agents/openspec-author.md +2 -2
  312. package/presets/mavis/next/agents/performance-auditor.md +2 -2
  313. package/presets/mavis/next/agents/qa-tester.md +2 -2
  314. package/presets/mavis/next/agents/security-reviewer.md +2 -2
  315. package/presets/mavis/next/agents/solution-architect.md +2 -2
  316. package/presets/mavis/next/agents/task-analyst.md +1 -1
  317. package/presets/mavis/next/agents/task-router.md +1 -1
  318. package/presets/mavis/next/agents/tech-writer.md +2 -2
  319. package/presets/mavis/next/agents/unit-test-generator.md +2 -2
  320. package/presets/mavis/next/agents/unit-test-healer.md +2 -2
  321. package/presets/mavis/next/agents/unit-test-planner.md +2 -2
  322. package/presets/mavis/next/hooks/chain-team-phases.sh +46 -1
  323. package/presets/mavis/next/rules/agent-team-orchestrator.md +4 -1
  324. package/presets/mavis/nuxt/agents/accessibility-reviewer.md +2 -2
  325. package/presets/mavis/nuxt/agents/api-contract-reviewer.md +2 -2
  326. package/presets/mavis/nuxt/agents/build-verifier.md +2 -2
  327. package/presets/mavis/nuxt/agents/ci-investigator.md +2 -2
  328. package/presets/mavis/nuxt/agents/code-reviewer.md +2 -2
  329. package/presets/mavis/nuxt/agents/debugger.md +2 -2
  330. package/presets/mavis/nuxt/agents/feature-developer.md +2 -2
  331. package/presets/mavis/nuxt/agents/migration-specialist.md +2 -2
  332. package/presets/mavis/nuxt/agents/mockup-reviewer.md +2 -2
  333. package/presets/mavis/nuxt/agents/openspec-author.md +2 -2
  334. package/presets/mavis/nuxt/agents/performance-auditor.md +2 -2
  335. package/presets/mavis/nuxt/agents/qa-tester.md +2 -2
  336. package/presets/mavis/nuxt/agents/security-reviewer.md +2 -2
  337. package/presets/mavis/nuxt/agents/solution-architect.md +2 -2
  338. package/presets/mavis/nuxt/agents/task-analyst.md +1 -1
  339. package/presets/mavis/nuxt/agents/task-router.md +1 -1
  340. package/presets/mavis/nuxt/agents/tech-writer.md +2 -2
  341. package/presets/mavis/nuxt/agents/unit-test-generator.md +2 -2
  342. package/presets/mavis/nuxt/agents/unit-test-healer.md +2 -2
  343. package/presets/mavis/nuxt/agents/unit-test-planner.md +2 -2
  344. package/presets/mavis/nuxt/rules/agent-team-orchestrator.md +4 -1
  345. package/presets/mavis/php-hexagonal/agents/build-verifier.md +2 -2
  346. package/presets/mavis/php-hexagonal/agents/code-reviewer.md +2 -2
  347. package/presets/mavis/php-hexagonal/agents/feature-developer.md +2 -2
  348. package/presets/mavis/php-hexagonal/agents/openspec-author.md +2 -2
  349. package/presets/mavis/php-hexagonal/agents/task-analyst.md +1 -1
  350. package/presets/mavis/php-hexagonal/agents/task-router.md +1 -1
  351. package/presets/mavis/php-hexagonal/rules/agent-team-orchestrator.md +4 -1
  352. package/presets/mavis/php-laravel/agents/build-verifier.md +2 -2
  353. package/presets/mavis/php-laravel/agents/code-reviewer.md +2 -2
  354. package/presets/mavis/php-laravel/agents/feature-developer.md +2 -2
  355. package/presets/mavis/php-laravel/agents/openspec-author.md +2 -2
  356. package/presets/mavis/php-laravel/agents/task-analyst.md +1 -1
  357. package/presets/mavis/php-laravel/agents/task-router.md +1 -1
  358. package/presets/mavis/php-laravel/rules/agent-team-orchestrator.md +4 -1
  359. package/presets/mavis/svelte/agents/accessibility-reviewer.md +2 -2
  360. package/presets/mavis/svelte/agents/api-contract-reviewer.md +2 -2
  361. package/presets/mavis/svelte/agents/build-verifier.md +2 -2
  362. package/presets/mavis/svelte/agents/ci-investigator.md +2 -2
  363. package/presets/mavis/svelte/agents/code-reviewer.md +2 -2
  364. package/presets/mavis/svelte/agents/debugger.md +2 -2
  365. package/presets/mavis/svelte/agents/feature-developer.md +2 -2
  366. package/presets/mavis/svelte/agents/migration-specialist.md +2 -2
  367. package/presets/mavis/svelte/agents/mockup-reviewer.md +2 -2
  368. package/presets/mavis/svelte/agents/openspec-author.md +2 -2
  369. package/presets/mavis/svelte/agents/performance-auditor.md +2 -2
  370. package/presets/mavis/svelte/agents/qa-tester.md +2 -2
  371. package/presets/mavis/svelte/agents/security-reviewer.md +2 -2
  372. package/presets/mavis/svelte/agents/solution-architect.md +2 -2
  373. package/presets/mavis/svelte/agents/task-analyst.md +1 -1
  374. package/presets/mavis/svelte/agents/task-router.md +1 -1
  375. package/presets/mavis/svelte/agents/tech-writer.md +2 -2
  376. package/presets/mavis/svelte/agents/unit-test-generator.md +2 -2
  377. package/presets/mavis/svelte/agents/unit-test-healer.md +2 -2
  378. package/presets/mavis/svelte/agents/unit-test-planner.md +2 -2
  379. package/presets/mavis/svelte/rules/agent-team-orchestrator.md +4 -1
  380. package/presets/opencode/android-kotlin/agents/accessibility-reviewer.md +2 -2
  381. package/presets/opencode/android-kotlin/agents/api-contract-reviewer.md +2 -2
  382. package/presets/opencode/android-kotlin/agents/build-verifier.md +1 -1
  383. package/presets/opencode/android-kotlin/agents/ci-investigator.md +2 -2
  384. package/presets/opencode/android-kotlin/agents/code-reviewer.md +2 -2
  385. package/presets/opencode/android-kotlin/agents/debugger.md +2 -2
  386. package/presets/opencode/android-kotlin/agents/feature-developer.md +2 -2
  387. package/presets/opencode/android-kotlin/agents/migration-specialist.md +2 -2
  388. package/presets/opencode/android-kotlin/agents/mockup-reviewer.md +2 -2
  389. package/presets/opencode/android-kotlin/agents/openspec-author.md +2 -2
  390. package/presets/opencode/android-kotlin/agents/performance-auditor.md +2 -2
  391. package/presets/opencode/android-kotlin/agents/qa-tester.md +2 -2
  392. package/presets/opencode/android-kotlin/agents/security-reviewer.md +2 -2
  393. package/presets/opencode/android-kotlin/agents/task-analyst.md +1 -1
  394. package/presets/opencode/android-kotlin/agents/task-router.md +1 -1
  395. package/presets/opencode/android-kotlin/agents/tech-writer.md +2 -2
  396. package/presets/opencode/android-kotlin/agents/unit-test-generator.md +2 -2
  397. package/presets/opencode/android-kotlin/agents/unit-test-healer.md +2 -2
  398. package/presets/opencode/android-kotlin/agents/unit-test-planner.md +2 -2
  399. package/presets/opencode/android-kotlin/rules/agent-team-orchestrator.md +4 -1
  400. package/presets/opencode/go/agents/build-verifier.md +2 -2
  401. package/presets/opencode/go/agents/code-reviewer.md +2 -2
  402. package/presets/opencode/go/agents/feature-developer.md +2 -2
  403. package/presets/opencode/go/agents/openspec-author.md +2 -2
  404. package/presets/opencode/go/agents/task-analyst.md +1 -1
  405. package/presets/opencode/go/agents/task-router.md +1 -1
  406. package/presets/opencode/go/rules/agent-team-orchestrator.md +4 -1
  407. package/presets/opencode/ios-swift/agents/build-verifier.md +2 -2
  408. package/presets/opencode/ios-swift/agents/code-reviewer.md +2 -2
  409. package/presets/opencode/ios-swift/agents/feature-developer.md +2 -2
  410. package/presets/opencode/ios-swift/agents/mockup-reviewer.md +2 -2
  411. package/presets/opencode/ios-swift/agents/openspec-author.md +2 -2
  412. package/presets/opencode/ios-swift/agents/task-analyst.md +1 -1
  413. package/presets/opencode/ios-swift/agents/task-router.md +1 -1
  414. package/presets/opencode/ios-swift/rules/agent-team-orchestrator.md +4 -1
  415. package/presets/opencode/java/agents/build-verifier.md +2 -2
  416. package/presets/opencode/java/agents/code-reviewer.md +2 -2
  417. package/presets/opencode/java/agents/feature-developer.md +2 -2
  418. package/presets/opencode/java/agents/openspec-author.md +2 -2
  419. package/presets/opencode/java/agents/task-analyst.md +1 -1
  420. package/presets/opencode/java/agents/task-router.md +1 -1
  421. package/presets/opencode/java/rules/agent-team-orchestrator.md +4 -1
  422. package/presets/opencode/mcp-ts/agents/build-verifier.md +2 -2
  423. package/presets/opencode/mcp-ts/agents/feature-developer.md +2 -2
  424. package/presets/opencode/mcp-ts/agents/task-analyst.md +1 -1
  425. package/presets/opencode/mcp-ts/agents/task-router.md +1 -1
  426. package/presets/opencode/mcp-ts/rules/agent-team-orchestrator.md +4 -1
  427. package/presets/opencode/next/agents/accessibility-reviewer.md +2 -2
  428. package/presets/opencode/next/agents/api-contract-reviewer.md +2 -2
  429. package/presets/opencode/next/agents/build-verifier.md +2 -2
  430. package/presets/opencode/next/agents/ci-investigator.md +2 -2
  431. package/presets/opencode/next/agents/code-reviewer.md +2 -2
  432. package/presets/opencode/next/agents/debugger.md +2 -2
  433. package/presets/opencode/next/agents/feature-developer.md +2 -2
  434. package/presets/opencode/next/agents/migration-specialist.md +2 -2
  435. package/presets/opencode/next/agents/mockup-reviewer.md +2 -2
  436. package/presets/opencode/next/agents/openspec-author.md +2 -2
  437. package/presets/opencode/next/agents/performance-auditor.md +2 -2
  438. package/presets/opencode/next/agents/qa-tester.md +2 -2
  439. package/presets/opencode/next/agents/security-reviewer.md +2 -2
  440. package/presets/opencode/next/agents/solution-architect.md +2 -2
  441. package/presets/opencode/next/agents/task-analyst.md +1 -1
  442. package/presets/opencode/next/agents/task-router.md +1 -1
  443. package/presets/opencode/next/agents/tech-writer.md +2 -2
  444. package/presets/opencode/next/agents/unit-test-generator.md +2 -2
  445. package/presets/opencode/next/agents/unit-test-healer.md +2 -2
  446. package/presets/opencode/next/agents/unit-test-planner.md +2 -2
  447. package/presets/opencode/next/hooks/chain-team-phases.sh +46 -1
  448. package/presets/opencode/next/rules/agent-team-orchestrator.md +4 -1
  449. package/presets/opencode/nuxt/agents/accessibility-reviewer.md +2 -2
  450. package/presets/opencode/nuxt/agents/api-contract-reviewer.md +2 -2
  451. package/presets/opencode/nuxt/agents/build-verifier.md +2 -2
  452. package/presets/opencode/nuxt/agents/ci-investigator.md +2 -2
  453. package/presets/opencode/nuxt/agents/code-reviewer.md +2 -2
  454. package/presets/opencode/nuxt/agents/debugger.md +2 -2
  455. package/presets/opencode/nuxt/agents/feature-developer.md +2 -2
  456. package/presets/opencode/nuxt/agents/migration-specialist.md +2 -2
  457. package/presets/opencode/nuxt/agents/mockup-reviewer.md +2 -2
  458. package/presets/opencode/nuxt/agents/openspec-author.md +2 -2
  459. package/presets/opencode/nuxt/agents/performance-auditor.md +2 -2
  460. package/presets/opencode/nuxt/agents/qa-tester.md +2 -2
  461. package/presets/opencode/nuxt/agents/security-reviewer.md +2 -2
  462. package/presets/opencode/nuxt/agents/solution-architect.md +2 -2
  463. package/presets/opencode/nuxt/agents/task-analyst.md +1 -1
  464. package/presets/opencode/nuxt/agents/task-router.md +1 -1
  465. package/presets/opencode/nuxt/agents/tech-writer.md +2 -2
  466. package/presets/opencode/nuxt/agents/unit-test-generator.md +2 -2
  467. package/presets/opencode/nuxt/agents/unit-test-healer.md +2 -2
  468. package/presets/opencode/nuxt/agents/unit-test-planner.md +2 -2
  469. package/presets/opencode/nuxt/rules/agent-team-orchestrator.md +4 -1
  470. package/presets/opencode/php-hexagonal/agents/build-verifier.md +2 -2
  471. package/presets/opencode/php-hexagonal/agents/code-reviewer.md +2 -2
  472. package/presets/opencode/php-hexagonal/agents/feature-developer.md +2 -2
  473. package/presets/opencode/php-hexagonal/agents/openspec-author.md +2 -2
  474. package/presets/opencode/php-hexagonal/agents/task-analyst.md +1 -1
  475. package/presets/opencode/php-hexagonal/agents/task-router.md +1 -1
  476. package/presets/opencode/php-hexagonal/rules/agent-team-orchestrator.md +4 -1
  477. package/presets/opencode/php-laravel/agents/build-verifier.md +2 -2
  478. package/presets/opencode/php-laravel/agents/code-reviewer.md +2 -2
  479. package/presets/opencode/php-laravel/agents/feature-developer.md +2 -2
  480. package/presets/opencode/php-laravel/agents/openspec-author.md +2 -2
  481. package/presets/opencode/php-laravel/agents/task-analyst.md +1 -1
  482. package/presets/opencode/php-laravel/agents/task-router.md +1 -1
  483. package/presets/opencode/php-laravel/rules/agent-team-orchestrator.md +4 -1
  484. package/presets/opencode/svelte/agents/accessibility-reviewer.md +2 -2
  485. package/presets/opencode/svelte/agents/api-contract-reviewer.md +2 -2
  486. package/presets/opencode/svelte/agents/build-verifier.md +2 -2
  487. package/presets/opencode/svelte/agents/ci-investigator.md +2 -2
  488. package/presets/opencode/svelte/agents/code-reviewer.md +2 -2
  489. package/presets/opencode/svelte/agents/debugger.md +2 -2
  490. package/presets/opencode/svelte/agents/feature-developer.md +2 -2
  491. package/presets/opencode/svelte/agents/migration-specialist.md +2 -2
  492. package/presets/opencode/svelte/agents/mockup-reviewer.md +2 -2
  493. package/presets/opencode/svelte/agents/openspec-author.md +2 -2
  494. package/presets/opencode/svelte/agents/performance-auditor.md +2 -2
  495. package/presets/opencode/svelte/agents/qa-tester.md +2 -2
  496. package/presets/opencode/svelte/agents/security-reviewer.md +2 -2
  497. package/presets/opencode/svelte/agents/solution-architect.md +2 -2
  498. package/presets/opencode/svelte/agents/task-analyst.md +1 -1
  499. package/presets/opencode/svelte/agents/task-router.md +1 -1
  500. package/presets/opencode/svelte/agents/tech-writer.md +2 -2
  501. package/presets/opencode/svelte/agents/unit-test-generator.md +2 -2
  502. package/presets/opencode/svelte/agents/unit-test-healer.md +2 -2
  503. package/presets/opencode/svelte/agents/unit-test-planner.md +2 -2
  504. package/presets/opencode/svelte/rules/agent-team-orchestrator.md +4 -1
@@ -74,7 +74,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
74
74
 
75
75
  - 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.
76
76
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
77
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
77
+ - 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.
78
78
  - 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.
79
79
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
80
80
 
@@ -58,8 +58,8 @@ Document PASS/FAIL in `validation-report.md`.
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/decomposition, implementation evidence, pipeline scope, and changed files.
62
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) 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/decomposition, implementation evidence, pipeline scope, and changed files.
62
+ - **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[]`.
63
63
  - **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.
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
 
@@ -45,8 +45,8 @@ Write `.ai.local/team/tasks/<slug>/review.md` with verdict APPROVE | REQUEST_CHA
45
45
 
46
46
  ## Artifact contract
47
47
 
48
- - **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.
49
- - **Owned outputs:** `review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign entries.
48
+ - **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.
49
+ - **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[]`.
50
50
  - **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.
51
51
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
52
52
 
@@ -86,8 +86,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
86
86
 
87
87
  ## Artifact contract
88
88
 
89
- - **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.
90
- - **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.
89
+ - **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.
90
+ - **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[]`.
91
91
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
92
92
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
93
93
 
@@ -122,8 +122,8 @@ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`),
122
122
 
123
123
  ## Artifact contract
124
124
 
125
- - **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.
126
- - **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`).
125
+ - **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.
126
+ - **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`).
127
127
  - **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.
128
128
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
129
129
 
@@ -73,6 +73,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
73
73
  ## Artifact contract
74
74
 
75
75
  - **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.
76
- - **Owned outputs:** `brief.md` and `decomposition.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
76
+ - **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[]`.
77
77
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
78
78
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -135,6 +135,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
135
135
  ## Artifact contract
136
136
 
137
137
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
138
- - **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.
138
+ - **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[]`.
139
139
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
140
140
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -72,7 +72,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
72
72
 
73
73
  - 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.
74
74
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
75
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
75
+ - 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.
76
76
  - 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.
77
77
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
78
78
 
@@ -110,6 +110,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
110
110
  | `awaiting_approval` | Human gate; wait for `/task-continue` |
111
111
  | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
112
112
  | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
113
+ | `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) |
114
+ | `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. |
113
115
 
114
116
  ## Pipeline step options
115
117
 
@@ -52,8 +52,8 @@ Document PASS/FAIL in `validation-report.md`. Soft leakage output:
52
52
 
53
53
  ## Artifact contract
54
54
 
55
- - **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.
56
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
55
+ - **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.
56
+ - **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[]`.
57
57
  - **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.
58
58
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
59
59
 
@@ -85,8 +85,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
85
85
 
86
86
  ## Artifact contract
87
87
 
88
- - **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.
89
- - **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.
88
+ - **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.
89
+ - **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[]`.
90
90
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
91
91
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
92
92
 
@@ -75,6 +75,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
75
75
  ## Artifact contract
76
76
 
77
77
  - **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.
78
- - **Owned outputs:** `brief.md` and `decomposition.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
78
+ - **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[]`.
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.
@@ -131,6 +131,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
131
131
  ## Artifact contract
132
132
 
133
133
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
134
- - **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.
134
+ - **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[]`.
135
135
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
136
136
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -72,7 +72,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
72
72
 
73
73
  - 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.
74
74
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
75
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
75
+ - 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.
76
76
  - 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.
77
77
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
78
78
 
@@ -110,6 +110,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
110
110
  | `awaiting_approval` | Human gate; wait for `/task-continue` |
111
111
  | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
112
112
  | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
113
+ | `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) |
114
+ | `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. |
113
115
 
114
116
  ## Pipeline step options
115
117
 
@@ -58,8 +58,8 @@ Shipped browser split: Playwright MCP for e2e specs/selectors; Chrome DevTools M
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/decomposition, implementation or UI diff scope, and prior review artifacts when present.
62
- - **Owned outputs:** `a11y-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `a11y-review`) 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/decomposition, implementation or UI diff scope, and prior review artifacts when present.
62
+ - **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[]`.
63
63
  - **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.
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
 
@@ -54,8 +54,8 @@ For feature-developer before or during implementation.
54
54
 
55
55
  ## Artifact contract
56
56
 
57
- - **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, architecture when present, and changed types/API/mocks against the contract docs.
58
- - **Owned outputs:** `api-contract-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `api-contract-review`) and preserve all foreign entries.
57
+ - **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, architecture when present, and changed types/API/mocks against the contract docs.
58
+ - **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[]`.
59
59
  - **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.
60
60
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
61
61
 
@@ -113,7 +113,7 @@ Do not fix code — report only. Do not advance to code-reviewer until PASS.
113
113
 
114
114
  ## Artifact contract
115
115
 
116
- - **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.
117
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
116
+ - **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.
117
+ - **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[]`.
118
118
  - **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.
119
119
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -57,8 +57,8 @@ If a Sentry/Datadog (or similar) MCP is ready and the task is a production error
57
57
 
58
58
  ## Artifact contract
59
59
 
60
- - **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 when present, failing check context, and prior validation/debug artifacts.
61
- - **Owned outputs:** `ci-report.md` plus any minimal fix paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `ci`) and preserve all foreign entries.
60
+ - **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 when present, failing check context, and prior validation/debug artifacts.
61
+ - **Owned outputs:** `ci-report.md` plus any minimal fix paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `ci`) and preserve all foreign items in `manifest.artifacts[]`.
62
62
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
63
63
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
64
64
 
@@ -97,7 +97,7 @@ Do not mix this output with retrospective facilitation — keep review and retro
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/decomposition, implementation, validation evidence, and the scoped git diff.
101
- - **Owned outputs:** `review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `review`) 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/decomposition, implementation, validation evidence, and the scoped git diff.
101
+ - **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[]`.
102
102
  - **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.
103
103
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -64,8 +64,8 @@ If a Sentry/Datadog (or similar) MCP is ready and the task is a production error
64
64
 
65
65
  ## Artifact contract
66
66
 
67
- - **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 when present, failing evidence, and related prior artifacts.
68
- - **Owned outputs:** `debug-report.md` plus any minimal fix paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `debug`) and preserve all foreign entries.
67
+ - **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 when present, failing evidence, and related prior artifacts.
68
+ - **Owned outputs:** `debug-report.md` plus any minimal fix paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `debug`) and preserve all foreign items in `manifest.artifacts[]`.
69
69
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
70
70
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
71
71
 
@@ -124,7 +124,7 @@ Shipped browser split: Playwright MCP for e2e specs/selectors; Chrome DevTools M
124
124
 
125
125
  ## Artifact contract
126
126
 
127
- - **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.
128
- - **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.
127
+ - **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.
128
+ - **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[]`.
129
129
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
130
130
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -62,8 +62,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
62
62
 
63
63
  ## Artifact contract
64
64
 
65
- - **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 stack/version context from the repo.
66
- - **Owned outputs:** `migration-plan.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `migration-plan`) and preserve all foreign entries.
65
+ - **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 stack/version context from the repo.
66
+ - **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[]`.
67
67
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
68
68
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
69
69
 
@@ -78,8 +78,8 @@ Standalone FAIL must **not** set `changes_requested`. Embedded FAIL is a FAIL-on
78
78
 
79
79
  ## Artifact contract
80
80
 
81
- - **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).
82
- - **Owned outputs:** `mockup-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign entries.
81
+ - **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).
82
+ - **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[]`.
83
83
  - **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.
84
84
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
85
85
 
@@ -122,8 +122,8 @@ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`),
122
122
 
123
123
  ## Artifact contract
124
124
 
125
- - **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.
126
- - **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`).
125
+ - **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.
126
+ - **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`).
127
127
  - **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.
128
128
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
129
129
 
@@ -61,8 +61,8 @@ If Chrome DevTools MCP is ready and the app is running, use it for console/netwo
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 when present and the scoped git diff / routes under audit.
65
- - **Owned outputs:** `perf-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `perf-report`) 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 when present and the scoped git diff / routes under audit.
65
+ - **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[]`.
66
66
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. 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
 
@@ -38,8 +38,8 @@ When the task is mostly e2e, prefer invoking the dedicated `playwright-test-plan
38
38
 
39
39
  ## Artifact contract
40
40
 
41
- - **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, reviewer notes when present, and prior implementation/validation artifacts.
42
- - **Owned outputs:** changed/added test paths (and any QA notes written under the slug dir); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `qa-tester`) and preserve all foreign entries.
41
+ - **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, reviewer notes when present, and prior implementation/validation artifacts.
42
+ - **Owned outputs:** changed/added test paths (and any QA notes written under the slug dir); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `qa-tester`) and preserve all foreign items in `manifest.artifacts[]`.
43
43
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
44
44
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
45
45
 
@@ -51,8 +51,8 @@ PASS | PASS_WITH_NOTES | FAIL
51
51
 
52
52
  ## Artifact contract
53
53
 
54
- - **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.
55
- - **Owned outputs:** `security-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `security-review`) and preserve all foreign entries.
54
+ - **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.
55
+ - **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[]`.
56
56
  - **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.
57
57
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
58
58
 
@@ -61,8 +61,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
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 and applicable prior analysis artifacts.
65
- - **Owned outputs:** `architecture.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `architecture`) 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 and applicable prior analysis artifacts.
65
+ - **Owned outputs:** `architecture.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `architecture`) 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 `blocked`. 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
 
@@ -168,6 +168,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
168
168
  ## Artifact contract
169
169
 
170
170
  - **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.
171
- - **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.
171
+ - **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[]`.
172
172
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
173
173
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -180,6 +180,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
180
180
  ## Artifact contract
181
181
 
182
182
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
183
- - **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.
183
+ - **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[]`.
184
184
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
185
185
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -54,8 +54,8 @@ Post-delivery: when behavior or public docs changed and `docs/specs/` is in play
54
54
 
55
55
  ## Artifact contract
56
56
 
57
- - **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.
58
- - **Owned outputs:** `documentation.md` (and any explicitly requested docs paths); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `documentation`) and preserve all foreign entries.
57
+ - **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.
58
+ - **Owned outputs:** `documentation.md` (and any explicitly requested docs paths); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `documentation`) and preserve all foreign items in `manifest.artifacts[]`.
59
59
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
60
60
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
61
61
 
@@ -28,8 +28,8 @@ Run affected unit tests from `app/` when feasible. Report files changed, command
28
28
 
29
29
  ## Artifact contract
30
30
 
31
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `unit-test-plan.md`, brief/decomposition when present, and target modules.
32
- - **Owned outputs:** generated/updated `*.spec.ts` / `*.spec.tsx` paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-test-generator`) and preserve all foreign entries.
31
+ - **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 `unit-test-plan.md`, brief/decomposition when present, and target modules.
32
+ - **Owned outputs:** generated/updated `*.spec.ts` / `*.spec.tsx` paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-test-generator`) and preserve all foreign items in `manifest.artifacts[]`.
33
33
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
34
34
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
35
35
 
@@ -29,8 +29,8 @@ Report root cause, files changed, validation result, and remaining risk.
29
29
 
30
30
  ## Artifact contract
31
31
 
32
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for failing test evidence, `unit-test-plan.md` when present, and recent diff.
33
- - **Owned outputs:** healed `*.spec.ts` / `*.spec.tsx` paths (and minimal production fixes only when evidenced); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-test-healer`) and preserve all foreign entries.
32
+ - **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 failing test evidence, `unit-test-plan.md` when present, and recent diff.
33
+ - **Owned outputs:** healed `*.spec.ts` / `*.spec.tsx` paths (and minimal production fixes only when evidenced); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-test-healer`) and preserve all foreign items in `manifest.artifacts[]`.
34
34
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
35
35
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
36
36
 
@@ -49,8 +49,8 @@ Test titles in the plan must follow Russian capitalization rules from `tests-uni
49
49
 
50
50
  ## Artifact contract
51
51
 
52
- - **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 target modules under `app/src/**`.
53
- - **Owned outputs:** `unit-test-plan.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-test-planner`) and preserve all foreign entries.
52
+ - **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 target modules under `app/src/**`.
53
+ - **Owned outputs:** `unit-test-plan.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-test-planner`) and preserve all foreign items in `manifest.artifacts[]`.
54
54
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
55
55
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
56
56
 
@@ -119,7 +119,21 @@ function mutateMetrics(mutator) {
119
119
  try { metrics = JSON.parse(fs.readFileSync(METRICS_PATH, 'utf8')); } catch {
120
120
  const runId = status.metricsRunId || `${slug}-${Date.now()}-${Math.random().toString(16).slice(2)}`;
121
121
  status.metricsRunId = runId;
122
- metrics = { schemaVersion: 1, task: { runId, slug, preset: 'ai-rules', stack: STACK, platform: PLATFORM, intent: status.intent || 'unknown', profile: 'unknown' }, events: [] };
122
+ // Resolve profile from pipeline.json (preferred) or status.json, falling back to 'unknown'.
123
+ // The router/agent must never write profile into status.json — pipeline.json is the SoT.
124
+ let profile = 'unknown';
125
+ try {
126
+ if (fs.existsSync(pipelinePath)) {
127
+ const pipe = JSON.parse(fs.readFileSync(pipelinePath, 'utf8'));
128
+ if (pipe && (pipe.profile === 'light' || pipe.profile === 'standard' || pipe.profile === 'full')) {
129
+ profile = pipe.profile;
130
+ }
131
+ }
132
+ } catch {}
133
+ if (profile === 'unknown' && (status.profile === 'light' || status.profile === 'standard' || status.profile === 'full')) {
134
+ profile = status.profile;
135
+ }
136
+ metrics = { schemaVersion: 1, task: { runId, slug, preset: 'ai-rules', stack: STACK, platform: PLATFORM, intent: status.intent || 'unknown', profile }, events: [] };
123
137
  metrics.events.push({ eventId: `${runId}:task_started`, type: 'task_started', at: now, source: 'hook', attributionConfidence: 'high' });
124
138
  }
125
139
  mutator(metrics);
@@ -205,9 +219,33 @@ function readBoundReceiptOutcome(agent, step, resolved) {
205
219
  if (!fs.existsSync(manifestPath)) return { outcome: null, receiptRequired: false };
206
220
  try {
207
221
  const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
222
+ // Guard: the schema key is `artifacts` (see agent-artifact-contracts.md). A top-level
223
+ // `entries` key is a silent bug — producer wrote to a wrong field, hook would not
224
+ // see the receipt, and the step hangs in `awaiting_artifact_receipt`. Warn loudly.
225
+ if (manifest && typeof manifest === 'object' && !Array.isArray(manifest.artifacts) && Array.isArray(manifest.entries)) {
226
+ process.stderr.write(`WARNING: ${manifestPath} has top-level "entries" but no "artifacts" array; reading only "artifacts" per schema. The producer likely upserted into the wrong key. See agent-artifact-contracts.md (Schema field name).` + '\n');
227
+ } else if (manifest && typeof manifest === 'object' && Array.isArray(manifest.entries) && Array.isArray(manifest.artifacts)) {
228
+ process.stderr.write(`WARNING: ${manifestPath} has both "artifacts" and "entries" keys; reading only "artifacts" per schema. Foreign "entries" content is ignored.` + '\n');
229
+ }
208
230
  const artifacts = Array.isArray(manifest.artifacts) ? manifest.artifacts : [];
209
231
  const expectedOutputId = artifactOutputIdFor(step, agent);
210
232
  const attemptStartedAt = Date.parse(resolved.entry.startedAt);
233
+ // Pre-scan: warn on the silent-bug classes the filter below would otherwise drop.
234
+ // A receipt with a non-matching attemptId is dropped silently; without this warning,
235
+ // the step hangs in `awaiting_artifact_receipt` with no signal of why. Same for
236
+ // receipts whose terminal timestamp is older than the active attempt (stale retry).
237
+ const activeIds = new Set(Object.keys(status.activeAttempts || {}));
238
+ for (const entry of artifacts) {
239
+ if (!entry || entry.producer !== agent || !entry.receipt || typeof entry.receipt.outcome !== 'string') continue;
240
+ const rid = entry.receipt.attemptId;
241
+ if (typeof rid === 'string' && rid !== resolved.attemptId && !activeIds.has(rid)) {
242
+ process.stderr.write(`WARNING: ${manifestPath} receipt for producer "${agent}" id "${entry.id}" carries attemptId "${rid}" that does not match the active attempt "${resolved.attemptId}". The receipt is being dropped; step will hang in \`awaiting_artifact_receipt\` unless the producer retries. Common cause: agent reused an attemptId from a prior failed attempt. See agent-artifact-contracts.md (Receipt binding).` + '\n');
243
+ }
244
+ const terminalAt = Date.parse(entry.timestamps?.completedAt || entry.timestamps?.updatedAt || '');
245
+ if (Number.isFinite(attemptStartedAt) && Number.isFinite(terminalAt) && terminalAt < attemptStartedAt) {
246
+ process.stderr.write(`WARNING: ${manifestPath} receipt for producer "${agent}" id "${entry.id}" has timestamps.completedAt older than the active attempt's startedAt. Likely a stale receipt from a previous attempt; it is being dropped. See agent-artifact-contracts.md (Receipt binding).` + '\n');
247
+ }
248
+ }
211
249
  const owned = artifacts
212
250
  .filter((entry) => {
213
251
  if (!entry || entry.producer !== agent || !entry.receipt || typeof entry.receipt.outcome !== 'string') return false;
@@ -222,6 +260,13 @@ function readBoundReceiptOutcome(agent, step, resolved) {
222
260
  const tb = Date.parse(b.timestamps?.completedAt || b.timestamps?.updatedAt || 0) || 0;
223
261
  return tb - ta;
224
262
  });
263
+ // Bonus: warn if the active attempt's receipts all lack attemptId in a non-parallel step.
264
+ // The orchestrator always provides attemptId, so a missing one means the agent dropped it
265
+ // (model output, JSON.stringify omission, etc.). boundByOutput still binds the receipt by
266
+ // expectedOutputId, so this is not fatal — but it is a contract violation worth flagging.
267
+ if (owned.length > 0 && owned[0].receipt.attemptId == null && !(step && step.parallel && Array.isArray(getStepAgents(step)) && getStepAgents(step).length > 1)) {
268
+ process.stderr.write(`WARNING: ${manifestPath} receipt for producer "${agent}" id "${owned[0].id}" lacks entry.receipt.attemptId on a non-parallel step. The receipt is bound by output-id fallback; the agent should always include the attemptId the orchestrator provides. See agent-artifact-contracts.md (Receipt binding).` + '\n');
269
+ }
225
270
  return { outcome: owned[0]?.receipt?.outcome || null, receiptRequired: true };
226
271
  } catch {
227
272
  return { outcome: null, receiptRequired: false };
@@ -95,7 +95,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
95
95
 
96
96
  - 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.
97
97
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
98
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
98
+ - 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.
99
99
  - 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.
100
100
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
101
101
 
@@ -133,6 +133,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
133
133
  | `awaiting_approval` | Human gate; wait for `/task-continue` |
134
134
  | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
135
135
  | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
136
+ | `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) |
137
+ | `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. |
136
138
 
137
139
  ## Pipeline step options
138
140
 
@@ -58,8 +58,8 @@ Shipped browser split: Playwright MCP for e2e specs/selectors; Chrome DevTools M
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/decomposition, implementation or UI diff scope, and prior review artifacts when present.
62
- - **Owned outputs:** `a11y-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `a11y-review`) 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/decomposition, implementation or UI diff scope, and prior review artifacts when present.
62
+ - **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[]`.
63
63
  - **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.
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
 
@@ -54,8 +54,8 @@ For feature-developer before or during implementation.
54
54
 
55
55
  ## Artifact contract
56
56
 
57
- - **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, architecture when present, and changed types/API/mocks against the contract docs.
58
- - **Owned outputs:** `api-contract-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `api-contract-review`) and preserve all foreign entries.
57
+ - **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, architecture when present, and changed types/API/mocks against the contract docs.
58
+ - **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[]`.
59
59
  - **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.
60
60
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
61
61
 
@@ -101,7 +101,7 @@ Do not fix code — report only. Do not advance to code-reviewer until PASS.
101
101
 
102
102
  ## Artifact contract
103
103
 
104
- - **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.
105
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
104
+ - **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.
105
+ - **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[]`.
106
106
  - **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.
107
107
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.