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
|
@@ -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"
|
|
@@ -13,8 +13,8 @@ standard:
|
|
|
13
13
|
- "Respect noise control levels and cooldown periods"
|
|
14
14
|
|
|
15
15
|
meta:
|
|
16
|
-
version: "1.
|
|
17
|
-
updated: "2026-
|
|
16
|
+
version: "1.1.0"
|
|
17
|
+
updated: "2026-06-18"
|
|
18
18
|
source: core/developer-memory.md
|
|
19
19
|
description: Structured system for capturing, retrieving, and surfacing developer experience insights across conversations and projects
|
|
20
20
|
|
|
@@ -115,7 +115,8 @@ standard:
|
|
|
115
115
|
bonus_rules:
|
|
116
116
|
- "3 consecutive valid: bonus +0.05"
|
|
117
117
|
- "3 consecutive invalid: flag for review"
|
|
118
|
-
- "confidence < 0.2: flag for retirement"
|
|
118
|
+
- "confidence < 0.2: flag for retirement (repeatedly invalidated = noise)"
|
|
119
|
+
- "not surfaced 180+ days AND confidence < 0.5: flag for retirement (dormant + low confidence; 180d matches staleness model; UDS default, configurable)"
|
|
119
120
|
- "confidence > 0.9 after 10+ uses: mark proven"
|
|
120
121
|
|
|
121
122
|
review:
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
id: documentation-writing-standards
|
|
5
5
|
meta:
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.2.0"
|
|
7
7
|
updated: "2026-03-17"
|
|
8
8
|
source: core/documentation-writing-standards.md
|
|
9
9
|
description: Documentation requirements based on project types (enhanced ADR, LLM writing, quality metrics, translation-friendly)
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
id: forward-derivation
|
|
5
5
|
meta:
|
|
6
|
-
version: "1.
|
|
7
|
-
updated: "2026-
|
|
6
|
+
version: "1.3.0"
|
|
7
|
+
updated: "2026-06-18"
|
|
8
8
|
source: core/forward-derivation-standards.md
|
|
9
9
|
description: Standards for deriving BDD, TDD, IT, E2E, ATDD, and Contract tests from approved SDD specifications
|
|
10
10
|
|
|
@@ -134,6 +134,21 @@ anti_hallucination:
|
|
|
134
134
|
- Inventing test cases beyond AC scope
|
|
135
135
|
- Fabricating edge cases not specified
|
|
136
136
|
|
|
137
|
+
# Failure handling (failure -> rollback -> retry/escalate -> re-verify)
|
|
138
|
+
failure_handling:
|
|
139
|
+
description: What happens when a derivation gate fails; recovery always ends by re-verifying the failed gate
|
|
140
|
+
matrix:
|
|
141
|
+
- failure: AC parse error (unsupported format)
|
|
142
|
+
action: Abort that AC, report file:line + expected GWT/bullet format, emit no skeleton, re-queue after SPEC fix
|
|
143
|
+
- failure: AC count mismatch (tests != ACs)
|
|
144
|
+
action: "[anti-hallucination] hard rollback + regenerate strict 1:1; never add/delete tests to match the count"
|
|
145
|
+
- failure: Skeleton does not parse/compile
|
|
146
|
+
action: Roll back the file and regenerate with the correct template; on a 2nd failure mark the AC [BLOCKED] and escalate
|
|
147
|
+
- failure: Human review rejection
|
|
148
|
+
action: Record the reason and regenerate only the rejected items with that feedback; never auto-approve
|
|
149
|
+
- failure: Missing @SPEC/@AC attribution
|
|
150
|
+
action: Block the transition into TDD RED and re-emit with attribution
|
|
151
|
+
|
|
137
152
|
# Commands
|
|
138
153
|
commands:
|
|
139
154
|
- command: "/derive-bdd"
|
|
@@ -167,6 +182,15 @@ commands:
|
|
|
167
182
|
|
|
168
183
|
# Rules for AI
|
|
169
184
|
rules:
|
|
185
|
+
- id: fd-fail-gate-halts
|
|
186
|
+
instruction: A gate failure must halt progression; never enter TDD RED with an unresolved failure
|
|
187
|
+
priority: required
|
|
188
|
+
- id: fd-fail-count-hard-rollback
|
|
189
|
+
instruction: A test/AC count mismatch is a hard rollback, not a reconciliation; never add or delete tests to match the count
|
|
190
|
+
priority: required
|
|
191
|
+
- id: fd-fail-bounded-retry-escalate
|
|
192
|
+
instruction: Bound automated retries (max 2 for transient/template errors); on exhaustion mark the AC [BLOCKED] and escalate to a human
|
|
193
|
+
priority: required
|
|
170
194
|
- id: approved-spec-only
|
|
171
195
|
instruction: Only derive from approved specifications
|
|
172
196
|
priority: required
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
# Frontend Design Standards - AI Optimized
|
|
2
2
|
# Source: core/frontend-design-standards.md
|
|
3
3
|
# Based on: DEC-029 (awesome-design-md, MIT), DEC-030 (OpenAI Frontend Guide)
|
|
4
|
-
# Version: 1.
|
|
4
|
+
# Version: 1.1.0
|
|
5
5
|
|
|
6
6
|
id: frontend-design-standards
|
|
7
7
|
meta:
|
|
8
|
-
version: "1.
|
|
9
|
-
updated: "2026-
|
|
8
|
+
version: "1.1.0"
|
|
9
|
+
updated: "2026-07-10"
|
|
10
10
|
source: core/frontend-design-standards.md
|
|
11
11
|
description: |
|
|
12
12
|
DESIGN.md 前端設計標準:9 段結構、語義色彩 token、字體角色、
|
|
13
13
|
間距比例、UI 硬性約束與 anti-pattern 清單。
|
|
14
14
|
適用所有含前端介面的專案。
|
|
15
|
+
v1.1.0 新增選填擴充:YAML frontmatter token 註冊表 +
|
|
16
|
+
{category.token} 內插語法 + components 結構化綁定
|
|
17
|
+
(借鑑 DEC-029 上游演化,Trial,不影響既有 5-token 治理收斂)。
|
|
15
18
|
|
|
16
19
|
# DESIGN.md 必填 9 段結構
|
|
17
20
|
design_md_sections:
|
|
@@ -78,6 +81,24 @@ design_md_sections:
|
|
|
78
81
|
description: "AI Agent 快速讀取的設計意圖摘要"
|
|
79
82
|
required_fields: [style_summary, key_constraints, tone]
|
|
80
83
|
|
|
84
|
+
# 選填擴充:token 內插語法 + 結構化 components 綁定(v1.1.0,Trial)
|
|
85
|
+
# 不影響上方 5-token/4-role/7-step 治理收斂;是既有 token 的機器可解析層,非新增 token 的許可證。
|
|
86
|
+
optional_extensions:
|
|
87
|
+
token_interpolation:
|
|
88
|
+
status: optional_trial
|
|
89
|
+
description: "DESIGN.md 可選填 YAML frontmatter 宣告 colors/typography/rounded/spacing token 字典,正文用 {category.token} 語法引用"
|
|
90
|
+
frontmatter_keys: [colors, typography, rounded, spacing]
|
|
91
|
+
syntax: "{category.token}"
|
|
92
|
+
rule: "frontmatter 的 colors 必須對應 5 個必要語義 token;引用不存在的 category.token 視為驗證錯誤,非靜默 fallback"
|
|
93
|
+
structured_components:
|
|
94
|
+
status: optional_trial
|
|
95
|
+
description: "Section 4(Component Styling)可選填 components: 區塊,把元件綁定到 {category.token} 引用"
|
|
96
|
+
rule: "components: 區塊內每個值都必須是 {category.token} 引用,禁止直接寫 hex/px 原始值"
|
|
97
|
+
not_adopted:
|
|
98
|
+
- "不隨附 lint CLI(上游有獨立 @google/design.md npm 套件,本標準不綁定特定驗證工具)"
|
|
99
|
+
- "不做框架專屬匯出格式(React/Vue/CSS-in-JS 產生器)"
|
|
100
|
+
- "不擴增 5/4/7 token 數量(內插語法讓既有 token 可引用,不是加 token 的理由)"
|
|
101
|
+
|
|
81
102
|
# 語義色彩 5 個必要 token
|
|
82
103
|
semantic_color_tokens:
|
|
83
104
|
required:
|
|
@@ -265,6 +286,15 @@ rules:
|
|
|
265
286
|
禁止將首頁設計成 Dashboard Grid。
|
|
266
287
|
priority: required
|
|
267
288
|
|
|
289
|
+
- id: respect-token-interpolation-if-present
|
|
290
|
+
trigger: "當 DESIGN.md 含 YAML frontmatter token 註冊表時(v1.1.0 選填擴充)"
|
|
291
|
+
instruction: |
|
|
292
|
+
解析 {category.token} 引用時一律對照 frontmatter 實際值,
|
|
293
|
+
不得憑記憶或猜測填入色值/尺寸。
|
|
294
|
+
引用不存在的 category.token 視為錯誤,向使用者回報而非靜默略過。
|
|
295
|
+
若 DESIGN.md 沒有 frontmatter,此規則不適用(擴充為選填,非強制)。
|
|
296
|
+
priority: recommended
|
|
297
|
+
|
|
268
298
|
# 快速參考表
|
|
269
299
|
quick_reference:
|
|
270
300
|
semantic_tokens:
|
|
@@ -8,8 +8,8 @@ standard:
|
|
|
8
8
|
description: Behavior-completeness full coverage paradigm replacing pyramid thresholds. Enforces anti-fake-test rules, STUB marker protocol, ratchet CI, and @ac traceability.
|
|
9
9
|
|
|
10
10
|
meta:
|
|
11
|
-
version: "1.
|
|
12
|
-
updated: "2026-
|
|
11
|
+
version: "1.1.0"
|
|
12
|
+
updated: "2026-06-17"
|
|
13
13
|
source: core/full-coverage-testing.md
|
|
14
14
|
replaces: "testing pyramid thresholds (UT≥80%/IT≥70%/E2E happy-path-only)"
|
|
15
15
|
xspec: "XSPEC-178"
|
|
@@ -191,6 +191,38 @@ standard:
|
|
|
191
191
|
- "Anti-fake rules: no tautology, no business-logic mocks"
|
|
192
192
|
- "STUB protocol: deployment gates on all environments"
|
|
193
193
|
|
|
194
|
+
# XSPEC-288: Migration Error-Path Completeness (axis 9 of XSPEC-284 completeness matrix)
|
|
195
|
+
# The three-path model requires an error path PER FUNCTION; this adds the migration
|
|
196
|
+
# guarantee that legacy error/degradation/fallback branches are SYSTEMATICALLY carried
|
|
197
|
+
# over, not merely sampled. Systematic-enumeration + gap-analysis layer above the
|
|
198
|
+
# XSPEC-201 error-path snapshot.
|
|
199
|
+
migration_error_path_completeness:
|
|
200
|
+
axis: "9 (error paths) of XSPEC-284 migration completeness matrix"
|
|
201
|
+
why_gap: "Per-function error path + XSPEC-201 snapshot verify only enumerated error cases. A rewrite drops scattered error branches in bulk; a passing sample does not prove no branch was missed."
|
|
202
|
+
derive: # R1 mechanized legacy exception/error-code list
|
|
203
|
+
sources:
|
|
204
|
+
catch_blocks: "grep catch/except/rescue -> every caught exception type + handler"
|
|
205
|
+
exception_hierarchy: "custom exception/error class taxonomy"
|
|
206
|
+
error_codes: "HTTP status, app error codes, error enums"
|
|
207
|
+
error_shapes: "error serializers/DTOs -> on-the-wire error contract"
|
|
208
|
+
note: "Captured list is the error-path to-verify checklist, sourced from artifacts not recall."
|
|
209
|
+
gap_analysis: # R2 systematic missing-branch oracle
|
|
210
|
+
rule: "for EACH legacy error branch verify a corresponding new-system handler; no mapping -> not_implemented (XSPEC-199) -> BLOCK"
|
|
211
|
+
output: "missing-error-branch gap report over the full derived list, not a passing sample"
|
|
212
|
+
degradation_parity: # R3
|
|
213
|
+
checklist: [external_failure_fallback, retry_policy, partial_result_handling, circuit_breaker_timeout]
|
|
214
|
+
goal: "not consistent on happy path but wildly different on failure"
|
|
215
|
+
error_response_differential: # R4
|
|
216
|
+
extends: "behavior-snapshot parity + XSPEC-284 R5 replay, applied to the ERROR response"
|
|
217
|
+
compare: [error_code, message_structure, http_status]
|
|
218
|
+
importance_ranking: "rank by production-actual trigger frequency (#134 production is the oracle); fired-in-prod branches mapped first; a high-frequency prod error branch with no mapping is a hard block"
|
|
219
|
+
gate_timing: [pre-UAT, "cutover before/after"]
|
|
220
|
+
completeness_declaration:
|
|
221
|
+
derive: "Step1 mechanized exception/error-code list"
|
|
222
|
+
oracle: "Step2 systematic gap analysis + Step4 error-response differential"
|
|
223
|
+
gate_timing: "pre-UAT + cutover before/after"
|
|
224
|
+
reuse: "XSPEC-201 error-path snapshot + three-path model; adds only systematic missing-branch analysis + error-response differential"
|
|
225
|
+
|
|
194
226
|
physical_spec:
|
|
195
227
|
type: custom_script
|
|
196
228
|
validator:
|
|
@@ -8,8 +8,8 @@ standard:
|
|
|
8
8
|
description: Git Worktree 隔離開發標準
|
|
9
9
|
|
|
10
10
|
meta:
|
|
11
|
-
version: "1.
|
|
12
|
-
updated: "2026-
|
|
11
|
+
version: "1.1.0"
|
|
12
|
+
updated: "2026-06-18"
|
|
13
13
|
source: core/git-worktree.md
|
|
14
14
|
description: Git Worktree 隔離開發與生命週期管理標準
|
|
15
15
|
inspired_by: superpowers/using-git-worktrees
|
|
@@ -54,7 +54,7 @@ standard:
|
|
|
54
54
|
priority: critical
|
|
55
55
|
- id: GW-002
|
|
56
56
|
trigger: "基準測試失敗"
|
|
57
|
-
action: "
|
|
57
|
+
action: "先重試至多 2 次(指數退避)以排除暫時性失敗;若持續失敗則中止任務並報告環境問題"
|
|
58
58
|
priority: high
|
|
59
59
|
- id: GW-003
|
|
60
60
|
trigger: "異常退出"
|
|
@@ -3,10 +3,26 @@
|
|
|
3
3
|
|
|
4
4
|
id: logging
|
|
5
5
|
meta:
|
|
6
|
-
version: "1.
|
|
7
|
-
updated: "2026-
|
|
6
|
+
version: "1.4.0"
|
|
7
|
+
updated: "2026-06-17"
|
|
8
8
|
source: core/logging-standards.md
|
|
9
|
-
description: Logging levels, structured logging, file rotation policy, and best practices
|
|
9
|
+
description: Logging levels, structured logging, mandatory events catalog, file rotation policy, and best practices
|
|
10
|
+
|
|
11
|
+
# XSPEC-070 Phase 2 — skill↔standard content-coverage audit.
|
|
12
|
+
# Consumed by scripts/check-skill-content-coverage.ts: the anchor skill
|
|
13
|
+
# (logging-guide) MUST mention each mandatory event id below, or CONTENT-002 fires.
|
|
14
|
+
# Source of truth: core/logging-standards.md "Mandatory Events" catalog (9 canonical events).
|
|
15
|
+
audit:
|
|
16
|
+
mandatory_keywords:
|
|
17
|
+
- application_startup
|
|
18
|
+
- request_received
|
|
19
|
+
- validation_failure
|
|
20
|
+
- authentication_failure
|
|
21
|
+
- outbound_call_start
|
|
22
|
+
- outbound_call_complete
|
|
23
|
+
- business_event
|
|
24
|
+
- heartbeat
|
|
25
|
+
- shutdown
|
|
10
26
|
|
|
11
27
|
log_levels:
|
|
12
28
|
ordered:
|
|
@@ -51,6 +67,69 @@ structured_logging:
|
|
|
51
67
|
field_naming: snake_case
|
|
52
68
|
format: JSON in production
|
|
53
69
|
|
|
70
|
+
# When you MUST write a log entry (XSPEC-234 / closes #108).
|
|
71
|
+
# Compliant formatting but silent-at-the-critical-moment logging is excluded.
|
|
72
|
+
mandatory_events:
|
|
73
|
+
- id: application_startup
|
|
74
|
+
when: After process boot, before accepting requests
|
|
75
|
+
level: INFO
|
|
76
|
+
must_log: [app_name, version, git_sha, environment, hostname, pid, listening_endpoints]
|
|
77
|
+
must_not_log: [secrets, full_connection_strings]
|
|
78
|
+
rationale: Lifecycle blind spot; confirms which build/config is actually live
|
|
79
|
+
- id: request_received
|
|
80
|
+
when: First time HTTP middleware sees a request
|
|
81
|
+
level: INFO/DEBUG
|
|
82
|
+
must_log: [method, path, source_ip, request_id]
|
|
83
|
+
must_not_log: [request_body, auth_headers]
|
|
84
|
+
rationale: Establishes request_id correlation from the edge inward
|
|
85
|
+
- id: validation_failure
|
|
86
|
+
when: schema / ModelState / DTO validation rejects
|
|
87
|
+
level: WARN
|
|
88
|
+
must_log: [request_id, path, missing_fields, payload_shape]
|
|
89
|
+
must_not_log: [field_values, pii]
|
|
90
|
+
rationale: Framework rejects before handler; payload otherwise never logged (incident #2)
|
|
91
|
+
- id: authentication_failure
|
|
92
|
+
when: login / token verification fails
|
|
93
|
+
level: WARN
|
|
94
|
+
must_log: [uid_attempted, source_ip, failure_reason]
|
|
95
|
+
must_not_log: [password, token_value]
|
|
96
|
+
rationale: 'Account or password error alone is un-investigable without uid/IP (incident #3)'
|
|
97
|
+
- id: outbound_call_start
|
|
98
|
+
when: An outbound HTTP/RPC call is initiated
|
|
99
|
+
level: INFO
|
|
100
|
+
must_log: [target_url_host_path, request_id_propagated, timeout_ms]
|
|
101
|
+
must_not_log: [credentials, bearer_tokens]
|
|
102
|
+
rationale: A send-failed error must leave a trace that the call was even attempted
|
|
103
|
+
- id: outbound_call_complete
|
|
104
|
+
when: An external call returns or fails
|
|
105
|
+
level: INFO/WARN/ERROR
|
|
106
|
+
must_log: [status_code_or_failure_phase, elapsed_ms, retries]
|
|
107
|
+
must_not_log: [response_body_with_pii]
|
|
108
|
+
rationale: Distinguish dns/tcp/tls/http failure phase for diagnosis
|
|
109
|
+
- id: business_event
|
|
110
|
+
when: A state-changing business operation completes
|
|
111
|
+
level: INFO
|
|
112
|
+
must_log: [operation_name, actor, target_ids, outcome]
|
|
113
|
+
must_not_log: [full_record_payload, pii]
|
|
114
|
+
rationale: Audit trail of what changed and by whom
|
|
115
|
+
- id: heartbeat
|
|
116
|
+
when: Long-running background service, at least once per 60 seconds
|
|
117
|
+
level: INFO
|
|
118
|
+
must_log: [service_name, queue_depth, items_processed_since_last_heartbeat]
|
|
119
|
+
must_not_log: []
|
|
120
|
+
rationale: Detect silent/0-byte background worker; enables silence detection (incident #4)
|
|
121
|
+
- id: shutdown
|
|
122
|
+
when: Process exits (graceful or fatal)
|
|
123
|
+
level: INFO/ERROR
|
|
124
|
+
must_log: [app_name, signal_or_reason, uptime_seconds, pending_work_count]
|
|
125
|
+
must_not_log: []
|
|
126
|
+
rationale: Lifecycle blind spot; reveals crash vs graceful and lost in-flight work
|
|
127
|
+
|
|
128
|
+
mandatory_events_follow_on_rules:
|
|
129
|
+
access_log_separation: Health-probe/liveness traffic MUST NOT pollute business-event log (separate sink)
|
|
130
|
+
silence_detection_sla: Alert after N minutes with no events, N <= 2x heartbeat interval
|
|
131
|
+
request_id_discoverability: Error responses to client SHOULD carry request_id for support correlation
|
|
132
|
+
|
|
54
133
|
sensitive_data:
|
|
55
134
|
never_log:
|
|
56
135
|
- passwords
|
|
@@ -80,6 +159,19 @@ rules:
|
|
|
80
159
|
instruction: Use structured JSON logging with required fields
|
|
81
160
|
priority: required
|
|
82
161
|
|
|
162
|
+
- id: mandatory-events
|
|
163
|
+
trigger: implementing startup/shutdown, request handling, validation, auth, outbound calls, background services
|
|
164
|
+
instruction: |
|
|
165
|
+
Emit the mandatory events catalog entries (see mandatory_events):
|
|
166
|
+
application_startup, request_received, validation_failure,
|
|
167
|
+
authentication_failure, outbound_call_start, outbound_call_complete,
|
|
168
|
+
business_event, heartbeat, shutdown. A log that follows every formatting
|
|
169
|
+
rule but never fires at the critical moment is excluded. Validation rejects
|
|
170
|
+
MUST log payload_shape (keys only, not values); auth failures MUST log
|
|
171
|
+
uid+source_ip (never password/token); background services MUST heartbeat
|
|
172
|
+
so silence is detectable.
|
|
173
|
+
priority: required
|
|
174
|
+
|
|
83
175
|
- id: include-context
|
|
84
176
|
trigger: logging operations
|
|
85
177
|
instruction: Include request_id or trace_id for correlation
|
|
@@ -185,9 +277,11 @@ quick_reference:
|
|
|
185
277
|
|
|
186
278
|
enforcement:
|
|
187
279
|
hook_type: PostToolUse
|
|
280
|
+
trigger: PostToolUse
|
|
188
281
|
matcher:
|
|
189
282
|
tool: Write
|
|
190
283
|
path: "src/**/*.ts"
|
|
191
284
|
script_ref: "scripts/hooks/check-logging-standard.js"
|
|
285
|
+
hook_script: "scripts/hooks/check-logging-standard.js"
|
|
192
286
|
severity: warning
|
|
193
287
|
timeout_ms: 500
|
|
@@ -3,14 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
id: mock-boundary
|
|
5
5
|
meta:
|
|
6
|
-
version: "1.
|
|
7
|
-
updated: "2026-
|
|
6
|
+
version: "1.2.0"
|
|
7
|
+
updated: "2026-07-01"
|
|
8
8
|
source: core/mock-boundary.md
|
|
9
9
|
description: >
|
|
10
10
|
Rules defining what can and cannot be mocked to prevent hollow tests —
|
|
11
11
|
tests that pass while the real system is broken.
|
|
12
12
|
v1.1.0: Added Level 1/Level 2 mock layer distinction and external
|
|
13
13
|
dependency testability matrix template (XSPEC-204).
|
|
14
|
+
v1.2.0: Added injectable background execution as a seam (parallel to clock
|
|
15
|
+
injection) — allowed background-runner seam, no-poll/sleep rule, and the
|
|
16
|
+
poll/sleep-for-background-result anti-pattern (issue #143).
|
|
14
17
|
|
|
15
18
|
# ─────────────────────────────────────────────────────────
|
|
16
19
|
# Mock Levels (v1.1.0)
|
|
@@ -150,6 +153,31 @@ allowed:
|
|
|
150
153
|
// 1. The DB layer has its own integration tests
|
|
151
154
|
// 2. The service test focuses on service logic (not DB behavior)
|
|
152
155
|
|
|
156
|
+
- category: In-Process Background Execution (via injectable runner)
|
|
157
|
+
description: >
|
|
158
|
+
Fire-and-forget dispatch — Task.Run, unawaited promises, setTimeout,
|
|
159
|
+
goroutines, thread-pool/executor submission, asyncio.create_task
|
|
160
|
+
reason: >
|
|
161
|
+
Background dispatch is a seam, exactly like the system clock. Inject a
|
|
162
|
+
runner so the test can drive the work to deterministic, awaited completion
|
|
163
|
+
and assert on success/exception/retry — instead of polling or sleeping.
|
|
164
|
+
implementation: >
|
|
165
|
+
Abstract dispatch behind a small interface (e.g. IBackgroundTaskRunner /
|
|
166
|
+
BackgroundDispatcher). Production keeps true fire-and-forget semantics;
|
|
167
|
+
the test double runs the work inline and tracks the Task/promise, exposing
|
|
168
|
+
a handle the test can await before asserting.
|
|
169
|
+
example: |
|
|
170
|
+
// Production: real fire-and-forget — returns immediately, work runs detached
|
|
171
|
+
class FireAndForgetDispatcher implements BackgroundDispatcher {
|
|
172
|
+
dispatch(work: () => Promise<void>): void { void work() }
|
|
173
|
+
}
|
|
174
|
+
// Test: inline + tracked so the test can await deterministic completion
|
|
175
|
+
class DeterministicDispatcher implements BackgroundDispatcher {
|
|
176
|
+
private tasks: Promise<void>[] = []
|
|
177
|
+
dispatch(work: () => Promise<void>): void { this.tasks.push(work()) }
|
|
178
|
+
async settle(): Promise<void> { await Promise.all(this.tasks) }
|
|
179
|
+
}
|
|
180
|
+
|
|
153
181
|
# ─────────────────────────────────────────────────────────
|
|
154
182
|
# Forbidden Mocks
|
|
155
183
|
# ─────────────────────────────────────────────────────────
|
|
@@ -253,6 +281,15 @@ anti_patterns:
|
|
|
253
281
|
description: DB mock returns hardcoded data, hiding query logic errors
|
|
254
282
|
problem: Schema migrations, wrong predicates, missing joins — all invisible
|
|
255
283
|
|
|
284
|
+
- name: Poll/Sleep for Background Result
|
|
285
|
+
description: >
|
|
286
|
+
Sleeping or polling to wait for in-process fire-and-forget work
|
|
287
|
+
(Task.Run, unawaited promise, setTimeout, goroutine) to finish
|
|
288
|
+
problem: >
|
|
289
|
+
The race is still there — the timeout only hides it most of the time while
|
|
290
|
+
slowing the whole suite; on a shared runner it leaks flakiness into other
|
|
291
|
+
MRs' CI. Same class of anti-pattern as depending on wall-clock time.
|
|
292
|
+
|
|
256
293
|
# ─────────────────────────────────────────────────────────
|
|
257
294
|
# Rules
|
|
258
295
|
# ─────────────────────────────────────────────────────────
|
|
@@ -297,6 +334,15 @@ rules:
|
|
|
297
334
|
If any hollow test indicator triggers, rewrite the mocking strategy.
|
|
298
335
|
priority: required
|
|
299
336
|
|
|
337
|
+
- id: no-poll-sleep-for-background-work
|
|
338
|
+
trigger: test asserts a fire-and-forget side effect (Task.Run, unawaited promise, setTimeout, goroutine, executor)
|
|
339
|
+
instruction: >
|
|
340
|
+
Never poll or sleep to wait for in-process background work. Inject a
|
|
341
|
+
deterministic runner (e.g. IBackgroundTaskRunner / BackgroundDispatcher)
|
|
342
|
+
whose test double runs the work inline and tracks the Task/promise; await
|
|
343
|
+
the tracked task, then assert on success, exception, or retry.
|
|
344
|
+
priority: required
|
|
345
|
+
|
|
300
346
|
- id: level-2-stub-server-rules
|
|
301
347
|
trigger: UAT environment lacks a real external service (SMS, payment, IdP)
|
|
302
348
|
instruction: >
|