universal-dev-standards 5.4.0 → 5.6.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.
Files changed (138) hide show
  1. package/bundled/ai/options/testing/integration-testing.ai.yaml +2 -2
  2. package/bundled/ai/options/testing/unit-testing.ai.yaml +2 -2
  3. package/bundled/ai/standards/adversarial-test.ai.yaml +277 -0
  4. package/bundled/ai/standards/audit-trail.ai.yaml +113 -0
  5. package/bundled/ai/standards/browser-compatibility-standards.ai.yaml +63 -0
  6. package/bundled/ai/standards/chaos-injection-tests.ai.yaml +91 -0
  7. package/bundled/ai/standards/container-image-standards.ai.yaml +88 -0
  8. package/bundled/ai/standards/container-security.ai.yaml +331 -0
  9. package/bundled/ai/standards/contract-testing-standards.ai.yaml +62 -0
  10. package/bundled/ai/standards/cost-budget-test.ai.yaml +96 -0
  11. package/bundled/ai/standards/cross-flow-regression.ai.yaml +61 -0
  12. package/bundled/ai/standards/data-contract.ai.yaml +110 -0
  13. package/bundled/ai/standards/data-migration-testing.ai.yaml +96 -0
  14. package/bundled/ai/standards/data-pipeline.ai.yaml +113 -0
  15. package/bundled/ai/standards/disaster-recovery-drill.ai.yaml +89 -0
  16. package/bundled/ai/standards/flaky-test-management.ai.yaml +89 -0
  17. package/bundled/ai/standards/flow-based-testing.ai.yaml +240 -0
  18. package/bundled/ai/standards/full-coverage-testing.ai.yaml +192 -0
  19. package/bundled/ai/standards/iac-design-principles.ai.yaml +83 -0
  20. package/bundled/ai/standards/incident-response.ai.yaml +107 -0
  21. package/bundled/ai/standards/license-compliance.ai.yaml +106 -0
  22. package/bundled/ai/standards/llm-output-validation.ai.yaml +269 -0
  23. package/bundled/ai/standards/mock-boundary.ai.yaml +250 -0
  24. package/bundled/ai/standards/mutation-testing.ai.yaml +192 -0
  25. package/bundled/ai/standards/pii-classification.ai.yaml +109 -0
  26. package/bundled/ai/standards/policy-as-code-testing.ai.yaml +227 -0
  27. package/bundled/ai/standards/prd-standards.ai.yaml +88 -0
  28. package/bundled/ai/standards/product-metrics-standards.ai.yaml +111 -0
  29. package/bundled/ai/standards/prompt-regression.ai.yaml +94 -0
  30. package/bundled/ai/standards/property-based-testing.ai.yaml +105 -0
  31. package/bundled/ai/standards/release-quality-manifest.ai.yaml +135 -0
  32. package/bundled/ai/standards/release-readiness-gate.ai.yaml +77 -0
  33. package/bundled/ai/standards/replay-test.ai.yaml +111 -0
  34. package/bundled/ai/standards/runbook.ai.yaml +104 -0
  35. package/bundled/ai/standards/sast-advanced.ai.yaml +135 -0
  36. package/bundled/ai/standards/schema-evolution.ai.yaml +111 -0
  37. package/bundled/ai/standards/secret-management-standards.ai.yaml +105 -0
  38. package/bundled/ai/standards/secure-op.ai.yaml +365 -0
  39. package/bundled/ai/standards/security-testing.ai.yaml +171 -0
  40. package/bundled/ai/standards/server-ops-security.ai.yaml +274 -0
  41. package/bundled/ai/standards/slo-sli.ai.yaml +97 -0
  42. package/bundled/ai/standards/smoke-test.ai.yaml +87 -0
  43. package/bundled/ai/standards/supply-chain-attestation.ai.yaml +109 -0
  44. package/bundled/ai/standards/test-completeness-dimensions.ai.yaml +52 -5
  45. package/bundled/ai/standards/testing.ai.yaml +20 -13
  46. package/bundled/ai/standards/user-story-mapping.ai.yaml +108 -0
  47. package/bundled/core/accessibility-standards.md +58 -0
  48. package/bundled/core/adversarial-test.md +212 -0
  49. package/bundled/core/branch-completion.md +4 -0
  50. package/bundled/core/browser-compatibility-standards.md +220 -0
  51. package/bundled/core/chaos-injection-tests.md +116 -0
  52. package/bundled/core/checkin-standards.md +1 -0
  53. package/bundled/core/container-security.md +521 -0
  54. package/bundled/core/contract-testing-standards.md +182 -0
  55. package/bundled/core/cost-budget-test.md +69 -0
  56. package/bundled/core/cross-flow-regression.md +190 -0
  57. package/bundled/core/data-migration-testing.md +110 -0
  58. package/bundled/core/disaster-recovery-drill.md +73 -0
  59. package/bundled/core/flaky-test-management.md +73 -0
  60. package/bundled/core/flow-based-testing.md +275 -0
  61. package/bundled/core/full-coverage-testing.md +183 -0
  62. package/bundled/core/llm-output-validation.md +178 -0
  63. package/bundled/core/mock-boundary.md +100 -0
  64. package/bundled/core/mutation-testing.md +97 -0
  65. package/bundled/core/performance-standards.md +65 -0
  66. package/bundled/core/policy-as-code-testing.md +188 -0
  67. package/bundled/core/prompt-regression.md +72 -0
  68. package/bundled/core/property-based-testing.md +73 -0
  69. package/bundled/core/release-quality-manifest.md +193 -0
  70. package/bundled/core/release-readiness-gate.md +184 -0
  71. package/bundled/core/replay-test.md +86 -0
  72. package/bundled/core/sast-advanced.md +300 -0
  73. package/bundled/core/secure-op.md +314 -0
  74. package/bundled/core/security-testing.md +87 -0
  75. package/bundled/core/server-ops-security.md +493 -0
  76. package/bundled/core/smoke-test.md +65 -0
  77. package/bundled/core/supply-chain-attestation.md +117 -0
  78. package/bundled/locales/zh-CN/CHANGELOG.md +3 -3
  79. package/bundled/locales/zh-CN/README.md +1 -1
  80. package/bundled/locales/zh-CN/skills/ai-instruction-standards/SKILL.md +5 -5
  81. package/bundled/locales/zh-TW/CHANGELOG.md +3 -3
  82. package/bundled/locales/zh-TW/README.md +1 -1
  83. package/bundled/locales/zh-TW/core/browser-compatibility-standards.md +11 -0
  84. package/bundled/locales/zh-TW/core/contract-testing-standards.md +11 -0
  85. package/bundled/locales/zh-TW/core/cross-flow-regression.md +11 -0
  86. package/bundled/locales/zh-TW/core/release-readiness-gate.md +11 -0
  87. package/bundled/locales/zh-TW/skills/ai-instruction-standards/SKILL.md +183 -79
  88. package/bundled/skills/README.md +4 -3
  89. package/bundled/skills/SKILL_NAMING.md +94 -0
  90. package/bundled/skills/ai-instruction-standards/SKILL.md +181 -88
  91. package/bundled/skills/atdd-assistant/SKILL.md +8 -0
  92. package/bundled/skills/bdd-assistant/SKILL.md +7 -0
  93. package/bundled/skills/checkin-assistant/SKILL.md +8 -0
  94. package/bundled/skills/code-review-assistant/SKILL.md +7 -0
  95. package/bundled/skills/journey-test-assistant/SKILL.md +203 -0
  96. package/bundled/skills/orchestrate/SKILL.md +167 -0
  97. package/bundled/skills/plan/SKILL.md +234 -0
  98. package/bundled/skills/pr-automation-assistant/SKILL.md +8 -0
  99. package/bundled/skills/push/SKILL.md +49 -2
  100. package/bundled/skills/{process-automation → skill-builder}/SKILL.md +1 -1
  101. package/bundled/skills/{forward-derivation → spec-derivation}/SKILL.md +1 -1
  102. package/bundled/skills/spec-driven-dev/SKILL.md +7 -0
  103. package/bundled/skills/sweep/SKILL.md +145 -0
  104. package/bundled/skills/tdd-assistant/SKILL.md +7 -0
  105. package/package.json +6 -6
  106. package/src/commands/check.js +43 -0
  107. package/src/commands/flow.js +8 -0
  108. package/src/commands/init.js +2 -1
  109. package/src/commands/start.js +14 -0
  110. package/src/commands/sweep.js +8 -0
  111. package/src/commands/update.js +10 -0
  112. package/src/commands/workflow.js +8 -0
  113. package/standards-registry.json +483 -5
  114. package/bundled/locales/zh-CN/skills/ac-coverage-assistant/SKILL.md +0 -190
  115. package/bundled/locales/zh-CN/skills/forward-derivation/SKILL.md +0 -71
  116. package/bundled/locales/zh-CN/skills/forward-derivation/guide.md +0 -130
  117. package/bundled/locales/zh-CN/skills/methodology-system/SKILL.md +0 -88
  118. package/bundled/locales/zh-CN/skills/methodology-system/create-methodology.md +0 -350
  119. package/bundled/locales/zh-CN/skills/methodology-system/guide.md +0 -131
  120. package/bundled/locales/zh-CN/skills/methodology-system/runtime.md +0 -279
  121. package/bundled/locales/zh-CN/skills/process-automation/SKILL.md +0 -143
  122. package/bundled/locales/zh-TW/skills/ac-coverage-assistant/SKILL.md +0 -195
  123. package/bundled/locales/zh-TW/skills/deploy-assistant/SKILL.md +0 -178
  124. package/bundled/locales/zh-TW/skills/forward-derivation/SKILL.md +0 -69
  125. package/bundled/locales/zh-TW/skills/forward-derivation/guide.md +0 -415
  126. package/bundled/locales/zh-TW/skills/methodology-system/SKILL.md +0 -86
  127. package/bundled/locales/zh-TW/skills/methodology-system/create-methodology.md +0 -350
  128. package/bundled/locales/zh-TW/skills/methodology-system/guide.md +0 -131
  129. package/bundled/locales/zh-TW/skills/methodology-system/runtime.md +0 -279
  130. package/bundled/locales/zh-TW/skills/process-automation/SKILL.md +0 -144
  131. /package/bundled/skills/{ac-coverage-assistant → ac-coverage}/SKILL.md +0 -0
  132. /package/bundled/skills/{methodology-system → dev-methodology}/SKILL.md +0 -0
  133. /package/bundled/skills/{methodology-system → dev-methodology}/create-methodology.md +0 -0
  134. /package/bundled/skills/{methodology-system → dev-methodology}/guide.md +0 -0
  135. /package/bundled/skills/{methodology-system → dev-methodology}/integrated-flow.md +0 -0
  136. /package/bundled/skills/{methodology-system → dev-methodology}/prerequisite-check.md +0 -0
  137. /package/bundled/skills/{methodology-system → dev-methodology}/runtime.md +0 -0
  138. /package/bundled/skills/{forward-derivation → spec-derivation}/guide.md +0 -0
