universal-dev-standards 5.17.0 → 6.1.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/bin/uds.js +13 -135
- package/bundled/ai/options/commit-message/bilingual.ai.yaml +19 -1
- package/bundled/ai/standards/acceptance-criteria-traceability.ai.yaml +13 -4
- package/bundled/ai/standards/accessibility-standards.ai.yaml +1 -1
- package/bundled/ai/standards/ai-response-navigation.ai.yaml +15 -2
- package/bundled/ai/standards/api-design-standards.ai.yaml +27 -4
- package/bundled/ai/standards/behavior-snapshot.ai.yaml +86 -9
- package/bundled/ai/standards/checkin-standards.ai.yaml +3 -3
- package/bundled/ai/standards/code-review.ai.yaml +2 -2
- package/bundled/ai/standards/context-aware-loading.ai.yaml +3 -3
- package/bundled/ai/standards/data-migration-testing.ai.yaml +79 -3
- package/bundled/ai/standards/deprecation-standards.ai.yaml +10 -2
- package/bundled/ai/standards/developer-memory.ai.yaml +4 -3
- package/bundled/ai/standards/documentation-writing-standards.ai.yaml +1 -1
- package/bundled/ai/standards/flow-based-testing.ai.yaml +2 -2
- package/bundled/ai/standards/forward-derivation-standards.ai.yaml +26 -2
- package/bundled/ai/standards/frontend-design-standards.ai.yaml +33 -3
- package/bundled/ai/standards/full-coverage-testing.ai.yaml +34 -2
- package/bundled/ai/standards/git-worktree.ai.yaml +3 -3
- package/bundled/ai/standards/logging.ai.yaml +97 -3
- package/bundled/ai/standards/mock-boundary.ai.yaml +48 -2
- package/bundled/ai/standards/model-provenance.ai.yaml +297 -0
- package/bundled/ai/standards/model-selection.ai.yaml +11 -2
- package/bundled/ai/standards/observability-standards.ai.yaml +10 -0
- package/bundled/ai/standards/performance-standards.ai.yaml +46 -1
- package/bundled/ai/standards/pii-classification.ai.yaml +15 -1
- package/bundled/ai/standards/pipeline-security-gates.ai.yaml +10 -0
- package/bundled/ai/standards/privacy-standards.ai.yaml +2 -2
- package/bundled/ai/standards/project-context-memory.ai.yaml +2 -2
- package/bundled/ai/standards/push-standards.ai.yaml +14 -3
- package/bundled/ai/standards/refactoring-standards.ai.yaml +68 -3
- package/bundled/ai/standards/requirement-engineering.ai.yaml +42 -3
- package/bundled/ai/standards/resource-cost-boundary.ai.yaml +279 -0
- package/bundled/ai/standards/reverse-engineering-standards.ai.yaml +55 -2
- package/bundled/ai/standards/security-testing.ai.yaml +13 -2
- package/bundled/ai/standards/self-review-protocol.ai.yaml +15 -10
- package/bundled/ai/standards/skill-standard-alignment-check.ai.yaml +37 -2
- package/bundled/ai/standards/user-journey-testing.ai.yaml +107 -0
- package/bundled/ai/standards/verification-evidence.ai.yaml +88 -5
- package/bundled/ai/standards/verification-oracle.ai.yaml +278 -0
- package/bundled/ai/standards/versioning.ai.yaml +32 -38
- package/bundled/core/acceptance-criteria-traceability.md +15 -5
- package/bundled/core/accessibility-standards.md +8 -4
- package/bundled/core/ai-friendly-architecture.md +1 -1
- package/bundled/core/ai-response-navigation.md +31 -3
- package/bundled/core/anti-sycophancy-prompting.md +1 -1
- package/bundled/core/api-design-standards.md +92 -7
- package/bundled/core/audit-trail.md +119 -0
- package/bundled/core/behavior-snapshot.md +94 -7
- package/bundled/core/browser-compatibility-standards.md +15 -2
- package/bundled/core/checkin-standards.md +10 -3
- package/bundled/core/code-review-checklist.md +10 -2
- package/bundled/core/container-image-standards.md +97 -0
- package/bundled/core/context-aware-loading.md +2 -2
- package/bundled/core/cost-budget-test.md +1 -1
- package/bundled/core/cross-flow-regression.md +3 -2
- package/bundled/core/data-contract.md +104 -0
- package/bundled/core/data-migration-testing.md +90 -0
- package/bundled/core/data-pipeline.md +113 -0
- package/bundled/core/deprecation-standards.md +16 -2
- package/bundled/core/developer-memory.md +13 -8
- package/bundled/core/documentation-writing-standards.md +2 -2
- package/bundled/core/error-code-standards.md +4 -3
- package/bundled/core/feature-discovery-standards.md +191 -0
- package/bundled/core/flaky-test-management.md +1 -1
- package/bundled/core/flow-based-testing.md +3 -3
- package/bundled/core/forward-derivation-standards.md +33 -5
- package/bundled/core/frontend-design-standards.md +93 -4
- package/bundled/core/full-coverage-testing.md +72 -0
- package/bundled/core/git-worktree.md +4 -4
- package/bundled/core/guides/performance-guide.md +1 -1
- package/bundled/core/guides/security-guide.md +1 -1
- package/bundled/core/health-check-standards.md +2 -2
- package/bundled/core/iac-design-principles.md +97 -0
- package/bundled/core/incident-response.md +119 -0
- package/bundled/core/license-compliance.md +2 -0
- package/bundled/core/logging-standards.md +78 -2
- package/bundled/core/mock-boundary.md +54 -2
- package/bundled/core/model-provenance.md +181 -0
- package/bundled/core/model-selection.md +27 -2
- package/bundled/core/multi-environment-e2e-testing.md +195 -0
- package/bundled/core/packaging-standards.md +1 -0
- package/bundled/core/performance-standards.md +96 -2
- package/bundled/core/pii-classification.md +148 -0
- package/bundled/core/pipeline-security-gates.md +22 -2
- package/bundled/core/postmortem-standards.md +2 -0
- package/bundled/core/prd-standards.md +91 -0
- package/bundled/core/privacy-standards.md +14 -3
- package/bundled/core/product-metrics-standards.md +100 -0
- package/bundled/core/project-context-memory.md +8 -2
- package/bundled/core/prompt-regression.md +1 -1
- package/bundled/core/push-standards.md +82 -0
- package/bundled/core/refactoring-standards.md +44 -3
- package/bundled/core/replay-test.md +1 -1
- package/bundled/core/requirement-engineering.md +2 -2
- package/bundled/core/resource-cost-boundary.md +180 -0
- package/bundled/core/reverse-engineering-standards.md +66 -2
- package/bundled/core/runbook.md +113 -0
- package/bundled/core/schema-evolution.md +105 -0
- package/bundled/core/secret-management-standards.md +110 -0
- package/bundled/core/security-testing.md +26 -2
- package/bundled/core/self-review-protocol.md +15 -10
- package/bundled/core/skill-standard-alignment-check.md +53 -0
- package/bundled/core/slo-sli.md +109 -0
- package/bundled/core/smoke-test.md +1 -1
- package/bundled/core/tech-debt-standards.md +1 -1
- package/bundled/core/test-data-standards.md +2 -2
- package/bundled/core/user-journey-testing.md +102 -0
- package/bundled/core/user-story-mapping.md +96 -0
- package/bundled/core/verification-evidence.md +170 -10
- package/bundled/core/verification-oracle.md +167 -0
- package/bundled/core/versioning.md +133 -109
- package/bundled/locales/COVERAGE.md +94 -77
- package/bundled/locales/zh-CN/CHANGELOG.md +94 -6
- package/bundled/locales/zh-CN/CLAUDE.md +1 -1
- package/bundled/locales/zh-CN/MAINTENANCE.md +42 -661
- package/bundled/locales/zh-CN/README.md +25 -12
- package/bundled/locales/zh-CN/SECURITY.md +2 -2
- package/bundled/locales/zh-CN/adoption/DAILY-WORKFLOW-GUIDE.md +2 -2
- package/bundled/locales/zh-CN/ai/options/commit-message/bilingual.ai.yaml +6 -1
- package/bundled/locales/zh-CN/core/acceptance-criteria-traceability.md +4 -6
- package/bundled/locales/zh-CN/core/accessibility-standards.md +1 -1
- package/bundled/locales/zh-CN/core/adversarial-test.md +226 -0
- package/bundled/locales/zh-CN/core/agent-behavior-discipline.md +187 -0
- package/bundled/locales/zh-CN/core/ai-response-navigation.md +32 -6
- package/bundled/locales/zh-CN/core/anti-sycophancy-prompting.md +1 -1
- package/bundled/locales/zh-CN/core/api-design-standards.md +1 -1
- package/bundled/locales/zh-CN/core/behavior-snapshot.md +335 -0
- package/bundled/locales/zh-CN/core/browser-compatibility-standards.md +239 -0
- package/bundled/locales/zh-CN/core/cd-deployment-strategies.md +135 -0
- package/bundled/locales/zh-CN/core/chaos-injection-tests.md +130 -0
- package/bundled/locales/zh-CN/core/checkin-standards.md +1 -1
- package/bundled/locales/zh-CN/core/code-review-checklist.md +1 -1
- package/bundled/locales/zh-CN/core/container-security.md +535 -0
- package/bundled/locales/zh-CN/core/context-aware-loading.md +1 -1
- package/bundled/locales/zh-CN/core/contract-testing-standards.md +191 -0
- package/bundled/locales/zh-CN/core/cost-budget-test.md +86 -0
- package/bundled/locales/zh-CN/core/cross-flow-regression.md +200 -0
- package/bundled/locales/zh-CN/core/data-migration-testing.md +217 -0
- package/bundled/locales/zh-CN/core/deployment-standards.md +328 -9
- package/bundled/locales/zh-CN/core/deprecation-standards.md +1 -1
- package/bundled/locales/zh-CN/core/developer-memory.md +2 -2
- package/bundled/locales/zh-CN/core/disaster-recovery-drill.md +87 -0
- package/bundled/locales/zh-CN/core/documentation-structure.md +1 -1
- package/bundled/locales/zh-CN/core/documentation-writing-standards.md +1 -1
- package/bundled/locales/zh-CN/core/error-code-standards.md +2 -2
- package/bundled/locales/zh-CN/core/feature-manifest-standard.md +222 -0
- package/bundled/locales/zh-CN/core/flaky-test-management.md +87 -0
- package/bundled/locales/zh-CN/core/flow-based-testing.md +284 -0
- package/bundled/locales/zh-CN/core/forward-derivation-standards.md +3 -4
- package/bundled/locales/zh-CN/core/frontend-design-standards.md +1 -1
- package/bundled/locales/zh-CN/core/full-coverage-testing.md +269 -0
- package/bundled/locales/zh-CN/core/git-worktree.md +1 -1
- package/bundled/locales/zh-CN/core/governance-layer.md +160 -0
- package/bundled/locales/zh-CN/core/guides/performance-guide.md +515 -0
- package/bundled/locales/zh-CN/core/guides/security-guide.md +494 -0
- package/bundled/locales/zh-CN/core/knowledge-graph-memory.md +128 -0
- package/bundled/locales/zh-CN/core/license-compliance.md +131 -0
- package/bundled/locales/zh-CN/core/llm-output-validation.md +192 -0
- package/bundled/locales/zh-CN/core/logging-standards.md +205 -7
- package/bundled/locales/zh-CN/core/mock-boundary.md +161 -0
- package/bundled/locales/zh-CN/core/model-selection.md +28 -5
- package/bundled/locales/zh-CN/core/mutation-testing.md +106 -0
- package/bundled/locales/zh-CN/core/no-cicd-deployment.md +219 -0
- package/bundled/locales/zh-CN/core/packaging-standards.md +77 -5
- package/bundled/locales/zh-CN/core/pipeline-security-gates.md +146 -0
- package/bundled/locales/zh-CN/core/policy-as-code-testing.md +203 -0
- package/bundled/locales/zh-CN/core/privacy-standards.md +1 -1
- package/bundled/locales/zh-CN/core/project-context-memory.md +1 -1
- package/bundled/locales/zh-CN/core/prompt-regression.md +88 -0
- package/bundled/locales/zh-CN/core/property-based-testing.md +87 -0
- package/bundled/locales/zh-CN/core/release-quality-manifest.md +207 -0
- package/bundled/locales/zh-CN/core/release-readiness-gate.md +193 -0
- package/bundled/locales/zh-CN/core/replay-test.md +102 -0
- package/bundled/locales/zh-CN/core/requirement-engineering.md +1 -1
- package/bundled/locales/zh-CN/core/reverse-engineering-standards.md +46 -1
- package/bundled/locales/zh-CN/core/rollback-standards.md +120 -0
- package/bundled/locales/zh-CN/core/sast-advanced.md +309 -0
- package/bundled/locales/zh-CN/core/secure-op.md +328 -0
- package/bundled/locales/zh-CN/core/security-testing.md +113 -0
- package/bundled/locales/zh-CN/core/self-review-protocol.md +172 -0
- package/bundled/locales/zh-CN/core/server-ops-security.md +507 -0
- package/bundled/locales/zh-CN/core/smoke-test.md +79 -0
- package/bundled/locales/zh-CN/core/spec-driven-development.md +39 -3
- package/bundled/locales/zh-CN/core/supply-chain-attestation.md +131 -0
- package/bundled/locales/zh-CN/core/verification-evidence.md +252 -41
- package/bundled/locales/zh-CN/core/versioning.md +1 -1
- package/bundled/locales/zh-CN/docs/CHEATSHEET.md +36 -7
- package/bundled/locales/zh-CN/docs/FEATURE-REFERENCE.md +71 -53
- package/bundled/locales/zh-CN/docs/MIGRATION-v6.md +88 -0
- package/bundled/locales/zh-CN/docs/USAGE-MODES-COMPARISON.md +2 -2
- package/bundled/locales/zh-CN/docs/USER-MANUAL.md +14 -14
- package/bundled/locales/zh-CN/docs/specs/system/memory-adoption-strategy.md +105 -0
- package/bundled/locales/zh-CN/docs/user/FAQ.md +132 -0
- package/bundled/locales/zh-CN/docs/user/GETTING-STARTED.md +144 -0
- package/bundled/locales/zh-CN/docs/user/GLOSSARY.md +178 -0
- package/bundled/locales/zh-CN/docs/user/README.md +70 -0
- package/bundled/locales/zh-CN/docs/user/TROUBLESHOOTING.md +190 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +1 -1
- package/bundled/locales/zh-CN/integrations/github-copilot/README.md +1 -1
- package/bundled/locales/zh-CN/integrations/github-copilot/skills-mapping.md +3 -3
- package/bundled/locales/zh-CN/integrations/opencode/skills-mapping.md +3 -3
- package/bundled/locales/zh-CN/methodologies/guides/sdd-guide.md +836 -0
- package/bundled/locales/zh-CN/options/changelog/auto-generated.md +166 -0
- package/bundled/locales/zh-CN/options/changelog/keep-a-changelog.md +140 -0
- package/bundled/locales/zh-CN/options/code-review/automated-review.md +214 -0
- package/bundled/locales/zh-CN/options/code-review/pair-programming.md +166 -0
- package/bundled/locales/zh-CN/options/code-review/pr-review.md +167 -0
- package/bundled/locales/zh-CN/options/commit-message/bilingual.md +10 -3
- package/bundled/locales/zh-CN/options/documentation/api-docs.md +191 -0
- package/bundled/locales/zh-CN/options/documentation/markdown-docs.md +150 -0
- package/bundled/locales/zh-CN/options/documentation/wiki-style.md +131 -0
- package/bundled/locales/zh-CN/options/project-structure/kotlin.md +144 -0
- package/bundled/locales/zh-CN/options/project-structure/php.md +168 -0
- package/bundled/locales/zh-CN/options/project-structure/ruby.md +156 -0
- package/bundled/locales/zh-CN/options/project-structure/rust.md +136 -0
- package/bundled/locales/zh-CN/options/project-structure/swift.md +165 -0
- package/bundled/locales/zh-CN/options/testing/contract-testing.md +237 -0
- package/bundled/locales/zh-CN/options/testing/industry-pyramid.md +200 -0
- package/bundled/locales/zh-CN/options/testing/istqb-framework.md +144 -0
- package/bundled/locales/zh-CN/options/testing/performance-testing.md +251 -0
- package/bundled/locales/zh-CN/options/testing/security-testing.md +192 -0
- package/bundled/locales/zh-CN/skills/README.md +89 -126
- package/bundled/locales/zh-CN/skills/ac-coverage/SKILL.md +5 -7
- package/bundled/locales/zh-CN/skills/adr-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/agents/code-architect.md +263 -0
- package/bundled/locales/zh-CN/skills/agents/doc-writer.md +410 -0
- package/bundled/locales/zh-CN/skills/agents/reviewer.md +357 -0
- package/bundled/locales/zh-CN/skills/agents/spec-analyst.md +410 -0
- package/bundled/locales/zh-CN/skills/agents/test-specialist.md +368 -0
- package/bundled/locales/zh-CN/skills/ai-collaboration-standards/SKILL.md +2 -2
- package/bundled/locales/zh-CN/skills/ai-friendly-architecture/SKILL.md +2 -2
- package/bundled/locales/zh-CN/skills/ai-instruction-standards/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/atdd-assistant/acceptance-criteria-guide.md +1 -1
- package/bundled/locales/zh-CN/skills/atdd-assistant/atdd-workflow.md +3 -4
- package/bundled/locales/zh-CN/skills/audit-assistant/SKILL.md +2 -2
- package/bundled/locales/zh-CN/skills/bdd-assistant/guide.md +1 -2
- package/bundled/locales/zh-CN/skills/brainstorm-assistant/SKILL.md +115 -17
- package/bundled/locales/zh-CN/skills/brainstorm-assistant/guide.md +37 -12
- package/bundled/locales/zh-CN/skills/checkin-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/ci-cd-assistant/SKILL.md +50 -0
- package/bundled/locales/zh-CN/skills/code-review-assistant/SKILL.md +5 -5
- package/bundled/locales/zh-CN/skills/commands/ac-coverage.md +1 -1
- package/bundled/locales/zh-CN/skills/commands/atdd.md +3 -3
- package/bundled/locales/zh-CN/skills/commands/bdd.md +2 -2
- package/bundled/locales/zh-CN/skills/commands/brainstorm.md +26 -17
- package/bundled/locales/zh-CN/skills/commands/{review.md → code-review.md} +4 -4
- package/bundled/locales/zh-CN/skills/commands/derive-all.md +1 -1
- package/bundled/locales/zh-CN/skills/commands/derive-atdd.md +1 -1
- package/bundled/locales/zh-CN/skills/commands/derive-bdd.md +2 -3
- package/bundled/locales/zh-CN/skills/commands/derive-tdd.md +1 -1
- package/bundled/locales/zh-CN/skills/commands/derive.md +1 -1
- package/bundled/locales/zh-CN/skills/commands/dev-workflow.md +2 -2
- package/bundled/locales/zh-CN/skills/commands/methodology.md +4 -4
- package/bundled/locales/zh-CN/skills/commands/pr.md +1 -1
- package/bundled/locales/zh-CN/skills/commands/tdd.md +1 -1
- package/bundled/locales/zh-CN/skills/commit-standards/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/contract-test-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/dev-methodology/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/dev-methodology/create-methodology.md +456 -0
- package/bundled/locales/zh-CN/skills/dev-methodology/guide.md +6 -6
- package/bundled/locales/zh-CN/skills/dev-methodology/runtime.md +296 -0
- package/bundled/locales/zh-CN/skills/dev-workflow-guide/SKILL.md +5 -5
- package/bundled/locales/zh-CN/skills/docs-generator/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/e2e-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/incident-response-assistant/SKILL.md +2 -2
- package/bundled/locales/zh-CN/skills/journey-test-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/logging-guide/SKILL.md +169 -142
- package/bundled/locales/zh-CN/skills/migration-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/observability-assistant/guide.md +1 -1
- package/bundled/locales/zh-CN/skills/pr-automation-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/project-discovery/guide.md +2 -2
- package/bundled/locales/zh-CN/skills/reverse-engineer/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/runbook-assistant/guide.md +1 -1
- package/bundled/locales/zh-CN/skills/security-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/skill-builder/SKILL.md +3 -3
- package/bundled/locales/zh-CN/skills/slo-assistant/guide.md +1 -1
- package/bundled/locales/zh-CN/skills/spec-derivation/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/spec-derivation/guide.md +8 -9
- package/bundled/locales/zh-CN/skills/spec-driven-dev/SKILL.md +2 -2
- package/bundled/locales/zh-CN/skills/sweep/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/tdd-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-CN/skills/testing-guide/SKILL.md +2 -2
- package/bundled/locales/zh-CN/skills/testing-guide/testing-theory.md +2298 -0
- package/bundled/locales/zh-CN/skills/workflows/README.md +451 -0
- package/bundled/locales/zh-TW/CHANGELOG.md +94 -6
- package/bundled/locales/zh-TW/CLAUDE.md +1 -1
- package/bundled/locales/zh-TW/MAINTENANCE.md +51 -4
- package/bundled/locales/zh-TW/README.md +25 -12
- package/bundled/locales/zh-TW/SECURITY.md +2 -2
- package/bundled/locales/zh-TW/adoption/DAILY-WORKFLOW-GUIDE.md +2 -2
- package/bundled/locales/zh-TW/ai/options/commit-message/bilingual.ai.yaml +6 -1
- package/bundled/locales/zh-TW/ai/standards/versioning.ai.yaml +8 -48
- package/bundled/locales/zh-TW/core/acceptance-criteria-traceability.md +4 -6
- package/bundled/locales/zh-TW/core/accessibility-standards.md +1 -1
- package/bundled/locales/zh-TW/core/adversarial-test.md +226 -0
- package/bundled/locales/zh-TW/core/agent-behavior-discipline.md +187 -0
- package/bundled/locales/zh-TW/core/ai-response-navigation.md +32 -6
- package/bundled/locales/zh-TW/core/anti-sycophancy-prompting.md +1 -1
- package/bundled/locales/zh-TW/core/api-design-standards.md +91 -9
- package/bundled/locales/zh-TW/core/audit-trail.md +110 -0
- package/bundled/locales/zh-TW/core/behavior-snapshot.md +335 -0
- package/bundled/locales/zh-TW/core/browser-compatibility-standards.md +1 -0
- package/bundled/locales/zh-TW/core/cd-deployment-strategies.md +135 -0
- package/bundled/locales/zh-TW/core/chaos-injection-tests.md +130 -0
- package/bundled/locales/zh-TW/core/checkin-standards.md +1 -1
- package/bundled/locales/zh-TW/core/code-review-checklist.md +1 -1
- package/bundled/locales/zh-TW/core/container-image-standards.md +93 -0
- package/bundled/locales/zh-TW/core/container-security.md +535 -0
- package/bundled/locales/zh-TW/core/cost-budget-test.md +86 -0
- package/bundled/locales/zh-TW/core/cross-flow-regression.md +1 -0
- package/bundled/locales/zh-TW/core/data-contract.md +101 -0
- package/bundled/locales/zh-TW/core/data-migration-testing.md +217 -0
- package/bundled/locales/zh-TW/core/data-pipeline.md +105 -0
- package/bundled/locales/zh-TW/core/deployment-standards.md +363 -25
- package/bundled/locales/zh-TW/core/deprecation-standards.md +17 -4
- package/bundled/locales/zh-TW/core/developer-memory.md +2 -2
- package/bundled/locales/zh-TW/core/disaster-recovery-drill.md +87 -0
- package/bundled/locales/zh-TW/core/documentation-writing-standards.md +1 -1
- package/bundled/locales/zh-TW/core/error-code-standards.md +2 -2
- package/bundled/locales/zh-TW/core/feature-manifest-standard.md +222 -0
- package/bundled/locales/zh-TW/core/flaky-test-management.md +87 -0
- package/bundled/locales/zh-TW/core/flow-based-testing.md +284 -0
- package/bundled/locales/zh-TW/core/forward-derivation-standards.md +3 -4
- package/bundled/locales/zh-TW/core/frontend-design-standards.md +1 -1
- package/bundled/locales/zh-TW/core/full-coverage-testing.md +250 -0
- package/bundled/locales/zh-TW/core/git-worktree.md +1 -1
- package/bundled/locales/zh-TW/core/guides/performance-guide.md +515 -0
- package/bundled/locales/zh-TW/core/guides/security-guide.md +494 -0
- package/bundled/locales/zh-TW/core/iac-design-principles.md +90 -0
- package/bundled/locales/zh-TW/core/incident-response.md +111 -0
- package/bundled/locales/zh-TW/core/license-compliance.md +131 -0
- package/bundled/locales/zh-TW/core/llm-output-validation.md +192 -0
- package/bundled/locales/zh-TW/core/logging-standards.md +208 -4
- package/bundled/locales/zh-TW/core/mock-boundary.md +161 -0
- package/bundled/locales/zh-TW/core/model-provenance.md +173 -0
- package/bundled/locales/zh-TW/core/model-selection.md +28 -5
- package/bundled/locales/zh-TW/core/mutation-testing.md +106 -0
- package/bundled/locales/zh-TW/core/no-cicd-deployment.md +219 -0
- package/bundled/locales/zh-TW/core/packaging-standards.md +77 -5
- package/bundled/locales/zh-TW/core/performance-standards.md +84 -5
- package/bundled/locales/zh-TW/core/pii-classification.md +102 -0
- package/bundled/locales/zh-TW/core/pipeline-security-gates.md +146 -0
- package/bundled/locales/zh-TW/core/policy-as-code-testing.md +203 -0
- package/bundled/locales/zh-TW/core/prd-standards.md +88 -0
- package/bundled/locales/zh-TW/core/privacy-standards.md +1 -1
- package/bundled/locales/zh-TW/core/product-metrics-standards.md +96 -0
- package/bundled/locales/zh-TW/core/project-context-memory.md +1 -1
- package/bundled/locales/zh-TW/core/prompt-regression.md +88 -0
- package/bundled/locales/zh-TW/core/property-based-testing.md +87 -0
- package/bundled/locales/zh-TW/core/refactoring-standards.md +43 -6
- package/bundled/locales/zh-TW/core/release-quality-manifest.md +207 -0
- package/bundled/locales/zh-TW/core/replay-test.md +102 -0
- package/bundled/locales/zh-TW/core/requirement-engineering.md +1 -1
- package/bundled/locales/zh-TW/core/resource-cost-boundary.md +175 -0
- package/bundled/locales/zh-TW/core/reverse-engineering-standards.md +64 -5
- package/bundled/locales/zh-TW/core/rollback-standards.md +120 -0
- package/bundled/locales/zh-TW/core/runbook.md +110 -0
- package/bundled/locales/zh-TW/core/sast-advanced.md +309 -0
- package/bundled/locales/zh-TW/core/schema-evolution.md +98 -0
- package/bundled/locales/zh-TW/core/secret-management-standards.md +101 -0
- package/bundled/locales/zh-TW/core/secure-op.md +328 -0
- package/bundled/locales/zh-TW/core/security-testing.md +113 -0
- package/bundled/locales/zh-TW/core/self-review-protocol.md +18 -13
- package/bundled/locales/zh-TW/core/server-ops-security.md +507 -0
- package/bundled/locales/zh-TW/core/slo-sli.md +108 -0
- package/bundled/locales/zh-TW/core/smoke-test.md +79 -0
- package/bundled/locales/zh-TW/core/spec-driven-development.md +19 -11
- package/bundled/locales/zh-TW/core/supply-chain-attestation.md +131 -0
- package/bundled/locales/zh-TW/core/user-journey-testing.md +111 -0
- package/bundled/locales/zh-TW/core/user-story-mapping.md +94 -0
- package/bundled/locales/zh-TW/core/verification-evidence.md +260 -31
- package/bundled/locales/zh-TW/core/verification-oracle.md +159 -0
- package/bundled/locales/zh-TW/core/versioning.md +112 -112
- package/bundled/locales/zh-TW/docs/CHEATSHEET.md +36 -7
- package/bundled/locales/zh-TW/docs/DEV-WORKFLOW-MAPPING.md +6 -6
- package/bundled/locales/zh-TW/docs/FEATURE-REFERENCE.md +71 -53
- package/bundled/locales/zh-TW/docs/MIGRATION-v6.md +88 -0
- package/bundled/locales/zh-TW/docs/USAGE-MODES-COMPARISON.md +2 -2
- package/bundled/locales/zh-TW/docs/USER-MANUAL.md +14 -14
- package/bundled/locales/zh-TW/docs/specs/system/memory-adoption-strategy.md +105 -0
- package/bundled/locales/zh-TW/docs/user/FAQ.md +132 -0
- package/bundled/locales/zh-TW/docs/user/GETTING-STARTED.md +144 -0
- package/bundled/locales/zh-TW/docs/user/GLOSSARY.md +178 -0
- package/bundled/locales/zh-TW/docs/user/README.md +70 -0
- package/bundled/locales/zh-TW/docs/user/TROUBLESHOOTING.md +190 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +1 -1
- package/bundled/locales/zh-TW/integrations/github-copilot/README.md +1 -1
- package/bundled/locales/zh-TW/integrations/github-copilot/skills-mapping.md +3 -3
- package/bundled/locales/zh-TW/integrations/opencode/skills-mapping.md +3 -3
- package/bundled/locales/zh-TW/methodologies/guides/sdd-guide.md +523 -26
- package/bundled/locales/zh-TW/options/changelog/auto-generated.md +166 -0
- package/bundled/locales/zh-TW/options/changelog/keep-a-changelog.md +140 -0
- package/bundled/locales/zh-TW/options/code-review/automated-review.md +214 -0
- package/bundled/locales/zh-TW/options/code-review/pair-programming.md +166 -0
- package/bundled/locales/zh-TW/options/code-review/pr-review.md +167 -0
- package/bundled/locales/zh-TW/options/commit-message/bilingual.md +10 -3
- package/bundled/locales/zh-TW/options/documentation/api-docs.md +191 -0
- package/bundled/locales/zh-TW/options/documentation/markdown-docs.md +150 -0
- package/bundled/locales/zh-TW/options/documentation/wiki-style.md +131 -0
- package/bundled/locales/zh-TW/options/project-structure/kotlin.md +144 -0
- package/bundled/locales/zh-TW/options/project-structure/php.md +168 -0
- package/bundled/locales/zh-TW/options/project-structure/ruby.md +156 -0
- package/bundled/locales/zh-TW/options/project-structure/rust.md +136 -0
- package/bundled/locales/zh-TW/options/project-structure/swift.md +165 -0
- package/bundled/locales/zh-TW/options/testing/contract-testing.md +237 -0
- package/bundled/locales/zh-TW/options/testing/industry-pyramid.md +200 -0
- package/bundled/locales/zh-TW/options/testing/istqb-framework.md +144 -0
- package/bundled/locales/zh-TW/options/testing/performance-testing.md +251 -0
- package/bundled/locales/zh-TW/options/testing/security-testing.md +192 -0
- package/bundled/locales/zh-TW/skills/README.md +91 -128
- package/bundled/locales/zh-TW/skills/ac-coverage/SKILL.md +4 -6
- package/bundled/locales/zh-TW/skills/adr-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/agents/code-architect.md +263 -0
- package/bundled/locales/zh-TW/skills/agents/doc-writer.md +410 -0
- package/bundled/locales/zh-TW/skills/agents/reviewer.md +357 -0
- package/bundled/locales/zh-TW/skills/agents/spec-analyst.md +410 -0
- package/bundled/locales/zh-TW/skills/agents/test-specialist.md +368 -0
- package/bundled/locales/zh-TW/skills/ai-collaboration-standards/SKILL.md +2 -2
- package/bundled/locales/zh-TW/skills/ai-friendly-architecture/SKILL.md +2 -2
- package/bundled/locales/zh-TW/skills/ai-instruction-standards/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/atdd-assistant/SKILL.md +2 -0
- package/bundled/locales/zh-TW/skills/atdd-assistant/acceptance-criteria-guide.md +1 -1
- package/bundled/locales/zh-TW/skills/atdd-assistant/atdd-workflow.md +3 -4
- package/bundled/locales/zh-TW/skills/audit-assistant/SKILL.md +2 -2
- package/bundled/locales/zh-TW/skills/bdd-assistant/SKILL.md +2 -0
- package/bundled/locales/zh-TW/skills/bdd-assistant/guide.md +1 -2
- package/bundled/locales/zh-TW/skills/brainstorm-assistant/SKILL.md +116 -18
- package/bundled/locales/zh-TW/skills/brainstorm-assistant/guide.md +38 -11
- package/bundled/locales/zh-TW/skills/checkin-assistant/SKILL.md +3 -1
- package/bundled/locales/zh-TW/skills/ci-cd-assistant/SKILL.md +50 -0
- package/bundled/locales/zh-TW/skills/code-review-assistant/SKILL.md +7 -5
- package/bundled/locales/zh-TW/skills/commands/ac-coverage.md +1 -1
- package/bundled/locales/zh-TW/skills/commands/atdd.md +3 -3
- package/bundled/locales/zh-TW/skills/commands/bdd.md +2 -2
- package/bundled/locales/zh-TW/skills/commands/brainstorm.md +26 -17
- package/bundled/locales/zh-TW/skills/commands/{review.md → code-review.md} +5 -5
- package/bundled/locales/zh-TW/skills/commands/derive-all.md +1 -1
- package/bundled/locales/zh-TW/skills/commands/derive-atdd.md +1 -1
- package/bundled/locales/zh-TW/skills/commands/derive-bdd.md +2 -3
- package/bundled/locales/zh-TW/skills/commands/derive-tdd.md +1 -1
- package/bundled/locales/zh-TW/skills/commands/derive.md +1 -1
- package/bundled/locales/zh-TW/skills/commands/dev-workflow.md +2 -2
- package/bundled/locales/zh-TW/skills/commands/methodology.md +4 -4
- package/bundled/locales/zh-TW/skills/commands/pr.md +1 -1
- package/bundled/locales/zh-TW/skills/commands/tdd.md +1 -1
- package/bundled/locales/zh-TW/skills/commit-standards/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/contract-test-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/dev-methodology/create-methodology.md +456 -0
- package/bundled/locales/zh-TW/skills/dev-methodology/guide.md +5 -5
- package/bundled/locales/zh-TW/skills/dev-methodology/runtime.md +296 -0
- package/bundled/locales/zh-TW/skills/dev-workflow-guide/SKILL.md +5 -5
- package/bundled/locales/zh-TW/skills/docs-generator/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/e2e-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/incident-response-assistant/SKILL.md +2 -2
- package/bundled/locales/zh-TW/skills/logging-guide/SKILL.md +52 -27
- package/bundled/locales/zh-TW/skills/migration-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/pr-automation-assistant/SKILL.md +3 -1
- package/bundled/locales/zh-TW/skills/project-discovery/guide.md +2 -2
- package/bundled/locales/zh-TW/skills/reverse-engineer/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/security-assistant/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/spec-derivation/guide.md +7 -8
- package/bundled/locales/zh-TW/skills/spec-driven-dev/SKILL.md +2 -2
- package/bundled/locales/zh-TW/skills/sweep/SKILL.md +1 -1
- package/bundled/locales/zh-TW/skills/tdd-assistant/SKILL.md +3 -1
- package/bundled/locales/zh-TW/skills/testing-guide/SKILL.md +2 -2
- package/bundled/locales/zh-TW/skills/testing-guide/testing-theory.md +2298 -0
- package/bundled/locales/zh-TW/skills/workflows/README.md +451 -0
- package/bundled/skills/README.md +1 -1
- package/bundled/skills/ac-coverage/SKILL.md +17 -7
- package/bundled/skills/adr-assistant/SKILL.md +1 -1
- package/bundled/skills/agents/code-architect.md +1 -1
- package/bundled/skills/agents/doc-writer.md +1 -1
- package/bundled/skills/agents/reviewer.md +2 -2
- package/bundled/skills/agents/spec-analyst.md +1 -1
- package/bundled/skills/agents/test-specialist.md +1 -1
- package/bundled/skills/ai-collaboration-standards/SKILL.md +2 -2
- package/bundled/skills/ai-friendly-architecture/SKILL.md +2 -2
- package/bundled/skills/ai-instruction-standards/SKILL.md +1 -1
- package/bundled/skills/atdd-assistant/SKILL.md +7 -0
- package/bundled/skills/atdd-assistant/acceptance-criteria-guide.md +1 -1
- package/bundled/skills/atdd-assistant/atdd-workflow.md +6 -8
- package/bundled/skills/audit-assistant/SKILL.md +2 -2
- package/bundled/skills/bdd-assistant/SKILL.md +7 -0
- package/bundled/skills/bdd-assistant/guide.md +1 -2
- package/bundled/skills/brainstorm-assistant/SKILL.md +139 -15
- package/bundled/skills/brainstorm-assistant/guide.md +39 -8
- package/bundled/skills/checkin-assistant/SKILL.md +8 -1
- package/bundled/skills/ci-cd-assistant/SKILL.md +57 -0
- package/bundled/skills/code-review-assistant/SKILL.md +15 -8
- package/bundled/skills/commands/COMMAND-FAMILY-OVERVIEW.md +2 -2
- package/bundled/skills/commands/COMMAND-INDEX.json +3 -3
- package/bundled/skills/commands/README.md +2 -2
- package/bundled/skills/commands/ac-coverage.md +1 -1
- package/bundled/skills/commands/atdd.md +2 -2
- package/bundled/skills/commands/bdd.md +2 -2
- package/bundled/skills/commands/brainstorm.md +25 -14
- package/bundled/skills/commands/{review.md → code-review.md} +6 -6
- package/bundled/skills/commands/derive-all.md +1 -1
- package/bundled/skills/commands/derive-atdd.md +1 -1
- package/bundled/skills/commands/derive-bdd.md +2 -3
- package/bundled/skills/commands/derive-tdd.md +1 -1
- package/bundled/skills/commands/derive.md +1 -1
- package/bundled/skills/commands/dev-workflow.md +1 -1
- package/bundled/skills/commands/journey-test.md +45 -0
- package/bundled/skills/commands/methodology.md +4 -4
- package/bundled/skills/commands/pr.md +1 -1
- package/bundled/skills/commands/skill-builder.md +42 -0
- package/bundled/skills/commands/tdd.md +1 -1
- package/bundled/skills/dev-methodology/create-methodology.md +1 -1
- package/bundled/skills/dev-methodology/guide.md +1 -1
- package/bundled/skills/dev-methodology/runtime.md +1 -1
- package/bundled/skills/dev-workflow-guide/SKILL.md +3 -3
- package/bundled/skills/dev-workflow-guide/workflow-phases.md +3 -3
- package/bundled/skills/docs-generator/SKILL.md +3 -3
- package/bundled/skills/incident-response-assistant/SKILL.md +2 -2
- package/bundled/skills/logging-guide/SKILL.md +38 -2
- package/bundled/skills/migration-assistant/SKILL.md +226 -0
- package/bundled/skills/observability-assistant/SKILL.md +74 -0
- package/bundled/skills/pr-automation-assistant/SKILL.md +5 -1
- package/bundled/skills/project-discovery/guide.md +2 -2
- package/bundled/skills/push/SKILL.md +1 -1
- package/bundled/skills/release-standards/SKILL.md +19 -5
- package/bundled/skills/security-assistant/SKILL.md +1 -1
- package/bundled/skills/skill-builder/SKILL.md +1 -1
- package/bundled/skills/spec-derivation/guide.md +3 -4
- package/bundled/skills/spec-driven-dev/SKILL.md +13 -2
- package/bundled/skills/sweep/SKILL.md +1 -1
- package/bundled/skills/tdd-assistant/SKILL.md +8 -1
- package/bundled/skills/testing-guide/SKILL.md +1 -1
- package/bundled/skills/testing-guide/testing-theory.md +1 -1
- package/bundled/skills/workflows/README.md +2 -2
- package/package.json +4 -4
- package/src/commands/audit.js +30 -9
- package/src/commands/config.js +33 -2
- package/src/commands/hitl.js +14 -1
- package/src/commands/init.js +168 -75
- package/src/commands/quickstart.js +1 -2
- package/src/commands/release.js +51 -6
- package/src/commands/run-intent.js +9 -0
- package/src/commands/spec-split.js +27 -2
- package/src/commands/update.js +22 -6
- package/src/config/ai-agent-paths.js +3 -1
- package/src/i18n/messages.js +3 -102
- package/src/missions/MissionManager.js +44 -12
- package/src/utils/build-manifest.js +35 -3
- package/src/utils/friction-detector.js +71 -22
- package/src/utils/health-checker.js +29 -2
- package/src/utils/transaction.js +111 -0
- package/src/utils/version-promote.js +16 -0
- package/standards-registry.json +61 -149
- package/bundled/ai/standards/agent-communication-protocol.ai.yaml +0 -42
- package/bundled/ai/standards/agent-dispatch.ai.yaml +0 -42
- package/bundled/ai/standards/branch-completion.ai.yaml +0 -44
- package/bundled/ai/standards/change-batching-standards.ai.yaml +0 -44
- package/bundled/ai/standards/execution-history.ai.yaml +0 -42
- package/bundled/ai/standards/pipeline-integration-standards.ai.yaml +0 -42
- package/bundled/ai/standards/workflow-enforcement.ai.yaml +0 -44
- package/bundled/ai/standards/workflow-state-protocol.ai.yaml +0 -43
- package/src/commands/flow.js +0 -260
- package/src/commands/start.js +0 -372
- package/src/commands/sweep.js +0 -151
- package/src/commands/workflow.js +0 -681
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
source: ../../../core/feature-manifest-standard.md
|
|
3
|
+
source_version: 1.0.0
|
|
4
|
+
translation_version: 1.0.0
|
|
5
|
+
last_synced: 2026-06-10
|
|
6
|
+
source_hash: 501a97944fd0
|
|
7
|
+
status: current
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Feature Manifest 標準
|
|
11
|
+
|
|
12
|
+
> **Language**: [English](../../../core/feature-manifest-standard.md) | 繁體中文
|
|
13
|
+
|
|
14
|
+
**適用範圍**: 將既有系統移植或重組的遷移與重構專案
|
|
15
|
+
**Scope**: universal
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 概述
|
|
20
|
+
|
|
21
|
+
Feature Manifest 標準定義一種機器可讀格式(`feature-manifest.yaml`),用於在遷移或重構開始前,盤點既有系統的所有功能。它在舊系統的能力與新系統的驗收標準之間提供結構化的橋樑,讓工具(VibeOps `/vo-pipeline --variant migration`)能自動強制執行完整性閘門。
|
|
22
|
+
|
|
23
|
+
## 參考資料
|
|
24
|
+
|
|
25
|
+
| 標準/來源 | 內容 |
|
|
26
|
+
|----------------|---------|
|
|
27
|
+
| XSPEC-200 | 遷移功能盤點與完整性閘門 |
|
|
28
|
+
| XSPEC-201 | 重構/遷移完整性協議 |
|
|
29
|
+
| XSPEC-199 | AC `not_implemented` 狀態擴充 |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 何時使用
|
|
34
|
+
|
|
35
|
+
在以下情況使用 `feature-manifest.yaml`:
|
|
36
|
+
- 將系統從一種語言/框架遷移到另一種(例如 PHP → C# .NET)
|
|
37
|
+
- 將舊系統移植到新架構
|
|
38
|
+
- 啟動必須保留既有行為的大型重構
|
|
39
|
+
|
|
40
|
+
**請勿用於** greenfield 開發——manifest 是既有系統的映照,不是設計文件。
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Feature Manifest 格式
|
|
45
|
+
|
|
46
|
+
### 檔案位置
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
artifacts/feature-manifest.yaml
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 頂層結構
|
|
53
|
+
|
|
54
|
+
```yaml
|
|
55
|
+
manifest_version: "1.0"
|
|
56
|
+
source_system:
|
|
57
|
+
language: php
|
|
58
|
+
framework: laravel
|
|
59
|
+
scan_date: "2026-05-12"
|
|
60
|
+
scan_coverage: "47/47 routes (100%)"
|
|
61
|
+
|
|
62
|
+
features:
|
|
63
|
+
- id: FM-001
|
|
64
|
+
name: UserLogin
|
|
65
|
+
# ... (see Feature Entry below)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Feature Entry 結構描述
|
|
69
|
+
|
|
70
|
+
| 欄位 | 型別 | 必填 | 說明 |
|
|
71
|
+
|-------|------|----------|-------------|
|
|
72
|
+
| `id` | string | 是 | `FM-NNN`(補零) |
|
|
73
|
+
| `name` | string | 是 | PascalCase 業務功能名稱 |
|
|
74
|
+
| `description` | string | 是 | 以白話描述業務目的 |
|
|
75
|
+
| `http_method` | string | 否 | `GET`、`POST`、`PUT`、`PATCH`、`DELETE`;CLI/背景作業為 `null` |
|
|
76
|
+
| `route` | string | 否 | URL 路徑;CLI/背景作業為 `null` |
|
|
77
|
+
| `controller` | string | 是 | `ClassName::methodName` |
|
|
78
|
+
| `confidence` | float | 是 | 0.0–1.0(見 Confidence 評分) |
|
|
79
|
+
| `side_effects` | list | 是 | `DB_READ`、`DB_WRITE`、`EMAIL`、`QUEUE`、`HTTP_CALL`、`FILE` |
|
|
80
|
+
| `migration_risks` | list | 否 | 風險標籤(見遷移風險) |
|
|
81
|
+
| `ac_id` | string | 否 | 初始為 `null`;manifest 建立後由 Planner 設定 |
|
|
82
|
+
| `status` | string | 是 | 初始一律為 `not_implemented` |
|
|
83
|
+
|
|
84
|
+
### 完整 Feature Entry 範例
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
features:
|
|
88
|
+
- id: FM-007
|
|
89
|
+
name: OrderCancellation
|
|
90
|
+
description: 取消訂單並觸發退款流程
|
|
91
|
+
http_method: POST
|
|
92
|
+
route: /api/orders/{id}/cancel
|
|
93
|
+
controller: OrderController::cancel
|
|
94
|
+
confidence: 0.9
|
|
95
|
+
side_effects:
|
|
96
|
+
- DB_WRITE
|
|
97
|
+
- QUEUE
|
|
98
|
+
migration_risks:
|
|
99
|
+
- ORM_DIFFERENCES
|
|
100
|
+
ac_id: null
|
|
101
|
+
status: not_implemented
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Confidence 評分
|
|
107
|
+
|
|
108
|
+
| 數值 | 意義 | 動作 |
|
|
109
|
+
|-------|---------|--------|
|
|
110
|
+
| 1.0 | 功能名稱與業務目的明確無歧義 | 進入 AC 產生階段 |
|
|
111
|
+
| 0.8 | 功能名稱合理,目的需要推斷 | 附註後繼續 |
|
|
112
|
+
| 0.5 | 可能是基礎設施/工具程式,非主要業務功能 | 標記供人工審查 |
|
|
113
|
+
| 0.3 | 不明——無法判斷業務目的 | **暫停;必須由人工確認** |
|
|
114
|
+
|
|
115
|
+
**規則**:所有 `confidence < 0.5` 的功能,必須先經人工審查,Planner 才能產生 AC。
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 遷移風險
|
|
120
|
+
|
|
121
|
+
### PHP → C# .NET
|
|
122
|
+
|
|
123
|
+
| 標籤 | 說明 |
|
|
124
|
+
|-------|-------------|
|
|
125
|
+
| `SESSION_HANDLING` | PHP `$_SESSION` → ASP.NET Core Session/Cookie middleware |
|
|
126
|
+
| `ORM_DIFFERENCES` | Eloquent ORM 與 Entity Framework 的行為差異 |
|
|
127
|
+
| `TIMEZONE_HANDLING` | PHP 時區函式 → .NET `DateTimeOffset` |
|
|
128
|
+
| `FILE_UPLOAD_PATH` | PHP `$_FILES` → ASP.NET Core `IFormFile` |
|
|
129
|
+
| `REGEX_DIFFERENCES` | PHP PCRE 語法與 .NET `System.Text.RegularExpressions` 的差異 |
|
|
130
|
+
| `ARRAY_FUNCTIONS` | PHP `array_*` 函式 → LINQ 對應寫法 |
|
|
131
|
+
| `EXCEPTION_HIERARCHY` | PHP 例外階層與 .NET 例外階層的差異 |
|
|
132
|
+
|
|
133
|
+
### 通用
|
|
134
|
+
|
|
135
|
+
| 標籤 | 說明 |
|
|
136
|
+
|-------|-------------|
|
|
137
|
+
| `ASYNC_MODEL` | 同步程式碼 → async/await 遷移 |
|
|
138
|
+
| `NULL_SEMANTICS` | Null 處理差異 |
|
|
139
|
+
| `STRING_ENCODING` | 字串編碼/定序(collation)差異 |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## FEATURE_STUB 標記協議
|
|
144
|
+
|
|
145
|
+
在目標程式碼庫中實作 manifest 內的功能時,使用 `FEATURE_STUB:` 標記作為占位符:
|
|
146
|
+
|
|
147
|
+
### 格式
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
// FEATURE_STUB: <FM-ID> <FeatureName> — <AC-ID> pending
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 範例(C#)
|
|
154
|
+
|
|
155
|
+
```csharp
|
|
156
|
+
// FEATURE_STUB: FM-007 OrderCancellation — AC-007 pending
|
|
157
|
+
public async Task<Result<OrderDto>> CancelOrderAsync(string orderId, CancellationReason reason)
|
|
158
|
+
{
|
|
159
|
+
throw new NotImplementedException();
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### FEATURE_STUB 與 WARNING:STUB 的差異
|
|
164
|
+
|
|
165
|
+
| 標記 | 語義 | 使用時機 |
|
|
166
|
+
|--------|----------|-------------|
|
|
167
|
+
| `// WARNING: STUB` | 暫時的假邏輯(程式可執行但行為錯誤) | 帶有錯誤業務邏輯的占位符 |
|
|
168
|
+
| `// FEATURE_STUB:` | 功能尚未實作(完全沒有邏輯) | manifest 中尚未撰寫程式碼的功能 |
|
|
169
|
+
|
|
170
|
+
**兩種標記都會阻擋 CI**(main 分支 push 與 UAT/production 部署)。
|
|
171
|
+
|
|
172
|
+
### 生命週期
|
|
173
|
+
|
|
174
|
+
1. 功能加入 manifest,`status: not_implemented`
|
|
175
|
+
2. 開發人員在目標程式碼中加入 `FEATURE_STUB:` 占位符
|
|
176
|
+
3. 開發人員實作該功能,移除 `FEATURE_STUB:` 標記
|
|
177
|
+
4. 更新 manifest `status` → `implemented`
|
|
178
|
+
5. 更新 AC traceability `status` → `uncovered` 或 `covered`
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 完整性閘門
|
|
183
|
+
|
|
184
|
+
### Gate 1(Pre-Pipeline)
|
|
185
|
+
|
|
186
|
+
在 `/vo-pipeline --variant migration` 開始前:
|
|
187
|
+
- `artifacts/feature-manifest.yaml` 必須存在
|
|
188
|
+
- `.snapshots/` 目錄必須存在且至少含一個 JSON 檔案
|
|
189
|
+
|
|
190
|
+
### 功能完整性閘門(Pre-UAT)
|
|
191
|
+
|
|
192
|
+
CI 在以下條件同時成立時阻擋 UAT 部署:
|
|
193
|
+
- manifest 中有任何功能的 `status: not_implemented`,且
|
|
194
|
+
- 程式碼庫中存在對應的 `FEATURE_STUB:`
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 反模式
|
|
199
|
+
|
|
200
|
+
| 反模式 | 影響 | 正確做法 |
|
|
201
|
+
|--------------|--------|------------------|
|
|
202
|
+
| 沒有 manifest 就開始遷移 | 功能缺口到 UAT 才被發現 | 一律先產生 manifest |
|
|
203
|
+
| 跳過低 confidence 的功能 | 功能被靜默遺漏 | 審查並確認所有功能 |
|
|
204
|
+
| 用 `uncovered` 取代 `not_implemented` | CI 不會因缺少功能而阻擋 | 程式碼不存在時使用 `not_implemented` |
|
|
205
|
+
| 實作後未移除 `FEATURE_STUB:` | CI 出現「未完成」的假訊號 | 實作後一律清除標記 |
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 相關標準
|
|
210
|
+
|
|
211
|
+
- [Acceptance Criteria Traceability](acceptance-criteria-traceability.md) — `not_implemented` AC 狀態
|
|
212
|
+
- [Behavior Snapshot Standard](behavior-snapshot.md) — HTTP parity 基準記錄
|
|
213
|
+
- [Refactoring Standards](refactoring-standards.md) — 重構用的 Characterization 測試
|
|
214
|
+
- [Spec-Driven Development](spec-driven-development.md) — AC 產生工作流程
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 版本歷史
|
|
219
|
+
|
|
220
|
+
| 版本 | 日期 | 變更 |
|
|
221
|
+
|---------|------|---------|
|
|
222
|
+
| 1.0.0 | 2026-05-12 | 初始版本——FM-NNN schema、confidence 評分、FEATURE_STUB 協議(XSPEC-200) |
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
source: ../../../core/flaky-test-management.md
|
|
3
|
+
source_version: 1.0.0
|
|
4
|
+
translation_version: 1.0.0
|
|
5
|
+
last_synced: 2026-06-10
|
|
6
|
+
source_hash: 04c9ce181011
|
|
7
|
+
status: current
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Flaky 測試管理標準
|
|
11
|
+
|
|
12
|
+
> **Language**: [English](../../../core/flaky-test-management.md) | 繁體中文
|
|
13
|
+
|
|
14
|
+
## 概述
|
|
15
|
+
|
|
16
|
+
在一個 3000 個測試的套件中,只要有一個 flaky 測試,就足以侵蝕 CI 的可信度,讓開發人員開始忽略失敗。一旦開發人員學會「重跑 CI 就好」,真正的 bug 就會悄悄溜過。消除 flaky 測試的成本,永遠低於它們所製造的虛假安全感的成本。
|
|
17
|
+
|
|
18
|
+
## 定義
|
|
19
|
+
|
|
20
|
+
若一個測試在相同程式碼下連續執行卻產生不同結果(pass/fail),即為 **flaky**。2% 門檻:若一個測試在 `main` 上未變更程式碼的情況下失敗率 ≥ 2%,即屬 flaky。
|
|
21
|
+
|
|
22
|
+
## 偵測
|
|
23
|
+
|
|
24
|
+
大多數 CI 系統可自動偵測 flakiness:
|
|
25
|
+
|
|
26
|
+
- **GitHub Actions**:尋找 `Flaky tests detected` 標註
|
|
27
|
+
- **手動**:執行 `npx vitest run --reporter=verbose` 5 次,觀察是否有非確定性結果
|
|
28
|
+
- **Vitest**:`vitest run --repeat=5`(每個測試各執行 5 次)
|
|
29
|
+
|
|
30
|
+
## 隔離(Quarantine)工作流程
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Detected → Quarantine (< 48h) → Track → Fix or Delete (< 30 days)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 隔離標註
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
// TODO: quarantined 2026-05-05 — flaky race condition, see issue #42
|
|
40
|
+
it.skip("reconnects after WebSocket disconnect", async () => {
|
|
41
|
+
// ... test body preserved for reference
|
|
42
|
+
})
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 追蹤 Issue 範本
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
**Flaky Test**: `describe > test name`
|
|
49
|
+
**File**: `src/path/to/test.ts`
|
|
50
|
+
**Quarantined**: 2026-05-05
|
|
51
|
+
**Failure rate**: ~5% on main
|
|
52
|
+
**Known failure mode**: `Cannot read property 'socket' of undefined`
|
|
53
|
+
**Root cause hypothesis**: Race condition in WebSocket teardown
|
|
54
|
+
**Deadline**: 2026-06-05
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 常見根本原因
|
|
58
|
+
|
|
59
|
+
| 根本原因 | 修法 |
|
|
60
|
+
|-----------|-----|
|
|
61
|
+
| Race condition | 使用 `waitFor()`、`vi.waitFor()`、正確的 async 協調 |
|
|
62
|
+
| 共享狀態 | 在 `beforeEach`/`afterEach` 中重置狀態 |
|
|
63
|
+
| 外部服務 | Mock 該依賴 |
|
|
64
|
+
| 檔案系統排序 | 使用確定性排序 |
|
|
65
|
+
| 未設 seed 的隨機值 | 在測試中設定固定 seed |
|
|
66
|
+
| 時序相依 | 使用假計時器(`vi.useFakeTimers()`) |
|
|
67
|
+
|
|
68
|
+
## Vitest 設定
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// vitest.config.ts
|
|
72
|
+
export default defineConfig({
|
|
73
|
+
test: {
|
|
74
|
+
retry: 2, // retry failed tests up to 2 times
|
|
75
|
+
testTimeout: 10000, // 10s timeout prevents infinite hangs
|
|
76
|
+
hookTimeout: 5000, // 5s hook timeout
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 相關標準
|
|
82
|
+
|
|
83
|
+
- [Testing Standards](testing-standards.md) — 整體測試金字塔
|
|
84
|
+
- [Test Governance Standards](test-governance.md) — CI 政策
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
**Scope**: universal
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
---
|
|
2
|
+
source: ../../../core/flow-based-testing.md
|
|
3
|
+
source_version: 1.3.1
|
|
4
|
+
translation_version: 1.3.1
|
|
5
|
+
last_synced: 2026-07-08
|
|
6
|
+
source_hash: afadaebc0f49
|
|
7
|
+
status: current
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# 流程式測試(Flow-Based Testing)
|
|
11
|
+
|
|
12
|
+
> **Language**: [English](../../../core/flow-based-testing.md) | 繁體中文
|
|
13
|
+
|
|
14
|
+
**版本**: 1.3.1
|
|
15
|
+
**最後更新**: 2026-06-18
|
|
16
|
+
**適用範圍**: 所有具備多步驟工作流程的軟體專案
|
|
17
|
+
**Scope**: universal
|
|
18
|
+
**產業標準**: ISO/IEC/IEEE 29119-4(測試技術)、ISTQB Foundation Syllabus
|
|
19
|
+
**參考資料**: Decision Table Testing(ISTQB)、Pairwise Testing、State Transition Testing
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 目的
|
|
24
|
+
|
|
25
|
+
本文件定義測試多步驟流程的系統化方法論。它填補了 AC 中心式測試(孤立驗證個別行為)與流程層級測試(驗證帶有累積狀態與分支覆蓋的序列行為)之間的落差。
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 核心問題:AC 中心式 vs. 流程中心式測試
|
|
30
|
+
|
|
31
|
+
AC 中心式測試驗證每個驗收條件在孤立情況下可正常運作。然而,它們會漏掉兩類關鍵 bug:
|
|
32
|
+
|
|
33
|
+
1. **步驟互動 bug**:只有當 Step 1 的輸出成為 Step 2 的輸入時才會顯現的 bug
|
|
34
|
+
2. **分支覆蓋缺口**:從未以所有可能值演練過的決策點
|
|
35
|
+
|
|
36
|
+
**範例**:某 pipeline 有 8 個步驟。每個 AC 都獨立通過。但當 Step 3 的配額檢查依賴 Step 1 與 Step 2 累積的狀態時,這個互動從未被測試到。
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 三步驟流程分解
|
|
41
|
+
|
|
42
|
+
### Step 1: 流程辨識(Flow Identification)
|
|
43
|
+
|
|
44
|
+
在撰寫任何測試程式碼之前,先記錄:
|
|
45
|
+
|
|
46
|
+
- **前置條件(Preconditions)**:系統的初始狀態
|
|
47
|
+
- **步驟序列(Step sequence)**:依序排列的動作清單(Step 1 → Step N)
|
|
48
|
+
- **決策點(Decision points)**:流程中的每一個 if/else/條件
|
|
49
|
+
- **終止狀態(Terminal states)**:所有可能的結束狀態(成功 + 每一種不同的失敗)
|
|
50
|
+
|
|
51
|
+
### Step 2: 決策表展開(Decision Table Expansion)
|
|
52
|
+
|
|
53
|
+
針對每個決策點,列出所有可能的值。然後套用覆蓋策略:
|
|
54
|
+
|
|
55
|
+
| 策略 | 使用時機 | 場景數量 |
|
|
56
|
+
|----------|-------------|---------------|
|
|
57
|
+
| **Each-Choice**(最小) | 低風險流程、快速回饋 | 各唯一值的總和 |
|
|
58
|
+
| **Pairwise** | 中風險流程 | ~N × max_values |
|
|
59
|
+
| **All-Combinations** | 認證、付款、安全 | 各值數量的乘積 |
|
|
60
|
+
|
|
61
|
+
**決策表範例**:
|
|
62
|
+
|
|
63
|
+
| 決策點 | 值 |
|
|
64
|
+
|----------------|--------|
|
|
65
|
+
| Authorization | valid / expired / missing |
|
|
66
|
+
| Quota | sufficient / exceeded |
|
|
67
|
+
| External Service | available / timeout / error |
|
|
68
|
+
|
|
69
|
+
Each-Choice 最小值:3 + 2 + 3 = 8 個場景(相較於團隊實際上通常只寫 1-2 個)。
|
|
70
|
+
|
|
71
|
+
### Step 3: 旅程測試結構(Journey Test Structure)
|
|
72
|
+
|
|
73
|
+
以共享狀態串接(shared state threading)撰寫測試——以 `ctx` 物件跨步驟累積狀態:
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
describe("Flow: Create Order", () => {
|
|
77
|
+
const ctx: { token?: string; orderId?: string } = {}
|
|
78
|
+
|
|
79
|
+
it("Step 1: Login", async () => {
|
|
80
|
+
ctx.token = await login(credentials)
|
|
81
|
+
expect(ctx.token).toBeTruthy()
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it("Step 2: Create order (uses Step 1 token)", async () => {
|
|
85
|
+
ctx.orderId = await createOrder(ctx.token!, orderData)
|
|
86
|
+
expect(ctx.orderId).toMatch(/^ord-/)
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
it("Step 3: Verify order state (uses Step 2 orderId)", async () => {
|
|
90
|
+
const order = await getOrder(ctx.token!, ctx.orderId!)
|
|
91
|
+
expect(order.status).toBe("pending")
|
|
92
|
+
})
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
describe("Flow Branch: Quota exceeded path", () => {
|
|
96
|
+
it("should return 429 and NOT create order when quota is exhausted", async () => {
|
|
97
|
+
await exhaustQuota(testUser)
|
|
98
|
+
const response = await attemptCreateOrder(testToken, orderData)
|
|
99
|
+
expect(response.status).toBe(429)
|
|
100
|
+
expect(response.body.code).toBe("QUOTA_EXCEEDED")
|
|
101
|
+
// Verify side effects: no order was created
|
|
102
|
+
const orders = await getOrders(testUser)
|
|
103
|
+
expect(orders.length).toBe(0)
|
|
104
|
+
})
|
|
105
|
+
})
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 反模式(Anti-Patterns)
|
|
111
|
+
|
|
112
|
+
- 只測試 happy path 流程(漏掉失敗終止狀態)
|
|
113
|
+
- 在步驟之間重設共享狀態(破壞狀態串接)
|
|
114
|
+
- 孤立測試每個步驟而不驗證累積狀態
|
|
115
|
+
- 對含多個決策點的流程只用單一測試
|
|
116
|
+
- 對每個流程都套用 All-Combinations(應保留給關鍵路徑)
|
|
117
|
+
- 在分支測試中不驗證副作用(或副作用的不存在)
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 與其他標準的關係
|
|
122
|
+
|
|
123
|
+
- **test-completeness-dimensions**:定義了 **8** 個維度。Flow Completeness 與 Branch Coverage(決策表)的細節在本標準中說明——它們並非該標準中編號的維度 9/10(該標準僅有 8 個維度)
|
|
124
|
+
- **behavior-driven-development**:BDD Scenario Outline 表格對應到決策表展開
|
|
125
|
+
- **mock-boundary**:流程測試必須遵守 mock boundary 規則(不 mock 自身模組邏輯)
|
|
126
|
+
- **e2e-testing**:旅程測試在 ST 或 E2E 層級執行;流程測試可在 IT 層級搭配真實 DB 執行
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 多閘門流程驗證模型(Multi-Gate Flow Verification Model)
|
|
131
|
+
|
|
132
|
+
流程覆蓋不是單一的發布前檢查——它是橫跨整個 SDLC 的**漸進式驗證鏈**。有兩個本質上不同的問題,必須在不同階段回答:
|
|
133
|
+
|
|
134
|
+
| 驗證類型 | 問題 | 執行者 | 時機 |
|
|
135
|
+
|------------------|----------|----------|--------|
|
|
136
|
+
| **覆蓋(Coverage)** | 所有終止狀態都測試了嗎? | 自動化 CI | Dev → Staging → Pre-UAT |
|
|
137
|
+
| **正確性(Correctness)** | 終止狀態的定義正確嗎? | 人工 UAT | UAT 階段 |
|
|
138
|
+
|
|
139
|
+
混淆這兩者會把 UAT 週期浪費在 CI 早該抓到的技術覆蓋問題上。
|
|
140
|
+
|
|
141
|
+
### Gate 0 — PRD 簽核(實作開始之前)
|
|
142
|
+
|
|
143
|
+
三項可測試性要素必須在寫下任何一行程式碼之前寫入 PRD。使用 `templates/requirement-template.md` 的 §2.4 與 §9.4:
|
|
144
|
+
|
|
145
|
+
| 要素 | PRD 章節 | 何時必須 |
|
|
146
|
+
|---------|-------------|---------------|
|
|
147
|
+
| 前置條件 + 有序步驟 | §2.4 | ≥ 3 步驟的流程 |
|
|
148
|
+
| 決策點清單 | §2.4 | 每一個分支條件 |
|
|
149
|
+
| 終止狀態清單 | §2.4 | 所有不同的結束狀態 |
|
|
150
|
+
| 決策表(Each-Choice) | §9.4 | 所有流程 |
|
|
151
|
+
| 升級到 All-Combinations | §9.4 | 認證 / 付款 / 安全 |
|
|
152
|
+
| UAT 驗收腳本(預先填寫) | §9.4 | PRD 核准之前 |
|
|
153
|
+
|
|
154
|
+
> **為什麼在 PRD 階段?** 測試工程師無法從只描述 happy path 的規格推導出分支覆蓋。在測試設計階段才發現缺漏的決策點會浪費整整一個 sprint。
|
|
155
|
+
|
|
156
|
+
### Gate 1 — PR 合併(每個功能分支)
|
|
157
|
+
|
|
158
|
+
任何觸及 ≥ 3 步驟流程的 PR 必須包含覆蓋該 PR 所引入或修改之終止狀態的自動化測試。若終止狀態被加入 §2.4 而沒有對應的測試,審查者應阻擋合併。
|
|
159
|
+
|
|
160
|
+
### Gate 3 — Pre-UAT 部署(自動化 + QA Lead 簽核)
|
|
161
|
+
|
|
162
|
+
CI 必須在 UAT 開始**之前**證明覆蓋完整性。UAT 用於正確性驗證,不是技術測試。
|
|
163
|
+
|
|
164
|
+
必要的 CI 檢查:
|
|
165
|
+
- 所有決策表場景都有通過的自動化測試
|
|
166
|
+
- 沒有任何終止狀態缺乏測試覆蓋
|
|
167
|
+
- 分支覆蓋率 ≥ 90%(或專案自定義門檻)
|
|
168
|
+
- 認證 / 付款 / 安全流程的 All-Combinations 全數通過
|
|
169
|
+
|
|
170
|
+
> 未通過 Gate 3 就部署到 UAT,等於強迫業務利害關係人充當技術 QA——這是對 UAT 時間既昂貴又打擊士氣的濫用。
|
|
171
|
+
|
|
172
|
+
### Gate 4 — UAT 簽核(業務正確性,上線前)
|
|
173
|
+
|
|
174
|
+
UAT 驗證的是終止狀態的**定義是否正確**地對應真實業務規則,而不是它們是否被覆蓋。使用 §9.4 的 UAT 驗收腳本(直接從決策表推導——不需要另外建立腳本):
|
|
175
|
+
|
|
176
|
+
- 業務利害關係人逐列(終止狀態)簽核
|
|
177
|
+
- 若 UAT 揭露先前未定義的終止狀態:將其加入 §2.4 + 決策表 + 自動化測試,重跑 Gate 3,然後恢復 UAT
|
|
178
|
+
- UAT 期間沒有發現新的終止狀態 = §2.4 足夠周延的強烈訊號
|
|
179
|
+
|
|
180
|
+
### 閘門模型總覽
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
PRD Sign-off
|
|
184
|
+
│ Gate 0: §2.4 + §9.4 complete (Decision Points, Terminal States,
|
|
185
|
+
│ Decision Table, UAT script pre-filled)
|
|
186
|
+
▼
|
|
187
|
+
Implementation + PR Reviews
|
|
188
|
+
│ Gate 1: Each PR covering a flow includes terminal state tests
|
|
189
|
+
▼
|
|
190
|
+
Staging / Integration
|
|
191
|
+
│ (no formal gate — CI green is sufficient)
|
|
192
|
+
▼
|
|
193
|
+
Pre-UAT Deployment
|
|
194
|
+
│ Gate 3: CI proves 100% terminal state coverage + branch coverage ≥ 90%
|
|
195
|
+
▼
|
|
196
|
+
UAT Execution
|
|
197
|
+
│ Gate 4: Business sign-off on terminal state correctness
|
|
198
|
+
│ New terminal states → back to Gate 3 before proceeding
|
|
199
|
+
▼
|
|
200
|
+
Production
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## RQM 整合
|
|
206
|
+
|
|
207
|
+
Gate 3(Pre-UAT CI 覆蓋閘門)必須產出 **`flow_gate_report.json`** 產物,供 Release Quality Manifest(`release-quality-manifest.md`,欄位 `flow_gate_report`)消費。
|
|
208
|
+
|
|
209
|
+
### flow_gate_report.json Schema
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"generated_at": "2026-05-05T04:00:00Z",
|
|
214
|
+
"commit": "abc1234",
|
|
215
|
+
"flows": [
|
|
216
|
+
{
|
|
217
|
+
"flow_id": "login-authentication",
|
|
218
|
+
"spec_ref": "docs/specs/SPEC-001.md#2.4",
|
|
219
|
+
"decision_points": 3,
|
|
220
|
+
"terminal_states": 7,
|
|
221
|
+
"gate_0_complete": true,
|
|
222
|
+
"gate_1_pr_coverage": true,
|
|
223
|
+
"gate_3": {
|
|
224
|
+
"all_scenarios_green": true,
|
|
225
|
+
"terminal_states_covered": 7,
|
|
226
|
+
"terminal_states_defined": 7,
|
|
227
|
+
"branch_coverage_pct": 94,
|
|
228
|
+
"coverage_target": 90,
|
|
229
|
+
"all_combinations_required": false,
|
|
230
|
+
"status": "pass"
|
|
231
|
+
},
|
|
232
|
+
"gate_4_uat_signoff": true
|
|
233
|
+
}
|
|
234
|
+
],
|
|
235
|
+
"summary": {
|
|
236
|
+
"total_flows": 5,
|
|
237
|
+
"gate_0_complete": true,
|
|
238
|
+
"gate_1_pr_coverage": true,
|
|
239
|
+
"gate_3_ci_pass": true,
|
|
240
|
+
"gate_4_uat_signoff": true,
|
|
241
|
+
"status": "pass"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### 產生腳本掛鉤(Generation Script Hook)
|
|
247
|
+
|
|
248
|
+
在 CI 測試執行之後加入(Gate 3):
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# scripts/generate-flow-gate-report.sh
|
|
252
|
+
node scripts/generate-flow-gate-report.mjs \
|
|
253
|
+
--coverage-report coverage/coverage-summary.json \
|
|
254
|
+
--flow-specs "docs/specs/**/*.md" \
|
|
255
|
+
--uat-signoffs ".release-readiness/*.md" \
|
|
256
|
+
--output flow_gate_report.json
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
`summary.status` 欄位會餵入 `release-quality-manifest.yaml` 的 `flow_gate_report.status`。
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## 快速參考檢查清單
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
Flow: ___________________
|
|
267
|
+
|
|
268
|
+
□ Step 1 — Flow Identification
|
|
269
|
+
□ Preconditions documented
|
|
270
|
+
□ Ordered step sequence listed
|
|
271
|
+
□ All decision points extracted
|
|
272
|
+
□ All terminal states defined
|
|
273
|
+
|
|
274
|
+
□ Step 2 — Decision Table
|
|
275
|
+
□ Decision table created
|
|
276
|
+
□ Coverage strategy chosen (Each-Choice / Pairwise / All-Combinations)
|
|
277
|
+
□ Critical flows (auth/payment/security) → All-Combinations
|
|
278
|
+
|
|
279
|
+
□ Step 3 — Journey Test Structure
|
|
280
|
+
□ Happy path journey test (shared ctx, sequential steps)
|
|
281
|
+
□ Each branch outcome has its own describe block
|
|
282
|
+
□ Branch tests verify both response AND absence of side effects
|
|
283
|
+
□ No beforeEach resetting ctx between steps
|
|
284
|
+
```
|
|
@@ -3,7 +3,7 @@ source: ../../../core/forward-derivation-standards.md
|
|
|
3
3
|
source_version: 1.2.0
|
|
4
4
|
translation_version: 1.2.0
|
|
5
5
|
last_synced: 2026-03-18
|
|
6
|
-
status:
|
|
6
|
+
status: stale
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 正向推演標準 | Forward Derivation Standards
|
|
@@ -182,20 +182,19 @@ describe('AC-1: 使用者以有效憑證登入', () => {
|
|
|
182
182
|
# Generator: forward-derivation v1.0.0
|
|
183
183
|
# Generated at: 2026-01-19T10:00:00Z
|
|
184
184
|
|
|
185
|
-
@SPEC-001
|
|
186
185
|
Feature: 使用者認證
|
|
187
186
|
作為使用者
|
|
188
187
|
我想要登入系統
|
|
189
188
|
以便存取我的儀表板
|
|
190
189
|
|
|
191
|
-
@AC-1 @happy-path
|
|
190
|
+
@SPEC-001 @AC-1 @happy-path
|
|
192
191
|
Scenario: 使用者以有效憑證登入
|
|
193
192
|
# [來源] 來自 SPEC-001 AC-1
|
|
194
193
|
Given 已註冊的使用者有有效憑證
|
|
195
194
|
When 使用者提交登入表單
|
|
196
195
|
Then 使用者被導向儀表板
|
|
197
196
|
|
|
198
|
-
@AC-2 @error-handling
|
|
197
|
+
@SPEC-001 @AC-2 @error-handling
|
|
199
198
|
Scenario: 無效憑證登入失敗
|
|
200
199
|
# [來源] 來自 SPEC-001 AC-2
|
|
201
200
|
Given 使用者有無效憑證
|