ai-delivery-workflow 0.3.0 → 0.5.0

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 (357) hide show
  1. package/README.md +42 -16
  2. package/bin/ai-delivery.mjs +181 -6
  3. package/bin/benchmark-autonomy.mjs +14 -6
  4. package/bin/release-check.mjs +10 -3
  5. package/docs/CLI-PARAMETER-REFERENCE.zh-CN.md +159 -17
  6. package/docs/CODEGRAPH-INTEGRATION.zh-CN.md +89 -0
  7. package/docs/DUAL-REPOSITORY-WORKSPACE.zh-CN.md +15 -2
  8. package/docs/EVOLUTION-MAINTENANCE.zh-CN.md +7 -7
  9. package/docs/EVOLUTION-USER-GUIDE.zh-CN.md +2 -2
  10. package/docs/FILE-REFERENCE.zh-CN.md +119 -46
  11. package/docs/MAINTENANCE-VERIFICATION.zh-CN.md +2 -2
  12. package/docs/MOCK-SYSTEM.zh-CN.md +141 -0
  13. package/docs/NPM-RELEASE-MANAGEMENT.zh-CN.md +2 -1
  14. package/docs/PROJECT-MANUAL.zh-CN.md +175 -98
  15. package/docs/PROTOTYPE-MIGRATION.zh-CN.md +164 -0
  16. package/docs/STATE-CLI-MAINTENANCE.zh-CN.md +35 -17
  17. package/docs/STATE-CLI-USER-GUIDE.zh-CN.md +115 -39
  18. package/docs/VIEWER-MAINTENANCE.zh-CN.md +101 -324
  19. package/docs/VIEWER-USER-GUIDE.zh-CN.md +68 -190
  20. package/docs/adr/0001-prototype-first-ui-governance.md +3 -0
  21. package/docs/adr/0002-microcks-as-default-mock-system.md +3 -0
  22. package/docs/adr/0003-workflow-manager-governed-control-surface.md +46 -0
  23. package/docs/adr/0004-operational-carbon-visual-standard.md +9 -0
  24. package/docs/adr/0005-prototype-management-as-routed-pages.md +7 -0
  25. package/docs/adr/0006-product-line-candidate-inventory.md +20 -0
  26. package/docs/agents/domain.md +37 -0
  27. package/docs/agents/issue-tracker.md +26 -0
  28. package/docs/agents/triage-labels.md +11 -0
  29. package/docs/agents/workflow-manager-acceptance-matrix.md +93 -0
  30. package/docs/agents/workflow-manager-agent-interface.md +145 -0
  31. package/docs/agents/workflow-manager-current-state.md +205 -0
  32. package/lib/artifact-files.mjs +47 -0
  33. package/lib/codegraph.mjs +405 -0
  34. package/lib/delivery-state.mjs +3079 -198
  35. package/lib/frontend-guard.mjs +288 -0
  36. package/lib/fs-utils.mjs +53 -0
  37. package/lib/history-anchor.mjs +98 -0
  38. package/lib/mock-scenario-pack.mjs +687 -0
  39. package/lib/mock-system.mjs +897 -0
  40. package/lib/npm-auth.mjs +16 -0
  41. package/lib/npm-package-result.mjs +11 -0
  42. package/lib/png-evidence.mjs +149 -0
  43. package/lib/project-bootstrap.mjs +96 -55
  44. package/lib/project-installer.mjs +1484 -164
  45. package/lib/project-migration.mjs +1193 -0
  46. package/lib/prototype-migration.mjs +713 -0
  47. package/lib/prototype-page-review.mjs +384 -0
  48. package/lib/prototype-review-target.mjs +334 -0
  49. package/lib/prototype-revision.mjs +812 -0
  50. package/lib/stable-value.mjs +15 -0
  51. package/lib/toml-hooks.mjs +69 -0
  52. package/lib/ui-acceptance.mjs +565 -0
  53. package/lib/visual-standard.mjs +232 -0
  54. package/lib/workflow-manager-contracts.mjs +367 -0
  55. package/lib/workflow-manager-facts.mjs +778 -0
  56. package/lib/workflow-manager-governance.mjs +514 -0
  57. package/lib/workflow-manager-mock.mjs +183 -0
  58. package/lib/workflow-manager-prototypes.mjs +1847 -0
  59. package/lib/workflow-manager-public/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  60. package/lib/workflow-manager-public/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  61. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  62. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  63. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  64. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  65. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  66. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  67. package/lib/workflow-manager-public/assets/index-Chlg6r8f.css +1 -0
  68. package/lib/workflow-manager-public/assets/index-E-hGB5ZD.js +13 -0
  69. package/lib/workflow-manager-public/fonts/OFL-1.1.txt +90 -0
  70. package/lib/workflow-manager-public/index.html +14 -0
  71. package/lib/workflow-manager-systems.mjs +519 -0
  72. package/lib/workflow-manager-transaction.mjs +397 -0
  73. package/lib/workflow-manager.mjs +745 -0
  74. package/package.json +6 -2
  75. package/skills/ai-delivery-assemble-release/SKILL.md +10 -8
  76. package/skills/ai-delivery-assemble-release/assets/release-candidate-manifest.yaml +16 -4
  77. package/skills/ai-delivery-assemble-release/assets/release-git-plan.yaml +96 -6
  78. package/skills/ai-delivery-assemble-release/assets/release-material-index.csv +1 -1
  79. package/skills/ai-delivery-assemble-release/assets/version-inclusion.csv +2 -2
  80. package/skills/ai-delivery-assemble-release/references/release-assembly-contract.md +16 -2
  81. package/skills/ai-delivery-assemble-release/scripts/plan-release.mjs +127 -3
  82. package/skills/ai-delivery-bootstrap/SKILL.md +4 -4
  83. package/skills/ai-delivery-bootstrap/references/bootstrap-contract.md +4 -2
  84. package/skills/ai-delivery-checkpoint-task/SKILL.md +17 -3
  85. package/skills/ai-delivery-checkpoint-task/assets/runtime-template/task.json +7 -1
  86. package/skills/ai-delivery-checkpoint-task/references/checkpoint-contract.md +22 -8
  87. package/skills/ai-delivery-checkpoint-task/scripts/hook-event.mjs +91 -0
  88. package/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs +1086 -51
  89. package/skills/ai-delivery-close-version/SKILL.md +9 -8
  90. package/skills/ai-delivery-close-version/assets/version-lineage.yaml +1 -1
  91. package/skills/ai-delivery-close-version/references/version-closeout-contract.md +2 -2
  92. package/skills/ai-delivery-define-product/SKILL.md +8 -4
  93. package/skills/ai-delivery-define-product/references/product-contract.md +2 -2
  94. package/skills/ai-delivery-design-architecture/SKILL.md +9 -5
  95. package/skills/ai-delivery-design-architecture/assets/architecture-template/prototype-architecture-validation.yaml +16 -16
  96. package/skills/ai-delivery-design-architecture/references/architecture-contract.md +1 -1
  97. package/skills/ai-delivery-design-experience/SKILL.md +36 -30
  98. package/skills/ai-delivery-design-experience/assets/experience-template/LEGACY-COMPATIBILITY.md +16 -0
  99. package/skills/ai-delivery-design-experience/assets/experience-template/design-reference-selection.yaml +32 -0
  100. package/skills/ai-delivery-design-experience/assets/experience-template/experience-baseline.yaml +2 -2
  101. package/skills/ai-delivery-design-experience/assets/experience-template/formal-ui-confirmation.yaml +16 -3
  102. package/skills/ai-delivery-design-experience/assets/experience-template/frontend-change-scope.yaml +30 -0
  103. package/skills/ai-delivery-design-experience/assets/experience-template/interaction-contract.csv +1 -1
  104. package/skills/ai-delivery-design-experience/assets/experience-template/mock-admin-export.yaml +8 -0
  105. package/skills/ai-delivery-design-experience/assets/experience-template/mock-scenario-mappings.csv +1 -0
  106. package/skills/ai-delivery-design-experience/assets/experience-template/mock-scenario-pack-request.yaml +24 -0
  107. package/skills/ai-delivery-design-experience/assets/experience-template/product-prototype-reconciliation.yaml +2 -1
  108. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-adjustment-log.csv +1 -1
  109. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-component-bindings.csv +1 -0
  110. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-component-candidates.csv +1 -0
  111. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-components.csv +1 -0
  112. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-confirmation.yaml +18 -18
  113. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-data-contracts.csv +1 -0
  114. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-impact-assessment.yaml +5 -5
  115. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-implementation-bindings.csv +1 -0
  116. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-manifest.yaml +2 -0
  117. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-pages.csv +1 -0
  118. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-product-coverage.csv +1 -1
  119. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-comments.csv +1 -1
  120. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-decision.yaml +13 -12
  121. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-scenes.csv +1 -0
  122. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-sessions.csv +1 -1
  123. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-unit-pages.csv +1 -0
  124. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-units.csv +1 -0
  125. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-revision.yaml +88 -0
  126. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-routes.csv +1 -0
  127. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-set.yaml +2 -0
  128. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-source-inspection-snapshots.csv +1 -0
  129. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-terminals.csv +1 -0
  130. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-tool-candidates.csv +1 -1
  131. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-tool-selection.yaml +2 -3
  132. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-traceability.csv +1 -1
  133. package/skills/ai-delivery-design-experience/assets/experience-template/prototype-trigger-conditions.csv +1 -0
  134. package/skills/ai-delivery-design-experience/assets/experience-template/prototype.yaml +6 -0
  135. package/skills/ai-delivery-design-experience/assets/experience-template/ui-framework-selection.yaml +17 -1
  136. package/skills/ai-delivery-design-experience/assets/experience-template/ui-handoff.yaml +6 -5
  137. package/skills/ai-delivery-design-experience/assets/experience-template/ui-mapping.csv +1 -0
  138. package/skills/ai-delivery-design-experience/assets/experience-template/visual-direction.yaml +4 -0
  139. package/skills/ai-delivery-design-experience/assets/experience-template/visual-reference-manifest.yaml +23 -0
  140. package/skills/ai-delivery-design-experience/assets/experience-template/visual-reference.html +163 -0
  141. package/skills/ai-delivery-design-experience/assets/experience-template/visual-system-confirmation.yaml +11 -0
  142. package/skills/ai-delivery-design-experience/references/experience-contract.md +26 -27
  143. package/skills/ai-delivery-design-experience/references/prototype-management-contract.md +42 -21
  144. package/skills/ai-delivery-design-tests/SKILL.md +13 -7
  145. package/skills/ai-delivery-design-tests/assets/test-design-template/prototype-test-scope.csv +1 -1
  146. package/skills/ai-delivery-design-tests/assets/test-design-template/prototype-test-validation.yaml +17 -16
  147. package/skills/ai-delivery-design-tests/references/test-design-contract.md +7 -5
  148. package/skills/ai-delivery-develop-iteration/SKILL.md +18 -11
  149. package/skills/ai-delivery-develop-iteration/assets/development-template/candidate-manifest.yaml +36 -0
  150. package/skills/ai-delivery-develop-iteration/assets/development-template/task-prototype-traceability.csv +1 -1
  151. package/skills/ai-delivery-develop-iteration/references/development-contract.md +5 -3
  152. package/skills/ai-delivery-execute-test/SKILL.md +6 -2
  153. package/skills/ai-delivery-execute-work-package/SKILL.md +10 -3
  154. package/skills/ai-delivery-execute-work-package/references/work-package-contract.md +1 -1
  155. package/skills/ai-delivery-manage-git/SKILL.md +9 -7
  156. package/skills/ai-delivery-manage-git/references/git-policy.md +7 -3
  157. package/skills/ai-delivery-manage-git/scripts/release-git.mjs +995 -0
  158. package/skills/ai-delivery-orchestrate/SKILL.md +47 -29
  159. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/migrations/.gitkeep +0 -0
  160. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/repairs/.gitkeep +0 -0
  161. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/delivery/project.yaml +1 -0
  162. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/delivery/workflow-state.yaml +2 -0
  163. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/frontend-guard/frontend-guard.mjs +50 -0
  164. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/hooks/hook-event.mjs +91 -0
  165. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/manager.mjs +64 -0
  166. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/start.cmd +4 -0
  167. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/start.ps1 +2 -0
  168. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/{viewer → manager}/start.sh +1 -1
  169. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/mock/mock.mjs +50 -0
  170. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/ui-acceptance/ui-acceptance.mjs +37 -0
  171. package/skills/ai-delivery-orchestrate/assets/project-template/AGENTS.md +37 -9
  172. package/skills/ai-delivery-orchestrate/assets/project-template/gitignore.template +1 -0
  173. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/CONTRIBUTING.md +25 -0
  174. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/LICENSE +21 -0
  175. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/README.md +250 -0
  176. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/UPSTREAM.yaml +19 -0
  177. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airbnb/DESIGN.md +545 -0
  178. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airbnb/README.md +5 -0
  179. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airtable/DESIGN.md +554 -0
  180. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airtable/README.md +5 -0
  181. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/apple/DESIGN.md +562 -0
  182. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/apple/README.md +5 -0
  183. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/binance/DESIGN.md +634 -0
  184. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/binance/README.md +5 -0
  185. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw/DESIGN.md +544 -0
  186. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw/README.md +5 -0
  187. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw-m/DESIGN.md +503 -0
  188. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw-m/README.md +5 -0
  189. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bugatti/DESIGN.md +454 -0
  190. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bugatti/README.md +5 -0
  191. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cal/DESIGN.md +542 -0
  192. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cal/README.md +5 -0
  193. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/claude/DESIGN.md +589 -0
  194. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/claude/README.md +5 -0
  195. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clay/DESIGN.md +541 -0
  196. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clay/README.md +5 -0
  197. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clickhouse/DESIGN.md +544 -0
  198. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clickhouse/README.md +5 -0
  199. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cohere/DESIGN.md +451 -0
  200. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cohere/README.md +5 -0
  201. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/coinbase/DESIGN.md +570 -0
  202. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/coinbase/README.md +5 -0
  203. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/composio/DESIGN.md +506 -0
  204. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/composio/README.md +5 -0
  205. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cursor/DESIGN.md +537 -0
  206. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cursor/README.md +5 -0
  207. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/dell-1996/DESIGN.md +632 -0
  208. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/dell-1996/README.md +5 -0
  209. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/elevenlabs/DESIGN.md +504 -0
  210. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/elevenlabs/README.md +5 -0
  211. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/expo/DESIGN.md +526 -0
  212. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/expo/README.md +5 -0
  213. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ferrari/DESIGN.md +531 -0
  214. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ferrari/README.md +5 -0
  215. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/figma/DESIGN.md +578 -0
  216. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/figma/README.md +5 -0
  217. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/framer/DESIGN.md +544 -0
  218. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/framer/README.md +5 -0
  219. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hashicorp/DESIGN.md +575 -0
  220. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hashicorp/README.md +5 -0
  221. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hp/DESIGN.md +670 -0
  222. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hp/README.md +5 -0
  223. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ibm/DESIGN.md +550 -0
  224. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ibm/README.md +5 -0
  225. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/intercom/DESIGN.md +546 -0
  226. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/intercom/README.md +5 -0
  227. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/kraken/DESIGN.md +125 -0
  228. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/kraken/README.md +5 -0
  229. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lamborghini/DESIGN.md +288 -0
  230. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lamborghini/README.md +5 -0
  231. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/linear.app/DESIGN.md +548 -0
  232. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/linear.app/README.md +5 -0
  233. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lovable/DESIGN.md +298 -0
  234. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lovable/README.md +5 -0
  235. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mastercard/DESIGN.md +365 -0
  236. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mastercard/README.md +5 -0
  237. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/meta/DESIGN.md +683 -0
  238. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/meta/README.md +5 -0
  239. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/minimax/DESIGN.md +746 -0
  240. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/minimax/README.md +5 -0
  241. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mintlify/DESIGN.md +852 -0
  242. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mintlify/README.md +5 -0
  243. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/miro/DESIGN.md +825 -0
  244. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/miro/README.md +5 -0
  245. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mistral.ai/DESIGN.md +773 -0
  246. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mistral.ai/README.md +5 -0
  247. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mongodb/DESIGN.md +767 -0
  248. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mongodb/README.md +5 -0
  249. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nike/DESIGN.md +575 -0
  250. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nike/README.md +5 -0
  251. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nintendo-2001/DESIGN.md +649 -0
  252. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nintendo-2001/README.md +5 -0
  253. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/notion/DESIGN.md +821 -0
  254. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/notion/README.md +5 -0
  255. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nvidia/DESIGN.md +640 -0
  256. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nvidia/README.md +5 -0
  257. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ollama/DESIGN.md +539 -0
  258. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ollama/README.md +5 -0
  259. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/opencode.ai/DESIGN.md +521 -0
  260. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/opencode.ai/README.md +5 -0
  261. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/pinterest/DESIGN.md +597 -0
  262. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/pinterest/README.md +5 -0
  263. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/playstation/DESIGN.md +661 -0
  264. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/playstation/README.md +5 -0
  265. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/posthog/DESIGN.md +690 -0
  266. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/posthog/README.md +5 -0
  267. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/raycast/DESIGN.md +669 -0
  268. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/raycast/README.md +5 -0
  269. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/renault/DESIGN.md +589 -0
  270. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/renault/README.md +5 -0
  271. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/replicate/DESIGN.md +616 -0
  272. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/replicate/README.md +5 -0
  273. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/resend/DESIGN.md +585 -0
  274. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/resend/README.md +5 -0
  275. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/revolut/DESIGN.md +636 -0
  276. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/revolut/README.md +5 -0
  277. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/runwayml/DESIGN.md +244 -0
  278. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/runwayml/README.md +5 -0
  279. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sanity/DESIGN.md +357 -0
  280. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sanity/README.md +5 -0
  281. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sentry/DESIGN.md +551 -0
  282. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sentry/README.md +5 -0
  283. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/shopify/DESIGN.md +516 -0
  284. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/shopify/README.md +5 -0
  285. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/slack/DESIGN.md +482 -0
  286. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spacex/DESIGN.md +363 -0
  287. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spacex/README.md +5 -0
  288. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spotify/DESIGN.md +246 -0
  289. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spotify/README.md +5 -0
  290. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/starbucks/DESIGN.md +580 -0
  291. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/starbucks/README.md +5 -0
  292. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/stripe/DESIGN.md +487 -0
  293. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/stripe/README.md +5 -0
  294. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/supabase/DESIGN.md +462 -0
  295. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/supabase/README.md +5 -0
  296. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/superhuman/DESIGN.md +448 -0
  297. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/superhuman/README.md +5 -0
  298. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/tesla/DESIGN.md +286 -0
  299. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/tesla/README.md +5 -0
  300. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/theverge/DESIGN.md +339 -0
  301. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/theverge/README.md +5 -0
  302. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/together.ai/DESIGN.md +633 -0
  303. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/together.ai/README.md +5 -0
  304. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/uber/DESIGN.md +636 -0
  305. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/uber/README.md +5 -0
  306. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vercel/DESIGN.md +736 -0
  307. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vercel/README.md +5 -0
  308. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vodafone/DESIGN.md +538 -0
  309. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vodafone/README.md +5 -0
  310. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/voltagent/DESIGN.md +521 -0
  311. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/voltagent/README.md +5 -0
  312. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/warp/DESIGN.md +526 -0
  313. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/warp/README.md +5 -0
  314. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/webflow/DESIGN.md +588 -0
  315. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/webflow/README.md +5 -0
  316. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wired/DESIGN.md +497 -0
  317. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wired/README.md +5 -0
  318. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wise/DESIGN.md +544 -0
  319. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wise/README.md +5 -0
  320. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/x.ai/DESIGN.md +465 -0
  321. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/x.ai/README.md +5 -0
  322. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/zapier/DESIGN.md +537 -0
  323. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/zapier/README.md +5 -0
  324. package/skills/ai-delivery-orchestrate/references/formal-state-contract.md +65 -20
  325. package/skills/ai-delivery-orchestrate/references/workflow-model.md +8 -6
  326. package/skills/ai-delivery-orchestrate-release/SKILL.md +12 -12
  327. package/skills/ai-delivery-orchestrate-release/assets/release-request.yaml +4 -1
  328. package/skills/ai-delivery-orchestrate-release/assets/version-selection.yaml +13 -1
  329. package/skills/ai-delivery-orchestrate-release/references/release-workflow-contract.md +15 -1
  330. package/skills/ai-delivery-plan-iteration/SKILL.md +11 -4
  331. package/skills/ai-delivery-plan-iteration/assets/planning-template/scope-manifest.yaml +17 -0
  332. package/skills/ai-delivery-plan-iteration/assets/planning-template/slice-prototype-traceability.csv +1 -1
  333. package/skills/ai-delivery-plan-iteration/references/planning-contract.md +8 -2
  334. package/skills/ai-delivery-prepare-platform/SKILL.md +5 -1
  335. package/skills/ai-delivery-prepare-release/SKILL.md +6 -5
  336. package/skills/ai-delivery-prepare-release/assets/release-template/release-manifest.yaml +23 -2
  337. package/skills/ai-delivery-prepare-release/references/release-contract.md +5 -1
  338. package/skills/ai-delivery-review-change/SKILL.md +14 -4
  339. package/skills/ai-delivery-review-change/references/review-contract.md +6 -0
  340. package/skills/ai-delivery-triage-failure/SKILL.md +5 -1
  341. package/skills/ai-delivery-validate-artifacts/SKILL.md +6 -3
  342. package/skills/ai-delivery-validate-artifacts/references/artifact-contract.md +13 -13
  343. package/skills/ai-delivery-verify-candidate/SKILL.md +13 -6
  344. package/skills/ai-delivery-verify-candidate/assets/verification-template/ui-acceptance-request.yaml +19 -0
  345. package/skills/ai-delivery-verify-candidate/assets/verification-template/ui-acceptance-results.yaml +53 -0
  346. package/skills/ai-delivery-verify-candidate/references/candidate-verification-contract.md +10 -2
  347. package/skills/ai-delivery-verify-production/SKILL.md +7 -4
  348. package/skills/ai-delivery-verify-production/assets/production-verification-template/production-verification.json +9 -0
  349. package/skills/ai-delivery-verify-production/assets/production-verification-template/production-verification.md +20 -0
  350. package/skills/ai-delivery-verify-production/references/production-verification-contract.md +19 -3
  351. package/skills/ai-delivery-design-experience/assets/experience-template/low-fidelity-confirmation.yaml +0 -32
  352. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/app.js +0 -546
  353. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/index.html +0 -199
  354. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/styles.css +0 -529
  355. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/server.mjs +0 -780
  356. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/start.cmd +0 -4
  357. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/start.ps1 +0 -2