@@ -0,0 +1,274 @@
1
+ # Server Operations Security Standard - AI Optimized
2
+ # Source: core/server-ops-security.md
3
+
4
+ id: server-ops-security
5
+ meta:
6
+ version: "1.0.0"
7
+ updated: "2026-05-04"
8
+ source: core/server-ops-security.md
9
+ description: >
10
+ Server and infrastructure operational security covering SSH hardening,
11
+ host configuration, privilege management, bastion patterns, patch management,
12
+ and network isolation for AI Agent production environments.
13
+
14
+ # ─────────────────────────────────────────────────────────
15
+ # Core Categories
16
+ # ─────────────────────────────────────────────────────────
17
+ categories:
18
+ - id: ssh_hardening
19
+ name: SSH Hardening
20
+ description: SSH service must use key-based authentication only; password login is prohibited
21
+ required_sshd_config:
22
+ - directive: PasswordAuthentication
23
+ value: "no"
24
+ - directive: PermitRootLogin
25
+ value: "no"
26
+ - directive: PubkeyAuthentication
27
+ value: "yes"
28
+ - directive: Port
29
+ value: "non-default (not 22)"
30
+ - directive: MaxAuthTries
31
+ value: 3
32
+ - directive: LoginGraceTime
33
+ value: 30
34
+ - directive: AllowUsers
35
+ value: explicit allowlist
36
+ - directive: ClientAliveInterval
37
+ value: 300
38
+ - directive: ClientAliveCountMax
39
+ value: 2
40
+ tools:
41
+ - name: fail2ban
42
+ purpose: Block brute-force IPs
43
+ config:
44
+ jailtime: ">= 3600 seconds (1 hour)"
45
+ findtime: 600
46
+ maxretry: 5
47
+ key_management:
48
+ algorithm: Ed25519 (not RSA-1024)
49
+ private_key: Must be passphrase-protected
50
+ rotation: Annual or on suspected compromise
51
+ iso_mapping:
52
+ - "ISO/IEC 27001:2022 A.8.5 Secure Authentication"
53
+ - "ISO/IEC 27001:2022 A.8.20 Network Security"
54
+
55
+ - id: host_hardening
56
+ name: Host Hardening
57
+ description: Minimal OS installation; only retain required services
58
+ cis_benchmark: CIS Benchmark Level 1 (Linux)
59
+ required_actions:
60
+ - action: Disable unused services
61
+ examples: [avahi-daemon, cups, bluetooth]
62
+ - action: Enable firewall
63
+ tools: [UFW, iptables]
64
+ - action: Enable auditd
65
+ purpose: System call auditing
66
+ target_score: ">= 75 (Lynis audit score)"
67
+ - action: Apply sysctl hardening
68
+ settings:
69
+ - "kernel.dmesg_restrict = 1"
70
+ - "net.ipv4.ip_forward = 0 (unless router)"
71
+ - "kernel.randomize_va_space = 2"
72
+ - action: Disable USB storage
73
+ when: USB storage not required
74
+ - action: Set umask 027
75
+ scope: system-wide default
76
+ tools:
77
+ - name: Lynis
78
+ command: "lynis audit system"
79
+ gate: Score >= 75
80
+ - name: OpenSCAP
81
+ purpose: CIS Benchmark compliance scanning
82
+ iso_mapping:
83
+ - "ISO/IEC 27001:2022 A.8.9 Configuration Management"
84
+ - "NIST SP 800-123 Guide to General Server Security"
85
+
86
+ - id: privilege_management
87
+ name: Privilege Management
88
+ description: Least privilege principle; service accounts must not have shell or sudo access
89
+ rules:
90
+ - rule: AI Agent service account is non-root with no login shell (/sbin/nologin)
91
+ - rule: Service account has access only to required directories
92
+ - rule: sudo entries must be explicit allowlist (no NOPASSWD ALL)
93
+ - rule: Each service uses an independent Unix account (no sharing)
94
+ - rule: Privileged accounts audited quarterly
95
+ sudo_policy:
96
+ location: /etc/sudoers.d/
97
+ prohibited: "NOPASSWD ALL"
98
+ required: Explicit command allowlist per account
99
+ pam_lockout:
100
+ module: pam_faillock (or pam_tally2 on older systems)
101
+ failed_attempts: 5
102
+ lockout_duration: "15 minutes (900 seconds)"
103
+ audit_tools:
104
+ - "sudo -l (per account review)"
105
+ - last
106
+ - lastlog
107
+ iso_mapping:
108
+ - "ISO/IEC 27001:2022 A.8.2 Privileged Access Rights"
109
+ - "ISO/IEC 27001:2022 A.8.18 Use of privileged utility programs"
110
+
111
+ - id: bastion_pattern
112
+ name: Bastion / Jump Host Pattern
113
+ description: Production environments must be accessed through a Bastion Host; direct SSH to prod nodes is prohibited
114
+ applicability:
115
+ staging: recommended
116
+ production: required
117
+ architecture:
118
+ bastion_host:
119
+ - Dedicated VM; sole external SSH entry point
120
+ - MFA enforced (TOTP or YubiKey)
121
+ - Session recording enabled
122
+ prod_nodes:
123
+ - Firewall rule: "iptables -A INPUT -p tcp --dport 22 -s <bastion_ip> -j ACCEPT; DROP all other SSH"
124
+ - No direct internet SSH exposure
125
+ session_recording:
126
+ tools: [tmux + script, Teleport, AWS Session Manager]
127
+ purpose: All shell sessions recorded and auditable
128
+ emergency_access:
129
+ method: Out-of-band console (iLO / iDRAC / console server)
130
+ purpose: Access when Bastion is unavailable
131
+ iso_mapping:
132
+ - "ISO/IEC 27001:2022 A.8.3 Information Access Restriction"
133
+ - "NIST SP 800-207 Zero Trust Architecture"
134
+
135
+ - id: patch_management
136
+ name: Patch Management
137
+ description: OS and packages must be regularly updated; CVE remediation has defined SLAs
138
+ sla:
139
+ - severity: Critical CVE
140
+ deadline: "Patch or isolate within 24 hours"
141
+ - severity: High CVE
142
+ deadline: "Patch within 72 hours"
143
+ - severity: Medium CVE
144
+ deadline: "Patch within 7 days"
145
+ - severity: Low CVE
146
+ deadline: "Next maintenance window (≤ 30 days)"
147
+ automation:
148
+ debian_ubuntu:
149
+ tool: unattended-upgrades
150
+ config: "APT::Periodic::Unattended-Upgrade 1; security updates auto-applied"
151
+ rhel_centos:
152
+ tools: [yum-cron, dnf-automatic]
153
+ config: "apply_updates = yes (security only)"
154
+ scanning:
155
+ containers:
156
+ tool: Trivy
157
+ command: "trivy image <image>"
158
+ frequency: Weekly + on every build
159
+ systems:
160
+ tool: OpenVAS
161
+ frequency: Weekly
162
+ ai_agent_specific:
163
+ - rule: Use official base images only
164
+ - rule: Base image update cadence must not exceed 90 days
165
+ - rule: Guardian OPA Sidecar and application containers follow same patch SLA
166
+ iso_mapping:
167
+ - "ISO/IEC 27001:2022 A.8.8 Management of Technical Vulnerabilities"
168
+
169
+ - id: network_isolation
170
+ name: Network Isolation
171
+ description: Services are network-isolated; attack surface is minimized
172
+ rules:
173
+ - rule: Prod nodes must not be directly internet-facing; expose only through load balancer or API gateway
174
+ - rule: Inter-service communication uses internal VPC or overlay network (no public IPs)
175
+ - rule: AI Agent outbound traffic uses an explicit allowlist of permitted API endpoints
176
+ - rule: Database ports (5432, 3306, 6379) must not be exposed externally
177
+ - rule: Monitoring ports (Prometheus :9090, Grafana :3000) accessible from internal network only
178
+ tools:
179
+ on_prem: [iptables, nftables]
180
+ aws: [Security Groups, NACLs, VPC Flow Logs]
181
+ gcp: [VPC Firewall Rules, Cloud Armor]
182
+ outbound_allowlist_format: |
183
+ # Example: /etc/vibeops/outbound-allowlist.conf
184
+ ALLOW api.openai.com:443
185
+ ALLOW registry.npmjs.org:443
186
+ DENY *:* (default deny)
187
+ iso_mapping:
188
+ - "ISO/IEC 27001:2022 A.8.20 Networks Security"
189
+ - "ISO/IEC 27001:2022 A.8.22 Web Filtering"
190
+
191
+ # ─────────────────────────────────────────────────────────
192
+ # Quality Gates
193
+ # ─────────────────────────────────────────────────────────
194
+ quality_gates:
195
+ pre_deploy:
196
+ - ssh_password_auth: disabled
197
+ - root_login: disabled
198
+ - fail2ban: enabled
199
+ - firewall: enabled_and_configured
200
+ - unattended_upgrades: enabled
201
+ prod_only:
202
+ - bastion_host: required
203
+ - mfa_on_bastion: required
204
+ - session_recording: enabled
205
+ - all_critical_cve: patched
206
+ ai_agent_specific:
207
+ - service_account: non_root_no_shell
208
+ - outbound_whitelist: configured
209
+ - guardian_sidecar: running
210
+ - audit_log: enabled
211
+
212
+ # ─────────────────────────────────────────────────────────
213
+ # Rules
214
+ # ─────────────────────────────────────────────────────────
215
+ rules:
216
+ - id: ssh-key-only
217
+ trigger: configuring SSH on any server
218
+ instruction: >
219
+ Set PasswordAuthentication no and PermitRootLogin no in /etc/ssh/sshd_config.
220
+ Verify with: sshd -T | grep -E "passwordauthentication|permitrootlogin"
221
+ priority: required
222
+
223
+ - id: least-privilege-service-accounts
224
+ trigger: deploying any AI Agent or service
225
+ instruction: >
226
+ Create a dedicated non-root Unix account for each service.
227
+ Set shell to /sbin/nologin. Grant only necessary directory permissions.
228
+ priority: required
229
+
230
+ - id: bastion-for-prod
231
+ trigger: accessing production servers
232
+ instruction: >
233
+ Always connect via Bastion Host. Never SSH directly to prod nodes.
234
+ Verify Bastion MFA is active before connecting.
235
+ priority: required
236
+
237
+ - id: patch-critical-cvs-24h
238
+ trigger: critical CVE disclosure affecting deployed system
239
+ instruction: >
240
+ Apply patch or isolate affected system within 24 hours.
241
+ If patch unavailable, block network access to vulnerable component.
242
+ priority: required
243
+
244
+ - id: outbound-allowlist
245
+ trigger: deploying AI Agent to production
246
+ instruction: >
247
+ Configure explicit outbound allowlist. Default deny all outbound.
248
+ Document each permitted endpoint with business justification.
249
+ priority: required
250
+
251
+ anti_patterns:
252
+ - Direct SSH to prod nodes without Bastion
253
+ - PasswordAuthentication yes in /etc/ssh/sshd_config
254
+ - Service running as root user
255
+ - NOPASSWD ALL in /etc/sudoers or /etc/sudoers.d/
256
+ - Database or monitoring ports exposed to internet
257
+ - Base images older than 90 days without CVE re-scan
258
+ - No outbound traffic restriction on AI Agent hosts
259
+
260
+ quick_reference:
261
+ server_ops_security_checklist: |
262
+ □ SSH password auth disabled (PasswordAuthentication no)
263
+ □ Root SSH login disabled (PermitRootLogin no)
264
+ □ fail2ban enabled with jailtime >= 1 hour
265
+ □ Firewall enabled and default-deny inbound
266
+ □ unattended-upgrades (security) enabled
267
+ □ AI Agent service account: non-root, no shell
268
+ □ sudo entries: explicit commands only, no NOPASSWD ALL
269
+ □ Bastion Host in place for prod access
270
+ □ MFA enforced on Bastion
271
+ □ Session recording enabled
272
+ □ Critical CVEs patched within 24h SLA
273
+ □ AI Agent outbound allowlist configured
274
+ □ DB/monitoring ports not exposed externally
@@ -0,0 +1,97 @@
1
+ # SLO/SLI Standards - AI Optimized
2
+ # Source: XSPEC-063 Wave 3 SRE Pack
3
+
4
+ id: slo-sli
5
+ title: SLO/SLI Definition Standards
6
+ version: "1.0.0"
7
+ status: Active
8
+ tags: [sre, reliability, observability, slo, sli, error-budget]
9
+ summary: |
10
+ Defines how teams select, measure, and govern Service Level Indicators (SLIs)
11
+ and Service Level Objectives (SLOs). Covers SLI selection per service type,
12
+ SLO target-setting methodology, error budget policies, and multi-window
13
+ burn-rate alerting. Designed to bridge engineering reliability work with
14
+ customer-facing SLA commitments.
15
+
16
+ requirements:
17
+ - id: REQ-001
18
+ title: SLI Selection Per Service Type
19
+ description: |
20
+ Every production service MUST define at least one SLI matched to its
21
+ service type. API services must measure availability (non-5xx / total)
22
+ and latency (requests below threshold proportion). Batch jobs must
23
+ measure freshness (data lag ≤ threshold) and correctness (successfully
24
+ processed / total). Frontend services must measure Core Web Vitals
25
+ (LCP < 2.5s, FID < 100ms, CLS < 0.1).
26
+ level: MUST
27
+ examples:
28
+ - "availability_sli = count(http_status != 5xx) / count(all_requests)"
29
+ - "latency_sli = count(request_duration_ms < 200) / count(all_requests)"
30
+ - "freshness_sli = 1 if data_lag_minutes <= 5 else 0"
31
+
32
+ - id: REQ-002
33
+ title: SLO Target Setting Methodology
34
+ description: |
35
+ SLO targets MUST be set using historical baseline data. Teams MUST
36
+ start from the observed P5 performance (i.e., the 5th-percentile
37
+ worst period) over at least 28 rolling days, then add a small
38
+ buffer. The SLO target MUST be strictly higher than any external
39
+ SLA commitment (e.g., SLA 99.9% → SLO ≥ 99.95%).
40
+ level: MUST
41
+ examples:
42
+ - "Historical 28-day availability P5 = 99.92% → SLO = 99.95%"
43
+ - "SLA guarantees 99.9% → internal SLO set to 99.95%"
44
+ - "Never set SLO equal to SLA; maintain ≥ 0.05% buffer"
45
+
46
+ - id: REQ-003
47
+ title: Error Budget Policy
48
+ description: |
49
+ Every service with an SLO MUST have a written Error Budget Policy
50
+ specifying actions when the error budget is partially or fully
51
+ exhausted. At minimum the policy must define: (1) freeze threshold
52
+ (typically 50% exhausted → release freeze), (2) reliability sprint
53
+ trigger (100% exhausted), and (3) SLO review cadence (quarterly).
54
+ level: MUST
55
+ examples:
56
+ - "50% budget consumed → new feature deploys require VP approval"
57
+ - "100% budget consumed → team enters reliability sprint, no new features"
58
+ - "Error budget policy must be linked from the service runbook"
59
+
60
+ - id: REQ-004
61
+ title: Multi-Window Burn-Rate Alerting
62
+ description: |
63
+ Teams SHOULD implement multi-window burn-rate alerts to catch both
64
+ fast and slow budget exhaustion. Recommended thresholds: fast burn
65
+ (2% of monthly budget consumed in 1 hour → P1 page), medium burn
66
+ (5% in 6 hours → P2 alert), slow burn (10% in 3 days → P3 ticket).
67
+ level: SHOULD
68
+ examples:
69
+ - "fast_burn: burn_rate > 14.4 for 5 minutes → PagerDuty P1"
70
+ - "medium_burn: burn_rate > 6 for 30 minutes → Slack #oncall P2"
71
+ - "slow_burn: burn_rate > 3 for 6 hours → Jira ticket auto-created"
72
+
73
+ - id: REQ-005
74
+ title: SLO Documentation and Review Cadence
75
+ description: |
76
+ Each SLO MUST be documented in a standard SLO spec file containing:
77
+ service name, SLI formula, measurement window, target value, error
78
+ budget, alerting thresholds, and owner. SLO specs MUST be reviewed
79
+ quarterly and updated within 2 weeks of any major architecture change.
80
+ level: MUST
81
+ examples:
82
+ - "File: docs/slos/payment-api.slo.yaml with all required fields"
83
+ - "Quarterly review scheduled as recurring calendar event for service owner"
84
+ - "After database migration, SLO re-baselining completed within 14 days"
85
+
86
+ - id: REQ-006
87
+ title: SLO Compliance Reporting
88
+ description: |
89
+ Teams SHOULD publish a monthly SLO compliance report to stakeholders.
90
+ The report must include: achieved vs. target SLI value, error budget
91
+ remaining, significant incidents affecting SLO, and planned reliability
92
+ improvements. Dashboard links must be included.
93
+ level: SHOULD
94
+ examples:
95
+ - "Monthly Slack post in #reliability with SLO compliance dashboard link"
96
+ - "Report includes: 99.97% achieved (target 99.95%), budget 85% remaining"
97
+ - "Incident summary: 2 incidents, root causes addressed, no budget risk"
@@ -0,0 +1,87 @@
1
+ # SPDX-License-Identifier: MIT
2
+ name: Smoke Test Standards
3
+ nameZh: 煙霧測試標準
4
+ id: smoke-test
5
+ version: "1.0.0"
6
+ category: testing
7
+ scope: deployment-validation
8
+ summary: >
9
+ Post-deployment sanity checks that verify critical system paths are
10
+ operational within 30 seconds of deployment. Smoke tests fail fast and
11
+ alert on-call before users encounter broken deployments.
12
+
13
+ requirements:
14
+ - id: REQ-01
15
+ title: Critical Path Coverage
16
+ titleZh: 關鍵路徑覆蓋
17
+ level: MUST
18
+ description: >
19
+ Smoke tests MUST cover the minimum set of critical paths: (1) process
20
+ starts and binds to expected port, (2) health endpoint returns 200,
21
+ (3) at least one core feature responds correctly. Smoke tests MUST NOT
22
+ cover edge cases, performance, or correctness — that is the unit test suite's job.
23
+
24
+ - id: REQ-02
25
+ title: Execution Time
26
+ titleZh: 執行時間
27
+ level: MUST
28
+ description: >
29
+ The full smoke test suite MUST complete in under 30 seconds. Tests that
30
+ take longer provide false confidence — if smoke tests run for 5 minutes,
31
+ on-call won't run them after every deployment.
32
+
33
+ - id: REQ-03
34
+ title: Zero Dependencies
35
+ titleZh: 零外部依賴
36
+ level: MUST
37
+ description: >
38
+ Smoke tests MUST NOT depend on external services (LLM APIs, databases,
39
+ third-party APIs) unless verifying the integration itself. Use local
40
+ stubs or mock servers for external dependencies.
41
+
42
+ - id: REQ-04
43
+ title: Deployment Integration
44
+ titleZh: 部署整合
45
+ level: SHOULD
46
+ description: >
47
+ Smoke tests SHOULD be invocable via a single command (e.g. `npm run smoke`
48
+ or `./smoke.sh`) and SHOULD be wired into the deployment pipeline to run
49
+ automatically after each deployment.
50
+
51
+ - id: REQ-05
52
+ title: Exit Code Contract
53
+ titleZh: 退出碼契約
54
+ level: MUST
55
+ description: >
56
+ Smoke tests MUST exit with code 0 on success and non-zero on any failure.
57
+ The failure message MUST identify which check failed and why.
58
+
59
+ examples:
60
+ - name: "Node.js health check smoke test"
61
+ code: |
62
+ #!/usr/bin/env node
63
+ const http = require('http')
64
+ function check(path, expectedStatus = 200) {
65
+ return new Promise((resolve, reject) => {
66
+ http.get(`http://localhost:3000${path}`, (res) => {
67
+ if (res.statusCode !== expectedStatus) reject(new Error(`${path}: ${res.statusCode}`))
68
+ else resolve()
69
+ }).on('error', reject)
70
+ })
71
+ }
72
+ Promise.all([check('/health'), check('/api/status')])
73
+ .then(() => { console.log('Smoke: PASS'); process.exit(0) })
74
+ .catch(e => { console.error('Smoke: FAIL', e.message); process.exit(1) })
75
+
76
+ anti_patterns:
77
+ - description: >
78
+ Running full integration test suite as smoke tests — smoke tests should
79
+ complete in 30s, not 5 minutes.
80
+ - description: >
81
+ Not failing on non-200 HTTP status — always assert the status code,
82
+ not just that the server responded.
83
+
84
+ related_standards:
85
+ - testing
86
+ - deployment-standards
87
+ - performance-standards
@@ -0,0 +1,109 @@
1
+ # SPDX-License-Identifier: MIT
2
+ name: Supply Chain Attestation Standards
3
+ nameZh: 供應鏈溯源標準
4
+ id: supply-chain-attestation
5
+ version: "1.0.0"
6
+ category: security
7
+ scope: software-delivery
8
+ summary: >
9
+ SBOM generation, SLSA provenance, and cosign signing to establish verifiable
10
+ software supply chain integrity from source to deployed artefact.
11
+
12
+ requirements:
13
+ - id: REQ-01
14
+ title: Software Bill of Materials (SBOM)
15
+ titleZh: 軟體材料清單(SBOM)
16
+ level: MUST
17
+ description: >
18
+ Every release artefact MUST be accompanied by a CycloneDX JSON SBOM
19
+ listing all direct and transitive dependencies with name, version,
20
+ licence, and PURL. SBOM MUST be generated at build time from the
21
+ lock file (not package.json) to capture exact resolved versions.
22
+ implementation: |
23
+ # npm + CycloneDX
24
+ npm install -g @cyclonedx/cyclonedx-npm
25
+ cyclonedx-npm --output-format JSON --output-file sbom.cdx.json
26
+
27
+ - id: REQ-02
28
+ title: SLSA Provenance
29
+ titleZh: SLSA 溯源聲明
30
+ level: MUST
31
+ description: >
32
+ Every release MUST include a SLSA provenance document (minimum SLSA L1)
33
+ attesting the build inputs, builder identity, and build environment.
34
+ SLSA L2 is RECOMMENDED for public releases (requires GitHub Actions
35
+ OIDC token signing via slsa-framework/slsa-github-generator).
36
+ implementation: |
37
+ # SLSA L1 self-attestation (minimum)
38
+ provenance.json includes: buildType, builder.id,
39
+ invocation.configSource (repo+commit), materials, metadata.
40
+
41
+ - id: REQ-03
42
+ title: Artefact Signing
43
+ titleZh: 製品簽章
44
+ level: MUST
45
+ description: >
46
+ The SBOM, provenance document, and all release artefacts MUST be signed
47
+ using cosign (keyless Sigstore OIDC or key-based). Signatures MUST be
48
+ bundled with the release artefact for offline verification.
49
+ implementation: |
50
+ cosign sign-blob --key env://COSIGN_PRIVATE_KEY sbom.cdx.json > sbom.cdx.json.sig
51
+ cosign sign-blob --key env://COSIGN_PRIVATE_KEY provenance.json > provenance.json.sig
52
+
53
+ - id: REQ-04
54
+ title: Release Bundle
55
+ titleZh: 發布包完整性
56
+ level: MUST
57
+ description: >
58
+ The release bundle MUST include: primary artefact, sbom.cdx.json,
59
+ provenance.json, checksums.txt, and all .sig files.
60
+ SHA-256 checksums MUST cover all artefacts including SBOM and provenance.
61
+
62
+ - id: REQ-05
63
+ title: Verification Instructions
64
+ titleZh: 驗證指引
65
+ level: SHOULD
66
+ description: >
67
+ Release notes SHOULD include one-command verification instructions for
68
+ end-users to confirm artefact integrity using cosign and the SBOM.
69
+
70
+ examples:
71
+ - name: "CycloneDX SBOM in GitHub Actions"
72
+ code: |
73
+ - name: Generate SBOM
74
+ run: |
75
+ npm install -g @cyclonedx/cyclonedx-npm
76
+ cyclonedx-npm --output-format JSON \
77
+ --output-file sbom.cdx.json \
78
+ --package-lock-only
79
+
80
+ - name: "SLSA L1 provenance generation"
81
+ code: |
82
+ - name: Generate SLSA L1 provenance
83
+ run: |
84
+ cat > provenance.json << EOF
85
+ {
86
+ "_type": "https://in-toto.io/Statement/v0.1",
87
+ "predicateType": "https://slsa.dev/provenance/v0.2",
88
+ "subject": [{"name": "vibeops", "digest": {"sha256": "${IMAGE_DIGEST}"}}],
89
+ "predicate": {
90
+ "buildType": "https://github.com/Attestations/GitHubActionsWorkflow@v1",
91
+ "builder": {"id": "https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"},
92
+ "invocation": {"configSource": {"uri": "git+https://github.com/${GITHUB_REPOSITORY}@${GITHUB_SHA}"}},
93
+ "metadata": {"buildInvocationId": "${GITHUB_RUN_ID}"}
94
+ }
95
+ }
96
+ EOF
97
+
98
+ anti_patterns:
99
+ - description: >
100
+ Generating SBOM from package.json alone — always use the lock file
101
+ to capture exact resolved versions, not declared ranges.
102
+ - description: >
103
+ Signing only the primary artefact and omitting SBOM/provenance from
104
+ the signature scope — all attestation documents must also be signed.
105
+
106
+ related_standards:
107
+ - supply-chain-security-standards
108
+ - container-security
109
+ - sast-advanced
@@ -3,10 +3,10 @@
3
3
 
