ai-delivery-workflow 0.2.2 → 0.4.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 (361) hide show
  1. package/README.md +45 -14
  2. package/bin/ai-delivery.mjs +181 -6
  3. package/bin/benchmark-autonomy.mjs +217 -0
  4. package/bin/release-check.mjs +382 -0
  5. package/docs/CLI-PARAMETER-REFERENCE.zh-CN.md +346 -0
  6. package/docs/CODEGRAPH-INTEGRATION.zh-CN.md +89 -0
  7. package/docs/DUAL-REPOSITORY-WORKSPACE.zh-CN.md +2 -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 +120 -39
  11. package/docs/MAINTENANCE-VERIFICATION.zh-CN.md +51 -0
  12. package/docs/MOCK-SYSTEM.zh-CN.md +141 -0
  13. package/docs/NPM-RELEASE-MANAGEMENT.zh-CN.md +106 -0
  14. package/docs/PROJECT-MANUAL.zh-CN.md +154 -95
  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/agents/domain.md +12 -0
  26. package/docs/agents/issue-tracker.md +27 -0
  27. package/docs/agents/triage-labels.md +11 -0
  28. package/docs/agents/workflow-manager-acceptance-matrix.md +93 -0
  29. package/docs/agents/workflow-manager-agent-interface.md +145 -0
  30. package/docs/agents/workflow-manager-current-state.md +205 -0
  31. package/lib/artifact-files.mjs +47 -0
  32. package/lib/codegraph.mjs +405 -0
  33. package/lib/delivery-state.mjs +3079 -198
  34. package/lib/frontend-guard.mjs +288 -0
  35. package/lib/fs-utils.mjs +53 -0
  36. package/lib/history-anchor.mjs +98 -0
  37. package/lib/mock-scenario-pack.mjs +687 -0
  38. package/lib/mock-system.mjs +897 -0
  39. package/lib/npm-package-result.mjs +11 -0
  40. package/lib/png-evidence.mjs +149 -0
  41. package/lib/project-bootstrap.mjs +96 -55
  42. package/lib/project-installer.mjs +1484 -164
  43. package/lib/project-migration.mjs +1193 -0
  44. package/lib/prototype-migration.mjs +713 -0
  45. package/lib/prototype-page-review.mjs +384 -0
  46. package/lib/prototype-review-target.mjs +334 -0
  47. package/lib/prototype-revision.mjs +812 -0
  48. package/lib/stable-value.mjs +15 -0
  49. package/lib/toml-hooks.mjs +69 -0
  50. package/lib/ui-acceptance.mjs +565 -0
  51. package/lib/visual-standard.mjs +232 -0
  52. package/lib/workflow-manager-contracts.mjs +367 -0
  53. package/lib/workflow-manager-facts.mjs +778 -0
  54. package/lib/workflow-manager-governance.mjs +514 -0
  55. package/lib/workflow-manager-mock.mjs +183 -0
  56. package/lib/workflow-manager-prototypes.mjs +1847 -0
  57. package/lib/workflow-manager-public/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  58. package/lib/workflow-manager-public/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  59. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  60. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  61. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  62. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  63. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  64. package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  65. package/lib/workflow-manager-public/assets/index-Chlg6r8f.css +1 -0
  66. package/lib/workflow-manager-public/assets/index-E-hGB5ZD.js +13 -0
  67. package/lib/workflow-manager-public/fonts/OFL-1.1.txt +90 -0
  68. package/lib/workflow-manager-public/index.html +14 -0
  69. package/lib/workflow-manager-systems.mjs +519 -0
  70. package/lib/workflow-manager-transaction.mjs +397 -0
  71. package/lib/workflow-manager.mjs +745 -0
  72. package/package.json +8 -2
  73. package/skills/ai-delivery-assemble-release/agents/openai.yaml +3 -3
  74. package/skills/ai-delivery-assemble-release/assets/release-material-index.csv +1 -1
  75. package/skills/ai-delivery-assemble-release/assets/version-inclusion.csv +1 -1
  76. package/skills/ai-delivery-bootstrap/SKILL.md +4 -4
  77. package/skills/ai-delivery-bootstrap/agents/openai.yaml +3 -3
  78. package/skills/ai-delivery-bootstrap/references/bootstrap-contract.md +4 -2
  79. package/skills/ai-delivery-checkpoint-task/SKILL.md +17 -3
  80. package/skills/ai-delivery-checkpoint-task/agents/openai.yaml +3 -3
  81. package/skills/ai-delivery-checkpoint-task/assets/runtime-template/task.json +7 -1
  82. package/skills/ai-delivery-checkpoint-task/references/checkpoint-contract.md +22 -8
  83. package/skills/ai-delivery-checkpoint-task/scripts/hook-event.mjs +91 -0
  84. package/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs +1086 -51
  85. package/skills/ai-delivery-close-version/SKILL.md +9 -8
  86. package/skills/ai-delivery-close-version/agents/openai.yaml +3 -3
  87. package/skills/ai-delivery-close-version/assets/version-lineage.yaml +1 -1
  88. package/skills/ai-delivery-close-version/references/version-closeout-contract.md +2 -2
  89. package/skills/ai-delivery-define-product/SKILL.md +8 -4
  90. package/skills/ai-delivery-define-product/agents/openai.yaml +4 -4
  91. package/skills/ai-delivery-define-product/references/product-contract.md +2 -2
  92. package/skills/ai-delivery-deploy-production/agents/openai.yaml +3 -3
  93. package/skills/ai-delivery-design-architecture/SKILL.md +9 -5
  94. package/skills/ai-delivery-design-architecture/assets/architecture-template/prototype-architecture-validation.yaml +16 -16
  95. package/skills/ai-delivery-design-architecture/references/architecture-contract.md +1 -1
  96. package/skills/ai-delivery-design-experience/SKILL.md +36 -30
  97. package/skills/ai-delivery-design-experience/agents/openai.yaml +4 -4
  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/agents/openai.yaml +3 -3
  150. package/skills/ai-delivery-develop-iteration/assets/development-template/candidate-manifest.yaml +36 -0
  151. package/skills/ai-delivery-develop-iteration/assets/development-template/task-prototype-traceability.csv +1 -1
  152. package/skills/ai-delivery-develop-iteration/references/development-contract.md +5 -3
  153. package/skills/ai-delivery-evolve-workflow/agents/openai.yaml +3 -3
  154. package/skills/ai-delivery-execute-test/SKILL.md +6 -2
  155. package/skills/ai-delivery-execute-test/agents/openai.yaml +4 -4
  156. package/skills/ai-delivery-execute-work-package/SKILL.md +10 -3
  157. package/skills/ai-delivery-execute-work-package/agents/openai.yaml +4 -4
  158. package/skills/ai-delivery-execute-work-package/references/work-package-contract.md +1 -1
  159. package/skills/ai-delivery-manage-git/agents/openai.yaml +3 -3
  160. package/skills/ai-delivery-manage-standards/agents/openai.yaml +4 -4
  161. package/skills/ai-delivery-orchestrate/SKILL.md +47 -29
  162. package/skills/ai-delivery-orchestrate/agents/openai.yaml +3 -3
  163. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/migrations/.gitkeep +0 -0
  164. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/repairs/.gitkeep +0 -0
  165. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/delivery/project.yaml +1 -0
  166. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/delivery/workflow-state.yaml +2 -0
  167. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/frontend-guard/frontend-guard.mjs +50 -0
  168. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/hooks/hook-event.mjs +91 -0
  169. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/manager.mjs +64 -0
  170. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/start.cmd +4 -0
  171. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/start.ps1 +2 -0
  172. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/{viewer → manager}/start.sh +1 -1
  173. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/mock/mock.mjs +50 -0
  174. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/ui-acceptance/ui-acceptance.mjs +37 -0
  175. package/skills/ai-delivery-orchestrate/assets/project-template/AGENTS.md +32 -6
  176. package/skills/ai-delivery-orchestrate/assets/project-template/gitignore.template +1 -0
  177. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/CONTRIBUTING.md +25 -0
  178. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/LICENSE +21 -0
  179. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/README.md +250 -0
  180. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/UPSTREAM.yaml +19 -0
  181. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airbnb/DESIGN.md +545 -0
  182. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airbnb/README.md +5 -0
  183. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airtable/DESIGN.md +554 -0
  184. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airtable/README.md +5 -0
  185. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/apple/DESIGN.md +562 -0
  186. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/apple/README.md +5 -0
  187. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/binance/DESIGN.md +634 -0
  188. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/binance/README.md +5 -0
  189. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw/DESIGN.md +544 -0
  190. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw/README.md +5 -0
  191. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw-m/DESIGN.md +503 -0
  192. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw-m/README.md +5 -0
  193. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bugatti/DESIGN.md +454 -0
  194. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bugatti/README.md +5 -0
  195. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cal/DESIGN.md +542 -0
  196. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cal/README.md +5 -0
  197. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/claude/DESIGN.md +589 -0
  198. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/claude/README.md +5 -0
  199. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clay/DESIGN.md +541 -0
  200. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clay/README.md +5 -0
  201. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clickhouse/DESIGN.md +544 -0
  202. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clickhouse/README.md +5 -0
  203. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cohere/DESIGN.md +451 -0
  204. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cohere/README.md +5 -0
  205. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/coinbase/DESIGN.md +570 -0
  206. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/coinbase/README.md +5 -0
  207. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/composio/DESIGN.md +506 -0
  208. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/composio/README.md +5 -0
  209. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cursor/DESIGN.md +537 -0
  210. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cursor/README.md +5 -0
  211. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/dell-1996/DESIGN.md +632 -0
  212. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/dell-1996/README.md +5 -0
  213. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/elevenlabs/DESIGN.md +504 -0
  214. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/elevenlabs/README.md +5 -0
  215. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/expo/DESIGN.md +526 -0
  216. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/expo/README.md +5 -0
  217. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ferrari/DESIGN.md +531 -0
  218. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ferrari/README.md +5 -0
  219. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/figma/DESIGN.md +578 -0
  220. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/figma/README.md +5 -0
  221. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/framer/DESIGN.md +544 -0
  222. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/framer/README.md +5 -0
  223. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hashicorp/DESIGN.md +575 -0
  224. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hashicorp/README.md +5 -0
  225. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hp/DESIGN.md +670 -0
  226. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hp/README.md +5 -0
  227. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ibm/DESIGN.md +550 -0
  228. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ibm/README.md +5 -0
  229. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/intercom/DESIGN.md +546 -0
  230. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/intercom/README.md +5 -0
  231. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/kraken/DESIGN.md +125 -0
  232. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/kraken/README.md +5 -0
  233. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lamborghini/DESIGN.md +288 -0
  234. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lamborghini/README.md +5 -0
  235. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/linear.app/DESIGN.md +548 -0
  236. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/linear.app/README.md +5 -0
  237. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lovable/DESIGN.md +298 -0
  238. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lovable/README.md +5 -0
  239. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mastercard/DESIGN.md +365 -0
  240. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mastercard/README.md +5 -0
  241. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/meta/DESIGN.md +683 -0
  242. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/meta/README.md +5 -0
  243. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/minimax/DESIGN.md +746 -0
  244. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/minimax/README.md +5 -0
  245. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mintlify/DESIGN.md +852 -0
  246. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mintlify/README.md +5 -0
  247. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/miro/DESIGN.md +825 -0
  248. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/miro/README.md +5 -0
  249. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mistral.ai/DESIGN.md +773 -0
  250. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mistral.ai/README.md +5 -0
  251. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mongodb/DESIGN.md +767 -0
  252. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mongodb/README.md +5 -0
  253. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nike/DESIGN.md +575 -0
  254. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nike/README.md +5 -0
  255. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nintendo-2001/DESIGN.md +649 -0
  256. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nintendo-2001/README.md +5 -0
  257. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/notion/DESIGN.md +821 -0
  258. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/notion/README.md +5 -0
  259. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nvidia/DESIGN.md +640 -0
  260. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nvidia/README.md +5 -0
  261. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ollama/DESIGN.md +539 -0
  262. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ollama/README.md +5 -0
  263. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/opencode.ai/DESIGN.md +521 -0
  264. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/opencode.ai/README.md +5 -0
  265. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/pinterest/DESIGN.md +597 -0
  266. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/pinterest/README.md +5 -0
  267. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/playstation/DESIGN.md +661 -0
  268. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/playstation/README.md +5 -0
  269. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/posthog/DESIGN.md +690 -0
  270. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/posthog/README.md +5 -0
  271. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/raycast/DESIGN.md +669 -0
  272. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/raycast/README.md +5 -0
  273. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/renault/DESIGN.md +589 -0
  274. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/renault/README.md +5 -0
  275. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/replicate/DESIGN.md +616 -0
  276. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/replicate/README.md +5 -0
  277. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/resend/DESIGN.md +585 -0
  278. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/resend/README.md +5 -0
  279. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/revolut/DESIGN.md +636 -0
  280. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/revolut/README.md +5 -0
  281. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/runwayml/DESIGN.md +244 -0
  282. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/runwayml/README.md +5 -0
  283. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sanity/DESIGN.md +357 -0
  284. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sanity/README.md +5 -0
  285. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sentry/DESIGN.md +551 -0
  286. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sentry/README.md +5 -0
  287. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/shopify/DESIGN.md +516 -0
  288. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/shopify/README.md +5 -0
  289. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/slack/DESIGN.md +482 -0
  290. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spacex/DESIGN.md +363 -0
  291. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spacex/README.md +5 -0
  292. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spotify/DESIGN.md +246 -0
  293. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spotify/README.md +5 -0
  294. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/starbucks/DESIGN.md +580 -0
  295. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/starbucks/README.md +5 -0
  296. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/stripe/DESIGN.md +487 -0
  297. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/stripe/README.md +5 -0
  298. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/supabase/DESIGN.md +462 -0
  299. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/supabase/README.md +5 -0
  300. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/superhuman/DESIGN.md +448 -0
  301. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/superhuman/README.md +5 -0
  302. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/tesla/DESIGN.md +286 -0
  303. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/tesla/README.md +5 -0
  304. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/theverge/DESIGN.md +339 -0
  305. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/theverge/README.md +5 -0
  306. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/together.ai/DESIGN.md +633 -0
  307. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/together.ai/README.md +5 -0
  308. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/uber/DESIGN.md +636 -0
  309. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/uber/README.md +5 -0
  310. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vercel/DESIGN.md +736 -0
  311. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vercel/README.md +5 -0
  312. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vodafone/DESIGN.md +538 -0
  313. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vodafone/README.md +5 -0
  314. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/voltagent/DESIGN.md +521 -0
  315. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/voltagent/README.md +5 -0
  316. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/warp/DESIGN.md +526 -0
  317. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/warp/README.md +5 -0
  318. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/webflow/DESIGN.md +588 -0
  319. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/webflow/README.md +5 -0
  320. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wired/DESIGN.md +497 -0
  321. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wired/README.md +5 -0
  322. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wise/DESIGN.md +544 -0
  323. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wise/README.md +5 -0
  324. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/x.ai/DESIGN.md +465 -0
  325. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/x.ai/README.md +5 -0
  326. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/zapier/DESIGN.md +537 -0
  327. package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/zapier/README.md +5 -0
  328. package/skills/ai-delivery-orchestrate/references/formal-state-contract.md +65 -20
  329. package/skills/ai-delivery-orchestrate/references/workflow-model.md +7 -5
  330. package/skills/ai-delivery-orchestrate-release/SKILL.md +2 -2
  331. package/skills/ai-delivery-orchestrate-release/agents/openai.yaml +4 -4
  332. package/skills/ai-delivery-orchestrate-release/references/release-workflow-contract.md +1 -1
  333. package/skills/ai-delivery-plan-iteration/SKILL.md +11 -4
  334. package/skills/ai-delivery-plan-iteration/agents/openai.yaml +4 -4
  335. package/skills/ai-delivery-plan-iteration/assets/planning-template/scope-manifest.yaml +17 -0
  336. package/skills/ai-delivery-plan-iteration/assets/planning-template/slice-prototype-traceability.csv +1 -1
  337. package/skills/ai-delivery-plan-iteration/references/planning-contract.md +8 -2
  338. package/skills/ai-delivery-prepare-platform/SKILL.md +5 -1
  339. package/skills/ai-delivery-prepare-platform/agents/openai.yaml +4 -4
  340. package/skills/ai-delivery-prepare-release/agents/openai.yaml +4 -4
  341. package/skills/ai-delivery-review-change/SKILL.md +14 -4
  342. package/skills/ai-delivery-review-change/agents/openai.yaml +4 -4
  343. package/skills/ai-delivery-review-change/references/review-contract.md +6 -0
  344. package/skills/ai-delivery-triage-failure/SKILL.md +5 -1
  345. package/skills/ai-delivery-triage-failure/agents/openai.yaml +4 -4
  346. package/skills/ai-delivery-validate-artifacts/SKILL.md +6 -3
  347. package/skills/ai-delivery-validate-artifacts/agents/openai.yaml +4 -4
  348. package/skills/ai-delivery-validate-artifacts/references/artifact-contract.md +13 -13
  349. package/skills/ai-delivery-verify-candidate/SKILL.md +13 -6
  350. package/skills/ai-delivery-verify-candidate/agents/openai.yaml +3 -3
  351. package/skills/ai-delivery-verify-candidate/assets/verification-template/ui-acceptance-request.yaml +19 -0
  352. package/skills/ai-delivery-verify-candidate/assets/verification-template/ui-acceptance-results.yaml +53 -0
  353. package/skills/ai-delivery-verify-candidate/references/candidate-verification-contract.md +10 -2
  354. package/skills/ai-delivery-verify-production/agents/openai.yaml +3 -3
  355. package/skills/ai-delivery-design-experience/assets/experience-template/low-fidelity-confirmation.yaml +0 -32
  356. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/app.js +0 -546
  357. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/index.html +0 -199
  358. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/styles.css +0 -529
  359. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/server.mjs +0 -780
  360. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/start.cmd +0 -4
  361. package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/start.ps1 +0 -2
