dsh-policy-ledger 0.2.0-alpha.6 → 0.2.0-alpha.7

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/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ All notable changes to `dsh-policy-ledger` are documented here. The format follows Keep a Changelog; this project uses alpha versions.
4
+
5
+ ## [0.2.0-alpha.7] — 2026-11-01
6
+
7
+ ### Added
8
+
9
+ - Five-language READMEs: English, 简体中文, Español, Português, हिन्दी.
10
+ - Local workflow SVG at `docs/assets/dsh-policy-ledger-flow.svg`.
11
+ - Family cross-links (domain index, checker family, `dsh-kit`), compatibility, permissions, and related-work sections.
12
+ - Standard repository files: `SECURITY.md`, `PRIVACY.md`, `CODE_OF_CONDUCT.md`, `CONTRIBUTING.md`, and `icon.svg`.
13
+
14
+ ### Changed
15
+
16
+ - README aligned with the PerryLink DSH checker/plugin family style; package remains public/synthetic, alpha, not GA.
17
+
18
+ ## [Earlier]
19
+
20
+ Earlier alpha builds are available from npm and GitHub Releases; this file starts at the family-standard documentation wave.
@@ -0,0 +1,31 @@
1
+ # Code of Conduct
2
+
3
+ ## Our pledge
4
+
5
+ We as members, contributors, and maintainers pledge to make participation in this project a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ ## Our standards
8
+
9
+ Examples of behavior that contributes to a positive environment:
10
+
11
+ - Demonstrating empathy and kindness toward other people.
12
+ - Being respectful of differing opinions, viewpoints, and experiences.
13
+ - Giving and gracefully accepting constructive feedback.
14
+ - Accepting responsibility and apologizing to those affected by our mistakes.
15
+ - Focusing on what is best for the community and the project.
16
+
17
+ Examples of unacceptable behavior:
18
+
19
+ - Sexualized language or imagery, and sexual attention or advances.
20
+ - Trolling, insulting or derogatory comments, and personal or political attacks.
21
+ - Public or private harassment.
22
+ - Publishing others' private information without explicit permission.
23
+ - Other conduct which could reasonably be considered inappropriate in a professional setting.
24
+
25
+ ## Enforcement
26
+
27
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to **novelnexusai@outlook.com**. All complaints will be reviewed and investigated promptly and fairly. Maintainers will respect the privacy and security of the reporter.
28
+
29
+ ## Attribution
30
+
31
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1, available at <https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.
@@ -0,0 +1,35 @@
1
+ # Contributing
2
+
3
+ Thanks for taking a look at `dsh-policy-ledger`.
4
+
5
+ ## Before you start
6
+
7
+ - This is a **public/synthetic alpha** project, not a production product. Do not send customer data, customer documents, credentials, or private evidence.
8
+ - The project is alpha. Small, focused fixes and documentation corrections are welcome; large features should be discussed first.
9
+ - One pull request should do one thing. Keep generated evidence and unrelated formatting out of the diff.
10
+
11
+ ## Local checks
12
+
13
+ ```sh
14
+ pnpm install --frozen-lockfile
15
+ pnpm build && pnpm lint && pnpm typecheck && pnpm test
16
+ ```
17
+
18
+ For the suite repositories, also run:
19
+
20
+ ```sh
21
+ node scripts/check.mjs
22
+ npm pack --dry-run
23
+ ```
24
+
25
+ ## Pull requests
26
+
27
+ - Describe the user-visible problem and the failure before the fix.
28
+ - Include a regression test or a fixture-backed reproduction.
29
+ - Update `CHANGELOG.md` for user-visible changes.
30
+ - Do not add a network call, model call, telemetry, or a customer-data path without an explicit design discussion.
31
+ - By contributing, you agree your contribution is licensed under Apache-2.0.
32
+
33
+ ## Security
34
+
35
+ Do not open a public issue for a vulnerability; see `SECURITY.md`.
package/PRIVACY.md ADDED
@@ -0,0 +1,11 @@
1
+ # Privacy
2
+
3
+ `dsh-policy-ledger` is a local, public/synthetic alpha project.
4
+
5
+ - It does **not** collect telemetry, analytics, or usage data.
6
+ - It does **not** upload files, call a model, or call a network service unless a tool in the README explicitly says so.
7
+ - Its fixtures are public/synthetic; no customer data is included.
8
+ - The package writes only to the local paths documented in its README and `DSH_*` environment variables.
9
+ - npm/GitHub/Gitee/GitCode process download and repository metadata under their own privacy policies; that is outside this package.
10
+
11
+ Questions: **novelnexusai@outlook.com**.
package/README-es.md CHANGED
@@ -50,6 +50,16 @@ Desinstalar:
50
50
  dsh plugin --profile <profile> remove dsh-policy-ledger
51
51
  ```
52
52
 
53
+
54
+ ### Canales de instalación
55
+
56
+ npm es el canal recomendado; los demás sirven para fijar versión u offline.
57
+
58
+ - **npm (recomendado):** `dsh plugin --profile <profile> add dsh-policy-ledger`
59
+ - **canal git:** `dsh plugin --profile <profile> add github:PerryLink/dsh-policy-ledger`
60
+ - **tarball:** `pnpm pack` then `dsh plugin --profile <profile> add ./dsh-policy-ledger-<version>.tgz`
61
+ - **tienda 1024:** `npm i -g dsh1024` then `dsh1024 plugin --profile <profile> add dsh-policy-ledger`
62
+
53
63
  ## Qué hace
54
64
 
55
65
  Doctor de instalación de solo lectura: instantánea de capacidades, verificación de tarball y diagnóstico. Se ejecuta localmente en DeepSeek Harness. La tabla siguiente es la superficie exacta de herramientas; los ejemplos usan la interfaz real.
@@ -58,16 +68,16 @@ La entrada y la salida permanecen locales; no se sube nada.
58
68
 
59
69
  ## Herramientas
60
70
 
61
- Los nombres y descripciones de herramientas se mantienen en inglés para coincidir con la salida runtime.
71
+ Los nombres de herramientas son la API estable; las descripciones están localizadas.
62
72
 
63
- | Herramienta | Propósito (en inglés) | Riesgo |
73
+ | Herramienta | Propósito | Riesgo |
64
74
  |---|---|---|
65
- | `trust.capability_snapshot` | Extract declared capabilities and R0–R3 risk from a local npm `.tgz`: tools, bundle/client/bin/skill, build scripts, outbound hosts, credential references | R0 local read |
66
- | `trust.diff` | Compare two stored snapshots: added/removed capabilities, risk escalation, blockers | R0 |
67
- | `trust.assert_tarball` | Re-read a tarball and compare it with a stored snapshot: pass/missing/extra/changed/unknown | R0 |
68
- | `install.diagnose` | Classify an install log into stage, root cause and three actions; return unknown rather than guess | R0 |
69
- | `install.probe` | Check disk free, write permission, proxy, optional registry RTT, node/pnpm | R0 |
70
- | `install.bundle` | Write a redacted incident ZIP (diagnosis + evidence lines) | R1 local write |
75
+ | `trust.capability_snapshot` | Extraer las capacidades declaradas y el riesgo R0–R3 de un `.tgz` de npm local: herramientas, bundle/client/bin/skill, scripts de build, hosts de salida y referencias a credenciales | R0 local read |
76
+ | `trust.diff` | Comparar dos instantáneas guardadas: capacidades añadidas o eliminadas, escalada de riesgo y bloqueos | R0 |
77
+ | `trust.assert_tarball` | Releer un tarball y compararlo con una instantánea guardada: correcto/faltante/extra/cambiado/desconocido | R0 |
78
+ | `install.diagnose` | Clasificar un log de instalación en etapa, causa raíz y tres acciones; devolver desconocido en lugar de suponer | R0 |
79
+ | `install.probe` | Comprobar espacio libre en disco, permiso de escritura, proxy, RTT de registro opcional y node/pnpm | R0 |
80
+ | `install.bundle` | Escribir un ZIP de incidente redactado (diagnóstico + líneas de evidencia) | R1 local write |
71
81
 
72
82
  ## Inicio rápido
73
83
 
@@ -76,6 +86,22 @@ dsh plugin --profile <profile> add dsh-policy-ledger
76
86
  dsh --profile <profile> --dump-config | grep dsh-policy-ledger
77
87
  ```
78
88
 
89
+ ## Ejemplos
90
+
91
+ ### Ejemplo respaldado por fixture
92
+
93
+ Entrada: `fixtures/`
94
+
95
+ Comando: `pnpm test`
96
+
97
+ Fila de aceptación:
98
+
99
+ | req_id | metric | threshold | actual | pass | source | counted |
100
+ |---|---|---|---|---|---|---|
101
+ | SKU-03-A01 | 能力快照抽取(3 包) | 3/3 | 3 | true | public/synthetic | false |
102
+
103
+ *Es una fila de aceptación respaldada por fixture, no una ejecución de cliente; no se inventa salida.*
104
+
79
105
  ## Límites
80
106
 
81
107
  - Solo público/sintético; sin datos ni evidencia de clientes.
@@ -85,7 +111,7 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
85
111
 
