universal-dev-standards 5.6.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/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/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/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/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/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/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/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/circuit-breaker.md +4 -4
- package/bundled/core/container-security.md +8 -8
- 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/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/policy-as-code-testing.md +9 -9
- package/bundled/core/recovery-recipe-registry.md +2 -2
- package/bundled/core/release-quality-manifest.md +2 -2
- 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/capability-declaration.md +4 -4
- package/bundled/locales/zh-TW/core/circuit-breaker.md +7 -7
- 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/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 +1 -1
- package/src/commands/flow.js +7 -5
- package/src/commands/start.js +7 -6
- package/src/commands/sweep.js +7 -6
- package/src/commands/workflow.js +7 -6
- package/src/core/agent-communication-protocol.js +10 -3
- package/standards-registry.json +50 -50
|
@@ -25,20 +25,20 @@ Policy as Code 的特殊風險:
|
|
|
25
25
|
```rego
|
|
26
26
|
# 檔案命名:<policy_module>_test.rego
|
|
27
27
|
# Package:<policy_package>_test
|
|
28
|
-
package
|
|
28
|
+
package governance.guardian.forbidden_patterns_test
|
|
29
29
|
|
|
30
30
|
import future.keywords.if
|
|
31
31
|
|
|
32
32
|
# 正向測試:規則應觸發(assert rule fires)
|
|
33
33
|
test_drop_database_is_forbidden if {
|
|
34
|
-
data.
|
|
34
|
+
data.governance.guardian.forbidden_patterns.has_forbidden_pattern with input as {
|
|
35
35
|
"plan": [{"command_type": "sql", "command": "DROP DATABASE prod_main", "reversible": false}]
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
# 負向測試:規則不應觸發(assert rule does NOT fire)
|
|
40
40
|
test_safe_select_is_not_forbidden if {
|
|
41
|
-
not data.
|
|
41
|
+
not data.governance.guardian.forbidden_patterns.has_forbidden_pattern with input as {
|
|
42
42
|
"plan": [{"command_type": "sql", "command": "SELECT * FROM users LIMIT 10", "reversible": true}]
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -79,9 +79,9 @@ docker run --rm \
|
|
|
79
79
|
default allow = false
|
|
80
80
|
|
|
81
81
|
allow if {
|
|
82
|
-
not data.
|
|
83
|
-
not data.
|
|
84
|
-
not data.
|
|
82
|
+
not data.governance.guardian.forbidden_patterns.has_forbidden_pattern
|
|
83
|
+
not data.governance.guardian.env_policy.prod_violation
|
|
84
|
+
not data.governance.guardian.logic_constraints.has_logic_violation
|
|
85
85
|
}
|
|
86
86
|
```
|
|
87
87
|
|
|
@@ -93,9 +93,9 @@ OPA ≥ 0.40 的型別系統嚴格區分 array 和 set。`violations` partial ru
|
|
|
93
93
|
|
|
94
94
|
```rego
|
|
95
95
|
# ✅ 正確:partial set rule 集合 violations
|
|
96
|
-
deny_reasons[r] if { r := data.
|
|
97
|
-
deny_reasons[r] if { r := data.
|
|
98
|
-
deny_reasons[r] if { r := data.
|
|
96
|
+
deny_reasons[r] if { r := data.governance.guardian.forbidden_patterns.violations[_] }
|
|
97
|
+
deny_reasons[r] if { r := data.governance.guardian.env_policy.violations[_] }
|
|
98
|
+
deny_reasons[r] if { r := data.governance.guardian.logic_constraints.violations[_] }
|
|
99
99
|
|
|
100
100
|
# ❌ 錯誤:array.concat 用在 set 上 → rego_type_error
|
|
101
101
|
# deny_reasons := array.concat(violations1, violations2)
|
|
@@ -56,8 +56,8 @@ escalation: # required
|
|
|
56
56
|
|
|
57
57
|
## Applicable Scenarios
|
|
58
58
|
|
|
59
|
-
-
|
|
60
|
-
-
|
|
59
|
+
- Orchestrator (adoption layer) selects recovery strategy before fix loop
|
|
60
|
+
- Pipeline Runner (adoption layer) handles `agent:error` with registry lookup
|
|
61
61
|
- Custom `recovery-recipes.yaml` for project-level recipe override
|
|
62
62
|
- Telemetry tracking recovery strategy effectiveness
|
|
63
63
|
|
|
@@ -19,7 +19,7 @@ A Release Quality Manifest makes quality evidence:
|
|
|
19
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
20
|
|
|
21
21
|
```yaml
|
|
22
|
-
release:
|
|
22
|
+
release: app-commercial-1.2.0
|
|
23
23
|
generated_at: "2026-05-05T04:00:00Z"
|
|
24
24
|
commit: "abc1234"
|
|
25
25
|
gates:
|
|
@@ -167,7 +167,7 @@ YAML
|
|
|
167
167
|
Generate a Markdown table alongside the YAML for inclusion in release notes:
|
|
168
168
|
|
|
169
169
|
```markdown
|
|
170
|
-
## Release Quality Gates —
|
|
170
|
+
## Release Quality Gates — app-commercial-1.2.0
|
|
171
171
|
|
|
172
172
|
| Gate | Actual | Target | Status |
|
|
173
173
|
|------|--------|--------|--------|
|
|
@@ -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
|
|
@@ -14,7 +14,7 @@ status: current
|
|
|
14
14
|
|
|
15
15
|
> **语言**: [English](../../README.md) | [繁體中文](../zh-TW/README.md) | 简体中文
|
|
16
16
|
|
|
17
|
-
**版本**: 5.
|
|
17
|
+
**版本**: 5.7.0 | **发布日期**: 2026-04-13 | **授权**: [双重授权](../../LICENSE) (CC BY 4.0 + MIT)
|
|
18
18
|
|
|
19
19
|
语言无关、框架无关的软件项目文档标准。通过 AI 原生工作流,确保不同技术栈之间的一致性、质量和可维护性。
|
|
20
20
|
|
|
@@ -106,12 +106,18 @@ graph TD
|
|
|
106
106
|
| :--- | :--- | :---: | :---: | :--- |
|
|
107
107
|
| **Claude Code** | ✅ 完整支持 | **29** | **33** | `CLAUDE.md` |
|
|
108
108
|
| **OpenCode** | ✅ 完整支持 | **29** | **33** | `AGENTS.md` |
|
|
109
|
-
| **Gemini CLI** | 🧪 预览版 | **18+** | **20+** | `GEMINI.md` |
|
|
110
109
|
| **Cursor** | ✅ 完整支持 | **核心** | **模拟支持** | `.cursorrules` |
|
|
111
|
-
| **
|
|
112
|
-
| **
|
|
110
|
+
| **Roo Code** | ✅ 完整支持 | **核心** | **工作流** | `.roo/rules/` |
|
|
111
|
+
| **Gemini CLI** | 🧪 预览版 | **18+** | **20+** | `GEMINI.md` |
|
|
112
|
+
| **Cline** | 🔶 部分支持 | **核心** | **工作流** | `.clinerules` |
|
|
113
|
+
| **Windsurf** | 🔶 部分支持 | **核心** | **规则书** | `.windsurfrules` |
|
|
114
|
+
| **GitHub Copilot** | 🔶 部分支持 | **核心** | **提示词** | `.github/copilot-instructions.md` |
|
|
115
|
+
| **OpenAI Codex** | 🔶 部分支持 | **核心** | — | `AGENTS.md` |
|
|
116
|
+
| **Aider** | 🔶 部分支持 | — | — | `AGENTS.md` |
|
|
117
|
+
| **Continue** | 🔶 部分支持 | — | — | `.continue/config.json` |
|
|
118
|
+
| **Google Antigravity** | ⚠️ 最低限度 | — | — | `.antigravity/rules.md` |
|
|
113
119
|
|
|
114
|
-
> **状态图例**:✅ 完整支持 | 🧪 预览版 | 🔶 部分支持 | ⏳ 计划中
|
|
120
|
+
> **状态图例**:✅ 完整支持 | 🧪 预览版 | 🔶 部分支持 | ⚠️ 最低限度 | ⏳ 计划中
|
|
115
121
|
|
|
116
122
|
---
|
|
117
123
|
|
|
@@ -153,28 +159,6 @@ uds uninstall # 从项目移除标准
|
|
|
153
159
|
|
|
154
160
|
---
|
|
155
161
|
|
|
156
|
-
## 🌐 生态系统
|
|
157
|
-
|
|
158
|
-
UDS 是 AsiaOstrich 三层产品架构中的**标准定义层**:
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
UDS(定义什么) → DevAP(代理如何执行) → VibeOps(完整生命周期)
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
| 层级 | 产品 | 角色 | 授权 |
|
|
165
|
-
|------|------|------|------|
|
|
166
|
-
| 标准 | **UDS** | 开发方法论框架 | MIT + CC BY 4.0 |
|
|
167
|
-
| 编排 | [DevAP](https://github.com/AsiaOstrich/dev-autopilot) | 代理无关的编排引擎 | MIT |
|
|
168
|
-
| 生命周期 | [VibeOps](https://github.com/AsiaOstrich/vibeops360) | AI 驱动的软件工厂 | AGPL-3.0-only |
|
|
169
|
-
|
|
170
|
-
- **UDS** 定义开发标准 → 供 DevAP(质量 Gate)和 VibeOps(代理管线)使用
|
|
171
|
-
- **DevAP** 使用 UDS 标准编排 AI 代理 → VibeOps 是其消费者之一
|
|
172
|
-
- **VibeOps** 提供完整软件生命周期 → 通过 `uds init` 集成 UDS(一次复制)
|
|
173
|
-
|
|
174
|
-
UDS 保持**工具无关性**:支持 Claude Code、OpenCode、Gemini CLI、Cursor、Cline 和 Windsurf。DevAP 和 VibeOps 是消费者,并非必要依赖。
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
162
|
## 📄 授权
|
|
179
163
|
|
|
180
164
|
| 组件 | 授权 |
|
|
@@ -12,7 +12,7 @@ status: current
|
|
|
12
12
|
|
|
13
13
|
**版本**: 1.0.0
|
|
14
14
|
**最后更新**: 2026-03-30
|
|
15
|
-
**适用性**:
|
|
15
|
+
**适用性**: 跨采用层 AI Agent 编排(任意 Adapter / Pipeline / Agent runtime 消费 UDS 标准)
|
|
16
16
|
**范围**: 通用 (Universal)
|
|
17
17
|
**相关标准**: [代理派遣](./agent-dispatch.md)、[AI 模型选择策略](./model-selection.md)
|
|
18
18
|
**规格**: [SPEC-AGENT-COMM-001](../../../docs/specs/SPEC-AGENT-COMM-001-agent-communication-protocol.md)
|
|
@@ -60,12 +60,12 @@ status: current
|
|
|
60
60
|
| `timeout` | 任务超时 |
|
|
61
61
|
| `unknown` | 无法识别的状态(降级) |
|
|
62
62
|
|
|
63
|
-
### 1.2
|
|
63
|
+
### 1.2 跨采用层映射
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
跨采用层状态码对映表(informative example,采用层自订自己的对映):
|
|
66
66
|
|
|
67
|
-
| 统一状态 | UDS |
|
|
68
|
-
|
|
67
|
+
| 统一状态 | UDS | Adapter Example A | Adapter Example B |
|
|
68
|
+
|----------|-----|-------------------|-------------------|
|
|
69
69
|
| `success` | DONE | success | success |
|
|
70
70
|
| `success_partial` | DONE_WITH_CONCERNS | done_with_concerns | partial |
|
|
71
71
|
| `failed` | — | failed | failure |
|
|
@@ -22,7 +22,7 @@ status: current
|
|
|
22
22
|
|
|
23
23
|
通用断路器标准:三态状态机(CLOSED/HALF_OPEN/OPEN)、阈值配置、与遥测整合。
|
|
24
24
|
|
|
25
|
-
各模块各自实现断路器导致行为不一致(阈值不同、HALF_OPEN 探针逻辑各异、遥测事件命名混乱)。本标准提供统一的状态机定义、配置键名,以及必须上报的遥测事件,确保
|
|
25
|
+
各模块各自实现断路器导致行为不一致(阈值不同、HALF_OPEN 探针逻辑各异、遥测事件命名混乱)。本标准提供统一的状态机定义、配置键名,以及必须上报的遥测事件,确保 采用层(pipeline / agent / telemetry)可互相理解断路器状态。
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
|
@@ -46,7 +46,7 @@ status: current
|
|
|
46
46
|
|
|
47
47
|
1. **选择 worktree 位置** — 优先顺序:
|
|
48
48
|
- 已配置的路径
|
|
49
|
-
- `.
|
|
49
|
+
- `.uds/worktrees/` 或类似项目本地目录
|
|
50
50
|
- 询问用户
|
|
51
51
|
2. **验证 `.gitignore`** — 运行 `git check-ignore` 确认 worktree 目录被忽略
|
|
52
52
|
3. **创建 worktree** — `git worktree add <path> -b <branch-name>`
|
|
@@ -12,19 +12,19 @@ status: current
|
|
|
12
12
|
|
|
13
13
|
**版本**: 1.0.0
|
|
14
14
|
**最后更新**: 2026-04-15
|
|
15
|
-
**适用性**: 使用 UDS
|
|
15
|
+
**适用性**: 使用 UDS-aware 工具链的项目
|
|
16
16
|
**范围**: 通用 (Universal)
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
20
|
## 目的
|
|
21
21
|
|
|
22
|
-
本标准定义一套基于 Recipe 的打包框架,让用户项目可在
|
|
22
|
+
本标准定义一套基于 Recipe 的打包框架,让用户项目可在 專案 packaging 配置(路徑由採用層決定) 中声明打包目标(target)。UDS 负责提供 Recipe 定义与内置 Recipe 库;采用层 runtime 在 pipeline 中执行编排。
|
|
23
23
|
|
|
24
24
|
框架的关注点分离如下:
|
|
25
25
|
- **用户项目**:声明「打包什么」(targets + 配置覆盖)
|
|
26
26
|
- **UDS**:定义「如何打包」(Recipe 结构 + 内置 Recipes)
|
|
27
|
-
-
|
|
27
|
+
- **采用层 pipeline**:执行「何时打包」(在 Review 与 Deploy 之间的 pipeline 阶段)
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
@@ -33,9 +33,9 @@ status: current
|
|
|
33
33
|
| 原则 | 说明 |
|
|
34
34
|
|------|------|
|
|
35
35
|
| **Recipe-based** | 每个打包目标都参照一个具名 Recipe;不在 pipeline YAML 中编写临时脚本 |
|
|
36
|
-
| **声明式 targets** | 项目在
|
|
36
|
+
| **声明式 targets** | 项目在 專案 packaging 配置(路徑由採用層決定) 中声明 targets;采用层 runtime 负责解析与执行 |
|
|
37
37
|
| **可定制** | 四个定制层允许配置覆盖、Hook 注入、自定义 Recipe 及 Escape Hatch |
|
|
38
|
-
| **整合至 Pipeline** | 打包作为独立阶段运行于
|
|
38
|
+
| **整合至 Pipeline** | 打包作为独立阶段运行于 採用層 pipeline 的 Review 与 Deploy 之间 |
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
@@ -119,15 +119,15 @@ UDS 随附四个内置 Recipe,位于 `recipes/` 目录:
|
|
|
119
119
|
|
|
120
120
|
| 层级 | 机制 | 使用时机 |
|
|
121
121
|
|------|------|----------|
|
|
122
|
-
| **L1 — 配置覆盖** |
|
|
123
|
-
| **L2 — Hook 注入** |
|
|
124
|
-
| **L3 — 自定义 Recipe** | 项目 `.
|
|
122
|
+
| **L1 — 配置覆盖** | 專案 packaging 配置(路徑由採用層決定) 中的 `config:` 块 | 更改默认值(registry URL、tag、输出目录)|
|
|
123
|
+
| **L2 — Hook 注入** | 專案 packaging 配置(路徑由採用層決定) 中的 `hooks:` 块 | 在构建或发布前后执行额外命令 |
|
|
124
|
+
| **L3 — 自定义 Recipe** | 项目 `.uds/recipes/` 中的新 `.yaml` 文件 | 完全不同的构建流程;内置 Recipe 不适用 |
|
|
125
125
|
| **L4 — Escape Hatch** | target 定义中以 `script:` 替代 `recipe:` | 原始 shell 脚本,无合适的 Recipe 抽象 |
|
|
126
126
|
|
|
127
127
|
### L1 示例 — 配置覆盖
|
|
128
128
|
|
|
129
129
|
```yaml
|
|
130
|
-
# .
|
|
130
|
+
# .uds/packaging.yaml
|
|
131
131
|
targets:
|
|
132
132
|
- name: publish-npm
|
|
133
133
|
recipe: npm-library
|
|
@@ -140,7 +140,7 @@ targets:
|
|
|
140
140
|
### L2 示例 — Hook 注入
|
|
141
141
|
|
|
142
142
|
```yaml
|
|
143
|
-
# .
|
|
143
|
+
# .uds/packaging.yaml
|
|
144
144
|
targets:
|
|
145
145
|
- name: docker-push
|
|
146
146
|
recipe: docker-service
|
|
@@ -153,7 +153,7 @@ targets:
|
|
|
153
153
|
### L3 示例 — 自定义 Recipe
|
|
154
154
|
|
|
155
155
|
```yaml
|
|
156
|
-
# .
|
|
156
|
+
# .uds/recipes/electron-app.yaml
|
|
157
157
|
name: electron-app
|
|
158
158
|
description: 构建 Electron 桌面应用程序
|
|
159
159
|
requires:
|
|
@@ -169,7 +169,7 @@ config:
|
|
|
169
169
|
### L4 示例 — Escape Hatch
|
|
170
170
|
|
|
171
171
|
```yaml
|
|
172
|
-
# .
|
|
172
|
+
# .uds/packaging.yaml
|
|
173
173
|
targets:
|
|
174
174
|
- name: legacy-bundle
|
|
175
175
|
script: |
|
|
@@ -187,9 +187,9 @@ targets:
|
|
|
187
187
|
|------|------|------|
|
|
188
188
|
| 所有 `requires` 文件存在 | 100% | 在任何步骤执行前检查 |
|
|
189
189
|
| 所有步骤以 exit code 0 结束 | 100% | 任何非零 exit 使执行失败 |
|
|
190
|
-
| `postBuild` 产出物存在 | 存在于预期路径 |
|
|
190
|
+
| `postBuild` 产出物存在 | 存在于预期路径 | 构建步骤后由采用层 runtime 验证 |
|
|
191
191
|
| Hook 命令以 exit code 0 结束 | 100% | Hook 失败会传播为步骤失败 |
|
|
192
|
-
| 已发布产出物可被取回 | HTTP 200 / registry 查询成功 |
|
|
192
|
+
| 已发布产出物可被取回 | HTTP 200 / registry 查询成功 | 由采用层 runtime 在发布后进行 smoke check |
|
|
193
193
|
|
|
194
194
|
### 失败处理
|
|
195
195
|
|
|
@@ -133,14 +133,11 @@ fix_loop | circuit_breaker | rebase_and_retry | model_switch | degraded_mode | h
|
|
|
133
133
|
|
|
134
134
|
## 集成点
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
> 集成指引(informative;具体文件路径属于采用层自订范围)。
|
|
137
137
|
|
|
138
|
-
|
|
139
|
-
- `packages/core/src/recovery-registry.ts` — Registry 实现与默认 recipe
|
|
140
|
-
- `packages/core/src/orchestrator.ts` — fix loop 前查询 Registry
|
|
138
|
+
### 预期呼叫点
|
|
141
139
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
- `recovery-recipes.yaml` — 默认 recipe 配置
|
|
140
|
+
- 核心型别模块 — `RecoveryRecipe` / `RecoveryStrategy` type
|
|
141
|
+
- recovery-registry 模块 — Registry 实现与默认 recipe
|
|
142
|
+
- orchestrator 模块 — fix loop 前查询 Registry
|
|
143
|
+
- recovery-recipes 配置档 — 默认 recipe 配置(档名由采用层决定)
|
|
@@ -85,7 +85,7 @@ Deprecated ──(迁移完成)────────→ Archived
|
|
|
85
85
|
|
|
86
86
|
## 情境示例
|
|
87
87
|
|
|
88
|
-
- **情境 1 — Trial → Active**:`retry-standards` 处于 trial。2026-08-01
|
|
88
|
+
- **情境 1 — Trial → Active**:`retry-standards` 处于 trial。2026-08-01 审视发现多个采用层(Fix Loop / Builder Agent 等)均采用且无重大缺陷 → 转 Active,`since=2026-08-01`,移除 `expires`
|
|
89
89
|
- **情境 2 — Trial 逾期自动 Archived**:某标准 trial 期限 2026-10-17 到期未通过验证 → 状态转 Archived,记录原因
|
|
90
90
|
- **情境 3 — Deprecated 带迁移**:`legacy-retry-logic` 被 `retry-standards` 取代 → `status=deprecated, supersedes=retry-standards, migration_guide=docs/migrations/retry-v1-to-v2.md`;Skill 使用时显示警告
|
|
91
91
|
|