@@ -0,0 +1,145 @@
1
+ # Workflow Manager Agent Interface
2
+
3
+ 本文规定 AI 通过发行包提供的受限 CLI 操作 Workflow Manager 的固定流程。动作名称、输入字段和版本化 JSON Schema 的唯一事实源是 `workflow-manager.contracts.v1`;本文只规定调用顺序、证据检查和恢复方式。
4
+
5
+ ## 1. 接口边界
6
+
7
+ Agent Interface 与 UI、HTTP 使用同一应用服务和业务规则。AI 可以读取正式资源、提出关系建议、执行已授权的受控动作并检查结果。AI 不得直接修改 YAML、不得执行任意 shell、不得把浏览器自动化或一次性仓库脚本当作正式接口,也不得绕过 Prototype-first、人审 Gate、Revision/checksum 或分支限制。
8
+
9
+ 维护仓库使用 `node bin/ai-delivery.mjs manager ...`;安装后的业务项目使用 `node .workflow/tools/manager/manager.mjs ...`。以下步骤中的 `manager` 代表上述任一入口。
10
+
11
+ ## 2. 固定调用流程
12
+
13
+ ### 2.1 先读取契约
14
+
15
+ ```text
16
+ manager list --resource contracts
17
+ manager action <action-name> --help
18
+ ```
19
+
20
+ 确认返回的 `schema_version` 是调用方支持的 `workflow-manager.contracts.v1`,再从动作契约读取 `authorization`、`concurrency`、`retry`、`planning`、`input_schema` 和 `output_schema`。未知 Schema 或未知动作立即 fail-closed。
21
+
22
+ 完成条件:已选动作存在,actor 类型、必填字段、并发模式和是否需要 plan 均明确。
23
+
24
+ ### 2.2 读取目标资源
25
+
26
+ 使用 `manager list|show|export --resource <resource>` 读取当前事实。可用资源由 `manager --help` 和 `contracts` 资源共同发现;`attachments` 的单项读取还要求精确附件编号与 checksum。
27
+
28
+ 记录目标的稳定身份、项目/工作区、分支、迭代、实体 Revision、集合 `expected_revision`、`expected_checksum`,或正式状态的 `expected_scope_revision`。不得从旧聊天记录猜测这些字段。
29
+
30
+ 完成条件:精确目标及当前并发令牌来自本次读取。
31
+
32
+ ### 2.2.1 Prototype Revision v2 资源上下文
33
+
34
+ `manager list|show|export --resource prototypes` 返回 `workflow-manager.prototypes.v2`。每个响应都带有 `context`,其中固定包含 `project`、`workspace`、当前 `branch`、`iteration_id`、`prototype_revision_id`、`prototype_revision_checksum` 和 `terminal_id`;这些值是本次读取的范围,不得由调用方补写或猜测。
35
+
36
+ 已登记 Revision 还包含 `catalog_schema_version`、`terminals` 与 `catalog_summary`。`catalog_summary` 记录 Component Registration、Data Contract、Component Candidate、component binding、implementation mapping 和 Source Inspection Snapshot 的登记数量。`terminals` 是独立 Logical Terminal 的稳定身份和生命周期,而不是视口或权限场景。
37
+
38
+ 读取 P07、P11-P17 对应的 Project Prototype 事实时,显式传入 `--terminal-id all` 或一个本次响应 `terminals` 中的 `terminal_id`:
39
+
40
+ ```text
41
+ manager show --resource prototypes --terminal-id all
42
+ manager show --resource prototypes --terminal-id TERM-WEB
43
+ ```
44
+
45
+ HTTP 使用同名查询参数 `terminal_id`。响应的 `terminal_scope` 与 `context.terminal_id` 说明实际范围;单终端范围只返回该终端所属的 Page、Review Scene 和路由,`terminals` 注册表仍完整返回以支持下一次选择。未知或格式错误的终端统一返回 `{ "error": { "code": "prototype-terminal-invalid", "message": "..." } }`,不得退回到 `all`、首个终端、首个 Page 或首个 Scene。恢复时重新读取终端注册表并使用已登记身份重试。
46
+
47
+ `prototype-change-request-create`、`prototype-review-batch-finalize` 和 `prototype-page-review-apply` 都要求精确 `terminal_id`。调用方还必须使 Page 与可选 Review Scene 同属该终端;跨终端输入 fail-closed。修改要求、审核批次、Page Receipt 以及相应 Workflow Manager Receipt/Event 都保留终端事实,因此后续编辑、附件、执行或废弃会重新验证已有目标,不能跨终端漂移。
48
+
49
+ 当请求显式 `--revision` 时,即使 `UX-VS` 尚未批准,Manager 也先验证该 Revision;无效、旧格式、缺少目录或 checksum 漂移的 Revision 一律返回 `{ "error": { "code": "prototype-revision-invalid", "message": "..." } }`。包内 CLI、安装后 CLI 与 HTTP 使用同一错误结构。恢复时不要回退到默认 Revision:修复或重新读取确切 Revision 后重试。
50
+
51
+ ### 2.2.2 P14-P17 终端范围追踪与恢复
52
+
53
+ P14 路由目录与 P15 路由关系的 P13 跳转必须同时携带 `page`、可选 `projectScene`、`terminal_id`、`revision` 和 `expected_checksum`。P13 用同一份 `prototypes` 资源请求验证该 Revision;CLI 使用 `--revision` 与 `--expected-checksum`,HTTP 使用 `revision` 与 `expected_checksum`。请求的 descriptor checksum 不等于当前读取的 `prototype_revision_checksum` 时,CLI、HTTP 和 UI 都返回或显示 `{ "error": { "code": "prototype-revision-invalid", "message": "Prototype revision checksum mismatch." } }`,不得展示默认 Revision 或改用同名 Page。
54
+
55
+ P16 在 `terminal_scope` 内只返回该终端的 `change_requests`、`review_batches` 与 `discarded_tombstones`。每条记录保留 `prototype_revision_id`、`prototype_revision_checksum`、`terminal_id`、Page/Scene 身份、状态、Revision、时间及执行状态;已废弃要求只保留墓碑身份、批次、时间和理由,正文与附件不再是可执行输入。调用方不得将一个终端的批次、执行或墓碑推断到另一个终端。
56
+
57
+ P17 的 `revision_history` 是只读的冻结 Revision 证据。每条可用记录包含稳定的 `path`、descriptor `checksum`、`prototype_revision_id`、`terminal_id`、`catalog_summary` 和 `revision_diff`;差异集合至少覆盖 `terminals`、`pages`、`review_scenes`、`trigger_conditions`、`routes`、`ui_mapping`、`review_units`、`review_unit_pages` 及已登记的组件、数据和源码快照事实。`draft` 后继 Revision 不是不可变历史,不会出现在该列表。
58
+
59
+ ### 2.2.3 Source Inspection Snapshot 受控读取
60
+
61
+ 源码审查只通过 `prototype-source-snapshots` 资源读取,不接受 `source_ref`、本地路径或命令参数:
62
+
63
+ ```text
64
+ manager show --resource prototype-source-snapshots --terminal-id TERM-WEB \
65
+ --revision prototype/revisions/PROTOTYPE-REVISION-0001/prototype-revision.yaml \
66
+ --expected-checksum <sha256>
67
+ manager show --resource prototype-source-snapshots --source-snapshot-id SRC-P01-IMPLEMENTATION \
68
+ --terminal-id TERM-WEB --page-id P01 --revision <relative-revision> \
69
+ --expected-checksum <sha256>
70
+ ```
71
+
72
+ 每次请求都必须带精确 `revision` 与 `expected_checksum`;缺任一字段时不会回退到当前 Revision。列表响应只包含 Revision 明确登记的 `source_snapshot_id`、`asset_kind`、Page/Scene/Terminal 范围、相对 `source_ref`、checksum、语言和 `scene_branch`。带 `source_snapshot_id` 的响应才包含只读 `content` 及其只读标记,并再次校验来源文件 checksum。请求合法 Scene 时可以同时看到该 Page 的共享主实现和该 Scene 的状态分支;页面和 Scene 身份及其 Terminal/Page 关系会先验证。跨终端、跨 Page/Scene、坏 checksum、未登记身份和任意路径参数统一 fail-closed。CLI、HTTP 的 `/api/v1/resources/prototype-source-snapshots`(以及按 ID 的只读别名)与 UI 使用同一应用服务和错误结构。
73
+
74
+ P14 生成的源码入口必须携带 `page`、可选 `projectScene`、`terminal_id`、`revision`、`expected_checksum`、`tab=source` 和登记的 `source_snapshot_id`。P13 源码模式只显示这些快照的内容、Scene 分支和验收映射,不提供路径输入、编辑、下载执行或命令入口。
75
+
76
+ `inspection_status: "unavailable"` 表示一个冻结历史 descriptor 不能通过正式 `validatePrototypeRevision`,但其路径与可读取的 descriptor checksum 仍作为恢复锚点返回。其 `inspection_error` 使用 `prototype-revision-invalid` 代码;后续可用记录的 `revision_diff.status: "history-gap"` 不跨该断点推断差异。先修复或重新读取明确 Revision,再以同一 `terminal_id`、`revision` 和 `expected_checksum` 重试;在断点存在时不得把后续基线误报为连续比较。
77
+
78
+ ### 2.3 构造输入
79
+
80
+ 输入必须严格符合动作 `input_schema`,不带额外字段。actor 使用契约允许的 `human:<identity>` 或 `agent:<identity>`;需要人审的动作只有真实人工决定后才使用 human actor。
81
+
82
+ 每次逻辑意图生成一个 `idempotency_key`。网络或进程中断后的同意图重试复用原键;改变目标、正文、计划或决定时生成新键。更新单个实体时同时携带实体 Revision;更新集合时携带 `expected_revision` 与 `expected_checksum`。
83
+
84
+ 完成条件:输入通过动作 Schema,且身份、actor、并发令牌和幂等键均绑定当前意图。
85
+
86
+ ### 2.4 执行计划
87
+
88
+ 契约的 `planning.mode` 为 `required-before-apply` 时,先执行对应 `*-plan` 动作。plan 是 dry-run:它可以读取和校验,但不修改正式状态。核对影响实体、分支、文件、进程或 Mock 定义后,保存返回的 plan checksum。
89
+
90
+ apply 必须携带相同意图和精确 `expected_plan_checksum`。输入、目标 Revision/checksum、分支或外部状态发生变化时旧计划失效,重新读取资源并生成新计划。
91
+
92
+ P10 设置更新固定使用 `settings-update-plan` 后接 `settings-update-apply`,不提供绕过计划的直接更新动作。plan 只返回受影响偏好、预期 Revision 和 checksum;UI 或 Agent 对任一设置输入的修改都会使旧 plan 失效。apply 还必须携带该 plan 的 `expected_plan_checksum`,并产生同一事务中的 Receipt 与 Event。
93
+
94
+ 完成条件:计划影响已核对,apply 输入绑定当前计划 checksum。
95
+
96
+ ### 2.5 执行变更
97
+
98
+ 把 JSON 输入保存到工作区内受控临时文件,调用:
99
+
100
+ ```text
101
+ manager action <action-name> --input <json-file>
102
+ ```
103
+
104
+ 接口先校验 Schema、actor、合法转换、Revision/checksum、plan checksum 和幂等语义,再通过与 UI 相同的应用服务提交。任何 stale、checksum mismatch、target drift、非法状态转换或权限错误都保持 fail-closed。
105
+
106
+ 完成条件:命令返回结构化 `outcome`,没有依靠界面文案推断成功。
107
+
108
+ ### 2.6 核对结果
109
+
110
+ 成功 mutation 必须返回或可定位不可变 Receipt 与 Event。核对 actor、时间、输入 Revision/checksum、受影响身份、outcome 和错误明细,再重新读取目标资源及事件资源,确认投影与 Receipt/Event 一致。
111
+
112
+ `idempotent-replay` 表示同一 `idempotency_key` 的既有结果被安全返回,不代表再次执行了写入。无 Receipt/Event、资源投影不一致或事件不可查询时,不得把动作报告为完成。
113
+
114
+ 完成条件:结构化结果、Receipt、Event 和重读投影四者一致。
115
+
116
+ ## 3. Outbox 与恢复
117
+
118
+ Workflow Manager 的事务层先准备业务写入、Receipt 与 Event,再原子提交;Outbox 表示提交后可观察的不可变事件记录,不是第二写入口。调用方不得直接编辑、删除或重放 Outbox 文件来改变业务状态。
119
+
120
+ | 情况 | 恢复动作 |
121
+ | --- | --- |
122
+ | 响应丢失或客户端超时 | 使用原 `idempotency_key` 重试同一输入;接受 `idempotent-replay`,随后重读资源和 Event。 |
123
+ | `stale` Revision/checksum | 不覆盖;重新读取资源,重新评估意图,使用新并发令牌和新幂等键。 |
124
+ | plan checksum 失效 | 重新执行 plan、核对新影响,再用新 `expected_plan_checksum` apply。 |
125
+ | P10 设置输入在 plan 后改变 | 丢弃旧 `settings-update-plan` 结果,重新读取设置并生成新 plan;不得复用旧 checksum。 |
126
+ | 分支或目标漂移 | 切回已登记且受信任的当前分支/工作区,或停止并交给人工;不得降级为任意命令。 |
127
+ | Schema/动作未知 | 升级调用方或工作流包后重新读取 `contracts`;保持 fail-closed。 |
128
+ | Receipt/Event 与投影不一致 | 停止后续写入,保留原输入和幂等键,运行只读检查并交给维护者恢复事务。 |
129
+ | 人工决定缺失 | 停止;AI 建议保持 suggested,不能登记成 confirmed、approved 或 completed。 |
130
+
131
+ ## 4. 可变性
132
+
133
+ 需求、任务、测试用例和设置通过版本化动作更新;测试执行、审核批次、Page Receipt、审批、Receipt 和 Event 是不可变证据。原型修改要求在进入 AI 执行前可以追加修订或按契约废弃;执行开始后只能追加执行尝试、结果或由新 Revision 取代,不能原地覆盖历史。
134
+
135
+ 项目系统和 Mock 的多实体操作必须 plan/apply。项目系统生命周期只允许 Registry 声明的受限命令;初始化脚本只允许 Registry 管理的项目内路径。Mock 同步只处理已登记协议和场景,不提供任意文件编辑或外部系统权限。
136
+
137
+ ## 5. 最小核对清单
138
+
139
+ - 契约 Schema、动作和资源已从当前安装读取。
140
+ - actor 与真实授权一致。
141
+ - 稳定身份及 Revision/checksum 来自本次读取。
142
+ - 多实体动作已有当前 plan 和 `expected_plan_checksum`。
143
+ - 重试复用原 `idempotency_key`,新意图使用新键。
144
+ - 结果、Receipt、Event 与重读投影一致。
145
+ - 原型修改、人审 Gate、分支和 Mock 边界没有被绕过。
@@ -0,0 +1,205 @@
1
+ # 工作流与工作流管理器阶段现状
2
+
3
+ 更新时间:2026-08-21
4
+
5
+ 本文是继续设计、实现或审核 Workflow Manager 时的阶段入口。它区分已经进入正式工作流源码的能力、已经接受但尚未实现的产品决策、仅在隔离原型中验证的交互,以及仍未完成的事项。领域术语以根目录 `CONTEXT.md` 为准,不以本文替代 ADR、正式状态契约或 Issue。
6
+
7
+ ## 1. 当前基线
8
+
9
+ - 当前仓库是 `ai-delivery-workflow` 的维护与发行源码仓库,不是安装了工作流的业务项目。
10
+ - 当前实施分支为 `codex/workflow-manager-foundation`;Workflow Manager 实现在 `ae70304`,外部 Issue 收尾在 `e727af1`。`0.4.0` 的最终候选身份、校验和及生命周期证据记录在维护仓库的 `audit/WORKFLOW-MANAGER-P0-P1-P2-CLOSURE.md`;该记录不随安装包分发,候选包和展开验证工作区保留在被忽略的 `.tmp/`。工作树仍包含用户维护的文档和参考资料变更。
11
+ - 正式维护源码位于 `bin/`、`lib/`、`skills/`、`docs/`、`verification/` 和 `audit/`。
12
+ - Workflow Manager 设计原型位于 `.tmp/workflow-manager-prototype/`,属于可重建临时物料,不进入发行包,也不等于正式前端已经实现。
13
+
14
+ ## 2. 已进入正式工作流源码
15
+
16
+ ### 2.1 七节点研发流程
17
+
18
+ 正式研发生产路线已经收敛为:
19
+
20
+ ```text
21
+ 00-bootstrap
22
+ -> 01-product-shaping
23
+ -> 02-solution-design
24
+ -> 03-delivery-readiness
25
+ -> 04-implementation
26
+ -> 05-candidate-assurance
27
+ -> 06-version-closeout
28
+ ```
29
+
30
+ - `00-bootstrap` 建立或恢复项目上下文基线。首次初始化后,后续会话只做恢复和只读检查;它不定义产品、架构或 UI,不启动中间件,也不实现或发布功能。
31
+ - `01` 至 `03` 是设计流程,`04` 至 `06` 是开发流程。
32
+ - `03-delivery-readiness` 冻结 Slice、需求、验收、必需任务和必需物料;`04-implementation` 生成不可变候选版本;`05-candidate-assurance` 对绑定的候选版本做完整验证;`06-version-closeout` 形成 `release-ready` 版本物料。
33
+ - 历史十三节点研发模型只读兼容;新任务、物料、流转、候选版本、Gate 和版本收尾不得再写入旧节点。
34
+ - `R00` 至 `R10` 是独立发布流程。当前 Workflow Manager 原型暂不展示发布模块,但正式状态契约仍保留该流程。
35
+
36
+ ### 2.2 正式节点状态
37
+
38
+ 正式节点状态不是人工选择,也不能只由一个子任务状态决定。`state inspect` 的 `derived_node_states` 综合以下事实派生:
39
+
40
+ - 当前冻结 Scope Manifest;
41
+ - 稳定任务及其 attempts、phases 和最新阻塞发现;
42
+ - 强制 Gate 决定;
43
+ - 已登记物料及 checksum;
44
+ - 当前不可变候选版本;
45
+ - 节点完成凭证。
46
+
47
+ 可见状态为 `pending`、`active`、`waiting`、`blocked`、`ready-to-complete` 和 `completed`。受新契约治理的节点只能从 `ready-to-complete` 完成,并生成绑定上述事实的不可变 completion receipt。
48
+
49
+ ### 2.3 Slice、任务和历史
50
+
51
+ - Delivery Readiness 后使用 `scope freeze` 冻结范围;只有明确人工批准的 `scope amend` 可以改变范围。
52
+ - Slice 超出逻辑任务数、活跃工时、墙钟时长或阻塞修复轮次预算时,只执行 `scope warn`。其结果固定为 `warn-only` 和 `reslice_performed: false`,不会自动重新切片、重排计划或改变验收。
53
+ - 任务使用一个稳定任务 ID,并在任务内部记录 attempt 和 phase。过去的 `F/R/T/P/vN` 后缀任务模式已被替代。
54
+ - 物料登记、事件分片、可信快照、历史校验、prune 和 compact 已进入正式源码;正式 revision 和审核凭证不可原地覆盖。
55
+
56
+ ### 2.4 原型优先 UI 治理
57
+
58
+ - 不再使用 UX-LF。`UX-VS` 负责视觉规范确认,`UX-UI` 负责正式原型审核,两者归入 `02-solution-design`。
59
+ - 所有用户可见 UI 修改都遵守“先修改隔离 Prototype -> 用户确认 -> 再修改正式前端”,不存在小改、紧急修复或业务逻辑调整例外。
60
+ - 一个项目只有一个逻辑 Prototype。Page 是稳定路由页面,Review Scene 是 Page 的可审核状态;原型必须列出错误、空态、权限、恢复等正式系统中只在条件满足时出现的状态。
61
+ - 页面级 Prototype 审核、Revision/checksum 绑定、Review Shell、Page Receipt、正式前端守卫和 Candidate Assurance UI Acceptance 已进入维护源码。
62
+ - 一个 Page 可以反复修改和审核;每轮使用新的 Prototype Revision、审核批次和 checksum,历史轮次不可覆盖。
63
+ - 修改要求尚未进入 AI 执行且没有 Prototype Adjustment 时可由人确认废弃。AI 已读取但尚未执行仍可废弃;废弃正文和附件退出执行范围,只保留审计墓碑。
64
+ - P14 到 P13 的 Source Inspection Snapshot 受控审查已进入正式源码。新版 catalog 为每个页面主实现、Scene 状态分支和验收资产登记稳定身份、终端/Page/Scene 范围、相对来源、语言、作用和 checksum;CLI、HTTP 与 UI 共用只读快照服务,拒绝任意路径、编辑、执行、未登记身份、跨终端目标和来源 checksum 漂移。
65
+
66
+ ### 2.5 Mock、CodeGraph 和升级
67
+
68
+ - Microcks 是默认项目级 Mock System。External Dependency Mock 和 Product Backend Mock 分开管理;协议定义和 Mock Scenario Pack 可版本化,运行数据库、流量和日志可丢弃。
69
+ - CodeGraph 是可选、可降级的代码导航适配器。工作流只管理项目索引,不安装全局 MCP;不可用时降级到 Semble 和 `rg`,其分析结果不能替代正式 Gate 或既定测试集。
70
+ - 面向旧项目的 Prototype 迁移、UX-LF 契约退役、升级保护报告、UI Acceptance 迁移和历史压缩均已有正式实现和验证。
71
+
72
+ ## 3. 已实现的 Workflow Manager 契约
73
+
74
+ ### 3.1 产品边界
75
+
76
+ 项目绑定的 Workflow Manager 已取代 Workflow Viewer 和独立的用户可见 Review Server。它负责工作流状态、合法流转、人工决策、项目原型审核、项目系统、Mock、需求、任务、测试、交付成果、事件和设置。
77
+
78
+ Workflow Manager 不是任意命令执行器、文件编辑器或 AI 执行器。它只暴露有契约的读取和变更动作;直接 YAML 修改、任意 shell、任意文件路径和绕过 Gate 均不属于产品能力。
79
+
80
+ ### 3.2 AI 协作契约
81
+
82
+ Workflow Manager 从一开始就是人和 AI 共同使用的控制面。UI 与 Workflow Manager Agent Interface 必须调用同一应用服务和业务规则:
83
+
84
+ - 每个读取能力提供稳定编号、项目/工作区/分支/迭代/Revision/checksum 上下文,以及版本化 JSON 的 `list`、`show`、`inspect` 或 `export` 命令。
85
+ - 每个写能力提供 package-delivered CLI/脚本、精确目标、expected revision/checksum、必要的 dry-run/plan、幂等语义、结构化结果、Receipt 和不可变事件。
86
+ - AI 可以发现关系、检查覆盖缺口、分析影响和执行经授权的受控动作;AI 建议不能自动成为正式关联,也不能自动修改需求、任务或节点状态。
87
+ - 浏览器自动化不是正式 Agent Interface,临时仓库脚本也不能替代发行包提供的受控接口。
88
+
89
+ ### 3.3 视觉与技术方向
90
+
91
+ - 已接受的视觉规范为 Operational Carbon:IBM Plex、白色/浅灰平面层级、1px 分隔线、0-2px 圆角、蓝色仅用于主操作和选中、显式语义状态色。
92
+ - 正式目标为桌面端 `1280x720` 和 `1440x900`,最小宽度 `1180px`;移动端不在范围内。
93
+ - 默认 UI 组件体系为 shadcn,图标统一使用 Lucide,管理界面使用中文。界面避免直接显示用户难以理解的术语,例如将 Artifact 表达为“交付成果”或具体业务物料名称。
94
+
95
+ ### 3.4 页面与导航
96
+
97
+ 当前设计包含 19 个固定且唯一的 Page 编号。编号只允许追加,不得重排或复用;Review Scene 使用 `Pxx-Syy`,管理器 Global Surface 使用 `Gxx/Gxx-Syy`,业务项目原型使用独立的 `APP-Pxx/APP-Pxx-Syy` 编号域。
98
+
99
+ | 模块 | 页面 |
100
+ | --- | --- |
101
+ | 工作台 | `P01` 工作台 |
102
+ | 交付管理 | `P02` 开发工作流、`P19` 产品需求、`P03` 任务执行、`P18` 测试用例、`P04` 交付成果 |
103
+ | 人工决策 | `P06` 决策收件箱 |
104
+ | 项目原型 | `P07` 项目原型概览、`P11` 视觉规范、`P12` 原型审批、`P13` 页面审核详情、`P16` 修改要求、`P14` 页面路由、`P15` 路由关系、`P17` 修订记录 |
105
+ | 运行环境 | `P08` 项目系统、`P09` 模拟服务 |
106
+ | 记录与追踪 | `P05` 操作与变更记录 |
107
+ | 系统 | `P10` 设置 |
108
+
109
+ `P13` 是上下文详情页,从 `P12`、`P14`、`P15` 或 `P17` 进入,不作为固定子菜单项。`P07-S06` 至 `P07-S18` 已永久退役且编号永不复用。
110
+
111
+ ### 3.5 页面职责
112
+
113
+ - `P01` 只回答“当前最需要关注什么、下一步去哪里”,不复制完整工作流或决策事实。
114
+ - `P02` 展示七节点、所选节点的工作内容、状态依据、合法流转和事实页下钻入口。任务、交付成果、事件/运行凭证和人工决策共同形成状态输入。
115
+ - `P03` 管理稳定任务、attempt、phase、依赖、验收、计划输出、下一行动和恢复入口。
116
+ - `P04` 管理交付成果版本、checksum、路径、生成方、有效性和引用关系。
117
+ - `P05` 保存不可变操作与变更历史,不直接修改当前状态。
118
+ - `P06` 没有决策超时;批准和退回都允许附加可选评论并供 AI 读取。UX 决策在 P11/P12 完成,P06 只提供摘要和入口。
119
+ - `P18` 管理测试用例版本和执行记录。Delivery Readiness 确定必需用例,Implementation 实现自动化,Candidate Assurance 对绑定候选版本执行完整验证。
120
+ - `P19` 使用通用关系模型连接需求与任意相关任务、原型、测试、交付成果、决定和事件,不把“前端任务/后端任务”写死为分类。
121
+
122
+ ### 3.6 项目原型审核
123
+
124
+ - `P07` 只汇总当前迭代的视觉规范、Page/Scene 审核覆盖、修改要求、路由完整性和 Revision 有效性。
125
+ - `P12` 提供当前迭代完整、可筛选的业务 Page 队列;`P13` 完整显示一个 Page 的所有 Review Scene、准确路由、绑定身份和审核动作。
126
+ - 打开 Scene 只切换目标,不算完成审核;明确记录绑定 checksum 的 Scene 审核事实后才计入覆盖。全部必审 Scene 有效后才能生成 Page Receipt。
127
+ - 修改要求支持文字和截图,草稿可多次编辑;审核批次固定后不可修改。用户在其使用的任意 AI 对话中说“按要求修改”或指定编号,AI 才读取已完成批次并开始调整。
128
+ - `P14` 是路由目录,`P15` 是由目录派生的路由关系图。P14/P15 节点可携带 Page、Scene、Logical Terminal、Revision、Prototype Revision checksum 和 Source Inspection Snapshot 身份跳转到 P13;P13 的源码模式只显示登记快照和 Scene 验收映射。
129
+ - `P16` 展示修改要求、审核批次、AI 读取、执行尝试和调整结果;`P17` 展示跨 Revision 的时间线和差异。
130
+
131
+ ### 3.7 项目系统与 Mock
132
+
133
+ - `P08` 的架构视图和列表视图分为两个 Tab。架构拓扑来自声明的预期架构,即使节点尚未实现或启动也必须显示;未实现节点使用虚线状态,注册实现后才允许跳转和受控管理。
134
+ - 项目系统随 Workspace/Git 分支绑定。当前分支实例可以在验证所有权和 Trust 后执行受限生命周期动作;其他分支只展示只读快照。
135
+ - 中间件类型由 Project System Registry 声明,不写死为 MySQL 或 Redis。中间件可登记有序初始化脚本,包括工作流生成的默认脚本和用户添加脚本。添加时既可选择本地文本文件,也可直接填写文件名和脚本文本;导入后仍可编辑,列表中的现有脚本也都允许再次打开修改。正式实现必须受控持久化修改、重算 checksum,并生成不可变事件和运行凭证。
136
+ - 用户未指定本地 Project System 的启动方式时默认采用 Docker。P08 必须展示启动方式及来源,并允许只读查看 Registry 已登记的项目内 `Dockerfile`、Compose 等 Docker 启动文件及其 checksum;未实现节点不得生成虚假文件或提供启动操作。
137
+ - `P09` 以易读方式展示当前协议、操作、触发条件、正常/业务异常/系统异常场景、模拟报文结果和来源协议文件。AI 后续通过受控脚本同步和管理定义,P09 保留人工查看、确认和排错入口。
138
+
139
+ ## 4. 正式原型与实现现状
140
+
141
+ 正式实现绑定的原型基线已晋级为 `wm-prototype-r33`,checksum `f98e7595`,包含 19 个 Page、126 个已分配 Scene、113 个活动 Scene、13 个永久退役 Scene,以及 1 个 Global Surface。原型使用 React、Vite、shadcn 风格组件和 Lucide,并在桌面尺寸上反复验证。
142
+
143
+ 已在原型中确认的重点包括:
144
+
145
+ - P02 分离项目上下文入口、设计流程和开发流程;节点工作列表具有列头、稳定列宽和事实页跳转。
146
+ - P07 与工作流管理器自身原型分离,只管理业务项目 Prototype。
147
+ - P08 分支上下文、架构/列表 Tab、未实现拓扑节点、动态中间件和初始化脚本管理。
148
+ - P08 在用户未指定时使用 Docker 默认启动方式,并按系统展示 Registry 登记的 Dockerfile/Compose 启动文件、来源、checksum 和只读内容预览。
149
+ - P08 初始化脚本支持导入本地文本文件、导入后继续编辑、直接新建文本,以及重新编辑列表中的系统生成和用户脚本;修改后明确显示“已修改”和“待重新计算”。
150
+ - P09 易读协议场景列表和协议文件入口。
151
+ - P13 多轮页面审核、文字和截图修改要求、Scene 覆盖凭证、废弃未执行要求、已执行锁定状态,以及登记 Source Inspection Snapshot 的只读主实现/状态分支/验收映射。
152
+ - P15 可点击的业务页面路由关系图。
153
+ - P19 需求到通用相关工作项的双向下钻和 AI 建议状态。
154
+
155
+ 原型源码已冻结为 `wm-prototype-r33@f98e7595`;P08 脚本新增、导入、导入后编辑、既有脚本修改,以及 r33 的 P14 → P13 源码审查上下文和两个桌面视口已验证通过。维护者于 2026-08-21 确认 UX-VS/UX-UI 审核通过,本次 Prototype-to-Frontend 晋级已同步正式 Manager 的公开基线和 Candidate Assurance 断言。19 个 Page 已进入 React 正式实现;原型若再次修改,必须先形成新 Revision、完成用户审核,再继续对应前端修改。
156
+
157
+ 当前正式浏览器测试遍历全部 19 个 Page,验证 P12 筛选、P13 Scene/Ctrl+V/保存、P14/P15 深链、P14 -> P13 Source Inspection Snapshot、P08 双 Tab/计划节点、P02 列头以及 `1280x720`、`1440x900` 无横向溢出或关键面板重叠;应用控制台无 error/warn。Manager 定向套件 97/97 通过,最终 `index.html` 引用的哈希资源已登记到 Git 索引。
158
+
159
+ ### 4.1 `0.4.0` 候选验证
160
+
161
+ - 当前 P0/P1/P2 候选包的精确路径、SHA-256、文件数和生命周期报告由维护仓库的 `audit/WORKFLOW-MANAGER-P0-P1-P2-CLOSURE.md` 固定登记。审计记录不在 npm 包范围内,因此不会导致候选包自引用;实际 tarball 和展开验证工作区仍保留在 `.tmp/`。
162
+ - 隔离新安装的 Doctor 除可选 CodeGraph 提示外全部通过;安装后 Manager 的主页、健康检查、`workflow-manager.v1` Schema、19 个 Page、七节点投影、25 个可发现受控动作和 r33 Prototype 投影均已实测。
163
+ - 隔离 `0.3.0` 项目的升级、迁移 dry-run、正式升级及回滚已实测。升级 Receipt 为 `UPGRADE-20260812T221812525Z-cde0bf7d`;回滚恢复 `0.3.0`、全部 7 个 Viewer 文件和升级前两个 Git 工作树状态,移除 Manager,并把 Receipt 标记为 `rolled_back`。升级前 Viewer 摘要为 `5cfb8de36f36ccf8149e6f8047e85e48b573a52ef28e67adf35d675497148369`。
164
+ - 候选包已对 `E:\work\ai\codex\tushare` 执行 `doctor`、`upgrade --dry-run` 和 `migrate --dry-run`,没有执行正式 apply。Doctor 识别出该旧安装已有的受管 Skill/运行时完整性漂移;升级计划没有受管资产冲突、不写代码仓库,并计划新增 Manager、替换 8 处受管资产、移除 Viewer。每个 dry-run 前后的工作流 Git 状态摘要一致。维护者于 2026-08-21 明确取消 `tushare` 正式升级/迁移;该项目保持只读,不得再次尝试 apply 或 force。
165
+ - `tushare` 当前不能直接迁移:一个旧 Prototype 来源文件与清单 checksum 不一致,183 个历史任务中有 24 个任务家族需要人工判断语义分组。迁移正确返回 `can_apply=false` 且没有修改业务状态;不得把该结果改写成迁移已就绪,也不得使用 force 绕过人工决策。
166
+
167
+ ### 4.2 v2 Prototype catalog Candidate Assurance
168
+
169
+ - 新安装交付把 v2 Prototype Revision 的运行时、Manager、Agent Interface、Experience Skill 和全部必需 catalog 模板列为包表面。`doctor` 在包表面缺失时立即失败,不再继续计算会因缺失运行时而崩溃的受管资产摘要。
170
+ - 新的生产路径只接受 `prototype-revision-catalog.v2`。Experience Skill、Project Template、安装后的 Manager 与 Candidate Assurance 都从同一 Revision/checksum 读取事实;缺少任一必需 catalog 的旧 Revision 被 CLI、HTTP 和 UI 确定性拒绝。`prototype-set.yaml` 及 member 文件仍保留为只读迁移输入,明确标记 `compatibility_mode: read-only-legacy` 和 `current_flow_output: false`,不得作为新流程输出或兼容回退。
171
+ - `verification/workflow-manager.test.mjs` 的隔离 Candidate Assurance 用当前工作树实际执行 `npm pack`,在 `.tmp/` 的独立 consumer 安装 tarball,并由安装后的 `ai-delivery init` 与 `doctor` 建立项目。它用多 Logical Terminal 的 v2 fixture 证明安装后的 Manager CLI、HTTP 和 P07/P11-P17 浏览器 UI 读取同一 Prototype Revision 身份和 checksum:每个 Web UI 请求和返回都显式为 `TERM-WEB`,P12 的 `TERM-ADMIN` 路由实际显示 Admin 目标而不回退到 Web。Component Candidate 通过 P11 提交 `candidate -> under-review`、已安装 CLI 提交 `under-review -> registered`、HTTP 提交 `registered -> modified`;每次 apply 均产生 Receipt/Event,CLI 与 HTTP 均重放同一幂等键。初始 CLI/HTTP 计划仍返回相同 plan/successor;删除 v2 `components` catalog 后,三种入口返回相同受控拒绝。测试覆盖 `1280x720` 与 `1440x900` 桌面视口,且有效 Revision 路径没有浏览器 console error/warn。
172
+ - 可重建证据和边界记录在 `audit/WORKFLOW-MANAGER-V2-CANDIDATE-ASSURANCE.md`。它不声明新的 npm 发布或替代 `audit/WORKFLOW-MANAGER-P0-P1-P2-CLOSURE.md` 的历史候选身份;生成的 tarball、consumer、缓存和浏览器临时文件都留在被忽略的 `.tmp/` 并在测试结束后删除。
173
+
174
+ ## 5. 开放事项
175
+
176
+ ### 2026-08-18 Issue 快照
177
+
178
+ 以下状态已通过 Gitee API 以 `hzr1348`(ID `17347733`)回读确认:
179
+
180
+ - `IK8BA0` 至 `IK8BA5` 的完成评论已写入并读回,评论编号为 `50884717` 至 `50884722`;每条评论绑定相应页面、应用服务、测试与候选证据。
181
+ - `IK8B9Z` 与 `IK8B9U` 的实现/规格完成评论已读回,编号为 `50884723`、`50884724`。
182
+ - `IK6HCD`、`IK89SN` 与 `IK6HCE` 的替代或完成说明已读回,编号为 `50884726`、`50884727`、`50884729`;前两项分别由 Manager 收敛和 P13 附件能力覆盖,候选验证由 `IK8BA5` 覆盖。
183
+ - Gitee v5 仓库 Issue 路由只声明 `OPTIONS, GET, HEAD`,不提供状态写入方法。因此在用户明确确认后,通过已登录的 Gitee 网页将上述 11 个 Issue 设为“已关闭”,并再次用 API v5 回读。每项均返回 `state: rejected`,这是 Gitee API 对网页“已关闭”状态的表示;关闭时间依次为 23:02:20 至 23:11:32(+08:00)。外部收尾门已满足。
184
+
185
+ ### 已关闭的历史 Issue
186
+
187
+ - [IK89SN](https://gitee.com/hzr1348/work-flow/issues/IK89SN):P13 已实现 `Ctrl+V` 粘贴图片、持久化、checksum 绑定和 AI 可读附件接口。
188
+ - [IK6HCD](https://gitee.com/hzr1348/work-flow/issues/IK6HCD):由 Workflow Manager 收敛旧 Viewer 的状态投影需求,避免继续建设重复产品。
189
+ - [IK6HCE](https://gitee.com/hzr1348/work-flow/issues/IK6HCE):`0.4.0` 候选包、隔离升级/迁移/回滚及 tushare dry-run 均已验证;正式 apply 与发布仍属于独立人工 Gate。
190
+
191
+ ### 下一阶段顺序
192
+
193
+ 1. P0/P1/P2 及 Prototype 治理 01–07 已完成;实现提交为 `ae70304`,后续 v2 Candidate Assurance 收尾提交为 `db8abfb`,候选验证与 11 个 Gitee Issue 收尾均已完成。
194
+ 2. `tushare` 正式升级/迁移已按维护者指示取消并保持只读;不得把历史 dry-run 改写为 apply 许可。
195
+ 3. r33 晋级改变了当前源码候选内容,历史 `0.4.0` r8 候选证据仍不可变且不能复用。npm 发布需在干净且同步的 `main` 上重新生成候选并通过 `release:check`、账号/2FA 与人工发布 Gate。
196
+
197
+ ## 6. 继续工作时必须读取的来源
198
+
199
+ - 领域语言:`CONTEXT.md`
200
+ - 原型优先:`docs/adr/0001-prototype-first-ui-governance.md`
201
+ - Mock 决策:`docs/adr/0002-microcks-as-default-mock-system.md`
202
+ - Workflow Manager 与 AI 接口:`docs/adr/0003-workflow-manager-governed-control-surface.md`
203
+ - 视觉规范:`docs/adr/0004-operational-carbon-visual-standard.md`
204
+ - 项目原型页面化:`docs/adr/0005-prototype-management-as-routed-pages.md`
205
+ - 当前临时原型说明:`.tmp/workflow-manager-prototype/README.md`
@@ -0,0 +1,47 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { parse as parseYaml } from "./yaml-runtime.mjs";
5
+
6
+ export function resolveContainedPath(root, relative, label) {
7
+ if (!relative || path.isAbsolute(relative)) throw new Error(`${label} must be a relative path.`);
8
+ const normalized = String(relative).replaceAll("\\", "/");
9
+ if (normalized.split("/").some((part) => part === "..")) {
10
+ throw new Error(`${label} resolves outside its allowed directory.`);
11
+ }
12
+ const resolvedRoot = path.resolve(root);
13
+ const resolved = path.resolve(resolvedRoot, normalized);
14
+ const relation = path.relative(resolvedRoot, resolved);
15
+ if (relation === ".." || relation.startsWith(`..${path.sep}`)) {
16
+ throw new Error(`${label} resolves outside its allowed directory.`);
17
+ }
18
+ if (fs.existsSync(resolvedRoot)) {
19
+ const realRoot = fs.realpathSync(resolvedRoot);
20
+ let existing = resolved;
21
+ while (!fs.existsSync(existing) && existing !== resolvedRoot) existing = path.dirname(existing);
22
+ const realRelation = path.relative(realRoot, fs.realpathSync(existing));
23
+ if (realRelation === ".." || realRelation.startsWith(`..${path.sep}`)) {
24
+ throw new Error(`${label} resolves outside its allowed directory through a symbolic link.`);
25
+ }
26
+ }
27
+ return resolved;
28
+ }
29
+
30
+ export function readYamlMapping(file, label) {
31
+ if (!fs.existsSync(file) || !fs.statSync(file).isFile()) throw new Error(`${label} is missing: ${file}`);
32
+ const value = parseYaml(fs.readFileSync(file, "utf8"));
33
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
34
+ throw new Error(`${label} must contain a YAML mapping.`);
35
+ }
36
+ return value;
37
+ }
38
+
39
+ export function requireSha256(value, label) {
40
+ const checksum = String(value || "");
41
+ if (!/^[a-f0-9]{64}$/.test(checksum)) throw new Error(`${label} checksum is missing or invalid.`);
42
+ return checksum;
43
+ }
44
+
45
+ export function sha256File(file) {
46
+ return crypto.createHash("sha256").update(fs.readFileSync(file)).digest("hex");
47
+ }