universal-dev-standards 5.5.0 → 5.7.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/agent-communication-protocol.ai.yaml +8 -9
- package/bundled/ai/standards/agent-dispatch.ai.yaml +8 -9
- package/bundled/ai/standards/branch-completion.ai.yaml +8 -10
- package/bundled/ai/standards/browser-compatibility-standards.ai.yaml +63 -0
- package/bundled/ai/standards/capability-declaration.ai.yaml +4 -4
- package/bundled/ai/standards/change-batching-standards.ai.yaml +8 -10
- package/bundled/ai/standards/circuit-breaker.ai.yaml +7 -7
- package/bundled/ai/standards/contract-testing-standards.ai.yaml +62 -0
- package/bundled/ai/standards/cross-flow-regression.ai.yaml +61 -0
- package/bundled/ai/standards/disaster-recovery-drill.ai.yaml +1 -1
- package/bundled/ai/standards/dual-phase-output.ai.yaml +3 -3
- package/bundled/ai/standards/execution-history.ai.yaml +8 -10
- package/bundled/ai/standards/failure-source-taxonomy.ai.yaml +8 -10
- package/bundled/ai/standards/full-coverage-testing.ai.yaml +192 -0
- package/bundled/ai/standards/git-worktree.ai.yaml +1 -1
- package/bundled/ai/standards/governance-layer.ai.yaml +114 -0
- package/bundled/ai/standards/mock-boundary.ai.yaml +1 -1
- package/bundled/ai/standards/model-selection.ai.yaml +1 -1
- package/bundled/ai/standards/packaging-standards.ai.yaml +8 -8
- package/bundled/ai/standards/pipeline-integration-standards.ai.yaml +8 -9
- package/bundled/ai/standards/pipeline-security-gates.ai.yaml +4 -0
- package/bundled/ai/standards/recovery-recipe-registry.ai.yaml +6 -10
- package/bundled/ai/standards/release-readiness-gate.ai.yaml +77 -0
- package/bundled/ai/standards/security-decision.ai.yaml +3 -3
- package/bundled/ai/standards/server-ops-security.ai.yaml +1 -1
- package/bundled/ai/standards/standard-admission-criteria.ai.yaml +1 -1
- package/bundled/ai/standards/standard-lifecycle-management.ai.yaml +1 -1
- package/bundled/ai/standards/supply-chain-attestation.ai.yaml +1 -1
- package/bundled/ai/standards/testing.ai.yaml +20 -13
- package/bundled/ai/standards/token-budget.ai.yaml +3 -3
- package/bundled/ai/standards/workflow-enforcement.ai.yaml +8 -11
- package/bundled/ai/standards/workflow-state-protocol.ai.yaml +8 -10
- package/bundled/core/accessibility-standards.md +58 -0
- package/bundled/core/adversarial-test.md +1 -1
- package/bundled/core/agent-behavior-discipline.md +4 -4
- package/bundled/core/agent-communication-protocol.md +5 -5
- package/bundled/core/branch-completion.md +4 -0
- package/bundled/core/browser-compatibility-standards.md +220 -0
- package/bundled/core/checkin-standards.md +1 -0
- package/bundled/core/circuit-breaker.md +4 -4
- package/bundled/core/container-security.md +8 -8
- package/bundled/core/contract-testing-standards.md +182 -0
- package/bundled/core/cross-flow-regression.md +190 -0
- package/bundled/core/disaster-recovery-drill.md +3 -3
- package/bundled/core/dual-phase-output.md +1 -1
- package/bundled/core/failure-source-taxonomy.md +3 -3
- package/bundled/core/flow-based-testing.md +135 -2
- package/bundled/core/full-coverage-testing.md +183 -0
- package/bundled/core/git-worktree.md +1 -1
- package/bundled/core/governance-layer.md +151 -0
- package/bundled/core/llm-output-validation.md +2 -2
- package/bundled/core/mock-boundary.md +1 -1
- package/bundled/core/packaging-standards.md +14 -14
- package/bundled/core/performance-standards.md +65 -0
- package/bundled/core/policy-as-code-testing.md +9 -9
- package/bundled/core/recovery-recipe-registry.md +2 -2
- package/bundled/core/release-quality-manifest.md +58 -12
- package/bundled/core/release-readiness-gate.md +184 -0
- package/bundled/core/sast-advanced.md +5 -5
- package/bundled/core/secure-op.md +5 -5
- package/bundled/core/security-decision.md +1 -1
- package/bundled/core/server-ops-security.md +15 -15
- package/bundled/core/smoke-test.md +1 -1
- package/bundled/core/standard-admission-criteria.md +1 -1
- package/bundled/core/standard-lifecycle-management.md +1 -1
- package/bundled/core/supply-chain-attestation.md +4 -4
- package/bundled/core/token-budget.md +3 -3
- package/bundled/locales/zh-CN/CHANGELOG.md +51 -4
- package/bundled/locales/zh-CN/README.md +11 -27
- package/bundled/locales/zh-CN/core/agent-communication-protocol.md +5 -5
- package/bundled/locales/zh-CN/core/circuit-breaker.md +1 -1
- package/bundled/locales/zh-CN/core/git-worktree.md +1 -1
- package/bundled/locales/zh-CN/core/packaging-standards.md +14 -14
- package/bundled/locales/zh-CN/core/recovery-recipe-registry.md +6 -9
- package/bundled/locales/zh-CN/core/standard-admission-criteria.md +1 -1
- package/bundled/locales/zh-CN/core/standard-lifecycle-management.md +1 -1
- package/bundled/locales/zh-CN/core/token-budget.md +1 -1
- package/bundled/locales/zh-TW/CHANGELOG.md +51 -4
- package/bundled/locales/zh-TW/README.md +11 -27
- package/bundled/locales/zh-TW/core/agent-communication-protocol.md +5 -5
- package/bundled/locales/zh-TW/core/browser-compatibility-standards.md +11 -0
- package/bundled/locales/zh-TW/core/capability-declaration.md +4 -4
- package/bundled/locales/zh-TW/core/circuit-breaker.md +7 -7
- 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/dual-phase-output.md +3 -3
- package/bundled/locales/zh-TW/core/failure-source-taxonomy.md +7 -9
- package/bundled/locales/zh-TW/core/governance-layer.md +159 -0
- package/bundled/locales/zh-TW/core/packaging-standards.md +14 -14
- package/bundled/locales/zh-TW/core/recovery-recipe-registry.md +6 -9
- package/bundled/locales/zh-TW/core/release-readiness-gate.md +11 -0
- package/bundled/locales/zh-TW/core/security-decision.md +3 -3
- package/bundled/locales/zh-TW/core/standard-admission-criteria.md +1 -1
- package/bundled/locales/zh-TW/core/standard-lifecycle-management.md +1 -1
- package/bundled/locales/zh-TW/core/token-budget.md +3 -3
- package/bundled/skills/README.md +23 -0
- package/bundled/skills/atdd-assistant/SKILL.md +4 -5
- package/bundled/skills/bdd-assistant/SKILL.md +4 -5
- package/bundled/skills/checkin-assistant/SKILL.md +4 -6
- package/bundled/skills/code-review-assistant/SKILL.md +4 -5
- package/bundled/skills/commands/observability.md +42 -0
- package/bundled/skills/commands/runbook.md +44 -0
- package/bundled/skills/commands/slo.md +45 -0
- package/bundled/skills/journey-test-assistant/SKILL.md +1 -1
- package/bundled/skills/orchestrate/SKILL.md +1 -1
- package/bundled/skills/plan/SKILL.md +1 -1
- package/bundled/skills/pr-automation-assistant/SKILL.md +4 -5
- package/bundled/skills/push/SKILL.md +1 -1
- package/bundled/skills/spec-driven-dev/SKILL.md +4 -5
- package/bundled/skills/sweep/SKILL.md +3 -3
- package/bundled/skills/tdd-assistant/SKILL.md +4 -5
- package/package.json +6 -6
- package/src/commands/check.js +43 -0
- package/src/commands/flow.js +7 -5
- package/src/commands/init.js +2 -1
- package/src/commands/start.js +7 -6
- package/src/commands/sweep.js +7 -6
- package/src/commands/update.js +10 -0
- package/src/commands/workflow.js +7 -6
- package/src/core/agent-communication-protocol.js +10 -3
- package/standards-registry.json +107 -51
|
@@ -16,11 +16,14 @@ A Release Quality Manifest makes quality evidence:
|
|
|
16
16
|
|
|
17
17
|
## Schema
|
|
18
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
|
+
|
|
19
21
|
```yaml
|
|
20
|
-
release:
|
|
22
|
+
release: app-commercial-1.2.0
|
|
21
23
|
generated_at: "2026-05-05T04:00:00Z"
|
|
22
24
|
commit: "abc1234"
|
|
23
25
|
gates:
|
|
26
|
+
# ── Automated quality gates ──────────────────────────────
|
|
24
27
|
unit_coverage:
|
|
25
28
|
actual: "73%"
|
|
26
29
|
target: "80%"
|
|
@@ -57,7 +60,42 @@ gates:
|
|
|
57
60
|
actual: true
|
|
58
61
|
target: true
|
|
59
62
|
status: pass
|
|
60
|
-
|
|
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)
|
|
61
99
|
```
|
|
62
100
|
|
|
63
101
|
## Status Semantics
|
|
@@ -68,15 +106,23 @@ overall: WARN # worst gate status (2 warns, no fails)
|
|
|
68
106
|
| `warn` | Within acceptable deviation (see per-gate policy) | Document reason; no release block |
|
|
69
107
|
| `fail` | Below hard minimum | **Blocks release** |
|
|
70
108
|
|
|
71
|
-
### Per-Gate Hard Minimums
|
|
72
|
-
|
|
73
|
-
| Gate | Warn Band | Fail Threshold |
|
|
74
|
-
|
|
75
|
-
| unit_coverage | target - 10pp to target | below target - 10pp |
|
|
76
|
-
| mutation_score | target - 5pp to target | below target - 5pp |
|
|
77
|
-
| sca_critical_cve | — | any critical CVE = fail |
|
|
78
|
-
| container_cve_critical | — | any critical CVE = fail |
|
|
79
|
-
| e2e_pass_rate | target - 3pp to target | below target - 3pp |
|
|
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) |
|
|
80
126
|
|
|
81
127
|
## Automated Generation
|
|
82
128
|
|
|
@@ -121,7 +167,7 @@ YAML
|
|
|
121
167
|
Generate a Markdown table alongside the YAML for inclusion in release notes:
|
|
122
168
|
|
|
123
169
|
```markdown
|
|
124
|
-
## Release Quality Gates —
|
|
170
|
+
## Release Quality Gates — app-commercial-1.2.0
|
|
125
171
|
|
|
126
172
|
| Gate | Actual | Target | Status |
|
|
127
173
|
|------|--------|--------|--------|
|
|
@@ -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)
|
|
@@ -141,7 +141,7 @@ sast:
|
|
|
141
141
|
### `.gitleaks.toml` Configuration Example
|
|
142
142
|
|
|
143
143
|
```toml
|
|
144
|
-
title = "
|
|
144
|
+
title = "Gitleaks Configuration (example)"
|
|
145
145
|
version = "8"
|
|
146
146
|
|
|
147
147
|
[extend]
|
|
@@ -149,11 +149,11 @@ version = "8"
|
|
|
149
149
|
useDefault = true
|
|
150
150
|
|
|
151
151
|
[[rules]]
|
|
152
|
-
id = "
|
|
153
|
-
description = "
|
|
154
|
-
regex = '''
|
|
152
|
+
id = "app-license-key"
|
|
153
|
+
description = "App license key"
|
|
154
|
+
regex = '''app[_\-]?license[_\-]?key\s*[:=]\s*["']?([A-Za-z0-9\-]{32,})["']?'''
|
|
155
155
|
severity = "CRITICAL"
|
|
156
|
-
tags = ["license", "
|
|
156
|
+
tags = ["license", "app"]
|
|
157
157
|
|
|
158
158
|
[[allowlist.commits]]
|
|
159
159
|
# Example: allow a specific commit hash that was remediated
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
**Secure-Op** 是針對 AI Agent 系統的安全操作方法論,定義 AI Agent 在執行高風險操作時必須遵循的六大安全支柱。
|
|
14
14
|
|
|
15
|
-
本標準源自
|
|
15
|
+
本標準源自 External Guardian OPA Sidecar reference implementation (XSPEC-146 from an external project)的實作經驗,並沉澱為通用 UDS 標準,供任何採用 UDS 的 AI Agent 系統套用。
|
|
16
16
|
|
|
17
17
|
### 核心理念
|
|
18
18
|
|
|
@@ -214,9 +214,9 @@ AI Agent 系統必須防護 Prompt Injection 攻擊,防止惡意輸入繞過
|
|
|
214
214
|
|
|
215
215
|
## 實作參考
|
|
216
216
|
|
|
217
|
-
###
|
|
217
|
+
### External Guardian (reference implementation)(TypeScript 參考實作)
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
External Guardian OPA Sidecar reference implementation (XSPEC-146 from an external project)是 Secure-Op 的完整 TypeScript 參考實作,包含:
|
|
220
220
|
|
|
221
221
|
- **GuardianService**:主要 Veto-based 決策管線
|
|
222
222
|
- **SobrScorer**:SOBR 四維風險評分
|
|
@@ -224,7 +224,7 @@ VibeOps Guardian OPA Sidecar(XSPEC-146)是 Secure-Op 的完整 TypeScript
|
|
|
224
224
|
- **HitlNotifier**:Webhook Adapter(支援 Slack/Teams)
|
|
225
225
|
- **PromptInjectionDetector**:正則表達式 + 模式比對
|
|
226
226
|
|
|
227
|
-
>
|
|
227
|
+
> 路徑:external Guardian implementation (separately licensed)
|
|
228
228
|
|
|
229
229
|
### 最小實作清單
|
|
230
230
|
|
|
@@ -298,7 +298,7 @@ Secure-Op 標準分為三個實作等級(Priority Levels):
|
|
|
298
298
|
|
|
299
299
|
### 對於生產環境 AI Agent 系統
|
|
300
300
|
|
|
301
|
-
完整實作六大支柱,使用
|
|
301
|
+
完整實作六大支柱,使用 External Guardian (reference implementation) 作為參考或直接引用。
|
|
302
302
|
|
|
303
303
|
### 對於法規要求環境(金融、醫療、政府)
|
|
304
304
|
|
|
@@ -30,7 +30,7 @@ In non-interactive (CI/CD) environments, `ask` is treated as `deny` — there is
|
|
|
30
30
|
|
|
31
31
|
## projectSettings Trust Radius
|
|
32
32
|
|
|
33
|
-
Configuration from `projectSettings` (`.
|
|
33
|
+
Configuration from `projectSettings` (`.adoption/` style directories) is excluded from security-sensitive operations to prevent malicious repository injection:
|
|
34
34
|
|
|
35
35
|
**Blocked operations from projectSettings**:
|
|
36
36
|
- Setting `requiresUserConfirmation: false`
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
### 為什麼 AI 自主運維需要伺服器操作安全?
|
|
13
13
|
|
|
14
|
-
AI 自主運維系統(如
|
|
14
|
+
AI 自主運維系統(如 AI Agent / pipeline runtime)在生產環境中以自動化方式執行高權限操作——部署服務、管理容器、調用外部 API、存取資料庫。這些能力若缺乏適當的基礎設施安全防護,將帶來遠超傳統 Web 應用的風險:
|
|
15
15
|
|
|
16
16
|
- **攻擊面擴大**:AI Agent 持續運行,攻擊者只需一個進入點即可橫向移動
|
|
17
17
|
- **自動化即武器**:被入侵的 AI Agent 可自動執行大規模破壞(刪除資料、外洩機密)
|
|
@@ -38,7 +38,7 @@ PubkeyAuthentication yes
|
|
|
38
38
|
Port 2222 # 改為非預設 Port
|
|
39
39
|
MaxAuthTries 3
|
|
40
40
|
LoginGraceTime 30
|
|
41
|
-
AllowUsers deploy
|
|
41
|
+
AllowUsers deploy ai-agent # 明確白名單
|
|
42
42
|
ClientAliveInterval 300
|
|
43
43
|
ClientAliveCountMax 2
|
|
44
44
|
```
|
|
@@ -159,21 +159,21 @@ sudo lynis audit system
|
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
161
|
# 建立無 shell 的服務帳號
|
|
162
|
-
sudo useradd -r -s /sbin/nologin -d /opt/
|
|
163
|
-
sudo mkdir -p /opt/
|
|
164
|
-
sudo chown
|
|
165
|
-
sudo chmod 750 /opt/
|
|
162
|
+
sudo useradd -r -s /sbin/nologin -d /opt/ai-agent ai-agent
|
|
163
|
+
sudo mkdir -p /opt/ai-agent
|
|
164
|
+
sudo chown ai-agent:ai-agent /opt/ai-agent
|
|
165
|
+
sudo chmod 750 /opt/ai-agent
|
|
166
166
|
|
|
167
167
|
# 驗證:不可切換到此帳號
|
|
168
|
-
sudo -u
|
|
168
|
+
sudo -u ai-agent /bin/bash # 應拒絕
|
|
169
169
|
```
|
|
170
170
|
|
|
171
171
|
#### sudo 設定(最小授權)
|
|
172
172
|
|
|
173
|
-
`/etc/sudoers.d/
|
|
173
|
+
`/etc/sudoers.d/ai-agent`:
|
|
174
174
|
```
|
|
175
|
-
# 允許
|
|
176
|
-
|
|
175
|
+
# 允許 ai-agent 重啟特定服務(明確命令)
|
|
176
|
+
ai-agent ALL=(ALL) NOPASSWD: /bin/systemctl restart ai-agent-agent
|
|
177
177
|
# 禁止 NOPASSWD ALL 寫法
|
|
178
178
|
```
|
|
179
179
|
|
|
@@ -357,7 +357,7 @@ Load Balancer / API Gateway(唯一對外入口)
|
|
|
357
357
|
Internal VPC / Overlay Network
|
|
358
358
|
│
|
|
359
359
|
┌──────────────────────────────────────┐
|
|
360
|
-
│
|
|
360
|
+
│ AI Agent │ Database │ Monitoring │
|
|
361
361
|
│ (port: 3000) │ (port: 5432)│ (port: 9090) │
|
|
362
362
|
└──────────────────────────────────────┘
|
|
363
363
|
所有節點均不直接對外
|
|
@@ -365,9 +365,9 @@ Internal VPC / Overlay Network
|
|
|
365
365
|
|
|
366
366
|
#### AI Agent 出站白名單設定
|
|
367
367
|
|
|
368
|
-
`/etc/
|
|
368
|
+
`/etc/ai-agent/outbound-allowlist.conf`(範例):
|
|
369
369
|
```
|
|
370
|
-
#
|
|
370
|
+
# AI Agent 出站流量白名單
|
|
371
371
|
ALLOW api.openai.com:443 # OpenAI API
|
|
372
372
|
ALLOW registry.npmjs.org:443 # npm registry
|
|
373
373
|
ALLOW api.github.com:443 # GitHub API
|
|
@@ -425,7 +425,7 @@ Guardian OPA Sidecar(XSPEC-146/147)作為 AI Agent 的決策閘道,其所
|
|
|
425
425
|
|
|
426
426
|
| 服務 | Unix 帳號 | Shell | Sudo | 說明 |
|
|
427
427
|
|------|----------|-------|------|------|
|
|
428
|
-
|
|
|
428
|
+
| AI Agent | `ai-agent` | /sbin/nologin | 限定指令 | 主要 AI 執行帳號 |
|
|
429
429
|
| Guardian OPA | `guardian` | /sbin/nologin | 無 | OPA 決策引擎 |
|
|
430
430
|
| Prometheus | `prometheus` | /sbin/nologin | 無 | 監控收集 |
|
|
431
431
|
| 部署腳本 | `deployer` | /bin/bash | 限定指令 | CI/CD 用途 |
|
|
@@ -437,7 +437,7 @@ Guardian OPA Sidecar(XSPEC-146/147)作為 AI Agent 的決策閘道,其所
|
|
|
437
437
|
```
|
|
438
438
|
端點: api.openai.com:443
|
|
439
439
|
用途: 大型語言模型 API 呼叫
|
|
440
|
-
負責人:
|
|
440
|
+
負責人: AI 平台維運團隊
|
|
441
441
|
最後審查: 2026-05-04
|
|
442
442
|
```
|
|
443
443
|
|
|
@@ -59,7 +59,7 @@ Deprecated ──(migration done)───→ Archived
|
|
|
59
59
|
|
|
60
60
|
## Usage Examples
|
|
61
61
|
|
|
62
|
-
- **Scenario 1 — Trial → Active**:`retry-standards` 處於 trial。2026-08-01 審視發現
|
|
62
|
+
- **Scenario 1 — Trial → Active**:`retry-standards` 處於 trial。2026-08-01 審視發現 Fix Loop(採用層) 和 Builder Agent (採用層) 均採用且無重大缺陷 → 轉 Active,`since=2026-08-01`,移除 `expires`
|
|
63
63
|
- **Scenario 2 — Trial 逾期自動 Archived**:某標準 trial 期限 2026-10-17 到期未通過驗證 → 狀態轉 Archived,記錄原因
|
|
64
64
|
- **Scenario 3 — Deprecated 帶遷移**:`legacy-retry-logic` 被 `retry-standards` 取代 → `status=deprecated, supersedes=retry-standards, migration_guide=docs/migrations/retry-v1-to-v2.md`;Skill 使用時顯示警告
|
|
65
65
|
|
|
@@ -48,12 +48,12 @@ jq '.components[] | select(.licenses[].license.id | test("GPL"))' sbom.cdx.json
|
|
|
48
48
|
```yaml
|
|
49
49
|
- name: Generate SLSA L1 provenance
|
|
50
50
|
run: |
|
|
51
|
-
IMAGE_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "
|
|
51
|
+
IMAGE_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "your-app:commercial-${VERSION}" 2>/dev/null || echo "N/A")
|
|
52
52
|
cat > provenance.json << PROVEOF
|
|
53
53
|
{
|
|
54
54
|
"_type": "https://in-toto.io/Statement/v0.1",
|
|
55
55
|
"predicateType": "https://slsa.dev/provenance/v0.2",
|
|
56
|
-
"subject": [{"name": "
|
|
56
|
+
"subject": [{"name": "app-commercial-${VERSION}", "digest": {"sha256": "$(sha256sum app-commercial-${VERSION}.tar.gz | cut -d' ' -f1)"}}],
|
|
57
57
|
"predicate": {
|
|
58
58
|
"buildType": "https://github.com/Attestations/GitHubActionsWorkflow@v1",
|
|
59
59
|
"builder": {"id": "https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"},
|
|
@@ -99,8 +99,8 @@ cosign verify-blob --key cosign.pub --signature provenance.json.sig provenance.j
|
|
|
99
99
|
## Release Bundle Structure
|
|
100
100
|
|
|
101
101
|
```
|
|
102
|
-
|
|
103
|
-
├──
|
|
102
|
+
app-commercial-v1.3.0/
|
|
103
|
+
├── app-commercial-v1.3.0.docker.tar.gz # Primary artefact
|
|
104
104
|
├── sbom.cdx.json # CycloneDX SBOM
|
|
105
105
|
├── sbom.cdx.json.sig # cosign signature
|
|
106
106
|
├── provenance.json # SLSA L1 provenance
|
|
@@ -46,9 +46,9 @@ Compression operations need output space to succeed. Reserve constants:
|
|
|
46
46
|
|
|
47
47
|
## Applicable Scenarios
|
|
48
48
|
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
49
|
+
- Task execution token monitoring (adoption layer)
|
|
50
|
+
- Multi-agent pipeline cumulative context management (adoption layer)
|
|
51
|
+
- PipelineMemory Snip trigger condition (adoption layer)
|
|
52
52
|
- Any environment with `maxTotalTokens` limit
|
|
53
53
|
|
|
54
54
|
## References
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: ../../CHANGELOG.md
|
|
3
|
-
source_version: 5.
|
|
4
|
-
translation_version: 5.
|
|
5
|
-
last_synced: 2026-05-
|
|
3
|
+
source_version: 5.7.0
|
|
4
|
+
translation_version: 5.7.0
|
|
5
|
+
last_synced: 2026-05-08
|
|
6
6
|
status: current
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -17,6 +17,52 @@ status: current
|
|
|
17
17
|
|
|
18
18
|
## [Unreleased]
|
|
19
19
|
|
|
20
|
+
## [5.7.0] - 2026-05-08
|
|
21
|
+
|
|
22
|
+
> **跨平台脚本迁移**(XSPEC-179 + XSPEC-180):bash 脚本逐步被单一来源的
|
|
23
|
+
> TypeScript / Node.js ESM 等价实现取代,可在 macOS / Linux / Windows 上以
|
|
24
|
+
> 相同方式执行。原 `.sh` 文件保留并加上 `DEPRECATED` 警告以维持向后兼容。
|
|
25
|
+
|
|
26
|
+
### 新增
|
|
27
|
+
|
|
28
|
+
- **AI 工具表格补全**(`README.md`、`locales/zh-TW/README.md`、`locales/zh-CN/README.md`):补上五个遗漏工具——GitHub Copilot、OpenAI Codex、Aider、Continue、Google Antigravity。新增 ⚠ Minimal 状态图例。(`1b588e1`)
|
|
29
|
+
- **`scripts/bump-version.mjs`**(XSPEC-179 Phase 1):跨平台版本升版实现,与原 `.sh` 对等。(`1a44e14`)
|
|
30
|
+
- **`scripts/install-hooks.mjs`**(XSPEC-179 Phase 1):跨平台 git hooks 安装程序;于 Windows 自动跳过 `chmod`。(`1a44e14`)
|
|
31
|
+
- **`scripts/pre-commit.mjs`**(XSPEC-180):pre-commit hook 的 Node.js ESM 实现,平台分支于 Windows 调用 `check-translation-sync.ps1`,其他平台调用 `.sh`。(`1572869`)
|
|
32
|
+
- **7 个 TypeScript 检查脚本**(XSPEC-179 Phase 2,`0a26d14`):从 bash 迁移至单一 TypeScript 来源,通过 `tsx` 执行:
|
|
33
|
+
- `scripts/check-ai-behavior-sync.ts`
|
|
34
|
+
- `scripts/check-commit-spec-reference.ts`
|
|
35
|
+
- `scripts/check-flow-gate-report.ts`
|
|
36
|
+
- `scripts/check-integration-commands-sync.ts`
|
|
37
|
+
- `scripts/check-registry-completeness.ts`
|
|
38
|
+
- `scripts/check-release-readiness-signoff.ts`
|
|
39
|
+
- `scripts/check-workflow-compliance.ts`
|
|
40
|
+
- **`tsx@^4.20.0`** 加入 root `devDependencies`(XSPEC-179 Phase 2,`0a26d14`)。
|
|
41
|
+
- **7 个 npm scripts** 串接 TypeScript 检查脚本(`0a26d14`):`check:ai-behavior`、`check:commit-spec`、`check:flow-gate`、`check:integration-commands`、`check:registry`、`check:release-signoff`、`check:workflow-compliance`。
|
|
42
|
+
|
|
43
|
+
### 变更
|
|
44
|
+
|
|
45
|
+
- **下游项目解耦**(6 批次,`ebe716c`–`2392c0f`):所有公开叙述中对特定下游产品(DevAP / VibeOps)的直接引用已替换为采用层中性术语,涵盖 130+ 个文件。UDS 重申为纯 MIT + CC BY 4.0 标准库,与任何特定采用层无依赖关系。
|
|
46
|
+
- **REGISTRY**:`roo-code` integration tier 从 `planned` 升为 `partial`;AI 工具表格中将 Roo Code 独立成行(不再与 Cline 合并)。(`1b588e1`)
|
|
47
|
+
- **`.githooks/pre-commit`**(XSPEC-180,`1572869`):从 51 行 bash 精简为 16 行 POSIX `sh` 薄壳层,将实际逻辑委派给 `scripts/pre-commit.mjs`。
|
|
48
|
+
- **`scripts/bump-version.mjs`**(`19ad314`):新增 `buildCmd()` 辅助函数,于 Windows 自动切换为 PowerShell + `.ps1` 来调用 `check-version-sync` / `check-translation-sync`,恢复 Windows 平台对等性。
|
|
49
|
+
- **XSPEC-179 Phase 2 策略修订**(`0a26d14`):放弃先前的 `.sh` + `.ps1` 双轨方案,改采**单一 TypeScript 来源**策略。单一 `.ts` 通过 `tsx` 在所有平台上行为一致,消除「只能在 Windows 验证」的反馈落差。
|
|
50
|
+
|
|
51
|
+
### 弃用
|
|
52
|
+
|
|
53
|
+
- **`scripts/bump-version.sh`**(`1a44e14`):标记为 DEPRECATED,由 `bump-version.mjs` 取代。
|
|
54
|
+
- **`scripts/install-hooks.sh`**(`1a44e14`):标记为 DEPRECATED,由 `install-hooks.mjs` 取代。
|
|
55
|
+
- **7 个 legacy `check-*.sh` 脚本**(`0a26d14`):对应的 `.ts` 版本(如上)已成为 canonical 实现。`.sh` 文件保留供 legacy Linux/macOS 环境使用,但不应再新增功能。
|
|
56
|
+
|
|
57
|
+
### 移除
|
|
58
|
+
|
|
59
|
+
- **`.devap/` 目录**(`2392c0f`):移除孤儿 DevAP dogfooding 安装目录。DevAP 已于 2026-04-28 退场(XSPEC-086/095)。
|
|
60
|
+
|
|
61
|
+
### 修复
|
|
62
|
+
|
|
63
|
+
- **`scripts/check-release-readiness-signoff.sh`**(`0a26d14`,于 TypeScript 移植时顺带修复的潜伏 bug):原本错误的 `grep -c "0\n0"` 样式(永远无法匹配到字面 `\n`)已修正,现在能可靠侦测缺漏的 sign-off 信号。
|
|
64
|
+
- **`scripts/check-integration-commands-sync.sh`**(`0a26d14`,于 TypeScript 移植时顺带修复的潜伏 bug):消除 `find` 与下游 consumer 之间 broken pipe 引发的 SIGPIPE 噪音。
|
|
65
|
+
|
|
20
66
|
## [5.3.2] - 2026-04-27
|
|
21
67
|
|
|
22
68
|
> **修补版本发布**:Bug 修复 —— `uds update -y` 现在会自动安装/更新 Skills 和 Commands,不再只显示提示信息。
|
|
@@ -865,7 +911,8 @@ status: current
|
|
|
865
911
|
- 范本:需求文档范本
|
|
866
912
|
- 集成:OpenSpec 框架
|
|
867
913
|
|
|
868
|
-
[Unreleased]: https://github.com/AsiaOstrich/universal-dev-standards/compare/
|
|
914
|
+
[Unreleased]: https://github.com/AsiaOstrich/universal-dev-standards/compare/v5.7.0...HEAD
|
|
915
|
+
[5.7.0]: https://github.com/AsiaOstrich/universal-dev-standards/compare/v5.6.0...v5.7.0
|
|
869
916
|
[3.0.0]: https://github.com/AsiaOstrich/universal-dev-standards/compare/v2.3.0...v3.0.0
|
|
870
917
|
[2.3.0]: https://github.com/AsiaOstrich/universal-dev-standards/compare/v2.2.0...v2.3.0
|
|
871
918
|
[2.2.0]: https://github.com/AsiaOstrich/universal-dev-standards/compare/v2.1.0...v2.2.0
|