4
4
  id: test-completeness-dimensions
5
5
  meta:
6
- version: "1.1.0"
7
- updated: "2026-01-25"
6
+ version: "1.2.0"
7
+ updated: "2026-05-04"
8
8
  source: core/test-completeness-dimensions.md
9
- description: Framework for evaluating test completeness across 8 dimensions
9
+ description: Framework for evaluating test completeness across 10 dimensions (v1.2.0 adds Flow Completeness and Branch Coverage)
10
10
 
11
11
  dimensions:
12
12
  - id: 1
@@ -92,6 +92,28 @@ dimensions:
92
92
  naming: Descriptive names (should_reject_invalid_email)
93
93
  coverage_intent: Covers all code paths meaningfully
94
94
 
95
+ - id: 9
96
+ name: Flow Completeness
97
+ description: At least one complete path from initial state to each terminal state exists
98
+ test_items:
99
+ - Happy path flow covers all steps in sequence with shared context
100
+ - Each failure terminal state has at least one flow test that reaches it
101
+ - Shared context (state) is verified at each intermediate step, not only the final step
102
+ - Preconditions are explicitly established, not assumed from previous test runs
103
+ when_required: When feature has 3 or more sequential steps
104
+ note: See flow-based-testing.ai.yaml for the full 3-step flow decomposition methodology
105
+
106
+ - id: 10
107
+ name: Branch Coverage
108
+ description: Each decision point in a flow has all branches covered by at least one scenario
109
+ test_items:
110
+ - Every if/else branch has a corresponding test scenario
111
+ - Each distinct error branch (not just the "main" error) has its own test
112
+ - Decision table applied with minimum Each-Choice coverage strategy
113
+ - Critical flows (auth / payment / license / security) use All-Combinations strategy
114
+ when_required: When flow has any conditional logic or decision points
115
+ note: Use decision_table_expansion from flow-based-testing.ai.yaml to enumerate scenarios
116
+
95
117
  feature_type_mapping:
