plumbbob 0.6.6 → 0.8.3

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 (109) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/README.md +24 -7
  3. package/dist/cli-core.js +7 -2
  4. package/dist/lib/buildlog.js +5 -2
  5. package/dist/lib/check.js +33 -1
  6. package/dist/lib/git.js +17 -0
  7. package/dist/lib/latch.js +97 -0
  8. package/dist/lib/orient.js +24 -0
  9. package/dist/lib/settings.js +3 -9
  10. package/dist/lib/sidecar.js +169 -18
  11. package/dist/verbs/build.js +5 -1
  12. package/dist/verbs/checkpoint.js +51 -2
  13. package/dist/verbs/doctor.js +40 -5
  14. package/dist/verbs/finish.js +61 -11
  15. package/dist/verbs/revert.js +19 -1
  16. package/dist/verbs/start.js +38 -7
  17. package/dist/verbs/status.js +10 -3
  18. package/dist/verbs/turn.js +106 -0
  19. package/dist/verbs/use.js +4 -5
  20. package/hooks/hooks.json +15 -0
  21. package/hooks/post-edit.sh +7 -7
  22. package/hooks/pre-bash-commit.sh +68 -0
  23. package/node_modules/checkride/CHANGELOG.md +111 -0
  24. package/node_modules/checkride/README.md +185 -20
  25. package/node_modules/checkride/dist/adapters.d.ts +9 -4
  26. package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
  27. package/node_modules/checkride/dist/adapters.js +62 -2
  28. package/node_modules/checkride/dist/adapters.js.map +1 -1
  29. package/node_modules/checkride/dist/agent-setup/hook.d.ts +63 -0
  30. package/node_modules/checkride/dist/agent-setup/hook.d.ts.map +1 -0
  31. package/node_modules/checkride/dist/agent-setup/hook.js +92 -0
  32. package/node_modules/checkride/dist/agent-setup/hook.js.map +1 -0
  33. package/node_modules/checkride/dist/agent-setup/index.d.ts +8 -0
  34. package/node_modules/checkride/dist/agent-setup/index.d.ts.map +1 -0
  35. package/node_modules/checkride/dist/agent-setup/index.js +7 -0
  36. package/node_modules/checkride/dist/agent-setup/index.js.map +1 -0
  37. package/node_modules/checkride/dist/atomic.d.ts +13 -0
  38. package/node_modules/checkride/dist/atomic.d.ts.map +1 -0
  39. package/node_modules/checkride/dist/atomic.js +24 -0
  40. package/node_modules/checkride/dist/atomic.js.map +1 -0
  41. package/node_modules/checkride/dist/baseline/command.d.ts +42 -0
  42. package/node_modules/checkride/dist/baseline/command.d.ts.map +1 -0
  43. package/node_modules/checkride/dist/baseline/command.js +58 -0
  44. package/node_modules/checkride/dist/baseline/command.js.map +1 -0
  45. package/node_modules/checkride/dist/baseline/fingerprint.d.ts +41 -0
  46. package/node_modules/checkride/dist/baseline/fingerprint.d.ts.map +1 -0
  47. package/node_modules/checkride/dist/baseline/fingerprint.js +119 -0
  48. package/node_modules/checkride/dist/baseline/fingerprint.js.map +1 -0
  49. package/node_modules/checkride/dist/baseline/index.d.ts +13 -0
  50. package/node_modules/checkride/dist/baseline/index.d.ts.map +1 -0
  51. package/node_modules/checkride/dist/baseline/index.js +10 -0
  52. package/node_modules/checkride/dist/baseline/index.js.map +1 -0
  53. package/node_modules/checkride/dist/baseline/store.d.ts +67 -0
  54. package/node_modules/checkride/dist/baseline/store.d.ts.map +1 -0
  55. package/node_modules/checkride/dist/baseline/store.js +110 -0
  56. package/node_modules/checkride/dist/baseline/store.js.map +1 -0
  57. package/node_modules/checkride/dist/cli.d.ts.map +1 -1
  58. package/node_modules/checkride/dist/cli.js +37 -3
  59. package/node_modules/checkride/dist/cli.js.map +1 -1
  60. package/node_modules/checkride/dist/config.d.ts +43 -3
  61. package/node_modules/checkride/dist/config.d.ts.map +1 -1
  62. package/node_modules/checkride/dist/config.js +95 -22
  63. package/node_modules/checkride/dist/config.js.map +1 -1
  64. package/node_modules/checkride/dist/digest/digest.d.ts +52 -0
  65. package/node_modules/checkride/dist/digest/digest.d.ts.map +1 -0
  66. package/node_modules/checkride/dist/digest/digest.js +147 -0
  67. package/node_modules/checkride/dist/digest/digest.js.map +1 -0
  68. package/node_modules/checkride/dist/digest/index.d.ts +8 -0
  69. package/node_modules/checkride/dist/digest/index.d.ts.map +1 -0
  70. package/node_modules/checkride/dist/digest/index.js +7 -0
  71. package/node_modules/checkride/dist/digest/index.js.map +1 -0
  72. package/node_modules/checkride/dist/doctor.d.ts +4 -0
  73. package/node_modules/checkride/dist/doctor.d.ts.map +1 -1
  74. package/node_modules/checkride/dist/doctor.js +33 -10
  75. package/node_modules/checkride/dist/doctor.js.map +1 -1
  76. package/node_modules/checkride/dist/index.d.ts +1 -1
  77. package/node_modules/checkride/dist/index.d.ts.map +1 -1
  78. package/node_modules/checkride/dist/index.js +1 -1
  79. package/node_modules/checkride/dist/index.js.map +1 -1
  80. package/node_modules/checkride/dist/init.d.ts +38 -0
  81. package/node_modules/checkride/dist/init.d.ts.map +1 -1
  82. package/node_modules/checkride/dist/init.js +97 -8
  83. package/node_modules/checkride/dist/init.js.map +1 -1
  84. package/node_modules/checkride/dist/orchestrator.d.ts +58 -1
  85. package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
  86. package/node_modules/checkride/dist/orchestrator.js +155 -27
  87. package/node_modules/checkride/dist/orchestrator.js.map +1 -1
  88. package/node_modules/checkride/dist/pm/detect.d.ts +21 -0
  89. package/node_modules/checkride/dist/pm/detect.d.ts.map +1 -0
  90. package/node_modules/checkride/dist/pm/detect.js +60 -0
  91. package/node_modules/checkride/dist/pm/detect.js.map +1 -0
  92. package/node_modules/checkride/dist/pm/index.d.ts +10 -0
  93. package/node_modules/checkride/dist/pm/index.d.ts.map +1 -0
  94. package/node_modules/checkride/dist/pm/index.js +9 -0
  95. package/node_modules/checkride/dist/pm/index.js.map +1 -0
  96. package/node_modules/checkride/dist/pm/translate.d.ts +28 -0
  97. package/node_modules/checkride/dist/pm/translate.d.ts.map +1 -0
  98. package/node_modules/checkride/dist/pm/translate.js +40 -0
  99. package/node_modules/checkride/dist/pm/translate.js.map +1 -0
  100. package/node_modules/checkride/package.json +20 -17
  101. package/node_modules/checkride/schema/checkride.config.schema.json +97 -0
  102. package/node_modules/checkride/schema/checkride.summary.schema.json +57 -0
  103. package/node_modules/checkride/templates/shared/cspell.json +1 -0
  104. package/node_modules/checkride/templates/shared/prettierrc.json +6 -0
  105. package/package.json +8 -4
  106. package/skills/pb-build/SKILL.md +31 -1
  107. package/skills/pb-finish/SKILL.md +2 -1
  108. package/skills/pb-plan/SKILL.md +17 -0
  109. package/skills/pb-verify/SKILL.md +32 -0
