plumbbob 0.11.3 → 0.12.1
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/.claude-plugin/plugin.json +1 -1
- package/README.md +4 -4
- package/dist/cli-core.js +11 -0
- package/dist/lib/latch.js +1 -1
- package/dist/lib/orient.js +233 -18
- package/dist/verbs/build.js +51 -12
- package/dist/verbs/checkpoint.js +17 -10
- package/dist/verbs/handoff.js +64 -13
- package/dist/verbs/order.js +102 -0
- package/dist/verbs/recover.js +31 -1
- package/dist/verbs/turn.js +7 -6
- package/node_modules/checkride/.claude-plugin/plugin.json +1 -1
- package/node_modules/checkride/CHANGELOG.md +117 -0
- package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
- package/node_modules/checkride/dist/adapters.js +14 -10
- package/node_modules/checkride/dist/adapters.js.map +1 -1
- package/node_modules/checkride/dist/baseline/fallow.d.ts +4 -3
- package/node_modules/checkride/dist/baseline/fallow.d.ts.map +1 -1
- package/node_modules/checkride/dist/baseline/fallow.js +15 -8
- package/node_modules/checkride/dist/baseline/fallow.js.map +1 -1
- package/node_modules/checkride/dist/gate.d.ts.map +1 -1
- package/node_modules/checkride/dist/gate.js +62 -44
- package/node_modules/checkride/dist/gate.js.map +1 -1
- package/node_modules/checkride/dist/init.js +3 -3
- package/node_modules/checkride/dist/init.js.map +1 -1
- package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
- package/node_modules/checkride/dist/orchestrator.js +53 -8
- package/node_modules/checkride/dist/orchestrator.js.map +1 -1
- package/node_modules/checkride/dist/pack.js +3 -3
- package/node_modules/checkride/dist/security.d.ts +4 -2
- package/node_modules/checkride/dist/security.d.ts.map +1 -1
- package/node_modules/checkride/dist/security.js +42 -8
- package/node_modules/checkride/dist/security.js.map +1 -1
- package/node_modules/checkride/dist/triage/render.js +1 -1
- package/node_modules/checkride/dist/triage/render.js.map +1 -1
- package/node_modules/checkride/package.json +10 -10
- package/node_modules/checkride/skills/check/SKILL.md +4 -3
- package/node_modules/checkride/templates/shared/cspell.json +3 -24
- package/package.json +3 -3
- package/skills/build/SKILL.md +48 -26
- package/skills/finish/SKILL.md +5 -2
- package/skills/harvest/SKILL.md +4 -1
- package/skills/order/SKILL.md +50 -0
- package/skills/plan/SKILL.md +5 -2
- package/skills/refine/SKILL.md +6 -2
- package/skills/step/SKILL.md +8 -3
- package/skills/verify/SKILL.md +14 -8
- package/templates/intent.md +9 -0
package/dist/verbs/handoff.js
CHANGED
|
@@ -34,8 +34,8 @@ import { join, relative } from 'node:path';
|
|
|
34
34
|
import { commitsSince, diffNumstat, diffPatch, findRepoRoot } from "../lib/git.js";
|
|
35
35
|
import { blocks } from "../lib/notice.js";
|
|
36
36
|
import { isArtifactPath, parseStepSeam } from "../lib/intent.js";
|
|
37
|
-
import { checkpointsPath, detailPath, hasSession, inSpike, intentPath, readStats, readTurn, resolveBuild, seamPath, stepPath, tickPath, } from "../lib/sidecar.js";
|
|
38
|
-
import { countDiff, diffRowValue, foldVerdict, lastLedgerSha, parseConstraintCount, parseLastCheckpoint, parseRecap, parseRecommendation, parseSections, parseSteps, parseSummary, recapLines, seamRowFromDiff, spentRowValue, summaryCheckRow, } from "../lib/orient.js";
|
|
37
|
+
import { buildLogPath, checkpointsPath, detailPath, hasSession, inSpike, intentPath, readStats, readTurn, resolveBuild, seamPath, stepPath, tickPath, } from "../lib/sidecar.js";
|
|
38
|
+
import { buildOrderPhrase, countDiff, diffRowValue, foldVerdict, lastLedgerSha, parkedPhrase, parseBuildOrder, parseConstraintCount, parseLastCheckpoint, parseOrderedSteps, parseParkTotals, parseRecap, parseRecommendation, parseSections, parseSteps, parseSummary, recapLines, remainingOrder, seamRowFromDiff, spentRowValue, summaryCheckRow, } from "../lib/orient.js";
|
|
39
39
|
// The inline-diff threshold (docs/presentation.md): at 20 changed lines or
|
|
40
40
|
// fewer the patch rides the turn; at 21 it stays in the working tree behind
|
|
41
41
|
// the counted diff row.
|
|
@@ -59,8 +59,10 @@ const SEAM_RULE = '\n---';
|
|
|
59
59
|
* Requires an active session (the STATE sentinel under `.plumbbob/`). The step
|
|
60
60
|
* tiers are derived, not passed: a step in flight yields the full
|
|
61
61
|
* decision-tier ending (the Readout and its fence, the inline diff when small
|
|
62
|
-
* enough, the Verdict, Next Up, Your Call, and the Recommendation),
|
|
63
|
-
* step
|
|
62
|
+
* enough, the Verdict, Next Up, Your Call, and the Recommendation), and so does
|
|
63
|
+
* a named step that has not landed when nothing is in flight (a hand-built diff
|
|
64
|
+
* under verify), a landed step yields the orientation-tier ending (Verdict and
|
|
65
|
+
* Next Up, no Your Call),
|
|
64
66
|
* and a fresh session with nothing to report yields only
|
|
65
67
|
* the forward pointer. The two endings no session state can distinguish are
|
|
66
68
|
* named by a flag: `--plan` is the plan pause (a decision turn about the plan,
|
|
@@ -79,7 +81,10 @@ export function handoff(cwd, args = []) {
|
|
|
79
81
|
return 1;
|
|
80
82
|
}
|
|
81
83
|
const intent = readOr(intentPath(root, slug));
|
|
82
|
-
|
|
84
|
+
// In build order, so the pointer names the step a bare `plumbbob build`
|
|
85
|
+
// would enter; the build-log feeds the park count beneath it.
|
|
86
|
+
const steps = parseOrderedSteps(intent);
|
|
87
|
+
const buildLog = readOr(buildLogPath(root, slug));
|
|
83
88
|
const inFlight = readMarker(stepPath(root, slug));
|
|
84
89
|
const detail = readOr(detailPath(root));
|
|
85
90
|
// Where a pointer sends the reader to read the step itself: the intent file
|
|
@@ -90,7 +95,11 @@ export function handoff(cwd, args = []) {
|
|
|
90
95
|
// renders; the pointer and the moves both aim at the first undone step. A
|
|
91
96
|
// decision turn still ends on the model's recommendation when it wrote one.
|
|
92
97
|
const first = steps.find((s) => !s.done);
|
|
93
|
-
const plan = [
|
|
98
|
+
const plan = [
|
|
99
|
+
SEAM_RULE,
|
|
100
|
+
nextUpBlock(first, steps.length, where, nextUpNote(intent, buildLog, null)),
|
|
101
|
+
planCallBlock(first),
|
|
102
|
+
];
|
|
94
103
|
return emit(withRecommendation(plan, parseRecommendation(detail)));
|
|
95
104
|
}
|
|
96
105
|
const explicit = rest.find((a) => /^\d+$/.test(a));
|
|
@@ -115,9 +124,15 @@ export function handoff(cwd, args = []) {
|
|
|
115
124
|
}
|
|
116
125
|
if (current === null) {
|
|
117
126
|
// Nothing measured yet (a fresh session): no Verdict, just the forward pointer.
|
|
118
|
-
return emit([
|
|
127
|
+
return emit([nextUpBlock(nextUp, steps.length, where, nextUpNote(intent, buildLog, current))]);
|
|
119
128
|
}
|
|
120
|
-
|
|
129
|
+
// A step is pending, and its hand-off is the pause, while it is in flight.
|
|
130
|
+
// With nothing in flight, a step the turn names that has not landed is
|
|
131
|
+
// pending too: a diff built outside `/plumbbob:build` reaches
|
|
132
|
+
// `/plumbbob:verify` with no STEP marker, and the number is how the skill says
|
|
133
|
+
// which pause to render.
|
|
134
|
+
const pending = inFlight !== null || (explicit !== undefined && steps.some((s) => s.n === current && !s.done));
|
|
135
|
+
if (!pending) {
|
|
121
136
|
// The boundary: the orientation-tier ending, the state word and the forward
|
|
122
137
|
// pointer, no decision pending and so no Your Call. The same two parts the
|
|
123
138
|
// checkpoint printed for itself, from the same call.
|
|
@@ -150,7 +165,7 @@ export function handoff(cwd, args = []) {
|
|
|
150
165
|
if (inline) {
|
|
151
166
|
parts.push(fence('diff', patch.split('\n')).join('\n'));
|
|
152
167
|
}
|
|
153
|
-
parts.push(verdict,
|
|
168
|
+
parts.push(verdict, nextUpBlock(nextUp, steps.length, where, nextUpNote(intent, buildLog, current)), yourCallBlock(current, checkGreen));
|
|
154
169
|
return emit(withRecommendation(parts, parseRecommendation(detail)));
|
|
155
170
|
}
|
|
156
171
|
/**
|
|
@@ -165,11 +180,12 @@ export function handoff(cwd, args = []) {
|
|
|
165
180
|
*/
|
|
166
181
|
export function boundaryEnding(root, slug, step) {
|
|
167
182
|
const intent = readOr(intentPath(root, slug));
|
|
168
|
-
const steps =
|
|
183
|
+
const steps = parseOrderedSteps(intent);
|
|
169
184
|
const nextUp = steps.find((s) => !s.done && s.n !== step);
|
|
185
|
+
const note = nextUpNote(intent, readOr(buildLogPath(root, slug)), step);
|
|
170
186
|
return {
|
|
171
187
|
verdict: step === null ? null : landedVerdict(root, slug, intent, step),
|
|
172
|
-
pointer:
|
|
188
|
+
pointer: nextUpBlock(nextUp, steps.length, relative(root, intentPath(root, slug)), note),
|
|
173
189
|
};
|
|
174
190
|
}
|
|
175
191
|
/**
|
|
@@ -255,7 +271,9 @@ function sectionBlocks(sections) {
|
|
|
255
271
|
*/
|
|
256
272
|
export function driverPointer(root, slug) {
|
|
257
273
|
const intent = readOr(intentPath(root, slug));
|
|
258
|
-
|
|
274
|
+
// The forward fallback follows the build order like every other pick; the
|
|
275
|
+
// driver line itself stays one line, with no note beneath it.
|
|
276
|
+
const steps = parseOrderedSteps(intent);
|
|
259
277
|
const inFlight = readMarker(stepPath(root, slug));
|
|
260
278
|
const driver = inSpike(root, slug) ? spikeNextUpLine(inFlight) : driverNextUpLine(steps, inFlight, steps.length);
|
|
261
279
|
// The forward fallback skips the step just landed as well as the one open, so
|
|
@@ -517,6 +535,38 @@ function spikeNextUpLine(inFlight) {
|
|
|
517
535
|
const back = inFlight === null ? '' : `, then back to Step ${inFlight}`;
|
|
518
536
|
return `**Next Up**: Close the spike - /plumbbob:spike done${back}`;
|
|
519
537
|
}
|
|
538
|
+
// The card's cap on the build-order reminder: the next five steps, the rest a
|
|
539
|
+
// count. The line is a reminder; the dashboard holds the whole sequence.
|
|
540
|
+
const ORDER_CAP = 5;
|
|
541
|
+
/**
|
|
542
|
+
* The line beneath the forward pointer: the build order from the step it
|
|
543
|
+
* names, when `## Build order` re-sequences the plan away from its numbering,
|
|
544
|
+
* and the park count, when anything has been parked; '' when neither says
|
|
545
|
+
* anything, so a plan nobody re-sequenced with an empty park list renders the
|
|
546
|
+
* pointer alone, as before.
|
|
547
|
+
*
|
|
548
|
+
* Indented two spaces, because an indented line continues the part above it
|
|
549
|
+
* to every reader of the anatomy (the advisory's `→` remedy line is the
|
|
550
|
+
* precedent), where a flush one would open a stray. The parks ride even under
|
|
551
|
+
* `Nothing planned`: an unharvested list at the end of the plan is the one
|
|
552
|
+
* reminder that matters there.
|
|
553
|
+
*/
|
|
554
|
+
function nextUpNote(intent, buildLog, exclude) {
|
|
555
|
+
const parks = parseParkTotals(buildLog);
|
|
556
|
+
const segments = [
|
|
557
|
+
buildOrderPhrase(remainingOrder(parseSteps(intent), parseBuildOrder(intent), exclude), ORDER_CAP),
|
|
558
|
+
parks.total > 0 ? parkedPhrase(parks) : '',
|
|
559
|
+
].filter((s) => s.length > 0);
|
|
560
|
+
return segments.length === 0 ? '' : ` · ${segments.join(' · ')}`;
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* The forward pointer with its note beneath, as one part: `blocks` keeps a
|
|
564
|
+
* part's own newlines, so the note rides flush under the line it qualifies.
|
|
565
|
+
*/
|
|
566
|
+
function nextUpBlock(nextUp, total, where, note) {
|
|
567
|
+
const line = nextUpLine(nextUp, total, where);
|
|
568
|
+
return note.length === 0 ? line : `${line}\n${note}`;
|
|
569
|
+
}
|
|
520
570
|
/**
|
|
521
571
|
* The forward pointer: the next undone step with the progress count, its
|
|
522
572
|
* title, and a closing bracket carrying its advisory `- model:` recommendation
|
|
@@ -526,7 +576,8 @@ function spikeNextUpLine(inFlight) {
|
|
|
526
576
|
* The model is the second bold token the line spends, because it is the one
|
|
527
577
|
* the human acts on (a `/model` call) before the next run; the path is a bare
|
|
528
578
|
* `path:line` in a code span, the one link form that opens in a host and still
|
|
529
|
-
* reads as a path in a PR diff.
|
|
579
|
+
* reads as a path in a PR diff. The line alone is the driver tier's pointer;
|
|
580
|
+
* every other tier rides `nextUpNote` beneath it, through `nextUpBlock`.
|
|
530
581
|
*/
|
|
531
582
|
function nextUpLine(nextUp, total, where) {
|
|
532
583
|
if (nextUp === undefined) {
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// `plumbbob order <n>…`: write the build order, the sequence to build the
|
|
2
|
+
// remaining steps in, as the one numeric line under `## Build order` in
|
|
3
|
+
// intent.md. A refined plan appends steps whose numbers say nothing about when
|
|
4
|
+
// they land (a step 7 that has to go before step 5), and until this verb the
|
|
5
|
+
// human carried that sequence in their head and typed it into every `build`.
|
|
6
|
+
// The line is what every next-step picker reads (`status`, `build`,
|
|
7
|
+
// `checkpoint`, `handoff`), so the dashboard's `← next`, a bare
|
|
8
|
+
// `plumbbob build`, and the card's Next Up agree. The verb validates what a
|
|
9
|
+
// hand edit cannot: every number names an undone step, none twice. `--reset`
|
|
10
|
+
// drops the line, and the plan reads in document order again. It runs in any
|
|
11
|
+
// state, since re-sequencing what comes after the step in flight is the
|
|
12
|
+
// mid-step use, and the sidecar sits outside every seam.
|
|
13
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
14
|
+
import { findRepoRoot } from "../lib/git.js";
|
|
15
|
+
import { activeBuild, hasSession, intentPath } from "../lib/sidecar.js";
|
|
16
|
+
import { clearBuildOrder, orderSteps, parseSteps, setBuildOrder } from "../lib/orient.js";
|
|
17
|
+
import { ending, notice, transition } from "../lib/notice.js";
|
|
18
|
+
import { driverPointer } from "./handoff.js";
|
|
19
|
+
/**
|
|
20
|
+
* Set the build order to the given step numbers, the rest of the undone steps
|
|
21
|
+
* following in document order, or clear it with `--reset`.
|
|
22
|
+
*
|
|
23
|
+
* The line written is the whole remaining sequence, so a cold reader of
|
|
24
|
+
* intent.md sees every undone step and not only the ones re-sequenced.
|
|
25
|
+
* Refuses (exit 1) with no session, no numbers, a token that is not a number,
|
|
26
|
+
* a number the plan lacks, a repeated number, or a step already checkpointed.
|
|
27
|
+
*/
|
|
28
|
+
export function order(cwd, args) {
|
|
29
|
+
const root = findRepoRoot(cwd);
|
|
30
|
+
if (root === null || !hasSession(root)) {
|
|
31
|
+
process.stderr.write(notice({ fact: 'no active session', detail: ['no plan to order'], remedy: 'plumbbob start "<title>"' }));
|
|
32
|
+
return 1;
|
|
33
|
+
}
|
|
34
|
+
const path = intentPath(root);
|
|
35
|
+
const intent = readFileSync(path, 'utf8');
|
|
36
|
+
if (args.includes('--reset')) {
|
|
37
|
+
writeFileSync(path, clearBuildOrder(intent));
|
|
38
|
+
process.stdout.write(ending({
|
|
39
|
+
lead: transition({ label: 'Build order', fact: 'document order' }),
|
|
40
|
+
pointer: driverPointer(root, activeBuild(root)),
|
|
41
|
+
}));
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
// Numbers arrive space- or comma-separated: `order 7 8 5` and `order 7,8,5`
|
|
45
|
+
// read the same, since the line they write is the comma form.
|
|
46
|
+
const tokens = args
|
|
47
|
+
.filter((a) => !a.startsWith('--'))
|
|
48
|
+
.flatMap((a) => a.split(','))
|
|
49
|
+
.map((t) => t.trim())
|
|
50
|
+
.filter((t) => t.length > 0);
|
|
51
|
+
if (tokens.length === 0) {
|
|
52
|
+
process.stderr.write(notice({
|
|
53
|
+
fact: 'order needs step numbers',
|
|
54
|
+
detail: ['the undone steps, in the sequence to build them'],
|
|
55
|
+
remedy: 'plumbbob order 7 8 5, or plumbbob order --reset for document order',
|
|
56
|
+
}));
|
|
57
|
+
return 1;
|
|
58
|
+
}
|
|
59
|
+
const stray = tokens.find((t) => !/^\d+$/.test(t));
|
|
60
|
+
if (stray !== undefined) {
|
|
61
|
+
process.stderr.write(notice({ fact: `\`${stray}\` is not a step number`, remedy: 'plumbbob order 7 8 5' }));
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
const given = tokens.map(Number);
|
|
65
|
+
const steps = parseSteps(intent);
|
|
66
|
+
const planned = steps.map((s) => s.n);
|
|
67
|
+
const unknown = given.find((n) => !planned.includes(n));
|
|
68
|
+
if (unknown !== undefined) {
|
|
69
|
+
process.stderr.write(notice({
|
|
70
|
+
fact: `no step ${unknown} in the plan`,
|
|
71
|
+
detail: [planned.length === 0 ? 'no steps planned yet' : `planned: ${planned.join(', ')}`],
|
|
72
|
+
remedy: 'fix the number, or /plumbbob:step to add the step first',
|
|
73
|
+
}));
|
|
74
|
+
return 1;
|
|
75
|
+
}
|
|
76
|
+
const repeat = given.find((n, i) => given.indexOf(n) !== i);
|
|
77
|
+
if (repeat !== undefined) {
|
|
78
|
+
process.stderr.write(notice({ fact: `step ${repeat} is listed twice`, remedy: 'list each step once' }));
|
|
79
|
+
return 1;
|
|
80
|
+
}
|
|
81
|
+
const landed = given.find((n) => steps.find((s) => s.n === n)?.done === true);
|
|
82
|
+
if (landed !== undefined) {
|
|
83
|
+
process.stderr.write(notice({
|
|
84
|
+
fact: `step ${landed} is already checkpointed`,
|
|
85
|
+
detail: ['the order sequences what is left'],
|
|
86
|
+
remedy: 'list the undone steps only',
|
|
87
|
+
}));
|
|
88
|
+
return 1;
|
|
89
|
+
}
|
|
90
|
+
const full = orderSteps(steps, given)
|
|
91
|
+
.filter((s) => !s.done)
|
|
92
|
+
.map((s) => s.n);
|
|
93
|
+
writeFileSync(path, setBuildOrder(intent, full));
|
|
94
|
+
// The pointer reads the plan back from disk, so it already follows the
|
|
95
|
+
// order just written: back at the step in flight, or forward from the
|
|
96
|
+
// boundary to the first step in the new sequence.
|
|
97
|
+
process.stdout.write(ending({
|
|
98
|
+
lead: transition({ label: 'Build order', fact: full.join(', ') }),
|
|
99
|
+
pointer: driverPointer(root, activeBuild(root)),
|
|
100
|
+
}));
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
package/dist/verbs/recover.js
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// deleting them is a gamble the human should take by hand.
|
|
19
19
|
import { existsSync, readFileSync } from 'node:fs';
|
|
20
20
|
import { findRepoRoot } from "../lib/git.js";
|
|
21
|
-
import { parseSteps } from "../lib/orient.js";
|
|
21
|
+
import { parseBuildOrder, parseSteps } from "../lib/orient.js";
|
|
22
22
|
import { activeBuild, checkpointsPath, clearHandoff, clearTick, grantPath, handoffPath, hasSession, intentPath, inSpike, listBuilds, readTurn, setActiveBuild, setGrant, stepPath, tickPath, } from "../lib/sidecar.js";
|
|
23
23
|
import { spikeBranches, spikeWorktrees } from "./spike.js";
|
|
24
24
|
/**
|
|
@@ -93,9 +93,39 @@ function sessionFindings(root) {
|
|
|
93
93
|
findings.push({ name: 'cursor', ok: true, detail: `build "${slug}" resolves` });
|
|
94
94
|
const stepInFlight = existsSync(stepPath(root, slug));
|
|
95
95
|
findings.push(...phaseFindings(root, slug, stepInFlight));
|
|
96
|
+
findings.push(...orderFindings(root, slug));
|
|
96
97
|
findings.push(...leftoverFindings(root, slug, stepInFlight));
|
|
97
98
|
return findings;
|
|
98
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* A build order naming a step the plan does not hold.
|
|
102
|
+
*
|
|
103
|
+
* The line under `## Build order` is hand-editable, and a refine can renumber
|
|
104
|
+
* or drop the step it names; every picker just skips the number, so the plan
|
|
105
|
+
* quietly builds in a sequence nobody wrote down. Reported, never repaired:
|
|
106
|
+
* intent.md is a tracked artifact, and the sequence is a judgment call. Silent
|
|
107
|
+
* while the plan declares no order at all.
|
|
108
|
+
*/
|
|
109
|
+
function orderFindings(root, slug) {
|
|
110
|
+
const intent = readOr(intentPath(root, slug));
|
|
111
|
+
const order = parseBuildOrder(intent);
|
|
112
|
+
if (order.length === 0) {
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
const planned = parseSteps(intent).map((s) => s.n);
|
|
116
|
+
const unknown = order.filter((n) => !planned.includes(n));
|
|
117
|
+
if (unknown.length === 0) {
|
|
118
|
+
return [{ name: 'build order', ok: true, detail: `every step it lists is planned (${order.join(', ')})` }];
|
|
119
|
+
}
|
|
120
|
+
return [
|
|
121
|
+
{
|
|
122
|
+
name: 'build order',
|
|
123
|
+
ok: false,
|
|
124
|
+
detail: `the build order names step${unknown.length === 1 ? '' : 's'} ${unknown.join(', ')}, which the plan does not hold (planned: ${planned.join(', ')})`,
|
|
125
|
+
hint: 'rewrite the line with plumbbob order <n>…, or plumbbob order --reset to read the plan in document order',
|
|
126
|
+
},
|
|
127
|
+
];
|
|
128
|
+
}
|
|
99
129
|
/**
|
|
100
130
|
* The cursor names a build that is not there.
|
|
101
131
|
*
|
package/dist/verbs/turn.js
CHANGED
|
@@ -38,10 +38,10 @@ export function turn(cwd, _args) {
|
|
|
38
38
|
*
|
|
39
39
|
* A step is in flight when a STEP marker (the flat control file recording the
|
|
40
40
|
* step between `build` and `checkpoint`) is present. Guidance only: it reminds a
|
|
41
|
-
* fresh session that a tangent is a park (not an edit)
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* real stdout.
|
|
41
|
+
* fresh session that a tangent is a park (not an edit), that the park's own
|
|
42
|
+
* block is the whole turn, and how the step lands, since neither the build nor
|
|
43
|
+
* the park prose may be in context after compaction or on a scripted turn.
|
|
44
|
+
* Exported because an in-process test cannot read the hook's real stdout.
|
|
45
45
|
*/
|
|
46
46
|
export function stepInFlightContext(cwd) {
|
|
47
47
|
const root = findSessionRoot(cwd);
|
|
@@ -51,8 +51,9 @@ export function stepInFlightContext(cwd) {
|
|
|
51
51
|
if (step === null)
|
|
52
52
|
return null;
|
|
53
53
|
const text = `plumbbob: step ${step} is in flight — a new idea or tangent is a park, not an edit: ` +
|
|
54
|
-
`capture it with \`plumbbob park "<one line>"
|
|
55
|
-
`
|
|
54
|
+
`capture it with \`plumbbob park "<one line>"\` and relay the block it prints whole, ` +
|
|
55
|
+
`with nothing written around it, since that block is the whole turn. ` +
|
|
56
|
+
`The step stays open and lands when you run \`plumbbob checkpoint ${step}\` after approval.`;
|
|
56
57
|
return `${JSON.stringify({ hookSpecificOutput: { hookEventName: 'UserPromptSubmit', additionalContext: text } })}\n`;
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "checkride",
|
|
3
3
|
"displayName": "checkride",
|
|
4
|
-
"version": "0.12.
|
|
4
|
+
"version": "0.12.5",
|
|
5
5
|
"description": "Bounded, contract-aware readers for what checkride already writes: triage a red gate and read quality signal without loading megabytes of raw artifacts.",
|
|
6
6
|
"author": { "name": "Rob McLarty", "email": "hello@robmclarty.com", "url": "https://robmclarty.com" },
|
|
7
7
|
"homepage": "https://robmclarty.github.io/checkride/",
|
|
@@ -4,6 +4,121 @@ All notable changes to this project are documented here. The format is based on
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
|
|
5
5
|
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.12.5] - 2026-09-04
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **The `spell` slot reports common typos, not unknown words.** The cspell
|
|
12
|
+
config `checkride init` scaffolds — and this repo's own — now sets
|
|
13
|
+
`"unknownWords": "report-common-typos"`, so a red `spell` means a word from
|
|
14
|
+
cspell's common-misspellings list (`recieve`, `seperate`, `occured`), never a
|
|
15
|
+
tool name or a domain term the dictionary has not met. The scaffolded `words`
|
|
16
|
+
allowlist starts empty, and this repo's 87-entry list — one that 37 of its
|
|
17
|
+
247 commits had to touch — is gone. The trade is recall on a novel
|
|
18
|
+
misspelling of a real word, which is the recall the noise was already
|
|
19
|
+
costing. `language` widens to `en,en-GB`, so Canadian and British spellings
|
|
20
|
+
(`colour`, `behaviour`) pass without a second dictionary. Existing adopters
|
|
21
|
+
opt in by adding the two settings to their `cspell.json`; `cspell --report
|
|
22
|
+
typos --words-only --unique .` previews what a repo would still flag.
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- **A `security` run against an unreachable advisory endpoint no longer sits
|
|
27
|
+
for four minutes and then says nothing.** The adapter passes
|
|
28
|
+
`--fetch-retries=1 --fetch-timeout=15000`, so pnpm gives up in about 40s
|
|
29
|
+
instead of its default ~250s. The failure is reported as `exit_code: -1` —
|
|
30
|
+
could not verify, the code the plugin's readers already name a harness
|
|
31
|
+
problem rather than a finding — with pnpm's own message printed under the
|
|
32
|
+
slot's status line. Any `exit_code: -1` slot now prints its reason there: a
|
|
33
|
+
built-in's `check-<slot>:` line, or the `timed out after Ns` note.
|
|
34
|
+
- A slot's stderr is persisted as `.check/<slot>.stderr.txt` even when its
|
|
35
|
+
stdout won as a JSON artifact. The security evaluator's explanation used to
|
|
36
|
+
be dropped on that path, leaving `.check/security.json` as the only trace.
|
|
37
|
+
- Re-resolved `fast-uri` to 3.1.7 (four high advisories: GHSA-5jgf-p345-68v8,
|
|
38
|
+
GHSA-f65p-4m7j-42xc, GHSA-fph4-wmhf-6fwf, GHSA-jqff-g426-hqxp) and `qs` to
|
|
39
|
+
6.16.0 (GHSA-4mjr-xmp4-gh2g, GHSA-x5fp-wj9c-mxmx). Both dev-only and
|
|
40
|
+
transitive. `fast-uri` needed no override entry — ajv's own `^3.0.1` reaches
|
|
41
|
+
the patched line — while the `qs` entry was re-scoped from `>=6.11.1
|
|
42
|
+
<6.15.2` to `>=2.2.5 <6.16.0`, since the newer advisories left 6.15.3 exposed
|
|
43
|
+
inside the old range's blind spot. Removing that entry drops `qs` to 6.15.1
|
|
44
|
+
and three moderates return, so it stays.
|
|
45
|
+
|
|
46
|
+
### Internal
|
|
47
|
+
|
|
48
|
+
- Dev-dependency patch bumps, mirrored into the adapter `devDeps` that
|
|
49
|
+
`checkride init` scaffolds and `doctor` recommends: `@vvago/vale` 3.17.1,
|
|
50
|
+
`@ast-grep/cli` 0.45.3, `publint` 0.3.24, and the `vitest` /
|
|
51
|
+
`@vitest/coverage-v8` pair 4.1.11 (their peer range pins them to the same
|
|
52
|
+
version). The vale repin closes the one left open when `minimumReleaseAge`
|
|
53
|
+
blocked 3.17.1 during the prose-slot build.
|
|
54
|
+
- `fallow` 3.9.1 -> 3.22.0. Its report schema moved (11 for health, 9 for
|
|
55
|
+
dead-code and dupes, from 7), which the parser accepts by design — the floor
|
|
56
|
+
is a minimum, not an exact match. Re-verified that every field the fallow
|
|
57
|
+
parsers read survives the jump, including against a health report carrying a
|
|
58
|
+
real finding, since a silent shape drift would read as zero findings and
|
|
59
|
+
pass. No new findings on this repo; thresholds are unchanged.
|
|
60
|
+
- `oxlint` 1.81.0 with `oxlint-tsgolint` 7.0.2001 — one bump, not two: oxlint
|
|
61
|
+
1.81 declares the tsgolint peer as `>=7.0.2001`, and tsgolint renumbered from
|
|
62
|
+
0.25.0 to track TypeScript 7. It brought two new rules. `no-irregular-
|
|
63
|
+
whitespace` caught a zero-width space in a `src/pack.ts` doc comment, wedged
|
|
64
|
+
there to stop a glob's `*/` closing the comment — reworded so no invisible
|
|
65
|
+
character is load-bearing. `no-await-in-loop` is off for `**/*.test.ts`:
|
|
66
|
+
those suites mutate one shared directory and awaiting in the loop is the
|
|
67
|
+
correctness constraint, not an oversight.
|
|
68
|
+
- `cspell` 10.2.0. Its word splitter changed (camelCase, symbols, numbers,
|
|
69
|
+
soft hyphens, opt-in Intl segmentation), so the `report-common-typos` mode
|
|
70
|
+
adopted a version earlier was re-verified rather than assumed: same five
|
|
71
|
+
typos flagged, jargon and Canadian spellings still clean, `cspell:ignore`
|
|
72
|
+
still honoured, and the mode still filters (10 words under `report-all`
|
|
73
|
+
against 5 under `report-common-typos`). 10.2.1 exists but sits inside the
|
|
74
|
+
48-hour `minimumReleaseAge` cooldown.
|
|
75
|
+
- The `/version` release gate widened from `--only docs,links,spell,test` to
|
|
76
|
+
the full `pnpm check`. Repo-local skill, not shipped.
|
|
77
|
+
|
|
78
|
+
## [0.12.4] - 2026-09-02
|
|
79
|
+
|
|
80
|
+
### Added
|
|
81
|
+
|
|
82
|
+
- **A narrowed run's summary now states its own narrowing.** Slots deselected
|
|
83
|
+
by `--only`/`--skip` ride `.check/summary.json` as skipped rows naming the
|
|
84
|
+
flag (`not in --only`, `skipped by --skip`), so a consumer reading the
|
|
85
|
+
artifact after a gate profile or an iteration loop can tell the subset from
|
|
86
|
+
the whole. Opt-in slots that simply sat out are not narrowing and stay
|
|
87
|
+
absent, as before. The human summary reports the same narrowed set.
|
|
88
|
+
|
|
89
|
+
### Changed
|
|
90
|
+
|
|
91
|
+
- **The gate verdict reads as one sentence.** The glyph now trails the clause
|
|
92
|
+
it confirms and every detail rides a single parenthetical — `checkride green
|
|
93
|
+
in 4.1s ✔ (10 checks, without test, slowest: spell in 1.8s)` — in place of
|
|
94
|
+
the old leading-glyph, dash-chained form. A gate profile names its narrowing
|
|
95
|
+
directly (`only types, lint`, `without test`, `affected-only`) rather than
|
|
96
|
+
the `gate profile: … — NOT the full check` boilerplate, so a narrowed green
|
|
97
|
+
still cannot read as a full green. This moves a frozen surface: anything
|
|
98
|
+
matching the old verdict string verbatim needs updating, and
|
|
99
|
+
`docs/contract.md` and its contract test move with it. The `AGENTS.md`
|
|
100
|
+
stanza that `checkride init` writes describes the new wording.
|
|
101
|
+
|
|
102
|
+
### Fixed
|
|
103
|
+
|
|
104
|
+
- The gate's user-visible verdict no longer lands glued to the turn's last
|
|
105
|
+
sentence. The harness prints a hook's `systemMessage` immediately after the
|
|
106
|
+
previous text, so the verdict now carries its own two-newline lead. Only the
|
|
107
|
+
user-facing channel is padded; the agent-facing `reason` and the stderr line
|
|
108
|
+
are untouched.
|
|
109
|
+
- Re-resolved `browserslist` to 4.28.8 for GHSA-c83g-rgw3-j3cx and
|
|
110
|
+
GHSA-73wf-gq98-2v4g (high severity; dev-only, via `@stryker-mutator/core` →
|
|
111
|
+
`@babel/core` → `@babel/helper-compilation-targets`). No override entry —
|
|
112
|
+
`helper-compilation-targets` already declares `^4.24.0`, so a plain
|
|
113
|
+
re-resolve takes the patched line.
|
|
114
|
+
|
|
115
|
+
### Internal
|
|
116
|
+
|
|
117
|
+
- `gateDetail` splits back into `greenDetail` and `redDetail` behind a thin
|
|
118
|
+
dispatcher, clearing fallow's health threshold after the earlier
|
|
119
|
+
consolidation pushed it to cyclomatic 10. Pure extraction — the verdict
|
|
120
|
+
strings are byte-identical.
|
|
121
|
+
|
|
7
122
|
## [0.12.2] - 2026-08-12
|
|
8
123
|
|
|
9
124
|
### Added
|
|
@@ -1847,6 +1962,8 @@ The first real release. (`0.0.0` was a name-claim placeholder.)
|
|
|
1847
1962
|
- Flags: `--only`, `--skip`, `--bail`, `--json`, `--changed`, `--all`,
|
|
1848
1963
|
`--include`.
|
|
1849
1964
|
|
|
1965
|
+
[0.12.5]: https://www.npmjs.com/package/checkride/v/0.12.5
|
|
1966
|
+
[0.12.4]: https://www.npmjs.com/package/checkride/v/0.12.4
|
|
1850
1967
|
[0.12.2]: https://www.npmjs.com/package/checkride/v/0.12.2
|
|
1851
1968
|
[0.12.1]: https://www.npmjs.com/package/checkride/v/0.12.1
|
|
1852
1969
|
[0.12.0]: https://www.npmjs.com/package/checkride/v/0.12.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AACzE,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC;AAEzC,8BAA8B;AAC9B,MAAM,MAAM,IAAI,GAAG;IACjB,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,OAAO,GAAG;IACpB,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qFAAqF;IACrF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oIAAoI;IACpI,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,IAAI,EAqBhC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AACzE,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC;AAEzC,8BAA8B;AAC9B,MAAM,MAAM,IAAI,GAAG;IACjB,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,OAAO,GAAG;IACpB,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qFAAqF;IACrF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oIAAoI;IACpI,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,IAAI,EAqBhC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EAoYtC,CAAC"}
|
|
@@ -104,7 +104,7 @@ export const ADAPTERS = [
|
|
|
104
104
|
args: ['exec', 'oxlint', '--type-aware', '--format=json'],
|
|
105
105
|
outputFile: 'lint.json',
|
|
106
106
|
fixArgs: ['exec', 'oxlint', '--type-aware', '--fix'],
|
|
107
|
-
devDeps: { oxlint: '1.
|
|
107
|
+
devDeps: { oxlint: '1.81.0', 'oxlint-tsgolint': '7.0.2001' },
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
110
|
name: 'biome',
|
|
@@ -148,7 +148,7 @@ export const ADAPTERS = [
|
|
|
148
148
|
command: 'pnpm',
|
|
149
149
|
args: ['exec', 'ast-grep', 'scan', '--json=compact'],
|
|
150
150
|
outputFile: 'struct.json',
|
|
151
|
-
devDeps: { '@ast-grep/cli': '0.45.
|
|
151
|
+
devDeps: { '@ast-grep/cli': '0.45.3' },
|
|
152
152
|
},
|
|
153
153
|
{
|
|
154
154
|
name: 'fallow',
|
|
@@ -163,7 +163,7 @@ export const ADAPTERS = [
|
|
|
163
163
|
outputFile: 'dead.json',
|
|
164
164
|
gate: 'fallow',
|
|
165
165
|
fixArgs: ['exec', 'fallow', 'fix'],
|
|
166
|
-
devDeps: { fallow: '3.
|
|
166
|
+
devDeps: { fallow: '3.22.0' },
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
name: 'knip',
|
|
@@ -189,7 +189,7 @@ export const ADAPTERS = [
|
|
|
189
189
|
args: ['exec', 'fallow', 'dupes', '--format', 'json', '--quiet'],
|
|
190
190
|
outputFile: 'dupes.json',
|
|
191
191
|
gate: 'fallow',
|
|
192
|
-
devDeps: { fallow: '3.
|
|
192
|
+
devDeps: { fallow: '3.22.0' },
|
|
193
193
|
},
|
|
194
194
|
{
|
|
195
195
|
name: 'fallow',
|
|
@@ -200,7 +200,7 @@ export const ADAPTERS = [
|
|
|
200
200
|
args: ['exec', 'fallow', 'health', '--format', 'json', '--quiet'],
|
|
201
201
|
outputFile: 'health.json',
|
|
202
202
|
gate: 'fallow',
|
|
203
|
-
devDeps: { fallow: '3.
|
|
203
|
+
devDeps: { fallow: '3.22.0' },
|
|
204
204
|
},
|
|
205
205
|
{
|
|
206
206
|
name: 'vitest',
|
|
@@ -218,7 +218,7 @@ export const ADAPTERS = [
|
|
|
218
218
|
],
|
|
219
219
|
outputFile: null,
|
|
220
220
|
changedArgs: ['--changed', 'origin/main'],
|
|
221
|
-
devDeps: { vitest: '4.1.
|
|
221
|
+
devDeps: { vitest: '4.1.11', '@vitest/coverage-v8': '4.1.11' },
|
|
222
222
|
},
|
|
223
223
|
{
|
|
224
224
|
name: 'jest',
|
|
@@ -281,7 +281,7 @@ export const ADAPTERS = [
|
|
|
281
281
|
command: 'pnpm',
|
|
282
282
|
args: ['exec', 'cspell', '--no-progress', '--no-summary', '--reporter=default'],
|
|
283
283
|
outputFile: null,
|
|
284
|
-
devDeps: { cspell: '10.0
|
|
284
|
+
devDeps: { cspell: '10.2.0' },
|
|
285
285
|
},
|
|
286
286
|
{
|
|
287
287
|
name: 'vale',
|
|
@@ -300,7 +300,7 @@ export const ADAPTERS = [
|
|
|
300
300
|
// `args` with explicit paths — the same way this one already does for lint.
|
|
301
301
|
args: ['exec', 'vale', '--no-global', '--output=JSON', '.'],
|
|
302
302
|
outputFile: 'prose.json',
|
|
303
|
-
devDeps: { '@vvago/vale': '3.17.
|
|
303
|
+
devDeps: { '@vvago/vale': '3.17.1' },
|
|
304
304
|
},
|
|
305
305
|
{
|
|
306
306
|
name: 'stryker',
|
|
@@ -329,7 +329,11 @@ export const ADAPTERS = [
|
|
|
329
329
|
// they are the audit invocation, and `--audit-level=<l>` doubles as the
|
|
330
330
|
// gate threshold it enforces itself — pnpm's JSON-mode exit code ignores
|
|
331
331
|
// the level, so trusting it gated at zero advisories of any severity.
|
|
332
|
-
|
|
332
|
+
// The fetch flags bound the wait when npm's advisory endpoint is down:
|
|
333
|
+
// pnpm's defaults (2 retries, 60s timeout, 10–60s backoff) sit ~250s
|
|
334
|
+
// before reporting; one retry at 15s measures ~40s. pnpm-only flags are
|
|
335
|
+
// safe here — the slot is unavailable under any other manager.
|
|
336
|
+
args: ['audit', '--audit-level=high', '--json', '--fetch-retries=1', '--fetch-timeout=15000'],
|
|
333
337
|
outputFile: 'security.json',
|
|
334
338
|
builtin: 'security',
|
|
335
339
|
devDeps: {},
|
|
@@ -359,7 +363,7 @@ export const ADAPTERS = [
|
|
|
359
363
|
command: 'pnpm',
|
|
360
364
|
args: ['exec', 'publint'],
|
|
361
365
|
outputFile: null,
|
|
362
|
-
devDeps: { publint: '0.3.
|
|
366
|
+
devDeps: { publint: '0.3.24' },
|
|
363
367
|
},
|
|
364
368
|
{
|
|
365
369
|
name: 'attw',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AA0GhC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAoB;IACpC,EAAE,IAAI,EAAE,OAAO,EAAE;IACjB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;IAC/B,EAAE,IAAI,EAAE,MAAM,EAAE;IAChB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClB,EAAE,IAAI,EAAE,MAAM,EAAE;IAChB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;IAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;IAC/B,EAAE,IAAI,EAAE,MAAM,EAAE;IAChB,EAAE,IAAI,EAAE,MAAM,EAAE;IAChB,EAAE,IAAI,EAAE,OAAO,EAAE;IACjB,EAAE,IAAI,EAAE,OAAO,EAAE;IACjB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;IAC9B,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;IAClD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;IACjC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IACzC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IACxC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IACxC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IACzC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;CAClC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAuB;IAC1C;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,gEAAgE;QAC7E,MAAM,EAAE,CAAC,eAAe,CAAC;QACzB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;QAChC,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE;KAC3D;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2BAA2B;QACxC,MAAM,EAAE;YACN,aAAa;YACb,kBAAkB;YAClB,iBAAiB;YACjB,kBAAkB;YAClB,mBAAmB;YACnB,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,kBAAkB;YAClB,oBAAoB;YACpB,qBAAqB;YACrB,qBAAqB;YACrB,oBAAoB;SACrB;QACD,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC;QAC1C,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC;QAC7C,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;KAC/B;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wBAAwB;QACrC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;QACrC,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;QACtC,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC;QACpD,OAAO,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE;KACvC;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,uCAAuC;QACpD,MAAM,EAAE,CAAC,gBAAgB,CAAC;QAC1B,UAAU,EAAE,CAAC,QAAQ,CAAC;QACtB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC;QACzD,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC;QACpD,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,10 @@
|
|
|
16
16
|
* uniformly — and an *unrecognized* schema fails loudly rather than passing
|
|
17
17
|
* silently (the count can't be trusted, so the slot can't be green).
|
|
18
18
|
*
|
|
19
|
-
* The JSON is fallow's `schema_version
|
|
20
|
-
* schema 4 with a different layout and is no longer supported). Each
|
|
21
|
-
* kind has its own layout, so parsing dispatches on the top-level
|
|
19
|
+
* The JSON is fallow's `schema_version` >= 7 shape (fallow >= 3.5; fallow 2.x
|
|
20
|
+
* was schema 4 with a different layout and is no longer supported). Each
|
|
21
|
+
* analysis kind has its own layout, so parsing dispatches on the top-level
|
|
22
|
+
* `kind`.
|
|
22
23
|
*/
|
|
23
24
|
import type { Fingerprint } from './fingerprint.js';
|
|
24
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallow.d.ts","sourceRoot":"","sources":["../../src/baseline/fallow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fallow.d.ts","sourceRoot":"","sources":["../../src/baseline/fallow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAsTpD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAGvD;AAED,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG;IAC1B,2CAA2C;IAC3C,EAAE,EAAE,OAAO,CAAC;IACZ,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gEAAgE;IAChE,QAAQ,EAAE,WAAW,CAAC;IACtB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,aAAa,CA0BhG"}
|