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.
- package/README.md +45 -14
- package/bin/ai-delivery.mjs +181 -6
- package/bin/benchmark-autonomy.mjs +217 -0
- package/bin/release-check.mjs +382 -0
- package/docs/CLI-PARAMETER-REFERENCE.zh-CN.md +346 -0
- package/docs/CODEGRAPH-INTEGRATION.zh-CN.md +89 -0
- package/docs/DUAL-REPOSITORY-WORKSPACE.zh-CN.md +2 -2
- package/docs/EVOLUTION-MAINTENANCE.zh-CN.md +7 -7
- package/docs/EVOLUTION-USER-GUIDE.zh-CN.md +2 -2
- package/docs/FILE-REFERENCE.zh-CN.md +120 -39
- package/docs/MAINTENANCE-VERIFICATION.zh-CN.md +51 -0
- package/docs/MOCK-SYSTEM.zh-CN.md +141 -0
- package/docs/NPM-RELEASE-MANAGEMENT.zh-CN.md +106 -0
- package/docs/PROJECT-MANUAL.zh-CN.md +154 -95
- package/docs/PROTOTYPE-MIGRATION.zh-CN.md +164 -0
- package/docs/STATE-CLI-MAINTENANCE.zh-CN.md +35 -17
- package/docs/STATE-CLI-USER-GUIDE.zh-CN.md +115 -39
- package/docs/VIEWER-MAINTENANCE.zh-CN.md +101 -324
- package/docs/VIEWER-USER-GUIDE.zh-CN.md +68 -190
- package/docs/adr/0001-prototype-first-ui-governance.md +3 -0
- package/docs/adr/0002-microcks-as-default-mock-system.md +3 -0
- package/docs/adr/0003-workflow-manager-governed-control-surface.md +46 -0
- package/docs/adr/0004-operational-carbon-visual-standard.md +9 -0
- package/docs/adr/0005-prototype-management-as-routed-pages.md +7 -0
- package/docs/agents/domain.md +12 -0
- package/docs/agents/issue-tracker.md +27 -0
- package/docs/agents/triage-labels.md +11 -0
- package/docs/agents/workflow-manager-acceptance-matrix.md +93 -0
- package/docs/agents/workflow-manager-agent-interface.md +145 -0
- package/docs/agents/workflow-manager-current-state.md +205 -0
- package/lib/artifact-files.mjs +47 -0
- package/lib/codegraph.mjs +405 -0
- package/lib/delivery-state.mjs +3079 -198
- package/lib/frontend-guard.mjs +288 -0
- package/lib/fs-utils.mjs +53 -0
- package/lib/history-anchor.mjs +98 -0
- package/lib/mock-scenario-pack.mjs +687 -0
- package/lib/mock-system.mjs +897 -0
- package/lib/npm-package-result.mjs +11 -0
- package/lib/png-evidence.mjs +149 -0
- package/lib/project-bootstrap.mjs +96 -55
- package/lib/project-installer.mjs +1484 -164
- package/lib/project-migration.mjs +1193 -0
- package/lib/prototype-migration.mjs +713 -0
- package/lib/prototype-page-review.mjs +384 -0
- package/lib/prototype-review-target.mjs +334 -0
- package/lib/prototype-revision.mjs +812 -0
- package/lib/stable-value.mjs +15 -0
- package/lib/toml-hooks.mjs +69 -0
- package/lib/ui-acceptance.mjs +565 -0
- package/lib/visual-standard.mjs +232 -0
- package/lib/workflow-manager-contracts.mjs +367 -0
- package/lib/workflow-manager-facts.mjs +778 -0
- package/lib/workflow-manager-governance.mjs +514 -0
- package/lib/workflow-manager-mock.mjs +183 -0
- package/lib/workflow-manager-prototypes.mjs +1847 -0
- package/lib/workflow-manager-public/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- package/lib/workflow-manager-public/assets/index-Chlg6r8f.css +1 -0
- package/lib/workflow-manager-public/assets/index-E-hGB5ZD.js +13 -0
- package/lib/workflow-manager-public/fonts/OFL-1.1.txt +90 -0
- package/lib/workflow-manager-public/index.html +14 -0
- package/lib/workflow-manager-systems.mjs +519 -0
- package/lib/workflow-manager-transaction.mjs +397 -0
- package/lib/workflow-manager.mjs +745 -0
- package/package.json +8 -2
- package/skills/ai-delivery-assemble-release/agents/openai.yaml +3 -3
- package/skills/ai-delivery-assemble-release/assets/release-material-index.csv +1 -1
- package/skills/ai-delivery-assemble-release/assets/version-inclusion.csv +1 -1
- package/skills/ai-delivery-bootstrap/SKILL.md +4 -4
- package/skills/ai-delivery-bootstrap/agents/openai.yaml +3 -3
- package/skills/ai-delivery-bootstrap/references/bootstrap-contract.md +4 -2
- package/skills/ai-delivery-checkpoint-task/SKILL.md +17 -3
- package/skills/ai-delivery-checkpoint-task/agents/openai.yaml +3 -3
- package/skills/ai-delivery-checkpoint-task/assets/runtime-template/task.json +7 -1
- package/skills/ai-delivery-checkpoint-task/references/checkpoint-contract.md +22 -8
- package/skills/ai-delivery-checkpoint-task/scripts/hook-event.mjs +91 -0
- package/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs +1086 -51
- package/skills/ai-delivery-close-version/SKILL.md +9 -8
- package/skills/ai-delivery-close-version/agents/openai.yaml +3 -3
- package/skills/ai-delivery-close-version/assets/version-lineage.yaml +1 -1
- package/skills/ai-delivery-close-version/references/version-closeout-contract.md +2 -2
- package/skills/ai-delivery-define-product/SKILL.md +8 -4
- package/skills/ai-delivery-define-product/agents/openai.yaml +4 -4
- package/skills/ai-delivery-define-product/references/product-contract.md +2 -2
- package/skills/ai-delivery-deploy-production/agents/openai.yaml +3 -3
- package/skills/ai-delivery-design-architecture/SKILL.md +9 -5
- package/skills/ai-delivery-design-architecture/assets/architecture-template/prototype-architecture-validation.yaml +16 -16
- package/skills/ai-delivery-design-architecture/references/architecture-contract.md +1 -1
- package/skills/ai-delivery-design-experience/SKILL.md +36 -30
- package/skills/ai-delivery-design-experience/agents/openai.yaml +4 -4
- package/skills/ai-delivery-design-experience/assets/experience-template/LEGACY-COMPATIBILITY.md +16 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/design-reference-selection.yaml +32 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/experience-baseline.yaml +2 -2
- package/skills/ai-delivery-design-experience/assets/experience-template/formal-ui-confirmation.yaml +16 -3
- package/skills/ai-delivery-design-experience/assets/experience-template/frontend-change-scope.yaml +30 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/interaction-contract.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/mock-admin-export.yaml +8 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/mock-scenario-mappings.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/mock-scenario-pack-request.yaml +24 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/product-prototype-reconciliation.yaml +2 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-adjustment-log.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-component-bindings.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-component-candidates.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-components.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-confirmation.yaml +18 -18
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-data-contracts.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-impact-assessment.yaml +5 -5
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-implementation-bindings.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-manifest.yaml +2 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-pages.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-product-coverage.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-comments.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-decision.yaml +13 -12
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-scenes.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-sessions.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-unit-pages.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-units.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-revision.yaml +88 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-routes.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-set.yaml +2 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-source-inspection-snapshots.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-terminals.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-tool-candidates.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-tool-selection.yaml +2 -3
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-traceability.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-trigger-conditions.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype.yaml +6 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/ui-framework-selection.yaml +17 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/ui-handoff.yaml +6 -5
- package/skills/ai-delivery-design-experience/assets/experience-template/ui-mapping.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/visual-direction.yaml +4 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/visual-reference-manifest.yaml +23 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/visual-reference.html +163 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/visual-system-confirmation.yaml +11 -0
- package/skills/ai-delivery-design-experience/references/experience-contract.md +26 -27
- package/skills/ai-delivery-design-experience/references/prototype-management-contract.md +42 -21
- package/skills/ai-delivery-design-tests/SKILL.md +13 -7
- package/skills/ai-delivery-design-tests/assets/test-design-template/prototype-test-scope.csv +1 -1
- package/skills/ai-delivery-design-tests/assets/test-design-template/prototype-test-validation.yaml +17 -16
- package/skills/ai-delivery-design-tests/references/test-design-contract.md +7 -5
- package/skills/ai-delivery-develop-iteration/SKILL.md +18 -11
- package/skills/ai-delivery-develop-iteration/agents/openai.yaml +3 -3
- package/skills/ai-delivery-develop-iteration/assets/development-template/candidate-manifest.yaml +36 -0
- package/skills/ai-delivery-develop-iteration/assets/development-template/task-prototype-traceability.csv +1 -1
- package/skills/ai-delivery-develop-iteration/references/development-contract.md +5 -3
- package/skills/ai-delivery-evolve-workflow/agents/openai.yaml +3 -3
- package/skills/ai-delivery-execute-test/SKILL.md +6 -2
- package/skills/ai-delivery-execute-test/agents/openai.yaml +4 -4
- package/skills/ai-delivery-execute-work-package/SKILL.md +10 -3
- package/skills/ai-delivery-execute-work-package/agents/openai.yaml +4 -4
- package/skills/ai-delivery-execute-work-package/references/work-package-contract.md +1 -1
- package/skills/ai-delivery-manage-git/agents/openai.yaml +3 -3
- package/skills/ai-delivery-manage-standards/agents/openai.yaml +4 -4
- package/skills/ai-delivery-orchestrate/SKILL.md +47 -29
- package/skills/ai-delivery-orchestrate/agents/openai.yaml +3 -3
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/migrations/.gitkeep +0 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/repairs/.gitkeep +0 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/delivery/project.yaml +1 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/delivery/workflow-state.yaml +2 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/frontend-guard/frontend-guard.mjs +50 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/hooks/hook-event.mjs +91 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/manager.mjs +64 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/start.cmd +4 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/start.ps1 +2 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/{viewer → manager}/start.sh +1 -1
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/mock/mock.mjs +50 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/ui-acceptance/ui-acceptance.mjs +37 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/AGENTS.md +32 -6
- package/skills/ai-delivery-orchestrate/assets/project-template/gitignore.template +1 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/CONTRIBUTING.md +25 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/LICENSE +21 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/README.md +250 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/UPSTREAM.yaml +19 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airbnb/DESIGN.md +545 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airbnb/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airtable/DESIGN.md +554 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airtable/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/apple/DESIGN.md +562 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/apple/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/binance/DESIGN.md +634 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/binance/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw/DESIGN.md +544 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw-m/DESIGN.md +503 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw-m/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bugatti/DESIGN.md +454 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bugatti/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cal/DESIGN.md +542 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cal/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/claude/DESIGN.md +589 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/claude/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clay/DESIGN.md +541 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clay/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clickhouse/DESIGN.md +544 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clickhouse/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cohere/DESIGN.md +451 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cohere/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/coinbase/DESIGN.md +570 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/coinbase/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/composio/DESIGN.md +506 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/composio/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cursor/DESIGN.md +537 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cursor/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/dell-1996/DESIGN.md +632 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/dell-1996/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/elevenlabs/DESIGN.md +504 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/elevenlabs/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/expo/DESIGN.md +526 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/expo/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ferrari/DESIGN.md +531 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ferrari/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/figma/DESIGN.md +578 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/figma/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/framer/DESIGN.md +544 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/framer/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hashicorp/DESIGN.md +575 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hashicorp/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hp/DESIGN.md +670 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hp/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ibm/DESIGN.md +550 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ibm/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/intercom/DESIGN.md +546 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/intercom/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/kraken/DESIGN.md +125 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/kraken/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lamborghini/DESIGN.md +288 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lamborghini/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/linear.app/DESIGN.md +548 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/linear.app/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lovable/DESIGN.md +298 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lovable/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mastercard/DESIGN.md +365 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mastercard/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/meta/DESIGN.md +683 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/meta/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/minimax/DESIGN.md +746 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/minimax/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mintlify/DESIGN.md +852 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mintlify/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/miro/DESIGN.md +825 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/miro/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mistral.ai/DESIGN.md +773 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mistral.ai/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mongodb/DESIGN.md +767 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mongodb/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nike/DESIGN.md +575 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nike/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nintendo-2001/DESIGN.md +649 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nintendo-2001/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/notion/DESIGN.md +821 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/notion/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nvidia/DESIGN.md +640 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nvidia/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ollama/DESIGN.md +539 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ollama/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/opencode.ai/DESIGN.md +521 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/opencode.ai/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/pinterest/DESIGN.md +597 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/pinterest/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/playstation/DESIGN.md +661 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/playstation/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/posthog/DESIGN.md +690 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/posthog/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/raycast/DESIGN.md +669 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/raycast/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/renault/DESIGN.md +589 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/renault/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/replicate/DESIGN.md +616 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/replicate/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/resend/DESIGN.md +585 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/resend/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/revolut/DESIGN.md +636 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/revolut/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/runwayml/DESIGN.md +244 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/runwayml/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sanity/DESIGN.md +357 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sanity/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sentry/DESIGN.md +551 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sentry/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/shopify/DESIGN.md +516 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/shopify/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/slack/DESIGN.md +482 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spacex/DESIGN.md +363 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spacex/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spotify/DESIGN.md +246 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spotify/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/starbucks/DESIGN.md +580 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/starbucks/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/stripe/DESIGN.md +487 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/stripe/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/supabase/DESIGN.md +462 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/supabase/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/superhuman/DESIGN.md +448 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/superhuman/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/tesla/DESIGN.md +286 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/tesla/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/theverge/DESIGN.md +339 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/theverge/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/together.ai/DESIGN.md +633 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/together.ai/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/uber/DESIGN.md +636 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/uber/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vercel/DESIGN.md +736 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vercel/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vodafone/DESIGN.md +538 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vodafone/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/voltagent/DESIGN.md +521 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/voltagent/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/warp/DESIGN.md +526 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/warp/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/webflow/DESIGN.md +588 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/webflow/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wired/DESIGN.md +497 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wired/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wise/DESIGN.md +544 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wise/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/x.ai/DESIGN.md +465 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/x.ai/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/zapier/DESIGN.md +537 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/zapier/README.md +5 -0
- package/skills/ai-delivery-orchestrate/references/formal-state-contract.md +65 -20
- package/skills/ai-delivery-orchestrate/references/workflow-model.md +7 -5
- package/skills/ai-delivery-orchestrate-release/SKILL.md +2 -2
- package/skills/ai-delivery-orchestrate-release/agents/openai.yaml +4 -4
- package/skills/ai-delivery-orchestrate-release/references/release-workflow-contract.md +1 -1
- package/skills/ai-delivery-plan-iteration/SKILL.md +11 -4
- package/skills/ai-delivery-plan-iteration/agents/openai.yaml +4 -4
- package/skills/ai-delivery-plan-iteration/assets/planning-template/scope-manifest.yaml +17 -0
- package/skills/ai-delivery-plan-iteration/assets/planning-template/slice-prototype-traceability.csv +1 -1
- package/skills/ai-delivery-plan-iteration/references/planning-contract.md +8 -2
- package/skills/ai-delivery-prepare-platform/SKILL.md +5 -1
- package/skills/ai-delivery-prepare-platform/agents/openai.yaml +4 -4
- package/skills/ai-delivery-prepare-release/agents/openai.yaml +4 -4
- package/skills/ai-delivery-review-change/SKILL.md +14 -4
- package/skills/ai-delivery-review-change/agents/openai.yaml +4 -4
- package/skills/ai-delivery-review-change/references/review-contract.md +6 -0
- package/skills/ai-delivery-triage-failure/SKILL.md +5 -1
- package/skills/ai-delivery-triage-failure/agents/openai.yaml +4 -4
- package/skills/ai-delivery-validate-artifacts/SKILL.md +6 -3
- package/skills/ai-delivery-validate-artifacts/agents/openai.yaml +4 -4
- package/skills/ai-delivery-validate-artifacts/references/artifact-contract.md +13 -13
- package/skills/ai-delivery-verify-candidate/SKILL.md +13 -6
- package/skills/ai-delivery-verify-candidate/agents/openai.yaml +3 -3
- package/skills/ai-delivery-verify-candidate/assets/verification-template/ui-acceptance-request.yaml +19 -0
- package/skills/ai-delivery-verify-candidate/assets/verification-template/ui-acceptance-results.yaml +53 -0
- package/skills/ai-delivery-verify-candidate/references/candidate-verification-contract.md +10 -2
- package/skills/ai-delivery-verify-production/agents/openai.yaml +3 -3
- package/skills/ai-delivery-design-experience/assets/experience-template/low-fidelity-confirmation.yaml +0 -32
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/app.js +0 -546
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/index.html +0 -199
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/styles.css +0 -529
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/server.mjs +0 -780
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/start.cmd +0 -4
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/start.ps1 +0 -2
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Prototype 迁移指南
|
|
2
|
+
|
|
3
|
+
本文说明如何把旧 `prototype-set.yaml` / member manifest 模型迁移为项目唯一逻辑 Prototype。迁移只处理开放迭代;关闭迭代和归档证据保持历史原貌。
|
|
4
|
+
|
|
5
|
+
## 1. 固定执行顺序
|
|
6
|
+
|
|
7
|
+
使用准备发布的同一个安装包依次执行:
|
|
8
|
+
|
|
9
|
+
```powershell
|
|
10
|
+
npx --yes --package .\ai-delivery-workflow-<version>.tgz ai-delivery upgrade . --dry-run
|
|
11
|
+
npx --yes --package .\ai-delivery-workflow-<version>.tgz ai-delivery upgrade .
|
|
12
|
+
npx --yes --package .\ai-delivery-workflow-<version>.tgz ai-delivery doctor .
|
|
13
|
+
npx --yes --package .\ai-delivery-workflow-<version>.tgz ai-delivery migrate . --dry-run
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
`upgrade` 只安装迁移能力、退休旧 `UX-LF` 契约并报告 `prototype_migration` follow-up;它不会应用 Prototype 迁移。只有审阅 `migrate --dry-run` 且报告 `can_apply: true` 后,才执行:
|
|
17
|
+
|
|
18
|
+
```powershell
|
|
19
|
+
npx --yes --package .\ai-delivery-workflow-<version>.tgz ai-delivery migrate .
|
|
20
|
+
npx --yes --package .\ai-delivery-workflow-<version>.tgz ai-delivery doctor .
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
每次 dry-run 都严格零写入。源文件、决定文件或目标文件变化后必须重新 dry-run。
|
|
24
|
+
|
|
25
|
+
## 2. 读取迁移报告
|
|
26
|
+
|
|
27
|
+
`upgrade --dry-run` 和 `migrate --dry-run` 都返回 `prototype_migration`:
|
|
28
|
+
|
|
29
|
+
| 字段 | 含义 |
|
|
30
|
+
| --- | --- |
|
|
31
|
+
| `status` | `not-required`、`ready`、`blocked` 或 `already-current`。 |
|
|
32
|
+
| `iteration_id` | 当前开放迭代;只有该迭代会产生新的唯一 Prototype。 |
|
|
33
|
+
| `source_checksum` | 旧 Prototype set/member 输入的聚合 SHA-256。 |
|
|
34
|
+
| `member_count` | 旧 set 声明的成员总数。 |
|
|
35
|
+
| `valid_member_count` | 通过身份、manifest 和 source 校验的成员数量。 |
|
|
36
|
+
| `invalid_member_count` | 声明但未通过完整性校验的成员数量。 |
|
|
37
|
+
| `legacy_sets` / `members` | 旧 set、member manifest、source、terminal 和 checksum 清单。 |
|
|
38
|
+
| `target` | 固定 `prototype_id: PROTOTYPE` 及 `.workflow/experience/<iteration-id>/` 目标。 |
|
|
39
|
+
| `merge_report` | 按 terminal、Page、route 和 file 稳定身份合并的记录与冲突。 |
|
|
40
|
+
| `unresolved_conflicts` | 尚未由 checksum 绑定人工决定解决的冲突。 |
|
|
41
|
+
| `preserved_history` | 关闭迭代和归档 set 的逐字节保留清单。 |
|
|
42
|
+
| `preserved_sources` | 应用前再次校验且不会原地改写的旧源文件。 |
|
|
43
|
+
| `approval` | 固定不复用旧批准;有旧成员时要求新的 `UX-UI`。 |
|
|
44
|
+
| `file_changes` | 新增描述/记录/Review Shell 和逐字节 source copy 的精确计划。 |
|
|
45
|
+
| `can_apply` | 所有结构、任务和 Prototype 歧义都关闭后才为 `true`。 |
|
|
46
|
+
|
|
47
|
+
`member_count`、`valid_member_count` 和 `invalid_member_count` 分别报告声明、有效和无效成员。损坏的 manifest、非法身份或 checksum 漂移会保留在声明总数与无效数中,并令 `status: blocked`,不能把它误判为没有旧成员。
|
|
48
|
+
|
|
49
|
+
### 2.1 零成员
|
|
50
|
+
|
|
51
|
+
有效旧 set 中没有成员,或当前开放迭代没有旧 set 时:
|
|
52
|
+
|
|
53
|
+
- `member_count: 0`、`valid_member_count: 0`、`invalid_member_count: 0`;
|
|
54
|
+
- `status: not-required`;
|
|
55
|
+
- `file_changes.additions` 和 `file_changes.copies` 为空;
|
|
56
|
+
- 不创建 Prototype 迁移文件,也不要求迁移专属 `UX-UI`。
|
|
57
|
+
|
|
58
|
+
### 2.2 单成员
|
|
59
|
+
|
|
60
|
+
单成员只有在以下条件全部无歧义时自动迁移:
|
|
61
|
+
|
|
62
|
+
- set 中身份与 member manifest 身份一致;
|
|
63
|
+
- manifest、source 与必须目录都声明 `sha256` 且实际字节匹配;
|
|
64
|
+
- source 和目录引用都是受控相对路径;
|
|
65
|
+
- terminal、Page、route、file 身份没有冲突;
|
|
66
|
+
- 目标路径不存在不同字节。
|
|
67
|
+
|
|
68
|
+
满足时报告 `status: ready`、`can_apply: true`。任一条件失败均为 `blocked`,不会用猜测或显示名称补齐身份。
|
|
69
|
+
|
|
70
|
+
### 2.3 多成员
|
|
71
|
+
|
|
72
|
+
多成员不会重新切片。迁移器按稳定身份汇总:
|
|
73
|
+
|
|
74
|
+
- `merge_report.terminals`;
|
|
75
|
+
- `merge_report.pages`;
|
|
76
|
+
- `merge_report.routes`;
|
|
77
|
+
- `merge_report.files`;
|
|
78
|
+
- `merge_report.conflicts`。
|
|
79
|
+
|
|
80
|
+
相同身份且记录 checksum 相同的定义自动合并;相同身份但定义不同的记录生成稳定 `conflict_id`,等待人工选择 canonical member。每个成员的 source 仍逐字节复制到 `prototype/source/<member-id>/`,不会把不同源码树混写成一个目录。
|
|
81
|
+
|
|
82
|
+
## 3. 冲突决定文件
|
|
83
|
+
|
|
84
|
+
决定文件同时承载任务分组和 Prototype 冲突,所以有且只有一份文件,并同时保留 `decisions` 与 `prototype_decisions`:
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
schema_version: 1
|
|
88
|
+
source_checksum: <migrate-dry-run anchors.proposed.source_checksum>
|
|
89
|
+
actor: human:delivery-owner
|
|
90
|
+
decisions: []
|
|
91
|
+
prototype_decisions:
|
|
92
|
+
- conflict_id: PROTO-CONFLICT-0123456789ABCDEF
|
|
93
|
+
action: choose-member
|
|
94
|
+
member_id: PROTO-WEB
|
|
95
|
+
rationale: 该成员是此稳定身份的已确认权威来源
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
任务分组有歧义时,从 `task_grouping.decision_template.decisions` 填写 `decisions`;Prototype 有冲突时,从 `prototype_migration.decision_template.prototype_decisions` 填写 `prototype_decisions`。每项 Prototype 决定必须:
|
|
99
|
+
|
|
100
|
+
- 使用 dry-run 返回的原 `conflict_id`;
|
|
101
|
+
- 使用 `action: choose-member`;
|
|
102
|
+
- 从该冲突的 `member_ids` 中选择一个 `member_id`;
|
|
103
|
+
- 提供非空 `rationale`;
|
|
104
|
+
- 由 `human:<identity>` actor 作出;
|
|
105
|
+
- 绑定当前迁移 `source_checksum`。
|
|
106
|
+
|
|
107
|
+
复核和应用必须使用同一文件:
|
|
108
|
+
|
|
109
|
+
```powershell
|
|
110
|
+
ai-delivery migrate . --decisions .\migration-decisions.yaml --dry-run
|
|
111
|
+
ai-delivery migrate . --decisions .\migration-decisions.yaml
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
未知、重复、缺失或过期的决定一律失败关闭。
|
|
115
|
+
|
|
116
|
+
## 4. 应用结果与不可变边界
|
|
117
|
+
|
|
118
|
+
应用只在 `.workflow/experience/<iteration-id>/` 新增:
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
prototype.yaml
|
|
122
|
+
prototype-migration.yaml
|
|
123
|
+
prototype/source/<legacy-member-id>/...
|
|
124
|
+
prototype/review-shell/index.html
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`prototype.yaml` 的状态是 `migration-pending-ux-ui`,`current_revision_ref` 为 `null`;`prototype-migration.yaml` 记录旧 set/member、合并结果、人工决定、历史保留清单和批准政策。
|
|
128
|
+
|
|
129
|
+
以下内容保持原字节:
|
|
130
|
+
|
|
131
|
+
- 旧 `prototype-set.yaml`、member manifest、成员 source 和目录;
|
|
132
|
+
- 关闭迭代与归档 Prototype;
|
|
133
|
+
- 已有 Gate 文件和 Gate 决定;
|
|
134
|
+
- 旧事件、正式状态视图和归档证据。
|
|
135
|
+
|
|
136
|
+
迁移清单使用 schema 3 记录 Prototype 新增与复制文件的 checksum,供受保护回滚使用。迁移后出现新正式事务或目标字节漂移时,回滚失败关闭,只能前向修复。
|
|
137
|
+
|
|
138
|
+
## 5. 重新通过 UX-UI
|
|
139
|
+
|
|
140
|
+
开放迭代不会继承旧 member/set 的批准。升级退休 pending `UX-LF` 后会续接 pending `UX-UI`;迁移完成后必须在同一个逻辑 Prototype 中完成:
|
|
141
|
+
|
|
142
|
+
1. 按新目录和当前视觉规范整理完整 source、Review Shell 及规范化目录;
|
|
143
|
+
2. 冻结新的不可变 `prototype-revision.yaml`;
|
|
144
|
+
3. 运行 `prototype-revision validate`;
|
|
145
|
+
4. 启动 Workflow Manager,并在 P12/P13 打开该精确 revision;
|
|
146
|
+
5. 由用户逐 Page/Review Scene 审核并完成新的 `UX-UI`;
|
|
147
|
+
6. 之后才允许修改正式前端。
|
|
148
|
+
|
|
149
|
+
迁移生成的占位 Review Shell 只帮助定位旧成员,不是完整冻结 revision。Workflow Manager 不能对 `current_revision_ref: null` 或未冻结、未完整校验的迁移状态签发批准。
|
|
150
|
+
|
|
151
|
+
## 6. Workflow Manager
|
|
152
|
+
|
|
153
|
+
Workflow Manager 可以查看 `.workflow/experience/<iteration-id>/prototype-migration.yaml`、迁移清单及其 checksum,用于审计“从什么迁到什么”,但不会把迁移完成推断为设计批准。P11 只接受精确 Visual Reference,P12/P13 只接受完整、冻结、校验通过的 Prototype Revision;Page 决定、审核凭据和最终 `UX-UI` 只能通过 Manager 白名单动作产生。
|
|
154
|
+
|
|
155
|
+
## 7. 完成检查
|
|
156
|
+
|
|
157
|
+
迁移完成后至少确认:
|
|
158
|
+
|
|
159
|
+
- `migrate` 返回 `applied: true` 且 `prototype_migration.applied: true`;
|
|
160
|
+
- `doctor` 的 required checks 全部通过,包括 `package-surface`;
|
|
161
|
+
- 旧 set/member、关闭/归档证据和旧事件 checksum 未变化;
|
|
162
|
+
- 新 `prototype.yaml` 指向唯一 `PROTOTYPE`,状态为 `migration-pending-ux-ui`;
|
|
163
|
+
- 开放迭代存在待完成的新 `UX-UI`,旧批准未复用;
|
|
164
|
+
- 后续所有正式前端修改仍遵守“先改 Prototype -> 用户确认 -> 再改正式前端”。
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# 正式状态 CLI 维护指南
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
当前生产图是 `development-seven-node`:`00-bootstrap -> 01-product-shaping -> 02-solution-design -> 03-delivery-readiness -> 04-implementation -> 05-candidate-assurance -> 06-version-closeout`。旧 13 个研发节点仅保留只读兼容:解析、`inspect`、`verify`、`rebuild` 和显式迁移继续消费历史记录;所有新任务、物料登记、transition、candidate、版本收尾和 Gate mutation 在写入及 Hook dispatch 前拒绝。`R00-release-request` 至 `R10-release-archive` 继续允许写入。
|
|
4
|
+
|
|
5
|
+
正式状态写入会先完整暂存权威事件分片、全局兼容视图和 JSONL 事件索引,持久化 prepared journal,再提交各目标并写入 committed marker;同步异常时恢复原文件,进程中断后由下一次受锁 mutation 或 `rebuild` 幂等恢复。`inspect`、`verify`、Bootstrap 诊断与 Workflow Manager 正式状态读取期间获取与 mutation 共用的 formal-state lock;活动 writer、其他 reader 或未恢复 journal 均使读取 fail-closed,避免检查通过后又读到混合 revision。只读调用方不得接管死锁或执行事务恢复。日常 `verify` 不遍历历史分片,只校验当前视图、JSONL 索引、物料和状态不变量;显式 `verify --history` 还检查全部事件分片的连续性、元数据、记录 checksum、schema 2 checksum 链以及最新 replay 结果与全局视图的一致性。`rebuild` 按 revision replay 每个 stream,并按确定顺序重建 JSONL 索引。
|
|
4
6
|
|
|
5
7
|
## 1. 权威源码与安装结果
|
|
6
8
|
|
|
@@ -35,15 +37,20 @@
|
|
|
35
37
|
- `workflow-state`;
|
|
36
38
|
- `artifact-registry`。
|
|
37
39
|
|
|
40
|
+
artifact registry 与 workflow state 的新 mutation 都使用 schema 2 增量事务。schema 2 记录包含 `transaction_id`、`idempotency_key`、`before_revision`、`after_revision`、`operations`、`previous_checksum`、`after_checksum` 和 `record_checksum`。artifact operations 只携带 registry 元数据、本次新增物料或本次新增 handoff 关系;workflow operations 只携带顶层元数据和本次受影响的 scope,首个 delta 同时固化两个 scope 作为 replay 基线。带已登记 evidence 的 transition 或 Gate 会向 registry 顶层 `handoffs` 追加独立关系,不改写 evidence artifact revision,并把 workflow delta 与 artifact delta 放入同一个 `transaction_id` 和恢复 journal;任一 stream 写入失败时整个语义动作回滚。
|
|
41
|
+
|
|
38
42
|
每次 mutation:
|
|
39
43
|
|
|
40
|
-
1.
|
|
41
|
-
2. 读取并比较 `--expected-revision`;
|
|
44
|
+
1. 获取 mutation 与只读正式状态快照共用的 formal-state lock,避免并发追加或读取时观察到部分提交;
|
|
45
|
+
2. artifact 读取并比较 `--expected-revision`;workflow 读取并比较 owning scope 的 `--expected-scope-revision`,旧顶层参数只作兼容;
|
|
42
46
|
3. 校验命令输入和跨文件引用;
|
|
43
|
-
4. revision
|
|
44
|
-
5.
|
|
45
|
-
6.
|
|
46
|
-
7.
|
|
47
|
+
4. 每个受影响 aggregate 的 revision 分别加一;
|
|
48
|
+
5. 生成同一语义动作涉及的全部事件分片、当前 YAML、兼容视图和下一版 JSONL 的完整暂存内容,并对每个原文件和新文件记录 checksum;
|
|
49
|
+
6. 持久化一个 prepared journal,再替换全部目标;捕获到异常时按 checksum 恢复整个写集合;
|
|
50
|
+
7. 所有目标替换完成后持久化 committed marker,再清理备份、暂存文件和 journal;
|
|
51
|
+
8. 进程中断后,下一次受锁 mutation 或 `rebuild` 回滚 prepared journal,或验证并清理 committed journal;锁持有进程仍存活时拒绝接管;
|
|
52
|
+
9. schema 2 事务把前一分片 `record_checksum` 写入 `previous_checksum`,旧分片没有记录 checksum 时使用其规范化记录 checksum 作为链锚;scope start 的 `project.yaml` 兼容字段与 workflow shard、当前视图、JSONL 同事务提交;物料交接的 workflow/artifact 分片共享事务 ID;
|
|
53
|
+
10. 释放锁。
|
|
47
54
|
|
|
48
55
|
不要在新调用方中解析并重写正式 YAML。调用 `executeDeliveryStateCommand()`,或在已安装项目中执行 `.workflow/tools/state/state.mjs`。bootstrap 已按此边界登记诊断报告。
|
|
49
56
|
|
|
@@ -53,34 +60,37 @@
|
|
|
53
60
|
|
|
54
61
|
- `inspect`
|
|
55
62
|
- `verify`
|
|
63
|
+
- `snapshot create`
|
|
56
64
|
- `artifact register`
|
|
57
65
|
- `artifact status`
|
|
66
|
+
- `artifact compact`(顶层 `ai-delivery compact --dry-run` 为零写入;apply 先验证压缩归档再移除 loose history)
|
|
67
|
+
- `artifact prune`(默认零写入 dry-run,显式 `--apply` 才执行保留裁剪)
|
|
58
68
|
- `transition`
|
|
59
69
|
- `gate request`
|
|
60
70
|
- `gate decide`
|
|
61
71
|
|
|
62
72
|
`transition` 还承载两个受约束的里程碑事件:
|
|
63
73
|
|
|
64
|
-
- `version-closed`:校验已完成的 `
|
|
74
|
+
- `version-closed`:校验已完成的 `06-version-closeout` 和 `release-ready` 物料,只更新 `latest_line_version_id`;
|
|
65
75
|
- `release-archived`:校验已完成的 `R10-release-archive`、`released` 物料和目标生产版本,只更新 `production_version_id`、`production_release_id`。
|
|
66
76
|
|
|
67
|
-
这些字段属于 `workflow-state` 审计流。不得把 `project.yaml`
|
|
77
|
+
这些字段属于 `workflow-state` 审计流。不得把 `project.yaml` 变成第二写入口,也不得由 Workflow Manager UI、Hook 或 R09 直接回写。
|
|
68
78
|
|
|
69
79
|
新增行为时遵循一个失败测试、最小实现、单文件测试的 TDD 循环。测试只通过 `executeDeliveryStateCommand()` 或真实 CLI 观察行为,不测试内部函数。
|
|
70
80
|
|
|
71
81
|
任何新增 mutation 都必须:
|
|
72
82
|
|
|
73
|
-
- 要求 `--expected-revision`;
|
|
83
|
+
- artifact 要求 `--expected-revision`,workflow 要求 `--expected-scope-revision`;
|
|
74
84
|
- 使用正确 stream lock;
|
|
75
85
|
- 原子写;
|
|
76
86
|
- 产生审计事件;
|
|
77
|
-
-
|
|
87
|
+
- 返回新的 stream revision,并为 workflow 返回 `scope_revision`;
|
|
78
88
|
- 保持 `verify` 可检测绕过写入;
|
|
79
89
|
- 在用户手册、正式状态契约和相关节点 Skill 中同步说明。
|
|
80
90
|
|
|
81
91
|
## 5. `verify` 契约
|
|
82
92
|
|
|
83
|
-
|
|
93
|
+
日常 `verify` 校验:
|
|
84
94
|
|
|
85
95
|
- `workflow-state.schema_version` 为 2(兼容读取 1),`artifact-registry.schema_version` 为 1;
|
|
86
96
|
- revision 为非负整数;
|
|
@@ -91,13 +101,19 @@
|
|
|
91
101
|
- 物料文件存在于 `.workflow/` 内,真实路径不逃逸;
|
|
92
102
|
- 登记 checksum 与当前文件 SHA-256 一致。
|
|
93
103
|
|
|
104
|
+
可信快照写入 `.workflow/control/snapshots/formal-state/<anchor-id>/`。`snapshot create --id <anchor-id> --reason version-boundary` 创建版本边界锚点;`snapshot create --reason configured-interval` 读取 `project.yaml.formal_state_snapshot_interval`,未达到正整数阈值时无写入返回。相同最新锚点 ID、reason、stream revision 和视图 checksum 均未变化时,重跑返回 `deduplicated: true`;其他已存在 ID 拒绝覆盖。锚点事务同时写入两个正式视图的原字节副本、带自校验 checksum 的 `anchor.yaml` 和带自校验 checksum 的 `latest.yaml`。锚点记录 stream revision、视图 checksum、记录链头、JSONL 字节偏移和事件数。首次创建前运行完整历史校验;后续创建以前一可信锚点为 replay 基线,只校验后缀。
|
|
105
|
+
|
|
106
|
+
`snapshot references --iteration-id <id> [--candidate-id <id>]` 是版本归档唯一可信引用投影。它复用正式状态模块的 anchor 校验,在同一读锁内验证 pointer、anchor、快照、scope manifest 与 candidate,并为 Gate decision 生成 canonical checksum。checkpoint 任务脚本只能消费该 JSON 输出,不得复制 anchor 校验逻辑。
|
|
107
|
+
|
|
108
|
+
已有锚点时,日常 `verify` 验证锚点与快照 checksum、当前正式视图和 JSONL 后缀,不读取事件分片或解压历史归档。`verify --history --since-anchor` 额外要求锚点后每个 stream 的分片数量与 revision 差一致,后缀 revision 各出现一次,分片元数据与 JSONL 后缀一致,记录 checksum 和 checksum 链连续,并从锚点快照 replay 到当前正式视图。没有 compaction/retention 时,`verify --history` 保持完整历史审计:要求每个 stream 的分片数量与当前 revision 一致,revision 1 到当前 revision 各出现一次,并 replay 全部旧快照与 delta。`artifact compact` 只选择最新可信 anchor 覆盖的 legacy `after_value` shards;dry-run 零写入计算 root digest、coverage 和净释放空间,apply 先写 gzip bundle/manifest、重新校验所有 entry checksum 并 replay 到锚定 registry checksum,验证失败不得移动 loose 文件。成功后 `verify --history` 返回 `compacted-history` 并审计归档包与保留后缀。`artifact prune` 则删除 anchor 前缀并写 `.workflow/control/retention/artifact-registry/<anchor-id>.yaml` receipt;其 `verify --history` 返回 `retained-history`,不能伪称重新审计已删除字节。`rebuild` 以 anchor 原字节快照为基线,不得从 revision 0 replay 或重写仍承担 anchor 边界的 JSONL 索引。
|
|
109
|
+
|
|
94
110
|
JSONL 审计不是外部签名账本。拥有仓库写权限的人可以同时篡改状态和审计文件;高保证环境应把 Git 签名、CI 证明或外部不可变审计存储作为补充,不能宣称本地 checksum 可抵御恶意共同篡改。
|
|
95
111
|
|
|
96
|
-
## 6.
|
|
112
|
+
## 6. Workflow Manager 集成
|
|
97
113
|
|
|
98
|
-
|
|
114
|
+
Workflow Manager 通过正式状态模块读取 `derived_node_states`、Gate 和已登记物料,不重新实现状态推导。Manager 的资源投影只读;需要 Gate 决定时,白名单动作调用同一正式状态服务,并保留 actor、evidence、revision 与 Receipt。UI 不能直接写 YAML 或绕过 mutation。
|
|
99
115
|
|
|
100
|
-
|
|
116
|
+
Manager 在安装项目中复用同一 vendored YAML;发行仓库测试回退到包依赖。修改目录关系时同时验证维护源码、安装后 runtime 和 CLI/HTTP/UI 一致性。
|
|
101
117
|
|
|
102
118
|
## 7. Evolution Hook 接线
|
|
103
119
|
|
|
@@ -109,7 +125,7 @@ JSONL 审计不是外部签名账本。拥有仓库写权限的人可以同时
|
|
|
109
125
|
node --test verification/delivery-state.test.mjs
|
|
110
126
|
node --test verification/project-installer.test.mjs
|
|
111
127
|
node --test verification/project-bootstrap.test.mjs
|
|
112
|
-
node --test verification/workflow-
|
|
128
|
+
node --test verification/workflow-manager*.test.mjs
|
|
113
129
|
npm test
|
|
114
130
|
node --test verification/checkpoint-task-state.test.mjs
|
|
115
131
|
npm run audit:verify
|
|
@@ -121,6 +137,8 @@ npm run audit:verify
|
|
|
121
137
|
|
|
122
138
|
`workflow-state.yaml` 当前 schema 为 2。修改状态实现时必须保持 schema 1 只读兼容,并分别验证 `development_state` 与 `release_state` 的 scope、局部 revision、节点集合、Gate 集合和节点尝试。流程图不能退化为简单“上一编号节点”判断:平台准备允许并行,体验与产品允许带原因重开,后续迭代允许用成功的冻结基线物料满足未受影响的前置条件。
|
|
123
139
|
|
|
140
|
+
独立 aggregate 的 writer 仍通过共享提交区串行更新 JSONL 和全局视图,但使用各自的 aggregate revision:最多等待可识别的活动事务 30 秒,获取锁后重新读取并可分别成功。同一 aggregate 的 writer 在等待后必须因 revision conflict fail-closed。未知格式锁和只读入口不等待、不恢复,遇到 live lock 或 journal 立即失败。
|
|
141
|
+
|
|
124
142
|
安装诊断不得从项目内可编辑 manifest 推导可信 Skill 集合。固定 Skill 清单、Skill 目录摘要、Hook 摘要和状态运行时摘要以发行包为准;manifest 必须与发行包一致。`doctor` 还必须运行安装后状态 CLI 的 `inspect` 与 `verify`,并校验 JSON 输出语义。
|
|
125
143
|
|
|
126
144
|
正式状态相关变更只有在以下条件全部满足后才完成:
|
|
@@ -129,7 +147,7 @@ npm run audit:verify
|
|
|
129
147
|
- 安装后的自包含 CLI 实际可运行;
|
|
130
148
|
- bootstrap 等调用方没有直接写正式状态;
|
|
131
149
|
- `doctor` 检查运行时完整;
|
|
132
|
-
-
|
|
150
|
+
- Manager 的状态投影仍为只读,白名单 Gate 动作仍经正式状态服务并正确显示结果;
|
|
133
151
|
- 25 个 Skill 通过校验;
|
|
134
152
|
- 审计物料校验和全量测试通过;
|
|
135
153
|
- 用户手册、维护手册、文件索引和相关 Skill 已同步。
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
# 正式状态 CLI 使用指南
|
|
2
2
|
|
|
3
|
+
当前研发生产模型是 `development-seven-node`:`00-bootstrap -> 01-product-shaping -> 02-solution-design -> 03-delivery-readiness -> 04-implementation -> 05-candidate-assurance -> 06-version-closeout`。生产 Skill 为新任务、物料和 transition 使用这些节点 ID。旧 13 个研发节点仅保留只读兼容:`inspect`、`verify`、`rebuild` 和显式迁移可读取历史记录;新任务、物料登记、transition、candidate、版本收尾和 Gate 写入全部拒绝。`R00-release-request` 至 `R10-release-archive` 继续允许写入。
|
|
4
|
+
|
|
3
5
|
## 可重建视图
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
正式状态 mutation 会生成 `.workflow/control/events/<stream>/<revision>-<event-id>.yaml` 权威事件分片,并与 `workflow-state.yaml` 或 `artifact-registry.yaml` 当前视图及 `state-events.jsonl` 索引作为一组提交。workflow 与 artifact mutation 都使用 schema 2 增量事务:事件只保存顶层元数据和受影响的 scope 或物料,不再嵌入完整视图;scope start 还把 `project.yaml` 兼容身份纳入同一事务。带已登记 evidence 的 transition/Gate 会在同一事务中同时生成 workflow delta 和 artifact handoff delta,并向 registry 顶层 `handoffs` 追加独立关系;已登记 artifact revision 的字段保持不变。提交前会在 `.workflow/delivery/runtime/formal-state-locks/` 写入恢复 journal;`inspect`、`verify`、Bootstrap 诊断及 Workflow Manager 正式状态读取期间持有同一把 formal-state lock,遇到并发 mutation 或未恢复 journal 时 fail-closed,不会返回混合 revision。mutation writer 最多等待可识别的活动提交 30 秒,获取锁后重新读取并校验自己的 aggregate revision。下一次 mutation 或 `rebuild` 根据 commit marker 回滚 prepared 事务或清理 committed 事务。旧的完整快照分片保持只读兼容且不会在首次追加新事务时被改写。视图丢失或损坏时执行:
|
|
6
8
|
|
|
7
9
|
```powershell
|
|
8
10
|
node .workflow/tools/state/state.mjs rebuild
|
|
9
11
|
node .workflow/tools/state/state.mjs verify
|
|
12
|
+
node .workflow/tools/state/state.mjs verify --history
|
|
13
|
+
node .workflow/tools/state/state.mjs verify --history --since-anchor
|
|
10
14
|
```
|
|
11
15
|
|
|
12
|
-
`rebuild`
|
|
16
|
+
`rebuild` 不从聊天记录推断状态,只读取不可变事件分片,并可连续 replay 旧快照和新增量事务。没有事件分片的历史项目保持原视图不变。未创建锚点时,日常 `verify` 校验完整 JSONL 索引但不遍历历史分片;已有可信锚点时,它验证锚点和当前状态后只读取 JSONL 后缀。`verify --history --since-anchor` 进一步校验并 replay 锚点后的分片。`verify --history` 仍显式校验全部历史分片的连续性、元数据、记录 checksum、增量事务 checksum 链及其与 JSONL 和当前视图的一致性。
|
|
13
17
|
|
|
14
18
|
> 适用入口:`.workflow/tools/state/state.mjs`
|
|
15
19
|
> 适用范围:正式流程、物料、Gate、候选和发布状态
|
|
@@ -19,7 +23,7 @@ node .workflow/tools/state/state.mjs verify
|
|
|
19
23
|
`.workflow/delivery/workflow-state.yaml` 和 `.workflow/delivery/artifact-registry.yaml` 是研发流程的控制面,不是普通说明文档。通过脚本修改可以统一完成:
|
|
20
24
|
|
|
21
25
|
- revision 乐观并发控制;
|
|
22
|
-
-
|
|
26
|
+
- 文件锁和分片、当前视图、JSONL 索引的事务提交;
|
|
23
27
|
- 物料 SHA-256 登记;
|
|
24
28
|
- Gate 证据和决策人校验;
|
|
25
29
|
- 节点状态不变量校验;
|
|
@@ -39,112 +43,182 @@ Hook 只记录脱敏生命周期事件和心跳,不得修改两类状态,也
|
|
|
39
43
|
|
|
40
44
|
## 3. 标准操作顺序
|
|
41
45
|
|
|
42
|
-
1. 先通过只读 Bootstrap inspect 读取 `next_action_owner`;仅当它为 `agent` 时才用 `task-state.mjs recover` 恢复并激活 `recommended_task_id
|
|
46
|
+
1. 先通过只读 Bootstrap inspect 读取 `next_action_owner`;仅当它为 `agent` 时才用 `task-state.mjs recover` 恢复并激活 `recommended_task_id`。推荐状态为 `failed` 时使用 `activate --new-attempt --phase repair`;Bootstrap 不会自动创建 attempt。`user/external` 等待态禁止写入;收到所需输入后,用带新 `--next-action` 的 `activate --next-action-owner agent` 原子恢复本机 runtime 并接管任务。
|
|
43
47
|
2. 在 `.workflow/` 写入并验证本节点交付物。
|
|
44
|
-
3. 运行 `inspect`,取得 `
|
|
48
|
+
3. 运行 `inspect`,取得 owning `development_state.revision` 或 `release_state.revision`,以及 `artifact_registry.revision`;顶层 `workflow_state.revision` 仅用于审计串行化和旧调用兼容。
|
|
45
49
|
4. 登记物料或更新物料状态。
|
|
46
50
|
5. 需要 Gate 时提交请求并记录明确决定。
|
|
47
51
|
6. 使用已登记物料作为 evidence 完成节点流转。
|
|
48
52
|
7. 运行 `verify`。
|
|
49
53
|
8. 将物料 ID、revision 和验证结果写入任务 checkpoint 或完成记录。
|
|
50
54
|
|
|
55
|
+
任务层使用稳定逻辑身份。初始化时用 `--scope`、`--acceptance` 和 `--responsibility` 固定 iteration、node、skill、goal、范围、验收、责任边界和依赖;同一 ID、同一契约重复 `init` 是零写入,相同契约换用新 ID 会失败。契约实质变化时必须创建新任务,并使用 `--derived-from` 或 `--supersedes` 建立显式关系。规划、实现、评审、分诊、修复、测试和验证使用同一任务下的结构化 attempt/phase,不再创建 F/R/T/P/vN 后缀任务。
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
node .agents/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs inspect --task-id TASK-01 --include-closed
|
|
59
|
+
node .agents/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs activate --task-id TASK-01 --phase implementation
|
|
60
|
+
node .agents/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs finish --task-id TASK-01 --status failed --phase review --finding-json '{"finding_id":"FIND-01","severity":"blocking","status":"open","summary":"验收分支未覆盖"}' --change-set-json '{"change_set_id":"CHANGESET-01","approval_actor":"product-owner@example.invalid","rationale":"集中修复完整反馈集","finding_ids":["FIND-01"],"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 "执行修复"
|
|
61
|
+
node .agents/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs activate --task-id TASK-01 --new-attempt --phase repair --next-action "执行已批准修复集"
|
|
62
|
+
node .agents/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs finish --task-id TASK-01 --status completed --phase review --finding-json '{"finding_id":"FIND-01","severity":"blocking","status":"resolved","summary":"验收分支已覆盖","evidence":["test-report@2"],"changed_files":["src/acceptance.mjs"],"change_set_id":"CHANGESET-01"}' --next-action "恢复迭代"
|
|
63
|
+
node .agents/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs init --task-id TASK-02 --iteration-id ITER-01 --node implementation --skill ai-delivery-develop-iteration --status queued --goal "扩展后的任务" --scope SLICE-02 --acceptance AC-02 --derived-from TASK-01 --next-action "等待范围批准"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`init` 只创建 queued 任务,默认状态也是 queued;其它状态会被拒绝。queued 没有 attempt,只有首次 activate 会检查依赖并创建 `A1`,queued 不能直接 checkpoint/finish;phase 状态由 task transition 推导,`--phase-status` 不受支持。blocked/interrupted 后恢复仍属于当前 attempt。failed 既不满足依赖,也不能隐式重启,但默认 recover 会把它列入 `retryable_task_ids` 并优先于 queued 任务推荐;只有 `--new-attempt` 会在原 task 下创建下一 attempt。进入 review phase 时 CLI 固定 `review_subject_baseline`,批准前若 Git 状态变化则拒绝。`--finding-json` 使用结构化 JSON 且记录只追加;同一 finding ID 的最后一条记录是 task 级最新结论。review phase 用 `--change-set-json` 提供批准人、理由、全部 open finding IDs、允许文件、预期证据、`review_axes` 和 `collection_decision`;CLI 把固定对象固化为 `repair_baseline`、持久化规范 `feedback_collection` 并计算 `collection_checksum`。resolved 必须引用该批准集内已有 open finding,只能在集中复审的 review phase 携带预期 evidence 写入,且 `changed_files` 必须与批准后真实 Git 变化完全一致并位于批准范围内;最新 blocking finding 仍为 `open` 时不能 completed。`completed/failed/abandoned` 只能使用 `finish`。`--time-category` 必须与 `--elapsed-minutes` 成对出现。`task-state.mjs inspect` 严格只读,不创建 runtime、resume、checkpoint、lock 或 Git 变更。
|
|
67
|
+
|
|
51
68
|
## 4. 只读命令
|
|
52
69
|
|
|
53
70
|
```bash
|
|
54
71
|
node .workflow/tools/state/state.mjs inspect
|
|
55
72
|
node .workflow/tools/state/state.mjs verify
|
|
73
|
+
node .workflow/tools/state/state.mjs verify --history
|
|
74
|
+
node .workflow/tools/state/state.mjs verify --history --since-anchor
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`inspect` 返回规范化后的项目、流程和注册表状态,不写文件。日常 `verify` 校验 Schema、revision、节点互斥、物料 ID/路径唯一性、路径边界、物料 checksum、JSONL 审计 revision 连续性和正式状态文件最后 checksum。`verify --history --since-anchor` 只读取可信锚点后的 JSONL 与事件分片并从快照 replay;`verify --history` 读取全部事件分片,检查 revision 不缺失不重复、分片元数据与 JSONL 一致、记录 checksum 有效,并确认最新分片与当前视图一致。
|
|
78
|
+
|
|
79
|
+
可信快照位于 `.workflow/control/snapshots/formal-state/<anchor-id>/`,包含原字节 `workflow-state.yaml`、`artifact-registry.yaml` 和带自校验 checksum 的 `anchor.yaml`;`latest.yaml` 指向最新锚点。版本边界显式创建锚点:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
node .workflow/tools/state/state.mjs snapshot create --id <anchor-id> --reason version-boundary
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
普通安全点可尝试按配置间隔创建:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
node .workflow/tools/state/state.mjs snapshot create --reason configured-interval
|
|
56
89
|
```
|
|
57
90
|
|
|
58
|
-
`
|
|
91
|
+
新项目的 `project.yaml.formal_state_snapshot_interval` 默认为 100。间隔未达到时命令返回 `created: false` 且不写文件。相同最新锚点 ID 在正式视图未变化时可安全重跑,并返回 `deduplicated: true`;状态已推进或 ID 与最新锚点不一致时拒绝复用。第一个锚点创建前执行完整历史校验;已有锚点时只验证上一个锚点后的链。锚点固定两个 stream 的 revision、视图 checksum、事件记录链头,以及 JSONL 字节偏移和事件数。增量校验信任通过 checksum 验证的锚点,因此不会读取或发现锚点前分片的后续篡改;需要取证或兼容性审计时仍运行完整 `verify --history`。
|
|
59
92
|
|
|
60
93
|
也可由发行包维护者运行:
|
|
61
94
|
|
|
62
95
|
```bash
|
|
63
96
|
ai-delivery state inspect --project <project-root>
|
|
64
97
|
ai-delivery state verify --project <project-root>
|
|
98
|
+
ai-delivery state verify --history --project <project-root>
|
|
65
99
|
```
|
|
66
100
|
|
|
67
101
|
项目执行和恢复时优先使用项目内 `.workflow/tools/state/state.mjs`,确保命令版本与项目安装版本一致。
|
|
68
102
|
|
|
103
|
+
### 4.1 冻结范围与推导节点状态
|
|
104
|
+
|
|
105
|
+
Delivery Readiness 批准后,使用 `scope freeze` 一次性冻结 Slice、需求、验收、必需任务和必需物料,并启用 `scope_contract_version: 1`:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
node .workflow/tools/state/state.mjs scope freeze --expected-scope-revision <revision> --iteration-id ITER-01 --manifest-id SCOPE-ITER-01-R1 --slice SLICE-01 --requirement REQ-01 --acceptance AC-01 --required-task 04-implementation:TASK-01 --required-artifact 04-implementation:ART-01 --approved-by human:product-owner --reason "Delivery Readiness 已批准"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
冻结后不得直接调整清单。唯一范围变更入口是显式人工批准的 `scope amend`,新 revision 必须通过 `--supersedes` 指向当前 manifest:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
node .workflow/tools/state/state.mjs scope amend --expected-scope-revision <revision> --iteration-id ITER-01 --manifest-id SCOPE-ITER-01-R2 --supersedes SCOPE-ITER-01-R1 --slice SLICE-01 --slice SLICE-02 --requirement REQ-01 --acceptance AC-01 --required-task 04-implementation:TASK-01 --required-artifact 04-implementation:ART-01 --approved-by human:product-owner --reason "批准扩大范围"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Slice 超过逻辑任务数、活跃工时、墙钟时长或阻塞修复轮次预算时,只登记告警:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
node .workflow/tools/state/state.mjs scope warn --expected-scope-revision <revision> --iteration-id ITER-01 --metric logical-tasks --observed 9 --reason "超过默认预算"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
`scope warn` 固定写入 `action: warn-only` 和 `reslice_performed: false`,不会自动重新切片、重排计划或改变验收。只有人明确要求并批准后,才另行执行 `scope amend`。未包含 `scope_contract_version` 的历史 scope 继续按旧收口规则读取,不会因升级被隐式迁移。
|
|
124
|
+
|
|
125
|
+
`inspect.derived_node_states` 把每个节点投影为 `pending`、`active`、`waiting`、`blocked`、`ready-to-complete` 或 `completed`。投影同时读取冻结 manifest、稳定 task 状态、最新 append-only blocking finding、强制 Gate、已登记 artifact 及 checksum、选定 immutable candidate 和 completion receipt;不能仅由一个子任务或聊天结论决定正式节点状态。受新契约治理的节点只有在 `ready-to-complete` 时才能执行 `node-completed`。成功命令会生成不可变 completion receipt,绑定当前 manifest、任务/物料事实、Gate、candidate、blocking defect 集、evidence 与 receipt checksum;`verify` 会拒绝篡改或与当前 scope 不一致的收据。
|
|
126
|
+
|
|
69
127
|
## 5. 物料命令
|
|
70
128
|
|
|
71
|
-
|
|
129
|
+
working draft 保持为普通可变文件,不调用正式状态 CLI。提交评审时才首次登记不可变语义版本:
|
|
72
130
|
|
|
73
131
|
```bash
|
|
74
132
|
node .workflow/tools/state/state.mjs artifact register \
|
|
75
133
|
--expected-revision 0 \
|
|
76
134
|
--id ART-PRODUCT-001 \
|
|
77
135
|
--artifact-type product-baseline \
|
|
78
|
-
--path .workflow/iterations/ITER-01/
|
|
79
|
-
--node
|
|
80
|
-
--status
|
|
136
|
+
--path .workflow/iterations/ITER-01/01-product-shaping/product-baseline.yaml \
|
|
137
|
+
--node 01-product-shaping \
|
|
138
|
+
--status submitted \
|
|
81
139
|
--version 1.0.0 \
|
|
82
140
|
--producer-skill ai-delivery-define-product
|
|
83
141
|
```
|
|
84
142
|
|
|
85
|
-
|
|
143
|
+
批准、拒绝、冻结、失败或内容变化时,创建新文件和新 ID,并引用被替代 revision:
|
|
86
144
|
|
|
87
145
|
```bash
|
|
88
|
-
node .workflow/tools/state/state.mjs artifact
|
|
146
|
+
node .workflow/tools/state/state.mjs artifact register \
|
|
89
147
|
--expected-revision 1 \
|
|
90
|
-
--id ART-PRODUCT-
|
|
148
|
+
--id ART-PRODUCT-002 \
|
|
149
|
+
--path .workflow/iterations/ITER-01/01-product-shaping/product-baseline-v2.yaml \
|
|
150
|
+
--node 01-product-shaping \
|
|
91
151
|
--status approved \
|
|
92
|
-
--
|
|
152
|
+
--version 2.0.0 \
|
|
153
|
+
--supersedes ART-PRODUCT-001
|
|
93
154
|
```
|
|
94
155
|
|
|
95
|
-
|
|
156
|
+
`draft` 和 `review-draft` 不得登记。新登记的 submitted、rejected、approved、frozen、failed 和 superseded revision 都不可原地修改;`artifact status` 只用于把升级前已登记的遗留 draft 携带 evidence 一次性迁移为正式状态。`--path` 必须是项目相对路径,以 `.workflow/` 开头,且真实文件不能通过符号链接逃逸。重复 ID、重复受控版本和正式 revision 重写会被拒绝。成功命令会原子提交 delta 分片、当前 registry 和 JSONL 索引;任一目标无法暂存或替换时立即回滚。若进程在提交窗口中断,`inspect` 和 `verify` 会拒绝读取半提交状态;重试 mutation 或运行 `rebuild` 会先恢复 journal,再继续命令。
|
|
157
|
+
|
|
158
|
+
可信 history anchor 建立后,可先零写入预览可裁剪的 artifact shard:
|
|
96
159
|
|
|
97
160
|
```bash
|
|
98
|
-
node .workflow/tools/state/state.mjs artifact
|
|
99
|
-
|
|
100
|
-
--id ART-PRODUCT-002 \
|
|
101
|
-
--path .workflow/iterations/ITER-01/02-product-definition/product-baseline-v2.yaml \
|
|
102
|
-
--node 02-product-definition \
|
|
103
|
-
--status draft \
|
|
104
|
-
--version 2.0.0 \
|
|
105
|
-
--supersedes ART-PRODUCT-001
|
|
161
|
+
node .workflow/tools/state/state.mjs artifact prune
|
|
162
|
+
node .workflow/tools/state/state.mjs artifact prune --apply
|
|
106
163
|
```
|
|
107
164
|
|
|
108
|
-
`--
|
|
165
|
+
默认命令只返回计划,不创建目录、receipt 或时间戳。只有显式 `--apply` 才删除 anchor 已覆盖的 `.workflow/control/events/artifact-registry/` 分片,并在 `.workflow/control/retention/artifact-registry/<anchor-id>.yaml` 写入一条带 checksum 的保留决策;anchor 后的分片和 JSONL 边界继续保留。裁剪后 `verify --history` 返回 `retained-history`,从最新可信 anchor 验证剩余链,不再声称重新审计了已删除的前缀;`rebuild` 同样从 anchor 快照开始 replay。
|
|
166
|
+
|
|
167
|
+
legacy full-snapshot history 需要保留可重放原字节时,不使用 prune,而由发行包执行独立 compact:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
ai-delivery compact <project-root> --dry-run
|
|
171
|
+
ai-delivery compact <project-root>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
dry-run 严格零写入,返回 anchor、revision 覆盖范围、原历史根摘要、loose/archive 字节数和预计净释放空间。apply 把 anchor 覆盖的 legacy `after_value` shards 写入 `.workflow/control/archives/history/artifact-registry/<anchor-id>.json.gz`,manifest 绑定 bundle checksum、每个原文件、coverage 和锚定 registry checksum。CLI 从落盘 bundle 解压并完整 replay,只有 replay checksum 与 anchor 完全一致才移除 loose shards;失败时不移除任何 loose history。压缩后 `verify --history` 返回 `compacted-history` 并重新校验 archive、entry、anchor 与 replay;第一条后续 delta 从 anchor 的记录链头继续。
|
|
175
|
+
|
|
176
|
+
版本归档前由 `task-state.mjs archive-version` 内部调用以下只读投影;通常不需要人工单独执行:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
node .workflow/tools/state/state.mjs snapshot references --iteration-id ITER-01 --candidate-id CAND-01
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
该命令在正式读锁内统一验证最新 pointer、anchor 和快照,只返回 scope manifest、candidate、Gate decision 与 history anchor 的相对 JSON Pointer 和 checksum。任何缺失都会使归档在写文件和移除活动任务前失败;任务脚本不得自行解析 anchor 或写入 `null` 正式引用。
|
|
109
183
|
|
|
110
184
|
## 6. 流程和 Gate 命令
|
|
111
185
|
|
|
112
186
|
启动与完成节点:
|
|
113
187
|
|
|
114
188
|
```bash
|
|
115
|
-
node .workflow/tools/state/state.mjs transition --expected-revision 0 --event node-started --iteration-id ITER-01 --node
|
|
116
|
-
node .workflow/tools/state/state.mjs transition --expected-revision 1 --event node-completed --iteration-id ITER-01 --node
|
|
189
|
+
node .workflow/tools/state/state.mjs transition --expected-scope-revision 0 --event node-started --iteration-id ITER-01 --node 01-product-shaping
|
|
190
|
+
node .workflow/tools/state/state.mjs transition --expected-scope-revision 1 --event node-completed --iteration-id ITER-01 --node 01-product-shaping --evidence ART-PRODUCT-002
|
|
117
191
|
```
|
|
118
192
|
|
|
119
|
-
阻塞与解除阻塞必须提供原因。新迭代使用 `iteration-started` 和规划 evidence。候选与发布分别使用 `candidate-selected`、`release-selected` 和已登记的不可变制品 ID
|
|
193
|
+
阻塞与解除阻塞必须提供原因。新迭代使用 `iteration-started` 和规划 evidence。候选与发布分别使用 `candidate-selected`、`release-selected` 和已登记的不可变制品 ID。凡 transition 或 Gate 消费已登记 evidence,workflow 与 artifact 两个 aggregate 会共享同一事务 ID 提交;交接后 artifact registry revision 已前进,下一条物料命令必须重新 `inspect`。
|
|
120
194
|
|
|
121
195
|
版本完成和发布归档还需要两个里程碑事件。它们不启动发布,只把已由节点和物料证明的事实写入审计状态:
|
|
122
196
|
|
|
123
197
|
```bash
|
|
124
198
|
node .workflow/tools/state/state.mjs transition \
|
|
125
|
-
--expected-revision <revision> \
|
|
199
|
+
--expected-scope-revision <development-scope-revision> \
|
|
126
200
|
--event version-closed \
|
|
127
201
|
--iteration-id <version-id> \
|
|
128
202
|
--artifact-id <closeout-artifact-id>
|
|
129
203
|
|
|
130
204
|
node .workflow/tools/state/state.mjs transition \
|
|
131
|
-
--expected-revision <revision> \
|
|
205
|
+
--expected-scope-revision <release-scope-revision> \
|
|
132
206
|
--event release-archived \
|
|
133
207
|
--iteration-id <release-id> \
|
|
134
208
|
--artifact-id <release-archive-artifact-id> \
|
|
135
209
|
--production-version-id <version-id>
|
|
136
210
|
```
|
|
137
211
|
|
|
138
|
-
`version-closed` 要求 `
|
|
212
|
+
`version-closed` 要求 `06-version-closeout` 已完成,且物料来自该节点并处于 `release-ready`;它更新 `latest_line_version_id`。`release-archived` 要求 `R10-release-archive` 已完成,且物料来自该节点并处于 `released`;它更新 `production_version_id` 和 `production_release_id`。三个字段的权威来源都是 `workflow-state.yaml`,不得直接编辑;`project.yaml` 中的旧字段只用于兼容读取。
|
|
139
213
|
|
|
140
214
|
Gate 请求:
|
|
141
215
|
|
|
142
216
|
```bash
|
|
143
217
|
node .workflow/tools/state/state.mjs gate request \
|
|
144
|
-
--expected-revision 1 \
|
|
218
|
+
--expected-scope-revision 1 \
|
|
145
219
|
--gate-id GATE-B \
|
|
146
220
|
--iteration-id ITER-01 \
|
|
147
|
-
--node
|
|
221
|
+
--node 01-product-shaping \
|
|
148
222
|
--evidence ART-PRODUCT-002
|
|
149
223
|
```
|
|
150
224
|
|
|
@@ -152,7 +226,7 @@ Gate 决定:
|
|
|
152
226
|
|
|
153
227
|
```bash
|
|
154
228
|
node .workflow/tools/state/state.mjs gate decide \
|
|
155
|
-
--expected-revision 2 \
|
|
229
|
+
--expected-scope-revision 2 \
|
|
156
230
|
--gate-id GATE-B \
|
|
157
231
|
--decision approved \
|
|
158
232
|
--actor human:product-manager \
|
|
@@ -160,11 +234,13 @@ node .workflow/tools/state/state.mjs gate decide \
|
|
|
160
234
|
--evidence ART-PRODUCT-002
|
|
161
235
|
```
|
|
162
236
|
|
|
163
|
-
决定必须保留请求时的全部 evidence,并明确记录 `actor` 和 `rationale`。AI 文本、Hook
|
|
237
|
+
决定必须保留请求时的全部 evidence,并明确记录 `actor` 和 `rationale`。AI 文本、Hook、Manager 页面成功提示或命令成功不能替代正式批准凭证。非视觉体验范围把 UX Gate 设为 `not-required` 时,还必须附加来自 `01-product-shaping`、状态成功且 `artifact_type` 包含 `terminal` 的已登记证据;推荐统一使用 `product-terminal-scope`。
|
|
238
|
+
|
|
239
|
+
`UX-LF` 已从当前契约退役。新的 request 和 decide 会在写入前拒绝;历史记录仍可 inspect、verify 和 rebuild。升级 dry-run 会在 `contract_retirement.affected_iterations` 中列出开放 scope 的 pending `UX-LF`,正式升级由 `system:package-upgrade` 追加 `gate-contract-retired` 事件和 checksum 回执,不创建人工 Gate 决定,也不改写关闭迭代或归档。
|
|
164
240
|
|
|
165
241
|
## 7. revision 冲突与失败恢复
|
|
166
242
|
|
|
167
|
-
|
|
243
|
+
物料 mutation 必须传 `--expected-revision`;transition 和 Gate mutation 必须传 owning scope 的 `--expected-scope-revision`。旧 workflow 调用可继续使用顶层 `--expected-revision`,但不得与新参数同时使用。独立 development/release writer 最多等待可识别的当前提交 30 秒后分别成功;同一 scope 的过期 writer 必须 fail-closed。transition/Gate 的 evidence 交接也会增加 artifact registry revision,不得在其后复用旧的 artifact revision。收到 revision conflict 时:
|
|
168
244
|
|
|
169
245
|
1. 停止当前写入,不自动递增数字重试。
|
|
170
246
|
2. 重新运行 `inspect`。
|
|
@@ -173,14 +249,14 @@ node .workflow/tools/state/state.mjs gate decide \
|
|
|
173
249
|
5. 使用新的当前 revision 执行经过重新确认的命令。
|
|
174
250
|
6. 运行 `verify`。
|
|
175
251
|
|
|
176
|
-
`verify` 失败时,根据错误修复物料或控制面。物料 checksum 不一致通常表示登记后被修改,应恢复原文件或创建新版本;audit checksum
|
|
252
|
+
`verify` 失败时,根据错误修复物料或控制面。物料 checksum 不一致通常表示登记后被修改,应恢复原文件或创建新版本;audit checksum 不一致表示正式状态文件可能绕过脚本被修改,应从可信审计、版本控制和交付证据恢复,不能继续流转。只有显式历史审计才运行 `verify --history`;缺少历史分片、分片 revision 不连续或分片元数据不一致都必须停止并审阅,不得用日常校验结果替代。
|
|
177
253
|
|
|
178
254
|
## 8. 生产阶段
|
|
179
255
|
|
|
180
|
-
研发与发布使用两个独立状态域:`development_state.scope_id` 由 `iteration-started` 建立,`release_state.scope_id` 由用户明确发布后执行 `release-started` 建立。两者分别保存局部 revision、活动/阻塞/完成节点、Gate
|
|
256
|
+
研发与发布使用两个独立状态域:`development_state.scope_id` 由 `iteration-started` 建立,`release_state.scope_id` 由用户明确发布后执行 `release-started` 建立。两者分别保存局部 revision、活动/阻塞/完成节点、Gate、节点尝试次数和选定物料;局部 revision 用于 workflow 乐观并发,顶层 `workflow_state.revision` 只负责审计串行化并保留旧参数兼容。
|
|
181
257
|
|
|
182
258
|
`node-started` 会验证流程图前置条件。当前迭代未执行的前置节点,可以用来自该节点且处于成功状态的已登记基线物料作为 evidence;这用于后续迭代只重访受影响基线。重新打开已完成节点必须提供 `--reason`,并产生新的节点尝试,旧 Gate 决定不能批准新一轮输出。
|
|
183
259
|
|
|
184
|
-
`node-completed` 只接受成功状态物料,并检查当前尝试的必需 Gate:`GATE-A`、`GATE-B`、`UX-
|
|
260
|
+
`node-completed` 只接受成功状态物料,并检查当前尝试的必需 Gate:`GATE-A`、`GATE-B`、`UX-VS`、`UX-UI` 和 `PRODUCTION-APPROVAL`。只有确实无视觉交互的体验范围可以依据产品终端证据把活动 UX Gate 决定为 `not-required`;Gate A、Gate B 和生产审批必须为 `approved`。历史 `12-release-preparation` 至 `16-version-archive` 只允许登记和读取审计物料,新的 transition 和 Gate 命令会拒绝这些节点。
|
|
185
261
|
|
|
186
|
-
|
|
262
|
+
每个节点交接、生产审批和部署前运行日常 `verify`;版本收尾和发布归档还必须运行 `verify --history`。新研发流程使用 `06-version-closeout` 和 `release-ready`;完成该节点后通过 `version-closed` 记录累计研发版本,但不得创建任何 R 节点。独立发布使用 `R00-release-request` 至 `R10-release-archive`;启动 R00 时必须提供节点为 R00、状态成功且 `artifact_type: release-request` 的显式用户请求物料。R09 只产生生产验证结论,R10 完成并登记 `released` 归档物料后,才通过 `release-archived` 正式回写生产版本和 release ID。发布选择只能引用精确不可变 `version-ready` Tag 和已登记版本物料,生产审批只发生在 R07,并绑定精确 release ID、包 checksum、镜像 digest、配置、迁移、环境和回滚镜像;任一项变化均创建新发布候选并重新审批。
|