pm-ops 2026.9.13 → 2026.9.23

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.9.18 - 2026-09-18
4
+
5
+ ### Added
6
+
7
+ - Ship canonical strict ESLint and duplication gates from pm-ops ([ops-4phd](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/features/ops-4phd.toon))
8
+ - Ship the merge-driver install step as the canonical pm-ops/merge-driver export ([ops-crgk](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/features/ops-crgk.toon))
9
+
10
+ ### Fixed
11
+
12
+ - pm CLI 2026.9.11 drops every pm-ops command, because its new core ops group collides at group level ([ops-k9iv](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-k9iv.toon))
13
+
14
+ ### Other
15
+
16
+ - Certify pm CLI 2026.9.17 ([ops-xz9q](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/chores/ops-xz9q.toon))
17
+
3
18
  ## 2026.9.11 - 2026-09-11
4
19
 
5
20
  ### Added
@@ -24,16 +39,18 @@
24
39
  - Implement ops verify-release command ([ops-621x](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/tasks/ops-621x.toon))
25
40
  - Align Node engine with pm CLI runtime ([ops-45xp](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/tasks/ops-45xp.toon))
26
41
 
42
+ ## 2026.9.9 - 2026-09-09
43
+
44
+ ### Other
45
+
46
+ - Approve pm-cli 2026.9.7 as the development host, and track the merge rule it changes ([ops-f4uj](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/chores/ops-f4uj.toon))
47
+
27
48
  ## 2026.9.8 - 2026-09-08
28
49
 
29
50
  ### Security
30
51
 
31
52
  - An assignment the scanner cannot read leaves the previous binding standing, so a replaced provenance flag still attests the publish ([ops-3wbz](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-3wbz.toon))
32
53
 
33
- ### Other
34
-
35
- - Approve pm-cli 2026.9.7 as the development host, and track the merge rule it changes ([ops-f4uj](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/chores/ops-f4uj.toon))
36
-
37
54
  ## 2026.9.7 - 2026-09-07
38
55
 
39
56
  ### Fixed
@@ -43,6 +60,10 @@
43
60
  - The auditor shell-tokenised every shebang file, so a Node script failed the gate on a template literal ([ops-3o3w](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-3o3w.toon))
44
61
  - Audit xargs/parallel spawning wrappers that leave the publish argument list unresolved ([ops-3xs4](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-3xs4.toon))
45
62
 
63
+ ### Security
64
+
65
+ - Confirm CodeQL closes both shell-injection alerts on a scan of main, rather than assuming the rewrite closed them ([ops-7qhw](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/tasks/ops-7qhw.toon))
66
+
46
67
  ### Other
47
68
 
48
69
  - A same-day re-release is blocked because the pinned pm-changelog rejects the -N version suffix ([ops-tk0h](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/chores/ops-tk0h.toon))
@@ -57,7 +78,6 @@
57
78
 
58
79
  ### Security
59
80
 
60
- - Confirm CodeQL closes both shell-injection alerts on a scan of main, rather than assuming the rewrite closed them ([ops-7qhw](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/tasks/ops-7qhw.toon))
61
81
  - The merge-driver test builds a shell command from an environment-controlled path, which is the pattern this repository asks every other one to stop using ([ops-6no1](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-6no1.toon))
62
82
 
63
83
  ## 2026.9.2 - 2026-09-02
@@ -69,6 +89,7 @@
69
89
 
70
90
  ### Fixed
71
91
 
92
+ - Finish shell-accurate heredoc and unset handling in publish attestation ([ops-62d1](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-62d1.toon))
72
93
  - Repaired the ops-5jp6 history drift that had blocked two stacked release pull requests ([ops-yxej](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-yxej.toon))
73
94
  - A case opener sharing its first arm cleared the outer scope and refused a genuinely attested publish ([ops-cout](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-cout.toon))
74
95
  - Three shell-scope and quoting fail-opens attest unproven npm publishes ([ops-p9lb](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-p9lb.toon))
@@ -82,6 +103,7 @@
82
103
 
83
104
  ### Security
84
105
 
