universal-dev-standards 5.17.0 → 6.0.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/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 +2 -2
- 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/flow-based-testing.ai.yaml +2 -2
- package/bundled/ai/standards/forward-derivation-standards.ai.yaml +26 -2
- 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/refactoring-standards.ai.yaml +68 -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/skill-standard-alignment-check.ai.yaml +37 -2
- package/bundled/ai/standards/user-journey-testing.ai.yaml +107 -0
- 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 +9 -2
- 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 +1 -1
- package/bundled/core/error-code-standards.md +4 -3
- 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/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/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/refactoring-standards.md +44 -3
- package/bundled/core/replay-test.md +1 -1
- 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 +2 -2
- 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-oracle.md +167 -0
- package/bundled/core/versioning.md +133 -109
- package/bundled/locales/COVERAGE.md +84 -73
- package/bundled/locales/zh-CN/CHANGELOG.md +71 -6
- package/bundled/locales/zh-CN/CLAUDE.md +1 -1
- package/bundled/locales/zh-CN/README.md +22 -9
- package/bundled/locales/zh-CN/SECURITY.md +1 -1
- package/bundled/locales/zh-CN/adoption/DAILY-WORKFLOW-GUIDE.md +2 -2
- 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 +229 -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 +199 -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/full-coverage-testing.md +197 -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 +129 -0
- package/bundled/locales/zh-CN/core/llm-output-validation.md +192 -0
- package/bundled/locales/zh-CN/core/logging-standards.md +130 -8
- package/bundled/locales/zh-CN/core/mock-boundary.md +109 -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 +76 -5
- package/bundled/locales/zh-CN/core/pipeline-security-gates.md +126 -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/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 +96 -0
- package/bundled/locales/zh-CN/core/self-review-protocol.md +167 -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/versioning.md +1 -1
- package/bundled/locales/zh-CN/docs/CHEATSHEET.md +31 -6
- package/bundled/locales/zh-CN/docs/FEATURE-REFERENCE.md +61 -34
- 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/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 +109 -13
- package/bundled/locales/zh-CN/skills/brainstorm-assistant/guide.md +30 -8
- 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 +146 -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 +71 -6
- package/bundled/locales/zh-TW/CLAUDE.md +1 -1
- package/bundled/locales/zh-TW/MAINTENANCE.md +25 -2
- package/bundled/locales/zh-TW/README.md +22 -9
- package/bundled/locales/zh-TW/SECURITY.md +1 -1
- package/bundled/locales/zh-TW/adoption/DAILY-WORKFLOW-GUIDE.md +2 -2
- 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/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 +129 -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 +76 -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 +126 -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/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 +96 -0
- package/bundled/locales/zh-TW/core/self-review-protocol.md +2 -2
- 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-oracle.md +159 -0
- package/bundled/locales/zh-TW/core/versioning.md +112 -112
- package/bundled/locales/zh-TW/docs/CHEATSHEET.md +31 -6
- package/bundled/locales/zh-TW/docs/DEV-WORKFLOW-MAPPING.md +6 -6
- package/bundled/locales/zh-TW/docs/FEATURE-REFERENCE.md +61 -34
- 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/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 +110 -14
- package/bundled/locales/zh-TW/skills/brainstorm-assistant/guide.md +31 -7
- 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 +29 -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 +133 -11
- package/bundled/skills/brainstorm-assistant/guide.md +33 -5
- 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 +2 -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 +3 -3
- 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 +110 -58
- 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 +58 -146
- 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
package/bin/uds.js
CHANGED
|
@@ -13,18 +13,14 @@ import { configCommand } from '../src/commands/config.js';
|
|
|
13
13
|
import { hitlCommand } from '../src/commands/hitl.js';
|
|
14
14
|
import { skillsCommand } from '../src/commands/skills.js';
|
|
15
15
|
import { agentListCommand, agentInstallCommand, agentInfoCommand } from '../src/commands/agent.js';
|
|
16
|
-
import { workflowListCommand, workflowInstallCommand, workflowInfoCommand, workflowExecuteCommand, workflowStatusCommand } from '../src/commands/workflow.js';
|
|
17
16
|
import { aiContextInitCommand, aiContextValidateCommand, aiContextGraphCommand } from '../src/commands/ai-context.js';
|
|
18
|
-
import { sweepCommand } from '../src/commands/sweep.js';
|
|
19
17
|
import { auditCommand } from '../src/commands/audit.js';
|
|
20
18
|
import { uninstallCommand } from '../src/commands/uninstall.js';
|
|
21
19
|
import { specCreateCommand, specListCommand, specShowCommand, specConfirmCommand, specArchiveCommand, specDeleteCommand, specSearchCommand } from '../src/commands/spec.js';
|
|
22
20
|
import { quickstartCommand } from '../src/commands/quickstart.js';
|
|
23
21
|
import { specSplitCommand } from '../src/commands/spec-split.js';
|
|
24
|
-
import { startCommand, missionStatusCommand, missionPauseCommand, missionResumeCommand, missionCancelCommand, missionListCommand } from '../src/commands/start.js';
|
|
25
22
|
import { releaseCommand } from '../src/commands/release.js';
|
|
26
23
|
import { compileStandards } from '../src/commands/compile.js';
|
|
27
|
-
import { flowCreateCommand, flowListCommand, flowValidateCommand, flowDiffCommand, flowExportCommand, flowImportCommand } from '../src/commands/flow.js';
|
|
28
24
|
import { generateReport } from '../src/commands/report.js';
|
|
29
25
|
import { mcpCommand } from '../src/commands/mcp.js';
|
|
30
26
|
import { runIntentCommand } from '../src/commands/run-intent.js';
|
|
@@ -36,6 +32,17 @@ import { readManifest, isInitialized } from '../src/utils/copier.js';
|
|
|
36
32
|
const require = createRequire(import.meta.url);
|
|
37
33
|
const pkg = require('../package.json');
|
|
38
34
|
|
|
35
|
+
// Non-UTF-8 Windows consoles (e.g. CP950/Big5 on zh-TW systems) render UTF-8
|
|
36
|
+
// output as mojibake — switch the active code page before any output (#125)
|
|
37
|
+
if (process.platform === 'win32') {
|
|
38
|
+
try {
|
|
39
|
+
const { execSync } = await import('node:child_process');
|
|
40
|
+
execSync('chcp 65001', { stdio: 'ignore' });
|
|
41
|
+
} catch {
|
|
42
|
+
// Best effort — cosmetic only, never block the CLI
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
39
46
|
/**
|
|
40
47
|
* Perform update check and print notice if a newer version is available.
|
|
41
48
|
* Resolves silently on error so it never breaks CLI flow.
|
|
@@ -216,14 +223,6 @@ program
|
|
|
216
223
|
.description('List installed Claude Code skills')
|
|
217
224
|
.action(skillsCommand);
|
|
218
225
|
|
|
219
|
-
program
|
|
220
|
-
.command('sweep')
|
|
221
|
-
.description('Auto-cleanup code after vibe coding sessions')
|
|
222
|
-
.option('--fix', 'Apply fixes instead of dry-run preview')
|
|
223
|
-
.option('--report', 'Save report to .uds/reports/')
|
|
224
|
-
.option('-v, --verbose', 'Show detailed output')
|
|
225
|
-
.action(sweepCommand);
|
|
226
|
-
|
|
227
226
|
program
|
|
228
227
|
.command('audit')
|
|
229
228
|
.description('Deep health diagnosis with pattern detection and feedback (strategic). For quick file check, use "uds check"')
|
|
@@ -231,6 +230,7 @@ program
|
|
|
231
230
|
.option('--patterns', 'Pattern detection only')
|
|
232
231
|
.option('--friction', 'Friction detection only')
|
|
233
232
|
.option('--report', 'Interactive feedback submission')
|
|
233
|
+
.option('--yes', 'Submit all findings without interactive selection (CI / non-TTY)')
|
|
234
234
|
.option('--dry-run', 'Preview report without submitting')
|
|
235
235
|
.option('--gh', 'Force gh CLI for submission')
|
|
236
236
|
.option('--format <format>', 'Output format (json)')
|
|
@@ -305,6 +305,7 @@ program
|
|
|
305
305
|
.description('Manage release process (promote, deploy, manifest, verify)')
|
|
306
306
|
.option('--result <result>', 'Test result for deploy command (passed/failed)')
|
|
307
307
|
.option('--checksum <hash>', 'Package checksum for manifest command')
|
|
308
|
+
.option('--artifact <path>', 'Artefact file to verify against the manifest checksum (verify command)')
|
|
308
309
|
.action(releaseCommand);
|
|
309
310
|
|
|
310
311
|
// Spec command with subcommands (Vibe Coding)
|
|
@@ -398,47 +399,6 @@ agentCommand
|
|
|
398
399
|
.description('Show detailed information about an agent')
|
|
399
400
|
.action(agentInfoCommand);
|
|
400
401
|
|
|
401
|
-
// Workflow command with subcommands
|
|
402
|
-
const workflowCommand = program
|
|
403
|
-
.command('workflow')
|
|
404
|
-
.description('Manage UDS workflows for AI tools');
|
|
405
|
-
|
|
406
|
-
workflowCommand
|
|
407
|
-
.command('list')
|
|
408
|
-
.description('List available and installed workflows')
|
|
409
|
-
.option('--installed', 'Show installation status for all AI tools')
|
|
410
|
-
.action(workflowListCommand);
|
|
411
|
-
|
|
412
|
-
workflowCommand
|
|
413
|
-
.command('install [workflow-name]')
|
|
414
|
-
.description('Install workflows (specify name or "all" for all workflows)')
|
|
415
|
-
.option('-t, --tool <tool>', 'Target AI tool (default: claude-code)')
|
|
416
|
-
.option('-g, --global', 'Install to user level instead of project level')
|
|
417
|
-
.option('-y, --yes', 'Skip confirmation prompts')
|
|
418
|
-
.action(workflowInstallCommand);
|
|
419
|
-
|
|
420
|
-
workflowCommand
|
|
421
|
-
.command('info <workflow-name>')
|
|
422
|
-
.description('Show detailed information about a workflow')
|
|
423
|
-
.action(workflowInfoCommand);
|
|
424
|
-
|
|
425
|
-
workflowCommand
|
|
426
|
-
.command('execute <workflow-name>')
|
|
427
|
-
.alias('run')
|
|
428
|
-
.description('Execute a workflow step by step')
|
|
429
|
-
.option('-t, --tool <tool>', 'Target AI tool (default: claude-code)')
|
|
430
|
-
.option('--resume', 'Resume from saved state')
|
|
431
|
-
.option('--restart', 'Restart from beginning (discard saved state)')
|
|
432
|
-
.option('-v, --verbose', 'Show detailed output')
|
|
433
|
-
.option('--dry-run', 'Show steps without executing')
|
|
434
|
-
.option('-y, --yes', 'Skip confirmation prompts')
|
|
435
|
-
.action(workflowExecuteCommand);
|
|
436
|
-
|
|
437
|
-
workflowCommand
|
|
438
|
-
.command('status [workflow-name]')
|
|
439
|
-
.description('Show execution status of workflows')
|
|
440
|
-
.action(workflowStatusCommand);
|
|
441
|
-
|
|
442
402
|
// AI Context command with subcommands
|
|
443
403
|
const aiContextCommand = program
|
|
444
404
|
.command('ai-context')
|
|
@@ -463,88 +423,6 @@ aiContextCommand
|
|
|
463
423
|
.option('-m, --mermaid', 'Output Mermaid diagram format')
|
|
464
424
|
.action(aiContextGraphCommand);
|
|
465
425
|
|
|
466
|
-
// Flow command with subcommands (SPEC-FLOW-001)
|
|
467
|
-
const flowCommand = program
|
|
468
|
-
.command('flow')
|
|
469
|
-
.description('Manage custom SDLC flows');
|
|
470
|
-
|
|
471
|
-
flowCommand
|
|
472
|
-
.command('create')
|
|
473
|
-
.description('Create a custom flow interactively')
|
|
474
|
-
.action(flowCreateCommand);
|
|
475
|
-
|
|
476
|
-
flowCommand
|
|
477
|
-
.command('list')
|
|
478
|
-
.alias('ls')
|
|
479
|
-
.description('List all available flows (built-in + custom)')
|
|
480
|
-
.action(flowListCommand);
|
|
481
|
-
|
|
482
|
-
flowCommand
|
|
483
|
-
.command('validate <id>')
|
|
484
|
-
.description('Validate a flow definition')
|
|
485
|
-
.action(flowValidateCommand);
|
|
486
|
-
|
|
487
|
-
flowCommand
|
|
488
|
-
.command('diff <flow-a> <flow-b>')
|
|
489
|
-
.description('Compare two flows')
|
|
490
|
-
.action(flowDiffCommand);
|
|
491
|
-
|
|
492
|
-
flowCommand
|
|
493
|
-
.command('export <id>')
|
|
494
|
-
.description('Export a flow as a shareable bundle')
|
|
495
|
-
.option('-o, --output <path>', 'Output file path')
|
|
496
|
-
.action(flowExportCommand);
|
|
497
|
-
|
|
498
|
-
flowCommand
|
|
499
|
-
.command('import <file>')
|
|
500
|
-
.description('Import a flow bundle')
|
|
501
|
-
.option('-f, --force', 'Overwrite existing files')
|
|
502
|
-
.action(flowImportCommand);
|
|
503
|
-
|
|
504
|
-
// Start command for mission-oriented development
|
|
505
|
-
program
|
|
506
|
-
.command('start [mission-type] [intent]')
|
|
507
|
-
.description('Start a new development mission')
|
|
508
|
-
.option('-y, --yes', 'Skip confirmation prompts')
|
|
509
|
-
.option('--skip-planning', 'Skip automatic transition to planning phase')
|
|
510
|
-
.action(startCommand);
|
|
511
|
-
|
|
512
|
-
// Mission command with subcommands
|
|
513
|
-
const missionCommand = program
|
|
514
|
-
.command('mission')
|
|
515
|
-
.description('Manage development missions');
|
|
516
|
-
|
|
517
|
-
missionCommand
|
|
518
|
-
.command('status')
|
|
519
|
-
.description('Show current mission status')
|
|
520
|
-
.action(missionStatusCommand);
|
|
521
|
-
|
|
522
|
-
missionCommand
|
|
523
|
-
.command('pause')
|
|
524
|
-
.description('Pause current mission')
|
|
525
|
-
.option('-r, --reason <reason>', 'Reason for pausing')
|
|
526
|
-
.action(missionPauseCommand);
|
|
527
|
-
|
|
528
|
-
missionCommand
|
|
529
|
-
.command('resume')
|
|
530
|
-
.description('Resume paused mission')
|
|
531
|
-
.action(missionResumeCommand);
|
|
532
|
-
|
|
533
|
-
missionCommand
|
|
534
|
-
.command('cancel')
|
|
535
|
-
.description('Cancel current mission')
|
|
536
|
-
.option('-r, --reason <reason>', 'Reason for cancellation')
|
|
537
|
-
.option('-y, --yes', 'Skip confirmation')
|
|
538
|
-
.action(missionCancelCommand);
|
|
539
|
-
|
|
540
|
-
missionCommand
|
|
541
|
-
.command('list')
|
|
542
|
-
.alias('ls')
|
|
543
|
-
.description('List all missions')
|
|
544
|
-
.option('-t, --type <type>', 'Filter by mission type')
|
|
545
|
-
.option('-s, --state <state>', 'Filter by state')
|
|
546
|
-
.action(missionListCommand);
|
|
547
|
-
|
|
548
426
|
// MCP command for AI tool integration
|
|
549
427
|
mcpCommand(program);
|
|
550
428
|
|
|
@@ -7,7 +7,7 @@ standard:
|
|
|
7
7
|
description: AC-to-test traceability matrix, coverage calculation, and spec generation quality rules
|
|
8
8
|
|
|
9
9
|
meta:
|
|
10
|
-
version: "1.
|
|
10
|
+
version: "1.1.0"
|
|
11
11
|
updated: "2026-03-18"
|
|
12
12
|
source: core/acceptance-criteria-traceability.md
|
|
13
13
|
references:
|
|
@@ -16,6 +16,14 @@ standard:
|
|
|
16
16
|
- "ISTQB Foundation (Requirements-based testing)"
|
|
17
17
|
- "INVEST Principles (Acceptance criteria quality)"
|
|
18
18
|
|
|
19
|
+
# XSPEC-070 Phase 2 — skill↔standard content-coverage audit.
|
|
20
|
+
# Consumed by scripts/check-skill-content-coverage.ts. v1.1.0 mandates the
|
|
21
|
+
# combined "canonical annotation" `@SPEC-<id> @AC-<n>`; the anchor skill
|
|
22
|
+
# (ac-coverage) MUST teach that term, or CONTENT-002 fires.
|
|
23
|
+
audit:
|
|
24
|
+
mandatory_keywords:
|
|
25
|
+
- canonical annotation
|
|
26
|
+
|
|
19
27
|
traceability_matrix:
|
|
20
28
|
description: Standard format for tracking AC to test relationships
|
|
21
29
|
fields:
|
|
@@ -36,10 +44,11 @@ standard:
|
|
|
36
44
|
description: Additional context (blockers, dependencies)
|
|
37
45
|
|
|
38
46
|
linking_convention:
|
|
39
|
-
description: Tests must reference source AC using
|
|
47
|
+
description: Tests must reference source AC using the canonical combined annotation
|
|
48
|
+
canonical: "@SPEC-<id> @AC-<n> — single combined tag on one line, e.g. @SPEC-001 @AC-1"
|
|
49
|
+
note: "Do not split into separate @AC / @SPEC lines; forward-derivation and tag filters consume the combined form"
|
|
40
50
|
annotations:
|
|
41
|
-
- "@
|
|
42
|
-
- "@SPEC SPEC-XXX — in test name or comment"
|
|
51
|
+
- "@SPEC-001 @AC-1 — in test name or comment (canonical, parallel)"
|
|
43
52
|
- "describe('AC-N: description') — in test structure"
|
|
44
53
|
|
|
45
54
|
coverage_status:
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
id: ai-response-navigation
|
|
5
5
|
meta:
|
|
6
|
-
version: "1.
|
|
7
|
-
updated: "2026-
|
|
6
|
+
version: "1.1.0"
|
|
7
|
+
updated: "2026-06-10"
|
|
8
8
|
source: core/ai-response-navigation.md
|
|
9
9
|
description: Every substantive AI response must include contextual next-step suggestions with recommended options
|
|
10
10
|
|
|
@@ -64,6 +64,19 @@ rules:
|
|
|
64
64
|
but ensure format consistency — use blockquote, recommendation marking, and appropriate template.
|
|
65
65
|
priority: recommended
|
|
66
66
|
|
|
67
|
+
- id: model-tier-annotation
|
|
68
|
+
trigger: a next-step option clearly maps to a specific task complexity tier
|
|
69
|
+
instruction: >
|
|
70
|
+
OPTIONALLY append a model tier annotation after the option description:
|
|
71
|
+
〔model: Fast〕, 〔model: Standard〕, or 〔model: Capable〕.
|
|
72
|
+
Use complexity signals from the model-selection standard to determine the tier:
|
|
73
|
+
Fast = single file, unambiguous spec; Standard = 2-5 files, inter-module judgment;
|
|
74
|
+
Capable = 5+ files, architectural decisions.
|
|
75
|
+
Tier names are vendor-neutral — each tool maps them to available models independently.
|
|
76
|
+
Existing skills do not need retroactive updates; new and revised skills are encouraged to adopt.
|
|
77
|
+
Localized notation: 〔模型:Fast〕 / 〔模型:Standard〕 / 〔模型:Capable〕
|
|
78
|
+
priority: optional
|
|
79
|
+
|
|
67
80
|
related_standards:
|
|
68
81
|
- ai-command-behavior
|
|
69
82
|
- ai-instruction-standards
|
|
@@ -13,8 +13,8 @@ standard:
|
|
|
13
13
|
- "Always require HTTPS"
|
|
14
14
|
|
|
15
15
|
meta:
|
|
16
|
-
version: "1.
|
|
17
|
-
updated: "2026-
|
|
16
|
+
version: "1.1.0"
|
|
17
|
+
updated: "2026-06-24"
|
|
18
18
|
source: core/api-design-standards.md
|
|
19
19
|
description: Comprehensive API design guidelines for REST, GraphQL, and gRPC
|
|
20
20
|
|
|
@@ -60,10 +60,30 @@ standard:
|
|
|
60
60
|
header: {example: "Accept-Version: v1", pros: "clean URLs", cons: "hidden, harder to test"}
|
|
61
61
|
query_param: {example: "?v=1", pros: "easy to add", cons: "caching issues"}
|
|
62
62
|
lifecycle:
|
|
63
|
+
# States only; period numbers are owned by deprecation-standards (single source).
|
|
63
64
|
current: "Full support, new features"
|
|
64
|
-
supported: "
|
|
65
|
-
deprecated: "
|
|
65
|
+
supported: "Maintained in parallel with successor; bug/security fixes only"
|
|
66
|
+
deprecated: "Retirement announced; Deprecation/Sunset headers, migration guide"
|
|
66
67
|
retired: "Return 410 Gone"
|
|
68
|
+
periods_source: "core/deprecation-standards.md#api-deprecation"
|
|
69
|
+
backward_compatibility:
|
|
70
|
+
# Breaking → requires MAJOR bump (see versioning.md#incrementing-rules)
|
|
71
|
+
breaking:
|
|
72
|
+
- Remove a public API endpoint
|
|
73
|
+
- Remove a required request field
|
|
74
|
+
- Add a required request field
|
|
75
|
+
- Change a response field's type
|
|
76
|
+
- Change the meaning of an error code
|
|
77
|
+
- Remove a response field consumers depend on
|
|
78
|
+
safe: # MINOR or PATCH
|
|
79
|
+
- Add an optional request field
|
|
80
|
+
- Add a new response field
|
|
81
|
+
- Add a new endpoint
|
|
82
|
+
- Add a new error code
|
|
83
|
+
- Improve an error message
|
|
84
|
+
- Performance improvement
|
|
85
|
+
deprecation: "Lifecycle, per-tier notice periods, Sunset process → core/deprecation-standards.md#api-deprecation"
|
|
86
|
+
migration_guide: "On a breaking MAJOR, publish a v1→v2 guide mapping each old usage to its replacement"
|
|
67
87
|
|
|
68
88
|
pagination:
|
|
69
89
|
strategies:
|
|
@@ -160,6 +180,9 @@ rules:
|
|
|
160
180
|
- id: REST-004
|
|
161
181
|
rule: "Version APIs via URL path (/v1/) and maintain version lifecycle (current → deprecated → retired)"
|
|
162
182
|
severity: warning
|
|
183
|
+
- id: REST-009
|
|
184
|
+
rule: "Classify every change before release: breaking changes (remove/retype/required fields, error-code meaning) require a MAJOR bump; additive changes ship as MINOR/PATCH. Deprecation periods follow deprecation-standards"
|
|
185
|
+
severity: error
|
|
163
186
|
- id: REST-005
|
|
164
187
|
rule: "Include rate limiting headers (X-RateLimit-Limit, Remaining, Reset) on all responses"
|
|
165
188
|
severity: warning
|
|
@@ -7,12 +7,13 @@ standard:
|
|
|
7
7
|
description: Multi-modal golden file format for migration parity verification and refactoring characterization; supports HTTP, CLI, File, and Event adapters; defines snapshot schema, parity gate, and Gate 0 protocol
|
|
8
8
|
|
|
9
9
|
meta:
|
|
10
|
-
version: "1.
|
|
11
|
-
updated: "2026-
|
|
10
|
+
version: "1.2.0"
|
|
11
|
+
updated: "2026-06-28"
|
|
12
12
|
source: core/behavior-snapshot.md
|
|
13
13
|
references:
|
|
14
14
|
- "XSPEC-201: Refactor/Migration Completeness Protocol"
|
|
15
15
|
- "XSPEC-203: Language Pack Architecture (multi-modal adapter extension)"
|
|
16
|
+
- "XSPEC-306: Oracle Comparison Fidelity & Serialization-Format Parity"
|
|
16
17
|
- "Michael Feathers: Working Effectively with Legacy Code (characterization tests)"
|
|
17
18
|
- "Golden Master Testing pattern"
|
|
18
19
|
|
|
@@ -169,15 +170,73 @@ standard:
|
|
|
169
170
|
- background job/queue-triggered flows
|
|
170
171
|
|
|
171
172
|
ignore_fields_guidance:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
core_principle: |
|
|
174
|
+
Ignore the VALUE, keep the FORMAT assertion. A non-deterministic field has a
|
|
175
|
+
value that changes between runs — its SHAPE is not free to change. Dropping the
|
|
176
|
+
whole field (naive ignore_fields) also stops asserting its format, so a serializer
|
|
177
|
+
that silently switches ISO-8601 to epoch, drops the timezone, or changes UUID
|
|
178
|
+
version/casing passes unnoticed.
|
|
179
|
+
ignore_value_assert_format:
|
|
180
|
+
- field: created_at, updated_at, timestamp
|
|
181
|
+
ignore: the instant
|
|
182
|
+
still_assert: "ISO-8601 vs epoch vs custom; fractional-second precision (digits); timezone representation (Z vs +00:00 vs offset)"
|
|
183
|
+
- field: token, session_id, csrf_token, access_token, refresh_token
|
|
184
|
+
ignore: the random bytes
|
|
185
|
+
still_assert: "length, charset, prefix"
|
|
186
|
+
- field: request_id, trace_id, correlation_id
|
|
187
|
+
ignore: the random UUID
|
|
188
|
+
still_assert: "UUID version + canonical 8-4-4-4-12 shape and casing"
|
|
176
189
|
always_compare:
|
|
177
190
|
- status, code, message, error_code
|
|
178
191
|
- user_id, order_id (when using fixed test data)
|
|
179
192
|
- amount, quantity, price (business calculation results)
|
|
180
193
|
- "success, refunded, cancelled (boolean business outcomes)"
|
|
194
|
+
whole_field_ignore:
|
|
195
|
+
status: "exception — requires justification"
|
|
196
|
+
when_acceptable: "field format is genuinely unspecified or irrelevant (e.g. an opaque vendor blob); document the reason inline"
|
|
197
|
+
risk: "masks FORMAT drift — timestamp precision/timezone, UUID version, or a number gaining/losing a trailing zero passes silently"
|
|
198
|
+
|
|
199
|
+
serialization_format_parity:
|
|
200
|
+
description: |
|
|
201
|
+
A differential oracle that compares only DESERIALIZED objects normalizes
|
|
202
|
+
serialization-level differences away. To catch serialization bugs, compare at a
|
|
203
|
+
granularity that preserves the serialized form: compare the RAW serialized string,
|
|
204
|
+
or explicitly assert the JSON shape.
|
|
205
|
+
hidden_by_object_compare:
|
|
206
|
+
- "1 vs 1.0 (number format) — both parse to number 1"
|
|
207
|
+
- "null vs missing key — both read as absent/null"
|
|
208
|
+
- "true vs 1 vs \"true\" — after type coercion"
|
|
209
|
+
- "key ordering — object keys are unordered"
|
|
210
|
+
- "leading zeros / scientific notation — normalized on parse"
|
|
211
|
+
- "whitespace and Unicode escaping (\\/ , \\uXXXX) — lost on parse"
|
|
212
|
+
strategies:
|
|
213
|
+
raw_string: "compare the exact serialized string — strongest fidelity; use when the wire format is contractual (public API, cached payloads, signed bodies)"
|
|
214
|
+
json_shape_assertions:
|
|
215
|
+
- "key presence and order (when order is contractual)"
|
|
216
|
+
- "number format: 1 vs 1.0, leading zeros, scientific notation"
|
|
217
|
+
- "null vs absent key (omitted field != explicit null)"
|
|
218
|
+
- "boolean/string type: true vs \"true\" vs 1"
|
|
219
|
+
cross_language_defaults:
|
|
220
|
+
note: "rewriting in another language swaps the serializer; serializers differ in DEFAULTS — assert these explicitly"
|
|
221
|
+
php_json_encode_vs_csharp_system_text_json:
|
|
222
|
+
- concern: number trailing zeros
|
|
223
|
+
php: "(float)1.0 emits 1; JSON_PRESERVE_ZERO_FRACTION needed to keep 1.0"
|
|
224
|
+
csharp: "double 1.0 serializes as 1; decimal preserves scale"
|
|
225
|
+
- concern: date/time
|
|
226
|
+
php: "no native date type — app-defined (custom string or epoch)"
|
|
227
|
+
csharp: "DateTime/DateTimeOffset -> ISO-8601 round-trip 'O', e.g. 2026-05-12T08:30:00+00:00"
|
|
228
|
+
- concern: timezone
|
|
229
|
+
php: "app-defined"
|
|
230
|
+
csharp: "DateTimeOffset keeps offset; DateTime.Kind decides Z vs offset"
|
|
231
|
+
- concern: null properties
|
|
232
|
+
php: "included as \"k\":null"
|
|
233
|
+
csharp: "included by default; omitted only with DefaultIgnoreCondition.WhenWritingNull"
|
|
234
|
+
- concern: key ordering
|
|
235
|
+
php: "insertion order (associative array)"
|
|
236
|
+
csharp: "property-declaration / reflection order"
|
|
237
|
+
- concern: slash and unicode escaping
|
|
238
|
+
php: "escapes / and non-ASCII unless JSON_UNESCAPED_SLASHES / JSON_UNESCAPED_UNICODE"
|
|
239
|
+
csharp: "does not escape /; escapes non-ASCII per configured encoder"
|
|
181
240
|
|
|
182
241
|
parity_gate:
|
|
183
242
|
description: CI gate comparing new system responses against recorded snapshots
|
|
@@ -225,10 +284,27 @@ standard:
|
|
|
225
284
|
- id: ignore-fields-discipline
|
|
226
285
|
trigger: creating or reviewing snapshot ignore_fields
|
|
227
286
|
instruction: |
|
|
228
|
-
Only add fields to ignore_fields if
|
|
229
|
-
(timestamps, tokens, random IDs)
|
|
230
|
-
|
|
287
|
+
Ignore the VALUE, keep the FORMAT assertion. Only add fields to ignore_fields if
|
|
288
|
+
they are legitimately non-deterministic (timestamps, tokens, random IDs) — and even
|
|
289
|
+
then, still assert the field's format/shape (ISO-8601 pattern, UUID version, token
|
|
290
|
+
charset/prefix). Whole-field ignore (no value AND no format assertion) is an
|
|
291
|
+
exception that requires justification because it masks format drift. Business logic
|
|
292
|
+
fields must always be compared. Overuse of ignore_fields defeats parity testing.
|
|
293
|
+
priority: required
|
|
294
|
+
anti_pattern: "Whole-field ignore on a non-deterministic field — masks timestamp precision/timezone or UUID-version drift"
|
|
295
|
+
|
|
296
|
+
- id: serialization-format-parity
|
|
297
|
+
trigger: differential oracle comparing serialized output (JSON etc.)
|
|
298
|
+
instruction: |
|
|
299
|
+
Do NOT compare only deserialized objects — parsing normalizes away serialization
|
|
300
|
+
bugs (1 vs 1.0, null vs missing key, key order, true vs 1, leading zeros, escaping).
|
|
301
|
+
Compare the RAW serialized string, or assert the JSON shape explicitly (key presence/
|
|
302
|
+
order, number format, null vs absent, boolean/string type). On cross-language rewrites
|
|
303
|
+
the serializer changes (e.g. PHP json_encode vs C# System.Text.Json have different
|
|
304
|
+
defaults for trailing zeros, dates, timezone, null omission, key order, escaping) —
|
|
305
|
+
assert these explicitly because nothing else will.
|
|
231
306
|
priority: required
|
|
307
|
+
anti_pattern: "Comparing only the deserialized object — serialization-format bugs are invisible after parse"
|
|
232
308
|
|
|
233
309
|
- id: manual-snapshots
|
|
234
310
|
trigger: snapshot cannot be auto-recorded
|
|
@@ -270,3 +346,4 @@ related_standards:
|
|
|
270
346
|
- acceptance-criteria-traceability.ai.yaml
|
|
271
347
|
- refactoring-standards.ai.yaml
|
|
272
348
|
- testing.ai.yaml
|
|
349
|
+
- data-migration-testing.ai.yaml # same "don't compare what merely looks equal" principle, at the DB storage layer
|
|
@@ -12,8 +12,8 @@ standard:
|
|
|
12
12
|
- "Documentation: docs updated, CHANGELOG updated"
|
|
13
13
|
|
|
14
14
|
meta:
|
|
15
|
-
version: "2.
|
|
16
|
-
updated: "2026-
|
|
15
|
+
version: "2.1.0"
|
|
16
|
+
updated: "2026-06-18"
|
|
17
17
|
source: core/checkin-standards.md
|
|
18
18
|
description: Quality gates that must be passed before committing code
|
|
19
19
|
|
|
@@ -12,8 +12,8 @@ standard:
|
|
|
12
12
|
- "Be constructive and explain 'why'"
|
|
13
13
|
|
|
14
14
|
meta:
|
|
15
|
-
version: "2.
|
|
16
|
-
updated: "2026-
|
|
15
|
+
version: "2.1.0"
|
|
16
|
+
updated: "2026-06-18"
|
|
17
17
|
source: core/code-review-checklist.md
|
|
18
18
|
description: Systematic checklist for reviewing code quality and security
|
|
19
19
|
|
|
@@ -66,7 +66,7 @@ standard:
|
|
|
66
66
|
quality:
|
|
67
67
|
description: Standards for code review, refactoring, and quality assurance
|
|
68
68
|
triggers:
|
|
69
|
-
- "/review"
|
|
69
|
+
- "/code-review"
|
|
70
70
|
- "/refactor"
|
|
71
71
|
- "/check"
|
|
72
72
|
- "code review"
|
|
@@ -148,7 +148,7 @@ standard:
|
|
|
148
148
|
Map slash commands to domains:
|
|
149
149
|
/tdd, /bdd, /atdd, /coverage → testing
|
|
150
150
|
/sdd, /spec, /derive, /reverse, /requirement → specification
|
|
151
|
-
/review, /refactor, /check → quality
|
|
151
|
+
/code-review, /refactor, /check → quality
|
|
152
152
|
/docs, /changelog, /generate-docs → documentation
|
|
153
153
|
/release, /commit → workflow
|
|
154
154
|
priority: required
|
|
@@ -157,7 +157,7 @@ standard:
|
|
|
157
157
|
trigger: "user invokes a UDS slash command, Skill, or UDS-related operation"
|
|
158
158
|
instruction: >
|
|
159
159
|
When the user invokes a UDS-related slash command (/commit, /sdd,
|
|
160
|
-
/review, /release, /tdd, /bdd, /docs, /changelog, etc.) or uses
|
|
160
|
+
/code-review, /release, /tdd, /bdd, /docs, /changelog, etc.) or uses
|
|
161
161
|
a UDS Skill for the FIRST TIME in the current conversation,
|
|
162
162
|
check for UDS updates:
|
|
163
163
|
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
id: data-migration-testing
|
|
5
5
|
meta:
|
|
6
|
-
version: "1.
|
|
7
|
-
updated: "2026-
|
|
6
|
+
version: "1.1.0"
|
|
7
|
+
updated: "2026-06-27"
|
|
8
8
|
source: core/data-migration-testing.md
|
|
9
|
-
description: Database migration up/down/idempotency testing standards for schema changes
|
|
9
|
+
description: Database migration up/down/idempotency testing standards for schema changes, plus encoding-conversion and aggregate-invariant testing for cross-encoding/cross-engine migrations
|
|
10
10
|
|
|
11
11
|
requirements:
|
|
12
12
|
REQ-1:
|
|
@@ -63,6 +63,33 @@ requirements:
|
|
|
63
63
|
Shared migration state between tests causes non-deterministic failures that are
|
|
64
64
|
extremely difficult to diagnose.
|
|
65
65
|
|
|
66
|
+
REQ-6:
|
|
67
|
+
id: REQ-DMT-006
|
|
68
|
+
title: Encoding Conversion Test
|
|
69
|
+
rule: >
|
|
70
|
+
Migrations that cross encodings or DB engines (e.g. UTF-8 -> UTF-16/NVARCHAR,
|
|
71
|
+
VARCHAR -> NVARCHAR, or an implicit collation change) MUST include a test that
|
|
72
|
+
asserts equality at the BYTE / codepoint / normalization level — not display
|
|
73
|
+
level. Cover NFC vs NFD normalization, multi-byte boundaries, and CJK / emoji /
|
|
74
|
+
combining marks (supplementary-plane codepoints).
|
|
75
|
+
rationale: >
|
|
76
|
+
Two different byte or normalization sequences can decode to glyphs that look
|
|
77
|
+
identical, so a display-level (toBe) assertion passes while the stored bytes —
|
|
78
|
+
and downstream LIKE / unique-key / collation behavior — are silently corrupted.
|
|
79
|
+
|
|
80
|
+
REQ-7:
|
|
81
|
+
id: REQ-DMT-007
|
|
82
|
+
title: Aggregate Invariant Test
|
|
83
|
+
rule: >
|
|
84
|
+
Migrations of business-critical data MUST capture aggregate invariants
|
|
85
|
+
(COUNT(*), SUM(column), COUNT(DISTINCT key), checksum) grouped by a business
|
|
86
|
+
dimension BEFORE the migration and assert they are unchanged AFTER. Same oracle
|
|
87
|
+
as post-cutover production reconciliation, run at migration-test time.
|
|
88
|
+
rationale: >
|
|
89
|
+
Row-by-row sampling proves individual rows survived but not that the distribution
|
|
90
|
+
survived; a single wrong SUM/COUNT/DISTINCT flags drift that any sample missing
|
|
91
|
+
the affected rows would not catch.
|
|
92
|
+
|
|
66
93
|
test_structure:
|
|
67
94
|
isolation: "Each migration test MUST run against an isolated in-memory or temp DB"
|
|
68
95
|
baseline: "Start from the schema state immediately before the migration under test"
|
|
@@ -71,6 +98,48 @@ test_structure:
|
|
|
71
98
|
down: "Assert schema returns to pre-migration state"
|
|
72
99
|
idempotency: "Apply migration twice; second apply must succeed without error"
|
|
73
100
|
data: "Seed rows before migration; assert row count and values after"
|
|
101
|
+
encoding: "Assert byte/codepoint/normalization identity (Buffer compare + spread-to-codepoints + normalize), NOT display-level toBe; cover NFC/NFD, multi-byte boundaries, CJK/emoji/combining marks"
|
|
102
|
+
aggregate: "Capture COUNT/SUM/COUNT(DISTINCT)/checksum grouped by business dimension before; assert deep-equal after"
|
|
103
|
+
|
|
104
|
+
cross_dialect_risks:
|
|
105
|
+
description: "SQLite -> SQL Server semantic disagreements; derive-list input for encoding/aggregate tests and the non-HTTP implicit-rule scan"
|
|
106
|
+
rows:
|
|
107
|
+
- point: Type system
|
|
108
|
+
sqlite: Dynamic typing (per-value affinity)
|
|
109
|
+
sqlserver: Static / strong typing
|
|
110
|
+
verify: Declare per-column type; scan for out-of-range / mixed-type values
|
|
111
|
+
- point: Boolean
|
|
112
|
+
sqlite: Stored as 0/1 integer
|
|
113
|
+
sqlserver: BIT
|
|
114
|
+
verify: 0/1 <-> BIT mapping; NULL boolean handling
|
|
115
|
+
- point: Date/time
|
|
116
|
+
sqlite: TEXT / REAL / INTEGER
|
|
117
|
+
sqlserver: datetime2 / datetimeoffset
|
|
118
|
+
verify: Format parse, time-zone, precision truncation
|
|
119
|
+
- point: Auto-increment PK
|
|
120
|
+
sqlite: AUTOINCREMENT
|
|
121
|
+
sqlserver: IDENTITY
|
|
122
|
+
verify: Existing id continuity; correct seed/reseed
|
|
123
|
+
- point: Case / collation
|
|
124
|
+
sqlite: LIKE case-insensitive by default / NOCASE
|
|
125
|
+
sqlserver: Determined by column collation
|
|
126
|
+
verify: Align collation; check unique-key folding collisions
|
|
127
|
+
- point: NULL ordering
|
|
128
|
+
sqlite: NULLs sort first (smallest)
|
|
129
|
+
sqlserver: Depends on configuration
|
|
130
|
+
verify: ORDER BY result-order invariant
|
|
131
|
+
- point: Float precision
|
|
132
|
+
sqlite: REAL
|
|
133
|
+
sqlserver: float / decimal
|
|
134
|
+
verify: Move money/exact values to decimal to avoid rounding error
|
|
135
|
+
- point: String concat
|
|
136
|
+
sqlite: "||"
|
|
137
|
+
sqlserver: "+ / CONCAT"
|
|
138
|
+
verify: Rewrite queries; reconcile NULL-concat semantics
|
|
139
|
+
- point: Pagination
|
|
140
|
+
sqlite: LIMIT / OFFSET
|
|
141
|
+
sqlserver: OFFSET..FETCH / TOP
|
|
142
|
+
verify: Rewrite + stable sort key for deterministic pages
|
|
74
143
|
|
|
75
144
|
tooling_guidance:
|
|
76
145
|
sqlite: "Use ':memory:' DSN; apply migrations via ORM migrate() or raw SQL"
|
|
@@ -89,6 +158,13 @@ anti_patterns:
|
|
|
89
158
|
- description: >
|
|
90
159
|
Writing migration tests after the fact without seeding data — misses the
|
|
91
160
|
data preservation class of bugs entirely.
|
|
161
|
+
- description: >
|
|
162
|
+
Asserting string equality only on the decoded value — display-level equality
|
|
163
|
+
passes even when bytes, normalization form, or codepoints were corrupted across
|
|
164
|
+
an encoding/engine change.
|
|
165
|
+
- description: >
|
|
166
|
+
Validating a cross-engine migration with row sampling alone — distribution-level
|
|
167
|
+
drift (a wrong SUM/COUNT/DISTINCT) escapes any sample that misses the affected rows.
|
|
92
168
|
|
|
93
169
|
related_standards:
|
|
94
170
|
- testing
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
id: deprecation-standards
|
|
5
5
|
meta:
|
|
6
|
-
version: "1.
|
|
7
|
-
updated: "2026-
|
|
6
|
+
version: "1.1.0"
|
|
7
|
+
updated: "2026-06-24"
|
|
8
8
|
source: core/deprecation-standards.md
|
|
9
9
|
description: API deprecation, feature sunset, system decommission lifecycle
|
|
10
10
|
|
|
@@ -21,6 +21,14 @@ api_deprecation:
|
|
|
21
21
|
sunset: "Sunset: Sat, 31 Dec 2026 23:59:59 GMT"
|
|
22
22
|
successor: 'Link: <url>; rel="successor-version"'
|
|
23
23
|
parallel_period: "≥6 months after new GA, or 3 months after last consumer migrates"
|
|
24
|
+
# Single source of truth for deprecation periods (consolidated from versioning.md,
|
|
25
|
+
# XSPEC-298 R8 / UDS #126). Sunset timeline above = default public-API cadence.
|
|
26
|
+
# Apply the LONGER of the tier minimum and parallel_period.
|
|
27
|
+
minimum_period_by_tier:
|
|
28
|
+
internal_api: "1 minor version"
|
|
29
|
+
partner_api: "2 minor versions + 3 months"
|
|
30
|
+
public_api: "2 minor versions + 6 months"
|
|
31
|
+
critical_infrastructure: "1 year minimum"
|
|
24
32
|
|
|
25
33
|
notification_channels:
|
|
26
34
|
- "CHANGELOG / Release Notes"
|