dsh-policy-ledger 0.2.0-alpha.5 → 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
@@ -2,6 +2,8 @@
2
2
 
3
3
  # dsh-policy-ledger
4
4
 
5
+ > **Repositorio oficial.** El único repositorio oficial de este paquete, mantenido por PerryLink. Los repositorios con el mismo nombre en otras cuentas no están afiliados. Apache-2.0.
6
+
5
7
  > **Status: KEEP — install-only companion.** Not a duplicate of `dsh-plugin-doctor`: this answers "what is installed, what does the tarball contain, why did the install fail?" with a read-only capability snapshot, tarball assertions and install-log diagnosis. `dsh-plugin-doctor` does package-structure, cordis and sandbox-smoke checks. Use both when you need both questions answered.
6
8
 
7
9
  [![npm](https://img.shields.io/npm/v/dsh-policy-ledger)](https://www.npmjs.com/package/dsh-policy-ledger)
@@ -9,6 +11,11 @@
9
11
  [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
10
12
  [![dsh-plugin](https://img.shields.io/badge/dsh--plugin-%E2%9C%93-green)](https://github.com/topics/dsh-plugin)
11
13
  [![docs](https://img.shields.io/badge/docs-domain%20index-0b5fff)](https://perrylink.github.io/dsh-plugins/)
14
+ [![Gitee](https://img.shields.io/badge/Gitee-aggregate-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-plugins)
15
+ [![dshfind](https://dshfind.com/api/badge/PerryLink/dsh-policy-ledger?metric=downloads)](https://dshfind.com/plugins/PerryLink/dsh-policy-ledger?ref=badge)
16
+ [![DSH Market](https://raw.githubusercontent.com/2BingLing/dsh-market/master/assets/readme/badge-listed-en.svg)](https://dsh.market/)
17
+ [![Node](https://img.shields.io/badge/node-24.9%2B-brightgreen)](#)
18
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-policy-ledger)](https://www.npmjs.com/package/dsh-policy-ledger)
12
19
 
13
20
  **Doctor de instalación de solo lectura: instantánea de capacidades, verificación de tarball y diagnóstico.**
14
21
 
@@ -22,6 +29,8 @@ dsh plugin --profile <profile> add dsh-policy-ledger
22
29
 
23
30
  </div>
24
31
 
32
+ > ⭐ Si te resulta útil, una estrella ayuda a que la siguiente persona lo encuentre. Nada está bloqueado tras ella.
33
+
25
34
  ![Workflow diagram for dsh-policy-ledger: local input, plugin, local output.](docs/assets/dsh-policy-ledger-flow.svg)
26
35
 
27
36
  *Flujo: entrada local → plugin → salida local. No requiere llamada a un modelo.*
@@ -41,6 +50,16 @@ Desinstalar:
41
50
  dsh plugin --profile <profile> remove dsh-policy-ledger
42
51
  ```
43
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
+
44
63
  ## Qué hace
45
64
 
46
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.
@@ -49,16 +68,16 @@ La entrada y la salida permanecen locales; no se sube nada.
49
68
 
50
69
  ## Herramientas
51
70
 
52
- 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.
53
72
 
54
- | Herramienta | Propósito (en inglés) | Riesgo |
73
+ | Herramienta | Propósito | Riesgo |
55
74
  |---|---|---|
56
- | `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 |
57
- | `trust.diff` | Compare two stored snapshots: added/removed capabilities, risk escalation, blockers | R0 |
58
- | `trust.assert_tarball` | Re-read a tarball and compare it with a stored snapshot: pass/missing/extra/changed/unknown | R0 |
59
- | `install.diagnose` | Classify an install log into stage, root cause and three actions; return unknown rather than guess | R0 |
60
- | `install.probe` | Check disk free, write permission, proxy, optional registry RTT, node/pnpm | R0 |
61
- | `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 |
62
81
 
63
82
  ## Inicio rápido
64
83
 
@@ -67,6 +86,22 @@ dsh plugin --profile <profile> add dsh-policy-ledger
67
86
  dsh --profile <profile> --dump-config | grep dsh-policy-ledger
68
87
  ```
69
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
+
70
105
  ## Límites
71
106
 
72
107
  - Solo público/sintético; sin datos ni evidencia de clientes.
@@ -76,7 +111,7 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
76
111
 
77
112
  ## Muestra pública
78
113
 
79
- 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`.
80
115
 
81
116
  ## Desarrollo
82
117
 
@@ -85,6 +120,30 @@ pnpm install --frozen-lockfile
85
120
  pnpm build && pnpm lint && pnpm typecheck && pnpm test
86
121
  ```
87
122
 
123
+ ## Compatibilidad
124
+
125
+ | Superficie | Estado |
126
+ |---|---|
127
+ | Harness | `dsh >=0.2.1-rc.3 <0.3.0` |
128
+ | Node | `>=24.9.0 <25` |
129
+ | Platforms | All; local files only |
130
+ | Datos | No network, no model call, no upload |
131
+
132
+ ## Permisos y datos
133
+
134
+ - Se ejecuta localmente; sin red, sin modelo, sin subida.
135
+ - Solo fixtures públicas/sintéticas; sin datos ni evidencia de clientes.
136
+ - Alpha/parcial; no contabilizado, sin GA ni promesa de producción.
137
+ - Los paquetes congelados siguen instalables; sin nuevas funciones, solo fallos reales.
138
+
139
+ ## Trabajo relacionado
140
+
141
+ Paquetes hermanos e índices de familia: [dsh-pim-lint](https://github.com/PerryLink/dsh-pim-lint) · [dsh-eval-pack](https://github.com/PerryLink/dsh-eval-pack)
142
+
143
+ - [Índice de dominio](https://perrylink.github.io/dsh-plugins/)
144
+ - [Familia de checkers](https://perrylink.github.io/zh/checkers/)
145
+ - [Familia principal](https://github.com/PerryLink/dsh-kit)
146
+
88
147
  ## Familia
89
148
 
90
149
  <details>
@@ -112,6 +171,107 @@ pnpm build && pnpm lint && pnpm typecheck && pnpm test
112
171
 
113
172
  </details>
114
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
+
115
275
  ## Licencia
116
276
 
117
277
  Apache-2.0. See `LICENSE`, `NOTICE`, `THIRD-PARTY-NOTICES`.
package/README-hi.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  # dsh-policy-ledger
4
4
 
5
+ > **आधिकारिक रिपॉज़िटरी।** इस पैकेज की एकमात्र आधिकारिक रिपॉज़िटरी, PerryLink द्वारा अनुरक्षित। अन्य खातों की समान-नाम वाली रिपॉज़िटरी संबद्ध नहीं हैं। Apache-2.0।
6
+
5
7
  > **Status: KEEP — install-only companion.** Not a duplicate of `dsh-plugin-doctor`: this answers "what is installed, what does the tarball contain, why did the install fail?" with a read-only capability snapshot, tarball assertions and install-log diagnosis. `dsh-plugin-doctor` does package-structure, cordis and sandbox-smoke checks. Use both when you need both questions answered.
6
8
 
7
9
  [![npm](https://img.shields.io/npm/v/dsh-policy-ledger)](https://www.npmjs.com/package/dsh-policy-ledger)
@@ -9,6 +11,11 @@
9
11
  [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
10
12
  [![dsh-plugin](https://img.shields.io/badge/dsh--plugin-%E2%9C%93-green)](https://github.com/topics/dsh-plugin)
11
13
  [![docs](https://img.shields.io/badge/docs-domain%20index-0b5fff)](https://perrylink.github.io/dsh-plugins/)
14
+ [![Gitee](https://img.shields.io/badge/Gitee-aggregate-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-plugins)
15
+ [![dshfind](https://dshfind.com/api/badge/PerryLink/dsh-policy-ledger?metric=downloads)](https://dshfind.com/plugins/PerryLink/dsh-policy-ledger?ref=badge)
16
+ [![DSH Market](https://raw.githubusercontent.com/2BingLing/dsh-market/master/assets/readme/badge-listed-en.svg)](https://dsh.market/)
17
+ [![Node](https://img.shields.io/badge/node-24.9%2B-brightgreen)](#)
18
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-policy-ledger)](https://www.npmjs.com/package/dsh-policy-ledger)
12
19
 
13
20
  **केवल-पढ़ने वाला इंस्टॉल डॉक्टर: क्षमता स्नैपशॉट, tarball जाँच और इंस्टॉल निदान।**
14
21
 
@@ -22,6 +29,8 @@ dsh plugin --profile <profile> add dsh-policy-ledger
22
29
 
23
30
  </div>
24
31
 
32
+ > ⭐ अगर यह मदद करे, तो एक स्टार अगले व्यक्ति को इसे खोजने में आसानी देता है। स्टार से कोई सुविधा अनलॉक नहीं होती।
33
+
25
34
  ![Workflow diagram for dsh-policy-ledger: local input, plugin, local output.](docs/assets/dsh-policy-ledger-flow.svg)
26
35
 
27
36
  *वर्कफ़्लो: स्थानीय इनपुट → प्लगइन → स्थानीय आउटपुट। मॉडल कॉल आवश्यक नहीं।*
@@ -41,6 +50,16 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
41
50
  dsh plugin --profile <profile> remove dsh-policy-ledger
42
51
  ```
43
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
+
44
63
  ## यह क्या करता है
45
64
 
46
65
  केवल-पढ़ने वाला इंस्टॉल डॉक्टर: क्षमता स्नैपशॉट, tarball जाँच और इंस्टॉल निदान। DeepSeek Harness पर स्थानीय रूप से चलता है। नीचे दी गई तालिका ही सटीक टूल सतह है; उदाहरण वास्तविक कमांड का उपयोग करते हैं।
@@ -49,16 +68,16 @@ dsh plugin --profile <profile> remove dsh-policy-ledger
49
68
 
50
69
  ## टूल्स
51
70
 
52
- टूल नाम और विवरण runtime आउटपुट से मेल खाने के लिए अंग्रेज़ी में रखे गए हैं।
71
+ टूल नाम स्थिर API हैं; विवरण स्थानीयकृत हैं।
53
72
 
54
- | टूल | उद्देश्य (अंग्रेज़ी) | जोखिम |
73
+ | टूल | उद्देश्य | जोखिम |
55
74
  |---|---|---|
56
- | `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 |
57
- | `trust.diff` | Compare two stored snapshots: added/removed capabilities, risk escalation, blockers | R0 |
58
- | `trust.assert_tarball` | Re-read a tarball and compare it with a stored snapshot: pass/missing/extra/changed/unknown | R0 |
59
- | `install.diagnose` | Classify an install log into stage, root cause and three actions; return unknown rather than guess | R0 |
60
- | `install.probe` | Check disk free, write permission, proxy, optional registry RTT, node/pnpm | R0 |
61
- | `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 |
62
81
 
63
82
  ## त्वरित शुरुआत
64
83
 
@@ -67,6 +86,22 @@ dsh plugin --profile <profile> add dsh-policy-ledger
67
86
  dsh --profile <profile> --dump-config | grep dsh-policy-ledger
68
87
  ```
69
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
+
70
105
  ## सीमाएँ
71
106
 
72
107
  - केवल सार्वजनिक/सिंथेटिक; ग्राहक डेटा या साक्ष्य नहीं।
@@ -76,7 +111,7 @@ dsh --profile <profile> --dump-config | grep dsh-policy-ledger
76
111
 
77
112
  ## सार्वजनिक नमूना
78
113
 
79
- सार्वजनिक/सिंथेटिक fixtures `test/fixtures/` में हैं; `ACCEPTANCE.csv` सार्वजनिक जाँचों को `counted=false` के साथ दर्ज करता है।
114
+ सार्वजनिक/सिंथेटिक fixtures `fixtures/` में हैं; `ACCEPTANCE.csv` सार्वजनिक जाँचों को `counted=false` के साथ दर्ज करता है।
80
115
 
81
116
  ## विकास
82
117
 
@@ -85,6 +120,30 @@ pnpm install --frozen-lockfile
85
120
  pnpm build && pnpm lint && pnpm typecheck && pnpm test
86
121
  ```
87
122
 
123
+ ## संगतता
124
+
125
+ | सतह | स्थिति |
126
+ |---|---|
127
+ | Harness | `dsh >=0.2.1-rc.3 <0.3.0` |
128
+ | Node | `>=24.9.0 <25` |
129
+ | Platforms | All; local files only |
130
+ | डेटा | No network, no model call, no upload |
131
+
132
+ ## अनुमतियाँ और डेटा
133
+
134
+ - स्थानीय रूप से चलता है; नेटवर्क, मॉडल कॉल या अपलोड नहीं।
135
+ - केवल सार्वजनिक/सिंथेटिक fixtures; ग्राहक डेटा या साक्ष्य नहीं।
136
+ - alpha/आंशिक; गिना नहीं गया, GA या उत्पादन-तैयारी का दावा नहीं।
137
+ - फ़्रीज़ पैकेज इंस्टॉल योग्य रहते हैं; नई सुविधाएँ नहीं, केवल वास्तविक खराबी।
138
+
139
+ ## संबंधित कार्य
140
+
141
+ सहोदर पैकेज और परिवार सूचकांक: [dsh-pim-lint](https://github.com/PerryLink/dsh-pim-lint) · [dsh-eval-pack](https://github.com/PerryLink/dsh-eval-pack)
142
+
143
+ - [डोमेन सूचकांक](https://perrylink.github.io/dsh-plugins/)
144
+ - [चेकर परिवार](https://perrylink.github.io/zh/checkers/)
145
+ - [मुख्य परिवार](https://github.com/PerryLink/dsh-kit)
146
+
88
147
  ## परिवार
89
148
 
90
149
  <details>
@@ -112,6 +171,107 @@ pnpm build && pnpm lint && pnpm typecheck && pnpm test
112
171
 
113
172
  </details>
114
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
+
115
275
  ## लाइसेंस
116
276
 
117
277
  Apache-2.0. See `LICENSE`, `NOTICE`, `THIRD-PARTY-NOTICES`.