106
+ - A heredoc body and a discarded binding both let an unattested publish pass the attestation gate ([ops-5jp6](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-5jp6.toon))
85
107
  - Four more fail modes in the canonical gate: an arm pattern read as an opener, an escaped run key read as data, a sequence marker missing from the indent, and composite actions unscanned ([ops-cxrx](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-cxrx.toon))
86
108
  - Attributing a case arm label by presence rather than position refused an attested publish, and a quoted key hid a phantom one ([ops-setc](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-setc.toon))
87
109
  - An arm that opens a nested case skipped the sibling reset, so a publish could borrow a flag from a mutually exclusive arm ([ops-rsbn](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-rsbn.toon))
@@ -99,17 +121,13 @@
99
121
 
100
122
  ### Fixed
101
123
 
102
- - Finish shell-accurate heredoc and unset handling in publish attestation ([ops-62d1](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-62d1.toon))
103
124
  - The release changelog remained Unreleased after the release tag was created ([ops-3ete](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-3ete.toon))
104
125
 
105
- ### Security
106
-
107
- - A heredoc body and a discarded binding both let an unattested publish pass the attestation gate ([ops-5jp6](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-5jp6.toon))
108
-
109
126
  ## 2026.8.29 - 2026-08-29
110
127
 
111
128
  ### Fixed
112
129
 
130
+ - Prevent a failed provenance publish from silently falling back to an unattested publish ([ops-w3ke](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-w3ke.toon))
113
131
  - Harden literal scalar assignment parsing ([ops-mjnd](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-mjnd.toon))
114
132
  - Escaped shell metacharacter in scalar value bypasses the attestation gate ([ops-5mv7](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-5mv7.toon))
115
133
  - Shell scalar assignments were read from raw text, so a comment could make an unattested publish pass the attestation gate ([ops-q6wi](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-q6wi.toon))
@@ -121,7 +139,6 @@
121
139
 
122
140
  - Escaping a markdown cell's pipes without its backslashes shifts every column after it ([ops-pzjp](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-pzjp.toon))
123
141
  - The publish-attestation scan judged shell text with a regular expression, so real unattested publishes scanned clean ([ops-jhc8](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-jhc8.toon))
124
- - Prevent a failed provenance publish from silently falling back to an unattested publish ([ops-w3ke](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-w3ke.toon))
125
142
  - The changelog gate stamps an untagged version with the current date, so its verdict flips every midnight with no commit ([ops-vll0](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-vll0.toon))
126
143
  - Canonicalize fleet metric reads and enforce the pm 2026.8.20 host contract ([ops-3w9m](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-3w9m.toon))
127
144
 
@@ -134,6 +151,7 @@
134
151
  ### Fixed
135
152
 
136
153
  - merge-receipts labels two canonical fence patterns as stale, inviting someone to delete extension merge protection ([ops-github-db3225403a4b-44](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-github-db3225403a4b-44.toon))
154
+ - The pm CLI compatibility floor was declared only in peerDependencies, which only npm enforces, and not in manifest.json pm_min_version, which is the field the CLI enforces ([ops-zl7a](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-zl7a.toon))
137
155
  - A truncated list-all answer corrupts fleet throughput and cycle-time metrics ([ops-x3wc](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-x3wc.toon))
138
156
 
139
157
  ## 2026.8.16 - 2026-08-16
@@ -142,10 +160,6 @@
142
160
 
143
161
  - Measure the fleet's coverage and docstring quality as audited assurance bounds via a pm-ops quality measurement provider ([ops-a367](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/features/ops-a367.toon))
144
162
 
145
- ### Fixed
146
-
147
- - The pm CLI compatibility floor was declared only in peerDependencies, which only npm enforces, and not in manifest.json pm_min_version, which is the field the CLI enforces ([ops-zl7a](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-zl7a.toon))
148
-
149
163
  ## 2026.8.10 - 2026-08-10
150
164
 
151
165
  ### Fixed
@@ -197,8 +211,6 @@
197
211
  - Semicolon-free class fields bypass docstring evaluation ([ops-6wen](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-6wen.toon))
198
212
  - The docstring gate is fail-open for exported bindings it cannot decompose ([ops-f25k](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/issues/ops-f25k.toon))