86
112
  ## Muestra pública
87
113
 
88
- Las fixtures públicas/sintéticas están en `test/fixtures/`; `ACCEPTANCE.csv` registra las comprobaciones con `counted=false`.
114
+ Las fixtures públicas/sintéticas están en `fixtures/`; `ACCEPTANCE.csv` registra las comprobaciones con `counted=false`.
89
115
 
90
116
  ## Desarrollo
91
117
 
@@ -145,6 +171,107 @@ Paquetes hermanos e índices de familia: [dsh-pim-lint](https://github.com/Perry
145
171
 
146
172
  </details>
147
173
 
174
+
175
+ <details>
176
+ <summary>Familia principal — 92 specs de instalación</summary>
177
+
178
+ | Package | npm |
179
+ |---|---|
180
+ | **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | [npm](https://www.npmjs.com/package/dsh-aqua-input-check) |
181
+ | **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | [npm](https://www.npmjs.com/package/dsh-archive-check) |
182
+ | **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | [npm](https://www.npmjs.com/package/dsh-bid-ca-precheck) |
183
+ | **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | [npm](https://www.npmjs.com/package/dsh-bid-qual-check) |
184
+ | **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | [npm](https://www.npmjs.com/package/dsh-contract-stance) |
185
+ | **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | [npm](https://www.npmjs.com/package/dsh-customs-doc-check) |
186
+ | **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | [npm](https://www.npmjs.com/package/dsh-demurrage-ledger) |
187
+ | **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | [npm](https://www.npmjs.com/package/dsh-drill-script-check) |
188
+ | **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | [npm](https://www.npmjs.com/package/dsh-eia-guide-check) |
189
+ | **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | [npm](https://www.npmjs.com/package/dsh-emergency-plan) |
190
+ | **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | [npm](https://www.npmjs.com/package/dsh-essay-rubric-check) |
191
+ | **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | [npm](https://www.npmjs.com/package/dsh-evidence-check) |
192
+ | **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | [npm](https://www.npmjs.com/package/dsh-export-ctl-check) |
193
+ | **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | [npm](https://www.npmjs.com/package/dsh-fmea-table-check) |
194
+ | **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | [npm](https://www.npmjs.com/package/dsh-forecast-penalty) |
195
+ | **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-flow-check) |
196
+ | **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-word-check) |
197
+ | **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | [npm](https://www.npmjs.com/package/dsh-guard-plan-qc) |
198
+ | **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | [npm](https://www.npmjs.com/package/dsh-hazchem-check) |
199
+ | **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | [npm](https://www.npmjs.com/package/dsh-hazplan-check) |
200
+ | **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | [npm](https://www.npmjs.com/package/dsh-hidden-risk-map) |
201
+ | **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | [npm](https://www.npmjs.com/package/dsh-hs-classify) |
202
+ | **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | [npm](https://www.npmjs.com/package/dsh-icd-rule-check) |
203
+ | **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | [npm](https://www.npmjs.com/package/dsh-lawcite-adapter) |
204
+ | **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | [npm](https://www.npmjs.com/package/dsh-lc-doc-check) |
205
+ | **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | [npm](https://www.npmjs.com/package/dsh-learning-gap-check) |
206
+ | **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | [npm](https://www.npmjs.com/package/dsh-medrec-qc) |
207
+ | **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | [npm](https://www.npmjs.com/package/dsh-nsfc-form-check) |
208
+ | **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | [npm](https://www.npmjs.com/package/dsh-nurse-record-check) |
209
+ | **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | [npm](https://www.npmjs.com/package/dsh-origin-rvc-check) |
210
+ | **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | [npm](https://www.npmjs.com/package/dsh-ota-review-check) |
211
+ | **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | [npm](https://www.npmjs.com/package/dsh-paper-doc-adapter) |
212
+ | **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | [npm](https://www.npmjs.com/package/dsh-permit-report-check) |
213
+ | **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | [npm](https://www.npmjs.com/package/dsh-pipeline-check) |
214
+ | **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | [npm](https://www.npmjs.com/package/dsh-pleading-draft) |
215
+ | **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | [npm](https://www.npmjs.com/package/dsh-policy-brief-draft) |
216
+ | **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | [npm](https://www.npmjs.com/package/dsh-power-loss-split) |
217
+ | **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | [npm](https://www.npmjs.com/package/dsh-power-ticket-check) |
218
+ | **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | [npm](https://www.npmjs.com/package/dsh-ppap-check) |
219
+ | **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | [npm](https://www.npmjs.com/package/dsh-protest-deadline) |
220
+ | **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | [npm](https://www.npmjs.com/package/dsh-railway-window) |
221
+ | **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | [npm](https://www.npmjs.com/package/dsh-repair-order-qc) |
222
+ | **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | [npm](https://www.npmjs.com/package/dsh-review-reply-check) |
223
+ | **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | [npm](https://www.npmjs.com/package/dsh-rulefile-check) |
224
+ | **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | [npm](https://www.npmjs.com/package/dsh-safety-brief-check) |
225
+ | **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | [npm](https://www.npmjs.com/package/dsh-site-log-check) |
226
+ | **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | [npm](https://www.npmjs.com/package/dsh-soe-decision-check) |
227
+ | **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | [npm](https://www.npmjs.com/package/dsh-soilwater-check) |
228
+ | **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | [npm](https://www.npmjs.com/package/dsh-sop-sync-check) |
229
+ | **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | [npm](https://www.npmjs.com/package/dsh-spc-gbt-adapter) |
230
+ | **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | [npm](https://www.npmjs.com/package/dsh-tender-extract) |
231
+ | **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | [npm](https://www.npmjs.com/package/dsh-tender-matrix) |
232
+ | **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | [npm](https://www.npmjs.com/package/dsh-warranty-calc) |
233
+ | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | [npm](https://www.npmjs.com/package/dsh-auto-review) |
234
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | [npm](https://www.npmjs.com/package/dsh-autotier) |
235
+ | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | [npm](https://www.npmjs.com/package/dsh-budget) |
236
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | [npm](https://www.npmjs.com/package/dsh-cert-mcp) |
237
+ | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | [npm](https://www.npmjs.com/package/dsh-checkpoint-rewind) |
238
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | [npm](https://www.npmjs.com/package/dsh-claude-move) |
239
+ | **[dsh-click](https://github.com/PerryLink/dsh-click)** | [npm](https://www.npmjs.com/package/dsh-click) |
240
+ | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | [npm](https://www.npmjs.com/package/dsh-composer-history) |
241
+ | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | [npm](https://www.npmjs.com/package/dsh-data-quality) |
242
+ | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | [npm](https://www.npmjs.com/package/dsh-defend) |
243
+ | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | [npm](https://www.npmjs.com/package/dsh-doublecheck) |
244
+ | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | [npm](https://www.npmjs.com/package/dsh-draw) |
245
+ | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | [npm](https://www.npmjs.com/package/dsh-fast) |
246
+ | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | [npm](https://www.npmjs.com/package/dsh-fund-research) |
247
+ | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | [npm](https://www.npmjs.com/package/dsh-industry-research) |
248
+ | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | [npm](https://www.npmjs.com/package/dsh-laya) |
249
+ | **[dsh-library](https://github.com/PerryLink/dsh-library)** | [npm](https://www.npmjs.com/package/dsh-library) |
250
+ | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | [npm](https://www.npmjs.com/package/dsh-local-ai) |
251
+ | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | [npm](https://www.npmjs.com/package/dsh-lsp-actions) |
252
+ | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | [npm](https://www.npmjs.com/package/dsh-mask) |
253
+ | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | [npm](https://www.npmjs.com/package/dsh-mcp-panel) |
254
+ | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | [npm](https://www.npmjs.com/package/dsh-memento) |
255
+ | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | [npm](https://www.npmjs.com/package/dsh-observe) |
256
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | [npm](https://www.npmjs.com/package/dsh-output-styles) |
257
+ | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | [npm](https://www.npmjs.com/package/dsh-permission-rules) |
258
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | [npm](https://www.npmjs.com/package/dsh-plugin-guide) |
259
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | [npm](https://www.npmjs.com/package/dsh-plugin-upgrade) |
260
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | [npm](https://www.npmjs.com/package/dsh-reach) |
261
+ | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | [npm](https://www.npmjs.com/package/dsh-research-report) |
262
+ | **[dsh-score](https://github.com/PerryLink/dsh-score)** | [npm](https://www.npmjs.com/package/dsh-score) |
263
+ | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | [npm](https://www.npmjs.com/package/dsh-session-sync) |
264
+ | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | [npm](https://www.npmjs.com/package/dsh-talk) |
265
+ | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | [npm](https://www.npmjs.com/package/dsh-test-drive) |
266
+ | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | [npm](https://www.npmjs.com/package/dsh-translate) |
267
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
268
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
269
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
270
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
271
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
272
+
273
+ </details>
274
+
148
275
  ## Licencia
149
276
 
150
277
  Apache-2.0. See `LICENSE`, `NOTICE`, `THIRD-PARTY-NOTICES`.
package/README-hi.md CHANGED
@@ -50,6 +50,16 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
50
50
  dsh plugin --profile <profile> remove dsh-policy-ledger
51
51
  ```
52
52
 
53
+
54
+ ### इंस्टॉल चैनल
55
+
56
+ npm अनुशंसित है; बाकी वर्ज़न पिन या ऑफ़लाइन के लिए हैं।
57
+
58
+ - **npm (अनुशंसित):** `dsh plugin --profile <profile> add dsh-policy-ledger`
59
+ - **git चैनल:** `dsh plugin --profile <profile> add github:PerryLink/dsh-policy-ledger`
60
+ - **tarball:** `pnpm pack` then `dsh plugin --profile <profile> add ./dsh-policy-ledger-<version>.tgz`
61
+ - **1024 स्टोर:** `npm i -g dsh1024` then `dsh1024 plugin --profile <profile> add dsh-policy-ledger`
62
+
53
63
  ## यह क्या करता है
54
64
 
55
65
  केवल-पढ़ने वाला इंस्टॉल डॉक्टर: क्षमता स्नैपशॉट, tarball जाँच और इंस्टॉल निदान। DeepSeek Harness पर स्थानीय रूप से चलता है। नीचे दी गई तालिका ही सटीक टूल सतह है; उदाहरण वास्तविक कमांड का उपयोग करते हैं।
@@ -58,16 +68,16 @@ dsh plugin --profile <profile> remove dsh-policy-ledger
58
68
 
59
69
  ## टूल्स
60
70
 
61
- टूल नाम और विवरण runtime आउटपुट से मेल खाने के लिए अंग्रेज़ी में रखे गए हैं।
71
+ टूल नाम स्थिर API हैं; विवरण स्थानीयकृत हैं।
62
72
 
63
- | टूल | उद्देश्य (अंग्रेज़ी) | जोखिम |
73
+ | टूल | उद्देश्य | जोखिम |
64
74
  |---|---|---|
65
- | `trust.capability_snapshot` | Extract declared capabilities and R0–R3 risk from a local npm `.tgz`: tools, bundle/client/bin/skill, build scripts, outbound hosts, credential references | R0 local read |
66
- | `trust.diff` | Compare two stored snapshots: added/removed capabilities, risk escalation, blockers | R0 |
67
- | `trust.assert_tarball` | Re-read a tarball and compare it with a stored snapshot: pass/missing/extra/changed/unknown | R0 |
68
- | `install.diagnose` | Classify an install log into stage, root cause and three actions; return unknown rather than guess | R0 |
69
- | `install.probe` | Check disk free, write permission, proxy, optional registry RTT, node/pnpm | R0 |
70
- | `install.bundle` | Write a redacted incident ZIP (diagnosis + evidence lines) | R1 local write |
75
+ | `trust.capability_snapshot` | स्थानीय npm `.tgz` से घोषित क्षमताएँ और R0–R3 जोखिम निकालें: टूल, bundle/client/bin/skill, बिल्ड स्क्रिप्ट, आउटबाउंड होस्ट, क्रेडेंशियल संदर्भ | R0 local read |
76
+ | `trust.diff` | दो संग्रहीत स्नैपशॉट की तुलना करें: जोड़ी/हटाई गई क्षमताएँ, जोखिम वृद्धि, ब्लॉकर | R0 |
77
+ | `trust.assert_tarball` | tarball को फिर से पढ़ें और संग्रहीत स्नैपशॉट से तुलना करें: pass/missing/extra/changed/unknown | R0 |
78
+ | `install.diagnose` | इंस्टॉल लॉग को चरण, मूल कारण और तीन क्रियाओं में वर्गीकृत करें; अनुमान लगाने के बजाय unknown लौटाएँ | R0 |
79
+ | `install.probe` | डिस्क खाली स्थान, लेखन अनुमति, प्रॉक्सी, वैकल्पिक registry RTT, node/pnpm जाँचें | R0 |
80
+ | `install.bundle` | रिडैक्टेड इंसिडेंट ZIP लिखें (निदान + प्रमाण पंक्तियाँ) | R1 local write |
71
81
 
72
82
  ## त्वरित शुरुआत
73
83
 
@@ -76,6 +86,22 @@ dsh plugin --profile <profile> add dsh-policy-ledger
76
86
  dsh --profile <profile> --dump-config | grep dsh-policy-ledger
77
87
  ```
78
88
 
89
+ ## उदाहरण
90
+
91
+ ### fixture-आधारित उदाहरण
92
+
93
+ इनपुट: `fixtures/`
94
+
95
+ कमांड: `pnpm test`
96
+
97
+ स्वीकृति पंक्ति:
98
+
99
+ | req_id | metric | threshold | actual | pass | source | counted |
100
+ |---|---|---|---|---|---|---|
101
+ | SKU-03-A01 | 能力快照抽取(3 包) | 3/3 | 3 | true | public/synthetic | false |
102
+
103
+ *यह fixture-आधारित स्वीकृति पंक्ति है, ग्राहक रन नहीं; कोई आउटपुट नहीं गढ़ा गया।*
104
+
79
105
  ## सीमाएँ
80
106
 
81
107
  - केवल सार्वजनिक/सिंथेटिक; ग्राहक डेटा या साक्ष्य नहीं।
@@ -85,7 +111,7 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
85
111
 
86
112
  ## सार्वजनिक नमूना
87
113
 
88
- सार्वजनिक/सिंथेटिक fixtures `test/fixtures/` में हैं; `ACCEPTANCE.csv` सार्वजनिक जाँचों को `counted=false` के साथ दर्ज करता है।
114
+ सार्वजनिक/सिंथेटिक fixtures `fixtures/` में हैं; `ACCEPTANCE.csv` सार्वजनिक जाँचों को `counted=false` के साथ दर्ज करता है।
89
115
 
90
116
  ## विकास
91
117
 
@@ -145,6 +171,107 @@ pnpm build && pnpm lint && pnpm typecheck && pnpm test
145
171
 
146
172
  </details>
147
173
 
174
+
175
+ <details>
176
+ <summary>मुख्य परिवार — 92 वर्तमान इंस्टॉल spec</summary>
177
+
178
+ | Package | npm |
179
+ |---|---|
180
+ | **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | [npm](https://www.npmjs.com/package/dsh-aqua-input-check) |
181
+ | **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | [npm](https://www.npmjs.com/package/dsh-archive-check) |
182
+ | **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | [npm](https://www.npmjs.com/package/dsh-bid-ca-precheck) |
183
+ | **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | [npm](https://www.npmjs.com/package/dsh-bid-qual-check) |
184
+ | **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | [npm](https://www.npmjs.com/package/dsh-contract-stance) |
185
+ | **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | [npm](https://www.npmjs.com/package/dsh-customs-doc-check) |
186
+ | **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | [npm](https://www.npmjs.com/package/dsh-demurrage-ledger) |
187
+ | **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | [npm](https://www.npmjs.com/package/dsh-drill-script-check) |
188
+ | **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | [npm](https://www.npmjs.com/package/dsh-eia-guide-check) |
189
+ | **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | [npm](https://www.npmjs.com/package/dsh-emergency-plan) |
190
+ | **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | [npm](https://www.npmjs.com/package/dsh-essay-rubric-check) |
191
+ | **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | [npm](https://www.npmjs.com/package/dsh-evidence-check) |
192
+ | **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | [npm](https://www.npmjs.com/package/dsh-export-ctl-check) |
193
+ | **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | [npm](https://www.npmjs.com/package/dsh-fmea-table-check) |
194
+ | **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | [npm](https://www.npmjs.com/package/dsh-forecast-penalty) |
195
+ | **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-flow-check) |
196
+ | **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-word-check) |
197
+ | **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | [npm](https://www.npmjs.com/package/dsh-guard-plan-qc) |
198
+ | **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | [npm](https://www.npmjs.com/package/dsh-hazchem-check) |
199
+ | **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | [npm](https://www.npmjs.com/package/dsh-hazplan-check) |
200
+ | **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | [npm](https://www.npmjs.com/package/dsh-hidden-risk-map) |
201
+ | **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | [npm](https://www.npmjs.com/package/dsh-hs-classify) |
202
+ | **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | [npm](https://www.npmjs.com/package/dsh-icd-rule-check) |
203
+ | **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | [npm](https://www.npmjs.com/package/dsh-lawcite-adapter) |
204
+ | **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | [npm](https://www.npmjs.com/package/dsh-lc-doc-check) |
205
+ | **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | [npm](https://www.npmjs.com/package/dsh-learning-gap-check) |
206
+ | **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | [npm](https://www.npmjs.com/package/dsh-medrec-qc) |
207
+ | **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | [npm](https://www.npmjs.com/package/dsh-nsfc-form-check) |
208
+ | **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | [npm](https://www.npmjs.com/package/dsh-nurse-record-check) |
209
+ | **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | [npm](https://www.npmjs.com/package/dsh-origin-rvc-check) |
210
+ | **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | [npm](https://www.npmjs.com/package/dsh-ota-review-check) |
211
+ | **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | [npm](https://www.npmjs.com/package/dsh-paper-doc-adapter) |
212
+ | **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | [npm](https://www.npmjs.com/package/dsh-permit-report-check) |
213
+ | **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | [npm](https://www.npmjs.com/package/dsh-pipeline-check) |
214
+ | **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | [npm](https://www.npmjs.com/package/dsh-pleading-draft) |
215
+ | **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | [npm](https://www.npmjs.com/package/dsh-policy-brief-draft) |
216
+ | **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | [npm](https://www.npmjs.com/package/dsh-power-loss-split) |
217
+ | **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | [npm](https://www.npmjs.com/package/dsh-power-ticket-check) |
218
+ | **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | [npm](https://www.npmjs.com/package/dsh-ppap-check) |
219
+ | **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | [npm](https://www.npmjs.com/package/dsh-protest-deadline) |
220
+ | **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | [npm](https://www.npmjs.com/package/dsh-railway-window) |
221
+ | **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | [npm](https://www.npmjs.com/package/dsh-repair-order-qc) |
222
+ | **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | [npm](https://www.npmjs.com/package/dsh-review-reply-check) |
223
+ | **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | [npm](https://www.npmjs.com/package/dsh-rulefile-check) |
224
+ | **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | [npm](https://www.npmjs.com/package/dsh-safety-brief-check) |
225
+ | **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | [npm](https://www.npmjs.com/package/dsh-site-log-check) |
226
+ | **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | [npm](https://www.npmjs.com/package/dsh-soe-decision-check) |
227
+ | **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | [npm](https://www.npmjs.com/package/dsh-soilwater-check) |
228
+ | **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | [npm](https://www.npmjs.com/package/dsh-sop-sync-check) |
229
+ | **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | [npm](https://www.npmjs.com/package/dsh-spc-gbt-adapter) |
230
+ | **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | [npm](https://www.npmjs.com/package/dsh-tender-extract) |
231
+ | **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | [npm](https://www.npmjs.com/package/dsh-tender-matrix) |
232
+ | **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | [npm](https://www.npmjs.com/package/dsh-warranty-calc) |
233
+ | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | [npm](https://www.npmjs.com/package/dsh-auto-review) |
234
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | [npm](https://www.npmjs.com/package/dsh-autotier) |
235
+ | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | [npm](https://www.npmjs.com/package/dsh-budget) |
236
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | [npm](https://www.npmjs.com/package/dsh-cert-mcp) |
237
+ | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | [npm](https://www.npmjs.com/package/dsh-checkpoint-rewind) |
238
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | [npm](https://www.npmjs.com/package/dsh-claude-move) |
239
+ | **[dsh-click](https://github.com/PerryLink/dsh-click)** | [npm](https://www.npmjs.com/package/dsh-click) |
240
+ | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | [npm](https://www.npmjs.com/package/dsh-composer-history) |
241
+ | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | [npm](https://www.npmjs.com/package/dsh-data-quality) |
242
+ | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | [npm](https://www.npmjs.com/package/dsh-defend) |
243
+ | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | [npm](https://www.npmjs.com/package/dsh-doublecheck) |
244
+ | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | [npm](https://www.npmjs.com/package/dsh-draw) |
245
+ | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | [npm](https://www.npmjs.com/package/dsh-fast) |
246
+ | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | [npm](https://www.npmjs.com/package/dsh-fund-research) |
247
+ | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | [npm](https://www.npmjs.com/package/dsh-industry-research) |
248
+ | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | [npm](https://www.npmjs.com/package/dsh-laya) |
249
+ | **[dsh-library](https://github.com/PerryLink/dsh-library)** | [npm](https://www.npmjs.com/package/dsh-library) |
250
+ | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | [npm](https://www.npmjs.com/package/dsh-local-ai) |
251
+ | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | [npm](https://www.npmjs.com/package/dsh-lsp-actions) |
252
+ | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | [npm](https://www.npmjs.com/package/dsh-mask) |
253
+ | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | [npm](https://www.npmjs.com/package/dsh-mcp-panel) |
254
+ | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | [npm](https://www.npmjs.com/package/dsh-memento) |
255
+ | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | [npm](https://www.npmjs.com/package/dsh-observe) |
256
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | [npm](https://www.npmjs.com/package/dsh-output-styles) |
257
+ | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | [npm](https://www.npmjs.com/package/dsh-permission-rules) |
258
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | [npm](https://www.npmjs.com/package/dsh-plugin-guide) |
259
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | [npm](https://www.npmjs.com/package/dsh-plugin-upgrade) |
260
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | [npm](https://www.npmjs.com/package/dsh-reach) |
261
+ | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | [npm](https://www.npmjs.com/package/dsh-research-report) |
262
+ | **[dsh-score](https://github.com/PerryLink/dsh-score)** | [npm](https://www.npmjs.com/package/dsh-score) |
263
+ | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | [npm](https://www.npmjs.com/package/dsh-session-sync) |
264
+ | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | [npm](https://www.npmjs.com/package/dsh-talk) |
265
+ | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | [npm](https://www.npmjs.com/package/dsh-test-drive) |
266
+ | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | [npm](https://www.npmjs.com/package/dsh-translate) |
267
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
268
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
269
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
270
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
271
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
272
+
273
+ </details>
274
+
148
275
  ## लाइसेंस
149
276
 
150
277
  Apache-2.0. See `LICENSE`, `NOTICE`, `THIRD-PARTY-NOTICES`.
package/README-pt.md CHANGED
@@ -50,6 +50,16 @@ Desinstalar:
50
50
  dsh plugin --profile <profile> remove dsh-policy-ledger
51
51
  ```
52
52
 
53
+
54
+ ### Canais de instalação
55
+
56
+ npm é o canal recomendado; os demais servem para fixar versão ou offline.
57
+
58
+ - **npm (recomendado):** `dsh plugin --profile <profile> add dsh-policy-ledger`
59
+ - **canal git:** `dsh plugin --profile <profile> add github:PerryLink/dsh-policy-ledger`
60
+ - **tarball:** `pnpm pack` then `dsh plugin --profile <profile> add ./dsh-policy-ledger-<version>.tgz`
61
+ - **loja 1024:** `npm i -g dsh1024` then `dsh1024 plugin --profile <profile> add dsh-policy-ledger`
62
+
53
63
  ## O que faz
54
64
 
55
65
  Doutor de instalação somente leitura: snapshot de capacidades, verificação de tarball e diagnóstico. Executa localmente no DeepSeek Harness. A tabela abaixo é a superfície exata de ferramentas; os exemplos usam a interface real.
@@ -58,16 +68,16 @@ Entrada e saída permanecem locais; nada é enviado.
58
68
 
59
69
  ## Ferramentas
60
70
 
61
- Nomes e descrições de ferramentas ficam em inglês para corresponder à saída runtime.
71
+ Os nomes das ferramentas são a API estável; as descrições estão localizadas.
62
72
 
63
- | Ferramenta | Finalidade (em inglês) | Risco |
73
+ | Ferramenta | Finalidade | Risco |
64
74
  |---|---|---|
65
- | `trust.capability_snapshot` | Extract declared capabilities and R0–R3 risk from a local npm `.tgz`: tools, bundle/client/bin/skill, build scripts, outbound hosts, credential references | R0 local read |
66
- | `trust.diff` | Compare two stored snapshots: added/removed capabilities, risk escalation, blockers | R0 |
67
- | `trust.assert_tarball` | Re-read a tarball and compare it with a stored snapshot: pass/missing/extra/changed/unknown | R0 |
68
- | `install.diagnose` | Classify an install log into stage, root cause and three actions; return unknown rather than guess | R0 |
69
- | `install.probe` | Check disk free, write permission, proxy, optional registry RTT, node/pnpm | R0 |
70
- | `install.bundle` | Write a redacted incident ZIP (diagnosis + evidence lines) | R1 local write |
75
+ | `trust.capability_snapshot` | Extrai as capacidades declaradas e o risco R0–R3 de um `.tgz` npm local: ferramentas, bundle/client/bin/skill, scripts de build, hosts de saída, referências a credenciais | R0 local read |
76
+ | `trust.diff` | Compara dois snapshots armazenados: capacidades adicionadas/removidas, escalonamento de risco, bloqueadores | R0 |
77
+ | `trust.assert_tarball` | Relê um tarball e o compara com um snapshot armazenado: pass/missing/extra/changed/unknown | R0 |
78
+ | `install.diagnose` | Classifica um log de instalação em estágio, causa raiz e três ações; retorna unknown em vez de adivinhar | R0 |
79
+ | `install.probe` | Verifica espaço livre em disco, permissão de escrita, proxy, RTT opcional do registry, node/pnpm | R0 |
80
+ | `install.bundle` | Grava um ZIP de incidente com informações sensíveis removidas (diagnóstico + linhas de evidência) | R1 local write |
71
81
 
72
82
  ## Início rápido
73
83
 
@@ -76,6 +86,22 @@ dsh plugin --profile <profile> add dsh-policy-ledger
76
86
  dsh --profile <profile> --dump-config | grep dsh-policy-ledger
77
87
  ```
78
88
 
89
+ ## Exemplos
90
+
91
+ ### Exemplo com fixture
92
+
93
+ Entrada: `fixtures/`
94
+
95
+ Comando: `pnpm test`
96
+
97
+ Linha de aceitação:
98
+
99
+ | req_id | metric | threshold | actual | pass | source | counted |
100
+ |---|---|---|---|---|---|---|
101
+ | SKU-03-A01 | 能力快照抽取(3 包) | 3/3 | 3 | true | public/synthetic | false |
102
+
103
+ *É uma linha de aceitação com fixture, não uma execução de cliente; nenhuma saída é inventada.*
104
+
79
105
  ## Limites
80
106
 
81
107
  - Apenas público/sintético; sem dados ou evidência de clientes.
@@ -85,7 +111,7 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
85
111
 
86
112
  ## Amostra pública
87
113
 
88
- As fixtures públicas/sintéticas ficam em `test/fixtures/`; `ACCEPTANCE.csv` registra as verificações com `counted=false`.
114
+ As fixtures públicas/sintéticas ficam em `fixtures/`; `ACCEPTANCE.csv` registra as verificações com `counted=false`.
89
115
 
90
116
  ## Desenvolvimento
91
117
 
@@ -145,6 +171,107 @@ Pacotes irmãos e índices da família: [dsh-pim-lint](https://github.com/PerryL
145
171
 
146
172
  </details>
147
173
 
174
+
175
+ <details>
176
+ <summary>Família principal — 92 specs de instalação</summary>
177
+
178
+ | Package | npm |
179
+ |---|---|
180
+ | **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | [npm](https://www.npmjs.com/package/dsh-aqua-input-check) |
181
+ | **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | [npm](https://www.npmjs.com/package/dsh-archive-check) |
182
+ | **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | [npm](https://www.npmjs.com/package/dsh-bid-ca-precheck) |
183
+ | **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | [npm](https://www.npmjs.com/package/dsh-bid-qual-check) |
184
+ | **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | [npm](https://www.npmjs.com/package/dsh-contract-stance) |
185
+ | **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | [npm](https://www.npmjs.com/package/dsh-customs-doc-check) |
186
+ | **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | [npm](https://www.npmjs.com/package/dsh-demurrage-ledger) |
187
+ | **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | [npm](https://www.npmjs.com/package/dsh-drill-script-check) |
188
+ | **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | [npm](https://www.npmjs.com/package/dsh-eia-guide-check) |
189
+ | **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | [npm](https://www.npmjs.com/package/dsh-emergency-plan) |
190
+ | **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | [npm](https://www.npmjs.com/package/dsh-essay-rubric-check) |
191
+ | **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | [npm](https://www.npmjs.com/package/dsh-evidence-check) |
192
+ | **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | [npm](https://www.npmjs.com/package/dsh-export-ctl-check) |
193
+ | **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | [npm](https://www.npmjs.com/package/dsh-fmea-table-check) |
194
+ | **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | [npm](https://www.npmjs.com/package/dsh-forecast-penalty) |
195
+ | **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-flow-check) |
196
+ | **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-word-check) |
197
+ | **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | [npm](https://www.npmjs.com/package/dsh-guard-plan-qc) |
198
+ | **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | [npm](https://www.npmjs.com/package/dsh-hazchem-check) |
199
+ | **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | [npm](https://www.npmjs.com/package/dsh-hazplan-check) |
200
+ | **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | [npm](https://www.npmjs.com/package/dsh-hidden-risk-map) |
201
+ | **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | [npm](https://www.npmjs.com/package/dsh-hs-classify) |
202
+ | **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | [npm](https://www.npmjs.com/package/dsh-icd-rule-check) |
203
+ | **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | [npm](https://www.npmjs.com/package/dsh-lawcite-adapter) |
204
+ | **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | [npm](https://www.npmjs.com/package/dsh-lc-doc-check) |
205
+ | **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | [npm](https://www.npmjs.com/package/dsh-learning-gap-check) |
206
+ | **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | [npm](https://www.npmjs.com/package/dsh-medrec-qc) |
207
+ | **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | [npm](https://www.npmjs.com/package/dsh-nsfc-form-check) |
208
+ | **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | [npm](https://www.npmjs.com/package/dsh-nurse-record-check) |
209
+ | **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | [npm](https://www.npmjs.com/package/dsh-origin-rvc-check) |
210
+ | **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | [npm](https://www.npmjs.com/package/dsh-ota-review-check) |
211
+ | **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | [npm](https://www.npmjs.com/package/dsh-paper-doc-adapter) |
212
+ | **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | [npm](https://www.npmjs.com/package/dsh-permit-report-check) |
213
+ | **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | [npm](https://www.npmjs.com/package/dsh-pipeline-check) |
214
+ | **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | [npm](https://www.npmjs.com/package/dsh-pleading-draft) |
215
+ | **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | [npm](https://www.npmjs.com/package/dsh-policy-brief-draft) |
216
+ | **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | [npm](https://www.npmjs.com/package/dsh-power-loss-split) |
217
+ | **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | [npm](https://www.npmjs.com/package/dsh-power-ticket-check) |
218
+ | **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | [npm](https://www.npmjs.com/package/dsh-ppap-check) |
219
+ | **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | [npm](https://www.npmjs.com/package/dsh-protest-deadline) |
220
+ | **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | [npm](https://www.npmjs.com/package/dsh-railway-window) |
221
+ | **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | [npm](https://www.npmjs.com/package/dsh-repair-order-qc) |
222
+ | **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | [npm](https://www.npmjs.com/package/dsh-review-reply-check) |
223
+ | **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | [npm](https://www.npmjs.com/package/dsh-rulefile-check) |
224
+ | **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | [npm](https://www.npmjs.com/package/dsh-safety-brief-check) |
225
+ | **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | [npm](https://www.npmjs.com/package/dsh-site-log-check) |
226
+ | **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | [npm](https://www.npmjs.com/package/dsh-soe-decision-check) |
227
+ | **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | [npm](https://www.npmjs.com/package/dsh-soilwater-check) |
228
+ | **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | [npm](https://www.npmjs.com/package/dsh-sop-sync-check) |
229
+ | **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | [npm](https://www.npmjs.com/package/dsh-spc-gbt-adapter) |
230
+ | **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | [npm](https://www.npmjs.com/package/dsh-tender-extract) |
231
+ | **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | [npm](https://www.npmjs.com/package/dsh-tender-matrix) |
232
+ | **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | [npm](https://www.npmjs.com/package/dsh-warranty-calc) |
233
+ | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | [npm](https://www.npmjs.com/package/dsh-auto-review) |
234
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | [npm](https://www.npmjs.com/package/dsh-autotier) |
235
+ | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | [npm](https://www.npmjs.com/package/dsh-budget) |
236
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | [npm](https://www.npmjs.com/package/dsh-cert-mcp) |
237
+ | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | [npm](https://www.npmjs.com/package/dsh-checkpoint-rewind) |
238
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | [npm](https://www.npmjs.com/package/dsh-claude-move) |
239
+ | **[dsh-click](https://github.com/PerryLink/dsh-click)** | [npm](https://www.npmjs.com/package/dsh-click) |
240
+ | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | [npm](https://www.npmjs.com/package/dsh-composer-history) |
241
+ | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | [npm](https://www.npmjs.com/package/dsh-data-quality) |
242
+ | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | [npm](https://www.npmjs.com/package/dsh-defend) |
243
+ | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | [npm](https://www.npmjs.com/package/dsh-doublecheck) |
244
+ | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | [npm](https://www.npmjs.com/package/dsh-draw) |
245
+ | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | [npm](https://www.npmjs.com/package/dsh-fast) |
246
+ | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | [npm](https://www.npmjs.com/package/dsh-fund-research) |
247
+ | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | [npm](https://www.npmjs.com/package/dsh-industry-research) |
248
+ | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | [npm](https://www.npmjs.com/package/dsh-laya) |
249
+ | **[dsh-library](https://github.com/PerryLink/dsh-library)** | [npm](https://www.npmjs.com/package/dsh-library) |
250
+ | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | [npm](https://www.npmjs.com/package/dsh-local-ai) |
251
+ | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | [npm](https://www.npmjs.com/package/dsh-lsp-actions) |
252
+ | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | [npm](https://www.npmjs.com/package/dsh-mask) |
253
+ | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | [npm](https://www.npmjs.com/package/dsh-mcp-panel) |
254
+ | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | [npm](https://www.npmjs.com/package/dsh-memento) |
255
+ | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | [npm](https://www.npmjs.com/package/dsh-observe) |
256
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | [npm](https://www.npmjs.com/package/dsh-output-styles) |
257
+ | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | [npm](https://www.npmjs.com/package/dsh-permission-rules) |
258
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | [npm](https://www.npmjs.com/package/dsh-plugin-guide) |
259
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | [npm](https://www.npmjs.com/package/dsh-plugin-upgrade) |
260
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | [npm](https://www.npmjs.com/package/dsh-reach) |
261
+ | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | [npm](https://www.npmjs.com/package/dsh-research-report) |
262
+ | **[dsh-score](https://github.com/PerryLink/dsh-score)** | [npm](https://www.npmjs.com/package/dsh-score) |
263
+ | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | [npm](https://www.npmjs.com/package/dsh-session-sync) |
264
+ | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | [npm](https://www.npmjs.com/package/dsh-talk) |
265
+ | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | [npm](https://www.npmjs.com/package/dsh-test-drive) |
266
+ | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | [npm](https://www.npmjs.com/package/dsh-translate) |
267
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
268
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
269
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
270
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
271
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
272
+
273
+ </details>
274
+
148
275
  ## Licença
149
276
 
150
277
  Apache-2.0. See `LICENSE`, `NOTICE`, `THIRD-PARTY-NOTICES`.
package/README-zh.md CHANGED
@@ -50,6 +50,16 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
50
50
  dsh plugin --profile <profile> remove dsh-policy-ledger
51
51
  ```
52
52
 
53
+
54
+ ### 安装通道
55
+
56
+ 推荐 npm;其他通道用于固定版本或离线。
57
+
58
+ - **npm(推荐):** `dsh plugin --profile <profile> add dsh-policy-ledger`
59
+ - **git 通道:** `dsh plugin --profile <profile> add github:PerryLink/dsh-policy-ledger`
60
+ - **tarball:** `pnpm pack` then `dsh plugin --profile <profile> add ./dsh-policy-ledger-<version>.tgz`
61
+ - **1024 商店:** `npm i -g dsh1024` then `dsh1024 plugin --profile <profile> add dsh-policy-ledger`
62
+
53
63
  ## 它做什么
54
64
 
55
65
  只读安装诊断:能力快照、tarball 断言与安装日志分类。 在 DeepSeek Harness 本地运行;下表就是实际工具面,示例使用真实命令面。
@@ -58,16 +68,16 @@ dsh plugin --profile <profile> remove dsh-policy-ledger
58
68
 
59
69
  ## 工具
60
70
 
61
- 工具名和说明保留英文,以对应运行输出。
71
+ 工具名是稳定 API;说明已本地化。
62
72
 
63
- | 工具 | 用途(英文对应运行输出) | 风险 |
73
+ | 工具 | 用途 | 风险 |
64
74
  |---|---|---|
65
- | `trust.capability_snapshot` | Extract declared capabilities and R0–R3 risk from a local npm `.tgz`: tools, bundle/client/bin/skill, build scripts, outbound hosts, credential references | R0 local read |
66
- | `trust.diff` | Compare two stored snapshots: added/removed capabilities, risk escalation, blockers | R0 |
67
- | `trust.assert_tarball` | Re-read a tarball and compare it with a stored snapshot: pass/missing/extra/changed/unknown | R0 |
68
- | `install.diagnose` | Classify an install log into stage, root cause and three actions; return unknown rather than guess | R0 |
69
- | `install.probe` | Check disk free, write permission, proxy, optional registry RTT, node/pnpm | R0 |
70
- | `install.bundle` | Write a redacted incident ZIP (diagnosis + evidence lines) | R1 local write |
75
+ | `trust.capability_snapshot` | 从本地 npm `.tgz` 中提取声明的能力与 R0–R3 风险:tools、bundle/client/bin/skill、构建脚本、出站主机、凭据引用 | R0 local read |
76
+ | `trust.diff` | 比较两个已保存快照:新增/移除的能力、风险升级、阻断项 | R0 |
77
+ | `trust.assert_tarball` | 重新读取 tarball 并与已保存快照比对:通过/缺失/多余/变更/未知 | R0 |
78
+ | `install.diagnose` | 将安装日志归类为阶段、根因和三条行动建议;无法判断时返回未知而非猜测 | R0 |
79
+ | `install.probe` | 检查磁盘可用空间、写权限、代理、可选的 registry RTT 以及 node/pnpm | R0 |
80
+ | `install.bundle` | 写出经脱敏的事件 ZIP(诊断 + 证据行) | R1 local write |
71
81
 
72
82
  ## 快速开始
73
83
 
@@ -76,6 +86,22 @@ dsh plugin --profile <profile> add dsh-policy-ledger
76
86
  dsh --profile <profile> --dump-config | grep dsh-policy-ledger
77
87
  ```
78
88
 
89
+ ## 示例
90
+
91
+ ### fixture 支撑的示例
92
+
93
+ 输入: `fixtures/`
94
+
95
+ 命令: `pnpm test`
96
+
97
+ 验收行:
98
+
99
+ | req_id | metric | threshold | actual | pass | source | counted |
100
+ |---|---|---|---|---|---|---|
101
+ | SKU-03-A01 | 能力快照抽取(3 包) | 3/3 | 3 | true | public/synthetic | false |
102
+
103
+ *这是 fixture 支撑的验收行,不是客户运行;没有编造输出。*
104
+
79
105
  ## 边界
80
106
 
81
107
  - 仅公开/合成样例;不含客户数据或客户证据。
@@ -85,7 +111,7 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
85
111
 
86
112
  ## 公开样例
87
113
 
88
- 公开/合成 fixture 在 `test/fixtures/`;`ACCEPTANCE.csv` 记录公开检查,全部 `counted=false`。
114
+ 公开/合成 fixture 在 `fixtures/`;`ACCEPTANCE.csv` 记录公开检查,全部 `counted=false`。
89
115
 
90
116
  ## 开发
91
117
 
@@ -145,6 +171,107 @@ pnpm build && pnpm lint && pnpm typecheck && pnpm test
145
171
 
146
172
  </details>
147
173
 
174
+
175
+ <details>
176
+ <summary>主线家族 — 92 个当前安装 spec</summary>
177
+
178
+ | Package | npm |
179
+ |---|---|
180
+ | **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | [npm](https://www.npmjs.com/package/dsh-aqua-input-check) |
181
+ | **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | [npm](https://www.npmjs.com/package/dsh-archive-check) |
182
+ | **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | [npm](https://www.npmjs.com/package/dsh-bid-ca-precheck) |
183
+ | **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | [npm](https://www.npmjs.com/package/dsh-bid-qual-check) |
184
+ | **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | [npm](https://www.npmjs.com/package/dsh-contract-stance) |
185
+ | **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | [npm](https://www.npmjs.com/package/dsh-customs-doc-check) |
186
+ | **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | [npm](https://www.npmjs.com/package/dsh-demurrage-ledger) |
187
+ | **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | [npm](https://www.npmjs.com/package/dsh-drill-script-check) |
188
+ | **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | [npm](https://www.npmjs.com/package/dsh-eia-guide-check) |
189
+ | **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | [npm](https://www.npmjs.com/package/dsh-emergency-plan) |
190
+ | **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | [npm](https://www.npmjs.com/package/dsh-essay-rubric-check) |
191
+ | **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | [npm](https://www.npmjs.com/package/dsh-evidence-check) |
192
+ | **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | [npm](https://www.npmjs.com/package/dsh-export-ctl-check) |
193
+ | **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | [npm](https://www.npmjs.com/package/dsh-fmea-table-check) |
194
+ | **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | [npm](https://www.npmjs.com/package/dsh-forecast-penalty) |
195
+ | **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-flow-check) |
196
+ | **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-word-check) |
197
+ | **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | [npm](https://www.npmjs.com/package/dsh-guard-plan-qc) |
198
+ | **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | [npm](https://www.npmjs.com/package/dsh-hazchem-check) |
199
+ | **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | [npm](https://www.npmjs.com/package/dsh-hazplan-check) |
200
+ | **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | [npm](https://www.npmjs.com/package/dsh-hidden-risk-map) |
201
+ | **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | [npm](https://www.npmjs.com/package/dsh-hs-classify) |
202
+ | **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | [npm](https://www.npmjs.com/package/dsh-icd-rule-check) |
203
+ | **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | [npm](https://www.npmjs.com/package/dsh-lawcite-adapter) |
204
+ | **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | [npm](https://www.npmjs.com/package/dsh-lc-doc-check) |
205
+ | **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | [npm](https://www.npmjs.com/package/dsh-learning-gap-check) |
206
+ | **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | [npm](https://www.npmjs.com/package/dsh-medrec-qc) |
207
+ | **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | [npm](https://www.npmjs.com/package/dsh-nsfc-form-check) |
208
+ | **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | [npm](https://www.npmjs.com/package/dsh-nurse-record-check) |
209
+ | **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | [npm](https://www.npmjs.com/package/dsh-origin-rvc-check) |
210
+ | **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | [npm](https://www.npmjs.com/package/dsh-ota-review-check) |
211
+ | **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | [npm](https://www.npmjs.com/package/dsh-paper-doc-adapter) |
212
+ | **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | [npm](https://www.npmjs.com/package/dsh-permit-report-check) |
213
+ | **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | [npm](https://www.npmjs.com/package/dsh-pipeline-check) |
214
+ | **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | [npm](https://www.npmjs.com/package/dsh-pleading-draft) |
215
+ | **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | [npm](https://www.npmjs.com/package/dsh-policy-brief-draft) |
216
+ | **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | [npm](https://www.npmjs.com/package/dsh-power-loss-split) |
217
+ | **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | [npm](https://www.npmjs.com/package/dsh-power-ticket-check) |
218
+ | **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | [npm](https://www.npmjs.com/package/dsh-ppap-check) |
219
+ | **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | [npm](https://www.npmjs.com/package/dsh-protest-deadline) |
220
+ | **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | [npm](https://www.npmjs.com/package/dsh-railway-window) |
221
+ | **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | [npm](https://www.npmjs.com/package/dsh-repair-order-qc) |
222
+ | **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | [npm](https://www.npmjs.com/package/dsh-review-reply-check) |
223
+ | **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | [npm](https://www.npmjs.com/package/dsh-rulefile-check) |
224
+ | **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | [npm](https://www.npmjs.com/package/dsh-safety-brief-check) |
225
+ | **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | [npm](https://www.npmjs.com/package/dsh-site-log-check) |
226
+ | **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | [npm](https://www.npmjs.com/package/dsh-soe-decision-check) |
227
+ | **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | [npm](https://www.npmjs.com/package/dsh-soilwater-check) |
228
+ | **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | [npm](https://www.npmjs.com/package/dsh-sop-sync-check) |
229
+ | **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | [npm](https://www.npmjs.com/package/dsh-spc-gbt-adapter) |
230
+ | **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | [npm](https://www.npmjs.com/package/dsh-tender-extract) |
231
+ | **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | [npm](https://www.npmjs.com/package/dsh-tender-matrix) |
232
+ | **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | [npm](https://www.npmjs.com/package/dsh-warranty-calc) |
233
+ | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | [npm](https://www.npmjs.com/package/dsh-auto-review) |
234
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | [npm](https://www.npmjs.com/package/dsh-autotier) |
235
+ | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | [npm](https://www.npmjs.com/package/dsh-budget) |
236
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | [npm](https://www.npmjs.com/package/dsh-cert-mcp) |
237
+ | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | [npm](https://www.npmjs.com/package/dsh-checkpoint-rewind) |
238
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | [npm](https://www.npmjs.com/package/dsh-claude-move) |
239
+ | **[dsh-click](https://github.com/PerryLink/dsh-click)** | [npm](https://www.npmjs.com/package/dsh-click) |
240
+ | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | [npm](https://www.npmjs.com/package/dsh-composer-history) |
241
+ | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | [npm](https://www.npmjs.com/package/dsh-data-quality) |
242
+ | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | [npm](https://www.npmjs.com/package/dsh-defend) |
243
+ | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | [npm](https://www.npmjs.com/package/dsh-doublecheck) |
244
+ | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | [npm](https://www.npmjs.com/package/dsh-draw) |
245
+ | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | [npm](https://www.npmjs.com/package/dsh-fast) |
246
+ | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | [npm](https://www.npmjs.com/package/dsh-fund-research) |
247
+ | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | [npm](https://www.npmjs.com/package/dsh-industry-research) |
248
+ | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | [npm](https://www.npmjs.com/package/dsh-laya) |
249
+ | **[dsh-library](https://github.com/PerryLink/dsh-library)** | [npm](https://www.npmjs.com/package/dsh-library) |
250
+ | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | [npm](https://www.npmjs.com/package/dsh-local-ai) |
251
+ | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | [npm](https://www.npmjs.com/package/dsh-lsp-actions) |
252
+ | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | [npm](https://www.npmjs.com/package/dsh-mask) |
253
+ | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | [npm](https://www.npmjs.com/package/dsh-mcp-panel) |
254
+ | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | [npm](https://www.npmjs.com/package/dsh-memento) |
255
+ | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | [npm](https://www.npmjs.com/package/dsh-observe) |
256
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | [npm](https://www.npmjs.com/package/dsh-output-styles) |
257
+ | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | [npm](https://www.npmjs.com/package/dsh-permission-rules) |
258
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | [npm](https://www.npmjs.com/package/dsh-plugin-guide) |
259
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | [npm](https://www.npmjs.com/package/dsh-plugin-upgrade) |
260
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | [npm](https://www.npmjs.com/package/dsh-reach) |
261
+ | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | [npm](https://www.npmjs.com/package/dsh-research-report) |
262
+ | **[dsh-score](https://github.com/PerryLink/dsh-score)** | [npm](https://www.npmjs.com/package/dsh-score) |
263
+ | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | [npm](https://www.npmjs.com/package/dsh-session-sync) |
264
+ | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | [npm](https://www.npmjs.com/package/dsh-talk) |
265
+ | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | [npm](https://www.npmjs.com/package/dsh-test-drive) |
266
+ | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | [npm](https://www.npmjs.com/package/dsh-translate) |
267
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
268
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
269
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
270
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
271
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
272
+
273
+ </details>
274
+
148
275
  ## 许可证
149
276
 
150
277
  Apache-2.0. See `LICENSE`, `NOTICE`, `THIRD-PARTY-NOTICES`.
package/README.md CHANGED
@@ -50,6 +50,16 @@ Uninstall:
50
50
  dsh plugin --profile <profile> remove dsh-policy-ledger
51
51
  ```
52
52
 
53
+
54
+ ### Install channels
55
+
56
+ npm is the recommended channel; the others are for pinning or offline use.
57
+
58
+ - **npm (recommended):** `dsh plugin --profile <profile> add dsh-policy-ledger`
59
+ - **git channel:** `dsh plugin --profile <profile> add github:PerryLink/dsh-policy-ledger`
60
+ - **tarball:** `pnpm pack` then `dsh plugin --profile <profile> add ./dsh-policy-ledger-<version>.tgz`
61
+ - **1024 store:** `npm i -g dsh1024` then `dsh1024 plugin --profile <profile> add dsh-policy-ledger`
62
+
53
63
  ## What it does
54
64
 
55
65
  Read-only install doctor: capability snapshot, tarball assert and install diagnosis. Runs locally on DeepSeek Harness. The table below is the exact tool surface; the examples use the real command surface.
@@ -76,6 +86,22 @@ dsh plugin --profile <profile> add dsh-policy-ledger
76
86
  dsh --profile <profile> --dump-config | grep dsh-policy-ledger
77
87
  ```
78
88
 
89
+ ## Examples
90
+
91
+ ### Fixture-backed example
92
+
93
+ Input: `fixtures/`
94
+
95
+ Command: `pnpm test`
96
+
97
+ Acceptance row:
98
+
99
+ | req_id | metric | threshold | actual | pass | source | counted |
100
+ |---|---|---|---|---|---|---|
101
+ | SKU-03-A01 | 能力快照抽取(3 包) | 3/3 | 3 | true | public/synthetic | false |
102
+
103
+ *This is a fixture-backed acceptance row, not a customer run; no output is invented.*
104
+
79
105
  ## Limits
80
106
 
81
107
  - Public/synthetic only; no customer data or customer evidence.
@@ -85,7 +111,7 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
85
111
 
86
112
  ## Public sample
87
113
 
88
- Public/synthetic fixtures live in `test/fixtures/`; `ACCEPTANCE.csv` records the public checks with `counted=false`.
114
+ Public/synthetic fixtures live in `fixtures/`; `ACCEPTANCE.csv` records the public checks with `counted=false`.
89
115
 
90
116
  ## Development
91
117
 
@@ -145,6 +171,107 @@ Sibling packages and family indexes: [dsh-pim-lint](https://github.com/PerryLink
145
171
 
146
172
  </details>
147
173
 
174
+
175
+ <details>
176
+ <summary>Mainline family — 92 current install specs</summary>
177
+
178
+ | Package | npm |
179
+ |---|---|
180
+ | **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | [npm](https://www.npmjs.com/package/dsh-aqua-input-check) |
181
+ | **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | [npm](https://www.npmjs.com/package/dsh-archive-check) |
182
+ | **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | [npm](https://www.npmjs.com/package/dsh-bid-ca-precheck) |
183
+ | **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | [npm](https://www.npmjs.com/package/dsh-bid-qual-check) |
184
+ | **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | [npm](https://www.npmjs.com/package/dsh-contract-stance) |
185
+ | **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | [npm](https://www.npmjs.com/package/dsh-customs-doc-check) |
186
+ | **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | [npm](https://www.npmjs.com/package/dsh-demurrage-ledger) |
187
+ | **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | [npm](https://www.npmjs.com/package/dsh-drill-script-check) |
188
+ | **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | [npm](https://www.npmjs.com/package/dsh-eia-guide-check) |
189
+ | **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | [npm](https://www.npmjs.com/package/dsh-emergency-plan) |
190
+ | **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | [npm](https://www.npmjs.com/package/dsh-essay-rubric-check) |
191
+ | **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | [npm](https://www.npmjs.com/package/dsh-evidence-check) |
192
+ | **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | [npm](https://www.npmjs.com/package/dsh-export-ctl-check) |
193
+ | **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | [npm](https://www.npmjs.com/package/dsh-fmea-table-check) |
194
+ | **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | [npm](https://www.npmjs.com/package/dsh-forecast-penalty) |
195
+ | **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-flow-check) |
196
+ | **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | [npm](https://www.npmjs.com/package/dsh-gongwen-word-check) |
197
+ | **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | [npm](https://www.npmjs.com/package/dsh-guard-plan-qc) |
198
+ | **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | [npm](https://www.npmjs.com/package/dsh-hazchem-check) |
199
+ | **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | [npm](https://www.npmjs.com/package/dsh-hazplan-check) |
200
+ | **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | [npm](https://www.npmjs.com/package/dsh-hidden-risk-map) |
201
+ | **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | [npm](https://www.npmjs.com/package/dsh-hs-classify) |
202
+ | **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | [npm](https://www.npmjs.com/package/dsh-icd-rule-check) |
203
+ | **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | [npm](https://www.npmjs.com/package/dsh-lawcite-adapter) |
204
+ | **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | [npm](https://www.npmjs.com/package/dsh-lc-doc-check) |
205
+ | **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | [npm](https://www.npmjs.com/package/dsh-learning-gap-check) |
206
+ | **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | [npm](https://www.npmjs.com/package/dsh-medrec-qc) |
207
+ | **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | [npm](https://www.npmjs.com/package/dsh-nsfc-form-check) |
208
+ | **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | [npm](https://www.npmjs.com/package/dsh-nurse-record-check) |
209
+ | **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | [npm](https://www.npmjs.com/package/dsh-origin-rvc-check) |
210
+ | **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | [npm](https://www.npmjs.com/package/dsh-ota-review-check) |
211
+ | **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | [npm](https://www.npmjs.com/package/dsh-paper-doc-adapter) |
212
+ | **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | [npm](https://www.npmjs.com/package/dsh-permit-report-check) |
213
+ | **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | [npm](https://www.npmjs.com/package/dsh-pipeline-check) |
214
+ | **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | [npm](https://www.npmjs.com/package/dsh-pleading-draft) |
215
+ | **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | [npm](https://www.npmjs.com/package/dsh-policy-brief-draft) |
216
+ | **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | [npm](https://www.npmjs.com/package/dsh-power-loss-split) |
217
+ | **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | [npm](https://www.npmjs.com/package/dsh-power-ticket-check) |
218
+ | **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | [npm](https://www.npmjs.com/package/dsh-ppap-check) |
219
+ | **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | [npm](https://www.npmjs.com/package/dsh-protest-deadline) |
220
+ | **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | [npm](https://www.npmjs.com/package/dsh-railway-window) |
221
+ | **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | [npm](https://www.npmjs.com/package/dsh-repair-order-qc) |
222
+ | **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | [npm](https://www.npmjs.com/package/dsh-review-reply-check) |
223
+ | **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | [npm](https://www.npmjs.com/package/dsh-rulefile-check) |
224
+ | **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | [npm](https://www.npmjs.com/package/dsh-safety-brief-check) |
225
+ | **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | [npm](https://www.npmjs.com/package/dsh-site-log-check) |
226
+ | **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | [npm](https://www.npmjs.com/package/dsh-soe-decision-check) |
227
+ | **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | [npm](https://www.npmjs.com/package/dsh-soilwater-check) |
228
+ | **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | [npm](https://www.npmjs.com/package/dsh-sop-sync-check) |
229
+ | **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | [npm](https://www.npmjs.com/package/dsh-spc-gbt-adapter) |
230
+ | **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | [npm](https://www.npmjs.com/package/dsh-tender-extract) |
231
+ | **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | [npm](https://www.npmjs.com/package/dsh-tender-matrix) |
232
+ | **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | [npm](https://www.npmjs.com/package/dsh-warranty-calc) |
233
+ | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | [npm](https://www.npmjs.com/package/dsh-auto-review) |
234
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | [npm](https://www.npmjs.com/package/dsh-autotier) |
235
+ | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | [npm](https://www.npmjs.com/package/dsh-budget) |
236
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | [npm](https://www.npmjs.com/package/dsh-cert-mcp) |
237
+ | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | [npm](https://www.npmjs.com/package/dsh-checkpoint-rewind) |
238
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | [npm](https://www.npmjs.com/package/dsh-claude-move) |
239
+ | **[dsh-click](https://github.com/PerryLink/dsh-click)** | [npm](https://www.npmjs.com/package/dsh-click) |
240
+ | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | [npm](https://www.npmjs.com/package/dsh-composer-history) |
241
+ | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | [npm](https://www.npmjs.com/package/dsh-data-quality) |
242
+ | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | [npm](https://www.npmjs.com/package/dsh-defend) |
243
+ | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | [npm](https://www.npmjs.com/package/dsh-doublecheck) |
244
+ | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | [npm](https://www.npmjs.com/package/dsh-draw) |
245
+ | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | [npm](https://www.npmjs.com/package/dsh-fast) |
246
+ | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | [npm](https://www.npmjs.com/package/dsh-fund-research) |
247
+ | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | [npm](https://www.npmjs.com/package/dsh-industry-research) |
248
+ | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | [npm](https://www.npmjs.com/package/dsh-laya) |
249
+ | **[dsh-library](https://github.com/PerryLink/dsh-library)** | [npm](https://www.npmjs.com/package/dsh-library) |
250
+ | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | [npm](https://www.npmjs.com/package/dsh-local-ai) |
251
+ | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | [npm](https://www.npmjs.com/package/dsh-lsp-actions) |
252
+ | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | [npm](https://www.npmjs.com/package/dsh-mask) |
253
+ | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | [npm](https://www.npmjs.com/package/dsh-mcp-panel) |
254
+ | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | [npm](https://www.npmjs.com/package/dsh-memento) |
255
+ | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | [npm](https://www.npmjs.com/package/dsh-observe) |
256
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | [npm](https://www.npmjs.com/package/dsh-output-styles) |
257
+ | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | [npm](https://www.npmjs.com/package/dsh-permission-rules) |
258
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | [npm](https://www.npmjs.com/package/dsh-plugin-guide) |
259
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | [npm](https://www.npmjs.com/package/dsh-plugin-upgrade) |
260
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | [npm](https://www.npmjs.com/package/dsh-reach) |
261
+ | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | [npm](https://www.npmjs.com/package/dsh-research-report) |
262
+ | **[dsh-score](https://github.com/PerryLink/dsh-score)** | [npm](https://www.npmjs.com/package/dsh-score) |
263
+ | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | [npm](https://www.npmjs.com/package/dsh-session-sync) |
264
+ | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | [npm](https://www.npmjs.com/package/dsh-talk) |
265
+ | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | [npm](https://www.npmjs.com/package/dsh-test-drive) |
266
+ | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | [npm](https://www.npmjs.com/package/dsh-translate) |
267
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
268
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
269
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
270
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
271
+ | **[](https://github.com/PerryLink/)** | [npm](https://www.npmjs.com/package/) |
272
+
273
+ </details>
274
+
148
275
  ## License
149
276
 
150
277
  Apache-2.0. See `LICENSE`, `NOTICE`, `THIRD-PARTY-NOTICES`.
package/SECURITY.md ADDED
@@ -0,0 +1,19 @@
1
+ # Security policy
2
+
3
+ ## Supported versions
4
+
5
+ The current `alpha` line of `dsh-policy-ledger` is supported for security reports. Older alpha builds are not supported.
6
+
7
+ ## Reporting a vulnerability
8
+
9
+ Please **do not** open a public issue for a vulnerability. Email **novelnexusai@outlook.com** with:
10
+
11
+ - the package and version,
12
+ - a minimal reproduction,
13
+ - the impact you believe it has.
14
+
15
+ This is a public/synthetic alpha project. It has no bug bounty, no SLA, and no customer data. Reports are handled on a best-effort basis; a fix or a written “not affected / won't fix” answer will be recorded in the repository.
16
+
17
+ ## Scope
18
+
19
+ In scope: the published npm package, its Cordis patch, local file handling, and the documented tool surface. Out of scope: findings that require customer data, a modified package, or a service this project does not ship.
package/icon.svg ADDED
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img" aria-label="PL">
2
+ <rect width="128" height="128" rx="28" fill="#0b1020"/>
3
+ <rect x="10" y="10" width="108" height="108" rx="22" fill="#141b30" stroke="#6ea8fe" stroke-width="3"/>
4
+ <text x="64" y="76" text-anchor="middle" fill="#e8edf7" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="34" font-weight="700">PL</text>
5
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-policy-ledger",
3
- "version": "0.2.0-alpha.6",
3
+ "version": "0.2.0-alpha.7",
4
4
  "description": "Read-only install doctor: capability snapshot, tarball assert and install diagnosis.",
5
5
  "type": "module",
6
6
  "main": "./lib/plugin/index.js",
@@ -26,7 +26,13 @@
26
26
  "README-es.md",
27
27
  "README-pt.md",
28
28
  "README-hi.md",
29
- "docs/assets"
29
+ "docs/assets",
30
+ "SECURITY.md",
31
+ "PRIVACY.md",
32
+ "CODE_OF_CONDUCT.md",
33
+ "CONTRIBUTING.md",
34
+ "CHANGELOG.md",
35
+ "icon.svg"
30
36
  ],
31
37
  "dsh": {
32
38
  "bundle": {
@@ -94,5 +100,6 @@
94
100
  "homepage": "https://perrylink.github.io/dsh-plugins/packages/dsh-policy-ledger.html",
95
101
  "bugs": {
96
102
  "url": "https://github.com/PerryLink/dsh-policy-ledger/issues"
97
- }
103
+ },
104
+ "icon": "icon.svg"
98
105
  }