@@ -34,6 +34,8 @@ Keep `.workflow/delivery/runtime/` local and ignored. Persist durable stage outp
34
34
 
35
35
  `task-state.mjs` is the only runtime-state writer. Do not directly edit task JSON, checkpoint JSON, active-task markers, recovery output, or archive indexes. Formal workflow and artifact state belong to `.workflow/tools/state/state.mjs`; do not edit its YAML or JSONL streams directly.
36
36
 
37
+ Legacy development nodes are read-only compatibility. `inspect` remains read-only for historical task diagnosis. `init`, `activate`, `checkpoint`, `finish`, and `archive-version` reject legacy task targets before mutation or Hook dispatch; `recover` does not hydrate them and `publish` does not share them. New task contracts use only the `development-seven-node` route, while `R00-release-request` through `R10-release-archive` remain writable.
38
+
37
39
  When the installed Evolution CLI exists, `init`, `activate`, `checkpoint`, `finish`, and `archive-version` emit idempotent schema 1 `task.before`, `task.after`, and `task.failed` events. An approved blocking `task.before` result stops the task command before mutation. Hook dispatch failures otherwise fail open as warnings and never replace checkpoint state as the completion authority.
38
40
 
39
41
  ## Commands
@@ -41,12 +43,16 @@ When the installed Evolution CLI exists, `init`, `activate`, `checkpoint`, `fini
41
43
  Resolve `scripts/task-state.mjs` relative to this skill directory when invoking the bundled script.
42
44
 
43
45
  ```text