199
213
 
200
- ## 2026.7.31 - 2026-07-31
201
-
202
214
  ### Other
203
215
 
204
216
  - Expose the analyzer as a pm ops subcommand and a package subpath export ([ops-qvbu](https://github.com/unbraind/pm-ops/blob/main/.agents/pm/tasks/ops-qvbu.toon))
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Multi-repo fleet operations for [pm-cli](https://github.com/unbraind/pm-cli).
4
4
 
5
- `pm-ops` gives coding agents one command surface for operating across **many** `pm-*` repositories: audit release readiness, enforce naming/workflow policies, run a release-gate matrix, and emit concise fleet reports. Zero external runtime dependencies — Node built-ins only.
5
+ `pm-ops` gives coding agents one command surface for operating across **many** `pm-*` repositories: audit release readiness, enforce naming/workflow policies, run a release-gate matrix, and emit concise fleet reports. Its optional lint and duplication toolchains stay out of the extension's runtime dependencies.
6
6
 
7
7
  > Philosophy: _project management = context management_, applied to a **fleet** of repos.
8
8
 
@@ -270,7 +270,7 @@ Fleet totals are intentionally **not** pre-aggregated — expose per-repo series
270
270
  - **Failure diagnostics.** `verify-release` writes the full per-check matrix to stdout _then_ throws a non-zero exit on failure, so agents get both the diagnostics and the exit code.
271
271
  - **Offline mode.** Set `PM_OPS_OFFLINE=1` to skip `npm outdated` / `npm audit` / `gh` calls (useful in air-gapped CI); file-based checks still run.
272
272
  - **No shell injection.** All subprocess calls (`pm`, `npm`, `gh`) pass args as arrays via `spawnSync` — never through a shell.
273
- - **Zero runtime deps.** Only Node built-ins, so the package installs fast and audits clean.
273
+ - **Small runtime surface.** The extension keeps only its main command dependencies in `dependencies`; optional lint and duplication tooling is supplied by consumers that use those exports.
274
274
 
275
275
  ### Output formats
276
276
 
@@ -290,6 +290,112 @@ Fleet totals are intentionally **not** pre-aggregated — expose per-repo series
290
290
 
291
291
  ---
292
292
 
293
+ ## Canonical merge-driver install (`pm-ops/merge-driver`)
294
+
295
+ Git never clones `.git/config`, so every fleet package has to run `pm merge install` from its
296
+ npm `prepare` script or concurrent agents conflict on tracker files. This package is the one
297
+ canonical implementation.
298
+
299
+ Consumers copy [`templates/prepare-merge-driver.ts`](templates/prepare-merge-driver.ts) unchanged to
300
+ `scripts/prepare-merge-driver.ts` and set `"prepare": "node scripts/prepare-merge-driver.ts"`. The
301
+ template imports **nothing** from pm-ops. pm-ops is a devDependency, so a checkout installed with
302
+ `npm install --omit=dev` (scripts enabled) does not have it, and a static
303
+ `import … from "pm-ops/merge-driver"` would fail at module load, before any fallback could run.
304
+ Dynamic `import()` is forbidden by the fleet lint gate. Instead the template resolves
305
+ `pm-ops/merge-driver/prepare` from the package root and runs it in a child process:
306
+
307
+ - **pm-ops not installed** (`--omit=dev`): exits `0` after exactly one notice line
308
+ - **pm-ops too old to export the entry, or its entry file missing**: fails the install loudly, and never skips
309
+ - **pm-ops installed**: runs `runPrepareMergeDriver` (below) and propagates its exit status
310
+
311
+ Fixture tests in `test/merge-driver-launcher.test.ts` execute the shipped template against each of
312
+ those consumer layouts with a stub `pm` on PATH.
313
+
314
+ `runPrepareMergeDriver` (also exported from `pm-ops/merge-driver`) resolves the real `pm` launcher on the supplied PATH/platform, then:
315
+
316
+ - **missing `pm`**: exits `0` and prints one notice line
317
+ - **present `pm` whose `pm merge install` fails**: non-zero exit with that command's output
318
+ - **Windows**: honours quoted PATH entries and PATHEXT shims, and sets `shell: true` only on `win32` so `.cmd` launchers run; the POSIX path is never faked
319
+
320
+ This repository's own `prepare` script is that launcher (with an `isMainInvocation` guard so the suite can import it). To (re)run manually: `npm run merge:install`.
321
+ ## Canonical code-quality exports
322
+
323
+ The package publishes one strict ESLint flat-config factory and one
324
+ programmatic jscpd gate. Both are TypeScript-only and work with the fleet's
325
+ TypeScript 5 and TypeScript 7 consumers because parsing is supplied by Babel,
326
+ not typescript-eslint.
327
+
328
+ ```ts
329
+ import { fleetEslintConfig } from "pm-ops/eslint";
330
+
331
+ export default fleetEslintConfig({ ignores: ["generated/**"] });
332
+ ```
333
+
334
+ The lint launcher a consumer can add is:
335
+
336
+ ```ts
337
+ import { runLintGate } from "pm-ops/eslint";
338
+ process.exitCode = await runLintGate();
339
+ ```
340
+
341
+ `runLintGate` uses the canonical policy, prints stylish diagnostics to stderr, and
342
+ returns `0` or `1` for use as the process exit code.
343
+
344
+ The duplication export reads `package.json`, scans `**/*.ts` by default (including
345
+ root sources, `scripts/`, and tests), reports every clone pair with both file
346
+ line ranges, and fails when the measured percentage is above the configured
347
+ threshold. `globs` and `minTokens` can be overridden for direct analysis;
348
+ the gate uses `minTokens: 50` when the field is omitted.
349
+
350
+ ### Consumers
351
+
352
+ The quality exports use optional peer dependencies so installing `pm-ops` as a
353
+ `pm` extension does not download tooling that the extension surface does not
354
+ run. A repository importing `pm-ops/eslint` adds these exact `devDependencies`:
355
+ `@babel/eslint-parser`, `@babel/plugin-syntax-typescript`, and `eslint`. A
356
+ repository importing `pm-ops/duplication` adds `fast-glob` and `jscpd` (either
357
+ jscpd 4.3.0 or 5.2.1 — both majors are supported). A repository using both
358
+ exports adds all five packages, using the version ranges shown in
359
+ `package.json`.
360
+
361
+ ```ts
362
+ import { analyzeDuplication, runDuplicationGate } from "pm-ops/duplication";
363
+
364
+ const report = await analyzeDuplication({ globs: ["src/**/*.ts", "test/**/*.ts"] });
365
+ await runDuplicationGate();
366
+ ```
367
+
368
+ A consumer adds these package fields (the launcher paths may be named
369
+ otherwise, but must remain thin imports of the canonical exports):
370
+
371
+ ```json
372
+ {
373
+ "scripts": {
374
+ "lint": "node scripts/lint.ts",
375
+ "duplication": "node scripts/duplication-gate.ts",
376
+ "release:check": "npm run lint && npm run duplication && ..."
377
+ },
378
+ "devDependencies": {
379
+ "@babel/eslint-parser": "^8.0.5",
380
+ "@babel/plugin-syntax-typescript": "^8.0.3",
381
+ "eslint": "^10.10.0",
382
+ "fast-glob": "^3.3.3",
383
+ "jscpd": ">=4.3.0 <6.0.0",
384
+ "pm-ops": "<current pm-ops version>"
385
+ },
386
+ "duplicationGate": {
387
+ "threshold": 0,
388
+ "minTokens": 50
389
+ }
390
+ }
391
+ ```
392
+
393
+ The canonical ESLint factory enforces the eight forbidden syntax selectors
394
+ (`TSAnyKeyword`, `ImportExpression`, `TSImportType`, `TSParameterProperty`,
395
+ `TSEnumDeclaration`, `TSModuleDeclaration`, `TSImportEqualsDeclaration`, and
396
+ `TSExportAssignment`) plus the fleet's correctness rules. It ignores generated
397
+ and dependency output by default; pass `ignores` to add project-specific paths.
398
+
293
399
  ## License
294
400
 
295
401
  MIT © unbrained
@@ -299,10 +405,8 @@ MIT © unbrained
299
405
  This repo tracks its project management in `.agents/pm/` and ships a committed `.gitattributes`
300
406
  that maps those tracker artifacts to pm-cli's field-aware Git merge drivers, so concurrent-branch
301
407
  tracker edits merge cleanly instead of hard-conflicting. The driver **definitions** live in
302
- per-clone Git config; `npm install` / `npm ci` wires them automatically via the `prepare` script (a portable Node guard, `scripts/prepare-merge-driver.mjs`: it runs
303
- `pm merge install` only when the `pm` CLI is on `PATH`, and no-ops cleanly otherwise so
304
- production / `--omit=dev` installs are not broken; being Node-based it behaves identically
305
- on POSIX shells and Windows `cmd.exe`). To (re)run manually: `npm run merge:install`.
408
+ per-clone Git config; `npm install` / `npm ci` wires them automatically via the `prepare` script
409
+ (`scripts/prepare-merge-driver.ts`, a thin launcher over [`pm-ops/merge-driver`](#canonical-merge-driver-install-pm-opsmerge-driver)). To (re)run manually: `npm run merge:install`.
306
410
 
307
411
  After merging a branch that touched `.agents/pm/`, reconcile any residual history-hash drift with
308
412
  **`pm merge reconcile`** (pm-cli ≥ 2026.7.22): preview with `pm merge reconcile --dry-run`, apply with
@@ -1 +1 @@
1
- {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../attestation.ts"],"names":[],"mappings":"AAuBA,OAAO,EAeL,KAAK,YAAY,EACjB,KAAK,UAAU,EAKf,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAEzB,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,iFAAiF;AACjF,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;CAC1C;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,aAAmC,CAAC;AAwHnE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzD;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAe/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAwBjE;AAyMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,iBAAiB,EAAE,CAO5E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAE3D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,wBAAwB,CAqCvF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAgC3E;AA2CD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU5D;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAM7D;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,IAAI,CASN"}
1
+ {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../attestation.ts"],"names":[],"mappings":"AAuBA,OAAO,EAeL,KAAK,YAAY,EACjB,KAAK,UAAU,EAKf,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAGzB,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,iFAAiF;AACjF,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;CAC1C;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,aAAmC,CAAC;AAwHnE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzD;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAe/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAwBjE;AAyMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,iBAAiB,EAAE,CAO5E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAE3D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,wBAAwB,CA4BvF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAgC3E;AA2CD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU5D;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAM7D;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,IAAI,CASN"}
@@ -21,6 +21,7 @@ import { execFileSync } from "node:child_process";
21
21
  import { closeSync, openSync, readFileSync, readSync } from "node:fs";
22
22
  import { resolve } from "node:path";
23
23
  import { bashArrays, blockDepthChange, caseDepthChange, commandArguments, commandCandidates, commandName, dedentRunBlocks, expandArrays, expandScalars, heredocBodyLines, heredocExpansionLines, joinContinuations, scalarAssignmentEvents, segmentShellLine, spawnedAsCommand, startsEnclosingCaseArm, tokenizeCommands, unsetNames, } from "./shell-scan.js";
24
+ import { tallyFlaggedInvocations } from "./invocation-audit.js";
24
25
  /** The flag that attaches a build attestation to the published tarball. */
25
26
  export const ATTESTATION_FLAG = "--provenance";
26
27
  /** Publishers other than npm, which this repository has no attested path for. */
@@ -522,32 +523,21 @@ export function renderCommand(command) {
522
523
  */
523
524
  export function auditPublishAttestation(sources) {
524
525
  const invocations = sources.flatMap(publishInvocationsIn);
525
- const failures = [];
526
- const counted = new Map();
527
- for (const invocation of invocations) {
528
- const tally = counted.get(invocation.file) ?? { total: 0, unflagged: 0 };
529
- tally.total += 1;
526
+ const { failures, notes } = tallyFlaggedInvocations(invocations, (invocation) => {
530
527
  if (invocation.program !== "npm") {
531
- tally.unflagged += 1;
532
- failures.push(`${invocation.file}: \`${invocation.program} publish\` is a publish path with no attested`
533
- + ` equivalent configured in this repository: ${renderCommand(invocation.command)}`);
528
+ return `${invocation.file}: \`${invocation.program} publish\` is a publish path with no attested`
529
+ + ` equivalent configured in this repository: ${renderCommand(invocation.command)}`;
534
530
  }
535
- else if (!attestationEnabled(invocation.command)) {
536
- tally.unflagged += 1;
537
- failures.push(`${invocation.file}: a publish invocation does not enable ${ATTESTATION_FLAG}, so it would`
538
- + ` publish an unattested artifact: ${renderCommand(invocation.command)}`);
531
+ if (!attestationEnabled(invocation.command)) {
532
+ return `${invocation.file}: a publish invocation does not enable ${ATTESTATION_FLAG}, so it would`
533
+ + ` publish an unattested artifact: ${renderCommand(invocation.command)}`;
539
534
  }
540
- counted.set(invocation.file, tally);
541
- }
542
- if (invocations.length === 0) {
543
- failures.push("no npm publish invocation was found in any tracked file - the scan is looking in the wrong place");
544
- }
545
- const notes = [];
546
- for (const [file, tally] of counted) {
547
- if (tally.unflagged > 0)
548
- continue;
549
- notes.push(`ok - ${file}: ${tally.total} publish invocation(s), each carrying ${ATTESTATION_FLAG}`);
550
- }
535
+ return null;
536
+ }, {
537
+ noun: "publish",
538
+ flag: ATTESTATION_FLAG,
539
+ emptyScan: "no npm publish invocation was found in any tracked file - the scan is looking in the wrong place",
540
+ });
551
541
  return {
552
542
  failures,
553
543
  notes,
@@ -1 +1 @@
1
- {"version":3,"file":"attestation.js","sourceRoot":"","sources":["../attestation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attestation.js","sourceRoot":"","sources":["../attestation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"docstrings.d.ts","sourceRoot":"","sources":["../docstrings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AAOH;;;GAGG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAqkCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAKxE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,eAAe,CAoBnH"}
1
+ {"version":3,"file":"docstrings.d.ts","sourceRoot":"","sources":["../docstrings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AAOH;;;GAGG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAkkCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAKxE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,eAAe,CAoBnH"}
@@ -656,21 +656,35 @@ class SourceAnalyzer {
656
656
  this.failClosed(this.cur(), "unrecognized declaration form");
657
657
  this.skipUntilSemicolon();
658
658
  }
659
- /** Parse a `function` declaration or expression at the current token. */
660
- parseFunction(opts) {
661
- this.i++; // function
662
- if (this.at(SyntaxKind.AsteriskToken))
663
- this.i++; // generator
659
+ /** Consume the declaration's optional identifier name and type parameter list. */
660
+ takeNameAndTypeParams() {
664
661
  let name;
665
662
  if (this.at(SyntaxKind.Identifier)) {
666
663
  name = this.cur().text;
667
664
  this.i++;
668
665
  }
666
+ if (this.at(SyntaxKind.LessThanToken))
667
+ this.skipTypeParams();
668
+ return name;
669
+ }
670
+ /**
671
+ * Skip a callable's optional type parameters and parameter list, then locate
672
+ * its body: a body-less signature is an overload or ambient declaration.
673
+ */
674
+ findCallableBody() {
669
675
  if (this.at(SyntaxKind.LessThanToken))
670
676
  this.skipTypeParams();
671
677
  if (this.at(SyntaxKind.OpenParenToken))
672
678
  this.skipGroup();
673
- const body = this.findFunctionBody();
679
+ return this.findFunctionBody();
680
+ }
681
+ /** Parse a `function` declaration or expression at the current token. */
682
+ parseFunction(opts) {
683
+ this.i++; // function
684
+ if (this.at(SyntaxKind.AsteriskToken))
685
+ this.i++; // generator
686
+ const name = this.takeNameAndTypeParams();
687
+ const body = this.findCallableBody();
674
688
  if (body.kind === "body") {
675
689
  const open = this.tokens[body.openIdx];
676
690
  const closeIdx = this.matchingClose(body.openIdx);
@@ -685,13 +699,7 @@ class SourceAnalyzer {
685
699
  /** Parse a `class` declaration or expression at the current token. */
686
700
  parseClass(opts) {
687
701
  this.i++; // class
688
- let name;
689
- if (this.at(SyntaxKind.Identifier)) {
690
- name = this.cur().text;
691
- this.i++;
692
- }
693
- if (this.at(SyntaxKind.LessThanToken))
694
- this.skipTypeParams();
702
+ const name = this.takeNameAndTypeParams();
695
703
  const bodyIdx = this.findClassBody();
696
704
  if (opts.exported)
697
705
  this.judge(opts.head, name ?? "default");
@@ -959,13 +967,11 @@ class SourceAnalyzer {
959
967
  let hasInitializer = false;
960
968
  let hasNextDeclarator = false;
961
969
  while (this.i < this.tokens.length) {
962
- const k = this.cur().kind;
963
- if (k === SyntaxKind.SemicolonToken) {
964
- this.i++;
970
+ if (this.consumeIfAt(SyntaxKind.SemicolonToken))
965
971
  return;
966
- }
967
- if (k === SyntaxKind.CloseBraceToken)
972
+ if (this.at(SyntaxKind.CloseBraceToken))
968
973
  return;
974
+ const k = this.cur().kind;
969
975
  if (k === SyntaxKind.CommaToken) {
970
976
  this.i++;
971
977
  hasNextDeclarator = true;
@@ -987,10 +993,8 @@ class SourceAnalyzer {
987
993
  this.skipTypeParams();
988
994
  continue;
989
995
  }
990
- if (k === SyntaxKind.OpenBraceToken || k === SyntaxKind.OpenParenToken || k === SyntaxKind.OpenBracketToken) {
991
- this.skipGroup();
996
+ if (this.skipGroupIfOpen())
992
997
  continue;
993
- }
994
998
  this.i++;
995
999
  }
996
1000
  if (!hasNextDeclarator)
@@ -999,69 +1003,63 @@ class SourceAnalyzer {
999
1003
  }
1000
1004
  /** Skip a callable's optional type parameters, parameter list, and body. */
1001
1005
  skipCallable() {
1002
- if (this.at(SyntaxKind.LessThanToken))
1003
- this.skipTypeParams();
1004
- if (this.at(SyntaxKind.OpenParenToken))
1005
- this.skipGroup();
1006
- const body = this.findFunctionBody();
1006
+ const body = this.findCallableBody();
1007
1007
  if (body.kind === "body")
1008
1008
  this.descendBlock(body.openIdx);
1009
1009
  }
1010
1010
  /** Skip a member's trailing type or initializer to its terminating `;`. */
1011
1011
  skipMemberRest() {
1012
1012
  while (this.i < this.tokens.length) {
1013
- const k = this.cur().kind;
1014
- if (k === SyntaxKind.SemicolonToken) {
1015
- this.i++;
1013
+ if (this.consumeIfAt(SyntaxKind.SemicolonToken))
1016
1014
  return;
1017
- }
1018
- if (k === SyntaxKind.CloseBraceToken)
1015
+ if (this.at(SyntaxKind.CloseBraceToken))
1019
1016
  return;
1020
1017
  const previous = this.tokens[this.i - 1];
1021
1018
  if (previous &&
1022
1019
  this.lineOf[this.cur().start] > this.lineOf[previous.start] &&
1023
1020
  DIVISION_PREVIOUS.has(previous.kind) &&
1024
- MEMBER_STARTS.has(k)) {
1021
+ MEMBER_STARTS.has(this.cur().kind)) {
1025
1022
  return;
1026
1023
  }
1027
- if (k === SyntaxKind.OpenBraceToken || k === SyntaxKind.OpenParenToken || k === SyntaxKind.OpenBracketToken) {
1028
- this.skipGroup();
1024
+ if (this.skipGroupIfOpen())
1029
1025
  continue;
1030
- }
1031
1026
  this.i++;
1032
1027
  }
1033
1028
  }
1034
- /** Skip tokens to the next `;` at group-depth zero, balancing nested groups. */
1035
- skipUntilSemicolon() {
1036
- while (this.i < this.tokens.length) {
1037
- const k = this.cur().kind;
1038
- if (k === SyntaxKind.SemicolonToken) {
1039
- this.i++;
1040
- return;
1041
- }
1042
- if (k === SyntaxKind.CloseBraceToken)
1043
- return;
1044
- if (k === SyntaxKind.OpenBraceToken || k === SyntaxKind.OpenParenToken || k === SyntaxKind.OpenBracketToken) {
1045
- this.skipGroup();
1046
- continue;
1047
- }
1029
+ /** Consume the token at the cursor when it is `kind`; report whether it was consumed. */
1030
+ consumeIfAt(kind) {
1031
+ if (this.at(kind)) {
1048
1032
  this.i++;
1033
+ return true;
1049
1034
  }
1035
+ return false;
1036
+ }
1037
+ /** Skip the balanced group at the cursor when it opens one; report whether it did. */
1038
+ skipGroupIfOpen() {
1039
+ const k = this.cur().kind;
1040
+ if (k === SyntaxKind.OpenBraceToken || k === SyntaxKind.OpenParenToken || k === SyntaxKind.OpenBracketToken) {
1041
+ this.skipGroup();
1042
+ return true;
1043
+ }
1044
+ return false;
1045
+ }
1046
+ /** Skip tokens to the next `;` at group-depth zero, balancing nested groups. */
1047
+ skipUntilSemicolon() {
1048
+ this.skipUntilToken(SyntaxKind.SemicolonToken);
1050
1049
  }
1051
1050
  /** Skip tokens to the next `:` at group-depth zero (a `case` label). */
1052
1051
  skipUntilColon() {
1052
+ this.skipUntilToken(SyntaxKind.ColonToken);
1053
+ }
1054
+ /** Skip tokens to `terminator` at group-depth zero, balancing nested groups. */
1055
+ skipUntilToken(terminator) {
1053
1056
  while (this.i < this.tokens.length) {
1054
- const k = this.cur().kind;
1055
- if (k === SyntaxKind.ColonToken) {
1056
- this.i++;
1057
+ if (this.consumeIfAt(terminator))
1057
1058
  return;
1058
- }
1059
- if (k === SyntaxKind.CloseBraceToken)
1059
+ if (this.at(SyntaxKind.CloseBraceToken))
1060
1060
  return;
1061
- if (k === SyntaxKind.OpenBraceToken || k === SyntaxKind.OpenParenToken || k === SyntaxKind.OpenBracketToken) {
1062
- this.skipGroup();
1061
+ if (this.skipGroupIfOpen())
1063
1062
  continue;
1064
- }
1065
1063
  this.i++;
1066
1064
  }
1067
1065
  }
@@ -1131,14 +1129,11 @@ class SourceAnalyzer {
1131
1129
  */
1132
1130
  skipExpressionStatement() {
1133
1131
  while (this.i < this.tokens.length) {
1134
- const k = this.cur().kind;
1135
- if (k === SyntaxKind.SemicolonToken) {
1136
- this.i++;
1132
+ if (this.consumeIfAt(SyntaxKind.SemicolonToken))
1137
1133
  return;
1138
- }
1139
- if (k === SyntaxKind.CloseBraceToken)
1134
+ if (this.at(SyntaxKind.CloseBraceToken))
1140
1135
  return;
1141
- if (k === SyntaxKind.OpenBraceToken) {
1136
+ if (this.at(SyntaxKind.OpenBraceToken)) {
1142
1137
  const prev = this.tokens[this.i - 1]?.kind;
1143
1138
  if (prev === SyntaxKind.CloseParenToken || prev === SyntaxKind.EqualsGreaterThanToken) {
1144
1139
  this.descendBlock(this.i);
@@ -1148,7 +1143,7 @@ class SourceAnalyzer {
1148
1143
  }
1149
1144
  continue;
1150
1145
  }
1151
- if (k === SyntaxKind.OpenParenToken || k === SyntaxKind.OpenBracketToken) {
1146
+ if (this.at(SyntaxKind.OpenParenToken) || this.at(SyntaxKind.OpenBracketToken)) {
1152
1147
  this.skipGroup();
1153
1148
  continue;
1154
1149
  }