@@ -7,13 +7,21 @@
7
7
  * diagnostics — agents read the per-tool JSON directly.
8
8
  */
9
9
  import { spawn } from 'node:child_process';
10
- import { mkdir, writeFile } from 'node:fs/promises';
10
+ import { mkdir } from 'node:fs/promises';
11
11
  import { join } from 'node:path';
12
12
  import { performance } from 'node:perf_hooks';
13
13
  import { ADAPTERS, SCHEMA_VERSION, SLOTS } from './adapters.js';
14
+ import { writeFileAtomic } from './atomic.js';
15
+ import { applyBaseline, BASELINE_FILE, baselinesEqual, countBaselineKeys, fingerprint, loadBaseline, ratchet, writeBaseline, } from './baseline/index.js';
14
16
  import { loadConfig, resolveChecks } from './config.js';
17
+ import { writeDigest } from './digest/index.js';
15
18
  import { checkLinks } from './links.js';
16
- /** Port of the interim `select_checks`: only/skip/opt-in selection by slot name. */
19
+ import { detectPackageManager, isAvailableUnder, translateExec } from './pm/index.js';
20
+ /**
21
+ * Port of the interim `select_checks`: only/skip/opt-in selection by slot name.
22
+ * An opt-in slot runs when `--all`/`--include` names it, or when it was
23
+ * explicitly configured in `checks` (`r.explicit`) — naming a slot is opting in.
24
+ */
17
25
  export function selectChecks(resolved, flags) {
18
26
  const only = flags.only ?? null;
19
27
  const skipSet = new Set(flags.skip ?? []);
@@ -24,7 +32,7 @@ export function selectChecks(resolved, flags) {
24
32
  return only.includes(r.slot);
25
33
  if (skipSet.has(r.slot))
26
34
  return false;
27
- if (r.optIn && !all && !includeSet.has(r.slot))
35
+ if (r.optIn && !all && !includeSet.has(r.slot) && !r.explicit)
28
36
  return false;
29
37
  return true;
30
38
  });