44
- node scripts/task-state.mjs init --task-id TASK-0001 --iteration-id ITER-0001 --node development --skill ai-delivery-develop-iteration --goal "Implement slice" --next-action "Derive work packages" --next-action-owner agent
46
+ node scripts/task-state.mjs init --task-id TASK-0001 --iteration-id ITER-0001 --node development --skill ai-delivery-develop-iteration --goal "Implement slice" --responsibility delivery-agent --scope SLICE-001 --acceptance AC-001 --next-action "Derive work packages" --next-action-owner agent
45
47
  node scripts/task-state.mjs init --task-id TASK-0002 --iteration-id ITER-0001 --node test --skill ai-delivery-verify-candidate --goal "Verify candidate" --status queued --sequence 2 --depends-on TASK-0001 --next-action "Run candidate verification"
46
48
  node scripts/task-state.mjs recover --iteration-id ITER-0001
47
- node scripts/task-state.mjs activate --task-id TASK-0002
48
- node scripts/task-state.mjs checkpoint --task-id TASK-0001 --status checkpointed --completed-step "Public contract validated" --next-action "Create worktrees"
49
- node scripts/task-state.mjs finish --task-id TASK-0001 --status completed --next-action "Run candidate verification"
49
+ node scripts/task-state.mjs inspect --task-id TASK-0001 --include-closed
50
+ node scripts/task-state.mjs activate --task-id TASK-0002 --phase implementation
51
+ node scripts/task-state.mjs checkpoint --task-id TASK-0001 --status pending-review --phase review --completed-step "Public contract validated" --next-action "Collect review findings"
52
+ node scripts/task-state.mjs finish --task-id TASK-0001 --status failed --phase review --finding-json '{"finding_id":"FIND-001","severity":"blocking","status":"open","summary":"Acceptance branch is missing","evidence":["review@1"]}' --change-set-json '{"change_set_id":"CHANGESET-001","approval_actor":"product-owner@example.invalid","rationale":"Repair the complete review batch","finding_ids":["FIND-001"],"allowed_files":["src/acceptance.mjs"],"expected_evidence":["test-report@2"],"review_axes":["standards","spec"],"collection_decision":"fail"}' --time-category review --elapsed-minutes 12 --next-action "Apply one repair set"
53
+ node scripts/task-state.mjs activate --task-id TASK-0001 --new-attempt --phase repair --next-action "Apply one repair set"
54
+ node scripts/task-state.mjs finish --task-id TASK-0001 --status completed --phase review --finding-json '{"finding_id":"FIND-001","severity":"blocking","status":"resolved","summary":"Acceptance branch is covered","evidence":["test-report@2"],"changed_files":["src/acceptance.mjs"],"change_set_id":"CHANGESET-001"}' --next-action "Run candidate verification"
55
+ node scripts/task-state.mjs init --task-id TASK-0001-V2 --iteration-id ITER-0001 --node development --skill ai-delivery-develop-iteration --goal "Implement expanded slice" --scope SLICE-002 --acceptance AC-002 --derived-from TASK-0001 --status queued --next-action "Await scope approval"
50
56
  node scripts/task-state.mjs finish --task-id TASK-0001 --status interrupted --next-action "Which user group is affected first?" --next-action-owner user
