dsh-plugin-guide 0.5.1 → 0.5.2

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.
Files changed (2) hide show
  1. package/docs/security.md +17 -8
  2. package/package.json +1 -1
package/docs/security.md CHANGED
@@ -19,7 +19,7 @@ is mandatory but **WARN-only and never blocks** (`21`, listing included), and
19
19
  four only produce clues (`18`, `19`, `20`, `22`); all eight reduce risk, and
20
20
  **none of them proves a plugin is safe**.
21
21
 
22
- The `security` block is a **separate view**, not a fourth verdict. In the default
22
+ The `security` block is a **separate view**, a scope, not a fourth layer. In the default
23
23
  scope a security `FAIL` is capped to `WARN` inside `security.checks[]`; it is
24
24
  listed only in `security.warn[]` (`security.blocking[]` stays empty), does not
25
25
  enter `buckets.blocking` or `conclusion.headline`, and changes neither `status`
@@ -271,7 +271,7 @@ clearance.
271
271
  npm view pkg@1.2.3 version dsh scripts dist.integrity dist.signatures dist.attestations repository.url time.modified --json
272
272
 
273
273
  # the released static security scope (1.6.0+; does not run the plugin)
274
- npx dsh-standards check ./pkg --scope security --format json
274
+ npx dsh-standards check ./pkg --scope security --json
275
275
  ```
276
276
 
277
277
  **During install.** Start from a throwaway profile (`dsh plugin --profile lab
@@ -321,12 +321,21 @@ read from the manifest. Missing data is never a pass. State that static checks
321
321
  cover known patterns and are not a security audit. The checker can import the
322
322
  plugin, so do not run it against an untrusted package on a host you care about.
323
323
 
324
- **Disputes and delisting.** Hard-reject only four cases: not a plugin /
325
- unparseable, source not pinnable, impersonation or infringement, and a malicious
326
- security hold (manual review with an appeal). List everything else with the
327
- finding attached. The author can withdraw at any time; a 90-day expiry removes
328
- only the label; a 14-day appeal window; keep history for at least two years and
329
- write the reason to `market-actions.jsonl`.
324
+ **Disputes and delisting.** Hard-reject only four cases, each with its reason
325
+ code: `not-a-plugin`, `source-not-pinnable`, `impersonation-or-infringement`,
326
+ and `security-hold` (manual review with an appeal). List everything else with
327
+ the finding attached. Market actions are not label fields: every listing and
328
+ rejection is one row of `market-actions.jsonl`
329
+ (`ts/subject/action/reasonCode/evidenceUrls/actor/signature/appealUrl`); a
330
+ rejection carries one of the four reason codes above, and the authoritative
331
+ fields, acting roles, and appeal link are in
332
+ `00-live/market-contract/DECISION-TABLE.md` §2 and
333
+ `00-live/market-contract/CONTRACT.md` §7. The author can withdraw at any time
334
+ (`lifecycle` becomes `withdrawn` at `withdrawnAt`); a 90-day expiry counts from
335
+ the record's `checkedAt` (rev1 records: from `generatedAt` to `expiresAt`) and
336
+ removes only the label; a project-initiated withdrawal must carry a reason and
337
+ evidence and opens a 14-day appeal window counted from `withdrawnAt` (shown as
338
+ `under-review` while open). Keep record history for at least two years.
330
339
 
331
340
  **Wording ban.** Never write "secure", "certified", "official", "audited", or
332
341
  "100% risk-free", and never imply certification with a shield or a checkmark.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-guide",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "A practical guide to DSH plugin quality: ENTRY checks, FLOW checks, and BOOST guidance. Community guide; not official, not a certification, not a ranking.",
5
5
  "type": "module",
6
6
  "main": "index.js",