@@ -36,10 +44,21 @@ export function runtimeArgs(adapter, changed) {
36
44
  return adapter.args;
37
45
  }
38
46
  /**
39
- * Spawn one check. `timeoutSec` is optional and off by default — a falsy or
40
- * non-positive value means no cap. When it fires, the child is killed and a
41
- * failed outcome carries a `"timed out after Ns"` note so the slot is recorded
42
- * failed with its elapsed duration (the timer is always cleared on `close`).
47
+ * Default per-check timeout (seconds) when neither the check nor the config
48
+ * sets one. A definition-of-done gate that can hang forever fails its one job
49
+ * on the worst day, so the cap is on by default — generous enough for any
50
+ * legitimate single slot. Override per check or globally via `timeout`; `0`
51
+ * disables the cap.
52
+ */
53
+ export const DEFAULT_TIMEOUT_SECONDS = 600;
54
+ /** Grace between SIGTERM and SIGKILL when a timed-out check won't die politely. */
55
+ const KILL_GRACE_SECONDS = 5;
56
+ /**
57
+ * Spawn one check. A falsy or non-positive `timeoutSec` means no cap (the
58
+ * default cap is applied by the runner, not here). When it fires, the child
59
+ * gets SIGTERM, then SIGKILL after a short grace, and a failed outcome carries
60
+ * a `"timed out after Ns"` note so the slot is recorded failed with its
61
+ * elapsed duration (both timers are always cleared on `close`).
43
62
  */