96
118
  note: "Dimension 8 (AI Generation Quality) applies when tests are AI-generated"
97
119
  types:
@@ -119,6 +141,12 @@ feature_type_mapping:
119
141
  dimensions: [1, 3, 7]
120
142
  with_ai: [1, 3, 7, 8]
121
143
 
144
+ - type: Workflow / Multi-step Process
145
+ dimensions: [1, 3, 4, 5, 9, 10]
146
+ with_ai: [1, 3, 4, 5, 9, 10, 8]
147
+ required_pattern: journey-chained-test
148
+ note: Apply flow-based-testing standard; use shared ctx; Each-Choice minimum branch coverage
149
+
122
150
  error_code_coverage:
123
151
  - code: 200
124
152
  meaning: Success
@@ -162,11 +190,15 @@ anti_patterns:
162
190
  - Accepting AI-generated tests without review
163
191
  - Assuming high line coverage means effective tests
164
192
  - Skipping mutation testing for critical code
193
+ - Testing all steps in a multi-step flow independently without state threading (misses step interaction bugs)
194
+ - Using a single test case for a flow with multiple decision points (hides which branch failed)
195
+ - Resetting shared context between steps in journey tests (breaks state accumulation)
196
+ - Applying All-Combinations to every flow (unmaintainable; reserve for critical auth/payment/security paths)
165
197
 