51
57
  node scripts/task-state.mjs recover --mark-interrupted --stale-minutes 15
52
58
  node scripts/task-state.mjs recover --include-closed
@@ -59,6 +65,12 @@ node scripts/task-state.mjs publish --task-id TASK-0001 --push
59
65
 
60
66
  Every state transition writes both the local runtime snapshot and the portable task shard/checkpoint. `publish` refuses unrelated dirty paths, commits only the selected task scope, and does not push unless `--push` is explicit. When local runtime is missing, `recover` reconstructs an `agent`-owned task from shared shards; `user` and `external` wait states remain read-only until an explicit `activate` transfer. A revision or semantic-checksum mismatch is a hard conflict, not a last-writer-wins update.
61
67
 
68
+ `task-state.mjs inspect` is strictly read-only. It never hydrates shared state into runtime, writes a resume or checkpoint, changes timestamps, creates a lock, or changes Git state. Use it for task-level diagnosis; use `recover` only when an agent-owned task must actually be hydrated and resumed.
69
+
70
+ The stable logical task contract consists of iteration, node/responsibility, skill, goal, scope, dependencies, and acceptance. `init` always creates queued work and rejects every other requested status; activation is the only path that starts A1 and checks dependencies. Completed, failed, and abandoned require an activated attempt and `finish`. Repeating `init` with the same contract and task ID is idempotent and zero-write. Registering the same contract under another task ID, or changing any contract field under the same task ID, fails closed. Create a new task and declare `--derived-from` or `--supersedes` only when that contract materially changes.
71
+
72
+ Queued tasks have `attempt: 0` and an empty `attempts` collection, and `checkpoint` or `finish` refuses them until activation. Activation creates `TASK-ID/A1`; ordinary blocked or interrupted recovery continues that attempt. Phase status is always derived from the task transition; `--phase-status` is rejected. A failed task cannot satisfy dependencies and cannot be reactivated implicitly. `activate --new-attempt --phase <phase>` explicitly creates the next attempt under the same task identity. Each attempt contains ordered phases, structured findings, and optional time entries categorized as implementation, test, review, workflow, user wait, external wait, or rework. Entering review captures `review_subject_baseline`; approval fails unless the current Git subject still matches it. Findings use stable IDs plus severity, status, summary, evidence, changed files, and an optional stable `change_set_id`; every record is append-only and the latest record for one ID is its current conclusion. `--change-set-json` is accepted only in review and must name every current open finding plus review axes and the collection decision. The CLI promotes the pinned subject to `repair_baseline`, persists the canonical `feedback_collection`, computes its `collection_checksum`, and stores the immutable approval actor, rationale, exact finding IDs, allowed files, and expected evidence. During concentrated rereview, a resolved record must refer to an existing open finding in that approved set, include the expected evidence, and declare exactly the real Git changes since approval; the CLI rejects undeclared changes and files outside the approval. A task cannot become `completed` while any current blocking finding remains `open`. Failed and abandoned tasks cannot satisfy dependencies; only `completed` can.
73
+
62
74
  For an installed dual-repository project, `task-state.mjs` resolves `code_branch` and `code_commit` from the authoritative `.workflow/config/workspace.yaml` and its configured nested code Git root. The install manifest and task worktree are not workspace identity fallbacks. The task's workflow worktree or workflow branch must never be persisted as code identity. If the workspace configuration is missing, its code path is not a direct child, or the configured code root is not an independent Git repository, the mutation fails instead of recording a fallback identity.
