universal-dev-standards 6.0.0 → 6.1.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/commit-message/bilingual.ai.yaml +19 -1
- package/bundled/ai/standards/checkin-standards.ai.yaml +3 -3
- package/bundled/ai/standards/documentation-writing-standards.ai.yaml +1 -1
- package/bundled/ai/standards/frontend-design-standards.ai.yaml +33 -3
- package/bundled/ai/standards/push-standards.ai.yaml +14 -3
- package/bundled/ai/standards/requirement-engineering.ai.yaml +42 -3
- package/bundled/ai/standards/self-review-protocol.ai.yaml +15 -10
- package/bundled/ai/standards/verification-evidence.ai.yaml +88 -5
- package/bundled/core/checkin-standards.md +3 -3
- package/bundled/core/documentation-writing-standards.md +1 -1
- package/bundled/core/feature-discovery-standards.md +191 -0
- package/bundled/core/frontend-design-standards.md +93 -4
- package/bundled/core/multi-environment-e2e-testing.md +195 -0
- package/bundled/core/push-standards.md +82 -0
- package/bundled/core/requirement-engineering.md +2 -2
- package/bundled/core/self-review-protocol.md +13 -8
- package/bundled/core/verification-evidence.md +170 -10
- package/bundled/locales/COVERAGE.md +27 -21
- package/bundled/locales/zh-CN/CHANGELOG.md +26 -3
- package/bundled/locales/zh-CN/CLAUDE.md +1 -1
- package/bundled/locales/zh-CN/MAINTENANCE.md +42 -661
- package/bundled/locales/zh-CN/README.md +10 -10
- package/bundled/locales/zh-CN/SECURITY.md +2 -2
- package/bundled/locales/zh-CN/ai/options/commit-message/bilingual.ai.yaml +6 -1
- package/bundled/locales/zh-CN/core/browser-compatibility-standards.md +17 -7
- package/bundled/locales/zh-CN/core/cost-budget-test.md +1 -1
- package/bundled/locales/zh-CN/core/cross-flow-regression.md +8 -7
- package/bundled/locales/zh-CN/core/flaky-test-management.md +1 -1
- package/bundled/locales/zh-CN/core/flow-based-testing.md +8 -8
- package/bundled/locales/zh-CN/core/frontend-design-standards.md +1 -1
- package/bundled/locales/zh-CN/core/full-coverage-testing.md +74 -2
- package/bundled/locales/zh-CN/core/license-compliance.md +3 -1
- package/bundled/locales/zh-CN/core/logging-standards.md +83 -7
- package/bundled/locales/zh-CN/core/mock-boundary.md +58 -6
- package/bundled/locales/zh-CN/core/packaging-standards.md +2 -1
- package/bundled/locales/zh-CN/core/pipeline-security-gates.md +24 -4
- package/bundled/locales/zh-CN/core/prompt-regression.md +1 -1
- package/bundled/locales/zh-CN/core/replay-test.md +1 -1
- package/bundled/locales/zh-CN/core/requirement-engineering.md +1 -1
- package/bundled/locales/zh-CN/core/security-testing.md +24 -7
- package/bundled/locales/zh-CN/core/self-review-protocol.md +17 -12
- package/bundled/locales/zh-CN/core/smoke-test.md +1 -1
- package/bundled/locales/zh-CN/core/verification-evidence.md +252 -41
- package/bundled/locales/zh-CN/docs/CHEATSHEET.md +6 -2
- package/bundled/locales/zh-CN/docs/FEATURE-REFERENCE.md +16 -25
- package/bundled/locales/zh-CN/docs/user/GLOSSARY.md +1 -1
- package/bundled/locales/zh-CN/options/commit-message/bilingual.md +10 -3
- package/bundled/locales/zh-CN/skills/brainstorm-assistant/SKILL.md +21 -19
- package/bundled/locales/zh-CN/skills/brainstorm-assistant/guide.md +14 -11
- package/bundled/locales/zh-CN/skills/dev-methodology/guide.md +1 -1
- package/bundled/locales/zh-CN/skills/logging-guide/SKILL.md +29 -6
- package/bundled/locales/zh-CN/skills/spec-derivation/guide.md +1 -1
- package/bundled/locales/zh-TW/CHANGELOG.md +26 -3
- package/bundled/locales/zh-TW/CLAUDE.md +1 -1
- package/bundled/locales/zh-TW/MAINTENANCE.md +32 -8
- package/bundled/locales/zh-TW/README.md +10 -10
- package/bundled/locales/zh-TW/SECURITY.md +2 -2
- package/bundled/locales/zh-TW/ai/options/commit-message/bilingual.ai.yaml +6 -1
- package/bundled/locales/zh-TW/core/cost-budget-test.md +1 -1
- package/bundled/locales/zh-TW/core/flaky-test-management.md +1 -1
- package/bundled/locales/zh-TW/core/flow-based-testing.md +8 -8
- package/bundled/locales/zh-TW/core/frontend-design-standards.md +1 -1
- package/bundled/locales/zh-TW/core/license-compliance.md +3 -1
- package/bundled/locales/zh-TW/core/logging-standards.md +2 -2
- package/bundled/locales/zh-TW/core/mock-boundary.md +1 -1
- package/bundled/locales/zh-TW/core/packaging-standards.md +2 -1
- package/bundled/locales/zh-TW/core/pipeline-security-gates.md +24 -4
- package/bundled/locales/zh-TW/core/prompt-regression.md +1 -1
- package/bundled/locales/zh-TW/core/replay-test.md +1 -1
- package/bundled/locales/zh-TW/core/requirement-engineering.md +1 -1
- package/bundled/locales/zh-TW/core/security-testing.md +24 -7
- package/bundled/locales/zh-TW/core/self-review-protocol.md +16 -11
- package/bundled/locales/zh-TW/core/smoke-test.md +1 -1
- package/bundled/locales/zh-TW/core/verification-evidence.md +260 -31
- package/bundled/locales/zh-TW/docs/CHEATSHEET.md +6 -2
- package/bundled/locales/zh-TW/docs/FEATURE-REFERENCE.md +16 -25
- package/bundled/locales/zh-TW/docs/user/GLOSSARY.md +1 -1
- package/bundled/locales/zh-TW/options/commit-message/bilingual.md +10 -3
- package/bundled/locales/zh-TW/skills/brainstorm-assistant/SKILL.md +21 -19
- package/bundled/locales/zh-TW/skills/brainstorm-assistant/guide.md +14 -11
- package/bundled/locales/zh-TW/skills/dev-methodology/guide.md +1 -1
- package/bundled/locales/zh-TW/skills/logging-guide/SKILL.md +29 -6
- package/bundled/locales/zh-TW/skills/spec-derivation/guide.md +1 -1
- package/bundled/skills/brainstorm-assistant/SKILL.md +22 -20
- package/bundled/skills/brainstorm-assistant/guide.md +10 -7
- package/bundled/skills/spec-driven-dev/SKILL.md +11 -0
- package/package.json +3 -3
- package/src/commands/init.js +58 -17
- package/standards-registry.json +10 -10
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
> **English** | [繁體中文](../locales/zh-TW/core/self-review-protocol.md)
|
|
4
4
|
|
|
5
|
-
**Version**: 1.
|
|
6
|
-
**Last Updated**: 2026-
|
|
5
|
+
**Version**: 1.1.0
|
|
6
|
+
**Last Updated**: 2026-07-09
|
|
7
7
|
**Applicability**: All software projects (new, refactoring, migration, maintenance)
|
|
8
8
|
**Scope**: partial
|
|
9
9
|
**Industry Standards**: ISO/IEC 25010 (Documentation maintainability), IEEE 1063-2001 (Software user documentation)
|
|
@@ -26,7 +26,7 @@ This standard mandates a **self-review pass** on large markdown edits before com
|
|
|
26
26
|
|
|
27
27
|
Across multiple Claude-assisted editing sessions (e.g., `dev-platform/.claude/skills/eval-source/SKILL.md` v1.1.0 → v1.1.1 and v1.2.0 → v1.2.1), a consistent pattern emerged: **each large markdown edit introduced 3-6 small internal inconsistencies** that were invisible to internal reasoning but surfaced immediately on full re-read.
|
|
28
28
|
|
|
29
|
-
These inconsistencies fell into **6 recurring categories** and consistently triggered a follow-up patch commit. Adding a mandatory re-read step before commit eliminated this pattern (eval-source v1.3.0 was the first to pass without follow-up patch).
|
|
29
|
+
These inconsistencies fell into **6 recurring categories** and consistently triggered a follow-up patch commit. A 7th category — language/terminology consistency — was added later for a different rationale (cross-conversation AI output drift, not the original patch-cycle pattern); see below. Adding a mandatory re-read step before commit eliminated this pattern (eval-source v1.3.0 was the first to pass without follow-up patch).
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
@@ -48,7 +48,7 @@ Applicable artefact types:
|
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
51
|
-
## The
|
|
51
|
+
## The 7 Categories of Internal Inconsistency
|
|
52
52
|
|
|
53
53
|
### 1. Diagram / Flow vs Step List Mismatch
|
|
54
54
|
**Example**: A workflow diagram with 7 boxes but the document defines 8 steps.
|
|
@@ -74,12 +74,16 @@ Applicable artefact types:
|
|
|
74
74
|
**Example**: A template example shows `D1/D2/D3` but the rule explicitly says D3 is not mandatory, and the present case specifically demoted its D3.
|
|
75
75
|
**Check**: Every concrete value in examples must be consistent with current rules; examples should not contradict latest case experience.
|
|
76
76
|
|
|
77
|
+
### 7. Language / Terminology Consistency
|
|
78
|
+
**Example**: A bilingual document has a paragraph mixing English and Chinese sentences, or a Japanese/Korean character sequence contaminates a Traditional Chinese section; or the same project term (e.g. "XSPEC", "gate", "pipeline") is spelled inconsistently across the same document.
|
|
79
|
+
**Check**: Scan for non-target-language scripts outside their expected sections (e.g. Japanese kana U+3040–U+30FF, Korean hangul U+AC00–U+D7A3 inside a zh-TW paragraph), same-paragraph language mixing, and inconsistent spelling of established project terms within one file.
|
|
80
|
+
|
|
77
81
|
---
|
|
78
82
|
|
|
79
83
|
## Procedure
|
|
80
84
|
|
|
81
85
|
1. **After editing, before committing**, use the file-reading tool to re-read the **entire file** (not just the diff).
|
|
82
|
-
2. Walk through the
|
|
86
|
+
2. Walk through the 7 categories above against the file.
|
|
83
87
|
3. **If issues found**: Edit in place and include fixes in the same commit (don't ship and patch later).
|
|
84
88
|
4. **If already committed** before noticing: Create a patch commit (e.g., v1.2.1 fixing v1.2.0).
|
|
85
89
|
|
|
@@ -98,19 +102,19 @@ Append a changelog line in the format:
|
|
|
98
102
|
### For ADRs / DECs
|
|
99
103
|
In the `## Follow-up Tracking` table, add a row:
|
|
100
104
|
```
|
|
101
|
-
| Self-review pass | This DEC | ✅ YYYY-MM-DD (
|
|
105
|
+
| Self-review pass | This DEC | ✅ YYYY-MM-DD (7 categories, no issues) |
|
|
102
106
|
```
|
|
103
107
|
|
|
104
108
|
### For XSPEC SDD Deltas
|
|
105
109
|
After the "non-modification list" section (e.g., §N.6), append:
|
|
106
110
|
```
|
|
107
|
-
> Self-review pass: YYYY-MM-DD (
|
|
111
|
+
> Self-review pass: YYYY-MM-DD (7 categories, no issues)
|
|
108
112
|
```
|
|
109
113
|
|
|
110
114
|
### In Commit Message Body
|
|
111
115
|
Append a single line at the end:
|
|
112
116
|
```
|
|
113
|
-
Self-review (protocol v1.
|
|
117
|
+
Self-review (protocol v1.1.0): N issues found, M applied in same commit / 0 found.
|
|
114
118
|
```
|
|
115
119
|
|
|
116
120
|
---
|
|
@@ -158,3 +162,4 @@ Adoption of this standard is verified by:
|
|
|
158
162
|
## Self-Review Pass
|
|
159
163
|
|
|
160
164
|
> Self-review pass: 2026-05-26 (6 categories, no issues found on the first draft of this standard itself)
|
|
165
|
+
> Self-review pass: 2026-07-09 (7 categories, no issues found — added category 7 "Language / Terminology Consistency" per XSPEC-324)
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
> **Language**: English | [繁體中文](../locales/zh-TW/core/verification-evidence.md)
|
|
4
4
|
|
|
5
|
-
**Version**: 1.
|
|
6
|
-
**Last Updated**: 2026-
|
|
5
|
+
**Version**: 1.2.0
|
|
6
|
+
**Last Updated**: 2026-07-17
|
|
7
7
|
**Applicability**: All AI-assisted development workflows
|
|
8
8
|
**Scope**: universal
|
|
9
9
|
**Inspired by**: [Superpowers](https://github.com/obra/superpowers) — verification-before-completion (MIT)
|
|
@@ -12,9 +12,19 @@
|
|
|
12
12
|
|
|
13
13
|
## Purpose
|
|
14
14
|
|
|
15
|
-
Establish an "Iron Law" that no task can be claimed as complete without verification evidence
|
|
15
|
+
Establish an "Iron Law" that no task can be claimed as complete without verification evidence, and ensure that the evidence itself holds up. This standard guards two distinct failures:
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
1. **Claiming success without evidence** — the agent asserts what it never checked (the Iron Law).
|
|
18
|
+
2. **Evidence that does not support its claim** — the agent *did* check, and the checking tool silently did not work (Evidence Validity, added in v1.2.0).
|
|
19
|
+
|
|
20
|
+
The first is a form of hallucination. **The second is not** — nothing was invented; a real command produced a real output that meant something other than what it appeared to mean. Both end in the same place: a completion claim that isn't true.
|
|
21
|
+
|
|
22
|
+
建立「鐵律」:無驗證證據不可聲稱完成——並確保**證據本身站得住腳**。本標準防兩種不同的失敗:
|
|
23
|
+
|
|
24
|
+
1. **無證據就宣稱成功**——代理斷言它從未查過的事(Iron Law)。
|
|
25
|
+
2. **證據撐不起它的主張**——代理**確實查了**,而查詢工具靜默地沒有運作(證據有效性,v1.2.0 新增)。
|
|
26
|
+
|
|
27
|
+
前者是幻覺的一種,**後者不是**——沒有任何東西被捏造,是一個真實的指令產生了真實的輸出,而那個輸出的意思不是它看起來的意思。兩者殊途同歸:一個不成立的完成聲明。
|
|
18
28
|
|
|
19
29
|
---
|
|
20
30
|
|
|
@@ -25,7 +35,10 @@ Establish an "Iron Law" that no task can be claimed as complete without verifica
|
|
|
25
35
|
| Verification Evidence | A structured record of a verification command's execution and result |
|
|
26
36
|
| Iron Law | The absolute rule: no evidence = no completion claim |
|
|
27
37
|
| RED-GREEN Cycle | Proving a bug fix by showing the test fails before and passes after the fix |
|
|
28
|
-
| Exit Code | The numeric return value of a command
|
|
38
|
+
| Exit Code | The numeric return value of a command. **`0 = success` is the tool's convention, not a guarantee** — see Evidence Validity |
|
|
39
|
+
| Environment Layer | Which environment the evidence was collected from (`local` / `uat` / `prd`) |
|
|
40
|
+
| Evidence Validity | Whether the evidence *itself* is trustworthy — i.e. whether the verification command actually ran and actually measured what it claims |
|
|
41
|
+
| Silent Tool Failure | A verification command that fails to run, or runs without measuring anything, yet produces output indistinguishable from a genuine result |
|
|
29
42
|
|
|
30
43
|
---
|
|
31
44
|
|
|
@@ -39,6 +52,18 @@ An agent saying "it's done" is not evidence. The verification must be independen
|
|
|
39
52
|
|
|
40
53
|
代理聲稱「已完成」不是證據。驗證必須是可獨立執行且產生可觀察輸出的。
|
|
41
54
|
|
|
55
|
+
### Non-Evidence Claims
|
|
56
|
+
|
|
57
|
+
None of the following constitute verification evidence:
|
|
58
|
+
|
|
59
|
+
| Claim | Why it isn't evidence |
|
|
60
|
+
|-------|----------------------|
|
|
61
|
+
| "Done." | No observable output |
|
|
62
|
+
| "It should work now." | No verification was executed |
|
|
63
|
+
| "I changed the code." | A modification is not a verification |
|
|
64
|
+
| "The tests should pass." | A prediction is not a fact |
|
|
65
|
+
| "The command returned 0." | Only if the command could have measured the claim — see Evidence Validity |
|
|
66
|
+
|
|
42
67
|
---
|
|
43
68
|
|
|
44
69
|
## Evidence Format
|
|
@@ -50,7 +75,8 @@ Every verification must produce a structured evidence record:
|
|
|
50
75
|
"command": "pnpm test -- --filter core",
|
|
51
76
|
"exit_code": 0,
|
|
52
77
|
"output": "Tests: 47 passed, 0 failed\nDuration: 3.2s",
|
|
53
|
-
"timestamp": "2026-03-20T14:30:00Z"
|
|
78
|
+
"timestamp": "2026-03-20T14:30:00Z",
|
|
79
|
+
"environment_layer": "local"
|
|
54
80
|
}
|
|
55
81
|
```
|
|
56
82
|
|
|
@@ -59,9 +85,44 @@ Every verification must produce a structured evidence record:
|
|
|
59
85
|
| Field | Type | Required | Description |
|
|
60
86
|
|-------|------|----------|-------------|
|
|
61
87
|
| `command` | string | Yes | The actual verification command executed |
|
|
62
|
-
| `exit_code` | number | Yes | Command exit code
|
|
88
|
+
| `exit_code` | number | Yes | Command exit code. **Interpret via Evidence Validity — this field is a claim, not a fact** |
|
|
63
89
|
| `output` | string | Yes | Command output (truncated to 2000 chars, preserving key info) |
|
|
64
90
|
| `timestamp` | string | Yes | Execution time in ISO 8601 format |
|
|
91
|
+
| `environment_layer` | string | Conditional | Which layer the evidence came from (`local` / `uat` / `prd`). **Required for any AC with an external service dependency** (SMS, payment, IdP); when absent, the AC's verification level is treated as local-only |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Evidence Types
|
|
96
|
+
|
|
97
|
+
| Type | Applies to | Example |
|
|
98
|
+
|------|-----------|---------|
|
|
99
|
+
| **Test result** | Feature work, bug fixes | `npm test` output |
|
|
100
|
+
| **Type check** | Statically typed codebases | `pnpm tsc --noEmit` reporting no errors |
|
|
101
|
+
| **Build success** | Compilation, packaging | `npm run build` exiting 0 |
|
|
102
|
+
| **Lint clean** | Code quality | `npm run lint` reporting no errors |
|
|
103
|
+
| **RED-GREEN** | Bug fixes | Failing before the fix → passing after |
|
|
104
|
+
| **Health probe** | Deployed services | `curl https://<service>/health` — declare `environment_layer`; a probe against `localhost` verifies the local process, not the deployment |
|
|
105
|
+
| **Manual verification** | UI changes, visual behaviour | Screenshot or screen recording |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Environment Layers
|
|
110
|
+
|
|
111
|
+
> **Iron Law (Environment)**: before acceptance, establish *which dimensions of this flow this environment layer is capable of verifying at all*.
|
|
112
|
+
|
|
113
|
+
驗收前必須確認「此環境層次能驗證此流程的哪些維度」。
|
|
114
|
+
|
|
115
|
+
A passing test proves nothing about a dimension the environment cannot exercise. A `local` run with a mocked payment gateway does not verify the payment integration — it verifies the mock. Evidence must therefore declare where it was collected.
|
|
116
|
+
|
|
117
|
+
| Layer | Meaning |
|
|
118
|
+
|-------|---------|
|
|
119
|
+
| `local` | Developer machine or CI; external dependencies typically mocked or stubbed |
|
|
120
|
+
| `uat` | Staging environment with real (or sandbox) external services |
|
|
121
|
+
| `prd` | Production |
|
|
122
|
+
|
|
123
|
+
For an AC that depends on an external service, `local`-only evidence is **insufficient**: either supply `uat`/`prd` evidence, or declare the gap explicitly. See VE-005 / VE-006.
|
|
124
|
+
|
|
125
|
+
> The declaration goes in the project's **Environment Stratification Responsibility Matrix** (`docs/testing/environment-stratification-matrix.md` or the test plan) — a per-project deliverable defined by the `deployment-standards` standard, which answers "which test flows can be fully verified in which environment?". Mark the un-verifiable combinations ⚠️/❌ there rather than leaving them implied by a passing local run.
|
|
65
126
|
|
|
66
127
|
---
|
|
67
128
|
|
|
@@ -107,12 +168,63 @@ The evidence record must include both RED and GREEN phases.
|
|
|
107
168
|
|
|
108
169
|
---
|
|
109
170
|
|
|
171
|
+
## Evidence Validity
|
|
172
|
+
|
|
173
|
+
> **The evidence can lie. Verify the evidence, not just the claim.**
|
|
174
|
+
|
|
175
|
+
證據本身會騙人。要驗的不只是「有沒有證據」,還有「這個證據成不成立」。
|
|
176
|
+
|
|
177
|
+
The Iron Law stops an agent from claiming success **without** evidence. It does not stop the opposite failure: the agent *does* run a verification, the command *does* return, `exit_code` *is* `0` — **and the output is meaningless**, because the command never actually measured anything.
|
|
178
|
+
|
|
179
|
+
This is not hallucination. Hallucination is inventing what you did not check. This is the reverse: **you checked, and the checking tool lied to you.** The `anti-hallucination` standard does not cover it — every prohibition there is a form of "don't make things up", and here nothing was made up.
|
|
180
|
+
|
|
181
|
+
### The four validity rules
|
|
182
|
+
|
|
183
|
+
**1. `exit_code = 0` means success only for tools that return 0 on success.**
|
|
184
|
+
|
|
185
|
+
The convention is near-universal, which is exactly why it goes unquestioned. When a tool fails **by design** in the situation under test, its non-zero exit code carries no information about the artefact — read the *output* instead. The inverse holds too: a non-zero exit code does not establish that the thing under test is broken.
|
|
186
|
+
|
|
187
|
+
**2. "Empty output" / "not found" / `0` is not the same as "it isn't there."**
|
|
188
|
+
|
|
189
|
+
Before concluding absence, establish that the query tool *ran successfully*: it was not `command not found`, it was not denied permission, its arguments were not consumed by an intervening shell. **Verify the query tool works before trusting the query's silence.**
|
|
190
|
+
|
|
191
|
+
**3. Commands that test for existence must not discard stderr.**
|
|
192
|
+
|
|
193
|
+
Suppressing stderr (`2>/dev/null` and equivalents) silences precisely the channel that would have reported "this tool is broken". The failure then wears the same clothes as a true negative.
|
|
194
|
+
|
|
195
|
+
**4. A pipeline's exit code does not belong to any single stage in it.**
|
|
196
|
+
|
|
197
|
+
With `set -o pipefail`, `producer | grep -q pattern` inherits a non-zero from `producer` regardless of whether `grep` matched. When the decision depends on content, **capture the output first, then evaluate it** — do not let a pipeline collapse two questions into one number.
|
|
198
|
+
|
|
199
|
+
### Evidence of the failure mode
|
|
200
|
+
|
|
201
|
+
The following are real verification commands run by an AI agent on 2026-07-17, each of which produced a confident, wrong conclusion that was then reported as fact:
|
|
202
|
+
|
|
203
|
+
| Verification command | `exit_code` | Output | Ground truth |
|
|
204
|
+
|---|:---:|---|---|
|
|
205
|
+
| `sudo -n find /backup/immich -type f 2>/dev/null \| wc -l` | **0** | `0` | `sudo` failed for lack of a tty, `2>/dev/null` ate the error, empty input made `wc -l` print `0`. **31 files existed.** Reported as "the backups are empty" |
|
|
206
|
+
| `gpg --list-packets <valid-file.gpg>` | **≠ 0** | Well-formed packet listing | The host holds no private key **by design**; gpg always exits non-zero here. **The file was valid.** Acted on by deleting a good encrypted backup |
|
|
207
|
+
| `gpg … \| grep -q "tag=1"` under `pipefail` | **≠ 0** | grep *did* match | The pipeline inherited gpg's non-zero; the match was irrelevant. **Deleted a good backup a second time** |
|
|
208
|
+
| `grep -c "${VAR}/path" file` over SSH in double quotes | **0** | `0` | `${VAR}` was expanded by the *local* shell to an empty string; the remote grep searched for the wrong text |
|
|
209
|
+
| `gpg --import key.asc 2>/dev/null` | — | (empty) | gpg **was not installed**; `command not found` went to the suppressed stderr |
|
|
210
|
+
| `until ! ssh host 'systemctl is-active svc'; do …` | — | loop exited | **A failed SSH connection and a finished service produce the same exit code.** The "result" read afterwards was a stale value from a previous run |
|
|
211
|
+
| `du -sh /data/*` as an unprivileged user | **0** | `4.0K` | Unreadable directories were reported as near-empty rather than as errors |
|
|
212
|
+
| `case "$tag" in *M*)` searching for monthly snapshots | **0** | (no match) | The tag's actual value was `monthly` — no capital `M`. Nearly became "there are no monthly snapshots" |
|
|
213
|
+
|
|
214
|
+
**Four of these had `exit_code = 0` and were false; two had `exit_code ≠ 0` and were true.** The field was unreliable in both directions — and in both of the non-zero cases, following VE-002 ("mark verification failed, trigger fix loop") destroyed a healthy artefact.
|
|
215
|
+
|
|
216
|
+
> **Provenance**: all instances come from a single day's work by a single agent (Claude Opus 4.8), recorded in AsiaOstrich XSPEC-340. The sample is dense but narrow. It is offered as evidence rather than proof — though note that every failure above originates in the *semantics of the tools* (sudo, gpg, pipefail, POSIX exit codes), not in any property of the model, so any agent driving the same tools is exposed to the same traps.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
110
220
|
## Trust Rules
|
|
111
221
|
|
|
112
222
|
| Rule | Description |
|
|
113
223
|
|------|-------------|
|
|
114
224
|
| Agent says "done" but no `verification_evidence` | Mark as **unverified** |
|
|
115
|
-
| `verification_evidence` exists but `exit_code ≠ 0` | Mark as **verification failed** |
|
|
225
|
+
| `verification_evidence` exists but `exit_code ≠ 0` | Mark as **verification failed** — **unless** the tool is known to exit non-zero in the state under test (Evidence Validity rule 1), in which case judge by output |
|
|
226
|
+
| `exit_code = 0` but the command could not have measured the claim | Mark as **unverified** — a passing command that ran in the wrong place, or never ran at all, is not evidence |
|
|
227
|
+
| Evidence asserts absence (`0`, empty, "not found") | Mark as **unverified** until the query tool is shown to have executed successfully |
|
|
116
228
|
| Multiple verification steps | **All** steps must pass |
|
|
117
229
|
| Agent provides evidence for wrong command | Mark as **unverified** |
|
|
118
230
|
|
|
@@ -123,9 +235,15 @@ The evidence record must include both RED and GREEN phases.
|
|
|
123
235
|
| ID | Trigger | Action | Priority |
|
|
124
236
|
|----|---------|--------|----------|
|
|
125
237
|
| VE-001 | Agent reports success without verification_evidence | Downgrade to `done_with_concerns` | Critical |
|
|
126
|
-
| VE-002 | `exit_code ≠ 0` in evidence | Mark verification failed, trigger fix loop | High |
|
|
238
|
+
| VE-002 | `exit_code ≠ 0` in evidence | Mark verification failed, trigger fix loop — **after** confirming the tool returns 0 on success in this state (see VE-007) | High |
|
|
127
239
|
| VE-003 | Bug fix without RED-GREEN cycle | Request both RED and GREEN evidence | High |
|
|
128
240
|
| VE-004 | Output exceeds 2000 chars | Truncate but preserve error messages and summary lines | Medium |
|
|
241
|
+
| VE-005 | AC has an external service dependency (SMS, payment, IdP) | Evidence must declare `environment_layer`; local-only evidence is insufficient | Required |
|
|
242
|
+
| VE-006 | AC with external dependency marked done, no `environment_layer` | Downgrade to `done_with_concerns`; require the layer declaration or a ⚠️/❌ entry in the environment-stratification-matrix | High |
|
|
243
|
+
| VE-007 | The verification tool exits non-zero in the state under test **by design** | VE-002 does not apply. Judge by output content; **do not trigger a fix loop against a healthy artefact** | Critical |
|
|
244
|
+
| VE-008 | Evidence claims absence (`0`, empty output, "not found") | Invalid until the query tool is shown to have run successfully. Re-run without stderr suppression | High |
|
|
245
|
+
| VE-009 | An existence/absence check suppresses stderr (`2>/dev/null` or equivalent) | Evidence does not stand. Re-run with stderr visible | High |
|
|
246
|
+
| VE-010 | Evidence's `exit_code` comes from a pipeline (esp. under `pipefail`) | The code attributes to no single stage. Capture the output and evaluate content instead | Medium |
|
|
129
247
|
|
|
130
248
|
---
|
|
131
249
|
|
|
@@ -163,10 +281,52 @@ message: "I've completed the task and everything should work now."
|
|
|
163
281
|
# ❌ No verification_evidence — violates Iron Law
|
|
164
282
|
```
|
|
165
283
|
|
|
284
|
+
### Bad: Evidence That Cannot Support Its Claim
|
|
285
|
+
|
|
286
|
+
```yaml
|
|
287
|
+
claim: "The backup directory is empty — backups are not running."
|
|
288
|
+
verification_evidence:
|
|
289
|
+
- command: "sudo -n find /backup/immich -type f 2>/dev/null | wc -l"
|
|
290
|
+
exit_code: 0
|
|
291
|
+
output: "0"
|
|
292
|
+
timestamp: "2026-07-17T13:05:00Z"
|
|
293
|
+
# ❌ Passes the Iron Law: evidence exists, exit_code is 0, output is concrete.
|
|
294
|
+
# ❌ Violates VE-008, VE-009, VE-010:
|
|
295
|
+
# - claims absence without showing the query tool ran (VE-008)
|
|
296
|
+
# - suppresses the stderr that said "sudo: a terminal is required" (VE-009)
|
|
297
|
+
# - the exit code is the pipeline's, i.e. `wc -l`'s — `find` never ran (VE-010)
|
|
298
|
+
# 31 files were present. Directory listed as empty because nothing looked.
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Good: The Same Check, Made Valid
|
|
302
|
+
|
|
303
|
+
```yaml
|
|
304
|
+
claim: "The backup directory holds 31 files."
|
|
305
|
+
verification_evidence:
|
|
306
|
+
- command: "ssh host 'sudo find /backup/immich -type f | wc -l'" # stderr not suppressed
|
|
307
|
+
exit_code: 0
|
|
308
|
+
output: "31"
|
|
309
|
+
timestamp: "2026-07-17T13:07:00Z"
|
|
310
|
+
environment_layer: "prd"
|
|
311
|
+
# ✅ stderr would have surfaced a sudo/permission failure instead of printing 0
|
|
312
|
+
# ✅ single-quoted so ${...} is not expanded by the local shell before transit
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Related Standards
|
|
318
|
+
|
|
319
|
+
- [Anti-Hallucination](anti-hallucination.md) — the complementary standard. It prevents *fabricated* claims (asserting what was never checked); Evidence Validity covers the opposite failure — claims that **were** checked, by a tool that silently did not work.
|
|
320
|
+
- [Systematic Debugging](systematic-debugging.md) — how to investigate once evidence shows a real failure
|
|
321
|
+
- [Checkin Standards](checkin-standards.md) — where completion claims are gated
|
|
322
|
+
- [Test Governance](test-governance.md) — which tests are required, and therefore which evidence must exist
|
|
323
|
+
- [Testing Standards](testing-standards.md) — how the tests that produce most evidence are written
|
|
324
|
+
- [Agent Dispatch](agent-dispatch.md) — delegated work returns claims that need this standard applied to them
|
|
325
|
+
- [Deployment Standards](deployment-standards.md) — defines the Environment Stratification Responsibility Matrix referenced by VE-005 / VE-006
|
|
326
|
+
|
|
166
327
|
---
|
|
167
328
|
|
|
168
329
|
## References
|
|
169
330
|
|
|
170
331
|
- **Superpowers**: [verification-before-completion](https://github.com/obra/superpowers) (MIT)
|
|
171
332
|
- **Test-Driven Development**: RED-GREEN-REFACTOR cycle
|
|
172
|
-
- **Anti-Hallucination**: Complementary standard for preventing fabricated claims
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# UDS Locale Coverage
|
|
2
2
|
|
|
3
|
-
> Auto-generated by `scripts/generate-locale-coverage.mjs` on 2026-
|
|
3
|
+
> Auto-generated by `scripts/generate-locale-coverage.mjs` on 2026-07-16.
|
|
4
4
|
> Do not edit manually — re-run the script.
|
|
5
5
|
|
|
6
|
-
> **Canonical**: `skills/` (55) + `core/` (
|
|
6
|
+
> **Canonical**: `skills/` (55) + `core/` (149). **Locales tracked**: `zh-CN`, `zh-TW`.
|
|
7
7
|
|
|
8
8
|
## Skills (55 canonical)
|
|
9
9
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
| atdd-assistant | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
19
19
|
| audit-assistant | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
20
20
|
| bdd-assistant | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
21
|
-
| brainstorm-assistant | :white_check_mark:
|
|
21
|
+
| brainstorm-assistant | :white_check_mark: 4.1.0 | :white_check_mark: 4.1.0 |
|
|
22
22
|
| changelog-guide | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
23
23
|
| checkin-assistant | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
24
24
|
| ci-cd-assistant | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
| incident-response-assistant | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
39
39
|
| journey-test-assistant | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
40
40
|
| knowledge-graph | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
41
|
-
| logging-guide | :white_check_mark: 1.
|
|
41
|
+
| logging-guide | :white_check_mark: 1.4.0 | :white_check_mark: 1.4.0 |
|
|
42
42
|
| metrics-dashboard-assistant | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
43
43
|
| migration-assistant | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
44
44
|
| observability-assistant | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
**zh-CN skills coverage**: 55/55 (100%)
|
|
69
69
|
**zh-TW skills coverage**: 55/55 (100%)
|
|
70
70
|
|
|
71
|
-
## Standards (`core/` —
|
|
71
|
+
## Standards (`core/` — 149 canonical)
|
|
72
72
|
|
|
73
73
|
| Standard | zh-CN | zh-TW |
|
|
74
74
|
| :-- | :-: | :-: |
|
|
@@ -88,12 +88,12 @@
|
|
|
88
88
|
| alerting-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
89
89
|
| anti-hallucination.md | :white_check_mark: 1.5.1 | :white_check_mark: 1.5.1 |
|
|
90
90
|
| anti-sycophancy-prompting.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
91
|
-
| api-design-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.
|
|
91
|
+
| api-design-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.1.0 |
|
|
92
92
|
| audit-trail.md | :x: | :white_check_mark: 1.0.0 |
|
|
93
93
|
| behavior-driven-development.md | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
94
|
-
| behavior-snapshot.md | :white_check_mark: 1.
|
|
94
|
+
| behavior-snapshot.md | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
95
95
|
| branch-completion.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
96
|
-
| browser-compatibility-standards.md | :white_check_mark: 1.0.
|
|
96
|
+
| browser-compatibility-standards.md | :white_check_mark: 1.0.2 | :white_check_mark: 1.0.0 |
|
|
97
97
|
| capability-declaration.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
98
98
|
| cd-deployment-strategies.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
99
99
|
| change-batching-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
@@ -110,13 +110,13 @@
|
|
|
110
110
|
| context-aware-loading.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
111
111
|
| contract-testing-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
112
112
|
| cost-budget-test.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
113
|
-
| cross-flow-regression.md | :white_check_mark: 1.0.
|
|
113
|
+
| cross-flow-regression.md | :white_check_mark: 1.0.1 | :white_check_mark: 1.0.0 |
|
|
114
114
|
| data-contract.md | :x: | :white_check_mark: 1.0.0 |
|
|
115
115
|
| data-migration-testing.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
116
116
|
| data-pipeline.md | :x: | :white_check_mark: 1.0.0 |
|
|
117
117
|
| database-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
118
118
|
| deployment-standards.md | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
119
|
-
| deprecation-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.
|
|
119
|
+
| deprecation-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.1.0 |
|
|
120
120
|
| design-document-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
121
121
|
| developer-memory.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
122
122
|
| disaster-recovery-drill.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
@@ -129,10 +129,11 @@
|
|
|
129
129
|
| estimation-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
130
130
|
| execution-history.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
131
131
|
| failure-source-taxonomy.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
132
|
+
| feature-discovery-standards.md | :x: | :x: |
|
|
132
133
|
| feature-flag-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
133
134
|
| feature-manifest-standard.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
134
135
|
| flaky-test-management.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
135
|
-
| flow-based-testing.md | :white_check_mark: 1.3.
|
|
136
|
+
| flow-based-testing.md | :white_check_mark: 1.3.1 | :white_check_mark: 1.3.1 |
|
|
136
137
|
| forward-derivation-standards.md | :white_check_mark: 1.2.0 | :white_check_mark: 1.2.0 |
|
|
137
138
|
| frontend-design-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
138
139
|
| full-coverage-testing.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.1.0 |
|
|
@@ -147,10 +148,11 @@
|
|
|
147
148
|
| knowledge-transfer-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
148
149
|
| license-compliance.md | :white_check_mark: 2.1.0 | :white_check_mark: 2.1.0 |
|
|
149
150
|
| llm-output-validation.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
150
|
-
| logging-standards.md | :white_check_mark: 1.
|
|
151
|
-
| mock-boundary.md | :white_check_mark: 1.
|
|
151
|
+
| logging-standards.md | :white_check_mark: 1.4.0 | :white_check_mark: 1.4.0 |
|
|
152
|
+
| mock-boundary.md | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
152
153
|
| model-provenance.md | :x: | :white_check_mark: 1.0.0 |
|
|
153
154
|
| model-selection.md | :white_check_mark: 1.0.1 | :white_check_mark: 1.0.1 |
|
|
155
|
+
| multi-environment-e2e-testing.md | :x: | :x: |
|
|
154
156
|
| mutation-testing.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
155
157
|
| no-cicd-deployment.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
156
158
|
| observability-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
@@ -168,8 +170,9 @@
|
|
|
168
170
|
| project-structure.md | :white_check_mark: 1.2.0 | :white_check_mark: 1.2.0 |
|
|
169
171
|
| prompt-regression.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
170
172
|
| property-based-testing.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
173
|
+
| push-standards.md | :x: | :x: |
|
|
171
174
|
| recovery-recipe-registry.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
172
|
-
| refactoring-standards.md | :white_check_mark: 2.1.0 | :white_check_mark: 2.
|
|
175
|
+
| refactoring-standards.md | :white_check_mark: 2.1.0 | :white_check_mark: 2.2.0 |
|
|
173
176
|
| release-quality-manifest.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
174
177
|
| release-readiness-gate.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
175
178
|
| replay-test.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
@@ -177,7 +180,7 @@
|
|
|
177
180
|
| resource-cost-boundary.md | :x: | :white_check_mark: 1.0.0 |
|
|
178
181
|
| retrospective-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
179
182
|
| retry-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
180
|
-
| reverse-engineering-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.
|
|
183
|
+
| reverse-engineering-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.2.0 |
|
|
181
184
|
| rollback-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
182
185
|
| runbook-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
183
186
|
| runbook.md | :x: | :white_check_mark: 1.0.0 |
|
|
@@ -187,8 +190,8 @@
|
|
|
187
190
|
| secure-op.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
188
191
|
| security-decision.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
189
192
|
| security-standards.md | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
190
|
-
| security-testing.md | :white_check_mark: 1.
|
|
191
|
-
| self-review-protocol.md | :white_check_mark: 1.
|
|
193
|
+
| security-testing.md | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
194
|
+
| self-review-protocol.md | :white_check_mark: 1.1.0 | :white_check_mark: 1.1.0 |
|
|
192
195
|
| server-ops-security.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
193
196
|
| skill-standard-alignment-check.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
194
197
|
| slo-sli.md | :x: | :white_check_mark: 1.0.0 |
|
|
@@ -210,22 +213,25 @@
|
|
|
210
213
|
| timeout-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
211
214
|
| token-budget.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
212
215
|
| translation-lifecycle-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
216
|
+
| user-journey-testing.md | :x: | :white_check_mark: 1.0.0 |
|
|
213
217
|
| user-story-mapping.md | :x: | :white_check_mark: 1.0.0 |
|
|
214
218
|
| verification-evidence.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
215
219
|
| verification-oracle.md | :x: | :white_check_mark: 1.0.0 |
|
|
216
|
-
| versioning.md | :
|
|
220
|
+
| versioning.md | :warning: 1.2.0 (drift 3m) | :white_check_mark: 1.5.0 |
|
|
217
221
|
| virtual-organization-standards.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
218
222
|
| workflow-enforcement.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
219
223
|
| workflow-state-protocol.md | :white_check_mark: 1.0.0 | :white_check_mark: 1.0.0 |
|
|
220
224
|
|
|
221
|
-
**zh-CN core coverage**: 128/
|
|
222
|
-
**zh-TW core coverage**:
|
|
225
|
+
**zh-CN core coverage**: 128/149 (86%)
|
|
226
|
+
**zh-TW core coverage**: 146/149 (98%)
|
|
223
227
|
|
|
224
228
|
## Drift Warnings
|
|
225
229
|
|
|
226
230
|
Locale variants whose `translation_version` lags `source_version` by more than 2 minor versions, or by any major version. (Per XSPEC-239 Chimera Prevention — `translation-drift-warn`.)
|
|
227
231
|
|
|
228
|
-
|
|
232
|
+
### zh-CN
|
|
233
|
+
|
|
234
|
+
- **core/versioning.md**: translation `1.2.0` vs source `1.5.0` (3 minor versions behind)
|
|
229
235
|
|
|
230
236
|
## Legend
|
|
231
237
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: ../../CHANGELOG.md
|
|
3
|
-
source_version: 6.
|
|
4
|
-
translation_version: 6.
|
|
5
|
-
last_synced: 2026-07-
|
|
3
|
+
source_version: 6.1.0
|
|
4
|
+
translation_version: 6.1.0
|
|
5
|
+
last_synced: 2026-07-17
|
|
6
6
|
status: current
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -17,6 +17,29 @@ status: current
|
|
|
17
17
|
|
|
18
18
|
## [Unreleased]
|
|
19
19
|
|
|
20
|
+
## [6.1.0] - 2026-07-17
|
|
21
|
+
|
|
22
|
+
> **同一种形状的两个失败,一个在标准里、一个在 CLI 里**:一道检查跑了、返回了、报告成功,却什么都没测到。`verification-evidence` 补上了为它命名的那一层;`uds init` 则不再是它的一个实例。
|
|
23
|
+
|
|
24
|
+
### 修复
|
|
25
|
+
|
|
26
|
+
- **`uds init` 不再覆盖既有的 `prepare` script**(XSPEC-341)。自 2026-02-04 起,`uds init` 会对任何没有 `.husky/` 目录的 Node 项目执行 `npx husky init`。该命令是为**全新**项目设计的一次性 bootstrap:它会无条件把 `"prepare"` 设成 `"husky"`。若你的项目原本就有 `prepare`——而对一个要发布的包而言,`prepare` 通常就是 build 步骤——**它会被静默取代**,而 CLI 报告成功。`uds init` 现在改为串接而非覆写(`"tsup"` → `"tsup && husky"`),会打印出它所修改的每一个 `package.json` 字段,也不再丢弃 husky 的 stderr。
|
|
27
|
+
|
|
28
|
+
> **⚠️ 若你曾在原本就有 `prepare` script 的项目上跑过 `uds init`,请立即检查。** 这次修复保护的是往后的执行;它无法还原一个已经被改写的 `package.json`。症状是:你预期看到自己的 build 命令,实际看到的却是 `"prepare": "husky"`——而如果你的包会发布构建产物(`files: ["dist"]`、`main` 指向 `dist/`)且没有 `prepack`/`prepublishOnly`,那么你下一次 `npm publish` 送出去的将是一个未构建或过期的目录。请以串接方式恢复:`"prepare": "<你原本的命令> && husky"`。
|
|
29
|
+
|
|
30
|
+
- **`uds init` 不再把 `npm test` 塞进 `.husky/pre-commit`**(XSPEC-341)。那一行来自 husky 的 init 模板,不是来自 UDS——它等于在每一次 commit 上架了一道采用者从未选择加入的完整测试套件闸门。UDS 现在只追加自己的 `npx uds check`,而且是追加到既有 hook 之后,而不是改写它们。
|
|
31
|
+
|
|
32
|
+
- **新建的 husky hook 改以 v9 格式写入**(XSPEC-341)。fallback 的 hook 模板仍在输出 v8 的 `#!/usr/bin/env sh` + `. "$(dirname -- "$0")/_/husky.sh"` 前导段,该写法在 husky v9 已弃用、v10 已移除——而 `uds init` 安装的正是 husky `^9`。这原本是潜伏问题(过去 hook 是由 husky init 写出的);移除 `husky init` 后,fallback 升为主要路径,因此一并修复。
|
|
33
|
+
|
|
34
|
+
### 变更
|
|
35
|
+
|
|
36
|
+
- **`verification-evidence` 1.1.0 → 1.2.0 —— 证据有效性**(XSPEC-340)。本标准原本把 `exit_code` 当成事实真相:`trust_rules` 写着"`exit_code ≠ 0` → 验证失败"、`physical_spec.checks` 问的是"`exit_code` 是否为 0(成功)?"、VE-002 只要非零就触发修复循环。**这三处现已全数加上限定条件**,因为一道验证命令可以跑完、可以返回,却什么意义都没有:
|
|
37
|
+
- **新增 `evidence_validity` 层次与规则 VE-007 – VE-010**:只有在"成功时返回 0"的工具上,`exit_code = 0` 才代表成功(VE-007);在证明查询工具确实执行过之前,"空/未找到/0"不等于不存在(VE-008);存在性检查不得丢弃 stderr(VE-009);pipeline 的退出码不属于其中任何单一阶段(VE-010)。
|
|
38
|
+
- **新增 `non_evidence_claims`**:"已完成"/"应该可以了"/"我改了代码"/"测试应该会通过"/"命令返回 0"。
|
|
39
|
+
- 有别于 `anti-hallucination`——后者的禁令全都是"不要断言你没查过的事"的变形。这里是相反的失败:**确实查了,而查询工具静默地没有运作**。`core/verification-evidence.md` 收录了十笔真实案例作为证据。
|
|
40
|
+
- **`verification-evidence` 的人类文档补上了 v1.1.0 的落差。** v1.1.0 的 `environment_layer` 工作(XSPEC-204)已落地于全部三份 `.ai.yaml`,却**一份 `.md` 都没有更新**(共四份)——人类文档自 2026-05-13 起就一直在错误地描述这个标准。`core/*.md` 现已载明 `environment_layer`、Environment Layers 章节,以及 VE-005 / VE-006。
|
|
41
|
+
- **`verification-evidence` 新增三个先前只存在于 zh-TW 译文的章节**:非证据的声明(Non-Evidence Claims)、证据类型(Evidence Types)、相关标准(Related Standards)。译文比它的来源更完整;这些章节现已上溯至英文来源,并同时存在于两个语系。
|
|
42
|
+
|
|
20
43
|
## [6.0.0] - 2026-07-06
|
|
21
44
|
|
|
22
45
|
> ⚠️ **重大版本(Major release)。** 包含一项 breaking 更名,并移除 8 个已弃用的机器可读标准与 4 个已弃用的 CLI 命令(皆自 5.4.0 起带有「将于 6.0.0 移除」告示)。**请参阅 [v6 迁移指南](docs/MIGRATION-v6.md)**([English](../../docs/MIGRATION-v6.md) | [繁体中文](../zh-TW/docs/MIGRATION-v6.md))。
|
|
@@ -14,7 +14,7 @@ status: current
|
|
|
14
14
|
|
|
15
15
|
Universal Development Standards 是一个语言无关、框架无关的文件化标准框架。它提供:
|
|
16
16
|
|
|
17
|
-
- **核心规范** (`core/`):
|
|
17
|
+
- **核心规范** (`core/`):149 个基础开发标准
|
|
18
18
|
- **AI 技能** (`skills/`):用于 AI 辅助开发的 Claude Code 技能
|
|
19
19
|
- **CLI 工具** (`cli/`):用于采用标准的 Node.js CLI
|
|
20
20
|
- **整合** (`integrations/`):各种 AI 工具的配置
|