166
198
  rules:
167
199
  - id: use-checklist
168
200
  trigger: designing tests for a feature
169
- instruction: Use the 8 dimensions checklist to ensure completeness (dimension 8 for AI-generated tests)
201
+ instruction: Use the 10 dimensions checklist to ensure completeness (dim 8 for AI-generated tests; dim 9/10 for multi-step workflows)
170
202
  priority: required
171
203
 
172
204
  - id: authorization-matrix
@@ -234,6 +266,18 @@ checklist_template: |
234
266
  □ Tests are independent and self-contained
235
267
  □ Mutation score > 80% (if evaluated)
236
268
 
269
+ □ Flow Completeness (for multi-step features, 3+ steps)
270
+ □ Happy path journey test covers all steps in sequence
271
+ □ Each failure terminal state has a flow test reaching it
272
+ □ Intermediate step state verified in ctx, not only final result
273
+ □ Preconditions explicitly set up before Step 1
274
+
275
+ □ Branch Coverage (for flows with conditional logic)
276
+ □ Decision table created with all decision points and values
277
+ □ Each-Choice minimum coverage applied
278
+ □ Each distinct error branch has its own describe block
279
+ □ Critical flows (auth/payment/security) use All-Combinations
280
+
237
281
  quick_reference:
238
282
  dimensions:
239
283
  columns: [ID, Dimension, Key Focus]
@@ -246,9 +290,11 @@ quick_reference:
246
290
  - [6, Validation, Format and business rules]
247
291
  - [7, Integration, Real query verification]
248
292
  - [8, AI Generation, AI-generated test quality]
293
+ - [9, Flow Completeness, Complete path to each terminal state]
294
+ - [10, Branch Coverage, All decision-point branches covered]
249
295
 
250
296
  feature_dimensions:
251
- note: "*Dimension 8 applies when tests are AI-generated"
297
+ note: "*Dimension 8 applies when tests are AI-generated; †Dimensions 9/10 apply to multi-step workflows"
252
298
  columns: [Feature Type, Required Dimensions]
253
299
  rows:
254
300
  - [CRUD API, "1,2,3,4,6,7,8*"]
@@ -257,3 +303,4 @@ quick_reference:
257
303
  - [Validation, "1,2,3,6,8*"]
258
304
  - [Background Job, "1,3,5,8*"]
259
305
  - [External Integration, "1,3,7,8*"]
306
+ - [Workflow / Multi-step Process, "1,3,4,5,9†,10†,8*"]