63
75
 
64
76
  `blockers` represents current unresolved blockers. A `blocked` update replaces that list; any transition to another status clears it. Historical blocker text remains available in prior checkpoints and events.
@@ -67,11 +79,13 @@ For an installed dual-repository project, `task-state.mjs` resolves `code_branch
67
79
 
68
80
  Pass `--state-root` when worktrees must write to one shared primary state directory. Pass `--worktree` during init so the script writes a local `.workflow/delivery/runtime/active-task.json` marker pointing to that state root. Later `checkpoint`, `finish`, and `recover` commands automatically use the marker's shared state root.
69
81
 
70
- Use `finish` only with `completed`, `blocked`, `interrupted`, `failed`, or `abandoned`. Use `checkpoint` for all other statuses.
82
+ Use `finish` only with `completed`, `blocked`, `interrupted`, `failed`, or `abandoned`. Closed statuses `completed`, `failed`, and `abandoned` are rejected by `checkpoint`; use `checkpoint` only for continuing or paused work.
71
83
 
72
84
  Register all known iteration tasks as `queued` before execution. `queued` registration does not write `.workflow/delivery/runtime/active-task.json`, so several future tasks may share a worktree safely. `activate` verifies that every `depends_on` task exists and is `completed`, changes the selected task to `running` or `preparing`, writes a new checkpoint, and creates the active task marker for Hook correlation.
73
85
 
74
- `finish` closes an individual task but does not archive it. Default recovery omits closed tasks so they do not consume resume context. Archive the entire planned version after version closeout marks it `release-ready`, after historical production verification marks it `released`, or when explicitly `abandoned`. A release-ready archive requires the immutable candidate ID and verification evidence; a released archive requires release ID and production evidence. Every task in that version must be closed. Archival first writes the portable version package, then removes that version from active shared task/checkpoint collections; `recover` never scans `.workflow/control/archives/`.
86
+ `finish` closes an individual task but does not archive it. Closed counts include completed, failed, and abandoned tasks, but default recovery returns failed tasks as retryable work and omits only completed and abandoned details. Archive the entire planned version after version closeout marks it `release-ready`, after historical production verification marks it `released`, or when explicitly `abandoned`. A release-ready archive requires the immutable candidate ID and verification evidence; a released archive requires release ID and production evidence. Every task in that version must be closed. Before the first archive write, `archive-version` calls the installed formal-state CLI's `snapshot references` command and fails closed unless the latest trusted anchor contains the target scope manifest and candidate. The version manifest references checksummed archived task summaries and each attempt receipt (whose checksum covers the complete attempt value addressed by its reference), plus the anchored scope manifest, candidate, Gate decisions, and history anchor; it does not duplicate those formal records inline. Archival first writes the portable version package, then removes that version from active shared task/checkpoint collections; `recover` never scans `.workflow/control/archives/`.
87
+
88
+ If an archived version is later proven ineligible, keep every archive byte unchanged. The packaged top-level `ai-delivery repair --invalidate-archive` command appends the only valid correction/invalidation record under `.workflow/control/repairs/transactions/`, with the archive checksum, an explicit human actor, reason, RCA evidence, and recovery evidence. Recovery continues to ignore archived task details; current eligibility projections exclude an invalidated archive through that forward transaction.
75
89
 
76
90
  ## Hook Events
77
91
 
@@ -83,9 +97,9 @@ Hooks receive lifecycle JSON on stdin. Redact secrets, cap payload size, append
83
97
 
84
98
  - Reconcile recorded branch, worktree, dirty files, heartbeat, and next action.
85
99
  - Stop without mutation when the recommended task's `next_action_owner` is `user` or `external`; only report the recorded question or wait condition.
86
- - Keep closed tasks in the current version until version archival, but exclude them from normal recovery output.
100
+ - Keep closed tasks in the current version until version archival. Normal recovery excludes completed and abandoned details but includes failed tasks in `retryable_task_ids`.
87
101
  - Determine iteration progress from all task snapshots, including the closed snapshots hidden from the normal task list.
88
- - Prefer an existing active or interrupted task during recovery. If none exists, recommend the lowest-sequence queued task whose dependencies are all `completed`.
102
+ - Prefer an existing active or interrupted task during recovery. If none exists, recommend the lowest-sequence failed task for explicit `activate --new-attempt --phase repair`; only then recommend the lowest-sequence queued task whose dependencies are all `completed`.
89
103
  - Never activate a task with a missing, failed, abandoned, blocked, or otherwise incomplete dependency.
90
104
  - Use one portable version archive under `.workflow/control/archives/versions/`; runtime archive copies are disposable and non-authoritative. Pass `--portable-only` when no local detailed copy should be created.
91
105
  - Treat a stale `running` task as a recovery candidate, not automatically failed.
@@ -53,6 +53,96 @@ async function readStdin() {
53
53
  return Buffer.concat(chunks).toString("utf8");
54
54
  }
55
55
 
56
+ function preToolUsePaths(input) {
57
+ const eventName = String(input.hook_event_name || input.hookEventName || "").toLowerCase();
58
+ if (eventName !== "pretooluse") return [];
59
+ const toolName = String(input.tool_name || input.toolName || "")
60
+ .toLowerCase()
61
+ .replace(/[^a-z0-9]/g, "");
62
+ const mutatingFileTools = [
63
+ "applypatch", "edit", "editfile", "multiedit", "write", "writefile",
64
+ "createfile", "deletefile", "movefile", "renamefile", "replacefile",
65
+ ];
66
+ if (!mutatingFileTools.some((name) => toolName === name || toolName.endsWith(name))) return [];
67
+ const toolInput = input.tool_input && typeof input.tool_input === "object"
68
+ ? input.tool_input
69
+ : {};
70
+ const candidates = [];
71
+ for (const field of ["file_path", "path", "target_file"]) {
72
+ if (typeof toolInput[field] === "string") candidates.push(toolInput[field]);
73
+ }
74
+ if (Array.isArray(toolInput.edits)) {
75
+ for (const edit of toolInput.edits) {
76
+ if (!edit || typeof edit !== "object") continue;
77
+ for (const field of ["file_path", "path", "target_file"]) {
78
+ if (typeof edit[field] === "string") candidates.push(edit[field]);
79
+ }
80
+ }
81
+ }
82
+ for (const field of ["patch", "input"]) {
83
+ if (typeof toolInput[field] !== "string") continue;
84
+ for (const line of toolInput[field].split(/\r?\n/)) {
85
+ const match = line.match(/^\*\*\* (?:Add|Update|Delete) File: (.+)$/)
86
+ || line.match(/^\*\*\* Move to: (.+)$/);
87
+ if (match) candidates.push(match[1]);
88
+ }
89
+ }
90
+ return [...new Set(candidates.map((item) => item.trim()).filter(Boolean))];
91
+ }
92
+
93
+ function owningGitRoot(file) {
94
+ let current = fs.existsSync(file) && fs.statSync(file).isDirectory() ? file : path.dirname(file);
95
+ while (!fs.existsSync(current)) {
96
+ const parent = path.dirname(current);
97
+ if (parent === current) return null;
98
+ current = parent;
99
+ }
100
+ const result = spawnSync("git", ["-C", current, "rev-parse", "--show-toplevel"], {
101
+ encoding: "utf8",
102
+ timeout: 5_000,
103
+ windowsHide: true,
104
+ });
105
+ return result.status === 0 ? path.resolve(result.stdout.trim()) : null;
106
+ }
107
+
108
+ function samePath(left, right) {
109
+ const normalize = (value) => process.platform === "win32"
110
+ ? path.resolve(value).toLowerCase()
111
+ : path.resolve(value);
112
+ return normalize(left) === normalize(right);
113
+ }
114
+
115
+ function enforceFrontendGuard(projectRoot, input) {
116
+ const changedPaths = preToolUsePaths(input);
117
+ if (!changedPaths.length) return;
118
+ const guardCli = path.join(projectRoot, ".workflow", "tools", "frontend-guard", "frontend-guard.mjs");
119
+ if (!fs.existsSync(guardCli)) {
120
+ throw new Error(`Frontend guard runtime is missing: ${guardCli}`);
121
+ }
122
+ for (const changedPath of changedPaths) {
123
+ const resolvedChangedPath = path.isAbsolute(changedPath)
124
+ ? changedPath
125
+ : path.resolve(process.cwd(), changedPath);
126
+ const gitRoot = owningGitRoot(resolvedChangedPath);
127
+ if (gitRoot && samePath(gitRoot, projectRoot)) continue;
128
+ const guarded = spawnSync(process.execPath, [
129
+ guardCli, "check-file", projectRoot, "--path", resolvedChangedPath,
130
+ ], {
131
+ cwd: projectRoot,
132
+ encoding: "utf8",
133
+ timeout: 15_000,
134
+ windowsHide: true,
135
+ });
136
+ if (guarded.error || guarded.status !== 0) {
137
+ throw new Error(
138
+ guarded.error?.message
139
+ || guarded.stderr.trim()
140
+ || `Frontend guard rejected ${resolvedChangedPath}.`,
141
+ );
142
+ }
143
+ }
144
+ }
145
+
56
146
  try {
57
147
  const currentProjectFile = findUp(process.cwd(), path.join(".workflow", "delivery", "project.yaml"));
58
148
  const legacyProjectFile = currentProjectFile
@@ -67,6 +157,7 @@ try {
67
157
  const marker = fs.existsSync(markerFile) ? JSON.parse(fs.readFileSync(markerFile, "utf8")) : null;
68
158
  const raw = await readStdin();
69
159
  const input = raw.trim() ? JSON.parse(raw) : {};
160
+ enforceFrontendGuard(projectRoot, input);
70
161
  const taskId = safeId(process.env.AI_DELIVERY_TASK_ID || marker?.task_id || input.turn_id || input.session_id);
71
162
  const stateRoot = path.resolve(process.env.AI_DELIVERY_STATE_ROOT || marker?.state_root || projectRoot);
72
163
  const workflowRoot = fs.existsSync(path.join(stateRoot, ".workflow", "delivery", "project.yaml"))