universal-dev-standards 5.16.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/spec-driven-development.md +21 -3
- 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 +81 -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 +55 -5
- 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 +81 -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 +39 -13
- 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 +27 -0
- 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
|
@@ -160,6 +160,74 @@ CI reports AC coverage rate. If more than 20% of ACs lack `@ac`-tagged tests, a
|
|
|
160
160
|
|
|
161
161
|
---
|
|
162
162
|
|
|
163
|
+
## Migration Error-Path Completeness (XSPEC-288)
|
|
164
|
+
|
|
165
|
+
> Part of the [XSPEC-284](https://github.com/AsiaOstrich/universal-dev-standards) 9-axis migration completeness matrix (**axis ⑨ — error paths**). The three-path model above requires an error path **per function**; this section adds the **migration-specific** guarantee that legacy's error/degradation/fallback branches are **systematically** carried over — not merely sampled.
|
|
166
|
+
|
|
167
|
+
### Why the three-path model alone is not enough for a migration
|
|
168
|
+
|
|
169
|
+
The per-function error-path requirement and XSPEC-201's error-path snapshot only verify the error cases **you thought to enumerate**. In a rewrite the happy path is migrated because it has an explicit requirement, while error branches — scattered across `try/catch` layers, custom exception hierarchies, specific error codes, and degradation fallbacks — are **silently dropped in bulk**. A passing error-path sample does not prove **no branch was missed** (same blind-spot class as #134, occurring on the error-path layer). This section is the **systematic-enumeration + gap-analysis** layer above the snapshot mechanism.
|
|
170
|
+
|
|
171
|
+
### Step 1 — Mechanized legacy exception / error-code list (derive, R1)
|
|
172
|
+
|
|
173
|
+
Enumerate the legacy error surface **mechanically**, not from memory:
|
|
174
|
+
|
|
175
|
+
| Source | Yields |
|
|
176
|
+
|--------|--------|
|
|
177
|
+
| `catch` / `except` / `rescue` blocks (grep) | every caught exception type + handler |
|
|
178
|
+
| Custom exception / error class hierarchy | the declared error taxonomy |
|
|
179
|
+
| Error/status codes (HTTP status, app error codes, error enums) | the response-code surface |
|
|
180
|
+
| Error response shapes (serializers, error DTOs) | the on-the-wire error contract |
|
|
181
|
+
|
|
182
|
+
The captured list is the **error-path to-verify checklist** — sourced from artifacts, not human recall.
|
|
183
|
+
|
|
184
|
+
### Step 2 — Systematic missing-branch gap analysis (oracle, R2)
|
|
185
|
+
|
|
186
|
+
For **each** legacy error branch from Step 1, verify the new system has a corresponding handler. A branch with no mapping is marked `not_implemented` (XSPEC-199) and **blocks**. The output is a **"missing error branch" gap report** over the full derived list — not a sample that happened to pass.
|
|
187
|
+
|
|
188
|
+
```markdown
|
|
189
|
+
## Error-Path Gap Report — <module>
|
|
190
|
+
|
|
191
|
+
| Legacy branch (error type / code) | New-system handler | Status |
|
|
192
|
+
|-----------------------------------|--------------------|--------|
|
|
193
|
+
| PaymentDeclinedException → 402 | PaymentService.handleDecline | MAPPED |
|
|
194
|
+
| GatewayTimeout → retry+fallback | (none found) | not_implemented — BLOCK |
|
|
195
|
+
| ValidationError → 422 + field list | InputValidator | MAPPED |
|
|
196
|
+
|
|
197
|
+
**Branches: N total · M mapped · K not_implemented (block if K>0)**
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Step 3 — Degradation / fallback parity (R3)
|
|
201
|
+
|
|
202
|
+
Legacy degradation modes (fallback on external-service failure, retry, partial results) are easy to drop because they only run when something fails. Verify the new system preserves the corresponding degradation behavior, so the system is not "consistent on the happy path, wildly different on failure":
|
|
203
|
+
|
|
204
|
+
- [ ] External-service-failure **fallback** behavior matches legacy
|
|
205
|
+
- [ ] **Retry** policy (count, backoff, give-up) matches legacy
|
|
206
|
+
- [ ] **Partial-result** handling matches legacy (returns what it can vs all-or-nothing)
|
|
207
|
+
- [ ] **Circuit-breaker / timeout** degradation matches legacy
|
|
208
|
+
|
|
209
|
+
### Step 4 — Error-response differential (oracle, R4)
|
|
210
|
+
|
|
211
|
+
Extend [behavior-snapshot](behavior-snapshot.md) parity and XSPEC-284 R5 replay to cover the **error response**, not just the happy-path response. Compare new vs legacy on:
|
|
212
|
+
|
|
213
|
+
- **Error code** (HTTP status, app error code)
|
|
214
|
+
- **Message structure** (error DTO shape, field-level errors)
|
|
215
|
+
- **HTTP status** mapping per error class
|
|
216
|
+
|
|
217
|
+
This makes implicit error-path divergence self-report at cutover, the same way the happy-path snapshot does.
|
|
218
|
+
|
|
219
|
+
**Gate timing**: pre-UAT (gap analysis + degradation parity) + cutover before/after (error-response differential).
|
|
220
|
+
|
|
221
|
+
### Importance ranking (scope guidance)
|
|
222
|
+
|
|
223
|
+
Not every legacy error branch must map at equal priority. Rank by **production-actual trigger frequency** (echoes #134 "production is the oracle"): branches that have actually fired in production logs are mapped first; never-fired latent branches are lower priority but still listed. A high-frequency production error branch with no new-system mapping is a hard block.
|
|
224
|
+
|
|
225
|
+
### Completeness declaration (matrix alignment)
|
|
226
|
+
|
|
227
|
+
Axis ⑨ is satisfied when this section declares all three: **derive** (Step 1 mechanized exception/error-code list), **oracle** (Step 2 systematic gap analysis + Step 4 error-response differential), and **gate timing** (pre-UAT + cutover before/after). Reuse XSPEC-201 error-path snapshot + the three-path model above — this section adds only systematic missing-branch analysis and the error-response differential, it does not rebuild a test framework.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
163
231
|
## Migration from Pyramid Model
|
|
164
232
|
|
|
165
233
|
If your project previously used pyramid thresholds:
|
|
@@ -180,7 +248,11 @@ The ratchet starts at your current coverage. From that point on, it can only inc
|
|
|
180
248
|
- `unit-testing.ai.yaml` — Unit test scope and organization
|
|
181
249
|
- `integration-testing.ai.yaml` — Integration test patterns
|
|
182
250
|
- `deployment-standards.ai.yaml` — Deploy gate requirements
|
|
251
|
+
- `flaky-test-management.md` — Intermittent-failure handling: a test that flakes is **not** a passing test. Before a coverage figure counts toward a gate, intermittent failures MUST be quarantined / retry-budgeted / root-caused per that standard — otherwise "full coverage" hides non-deterministic gaps.
|
|
252
|
+
- `behavior-snapshot.md` — Error-response differential oracle (Migration Error-Path Completeness, axis ⑨)
|
|
253
|
+
- `migration-assistant` skill — Legacy exception/error-code derive + degradation parity (XSPEC-288)
|
|
183
254
|
- XSPEC-178 — Full specification and implementation phases
|
|
255
|
+
- XSPEC-288 — Migration Error-Path Completeness (axis ⑨ of XSPEC-284 matrix)
|
|
184
256
|
|
|
185
257
|
|
|
186
258
|
**Scope**: universal
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
> **Language**: English | [繁體中文](../locales/zh-TW/core/git-worktree.md)
|
|
4
4
|
|
|
5
|
-
**Version**: 1.
|
|
6
|
-
**Last Updated**: 2026-
|
|
5
|
+
**Version**: 1.1.0
|
|
6
|
+
**Last Updated**: 2026-06-18
|
|
7
7
|
**Applicability**: All projects using Git for version control
|
|
8
8
|
**Scope**: universal
|
|
9
9
|
**Inspired by**: [Superpowers](https://github.com/obra/superpowers) — using-git-worktrees (MIT)
|
|
@@ -59,7 +59,7 @@ pnpm install # or npm install, pip install, etc.
|
|
|
59
59
|
|
|
60
60
|
1. **Run the test suite** in the fresh worktree
|
|
61
61
|
2. **Confirm all tests pass** — this verifies the environment is clean
|
|
62
|
-
3. **If tests fail** — abort and report the environment issue (do not proceed)
|
|
62
|
+
3. **If tests fail** — retry up to 2× with backoff to rule out transient flakes/timeouts; if they still fail, abort and report the environment issue (do not proceed)
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
65
|
# Baseline verification
|
|
@@ -108,7 +108,7 @@ git worktree prune
|
|
|
108
108
|
| ID | Trigger | Action | Priority |
|
|
109
109
|
|----|---------|--------|----------|
|
|
110
110
|
| GW-001 | Worktree directory not in `.gitignore` | Automatically add to `.gitignore` | Critical |
|
|
111
|
-
| GW-002 | Baseline tests fail |
|
|
111
|
+
| GW-002 | Baseline tests fail | Retry up to 2× (exponential backoff) for transient failures; if persistent, abort task and report environment issue | High |
|
|
112
112
|
| GW-003 | Abnormal exit during worktree operation | Ensure cleanup is executed | High |
|
|
113
113
|
| GW-004 | Worktree exists after branch merge/delete | Prune stale worktree references | Medium |
|
|
114
114
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Performance Guide
|
|
2
2
|
|
|
3
|
-
> **Language**: English | [繁體中文](../../locales/zh-TW/core/guides/performance-guide.md)
|
|
3
|
+
> **Language**: English | [繁體中文](../../locales/zh-TW/core/guides/performance-guide.md) | [简体中文](../../locales/zh-CN/core/guides/performance-guide.md)
|
|
4
4
|
|
|
5
5
|
**Version**: 1.0.0
|
|
6
6
|
**Last Updated**: 2026-01-29
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Security Guide
|
|
2
2
|
|
|
3
|
-
> **Language**: English | [繁體中文](../../locales/zh-TW/core/guides/security-guide.md)
|
|
3
|
+
> **Language**: English | [繁體中文](../../locales/zh-TW/core/guides/security-guide.md) | [简体中文](../../locales/zh-CN/core/guides/security-guide.md)
|
|
4
4
|
|
|
5
5
|
**Version**: 1.0.0
|
|
6
6
|
**Last Updated**: 2026-01-29
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
- **Readiness 僅檢關鍵依賴**:非關鍵依賴不納入,避免邊緣故障造成服務被下線
|
|
13
13
|
- **慢啟動用 startup probe**:啟動完成後交棒給 liveness
|
|
14
14
|
- **結構化 JSON 回應**:含 `status` / `dependencies` / `timestamp` / `version`
|
|
15
|
-
- **作為 observability signal**:連續 fail
|
|
15
|
+
- **作為 observability signal**:連續 fail(達 probe threshold)依 [alerting-standards](alerting-standards.md) 觸發告警——由 alerting 定義觸發時機、嚴重性對映與路由(`HC-001 HEALTH_CHECK_FAILED` 為 alert 來源之一),health-check 只負責 emit signal、不自行決定通知對象
|
|
16
16
|
|
|
17
17
|
## Probe Types
|
|
18
18
|
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
- AI-optimized: [ai/standards/health-check-standards.ai.yaml](../ai/standards/health-check-standards.ai.yaml)
|
|
69
69
|
- XSPEC-067: DEC-043 Wave 1 Reliability Pack 跨專案規格
|
|
70
70
|
- DEC-043: UDS 覆蓋完整性路線圖(驅動來源)
|
|
71
|
-
- Related: `deployment-standards`, `circuit-breaker`, observability-standards (XSPEC-063 規劃中)
|
|
71
|
+
- Related: `deployment-standards`, `circuit-breaker`, `alerting-standards`(probe 連續失敗 → 告警觸發與路由), observability-standards (XSPEC-063 規劃中)
|
|
72
72
|
- Industry: Kubernetes probes, Microsoft eShop health checks, Google SRE Book Ch.6
|
|
73
73
|
|
|
74
74
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Infrastructure as Code Design Principles
|
|
2
|
+
|
|
3
|
+
> **Version**: 1.0.0 | **Status**: Active | **Updated**: 2026-06-17
|
|
4
|
+
> **AI-optimized version**: `ai/standards/iac-design-principles.ai.yaml`
|
|
5
|
+
> **Spec**: XSPEC-065 (cross-project/specs/XSPEC-065-uds-infrastructure-pack.md)
|
|
6
|
+
|
|
7
|
+
**Scope**: universal
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
This standard defines the four foundational principles for Infrastructure as Code
|
|
12
|
+
(IaC) authoring: **reproducible, immutable, idempotent, and versioned**. It covers
|
|
13
|
+
state management requirements (remote state with locking), drift detection
|
|
14
|
+
categories, and CI/CD integration. It is designed to ensure infrastructure
|
|
15
|
+
changes are traceable, reversible, and safe to apply repeatedly without unintended
|
|
16
|
+
side effects.
|
|
17
|
+
|
|
18
|
+
It is part of the **IaC pack** (XSPEC-065) and is the tool-agnostic foundation
|
|
19
|
+
that `container-image-standards` and `secret-management-standards` build on
|
|
20
|
+
(images and secret backends are themselves versioned, reproducible
|
|
21
|
+
infrastructure).
|
|
22
|
+
|
|
23
|
+
> **Scope.** This standard defines the *authoring principles*, *state-management*
|
|
24
|
+
> rules, and the *drift-handling taxonomy*. The specific IaC tool (Terraform /
|
|
25
|
+
> Pulumi / CloudFormation) and backend are adoption choices, not part of this
|
|
26
|
+
> standard.
|
|
27
|
+
|
|
28
|
+
## Requirements
|
|
29
|
+
|
|
30
|
+
| ID | Rule | Level |
|
|
31
|
+
|----|------|-------|
|
|
32
|
+
| REQ-001 | IaC four principles (reproducible, immutable, idempotent, versioned) | MUST |
|
|
33
|
+
| REQ-002 | State management (remote backend, locking, encryption, no local state in VCS) | MUST |
|
|
34
|
+
| REQ-003 | Drift detection (plan on PR; three-category classification) | MUST |
|
|
35
|
+
|
|
36
|
+
### REQ-001 — IaC Four Principles
|
|
37
|
+
|
|
38
|
+
All infrastructure definitions MUST adhere to four foundational principles:
|
|
39
|
+
(1) **Reproducible** — given the same inputs and state, applying IaC produces
|
|
40
|
+
identical infrastructure; (2) **Immutable** — infrastructure changes are applied
|
|
41
|
+
by replacing resources, not mutating them in-place; blue/green or rolling
|
|
42
|
+
replacement patterns are preferred over in-place mutations; (3) **Idempotent** —
|
|
43
|
+
applying the same IaC configuration multiple times produces the same result
|
|
44
|
+
without error or unintended side effects; (4) **Versioned** — all IaC definitions
|
|
45
|
+
are stored in version control with meaningful commit messages; no infrastructure
|
|
46
|
+
change is made outside the VCS workflow.
|
|
47
|
+
|
|
48
|
+
### REQ-002 — State Management
|
|
49
|
+
|
|
50
|
+
IaC state MUST be stored in a remote backend with locking enabled to prevent
|
|
51
|
+
concurrent modifications. Local state files MUST NOT be committed to version
|
|
52
|
+
control or used in CI/CD pipelines. Recommended backends: Terraform Cloud /
|
|
53
|
+
S3+DynamoDB (Terraform), Pulumi Service / S3 (Pulumi), CloudFormation native
|
|
54
|
+
stack state. State access MUST be restricted to authorized principals via IAM or
|
|
55
|
+
equivalent. State encryption at rest is REQUIRED.
|
|
56
|
+
|
|
57
|
+
### REQ-003 — Drift Detection
|
|
58
|
+
|
|
59
|
+
Teams MUST run `plan` (or equivalent) in CI on every pull request to detect
|
|
60
|
+
configuration drift. Drift outcomes MUST be classified into one of three
|
|
61
|
+
categories and handled accordingly: (1) **rollback-to-code** — actual infra
|
|
62
|
+
deviates from code due to a manual change; revert actual to match code on next
|
|
63
|
+
apply; (2) **update-code-from-actual** — actual reflects an intentional change not
|
|
64
|
+
yet codified; update IaC to match, then apply; (3) **manual-reconcile** — drift
|
|
65
|
+
requires human judgment (e.g., data volume changes); escalate to the infra owner
|
|
66
|
+
with a documented decision. Drift reports SHOULD be published to a team channel on
|
|
67
|
+
a scheduled cadence (e.g., daily).
|
|
68
|
+
|
|
69
|
+
## Anti-Patterns
|
|
70
|
+
|
|
71
|
+
- Committing local state files (`terraform.tfstate`) to version control.
|
|
72
|
+
- Applying mutable in-place changes (e.g., sed-patching running VMs) instead of replacing resources.
|
|
73
|
+
- Making manual console changes without updating the corresponding IaC definition.
|
|
74
|
+
- Using no remote locking, allowing concurrent applies that corrupt state.
|
|
75
|
+
- Pinning to `latest` provider or module versions, breaking reproducibility.
|
|
76
|
+
|
|
77
|
+
## Integration with Existing Standards
|
|
78
|
+
|
|
79
|
+
- **`container-image-standards`** — container images are versioned, reproducible
|
|
80
|
+
artifacts produced under the same principles.
|
|
81
|
+
- **`secret-management-standards`** — secret backends (Vault/KMS) are managed as
|
|
82
|
+
access-controlled infrastructure with remote state.
|
|
83
|
+
- **`deployment-standards` / `cd-deployment-strategies`** — immutable replacement
|
|
84
|
+
(REQ-001) underpins blue/green and rolling deployment patterns.
|
|
85
|
+
- **`no-cicd-deployment`** — even without a CI/CD platform, the four principles and
|
|
86
|
+
state-management rules still apply to scripted infrastructure changes.
|
|
87
|
+
|
|
88
|
+
## Related Specs
|
|
89
|
+
|
|
90
|
+
- XSPEC-065 — UDS infrastructure (IaC) pack (this standard's source)
|
|
91
|
+
- DEC-043 — UDS coverage completeness roadmap (Wave 4 scope)
|
|
92
|
+
|
|
93
|
+
## Changelog
|
|
94
|
+
|
|
95
|
+
| Version | Date | Changes |
|
|
96
|
+
|---------|------|---------|
|
|
97
|
+
| v1.0.0 | 2026-06-17 | Initial — REQ-001~003: IaC four principles, state management, drift detection (XSPEC-065) |
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Incident Response Standards
|
|
2
|
+
|
|
3
|
+
> **Version**: 1.0.0 | **Status**: Active | **Updated**: 2026-06-17
|
|
4
|
+
> **AI-optimized version**: `ai/standards/incident-response.ai.yaml`
|
|
5
|
+
> **Spec**: XSPEC-063 (cross-project/specs/XSPEC-063-uds-sre-standards-pack.md)
|
|
6
|
+
|
|
7
|
+
**Scope**: universal
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
This standard defines the end-to-end **incident response lifecycle**: severity
|
|
12
|
+
classification, response-time SLAs, roles and responsibilities, communication
|
|
13
|
+
protocols, escalation paths, and blameless postmortem requirements. It is
|
|
14
|
+
designed to reduce MTTR, ensure consistent stakeholder communication during
|
|
15
|
+
incidents, and drive systemic reliability improvements through structured
|
|
16
|
+
postmortems.
|
|
17
|
+
|
|
18
|
+
It is part of the **SRE/operations pack** (XSPEC-063) and is the incident-handling
|
|
19
|
+
member alongside `slo-sli` (error-budget triggers) and `runbook` (executable
|
|
20
|
+
recovery steps). It composes with `virtual-organization-standards` — a SEV-1
|
|
21
|
+
incident spins up the incident virtual organization (IC, Communications Lead,
|
|
22
|
+
Operations Lead) — and feeds the proactive reliability ownership described in
|
|
23
|
+
XSPEC-251 (Operator).
|
|
24
|
+
|
|
25
|
+
> **Scope.** This standard defines *how incidents are classified, coordinated,
|
|
26
|
+
> communicated, and learned from*. The paging tool (PagerDuty, Opsgenie), the
|
|
27
|
+
> status-page product, and the ticketing system are adoption choices, not part of
|
|
28
|
+
> this standard.
|
|
29
|
+
|
|
30
|
+
## Requirements
|
|
31
|
+
|
|
32
|
+
| ID | Rule | Level |
|
|
33
|
+
|----|------|-------|
|
|
34
|
+
| REQ-001 | Severity classification (4-level SEV scale with response SLAs) | MUST |
|
|
35
|
+
| REQ-002 | Incident Commander role (assigned within 10 min for SEV-1/2) | MUST |
|
|
36
|
+
| REQ-003 | Stakeholder communication protocol (defined cadence + status page) | MUST |
|
|
37
|
+
| REQ-004 | Blameless postmortem requirements (5 Whys, action items tracked) | MUST |
|
|
38
|
+
| REQ-005 | On-call rotation and handoff (≥2 engineers, written handoff) | MUST |
|
|
39
|
+
| REQ-006 | Incident retrospective metrics (MTTD/MTTR reviewed monthly) | SHOULD |
|
|
40
|
+
|
|
41
|
+
### REQ-001 — Severity Classification
|
|
42
|
+
|
|
43
|
+
Every incident MUST be classified at declaration using a 4-level severity scale.
|
|
44
|
+
**SEV-1** (Critical): complete service outage or data breach affecting all users,
|
|
45
|
+
response within 15 minutes, C-suite notification. **SEV-2** (High): major feature
|
|
46
|
+
unavailable or significant performance degradation affecting >25% of users,
|
|
47
|
+
response within 30 minutes. **SEV-3** (Medium): minor feature unavailable or
|
|
48
|
+
degradation affecting <25% of users, response within 4 hours. **SEV-4** (Low):
|
|
49
|
+
cosmetic issue or very minor impact, response within 24 hours.
|
|
50
|
+
|
|
51
|
+
### REQ-002 — Incident Commander Role
|
|
52
|
+
|
|
53
|
+
Every SEV-1 and SEV-2 incident MUST have a designated Incident Commander (IC)
|
|
54
|
+
assigned within 10 minutes of declaration. The IC is responsible for coordinating
|
|
55
|
+
the response bridge, assigning roles (scribe, comms lead, technical leads),
|
|
56
|
+
driving the timeline, making go/no-go decisions on fixes, and initiating the
|
|
57
|
+
postmortem. The IC does NOT directly troubleshoot — their sole focus is
|
|
58
|
+
coordination.
|
|
59
|
+
|
|
60
|
+
### REQ-003 — Stakeholder Communication Protocol
|
|
61
|
+
|
|
62
|
+
During SEV-1/SEV-2 incidents, stakeholder updates MUST be sent on a defined
|
|
63
|
+
cadence: initial notification within 15 minutes of declaration, updates every
|
|
64
|
+
30 minutes until resolution, and an immediate update on any severity change or
|
|
65
|
+
major development. Updates MUST include current status, known impact, what is
|
|
66
|
+
being done, and the next update time. The status page MUST be updated
|
|
67
|
+
simultaneously with internal communications.
|
|
68
|
+
|
|
69
|
+
### REQ-004 — Blameless Postmortem Requirements
|
|
70
|
+
|
|
71
|
+
Every SEV-1 incident MUST have a blameless postmortem completed within 5 business
|
|
72
|
+
days; SEV-2 incidents within 10 business days. Postmortems MUST be blameless —
|
|
73
|
+
focusing on systemic causes, not individual mistakes. Required sections: timeline,
|
|
74
|
+
impact, root cause (5 Whys), contributing factors, action items with owners and
|
|
75
|
+
due dates, and lessons learned. Action items MUST be tracked to completion.
|
|
76
|
+
|
|
77
|
+
### REQ-005 — On-Call Rotation and Handoff
|
|
78
|
+
|
|
79
|
+
Every production service MUST have a documented on-call rotation with at least 2
|
|
80
|
+
engineers. Rotation schedules MUST be published at least 2 weeks in advance.
|
|
81
|
+
On-call handoff MUST include a written summary of active incidents, recent
|
|
82
|
+
incidents still under investigation, known flaky alerts, upcoming planned
|
|
83
|
+
maintenance, and any service-health concerns. Handoff MUST be acknowledged by the
|
|
84
|
+
incoming on-call.
|
|
85
|
+
|
|
86
|
+
### REQ-006 — Incident Retrospective Metrics
|
|
87
|
+
|
|
88
|
+
Teams SHOULD track and review incident metrics monthly: MTTD (Mean Time To
|
|
89
|
+
Detect), MTTR (Mean Time To Resolve), incident frequency by severity, repeat
|
|
90
|
+
incidents (same root cause within 90 days), and postmortem action-item completion
|
|
91
|
+
rate. These metrics SHOULD be reviewed in monthly reliability reviews with
|
|
92
|
+
engineering leadership.
|
|
93
|
+
|
|
94
|
+
## Integration with Existing Standards
|
|
95
|
+
|
|
96
|
+
- **`runbook`** — the IC and on-call engineers execute typed runbooks during the
|
|
97
|
+
mitigate phase; SEV runbooks are drilled per the `runbook` cadence.
|
|
98
|
+
- **`slo-sli`** — error-budget burn often triggers incident declaration; SLO
|
|
99
|
+
impact is summarized in the postmortem.
|
|
100
|
+
- **`postmortem-standards`** — REQ-004 aligns with the blameless postmortem
|
|
101
|
+
template; this standard sets the trigger and timelines.
|
|
102
|
+
- **`virtual-organization-standards`** — SEV-1 incidents instantiate the incident
|
|
103
|
+
virtual organization (IC, Communications Lead, Operations Lead).
|
|
104
|
+
- **`alerting-standards`** — alerts initiate detection and severity assessment.
|
|
105
|
+
- **`execution-history`** — automated mitigation actions are recorded as execution
|
|
106
|
+
history.
|
|
107
|
+
|
|
108
|
+
## Related Specs
|
|
109
|
+
|
|
110
|
+
- XSPEC-063 — UDS SRE/operations pack (this standard's source)
|
|
111
|
+
- XSPEC-251 — Operator proactive reliability (proactive ownership upstream of incidents)
|
|
112
|
+
- DEC-041 — EU AI Act 2026 compliance (auditability requires postmortems)
|
|
113
|
+
- DEC-042 — Guardian / Governance Agent pattern (agent-driven runbook execution)
|
|
114
|
+
|
|
115
|
+
## Changelog
|
|
116
|
+
|
|
117
|
+
| Version | Date | Changes |
|
|
118
|
+
|---------|------|---------|
|
|
119
|
+
| v1.0.0 | 2026-06-17 | Initial — REQ-001~006: severity classification, incident commander, communication protocol, blameless postmortem, on-call rotation/handoff, retrospective metrics (XSPEC-063) |
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
> **AI-optimized version**: `ai/standards/license-compliance.ai.yaml`
|
|
5
5
|
> **Agent Spec**: ASPEC-001 (cross-project/aspec/ASPEC-001-license-compliance-agent.md)
|
|
6
6
|
|
|
7
|
+
**Scope**: universal
|
|
8
|
+
|
|
7
9
|
## Overview
|
|
8
10
|
|
|
9
11
|
Comprehensive license compliance for AI-augmented development, covering both general OSS practice (Tier 1) and AI-specific rules for AI-generated code (Tier 2).
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
> **Language**: English | [繁體中文](../locales/zh-TW/core/logging-standards.md)
|
|
4
4
|
|
|
5
|
-
**Version**: 1.
|
|
6
|
-
**Last Updated**: 2026-
|
|
5
|
+
**Version**: 1.4.0
|
|
6
|
+
**Last Updated**: 2026-06-17
|
|
7
7
|
**Applicability**: All software projects
|
|
8
8
|
**Scope**: universal
|
|
9
9
|
**Industry Standards**: RFC 5424, OpenTelemetry, W3C Trace Context
|
|
@@ -15,6 +15,81 @@
|
|
|
15
15
|
|
|
16
16
|
This document defines logging standards for consistent, structured, and actionable application logs across all environments.
|
|
17
17
|
|
|
18
|
+
## Mandatory Events
|
|
19
|
+
|
|
20
|
+
> **Closes** UDS issue [#108](https://github.com/AsiaOstrich/universal-dev-standards/issues/108) (XSPEC-234). The rest of this standard defines **how** to write a log entry (level / fields / PII mask / rotation). This section defines **when you MUST write one** — excluding "compliant on paper but materially silent" logging.
|
|
21
|
+
|
|
22
|
+
Logging that follows every formatting rule but **never fires at the moment that matters** is worse than useless: it gives false confidence during an incident. The events below are the canonical moments where a log entry is **mandatory**. Each declares `when` / `must_log` / `must_NOT_log` / `level` / `rationale`.
|
|
23
|
+
|
|
24
|
+
### Why this exists (real incidents)
|
|
25
|
+
|
|
26
|
+
A PHP→.NET migration burned 2 days diagnosing "send failed, no log", because **four layers were all silent**:
|
|
27
|
+
|
|
28
|
+
1. **Load-balancer marks backend DOWN** (503) on health-probe timeout — backend logged only probe noise, zero business events.
|
|
29
|
+
2. **Framework validation reject** (e.g. ModelState / DTO 501) — the rejecting framework returned before any handler ran, so the **payload was never logged**.
|
|
30
|
+
3. **Auth failure** logged only "Account or password error" — **no uid, no source IP** → un-investigable.
|
|
31
|
+
4. **Background worker alive but log file 0 bytes** — no mechanism detected the silence.
|
|
32
|
+
|
|
33
|
+
None of these were caught by the formatting rules alone. Mandatory events close that gap.
|
|
34
|
+
|
|
35
|
+
### Catalog (9 canonical events)
|
|
36
|
+
|
|
37
|
+
| id | when | level | Core required fields (`must_log`) | `must_NOT_log` |
|
|
38
|
+
|----|------|-------|-----------------------------------|----------------|
|
|
39
|
+
| `application_startup` | After process boot, **before** accepting requests | INFO | app_name, version, git_sha, environment, hostname, pid, listening_endpoints | secrets, full connection strings |
|
|
40
|
+
| `request_received` | First time HTTP middleware sees a request | INFO / DEBUG | method, path, source_ip, request_id | request body, auth headers |
|
|
41
|
+
| `validation_failure` | schema / ModelState / DTO validation rejects | WARN | request_id, path, missing_fields[], payload_shape (keys only) | field **values**, PII |
|
|
42
|
+
| `authentication_failure` | login / token verification fails | WARN | uid (attempted), source_ip, failure_reason | password, token value |
|
|
43
|
+
| `outbound_call_start` | An outbound HTTP/RPC call is initiated | INFO | target_url (host+path), request_id propagated, timeout_ms | credentials, bearer tokens |
|
|
44
|
+
| `outbound_call_complete` | An external call returns or fails | INFO / WARN / ERROR | status_code **or** failure_phase (dns/tcp/tls/http), elapsed_ms, retries | response body with PII |
|
|
45
|
+
| `business_event` | A state-changing business operation completes | INFO | operation_name, actor, target ids, outcome | full record payload, PII |
|
|
46
|
+
| `heartbeat` | Long-running background service, ≥ 1× / 60 s | INFO | service_name, queue_depth, items_processed_since_last_heartbeat | — |
|
|
47
|
+
| `shutdown` | Process exits (graceful or fatal) | INFO / ERROR | app_name, signal/reason, uptime_seconds, pending_work_count | — |
|
|
48
|
+
|
|
49
|
+
Each event's `rationale` ties back to a real failure mode: `validation_failure` ⇒ incident #2 (un-logged payload); `authentication_failure` field requirements ⇒ incident #3 (no uid/IP); `heartbeat` + silence detection ⇒ incident #4 (0-byte log); `application_startup`/`shutdown` ⇒ lifecycle blind spots; `outbound_call_*` ⇒ "send failed" with no trace of the call.
|
|
50
|
+
|
|
51
|
+
### Scenarios
|
|
52
|
+
|
|
53
|
+
#### Scenario: Validation failure must produce a log
|
|
54
|
+
|
|
55
|
+
- **GIVEN** an API endpoint receives a payload missing a `[Required]` field
|
|
56
|
+
- **WHEN** the framework auto-rejects (e.g. 400/501) before the handler runs
|
|
57
|
+
- **THEN** a WARN log MUST be written with `request_id`, `path`, `missing_fields[]`, `payload_shape` (keys only)
|
|
58
|
+
- **AND** a post-mortem can reconstruct the failure cause directly from the log
|
|
59
|
+
|
|
60
|
+
#### Scenario: Background service must heartbeat
|
|
61
|
+
|
|
62
|
+
- **GIVEN** a worker process is running
|
|
63
|
+
- **WHEN** no INFO/WARN/ERROR is written within 60 s
|
|
64
|
+
- **THEN** a `heartbeat` log MUST be written with current queue depth and items processed
|
|
65
|
+
- **AND** if no heartbeat appears for ≥ 2× the interval (≥ 120 s), the silence detector MUST alert
|
|
66
|
+
|
|
67
|
+
### Compliant startup log example
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"timestamp": "2026-06-17T08:00:00.000Z",
|
|
72
|
+
"level": "INFO",
|
|
73
|
+
"message": "application_startup",
|
|
74
|
+
"event": "application_startup",
|
|
75
|
+
"app_name": "payment-service",
|
|
76
|
+
"version": "2.3.1",
|
|
77
|
+
"git_sha": "a1b2c3d",
|
|
78
|
+
"environment": "production",
|
|
79
|
+
"hostname": "pod-abc123",
|
|
80
|
+
"pid": 4711,
|
|
81
|
+
"listening_endpoints": ["0.0.0.0:8080", "0.0.0.0:9090/metrics"]
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Follow-on rules
|
|
86
|
+
|
|
87
|
+
1. **Access-log separation** — health-probe / liveness traffic MUST NOT pollute the business-event log. Route probes to a separate sink/file so they cannot drown out or rotate away business events (see incident #1).
|
|
88
|
+
2. **Log-silence detection SLA** — a service SHOULD alert after N minutes with no events, with N ≤ 2× the `heartbeat` interval. Absence of expected logs is itself an alertable condition (see the "Absence of Expected Logs" alert pattern below).
|
|
89
|
+
3. **OPS-facing log discoverability** — error responses returned to the client SHOULD carry the `request_id`, so support can correlate a user-reported failure to backend logs without round-trips for log access.
|
|
90
|
+
|
|
91
|
+
> **Cross-ref**: `heartbeat` / silence detection complement the [Log File Rotation Policy](#log-file-rotation-policy) (a 0-byte / silently-dropping log is the same blind spot from two directions) and migration-assistant's Background Job / Side-Effect Completeness (these events are the observable "has-fired" evidence).
|
|
92
|
+
|
|
18
93
|
## Log Levels
|
|
19
94
|
|
|
20
95
|
### Standard Log Levels
|
|
@@ -754,6 +829,7 @@ App cannot continue? → FATAL
|
|
|
754
829
|
|
|
755
830
|
| Version | Date | Changes |
|
|
756
831
|
|---------|------|---------|
|
|
832
|
+
| 1.4.0 | 2026-06-17 | Added: Mandatory Events catalog — 9 canonical "when you MUST log" events (when/must_log/must_NOT_log/level/rationale), validation-failure + heartbeat scenarios, compliant startup example, follow-on rules (access-log separation, silence-detection SLA, request_id discoverability) (XSPEC-234 / closes issue #108) |
|
|
757
833
|
| 1.3.0 | 2026-05-26 | Added: Log File Rotation Policy — mandatory dual-trigger (time + size) rotation with hostile-default warning, recipes for .NET/Python/Java/Node, ops SOP (XSPEC-232 / closes issue #111) |
|
|
758
834
|
| 1.2.0 | 2026-01-24 | Added: OpenTelemetry Semantic Conventions, Observability Three Pillars Integration, Log-based Alerting, Advanced Correlation Patterns |
|
|
759
835
|
| 1.1.0 | 2026-01-05 | Added: References section with OWASP, RFC 5424, OpenTelemetry, and 12 Factor App |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Mock Boundary Standards
|
|
2
2
|
|
|
3
|
-
**Version**: 1.
|
|
4
|
-
**Last Updated**: 2026-
|
|
3
|
+
**Version**: 1.1.0
|
|
4
|
+
**Last Updated**: 2026-07-01
|
|
5
5
|
**Applicability**: All software projects with unit and integration tests
|
|
6
6
|
**Scope**: universal
|
|
7
7
|
**Industry Standards**: ISTQB Foundation (Test Doubles), xUnit Patterns (Gerard Meszaros)
|
|
@@ -46,6 +46,7 @@ vi.mock('node:fs/promises', ...) // I/O replaced
|
|
|
46
46
|
| Environment variables | `process.env.NODE_ENV`, `process.env.LICENSE_KEY` | Enables config variation |
|
|
47
47
|
| File system (unit tests only) | `fs.readFile`, `fs.writeFile` | Avoids I/O in fast unit tests |
|
|
48
48
|
| Cross-module boundaries (with IT counterpart) | Other modules' public APIs | Isolates unit under test |
|
|
49
|
+
| In-process background execution (via injectable runner) | `Task.Run`, unawaited promises, `setTimeout`, goroutines, thread-pool dispatch | Injecting a runner seam lets tests await deterministic completion, eliminating the race |
|
|
49
50
|
|
|
50
51
|
---
|
|
51
52
|
|
|
@@ -60,6 +61,46 @@ vi.mock('node:fs/promises', ...) // I/O replaced
|
|
|
60
61
|
|
|
61
62
|
---
|
|
62
63
|
|
|
64
|
+
## Injectable Background Execution
|
|
65
|
+
|
|
66
|
+
Fire-and-forget background work (a `Task.Run`, an unawaited promise, a `setTimeout`, a goroutine, a `java.util.concurrent` executor submission, or `asyncio.create_task`) is a **seam**, exactly like the system clock. Just as you inject a clock instead of reading wall-clock time, you inject the background dispatcher instead of spawning work directly. This lets a test drive the work to a **deterministic, awaited completion** and assert on its outcome (success, exception, or retry) — no polling, no sleeping, no race.
|
|
67
|
+
|
|
68
|
+
Abstract the dispatch behind a small interface (e.g. `IBackgroundTaskRunner` / `BackgroundDispatcher`), then provide two implementations:
|
|
69
|
+
|
|
70
|
+
- **Production**: preserves true fire-and-forget semantics — dispatch returns immediately and the work runs detached.
|
|
71
|
+
- **Test**: runs the work **inline** and **tracks the underlying Task/promise**, exposing a handle the test can `await` so completion (and any failure) is observable.
|
|
72
|
+
|
|
73
|
+
Language-neutral sketch (TypeScript pseudo-code):
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
// Seam — injected wherever background work is dispatched
|
|
77
|
+
interface BackgroundDispatcher {
|
|
78
|
+
dispatch(work: () => Promise<void>): void
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Production: real fire-and-forget — returns immediately, work runs detached
|
|
82
|
+
class FireAndForgetDispatcher implements BackgroundDispatcher {
|
|
83
|
+
dispatch(work: () => Promise<void>): void {
|
|
84
|
+
void work() // intentionally not awaited
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Test: inline execution + tracked tasks so tests can await completion
|
|
89
|
+
class DeterministicDispatcher implements BackgroundDispatcher {
|
|
90
|
+
private readonly tasks: Promise<void>[] = []
|
|
91
|
+
dispatch(work: () => Promise<void>): void {
|
|
92
|
+
this.tasks.push(work()) // start inline, keep the handle
|
|
93
|
+
}
|
|
94
|
+
async settle(): Promise<void> {
|
|
95
|
+
await Promise.all(this.tasks) // test awaits deterministic completion
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
The test injects `DeterministicDispatcher`, exercises the code under test, then `await dispatcher.settle()` before asserting on the result — the background side effect is now fully observable and deterministic.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
63
104
|
## Hollow Test Detection
|
|
64
105
|
|
|
65
106
|
Before submitting a test file, check:
|
|
@@ -78,6 +119,7 @@ Before submitting a test file, check:
|
|
|
78
119
|
- **Orphan Mock**: Cross-module mock with no integration test counterpart
|
|
79
120
|
- **Security Bypass Mock**: Auth/permission logic replaced with pass-through stub
|
|
80
121
|
- **Database Mock Cascade**: DB returns hardcoded data, hiding real query errors
|
|
122
|
+
- **Poll/Sleep for Background Result**: Sleeping or polling to wait for fire-and-forget work to finish. The race is still there — the timeout merely hides it most of the time while slowing the whole suite and, on a shared runner, leaking flakiness into other MRs' CI. Inject a deterministic runner and await the tracked task instead.
|
|
81
123
|
|
|
82
124
|
---
|
|
83
125
|
|
|
@@ -90,6 +132,7 @@ Before submitting a test file, check:
|
|
|
90
132
|
| IT counterpart | Mocking cross-module boundary | Ensure corresponding IT exists |
|
|
91
133
|
| No security mock | Test involves auth/permissions | Use real test user + real token |
|
|
92
134
|
| Hollow review | Mock count ≥ import count | Add output-value assertion |
|
|
135
|
+
| No poll/sleep for background work | Test asserts a fire-and-forget side effect | Inject deterministic runner; await the tracked task |
|
|
93
136
|
|
|
94
137
|
---
|
|
95
138
|
|
|
@@ -98,3 +141,12 @@ Before submitting a test file, check:
|
|
|
98
141
|
- **testing**: Mock boundary rules apply to all test levels in the testing pyramid
|
|
99
142
|
- **test-completeness-dimensions**: Dimension 8 (AI Test Quality) references these rules
|
|
100
143
|
- **flow-based-testing**: Flow tests must follow mock boundary rules
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Version History
|
|
148
|
+
|
|
149
|
+
| Version | Date | Change |
|
|
150
|
+
|---------|------|--------|
|
|
151
|
+
| 1.0.0 | 2026-05-04 | Initial standard: hollow test problem, CAN/CANNOT mock tables, detection, anti-patterns, rules summary |
|
|
152
|
+
| 1.1.0 | 2026-07-01 | Added injectable background execution as a seam (parallel to clock injection): CAN-mock row, `Injectable Background Execution` section, `Poll/Sleep for Background Result` anti-pattern, and no-poll/sleep rule (issue #143) |
|