44
63
  function spawnCheck(command, args, cwd, timeoutSec) {
45
64
  return new Promise((resolveOutcome) => {
@@ -51,19 +70,28 @@ function spawnCheck(command, args, cwd, timeoutSec) {
51
70
  let stdout = '';
52
71
  let stderr = '';
53
72
  let timedOut = false;
73
+ let killTimer = null;
54
74
  const timer = timeoutSec && timeoutSec > 0
55
- ? setTimeout(() => { timedOut = true; proc.kill('SIGTERM'); }, timeoutSec * 1000)
75
+ ? setTimeout(() => {
76
+ timedOut = true;
77
+ proc.kill('SIGTERM');
78
+ killTimer = setTimeout(() => { proc.kill('SIGKILL'); }, KILL_GRACE_SECONDS * 1000);
79
+ }, timeoutSec * 1000)
56
80
  : null;
81
+ const clearTimers = () => {
82
+ if (timer)
83
+ clearTimeout(timer);
84
+ if (killTimer)
85
+ clearTimeout(killTimer);
86
+ };
57
87
  proc.stdout.on('data', (chunk) => { stdout += chunk.toString(); });
58
88
  proc.stderr.on('data', (chunk) => { stderr += chunk.toString(); });
59
89
  proc.on('error', (err) => {
60
- if (timer)
61
- clearTimeout(timer);
90
+ clearTimers();
62
91
  resolveOutcome({ ok: false, exit_code: -1, stdout: '', stderr: `Failed to spawn: ${err.message}` });
63
92
  });
64
93
  proc.on('close', (code) => {
65
- if (timer)
66
- clearTimeout(timer);
94
+ clearTimers();
67
95
  if (timedOut) {
68
96
  const note = `timed out after ${timeoutSec}s`;
69
97
  resolveOutcome({ ok: false, exit_code: -1, stdout, stderr: stderr ? `${stderr}\n${note}` : `${note}\n` });
@@ -79,16 +107,17 @@ const defaultRunner = (resolved, ctx) => {
79
107
  return Promise.resolve({ ok: true, exit_code: 0, stdout: '', stderr: '' });
80
108
  if (adapter.builtin === 'links')
81
109
  return checkLinks(ctx.cwd);
82
- const timeout = adapter.timeout ?? ctx.timeout;
83
- return spawnCheck(adapter.command, runtimeArgs(adapter, ctx.changed), ctx.cwd, timeout);
110
+ const timeout = adapter.timeout ?? ctx.timeout ?? DEFAULT_TIMEOUT_SECONDS;
111
+ const { command, args } = translateExec(adapter.command, runtimeArgs(adapter, ctx.changed), ctx.pm);
112
+ return spawnCheck(command, args, ctx.cwd, timeout);
84
113
  };
85
- /** Persist raw output: JSON to `.check/<outputFile>`, else stdout/stderr text. */
114
+ /** Persist raw output atomically: JSON to `.check/<outputFile>`, else stdout/stderr text. */
86
115
  async function persistOutput(cwd, adapter, outcome) {
87
116
  const dir = join(cwd, '.check');
88
117
  if (adapter.outputFile && outcome.stdout.trim()) {
89
118
  try {
90
119
  JSON.parse(outcome.stdout);
91
- await writeFile(join(dir, adapter.outputFile), outcome.stdout);
120
+ await writeFileAtomic(join(dir, adapter.outputFile), outcome.stdout);
92
121
  return;
93
122
  }
94
123
  catch {
@@ -96,9 +125,9 @@ async function persistOutput(cwd, adapter, outcome) {
96
125
  }
97
126
  }
98
127
  if (outcome.stdout.trim())
99
- await writeFile(join(dir, `${adapter.slot}.stdout.txt`), outcome.stdout);
128
+ await writeFileAtomic(join(dir, `${adapter.slot}.stdout.txt`), outcome.stdout);
100
129
  if (outcome.stderr.trim())
101
- await writeFile(join(dir, `${adapter.slot}.stderr.txt`), outcome.stderr);
130
+ await writeFileAtomic(join(dir, `${adapter.slot}.stderr.txt`), outcome.stderr);
102
131
  }
103
132
  function writeLine(out, line) {
104
133
  out.write(`${line}\n`);
@@ -127,10 +156,38 @@ function buildSummary(checks) {
127
156
  schema_version: SCHEMA_VERSION,
128
157
  timestamp: new Date().toISOString(),
129
158
  ok: checks.every((c) => c.ok),
159
+ checks_run: checks.filter((c) => !c.skipped).length,
130
160
  total_duration_ms: checks.reduce((sum, c) => sum + c.duration_ms, 0),
131
161
  checks,
132
162
  };
133
163
  }
164
+ /** What could fill a sat-out slot: each candidate adapter and its first detect file. */
165
+ function enableHint(slot, adapters) {
166
+ const candidates = adapters.filter((a) => a.slot === slot);
167
+ if (candidates.length === 0)
168
+ return null;
169
+ const parts = candidates.map((a) => a.detect.length > 0 ? `${a.name} (add ${a.detect[0]})` : a.name);
170
+ return `enable with: ${parts.join(', ')}`;
171
+ }
172
+ /**
173
+ * The first-party vacuous-green signal: "green because nothing ran" must be
174
+ * unmissable, not something only a consumer that hand-rolled the check (as
175
+ * plumbbob's gate did) can distinguish from "green because everything passed".
176
+ * Names why each slot sat out and what would enable it.
177
+ */
178
+ function warnVacuous(stderr, checks, adapters) {
179
+ writeLine(stderr, '');
180
+ writeLine(stderr, '⚠ 0 checks ran — nothing was verified. This is not a pass.');
181
+ if (checks.length === 0) {
182
+ writeLine(stderr, ' No slots matched the selection (--only/--skip).');
183
+ }
184
+ for (const c of checks) {
185
+ const hint = c.adapter === null ? enableHint(c.name, adapters) : null;
186
+ writeLine(stderr, ` ○ ${c.name}: ${c.reason ?? 'skipped'}${hint ? ` — ${hint}` : ''}`);
187
+ }
188
+ writeLine(stderr, ' Run `checkride doctor` for per-slot detail, or add a custom check to');
189
+ writeLine(stderr, ' checkride.config.json. Gates should run with --strict (exit 2 on zero checks).');
190
+ }
134
191
  /** Run the selected checks against `cwd`, persist output, write the summary. */
135
192
  export async function runChecks(options) {
136
193
  const cwd = options.cwd ?? process.cwd();
@@ -144,15 +201,25 @@ export async function runChecks(options) {
144
201
  const bail = options.bail ?? false;
145
202
  const changed = options.changed ?? false;
146
203
  const timeout = config?.timeout;
204
+ const pm = options.pm ?? detectPackageManager({ cwd });
205
+ const baseline = options.baseline !== undefined ? options.baseline : loadBaseline(cwd);
147
206
  await mkdir(join(cwd, '.check'), { recursive: true });
148
207
  const resolved = resolveChecks({ slots, adapters, config, cwd });
149
208
  const selected = selectChecks(resolved, options);
150
209
  if (!json)
151
210
  writeLine(stderr, `\nRunning ${selected.length} check(s)...\n`);
152
211
  const checks = [];
212
+ const runs = [];
213
+ // Per-slot current fingerprints for slots actually observed this run, and
214
+ // whether `--bail` cut the loop short — both feed the ratchet's full-run gate.
215
+ const observed = new Map();
216
+ let brokeEarly = false;
153
217
  for (const r of selected) {
154
- if (r.skip || !r.adapter) {
155
- const entry = skippedEntry(r);
218
+ // Skip when unresolved, or when the adapter can't run under this PM — e.g.
219
+ // `pnpm audit` (the `security` slot) is unavailable off pnpm (b5).
220
+ const unavailable = r.adapter && !isAvailableUnder(r.adapter.command, r.adapter.args, pm);
221
+ if (r.skip || !r.adapter || unavailable) {
222
+ const entry = skippedEntry(unavailable ? { ...r, skip: `'${r.adapter?.command} ${r.adapter?.args[0]}' is unavailable under ${pm}` } : r);
156
223
  checks.push(entry);
157
224
  if (!json)
158
225
  writeLine(stderr, ` ○ ${entry.name.padEnd(8)} skip ${entry.reason ?? ''}`);
@@ -162,37 +229,98 @@ export async function runChecks(options) {
162
229
  if (!json)
163
230
  writeLine(stderr, ` ▸ ${r.slot} ${adapter.description}`);
164
231
  const start = performance.now();
165
- const outcome = await runner(r, { cwd, changed, ...(timeout !== undefined ? { timeout } : {}) });
232
+ const outcome = await runner(r, { cwd, changed, pm, ...(timeout !== undefined ? { timeout } : {}) });
166
233
  const duration_ms = Math.round(performance.now() - start);
234
+ runs.push({ slot: r.slot, adapter, outcome });
167
235
  await persistOutput(cwd, adapter, outcome);
236
+ // Baseline-aware: subtract this slot's grandfathered diagnostics. Masking is
237
+ // always on (even under a partial run); only the ratchet below is gated. The
238
+ // raw `.check/<slot>.json` is already persisted untouched — masking changes
239
+ // the pass/fail verdict, never the authoritative output.
240
+ let ok = outcome.ok;
241
+ let baselined = 0;
242
+ let newKeys = [];
243
+ const current = baseline ? fingerprint(adapter.name, outcome.stdout) : null;
244
+ if (baseline && current !== null) {
245
+ observed.set(r.slot, current);
246
+ const adj = applyBaseline(current, baseline.slots[r.slot] ?? [], outcome.ok);
247
+ ({ ok, baselined, newKeys } = adj);
248
+ }
168
249
  const entry = {
169
250
  name: r.slot,
170
251
  adapter: adapter.name,
171
252
  description: adapter.description,
172
- ok: outcome.ok,
253
+ ok,
173
254
  exit_code: outcome.exit_code,
174
255
  duration_ms,
175
256
  output_file: adapter.outputFile,
257
+ ...(baselined > 0 ? { baselined } : {}),
176
258
  };
177
259
  checks.push(entry);
178
- if (!json)
260
+ if (!json) {
179
261
  writeLine(stderr, formatStatusLine(entry));
180
- if (!outcome.ok && bail)
262
+ if (baselined > 0)
263
+ writeLine(stderr, ` ${baselined} baselined (grandfathered)`);
264
+ if (!ok && newKeys.length > 0) {
265
+ writeLine(stderr, ` ${newKeys.length} new, not in baseline:`);
266
+ for (const k of newKeys)
267
+ writeLine(stderr, ` ${k}`);
268
+ }
269
+ }
270
+ if (!ok && bail) {
271
+ brokeEarly = true;
181
272
  break;
273
+ }
274
+ }
275
+ // Ratchet: on a fully-observed run, prune grandfathered diagnostics now fixed.
276
+ // A partial run (`--only`/`--skip`/`--changed`) or an early `--bail` break can't
277
+ // see every slot's full output, so it never prunes — an unobserved diagnostic
278
+ // must not be mistaken for a fixed one and dropped (a1). Masking still applied
279
+ // above; only the rewrite is withheld.
280
+ if (baseline) {
281
+ const restricted = (options.only ?? null) !== null || (options.skip?.length ?? 0) > 0 || changed || brokeEarly;
282
+ if (!restricted) {
283
+ const pruned = ratchet(baseline, observed);
284
+ if (!baselinesEqual(baseline, pruned)) {
285
+ await writeBaseline(cwd, pruned);
286
+ if (!json) {
287
+ writeLine(stderr, `\nbaseline: ratcheted ${BASELINE_FILE} to ${countBaselineKeys(pruned)} grandfathered diagnostic(s)`);
288
+ }
289
+ }
290
+ }
182
291
  }
183
292
  const summary = buildSummary(checks);
184
- await writeFile(join(cwd, '.check', 'summary.json'), `${JSON.stringify(summary, null, 2)}\n`);
293
+ await writeFileAtomic(join(cwd, '.check', 'summary.json'), `${JSON.stringify(summary, null, 2)}\n`);
294
+ // `--digest`: write (or, on green, clear) the token-bounded failure excerpt.
295
+ // A file beside summary.json, never a stdout stream, so the machine-output
296
+ // split holds (C5). Raw `.check/<slot>.json` files are already persisted and
297
+ // untouched — the digest only reads them.
298
+ const digestWritten = (options.digest ?? false) ? await writeDigest(cwd, runs, checks) : false;
185
299
  if (json) {
186
300
  stdout.write(`${JSON.stringify(summary, null, 2)}\n`);
187
301
  }
188
302
  else {
303
+ if (summary.checks_run === 0)
304
+ warnVacuous(stderr, checks, adapters);
189
305
  writeLine(stderr, '');
190
- const status = summary.ok ? '✔ all checks passed' : '✘ one or more checks failed';
306
+ const status = summary.checks_run === 0
307
+ ? '⚠ no checks ran'
308
+ : summary.ok ? '✔ all checks passed' : '✘ one or more checks failed';
191
309
  writeLine(stderr, `${status} in ${summary.total_duration_ms}ms`);
192
310
  writeLine(stderr, 'report: .check/summary.json');
311
+ if (digestWritten)
312
+ writeLine(stderr, 'digest: .check/digest.md');
193
313
  writeLine(stderr, '');
194
314
  }
195
- return { ok: summary.ok, summary, exitCode: summary.ok ? 0 : 1 };
315
+ // `--strict` turns a vacuous green into a harness error: exit 2, never 0 —
316
+ // a gate must not report "done" on a repo where nothing was checked.
317
+ let exitCode = summary.ok ? 0 : 1;
318
+ if ((options.strict ?? false) && summary.checks_run === 0) {
319
+ exitCode = 2;
320
+ if (!json)
321
+ writeLine(stderr, '--strict: zero checks ran, exiting 2.\n');
322
+ }
323
+ return { ok: summary.ok, summary, exitCode, runs };
196
324
  }
197
325
  function spawnInherit(command, args, cwd) {
198
326
  return new Promise((resolveOutcome) => {
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Package-manager detection.
3
+ *
4
+ * Resolves which package manager a repo uses so the orchestrator can translate
5
+ * each adapter's canonical `pnpm exec <tool>` invocation into that PM's form.
6
+ * Resolution order (D5): the declared `packageManager` field wins (it is the
7
+ * author's explicit intent), then a lockfile, then a `pnpm` default. Every fs
8
+ * touch is injectable so the logic is unit-testable without a real repo.
9
+ */
10
+ export type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun';
11
+ /**
12
+ * Resolve the package manager for `cwd`: the declared `packageManager` field,
13
+ * else the first matching lockfile, else `pnpm`. `fileExists` and
14
+ * `packageManagerField` are injectable for tests.
15
+ */
16
+ export declare function detectPackageManager(input?: {
17
+ cwd?: string;
18
+ fileExists?: (file: string) => boolean;
19
+ packageManagerField?: () => string | undefined;
20
+ }): PackageManager;
21
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/pm/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAmC7D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,GAAE;IACL,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC3C,GACL,cAAc,CAYhB"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Package-manager detection.
3
+ *
4
+ * Resolves which package manager a repo uses so the orchestrator can translate
5
+ * each adapter's canonical `pnpm exec <tool>` invocation into that PM's form.
6
+ * Resolution order (D5): the declared `packageManager` field wins (it is the
7
+ * author's explicit intent), then a lockfile, then a `pnpm` default. Every fs
8
+ * touch is injectable so the logic is unit-testable without a real repo.
9
+ */
10
+ import { existsSync, readFileSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ const KNOWN = new Set(['pnpm', 'npm', 'yarn', 'bun']);
13
+ /** Narrow a raw name to a known package manager. */
14
+ function isPackageManager(name) {
15
+ return KNOWN.has(name);
16
+ }
17
+ /** Lockfile → package manager, in resolution priority when several coexist. */
18
+ const LOCKFILES = [
19
+ { file: 'pnpm-lock.yaml', pm: 'pnpm' },
20
+ { file: 'bun.lock', pm: 'bun' },
21
+ { file: 'bun.lockb', pm: 'bun' },
22
+ { file: 'yarn.lock', pm: 'yarn' },
23
+ { file: 'package-lock.json', pm: 'npm' },
24
+ ];
25
+ /** Parse the `packageManager` field value (`"yarn@3.6.1"` → `'yarn'`), if known. */
26
+ function parseField(value) {
27
+ if (!value)
28
+ return null;
29
+ const name = value.split('@')[0]?.trim() ?? '';
30
+ return isPackageManager(name) ? name : null;
31
+ }
32
+ /** Read the `packageManager` field from `cwd`'s package.json, or `undefined`. */
33
+ function readPackageManagerField(cwd) {
34
+ try {
35
+ const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8'));
36
+ return pkg.packageManager;
37
+ }
38
+ catch {
39
+ return undefined;
40
+ }
41
+ }
42
+ /**
43
+ * Resolve the package manager for `cwd`: the declared `packageManager` field,
44
+ * else the first matching lockfile, else `pnpm`. `fileExists` and
45
+ * `packageManagerField` are injectable for tests.
46
+ */
47
+ export function detectPackageManager(input = {}) {
48
+ const cwd = input.cwd ?? process.cwd();
49
+ const fileExists = input.fileExists ?? ((file) => existsSync(join(cwd, file)));
50
+ const readField = input.packageManagerField ?? (() => readPackageManagerField(cwd));
51
+ const declared = parseField(readField());
52
+ if (declared)
53
+ return declared;
54
+ for (const { file, pm } of LOCKFILES) {
55
+ if (fileExists(file))
56
+ return pm;
57
+ }
58
+ return 'pnpm';
59
+ }
60
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/pm/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,oDAAoD;AACpD,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,+EAA+E;AAC/E,MAAM,SAAS,GAAoD;IACjE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE;IACtC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE;IAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE;IAChC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE;IACjC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE;CACzC,CAAC;AAEF,oFAAoF;AACpF,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,iFAAiF;AACjF,SAAS,uBAAuB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAgC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrG,OAAO,GAAG,CAAC,cAAc,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAII,EAAE;IAEN,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpF,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Package-manager module — the public surface for detecting a repo's package
3
+ * manager and translating each adapter's canonical `pnpm exec <tool>` prefix
4
+ * into that PM's form. Detection lives in `detect.ts`, translation in
5
+ * `translate.ts`; siblings import only from here.
6
+ */
7
+ export type { PackageManager } from './detect.js';
8
+ export { detectPackageManager } from './detect.js';
9
+ export { isAvailableUnder, translateExec } from './translate.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Package-manager module — the public surface for detecting a repo's package
3
+ * manager and translating each adapter's canonical `pnpm exec <tool>` prefix
4
+ * into that PM's form. Detection lives in `detect.ts`, translation in
5
+ * `translate.ts`; siblings import only from here.
6
+ */
7
+ export { detectPackageManager } from './detect.js';
8
+ export { isAvailableUnder, translateExec } from './translate.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Exec-prefix translation.
3
+ *
4
+ * The adapter registry keeps its canonical `pnpm exec <tool>` form (D5); this
5
+ * is the single seam that rewrites that prefix for whichever package manager a
6
+ * repo actually uses. Only the `pnpm exec` prefix is translated — `pnpm audit`,
7
+ * custom-check commands, and built-ins pass through untouched, so the default
8
+ * pnpm run is byte-identical to before.
9
+ */
10
+ import type { PackageManager } from './detect.js';
11
+ /**
12
+ * Rewrite a canonical `pnpm exec <tool> …` invocation for `pm`. Anything that
13
+ * is not a `pnpm exec` prefix (a `pnpm audit`, a custom check's own command, a
14
+ * built-in) is returned unchanged, and so is every invocation under `pnpm`
15
+ * itself — the default stays exactly as it was.
16
+ */
17
+ export declare function translateExec(command: string, args: readonly string[], pm: PackageManager): {
18
+ command: string;
19
+ args: string[];
20
+ };
21
+ /**
22
+ * Can this adapter run under `pm`? Audit is package-manager-specific — its
23
+ * flags and JSON shape don't port — so `pnpm audit` (the `security` slot) is
24
+ * unavailable on a non-pnpm PM until a per-PM audit adapter lands (b5).
25
+ * Everything else is PM-agnostic once its exec prefix is translated.
26
+ */
27
+ export declare function isAvailableUnder(command: string, args: readonly string[], pm: PackageManager): boolean;
28
+ //# sourceMappingURL=translate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/pm/translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AASlD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,cAAc,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKrC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAGtG"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Exec-prefix translation.
3
+ *
4
+ * The adapter registry keeps its canonical `pnpm exec <tool>` form (D5); this
5
+ * is the single seam that rewrites that prefix for whichever package manager a
6
+ * repo actually uses. Only the `pnpm exec` prefix is translated — `pnpm audit`,
7
+ * custom-check commands, and built-ins pass through untouched, so the default
8
+ * pnpm run is byte-identical to before.
9
+ */
10
+ /** The exec command each non-pnpm PM uses in place of `pnpm exec`. */
11
+ const EXEC_COMMAND = {
12
+ npm: 'npx',
13
+ yarn: 'yarn',
14
+ bun: 'bunx',
15
+ };
16
+ /**
17
+ * Rewrite a canonical `pnpm exec <tool> …` invocation for `pm`. Anything that
18
+ * is not a `pnpm exec` prefix (a `pnpm audit`, a custom check's own command, a
19
+ * built-in) is returned unchanged, and so is every invocation under `pnpm`
20
+ * itself — the default stays exactly as it was.
21
+ */
22
+ export function translateExec(command, args, pm) {
23
+ const isExec = command === 'pnpm' && args[0] === 'exec';
24
+ if (!isExec || pm === 'pnpm')
25
+ return { command, args: [...args] };
26
+ // Drop 'exec'; keep <tool> and its arguments, e.g. `npx oxlint --type-aware`.
27
+ return { command: EXEC_COMMAND[pm], args: args.slice(1) };
28
+ }
29
+ /**
30
+ * Can this adapter run under `pm`? Audit is package-manager-specific — its
31
+ * flags and JSON shape don't port — so `pnpm audit` (the `security` slot) is
32
+ * unavailable on a non-pnpm PM until a per-PM audit adapter lands (b5).
33
+ * Everything else is PM-agnostic once its exec prefix is translated.
34
+ */
35
+ export function isAvailableUnder(command, args, pm) {
36
+ if (command === 'pnpm' && args[0] === 'audit')
37
+ return pm === 'pnpm';
38
+ return true;
39
+ }
40
+ //# sourceMappingURL=translate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/pm/translate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,sEAAsE;AACtE,MAAM,YAAY,GAAoD;IACpE,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,IAAuB,EACvB,EAAkB;IAElB,MAAM,MAAM,GAAG,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IACxD,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAClE,8EAA8E;IAC9E,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,IAAuB,EAAE,EAAkB;IAC3F,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;QAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "checkride",
3
- "version": "0.1.6",
3
+ "version": "0.3.0",
4
4
  "description": "An agent harness for TypeScript repositories: one command that is the definition of done, plus mechanically enforced module boundaries.",
5
5
  "license": "MIT",
6
6
  "author": "Rob McLarty",
@@ -39,24 +39,11 @@
39
39
  "files": [
40
40
  "dist",
41
41
  "templates",
42
+ "schema",
42
43
  "README.md",
43
44
  "CHANGELOG.md",
44
45
  "LICENSE"
45
46
  ],
46
- "devDependencies": {
47
- "@ast-grep/cli": "0.42.1",
48
- "@stryker-mutator/core": "9.6.1",
49
- "@stryker-mutator/vitest-runner": "9.6.1",
50
- "@types/node": "22.20.0",
51
- "@vitest/coverage-v8": "4.1.5",
52
- "cspell": "10.0.0",
53
- "fallow": "2.48.0",
54
- "markdownlint-cli2": "0.22.1",
55
- "oxlint": "1.61.0",
56
- "oxlint-tsgolint": "0.21.1",
57
- "typescript": "6.0.3",
58
- "vitest": "4.1.5"
59
- },
60
47
  "scripts": {
61
48
  "check": "tsc --build && node dist/cli.js",
62
49
  "check:all": "tsc --build && node dist/cli.js --all",
@@ -71,6 +58,22 @@
71
58
  "mutation": "stryker run",
72
59
  "build": "tsc --build",
73
60
  "build:clean": "tsc --build --clean",
74
- "types": "tsc --build"
61
+ "types": "tsc --build",
62
+ "prepublishOnly": "tsc --build && vitest run"
63
+ },
64
+ "devDependencies": {
65
+ "@ast-grep/cli": "0.42.1",
66
+ "@stryker-mutator/core": "9.6.1",
67
+ "@stryker-mutator/vitest-runner": "9.6.1",
68
+ "@types/node": "22.20.0",
69
+ "@vitest/coverage-v8": "4.1.5",
70
+ "ajv": "8.20.0",
71
+ "cspell": "10.0.0",
72
+ "fallow": "2.48.0",
73
+ "markdownlint-cli2": "0.22.1",
74
+ "oxlint": "1.61.0",
75
+ "oxlint-tsgolint": "0.21.1",
76
+ "typescript": "6.0.3",
77
+ "vitest": "4.1.5"
75
78
  }
76
- }
79
+ }