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.
- package/bundled/ai/options/testing/integration-testing.ai.yaml +2 -2
- package/bundled/ai/options/testing/unit-testing.ai.yaml +2 -2
- package/bundled/ai/standards/adversarial-test.ai.yaml +277 -0
- package/bundled/ai/standards/audit-trail.ai.yaml +113 -0
- package/bundled/ai/standards/browser-compatibility-standards.ai.yaml +63 -0
- package/bundled/ai/standards/chaos-injection-tests.ai.yaml +91 -0
- package/bundled/ai/standards/container-image-standards.ai.yaml +88 -0
- package/bundled/ai/standards/container-security.ai.yaml +331 -0
- package/bundled/ai/standards/contract-testing-standards.ai.yaml +62 -0
- package/bundled/ai/standards/cost-budget-test.ai.yaml +96 -0
- package/bundled/ai/standards/cross-flow-regression.ai.yaml +61 -0
- package/bundled/ai/standards/data-contract.ai.yaml +110 -0
- package/bundled/ai/standards/data-migration-testing.ai.yaml +96 -0
- package/bundled/ai/standards/data-pipeline.ai.yaml +113 -0
- package/bundled/ai/standards/disaster-recovery-drill.ai.yaml +89 -0
- package/bundled/ai/standards/flaky-test-management.ai.yaml +89 -0
- package/bundled/ai/standards/flow-based-testing.ai.yaml +240 -0
- package/bundled/ai/standards/full-coverage-testing.ai.yaml +192 -0
- package/bundled/ai/standards/iac-design-principles.ai.yaml +83 -0
- package/bundled/ai/standards/incident-response.ai.yaml +107 -0
- package/bundled/ai/standards/license-compliance.ai.yaml +106 -0
- package/bundled/ai/standards/llm-output-validation.ai.yaml +269 -0
- package/bundled/ai/standards/mock-boundary.ai.yaml +250 -0
- package/bundled/ai/standards/mutation-testing.ai.yaml +192 -0
- package/bundled/ai/standards/pii-classification.ai.yaml +109 -0
- package/bundled/ai/standards/policy-as-code-testing.ai.yaml +227 -0
- package/bundled/ai/standards/prd-standards.ai.yaml +88 -0
- package/bundled/ai/standards/product-metrics-standards.ai.yaml +111 -0
- package/bundled/ai/standards/prompt-regression.ai.yaml +94 -0
- package/bundled/ai/standards/property-based-testing.ai.yaml +105 -0
- package/bundled/ai/standards/release-quality-manifest.ai.yaml +135 -0
- package/bundled/ai/standards/release-readiness-gate.ai.yaml +77 -0
- package/bundled/ai/standards/replay-test.ai.yaml +111 -0
- package/bundled/ai/standards/runbook.ai.yaml +104 -0
- package/bundled/ai/standards/sast-advanced.ai.yaml +135 -0
- package/bundled/ai/standards/schema-evolution.ai.yaml +111 -0
- package/bundled/ai/standards/secret-management-standards.ai.yaml +105 -0
- package/bundled/ai/standards/secure-op.ai.yaml +365 -0
- package/bundled/ai/standards/security-testing.ai.yaml +171 -0
- package/bundled/ai/standards/server-ops-security.ai.yaml +274 -0
- package/bundled/ai/standards/slo-sli.ai.yaml +97 -0
- package/bundled/ai/standards/smoke-test.ai.yaml +87 -0
- package/bundled/ai/standards/supply-chain-attestation.ai.yaml +109 -0
- package/bundled/ai/standards/test-completeness-dimensions.ai.yaml +52 -5
- package/bundled/ai/standards/testing.ai.yaml +20 -13
- package/bundled/ai/standards/user-story-mapping.ai.yaml +108 -0
- package/bundled/core/accessibility-standards.md +58 -0
- package/bundled/core/adversarial-test.md +212 -0
- package/bundled/core/branch-completion.md +4 -0
- package/bundled/core/browser-compatibility-standards.md +220 -0
- package/bundled/core/chaos-injection-tests.md +116 -0
- package/bundled/core/checkin-standards.md +1 -0
- package/bundled/core/container-security.md +521 -0
- package/bundled/core/contract-testing-standards.md +182 -0
- package/bundled/core/cost-budget-test.md +69 -0
- package/bundled/core/cross-flow-regression.md +190 -0
- package/bundled/core/data-migration-testing.md +110 -0
- package/bundled/core/disaster-recovery-drill.md +73 -0
- package/bundled/core/flaky-test-management.md +73 -0
- package/bundled/core/flow-based-testing.md +275 -0
- package/bundled/core/full-coverage-testing.md +183 -0
- package/bundled/core/llm-output-validation.md +178 -0
- package/bundled/core/mock-boundary.md +100 -0
- package/bundled/core/mutation-testing.md +97 -0
- package/bundled/core/performance-standards.md +65 -0
- package/bundled/core/policy-as-code-testing.md +188 -0
- package/bundled/core/prompt-regression.md +72 -0
- package/bundled/core/property-based-testing.md +73 -0
- package/bundled/core/release-quality-manifest.md +193 -0
- package/bundled/core/release-readiness-gate.md +184 -0
- package/bundled/core/replay-test.md +86 -0
- package/bundled/core/sast-advanced.md +300 -0
- package/bundled/core/secure-op.md +314 -0
- package/bundled/core/security-testing.md +87 -0
- package/bundled/core/server-ops-security.md +493 -0
- package/bundled/core/smoke-test.md +65 -0
- package/bundled/core/supply-chain-attestation.md +117 -0
- package/bundled/locales/zh-CN/CHANGELOG.md +3 -3
- package/bundled/locales/zh-CN/README.md +1 -1
- package/bundled/locales/zh-CN/skills/ai-instruction-standards/SKILL.md +5 -5
- package/bundled/locales/zh-TW/CHANGELOG.md +3 -3
- package/bundled/locales/zh-TW/README.md +1 -1
- package/bundled/locales/zh-TW/core/browser-compatibility-standards.md +11 -0
- package/bundled/locales/zh-TW/core/contract-testing-standards.md +11 -0
- package/bundled/locales/zh-TW/core/cross-flow-regression.md +11 -0
- package/bundled/locales/zh-TW/core/release-readiness-gate.md +11 -0
- package/bundled/locales/zh-TW/skills/ai-instruction-standards/SKILL.md +183 -79
- package/bundled/skills/README.md +4 -3
- package/bundled/skills/SKILL_NAMING.md +94 -0
- package/bundled/skills/ai-instruction-standards/SKILL.md +181 -88
- package/bundled/skills/atdd-assistant/SKILL.md +8 -0
- package/bundled/skills/bdd-assistant/SKILL.md +7 -0
- package/bundled/skills/checkin-assistant/SKILL.md +8 -0
- package/bundled/skills/code-review-assistant/SKILL.md +7 -0
- package/bundled/skills/journey-test-assistant/SKILL.md +203 -0
- package/bundled/skills/orchestrate/SKILL.md +167 -0
- package/bundled/skills/plan/SKILL.md +234 -0
- package/bundled/skills/pr-automation-assistant/SKILL.md +8 -0
- package/bundled/skills/push/SKILL.md +49 -2
- package/bundled/skills/{process-automation → skill-builder}/SKILL.md +1 -1
- package/bundled/skills/{forward-derivation → spec-derivation}/SKILL.md +1 -1
- package/bundled/skills/spec-driven-dev/SKILL.md +7 -0
- package/bundled/skills/sweep/SKILL.md +145 -0
- package/bundled/skills/tdd-assistant/SKILL.md +7 -0
- package/package.json +6 -6
- package/src/commands/check.js +43 -0
- package/src/commands/flow.js +8 -0
- package/src/commands/init.js +2 -1
- package/src/commands/start.js +14 -0
- package/src/commands/sweep.js +8 -0
- package/src/commands/update.js +10 -0
- package/src/commands/workflow.js +8 -0
- package/standards-registry.json +483 -5
- package/bundled/locales/zh-CN/skills/ac-coverage-assistant/SKILL.md +0 -190
- package/bundled/locales/zh-CN/skills/forward-derivation/SKILL.md +0 -71
- package/bundled/locales/zh-CN/skills/forward-derivation/guide.md +0 -130
- package/bundled/locales/zh-CN/skills/methodology-system/SKILL.md +0 -88
- package/bundled/locales/zh-CN/skills/methodology-system/create-methodology.md +0 -350
- package/bundled/locales/zh-CN/skills/methodology-system/guide.md +0 -131
- package/bundled/locales/zh-CN/skills/methodology-system/runtime.md +0 -279
- package/bundled/locales/zh-CN/skills/process-automation/SKILL.md +0 -143
- package/bundled/locales/zh-TW/skills/ac-coverage-assistant/SKILL.md +0 -195
- package/bundled/locales/zh-TW/skills/deploy-assistant/SKILL.md +0 -178
- package/bundled/locales/zh-TW/skills/forward-derivation/SKILL.md +0 -69
- package/bundled/locales/zh-TW/skills/forward-derivation/guide.md +0 -415
- package/bundled/locales/zh-TW/skills/methodology-system/SKILL.md +0 -86
- package/bundled/locales/zh-TW/skills/methodology-system/create-methodology.md +0 -350
- package/bundled/locales/zh-TW/skills/methodology-system/guide.md +0 -131
- package/bundled/locales/zh-TW/skills/methodology-system/runtime.md +0 -279
- package/bundled/locales/zh-TW/skills/process-automation/SKILL.md +0 -144
- /package/bundled/skills/{ac-coverage-assistant → ac-coverage}/SKILL.md +0 -0
- /package/bundled/skills/{methodology-system → dev-methodology}/SKILL.md +0 -0
- /package/bundled/skills/{methodology-system → dev-methodology}/create-methodology.md +0 -0
- /package/bundled/skills/{methodology-system → dev-methodology}/guide.md +0 -0
- /package/bundled/skills/{methodology-system → dev-methodology}/integrated-flow.md +0 -0
- /package/bundled/skills/{methodology-system → dev-methodology}/prerequisite-check.md +0 -0
- /package/bundled/skills/{methodology-system → dev-methodology}/runtime.md +0 -0
- /package/bundled/skills/{forward-derivation → spec-derivation}/guide.md +0 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Release Quality Manifest
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
A Release Quality Manifest (RQM) is a machine-readable document generated automatically by CI for every release. It aggregates the results of all quality gates into a single artifact that serves as the authoritative evidence of release readiness — both for internal go/no-go automation and for customer audits.
|
|
6
|
+
|
|
7
|
+
## Why a Manifest?
|
|
8
|
+
|
|
9
|
+
Without a manifest, quality evidence is scattered across CI logs, coverage HTML reports, SARIF files, and container scan summaries. When a customer asks "how was this release tested?", the answer is either "trust us" or a 45-minute manual aggregation exercise.
|
|
10
|
+
|
|
11
|
+
A Release Quality Manifest makes quality evidence:
|
|
12
|
+
- **Aggregated**: one file, all gates
|
|
13
|
+
- **Machine-readable**: downstream tooling can parse and enforce
|
|
14
|
+
- **Timestamped and commit-pinned**: tied to a specific release artifact
|
|
15
|
+
- **Customer-shareable**: ready to attach to a release package
|
|
16
|
+
|
|
17
|
+
## Schema
|
|
18
|
+
|
|
19
|
+
The RQM now covers **16 quality dimensions** matching `release-readiness-gate.md`. Automated gates appear here; human-verified gates appear in the Release Readiness Sign-off document.
|
|
20
|
+
|
|
21
|
+
```yaml
|
|
22
|
+
release: vibeops-commercial-1.2.0
|
|
23
|
+
generated_at: "2026-05-05T04:00:00Z"
|
|
24
|
+
commit: "abc1234"
|
|
25
|
+
gates:
|
|
26
|
+
# ── Automated quality gates ──────────────────────────────
|
|
27
|
+
unit_coverage:
|
|
28
|
+
actual: "73%"
|
|
29
|
+
target: "80%"
|
|
30
|
+
status: warn # within 10pp of target → warn, not fail
|
|
31
|
+
mutation_score:
|
|
32
|
+
actual: "62%"
|
|
33
|
+
target: "60%"
|
|
34
|
+
status: pass
|
|
35
|
+
sca_critical_cve:
|
|
36
|
+
actual: 0
|
|
37
|
+
target: 0
|
|
38
|
+
status: pass
|
|
39
|
+
sca_high_cve:
|
|
40
|
+
actual: 0
|
|
41
|
+
target: 0
|
|
42
|
+
status: pass
|
|
43
|
+
sast_high:
|
|
44
|
+
actual: 0
|
|
45
|
+
target: 0
|
|
46
|
+
status: pass
|
|
47
|
+
e2e_pass_rate:
|
|
48
|
+
actual: "96%"
|
|
49
|
+
target: "95%"
|
|
50
|
+
status: pass
|
|
51
|
+
container_cve_critical:
|
|
52
|
+
actual: 0
|
|
53
|
+
target: 0
|
|
54
|
+
status: pass
|
|
55
|
+
image_signed:
|
|
56
|
+
actual: true
|
|
57
|
+
target: true
|
|
58
|
+
status: pass
|
|
59
|
+
sbom_present:
|
|
60
|
+
actual: true
|
|
61
|
+
target: true
|
|
62
|
+
status: pass
|
|
63
|
+
# ── Extended dimensions (aligned with release-readiness-gate.md) ──
|
|
64
|
+
a11y_critical: # Dimension 3: axe-core critical violations
|
|
65
|
+
actual: 0
|
|
66
|
+
target: 0
|
|
67
|
+
status: pass
|
|
68
|
+
a11y_serious: # Dimension 3: axe-core serious violations
|
|
69
|
+
actual: 0
|
|
70
|
+
target: 0
|
|
71
|
+
status: pass
|
|
72
|
+
contract_drift: # Dimension 4: consumer contracts failing (n/a if no consumers)
|
|
73
|
+
actual: 0
|
|
74
|
+
target: 0
|
|
75
|
+
status: pass # or "n/a" if no API consumers
|
|
76
|
+
cross_flow_cuj_pass_rate: # Dimension 6: critical user journey pass rate
|
|
77
|
+
actual: "100%"
|
|
78
|
+
target: "95%"
|
|
79
|
+
status: pass
|
|
80
|
+
browser_tier1_pass_rate: # Dimension 9: Tier-1 browser matrix (n/a for non-frontend)
|
|
81
|
+
actual: "100%"
|
|
82
|
+
target: "100%"
|
|
83
|
+
status: pass # or "n/a" for CLI/backend
|
|
84
|
+
capacity_headroom_cpu_pct: # Dimension 10: CPU headroom at projected peak (n/a for small projects)
|
|
85
|
+
actual: "42%"
|
|
86
|
+
target: "30%"
|
|
87
|
+
status: pass # or "n/a" for small-scale projects
|
|
88
|
+
smoke_pass_rate: # Dimension 14: post-deploy smoke (populated after staging deploy)
|
|
89
|
+
actual: "100%"
|
|
90
|
+
target: "100%"
|
|
91
|
+
status: pass
|
|
92
|
+
flow_gate_report: # Dimension 16: Multi-Gate Flow verification
|
|
93
|
+
gate_0_complete: true # all flows with ≥3 steps have §2.4 + §9.4 filled
|
|
94
|
+
gate_1_pr_coverage: true # all PRs touching flows include terminal-state tests
|
|
95
|
+
gate_3_ci_pass: true # Decision Table CI all green; branch coverage ≥ 90%
|
|
96
|
+
gate_4_uat_signoff: true # UAT sign-off table signed
|
|
97
|
+
status: pass
|
|
98
|
+
overall: WARN # worst gate status across all dimensions (2 warns, no fails)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Status Semantics
|
|
102
|
+
|
|
103
|
+
| Status | Meaning | Action |
|
|
104
|
+
|--------|---------|--------|
|
|
105
|
+
| `pass` | Meets or exceeds target | None required |
|
|
106
|
+
| `warn` | Within acceptable deviation (see per-gate policy) | Document reason; no release block |
|
|
107
|
+
| `fail` | Below hard minimum | **Blocks release** |
|
|
108
|
+
|
|
109
|
+
### Per-Gate Hard Minimums
|
|
110
|
+
|
|
111
|
+
| Gate | Warn Band | Fail Threshold | Release Readiness Dimension |
|
|
112
|
+
|------|-----------|----------------|----------------------------|
|
|
113
|
+
| unit_coverage | target - 10pp to target | below target - 10pp | (core RQM) |
|
|
114
|
+
| mutation_score | target - 5pp to target | below target - 5pp | (core RQM) |
|
|
115
|
+
| sca_critical_cve | — | any critical CVE = fail | Dim 2 (Security) |
|
|
116
|
+
| container_cve_critical | — | any critical CVE = fail | Dim 2 (Security) |
|
|
117
|
+
| e2e_pass_rate | target - 3pp to target | below target - 3pp | (core RQM) |
|
|
118
|
+
| a11y_critical | — | > 0 = fail | Dim 3 (a11y) |
|
|
119
|
+
| a11y_serious | project threshold | project threshold + 1-2 | Dim 3 (a11y) |
|
|
120
|
+
| contract_drift | — | any red consumer contract = fail (if n/a: skip) | Dim 4 (Contract) |
|
|
121
|
+
| cross_flow_cuj_pass_rate | 90–95% | < 90% | Dim 6 (Cross-flow Regression) |
|
|
122
|
+
| browser_tier1_pass_rate | — | < 100% (if n/a: skip) | Dim 9 (Browser Compat) |
|
|
123
|
+
| capacity_headroom_cpu_pct | 20–30% | < 20% (if n/a: skip) | Dim 10 (Capacity) |
|
|
124
|
+
| smoke_pass_rate | — | any smoke failure = fail | Dim 14 (Smoke) |
|
|
125
|
+
| flow_gate_report | gate_3_ci_pass=false | gate_0_complete=false OR gate_4_uat_signoff=false | Dim 16 (Multi-Gate Flow) |
|
|
126
|
+
|
|
127
|
+
## Automated Generation
|
|
128
|
+
|
|
129
|
+
Generate the manifest in CI after all gate jobs complete:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
#!/usr/bin/env bash
|
|
133
|
+
# scripts/generate-quality-manifest.sh
|
|
134
|
+
set -euo pipefail
|
|
135
|
+
|
|
136
|
+
COVERAGE=$(node -e "
|
|
137
|
+
const r = JSON.parse(require('fs').readFileSync('coverage/coverage-summary.json'));
|
|
138
|
+
console.log(r.total.lines.pct.toFixed(1) + '%')
|
|
139
|
+
")
|
|
140
|
+
|
|
141
|
+
MUTATION=$(node -e "
|
|
142
|
+
const r = JSON.parse(require('fs').readFileSync('reports/mutation/mutation-testing-report.json'));
|
|
143
|
+
console.log(r.metrics.mutationScore.toFixed(1) + '%')
|
|
144
|
+
")
|
|
145
|
+
|
|
146
|
+
CRITICAL_CVE=$(jq '[.Results[]?.Vulnerabilities[]? | select(.Severity == "CRITICAL")] | length' trivy-report.json)
|
|
147
|
+
|
|
148
|
+
cat > quality-manifest.yaml <<YAML
|
|
149
|
+
release: ${RELEASE_TAG}
|
|
150
|
+
generated_at: "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
151
|
+
commit: "${GITHUB_SHA:-$(git rev-parse HEAD)}"
|
|
152
|
+
gates:
|
|
153
|
+
unit_coverage:
|
|
154
|
+
actual: "${COVERAGE}"
|
|
155
|
+
target: "80%"
|
|
156
|
+
status: $([ $(echo "$COVERAGE" | tr -d '%') -ge 80 ] && echo pass || echo warn)
|
|
157
|
+
sca_critical_cve:
|
|
158
|
+
actual: ${CRITICAL_CVE}
|
|
159
|
+
target: 0
|
|
160
|
+
status: $([ "$CRITICAL_CVE" -eq 0 ] && echo pass || echo fail)
|
|
161
|
+
overall: $(grep -q "fail" quality-manifest.yaml && echo FAIL || grep -q "warn" quality-manifest.yaml && echo WARN || echo PASS)
|
|
162
|
+
YAML
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Customer-Facing Summary
|
|
166
|
+
|
|
167
|
+
Generate a Markdown table alongside the YAML for inclusion in release notes:
|
|
168
|
+
|
|
169
|
+
```markdown
|
|
170
|
+
## Release Quality Gates — vibeops-commercial-1.2.0
|
|
171
|
+
|
|
172
|
+
| Gate | Actual | Target | Status |
|
|
173
|
+
|------|--------|--------|--------|
|
|
174
|
+
| Unit Test Coverage | 73% | 80% | ⚠️ WARN |
|
|
175
|
+
| Mutation Score | 62% | 60% | ✅ PASS |
|
|
176
|
+
| Critical CVEs | 0 | 0 | ✅ PASS |
|
|
177
|
+
...
|
|
178
|
+
| **Overall** | | | ⚠️ WARN |
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Anti-Patterns
|
|
182
|
+
|
|
183
|
+
- **Manually authoring the manifest** — defeats the purpose; must be generated from tool outputs
|
|
184
|
+
- **Using warn for critical security gates** — `sca_critical_cve` and `container_cve_critical` are binary
|
|
185
|
+
- **Generating the manifest before all gates have run** — values must reflect actual results, not estimates
|
|
186
|
+
- **Not attaching the manifest to the release artifact** — a manifest in git history is not accessible to customers
|
|
187
|
+
|
|
188
|
+
## See Also
|
|
189
|
+
|
|
190
|
+
- `verification-evidence.ai.yaml` — audit evidence principles
|
|
191
|
+
- `supply-chain-attestation.ai.yaml` — SBOM and provenance
|
|
192
|
+
- `testing.ai.yaml` — overall test strategy
|
|
193
|
+
- `deployment-standards.ai.yaml` — release gate integration
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Release Readiness Gate
|
|
2
|
+
|
|
3
|
+
> **Language**: English | [繁體中文](../locales/zh-TW/core/release-readiness-gate.md)
|
|
4
|
+
|
|
5
|
+
**Version**: 1.0.0
|
|
6
|
+
**Last Updated**: 2026-05-05
|
|
7
|
+
**Applicability**: All software projects preparing a production release
|
|
8
|
+
**Scope**: universal
|
|
9
|
+
**Industry Standards**: ISO/IEC 25010 (Product Quality), ISTQB Advanced Test Manager
|
|
10
|
+
**References**: `core/release-quality-manifest.md`, `core/flow-based-testing.md`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Purpose
|
|
15
|
+
|
|
16
|
+
This standard defines a **single, aggregated Release Readiness Gate** that unifies all quality dimensions into one explicit go/no-go decision before production deployment.
|
|
17
|
+
|
|
18
|
+
Without this gate, quality evidence is spread across 16+ separate standards. Teams pass individual checks but ship with unverified dimensions, because no one document says "you must pass *all of these* before release."
|
|
19
|
+
|
|
20
|
+
The Release Readiness Gate:
|
|
21
|
+
- **Aggregates** 16 quality dimensions into a tiered checklist
|
|
22
|
+
- **Connects** human sign-off (this document) to machine-readable evidence (`release-quality-manifest.md`)
|
|
23
|
+
- **Distinguishes** blocking criteria from advisory warnings
|
|
24
|
+
- **Scales** via Tier-1 / Tier-2 / Tier-3 classification to fit projects of different types and risk levels
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Relationship to Release Quality Manifest (RQM)
|
|
29
|
+
|
|
30
|
+
| Artifact | Format | Audience | Purpose |
|
|
31
|
+
|----------|--------|----------|---------|
|
|
32
|
+
| **Release Readiness Sign-off** (this document's template) | Markdown checklist | Humans (PM, QA, Eng Lead, Business) | Go/no-go decision, accountability, audit trail |
|
|
33
|
+
| **Release Quality Manifest** (`release-quality-manifest.md`) | YAML/JSON | CI, tooling, customers | Machine-readable aggregation, automated gate enforcement |
|
|
34
|
+
|
|
35
|
+
These two artifacts are generated **in parallel** for every release. The Sign-off covers human-verified dimensions; the RQM covers automated dimensions. Both must be `PASS` / `WARN` (never `FAIL`) before production deployment.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Tier Classification
|
|
40
|
+
|
|
41
|
+
| Tier | Requirement | Miss = ? | Who Applies |
|
|
42
|
+
|------|-------------|---------|-------------|
|
|
43
|
+
| **Tier-1** | Must pass; release blocked if `FAIL` | Hard block | All projects |
|
|
44
|
+
| **Tier-2** | Should pass; `WARN` documented with rationale; no block | Documented WARN | All projects |
|
|
45
|
+
| **Tier-3** | Applicable when feature set or domain requires it; `N/A` is valid | N/A accepted | Depends on project type |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 16-Dimension Release Readiness Matrix
|
|
50
|
+
|
|
51
|
+
| # | Dimension | Tier | Gate Type | Blocking Criterion | Evidence | Standard | Responsible |
|
|
52
|
+
|---|-----------|------|-----------|-------------------|----------|---------|-------------|
|
|
53
|
+
| 1 | **Performance / Load** | 2 | Automated | p95 latency regression > 10%; headroom < 20% | Load test report | `performance-standards.md` | Eng Lead + SRE |
|
|
54
|
+
| 2 | **Security** (SAST/DAST/SCA/secrets) | 1 | Automated | Any Critical/High CVE, SAST High unfixed, secret in diff | SARIF, Trivy, SBOM | `pipeline-security-gates.md` | SecEng / Eng Lead |
|
|
55
|
+
| 3 | **Accessibility (a11y)** | 2 | Automated + Manual | axe-core critical > 0; keyboard nav path broken | axe report, screen reader log | `accessibility-standards.md` §Release-Blocking Threshold | QA + UX |
|
|
56
|
+
| 4 | **API / Contract Testing** | 3 | Automated | Upstream consumer contract red; N-1 compat broken | Pact broker report | `contract-testing-standards.md` | API owner |
|
|
57
|
+
| 5 | **Database Migration** | 1 | Automated | up/rollback/idempotency test fails; data-preservation test fails | `data-migration-testing.md` gate results | `data-migration-testing.md` | DB Lead |
|
|
58
|
+
| 6 | **Cross-flow Regression** | 2 | Automated | Critical user journey pass rate < 95%; business-critical flow combo fails | Cross-flow regression report | `cross-flow-regression.md` | QA Lead |
|
|
59
|
+
| 7 | **Operational Readiness** | 1 | Manual | Runbook missing; alerting unconfigured; no rollback procedure | Runbook link, alert rule review | `runbook-standards.md`, `alerting-standards.md` | SRE / Ops |
|
|
60
|
+
| 8 | **Localization / i18n** | 2 | Automated | MISSING or MAJOR i18n gap in release (semver gap) | `check-translation-sync.sh` output | `translation-lifecycle-standards.md` | i18n Lead |
|
|
61
|
+
| 9 | **Browser / Device Compatibility** | 3 | Automated | Tier-1 browser/device pass rate < 100% | Playwright matrix report | `browser-compatibility-standards.md` | Frontend QA |
|
|
62
|
+
| 10 | **Capacity Sign-off** | 3 | Manual | Headroom < 30% at projected peak; no Eng+SRE sign-off | Capacity forecast + sign-off | `performance-standards.md` §Per-Release Capacity Sign-off | SRE + Eng Lead |
|
|
63
|
+
| 11 | **Compliance / Privacy** | 3 | Manual | GDPR/CCPA violation; audit log missing; retention policy broken | Privacy review checklist | `privacy-standards.md` | DPO / Legal |
|
|
64
|
+
| 12 | **Documentation Completeness** | 2 | Manual | CHANGELOG missing for release; customer-facing docs not updated | CHANGELOG diff, docs review | `changelog-standards.md`, `documentation-lifecycle.md` | Tech Writer / PM |
|
|
65
|
+
| 13 | **Rollback / Disaster Recovery** | 1 | Manual | No tested rollback procedure for this release; RTO > threshold | DR drill record; rollback script | `rollback-standards.md`, `disaster-recovery-drill.md` | SRE |
|
|
66
|
+
| 14 | **Production Smoke / Canary** | 1 | Automated | Post-deploy smoke fails; canary error rate > SLO | Smoke test results; canary dashboard | `smoke-test.md`, `cd-deployment-strategies.md` | SRE / DevOps |
|
|
67
|
+
| 15 | **Feature Flag Governance** | 2 | Manual | Default state not reviewed; kill-switch not tested | Flag audit checklist | `feature-flag-standards.md` | PM + Eng Lead |
|
|
68
|
+
| 16 | **Multi-Gate Flow Verification** | 2 | Automated + Manual | Gate 0 missing for any flow with ≥ 3 steps; Gate 3 CI fail; Gate 4 UAT sign-off missing | `flow_gate_report.json`; UAT sign-off table | `flow-based-testing.md` §Multi-Gate | QA Lead + Business |
|
|
69
|
+
|
|
70
|
+
> **Note on Tier-3**: Mark as `N/A` when not applicable (e.g., browser matrix for a CLI tool; contract testing for a standalone service with no API consumers). `N/A` requires a rationale comment in the sign-off.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Release Readiness Sign-off Template
|
|
75
|
+
|
|
76
|
+
> Copy this template for each release. File as `.release-readiness/<version>.md` in the repo root, or attach to the release artifact.
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
# Release Readiness Sign-off
|
|
80
|
+
|
|
81
|
+
**Release**: [tag/version]
|
|
82
|
+
**Date**: [YYYY-MM-DD]
|
|
83
|
+
**Environment**: Pre-Production → Production
|
|
84
|
+
**RQM Artifact**: [link or commit SHA]
|
|
85
|
+
|
|
86
|
+
## Tier-1 Gates (ALL must be PASS)
|
|
87
|
+
|
|
88
|
+
| # | Dimension | Status | Evidence | Sign-off |
|
|
89
|
+
|---|-----------|--------|----------|---------|
|
|
90
|
+
| 2 | Security (SAST/DAST/SCA) | PASS / FAIL | [link] | [name] |
|
|
91
|
+
| 5 | Database Migration | PASS / FAIL | [link] | [name] |
|
|
92
|
+
| 7 | Operational Readiness | PASS / FAIL | [link] | [name] |
|
|
93
|
+
| 13 | Rollback / DR | PASS / FAIL | [link] | [name] |
|
|
94
|
+
| 14 | Production Smoke/Canary | PASS / FAIL | [link] | [name] |
|
|
95
|
+
|
|
96
|
+
## Tier-2 Gates (WARN must have rationale)
|
|
97
|
+
|
|
98
|
+
| # | Dimension | Status | Evidence | Rationale (if WARN) | Sign-off |
|
|
99
|
+
|---|-----------|--------|----------|---------------------|---------|
|
|
100
|
+
| 1 | Performance / Load | PASS / WARN / FAIL | [link] | | [name] |
|
|
101
|
+
| 3 | Accessibility | PASS / WARN / FAIL | [link] | | [name] |
|
|
102
|
+
| 6 | Cross-flow Regression | PASS / WARN / FAIL | [link] | | [name] |
|
|
103
|
+
| 8 | Localization / i18n | PASS / WARN / FAIL | [link] | | [name] |
|
|
104
|
+
| 12 | Documentation | PASS / WARN / FAIL | [link] | | [name] |
|
|
105
|
+
| 15 | Feature Flag Governance | PASS / WARN / FAIL | [link] | | [name] |
|
|
106
|
+
| 16 | Multi-Gate Flow Verification | PASS / WARN / FAIL | [link] | | [name] |
|
|
107
|
+
|
|
108
|
+
## Tier-3 Gates (N/A with rationale allowed)
|
|
109
|
+
|
|
110
|
+
| # | Dimension | Status | Evidence | Rationale (if N/A) | Sign-off |
|
|
111
|
+
|---|-----------|--------|----------|---------------------|---------|
|
|
112
|
+
| 4 | API / Contract Testing | PASS / WARN / N/A | [link] | | [name] |
|
|
113
|
+
| 9 | Browser / Device Compat | PASS / WARN / N/A | [link] | | [name] |
|
|
114
|
+
| 10 | Capacity Sign-off | PASS / WARN / N/A | [link] | | [name] |
|
|
115
|
+
| 11 | Compliance / Privacy | PASS / WARN / N/A | [link] | | [name] |
|
|
116
|
+
|
|
117
|
+
## Overall Decision
|
|
118
|
+
|
|
119
|
+
- [ ] **GO** — All Tier-1 PASS; all WARN documented; all N/A have rationale
|
|
120
|
+
- [ ] **NO-GO** — One or more Tier-1 FAIL, or undocumented WARN
|
|
121
|
+
|
|
122
|
+
**Decision made by**: [name, role]
|
|
123
|
+
**Date**: [YYYY-MM-DD]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Status Semantics
|
|
129
|
+
|
|
130
|
+
| Status | Meaning | Release Impact |
|
|
131
|
+
|--------|---------|----------------|
|
|
132
|
+
| `PASS` | Meets or exceeds all criteria | None |
|
|
133
|
+
| `WARN` | Below target but above hard minimum; rationale documented | Allowed; logged |
|
|
134
|
+
| `FAIL` | Below hard minimum; unresolved | **Blocks release** |
|
|
135
|
+
| `N/A` | Dimension not applicable to this project/release; rationale documented | Allowed |
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## When to Create the Sign-off
|
|
140
|
+
|
|
141
|
+
| Milestone | Action |
|
|
142
|
+
|-----------|--------|
|
|
143
|
+
| Release candidate tagged | Create `.release-readiness/<version>.md` from template; fill evidence links |
|
|
144
|
+
| Pre-UAT deployment | Gate 3 CI results populated; Tier-1 automated gates verified |
|
|
145
|
+
| UAT sign-off (Gate 4) | Tier-3 manual gates completed; Multi-Gate Flow row finalized |
|
|
146
|
+
| Production deployment decision | Overall GO/NO-GO decision signed by release owner |
|
|
147
|
+
|
|
148
|
+
The sign-off is **not** an afterthought — Gate 0 (PRD completeness) and Gate 1 (PR-level tests) must be satisfied long before the sign-off document is created. The sign-off aggregates evidence that was being collected throughout the release cycle.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Anti-Patterns
|
|
153
|
+
|
|
154
|
+
- **Creating the sign-off the day of deployment** — evidence should be collected incrementally throughout the release cycle
|
|
155
|
+
- **Marking WARN without rationale** — WARN without documented reason is functionally equivalent to ignoring the gate
|
|
156
|
+
- **Skipping Tier-3 entirely without N/A rationale** — if browser testing is omitted for a web app, that must be explicitly justified
|
|
157
|
+
- **Treating the Sign-off as a rubber stamp** — every row requires a named sign-off owner; anonymous collective ownership means no real accountability
|
|
158
|
+
- **Using a shared sign-off for multiple releases** — one sign-off per release tag; do not reuse across versions
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## See Also
|
|
163
|
+
|
|
164
|
+
- `release-quality-manifest.md` — machine-readable RQM (the automated counterpart to this sign-off)
|
|
165
|
+
- `flow-based-testing.md` — Multi-Gate Flow Model (Dimension 16)
|
|
166
|
+
- `branch-completion.md` — branch-level gate (prerequisite; not equivalent to release readiness)
|
|
167
|
+
- `verification-evidence.md` — evidence standards (all evidence links must meet this standard)
|
|
168
|
+
- `deployment-standards.md` — post-deploy gate integration
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Version History
|
|
173
|
+
|
|
174
|
+
| Version | Date | Changes |
|
|
175
|
+
|---------|------|---------|
|
|
176
|
+
| 1.0.0 | 2026-05-05 | Initial release: 16-dimension matrix, tiered sign-off template, RQM integration |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## License
|
|
181
|
+
|
|
182
|
+
This standard is released under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
|
|
183
|
+
|
|
184
|
+
**Source**: [universal-dev-standards](https://github.com/AsiaOstrich/universal-dev-standards)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Replay Test Standards
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
AI agent systems interact with users through complex multi-step pipelines. When a customer reports unexpected behaviour, reproducing the exact failure is often difficult — the model output may be non-deterministic, the environment may have changed, or the exact inputs may be unclear. Golden fixture replay solves this by serialising the exact inputs and expected outputs at time of discovery, enabling deterministic regression tests.
|
|
6
|
+
|
|
7
|
+
## Fixture Format
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"meta": {
|
|
12
|
+
"recorded": "2026-05-05",
|
|
13
|
+
"source": "customer-report | ci-regression | red-team | incident",
|
|
14
|
+
"description": "Human-readable description of what this tests"
|
|
15
|
+
},
|
|
16
|
+
"input": { /* exact component input */ },
|
|
17
|
+
"expected": { /* expected output fields to assert */ }
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Fixture Naming
|
|
22
|
+
|
|
23
|
+
`<component>-<outcome>-<description>.json`
|
|
24
|
+
|
|
25
|
+
| Good | Bad |
|
|
26
|
+
|------|-----|
|
|
27
|
+
| `guardian-deny-prod-drop-table.json` | `test1.json` |
|
|
28
|
+
| `guardian-allow-dev-npm-test.json` | `fixture.json` |
|
|
29
|
+
| `guardian-hitl-prod-irreversible.json` | `scenario_3.json` |
|
|
30
|
+
|
|
31
|
+
## Replay Test Implementation (Vitest)
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
35
|
+
import { readdirSync, readFileSync } from "fs"
|
|
36
|
+
import { join } from "path"
|
|
37
|
+
import { describe, it, expect } from "vitest"
|
|
38
|
+
import { scoreReviewable } from "../scoring/risk-engine.js"
|
|
39
|
+
|
|
40
|
+
const FIXTURES_DIR = join(__dirname, "..", "__fixtures__")
|
|
41
|
+
|
|
42
|
+
interface ReplayFixture {
|
|
43
|
+
meta: { recorded: string; source: string; description: string }
|
|
44
|
+
input: Parameters<typeof scoreReviewable>[0]
|
|
45
|
+
expected: { decision: string }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function deriveDecision(score: number): string {
|
|
49
|
+
if (score >= 76) return "DENY"
|
|
50
|
+
if (score >= 51) return "REQUIRE_HITL"
|
|
51
|
+
return "ALLOW"
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
describe("Guardian replay fixtures", () => {
|
|
55
|
+
const fixtures = readdirSync(FIXTURES_DIR)
|
|
56
|
+
.filter(f => f.endsWith(".json"))
|
|
57
|
+
.map(f => ({
|
|
58
|
+
name: f,
|
|
59
|
+
fixture: JSON.parse(readFileSync(join(FIXTURES_DIR, f), "utf-8")) as ReplayFixture,
|
|
60
|
+
}))
|
|
61
|
+
|
|
62
|
+
for (const { name, fixture } of fixtures) {
|
|
63
|
+
it(`[${fixture.meta.source}] ${fixture.meta.description}`, () => {
|
|
64
|
+
const result = scoreReviewable(fixture.input)
|
|
65
|
+
const decision = deriveDecision(result.score)
|
|
66
|
+
expect(decision).toBe(fixture.expected.decision)
|
|
67
|
+
})
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Bug Regression Workflow
|
|
73
|
+
|
|
74
|
+
1. Customer reports unexpected Guardian verdict
|
|
75
|
+
2. Capture the exact `Reviewable` input (from audit logs)
|
|
76
|
+
3. Create fixture file: `guardian-<outcome>-<description>.json`
|
|
77
|
+
4. Reproduce failure locally (test should fail)
|
|
78
|
+
5. Fix the bug
|
|
79
|
+
6. Confirm test passes
|
|
80
|
+
7. The fixture now permanently prevents regression
|
|
81
|
+
|
|
82
|
+
## Related Standards
|
|
83
|
+
|
|
84
|
+
- [Adversarial Test Standards](adversarial-test.md) — red-team corpus
|
|
85
|
+
- [Verification Evidence Standards](verification-evidence.md) — AC traceability
|
|
86
|
+
- [Testing Standards](testing.md) — overall test pyramid
|