dsh-plugin-guide 0.4.5 → 0.4.6
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/README.en.md +7 -2
- package/README.es.md +7 -2
- package/README.hi.md +7 -2
- package/README.md +7 -2
- package/README.pt.md +7 -2
- package/docs/assets/dsh-plugin-guide-flow-v3-dark.svg +82 -0
- package/docs/assets/dsh-plugin-guide-flow-v3-light.svg +82 -0
- package/docs/assets/dsh-plugin-guide-flow-v4-dark.svg +55 -0
- package/docs/assets/dsh-plugin-guide-flow-v4-light.svg +55 -0
- package/docs/assets/dsh-plugin-guide-hero-en-dark.webp +0 -0
- package/docs/assets/dsh-plugin-guide-hero-en-light.webp +0 -0
- package/docs/assets/dsh-plugin-guide-hero-zh-dark.webp +0 -0
- package/docs/assets/dsh-plugin-guide-hero-zh-light.webp +0 -0
- package/docs/flow.md +108 -54
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
<picture>
|
|
4
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-
|
|
5
|
-
<img src="docs/assets/dsh-plugin-guide-
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-hero-en-dark.webp">
|
|
5
|
+
<img src="docs/assets/dsh-plugin-guide-hero-en-light.webp" width="100%" alt="dsh-plugin-guide: ENTRY / FLOW / BOOST question lists; the verdict belongs to dsh-standards">
|
|
6
6
|
</picture>
|
|
7
7
|
|
|
8
8
|
# dsh-plugin-guide
|
|
@@ -42,6 +42,11 @@ dsh plugin --profile web add dsh-plugin-guide
|
|
|
42
42
|
| **`dsh-plugin-spec`** | The low-level rule text and clause source |
|
|
43
43
|
| **`dsh-primer`** | The legacy build/scaffold skill and CLI (formerly `dsh-plugin-guide` 0.3.x) |
|
|
44
44
|
|
|
45
|
+
<picture>
|
|
46
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-flow-v4-dark.svg">
|
|
47
|
+
<img src="docs/assets/dsh-plugin-guide-flow-v4-light.svg" width="100%" alt="dsh-plugin-guide assembly and routing: cordis.patch.yml → index.js → SKILL.md → docs/levels.md → dsh-standards">
|
|
48
|
+
</picture>
|
|
49
|
+
|
|
45
50
|
## Three-step setup
|
|
46
51
|
|
|
47
52
|
1. **Install** (pick one channel):
|
package/README.es.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
<picture>
|
|
4
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-
|
|
5
|
-
<img src="docs/assets/dsh-plugin-guide-
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-hero-en-dark.webp">
|
|
5
|
+
<img src="docs/assets/dsh-plugin-guide-hero-en-light.webp" width="100%" alt="dsh-plugin-guide: ENTRY / FLOW / BOOST question lists; the verdict belongs to dsh-standards">
|
|
6
6
|
</picture>
|
|
7
7
|
|
|
8
8
|
# dsh-plugin-guide
|
|
@@ -42,6 +42,11 @@ dsh plugin --profile web add dsh-plugin-guide
|
|
|
42
42
|
| **`dsh-plugin-spec`** | El texto de reglas de bajo nivel y la fuente de las cláusulas |
|
|
43
43
|
| **`dsh-primer`** | La skill y CLI heredadas de construcción/andamiaje (antiguo `dsh-plugin-guide` 0.3.x) |
|
|
44
44
|
|
|
45
|
+
<picture>
|
|
46
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-flow-v4-dark.svg">
|
|
47
|
+
<img src="docs/assets/dsh-plugin-guide-flow-v4-light.svg" width="100%" alt="dsh-plugin-guide assembly and routing: cordis.patch.yml → index.js → SKILL.md → docs/levels.md → dsh-standards">
|
|
48
|
+
</picture>
|
|
49
|
+
|
|
45
50
|
## Instalación en tres pasos
|
|
46
51
|
|
|
47
52
|
1. **Instalar** (elige un canal):
|
package/README.hi.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
<picture>
|
|
4
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-
|
|
5
|
-
<img src="docs/assets/dsh-plugin-guide-
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-hero-en-dark.webp">
|
|
5
|
+
<img src="docs/assets/dsh-plugin-guide-hero-en-light.webp" width="100%" alt="dsh-plugin-guide: ENTRY / FLOW / BOOST question lists; the verdict belongs to dsh-standards">
|
|
6
6
|
</picture>
|
|
7
7
|
|
|
8
8
|
# dsh-plugin-guide
|
|
@@ -42,6 +42,11 @@ dsh plugin --profile web add dsh-plugin-guide
|
|
|
42
42
|
| **`dsh-plugin-spec`** | निम्न-स्तरीय नियम-पाठ और धारा स्रोत |
|
|
43
43
|
| **`dsh-primer`** | पुरानी बिल्ड/स्कैफ़ोल्ड स्किल और CLI (पूर्व `dsh-plugin-guide` 0.3.x) |
|
|
44
44
|
|
|
45
|
+
<picture>
|
|
46
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-flow-v4-dark.svg">
|
|
47
|
+
<img src="docs/assets/dsh-plugin-guide-flow-v4-light.svg" width="100%" alt="dsh-plugin-guide assembly and routing: cordis.patch.yml → index.js → SKILL.md → docs/levels.md → dsh-standards">
|
|
48
|
+
</picture>
|
|
49
|
+
|
|
45
50
|
## तीन चरणों में शुरुआत
|
|
46
51
|
|
|
47
52
|
1. **इंस्टॉल करें** (कोई एक चैनल चुनें):
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
<picture>
|
|
4
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-
|
|
5
|
-
<img src="docs/assets/dsh-plugin-guide-
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-hero-zh-dark.webp">
|
|
5
|
+
<img src="docs/assets/dsh-plugin-guide-hero-zh-light.webp" width="100%" alt="dsh-plugin-guide:ENTRY / FLOW / BOOST 三层问题清单,判定交给 dsh-standards">
|
|
6
6
|
</picture>
|
|
7
7
|
|
|
8
8
|
# dsh-plugin-guide
|
|
@@ -42,6 +42,11 @@ dsh plugin --profile web add dsh-plugin-guide
|
|
|
42
42
|
| **`dsh-plugin-spec`** | 底层规则文本与条款来源 |
|
|
43
43
|
| **`dsh-primer`** | 旧的构建/脚手架技能和 CLI(原 `dsh-plugin-guide` 0.3.x) |
|
|
44
44
|
|
|
45
|
+
<picture>
|
|
46
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-flow-v4-dark.svg">
|
|
47
|
+
<img src="docs/assets/dsh-plugin-guide-flow-v4-light.svg" width="100%" alt="dsh-plugin-guide 装配与路由流程:cordis.patch.yml → index.js → SKILL.md → docs/levels.md → dsh-standards">
|
|
48
|
+
</picture>
|
|
49
|
+
|
|
45
50
|
## 三步上手
|
|
46
51
|
|
|
47
52
|
1. **安装**(三选一):
|
package/README.pt.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
<picture>
|
|
4
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-
|
|
5
|
-
<img src="docs/assets/dsh-plugin-guide-
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-hero-en-dark.webp">
|
|
5
|
+
<img src="docs/assets/dsh-plugin-guide-hero-en-light.webp" width="100%" alt="dsh-plugin-guide: ENTRY / FLOW / BOOST question lists; the verdict belongs to dsh-standards">
|
|
6
6
|
</picture>
|
|
7
7
|
|
|
8
8
|
# dsh-plugin-guide
|
|
@@ -42,6 +42,11 @@ dsh plugin --profile web add dsh-plugin-guide
|
|
|
42
42
|
| **`dsh-plugin-spec`** | O texto de regras de baixo nível e a fonte das cláusulas |
|
|
43
43
|
| **`dsh-primer`** | A skill e CLI legadas de construção/andaime (antigo `dsh-plugin-guide` 0.3.x) |
|
|
44
44
|
|
|
45
|
+
<picture>
|
|
46
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-flow-v4-dark.svg">
|
|
47
|
+
<img src="docs/assets/dsh-plugin-guide-flow-v4-light.svg" width="100%" alt="dsh-plugin-guide assembly and routing: cordis.patch.yml → index.js → SKILL.md → docs/levels.md → dsh-standards">
|
|
48
|
+
</picture>
|
|
49
|
+
|
|
45
50
|
## Instalação em três passos
|
|
46
51
|
|
|
47
52
|
1. **Instalar** (escolha um canal):
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="660" viewBox="0 0 1100 660" role="img" aria-label="dsh-plugin-guide assembly and routing">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="lineGrad" x1="0" y1="0" x2="1" y2="0">
|
|
4
|
+
<stop offset="0" stop-color="#8496f5" stop-opacity=".15"/>
|
|
5
|
+
<stop offset=".5" stop-color="#8496f5" stop-opacity=".9"/>
|
|
6
|
+
<stop offset="1" stop-color="#8496f5" stop-opacity=".15"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
<filter id="soft" x="-40%" y="-40%" width="180%" height="200%">
|
|
9
|
+
<feDropShadow dx="0" dy="9" stdDeviation="12" flood-color="#1b1735" flood-opacity="0.55"/>
|
|
10
|
+
</filter>
|
|
11
|
+
<pattern id="dots" width="28" height="28" patternUnits="userSpaceOnUse">
|
|
12
|
+
<circle cx="1.3" cy="1.3" r="1.3" fill="#182031"/>
|
|
13
|
+
</pattern>
|
|
14
|
+
</defs>
|
|
15
|
+
<rect width="1100" height="660" fill="#0d1117"/>
|
|
16
|
+
<rect width="1100" height="660" fill="url(#dots)" opacity=".5"/>
|
|
17
|
+
<text x="50" y="62" fill="#f0f3f9" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="32" font-weight="700">dsh-plugin-guide</text>
|
|
18
|
+
<text x="50" y="90" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16">assembly and routing · the guide asks, dsh-standards decides</text>
|
|
19
|
+
<rect x="50" y="108" width="1000" height="1.6" rx="1" fill="#2a3142"/>
|
|
20
|
+
<g filter="url(#soft)">
|
|
21
|
+
<rect x="50" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#2a3142" stroke-width="1.3"/>
|
|
22
|
+
</g>
|
|
23
|
+
<circle cx="74" cy="214" r="12" fill="#242d42"/>
|
|
24
|
+
<text x="74" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">01</text>
|
|
25
|
+
<text x="138.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">cordis.patch.yml</text>
|
|
26
|
+
<text x="138.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">one inserted row</text>
|
|
27
|
+
<path d="M231 249.0 C241.0 249.0, 241.0 249.0, 251 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
|
|
28
|
+
<path d="M241 244.0 l8 5 -8 5" fill="none" stroke="#8496f5" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
29
|
+
<g filter="url(#soft)">
|
|
30
|
+
<rect x="256" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#8496f5" stroke-width="2.6"/>
|
|
31
|
+
</g>
|
|
32
|
+
<circle cx="280" cy="214" r="12" fill="#242d42"/>
|
|
33
|
+
<text x="280" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">02</text>
|
|
34
|
+
<text x="344.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">index.js</text>
|
|
35
|
+
<text x="344.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">ctx.skills.register</text>
|
|
36
|
+
<path d="M437 249.0 C447.0 249.0, 447.0 249.0, 457 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
|
|
37
|
+
<path d="M447 244.0 l8 5 -8 5" fill="none" stroke="#8496f5" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
38
|
+
<g filter="url(#soft)">
|
|
39
|
+
<rect x="462" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#2a3142" stroke-width="1.3"/>
|
|
40
|
+
</g>
|
|
41
|
+
<circle cx="486" cy="214" r="12" fill="#242d42"/>
|
|
42
|
+
<text x="486" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">03</text>
|
|
43
|
+
<text x="550.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">SKILL.md</text>
|
|
44
|
+
<text x="550.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">the skill body</text>
|
|
45
|
+
<path d="M643 249.0 C653.0 249.0, 653.0 249.0, 663 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
|
|
46
|
+
<path d="M653 244.0 l8 5 -8 5" fill="none" stroke="#8496f5" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
47
|
+
<g filter="url(#soft)">
|
|
48
|
+
<rect x="668" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#2a3142" stroke-width="1.3"/>
|
|
49
|
+
</g>
|
|
50
|
+
<circle cx="692" cy="214" r="12" fill="#242d42"/>
|
|
51
|
+
<text x="692" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">04</text>
|
|
52
|
+
<text x="756.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">docs/levels.md</text>
|
|
53
|
+
<text x="756.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">ENTRY / FLOW / BOOST</text>
|
|
54
|
+
<path d="M849 249.0 C859.0 249.0, 859.0 249.0, 869 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
|
|
55
|
+
<path d="M859 244.0 l8 5 -8 5" fill="none" stroke="#8496f5" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
56
|
+
<g filter="url(#soft)">
|
|
57
|
+
<rect x="874" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#3fb950" stroke-width="2.6"/>
|
|
58
|
+
</g>
|
|
59
|
+
<circle cx="898" cy="214" r="12" fill="#242d42"/>
|
|
60
|
+
<text x="898" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">05</text>
|
|
61
|
+
<text x="962.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">dsh-standards</text>
|
|
62
|
+
<text x="962.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">dsh-levels verdict</text>
|
|
63
|
+
<g filter="url(#soft)">
|
|
64
|
+
<rect x="256" y="378" width="176" height="58" rx="15" fill="#242d42" stroke="#8496f5" stroke-width="1.2"/>
|
|
65
|
+
</g>
|
|
66
|
+
<text x="344" y="404" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="13" font-weight="700">ENTRY</text>
|
|
67
|
+
<text x="344" y="423" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">installs</text>
|
|
68
|
+
<g filter="url(#soft)">
|
|
69
|
+
<rect x="462" y="378" width="176" height="58" rx="15" fill="#242d42" stroke="#8496f5" stroke-width="1.2"/>
|
|
70
|
+
</g>
|
|
71
|
+
<text x="550" y="404" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="13" font-weight="700">FLOW</text>
|
|
72
|
+
<text x="550" y="423" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">works daily</text>
|
|
73
|
+
<g filter="url(#soft)">
|
|
74
|
+
<rect x="668" y="378" width="176" height="58" rx="15" fill="#242d42" stroke="#8496f5" stroke-width="1.2"/>
|
|
75
|
+
</g>
|
|
76
|
+
<text x="756" y="404" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="13" font-weight="700">BOOST</text>
|
|
77
|
+
<text x="756" y="423" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">faster</text>
|
|
78
|
+
<rect x="50" y="476" width="1000" height="58" rx="15" fill="#161b26" stroke="#2a3142"/>
|
|
79
|
+
<text x="74" y="502" fill="#8496f5" font-family="ui-monospace, monospace" font-size="13" font-weight="700">route / dsh-levels</text>
|
|
80
|
+
<text x="74" y="522" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">the guide explains what to check; the verdict belongs to dsh-standards</text>
|
|
81
|
+
<text x="50" y="596" fill="#a8b1c4" font-family="ui-monospace, monospace" font-size="13">Apache-2.0 · PerryLink DSH plugin family</text>
|
|
82
|
+
</svg>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="660" viewBox="0 0 1100 660" role="img" aria-label="dsh-plugin-guide assembly and routing">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="lineGrad" x1="0" y1="0" x2="1" y2="0">
|
|
4
|
+
<stop offset="0" stop-color="#4B67B4" stop-opacity=".15"/>
|
|
5
|
+
<stop offset=".5" stop-color="#4B67B4" stop-opacity=".9"/>
|
|
6
|
+
<stop offset="1" stop-color="#4B67B4" stop-opacity=".15"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
<filter id="soft" x="-40%" y="-40%" width="180%" height="200%">
|
|
9
|
+
<feDropShadow dx="0" dy="9" stdDeviation="12" flood-color="#1b1735" flood-opacity="0.10"/>
|
|
10
|
+
</filter>
|
|
11
|
+
<pattern id="dots" width="28" height="28" patternUnits="userSpaceOnUse">
|
|
12
|
+
<circle cx="1.3" cy="1.3" r="1.3" fill="#f2f0f8"/>
|
|
13
|
+
</pattern>
|
|
14
|
+
</defs>
|
|
15
|
+
<rect width="1100" height="660" fill="#ffffff"/>
|
|
16
|
+
<rect width="1100" height="660" fill="url(#dots)" opacity=".5"/>
|
|
17
|
+
<text x="50" y="62" fill="#141419" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="32" font-weight="700">dsh-plugin-guide</text>
|
|
18
|
+
<text x="50" y="90" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16">assembly and routing · the guide asks, dsh-standards decides</text>
|
|
19
|
+
<rect x="50" y="108" width="1000" height="1.6" rx="1" fill="#e6e3f0"/>
|
|
20
|
+
<g filter="url(#soft)">
|
|
21
|
+
<rect x="50" y="190" width="176" height="118" rx="17" fill="#fcfcfe" stroke="#e6e3f0" stroke-width="1.3"/>
|
|
22
|
+
</g>
|
|
23
|
+
<circle cx="74" cy="214" r="12" fill="#ece7f9"/>
|
|
24
|
+
<text x="74" y="219" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">01</text>
|
|
25
|
+
<text x="138.0" y="256" text-anchor="middle" fill="#141419" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">cordis.patch.yml</text>
|
|
26
|
+
<text x="138.0" y="282" text-anchor="middle" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">one inserted row</text>
|
|
27
|
+
<path d="M231 249.0 C241.0 249.0, 241.0 249.0, 251 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
|
|
28
|
+
<path d="M241 244.0 l8 5 -8 5" fill="none" stroke="#4B67B4" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
29
|
+
<g filter="url(#soft)">
|
|
30
|
+
<rect x="256" y="190" width="176" height="118" rx="17" fill="#fcfcfe" stroke="#4B67B4" stroke-width="2.6"/>
|
|
31
|
+
</g>
|
|
32
|
+
<circle cx="280" cy="214" r="12" fill="#ece7f9"/>
|
|
33
|
+
<text x="280" y="219" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">02</text>
|
|
34
|
+
<text x="344.0" y="256" text-anchor="middle" fill="#141419" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">index.js</text>
|
|
35
|
+
<text x="344.0" y="282" text-anchor="middle" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">ctx.skills.register</text>
|
|
36
|
+
<path d="M437 249.0 C447.0 249.0, 447.0 249.0, 457 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
|
|
37
|
+
<path d="M447 244.0 l8 5 -8 5" fill="none" stroke="#4B67B4" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
38
|
+
<g filter="url(#soft)">
|
|
39
|
+
<rect x="462" y="190" width="176" height="118" rx="17" fill="#fcfcfe" stroke="#e6e3f0" stroke-width="1.3"/>
|
|
40
|
+
</g>
|
|
41
|
+
<circle cx="486" cy="214" r="12" fill="#ece7f9"/>
|
|
42
|
+
<text x="486" y="219" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">03</text>
|
|
43
|
+
<text x="550.0" y="256" text-anchor="middle" fill="#141419" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">SKILL.md</text>
|
|
44
|
+
<text x="550.0" y="282" text-anchor="middle" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">the skill body</text>
|
|
45
|
+
<path d="M643 249.0 C653.0 249.0, 653.0 249.0, 663 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
|
|
46
|
+
<path d="M653 244.0 l8 5 -8 5" fill="none" stroke="#4B67B4" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
47
|
+
<g filter="url(#soft)">
|
|
48
|
+
<rect x="668" y="190" width="176" height="118" rx="17" fill="#fcfcfe" stroke="#e6e3f0" stroke-width="1.3"/>
|
|
49
|
+
</g>
|
|
50
|
+
<circle cx="692" cy="214" r="12" fill="#ece7f9"/>
|
|
51
|
+
<text x="692" y="219" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">04</text>
|
|
52
|
+
<text x="756.0" y="256" text-anchor="middle" fill="#141419" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">docs/levels.md</text>
|
|
53
|
+
<text x="756.0" y="282" text-anchor="middle" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">ENTRY / FLOW / BOOST</text>
|
|
54
|
+
<path d="M849 249.0 C859.0 249.0, 859.0 249.0, 869 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
|
|
55
|
+
<path d="M859 244.0 l8 5 -8 5" fill="none" stroke="#4B67B4" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
56
|
+
<g filter="url(#soft)">
|
|
57
|
+
<rect x="874" y="190" width="176" height="118" rx="17" fill="#fcfcfe" stroke="#16a34a" stroke-width="2.6"/>
|
|
58
|
+
</g>
|
|
59
|
+
<circle cx="898" cy="214" r="12" fill="#ece7f9"/>
|
|
60
|
+
<text x="898" y="219" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">05</text>
|
|
61
|
+
<text x="962.0" y="256" text-anchor="middle" fill="#141419" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">dsh-standards</text>
|
|
62
|
+
<text x="962.0" y="282" text-anchor="middle" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">dsh-levels verdict</text>
|
|
63
|
+
<g filter="url(#soft)">
|
|
64
|
+
<rect x="256" y="378" width="176" height="58" rx="15" fill="#ece7f9" stroke="#4B67B4" stroke-width="1.2"/>
|
|
65
|
+
</g>
|
|
66
|
+
<text x="344" y="404" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="13" font-weight="700">ENTRY</text>
|
|
67
|
+
<text x="344" y="423" text-anchor="middle" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">installs</text>
|
|
68
|
+
<g filter="url(#soft)">
|
|
69
|
+
<rect x="462" y="378" width="176" height="58" rx="15" fill="#ece7f9" stroke="#4B67B4" stroke-width="1.2"/>
|
|
70
|
+
</g>
|
|
71
|
+
<text x="550" y="404" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="13" font-weight="700">FLOW</text>
|
|
72
|
+
<text x="550" y="423" text-anchor="middle" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">works daily</text>
|
|
73
|
+
<g filter="url(#soft)">
|
|
74
|
+
<rect x="668" y="378" width="176" height="58" rx="15" fill="#ece7f9" stroke="#4B67B4" stroke-width="1.2"/>
|
|
75
|
+
</g>
|
|
76
|
+
<text x="756" y="404" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="13" font-weight="700">BOOST</text>
|
|
77
|
+
<text x="756" y="423" text-anchor="middle" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">faster</text>
|
|
78
|
+
<rect x="50" y="476" width="1000" height="58" rx="15" fill="#fcfcfe" stroke="#e6e3f0"/>
|
|
79
|
+
<text x="74" y="502" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="13" font-weight="700">route / dsh-levels</text>
|
|
80
|
+
<text x="74" y="522" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">the guide explains what to check; the verdict belongs to dsh-standards</text>
|
|
81
|
+
<text x="50" y="596" fill="#4d5261" font-family="ui-monospace, monospace" font-size="13">Apache-2.0 · PerryLink DSH plugin family</text>
|
|
82
|
+
</svg>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="660" viewBox="0 0 1100 660" role="img" aria-label="dsh-plugin-guide three-level ladder ending in a routing arrow">
|
|
2
|
+
<defs>
|
|
3
|
+
<filter id="soft" x="-40%" y="-40%" width="180%" height="200%">
|
|
4
|
+
<feDropShadow dx="0" dy="9" stdDeviation="12" flood-color="#1b1735" flood-opacity="0.55"/>
|
|
5
|
+
</filter>
|
|
6
|
+
<pattern id="dots" width="28" height="28" patternUnits="userSpaceOnUse">
|
|
7
|
+
<circle cx="1.3" cy="1.3" r="1.3" fill="#182031"/>
|
|
8
|
+
</pattern>
|
|
9
|
+
<marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
|
10
|
+
<path d="M0 0 L10 5 L0 10 z" fill="#3fb950"/>
|
|
11
|
+
</marker>
|
|
12
|
+
</defs>
|
|
13
|
+
<rect width="1100" height="660" fill="#0d1117"/>
|
|
14
|
+
<rect width="1100" height="660" fill="url(#dots)" opacity=".5"/>
|
|
15
|
+
<text x="50" y="58" fill="#f0f3f9" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="32" font-weight="700">dsh-plugin-guide</text>
|
|
16
|
+
<text x="50" y="86" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16">three levels, deepening questions · the guide asks, dsh-standards decides</text>
|
|
17
|
+
<text x="50" y="122" fill="#8496f5" font-family="ui-sans-serif, system-ui, sans-serif" font-size="14" font-weight="700" letter-spacing="1.5">ADOPTION DEPTH</text>
|
|
18
|
+
<line x1="38" y1="150" x2="38" y2="482" stroke="#8496f5" stroke-width="2" stroke-dasharray="4 6" opacity=".6"/>
|
|
19
|
+
|
|
20
|
+
<rect x="50" y="150" width="392" height="92" rx="18" fill="#161b26" stroke="#2a3142" stroke-width="1.3" filter="url(#soft)"/>
|
|
21
|
+
<circle cx="82" cy="196" r="17" fill="#242d42"/>
|
|
22
|
+
<text x="82" y="202" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="14" font-weight="700">1</text>
|
|
23
|
+
<text x="116" y="186" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="20" font-weight="700">ENTRY</text>
|
|
24
|
+
<text x="116" y="210" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="15">入门 · 6 个问题</text>
|
|
25
|
+
<text x="116" y="230" fill="#737b8d" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">能装上、能跑、不崩</text>
|
|
26
|
+
<line x1="38" y1="196" x2="50" y2="196" stroke="#8496f5" stroke-width="1.6" opacity=".35"/>
|
|
27
|
+
<rect x="84" y="268" width="392" height="92" rx="18" fill="#161b26" stroke="#2a3142" stroke-width="1.3" filter="url(#soft)"/>
|
|
28
|
+
<circle cx="116" cy="314" r="17" fill="#242d42"/>
|
|
29
|
+
<text x="116" y="320" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="14" font-weight="700">2</text>
|
|
30
|
+
<text x="150" y="304" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="20" font-weight="700">FLOW</text>
|
|
31
|
+
<text x="150" y="328" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="15">顺畅 · 7 个问题</text>
|
|
32
|
+
<text x="150" y="348" fill="#737b8d" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">日常任务顺、错误可恢复</text>
|
|
33
|
+
<line x1="38" y1="314" x2="84" y2="314" stroke="#8496f5" stroke-width="1.6" opacity=".35"/>
|
|
34
|
+
<rect x="118" y="386" width="392" height="92" rx="18" fill="#161b26" stroke="#8496f5" stroke-width="2.4" filter="url(#soft)"/>
|
|
35
|
+
<circle cx="150" cy="432" r="17" fill="#242d42"/>
|
|
36
|
+
<text x="150" y="438" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="14" font-weight="700">3</text>
|
|
37
|
+
<text x="184" y="422" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="20" font-weight="700">BOOST</text>
|
|
38
|
+
<text x="184" y="446" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="15">加速 · 5 个问题</text>
|
|
39
|
+
<text x="184" y="466" fill="#737b8d" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">提效证据可复现</text>
|
|
40
|
+
<line x1="38" y1="432" x2="118" y2="432" stroke="#8496f5" stroke-width="1.6" opacity=".35"/>
|
|
41
|
+
<path d="M510 432 L690 432" stroke="#3fb950" stroke-width="2.6" fill="none" marker-end="url(#arr)"/>
|
|
42
|
+
<text x="512" y="418" fill="#3fb950" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">verdict to</text>
|
|
43
|
+
<rect x="700" y="300" width="350" height="264" rx="20" fill="#161b26" stroke="#3fb950" stroke-width="2.4" filter="url(#soft)"/>
|
|
44
|
+
<text x="726" y="334" fill="#3fb950" font-family="ui-monospace, monospace" font-size="13" font-weight="700">dsh-standards</text>
|
|
45
|
+
<text x="726" y="366" fill="#f0f3f9" font-family="ui-sans-serif, system-ui, sans-serif" font-size="17">DSC-01...13 static checks</text>
|
|
46
|
+
<text x="726" y="394" fill="#f0f3f9" font-family="ui-sans-serif, system-ui, sans-serif" font-size="17">L1-L3 runtime measurement</text>
|
|
47
|
+
<text x="726" y="422" fill="#f0f3f9" font-family="ui-sans-serif, system-ui, sans-serif" font-size="17">dsh-levels verdict</text>
|
|
48
|
+
<line x1="726" y1="444" x2="1024" y2="444" stroke="#182031" stroke-width="2"/>
|
|
49
|
+
<text x="726" y="470" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">certification, scoring, ranking: none of them here</text>
|
|
50
|
+
<text x="726" y="494" fill="#737b8d" font-family="ui-monospace, monospace" font-size="12">guide asks · standards decides</text>
|
|
51
|
+
<text x="726" y="530" fill="#8496f5" font-family="ui-monospace, monospace" font-size="12">ENTRY / FLOW / BOOST</text>
|
|
52
|
+
<rect x="50" y="560" width="1000" height="52" rx="14" fill="#121824" stroke="#2a3142"/>
|
|
53
|
+
<text x="74" y="582" fill="#8496f5" font-family="ui-monospace, monospace" font-size="12.5" font-weight="700">route / dsh-levels</text>
|
|
54
|
+
<text x="74" y="602" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">every question has an owner: the guide says what to check, the verdict belongs to the checker</text>
|
|
55
|
+
</svg>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="660" viewBox="0 0 1100 660" role="img" aria-label="dsh-plugin-guide three-level ladder ending in a routing arrow">
|
|
2
|
+
<defs>
|
|
3
|
+
<filter id="soft" x="-40%" y="-40%" width="180%" height="200%">
|
|
4
|
+
<feDropShadow dx="0" dy="9" stdDeviation="12" flood-color="#1b1735" flood-opacity="0.10"/>
|
|
5
|
+
</filter>
|
|
6
|
+
<pattern id="dots" width="28" height="28" patternUnits="userSpaceOnUse">
|
|
7
|
+
<circle cx="1.3" cy="1.3" r="1.3" fill="#f2f0f8"/>
|
|
8
|
+
</pattern>
|
|
9
|
+
<marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
|
10
|
+
<path d="M0 0 L10 5 L0 10 z" fill="#16a34a"/>
|
|
11
|
+
</marker>
|
|
12
|
+
</defs>
|
|
13
|
+
<rect width="1100" height="660" fill="#ffffff"/>
|
|
14
|
+
<rect width="1100" height="660" fill="url(#dots)" opacity=".5"/>
|
|
15
|
+
<text x="50" y="58" fill="#141419" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="32" font-weight="700">dsh-plugin-guide</text>
|
|
16
|
+
<text x="50" y="86" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16">three levels, deepening questions · the guide asks, dsh-standards decides</text>
|
|
17
|
+
<text x="50" y="122" fill="#4B67B4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="14" font-weight="700" letter-spacing="1.5">ADOPTION DEPTH</text>
|
|
18
|
+
<line x1="38" y1="150" x2="38" y2="482" stroke="#4B67B4" stroke-width="2" stroke-dasharray="4 6" opacity=".6"/>
|
|
19
|
+
|
|
20
|
+
<rect x="50" y="150" width="392" height="92" rx="18" fill="#ffffff" stroke="#e6e3f0" stroke-width="1.3" filter="url(#soft)"/>
|
|
21
|
+
<circle cx="82" cy="196" r="17" fill="#ece7f9"/>
|
|
22
|
+
<text x="82" y="202" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="14" font-weight="700">1</text>
|
|
23
|
+
<text x="116" y="186" fill="#141419" font-family="ui-monospace, monospace" font-size="20" font-weight="700">ENTRY</text>
|
|
24
|
+
<text x="116" y="210" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="15">入门 · 6 个问题</text>
|
|
25
|
+
<text x="116" y="230" fill="#8f94a4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">能装上、能跑、不崩</text>
|
|
26
|
+
<line x1="38" y1="196" x2="50" y2="196" stroke="#4B67B4" stroke-width="1.6" opacity=".35"/>
|
|
27
|
+
<rect x="84" y="268" width="392" height="92" rx="18" fill="#ffffff" stroke="#e6e3f0" stroke-width="1.3" filter="url(#soft)"/>
|
|
28
|
+
<circle cx="116" cy="314" r="17" fill="#ece7f9"/>
|
|
29
|
+
<text x="116" y="320" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="14" font-weight="700">2</text>
|
|
30
|
+
<text x="150" y="304" fill="#141419" font-family="ui-monospace, monospace" font-size="20" font-weight="700">FLOW</text>
|
|
31
|
+
<text x="150" y="328" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="15">顺畅 · 7 个问题</text>
|
|
32
|
+
<text x="150" y="348" fill="#8f94a4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">日常任务顺、错误可恢复</text>
|
|
33
|
+
<line x1="38" y1="314" x2="84" y2="314" stroke="#4B67B4" stroke-width="1.6" opacity=".35"/>
|
|
34
|
+
<rect x="118" y="386" width="392" height="92" rx="18" fill="#ffffff" stroke="#4B67B4" stroke-width="2.4" filter="url(#soft)"/>
|
|
35
|
+
<circle cx="150" cy="432" r="17" fill="#ece7f9"/>
|
|
36
|
+
<text x="150" y="438" text-anchor="middle" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="14" font-weight="700">3</text>
|
|
37
|
+
<text x="184" y="422" fill="#141419" font-family="ui-monospace, monospace" font-size="20" font-weight="700">BOOST</text>
|
|
38
|
+
<text x="184" y="446" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="15">加速 · 5 个问题</text>
|
|
39
|
+
<text x="184" y="466" fill="#8f94a4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">提效证据可复现</text>
|
|
40
|
+
<line x1="38" y1="432" x2="118" y2="432" stroke="#4B67B4" stroke-width="1.6" opacity=".35"/>
|
|
41
|
+
<path d="M510 432 L690 432" stroke="#16a34a" stroke-width="2.6" fill="none" marker-end="url(#arr)"/>
|
|
42
|
+
<text x="512" y="418" fill="#16a34a" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">verdict to</text>
|
|
43
|
+
<rect x="700" y="300" width="350" height="264" rx="20" fill="#ffffff" stroke="#16a34a" stroke-width="2.4" filter="url(#soft)"/>
|
|
44
|
+
<text x="726" y="334" fill="#16a34a" font-family="ui-monospace, monospace" font-size="13" font-weight="700">dsh-standards</text>
|
|
45
|
+
<text x="726" y="366" fill="#141419" font-family="ui-sans-serif, system-ui, sans-serif" font-size="17">DSC-01...13 static checks</text>
|
|
46
|
+
<text x="726" y="394" fill="#141419" font-family="ui-sans-serif, system-ui, sans-serif" font-size="17">L1-L3 runtime measurement</text>
|
|
47
|
+
<text x="726" y="422" fill="#141419" font-family="ui-sans-serif, system-ui, sans-serif" font-size="17">dsh-levels verdict</text>
|
|
48
|
+
<line x1="726" y1="444" x2="1024" y2="444" stroke="#f2f0f8" stroke-width="2"/>
|
|
49
|
+
<text x="726" y="470" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">certification, scoring, ranking: none of them here</text>
|
|
50
|
+
<text x="726" y="494" fill="#8f94a4" font-family="ui-monospace, monospace" font-size="12">guide asks · standards decides</text>
|
|
51
|
+
<text x="726" y="530" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="12">ENTRY / FLOW / BOOST</text>
|
|
52
|
+
<rect x="50" y="560" width="1000" height="52" rx="14" fill="#f7f5fc" stroke="#e6e3f0"/>
|
|
53
|
+
<text x="74" y="582" fill="#4B67B4" font-family="ui-monospace, monospace" font-size="12.5" font-weight="700">route / dsh-levels</text>
|
|
54
|
+
<text x="74" y="602" fill="#4d5261" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">every question has an owner: the guide says what to check, the verdict belongs to the checker</text>
|
|
55
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/flow.md
CHANGED
|
@@ -32,42 +32,114 @@ a rewrite is detectable.
|
|
|
32
32
|
"schema": "dsh-flow-evidence/2",
|
|
33
33
|
"evidenceId": "01JCM8Z6R4W1V2K3N4P5Q6R7S8",
|
|
34
34
|
"generatedAt": "2026-11-06T12:00:00Z",
|
|
35
|
-
"producer": {
|
|
35
|
+
"producer": {
|
|
36
|
+
"command": [
|
|
37
|
+
"node",
|
|
38
|
+
"40-checker/bin/dsh-flow-collect.mjs",
|
|
39
|
+
"--package",
|
|
40
|
+
"."
|
|
41
|
+
],
|
|
42
|
+
"at": "2026-11-06T12:00:00Z",
|
|
43
|
+
"kind": "local",
|
|
44
|
+
"runner": "flow-collect 0.1.0",
|
|
45
|
+
"actor": "author"
|
|
46
|
+
},
|
|
36
47
|
"subject": {
|
|
37
|
-
"
|
|
48
|
+
"name": "@acme/dsh-hello",
|
|
38
49
|
"version": "0.1.0",
|
|
39
50
|
"source": "npm",
|
|
40
|
-
"integrity": "sha512
|
|
41
|
-
"tarballSha256": "sha256
|
|
51
|
+
"integrity": "sha512-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
|
|
52
|
+
"tarballSha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
42
53
|
"commit": "ce7073d51254c26cd63b22a60835b8f948deb447",
|
|
43
|
-
"treeSha256": "sha256
|
|
54
|
+
"treeSha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
55
|
+
"treeStable": true
|
|
56
|
+
},
|
|
57
|
+
"host": {
|
|
58
|
+
"dsh": "0.2.2-alpha.2",
|
|
59
|
+
"dshCommit": null,
|
|
60
|
+
"cordis": "4.0.6-alpha.1",
|
|
61
|
+
"node": "v24.11.0",
|
|
62
|
+
"platform": "linux-x64"
|
|
44
63
|
},
|
|
45
|
-
"host": { "dsh": "0.2.2-alpha.2", "dshCommit": null, "cordis": "4.0.6-alpha.1", "node": "v24.11.0", "platform": "linux-x64" },
|
|
46
64
|
"journeys": {
|
|
47
65
|
"J1": {
|
|
48
66
|
"status": "pass",
|
|
49
|
-
"
|
|
67
|
+
"limitations": [],
|
|
50
68
|
"checks": [
|
|
51
69
|
{
|
|
52
70
|
"id": "J1.install",
|
|
53
|
-
"
|
|
54
|
-
"command": [
|
|
71
|
+
"kind": "observed",
|
|
72
|
+
"command": [
|
|
73
|
+
"dsh",
|
|
74
|
+
"plugin",
|
|
75
|
+
"add",
|
|
76
|
+
"."
|
|
77
|
+
],
|
|
55
78
|
"exitCode": 0,
|
|
56
79
|
"startedAt": "2026-11-06T11:00:01Z",
|
|
57
80
|
"endedAt": "2026-11-06T11:00:09Z",
|
|
58
|
-
"stdout": {
|
|
59
|
-
|
|
81
|
+
"stdout": {
|
|
82
|
+
"path": "logs/J1.install.out",
|
|
83
|
+
"sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
|
84
|
+
},
|
|
85
|
+
"assertions": [
|
|
86
|
+
{
|
|
87
|
+
"claim": "row visible in dump",
|
|
88
|
+
"observed": true
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"durationMs": 8000
|
|
60
92
|
}
|
|
61
|
-
]
|
|
62
|
-
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
"J2": {
|
|
96
|
+
"status": "not-run",
|
|
97
|
+
"reason": "not collected in this example",
|
|
98
|
+
"checks": []
|
|
99
|
+
},
|
|
100
|
+
"J3": {
|
|
101
|
+
"status": "not-run",
|
|
102
|
+
"reason": "not collected in this example",
|
|
103
|
+
"checks": []
|
|
104
|
+
},
|
|
105
|
+
"J4": {
|
|
106
|
+
"status": "not-run",
|
|
107
|
+
"reason": "not collected in this example",
|
|
108
|
+
"checks": []
|
|
109
|
+
},
|
|
110
|
+
"J5": {
|
|
111
|
+
"status": "not-run",
|
|
112
|
+
"reason": "not collected in this example",
|
|
113
|
+
"checks": []
|
|
63
114
|
},
|
|
64
|
-
"
|
|
115
|
+
"J6": {
|
|
116
|
+
"status": "not-run",
|
|
117
|
+
"reason": "not collected in this example",
|
|
118
|
+
"checks": []
|
|
119
|
+
},
|
|
120
|
+
"J7": {
|
|
121
|
+
"status": "not-run",
|
|
122
|
+
"reason": "not collected in this example",
|
|
123
|
+
"checks": []
|
|
124
|
+
},
|
|
125
|
+
"J8": {
|
|
126
|
+
"status": "na",
|
|
127
|
+
"reason": "no dsh.client",
|
|
128
|
+
"checks": []
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"claims": {
|
|
132
|
+
"claimLevel": "self-attested",
|
|
133
|
+
"notClaimed": [
|
|
134
|
+
"certification",
|
|
135
|
+
"security audit"
|
|
136
|
+
],
|
|
137
|
+
"method": "structural example: one observed J1 run; J2-J8 not collected"
|
|
65
138
|
},
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"signature": null
|
|
139
|
+
"conclusion": "flow-warn",
|
|
140
|
+
"chain": {
|
|
141
|
+
"evidenceHash": "sha256:ee0364bfd26362dca8265c04b7609f6d489c100826c4778e46a1f9f56f3aa138"
|
|
142
|
+
}
|
|
71
143
|
}
|
|
72
144
|
```
|
|
73
145
|
|
|
@@ -93,40 +165,22 @@ Honesty rules for the file itself:
|
|
|
93
165
|
Put the limitation in `limitations[]` instead of dropping the row.
|
|
94
166
|
|
|
95
167
|
<a id="what-the-checker-reads"></a>
|
|
96
|
-
### What reads this file
|
|
97
|
-
|
|
98
|
-
`dsh-levels --flow-evidence`
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
is not a pass.
|
|
113
|
-
- The flat map has no binding, no hash, and no host. A hand-written 8-pass file
|
|
114
|
-
passes. That is why the v2 file above exists: keep the flat map as the
|
|
115
|
-
projection, and keep the v2 file plus logs as the thing you can defend.
|
|
116
|
-
|
|
117
|
-
Project the v2 file to the flat map before running the audit:
|
|
118
|
-
|
|
119
|
-
```sh
|
|
120
|
-
node -e '
|
|
121
|
-
const fs = require("node:fs");
|
|
122
|
-
const evidence = require("./flow-evidence.json");
|
|
123
|
-
const flat = {};
|
|
124
|
-
for (const [id, journey] of Object.entries(evidence.journeys)) {
|
|
125
|
-
flat[id] = { status: journey.status, evidence: journey.reason ?? journey.checks?.[0]?.id ?? null };
|
|
126
|
-
}
|
|
127
|
-
fs.writeFileSync("flow-flat.json", JSON.stringify(flat, null, 2));
|
|
128
|
-
'
|
|
129
|
-
```
|
|
168
|
+
### What reads this file
|
|
169
|
+
|
|
170
|
+
`dsh-levels --flow-evidence` reads this nested shape directly since
|
|
171
|
+
`dsh-standards` 1.3.0. The flat `{ "J1": { "status": "pass" } }` map and the
|
|
172
|
+
older `dsh-flow-journey/1` / `dsh-flow-runtime/1` files are `deprecated` and
|
|
173
|
+
never count as a pass.
|
|
174
|
+
|
|
175
|
+
- Every journey claimed as `pass` needs at least one `checks[]` entry with
|
|
176
|
+
`exitCode: 0`, an observed (non-`static`) kind, and a log hash.
|
|
177
|
+
- `na` is a skip with a reason, not a pass. A package with no client ends at
|
|
178
|
+
7/8 and `not-run` — that is the honest answer.
|
|
179
|
+
- `runtime` is reserved for `sandbox-attested` evidence (`producer.kind =
|
|
180
|
+
"sandbox"` or `claims.claimLevel = "sandbox-attested"`). Self-attested or CI
|
|
181
|
+
evidence keeps its pass count but lands on `not-run`.
|
|
182
|
+
- The file binds subject, host, and a recomputable `chain.evidenceHash`; a
|
|
183
|
+
hand-written flat 8-pass file no longer passes.
|
|
130
184
|
|
|
131
185
|
<a id="minimum-evidence-per-journey"></a>
|
|
132
186
|
## Minimum evidence per journey
|
|
@@ -186,7 +240,7 @@ the audit is
|
|
|
186
240
|
The three-layer audit reads FLOW evidence through `--flow-evidence`:
|
|
187
241
|
|
|
188
242
|
```sh
|
|
189
|
-
npx -p dsh-standards dsh-levels ./my-plugin --flow-evidence flow-
|
|
243
|
+
npx -p dsh-standards dsh-levels ./my-plugin --flow-evidence flow-evidence.json --format json
|
|
190
244
|
```
|
|
191
245
|
|
|
192
246
|
## Author checklist
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-guide",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"description": "A practical guide to DSH plugin quality: ENTRY checks, FLOW checks, and BOOST guidance. Community guide; not official, not a certification, not a ranking.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|