prismatica 0.2.0 → 0.4.0

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 (64) hide show
  1. package/README.md +20 -8
  2. package/dist/assurance/mainpush.js +383 -8
  3. package/dist/assurance/mainpush.js.map +1 -1
  4. package/dist/assurance/proofinputs.js +62 -34
  5. package/dist/assurance/proofinputs.js.map +1 -1
  6. package/dist/atlas/labels.js +2 -2
  7. package/dist/atlas/labels.js.map +1 -1
  8. package/dist/atlas/next.js +120 -18
  9. package/dist/atlas/next.js.map +1 -1
  10. package/dist/board/html.js +37 -9
  11. package/dist/board/html.js.map +1 -1
  12. package/dist/board/model.js +58 -14
  13. package/dist/board/model.js.map +1 -1
  14. package/dist/cli.js +70 -6
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/delta.js +84 -1
  17. package/dist/commands/delta.js.map +1 -1
  18. package/dist/commands/doctor.js +55 -11
  19. package/dist/commands/doctor.js.map +1 -1
  20. package/dist/commands/frame.js +13 -1
  21. package/dist/commands/frame.js.map +1 -1
  22. package/dist/commands/guide.js +17 -5
  23. package/dist/commands/guide.js.map +1 -1
  24. package/dist/commands/next.js +196 -26
  25. package/dist/commands/next.js.map +1 -1
  26. package/dist/commands/release.js +950 -0
  27. package/dist/commands/release.js.map +1 -0
  28. package/dist/commands/ship.js +150 -15
  29. package/dist/commands/ship.js.map +1 -1
  30. package/dist/commands/start.js +5 -2
  31. package/dist/commands/start.js.map +1 -1
  32. package/dist/commands/update.js +435 -0
  33. package/dist/commands/update.js.map +1 -0
  34. package/dist/detect.js +40 -10
  35. package/dist/detect.js.map +1 -1
  36. package/dist/executor.js +15 -0
  37. package/dist/executor.js.map +1 -1
  38. package/dist/git.js +27 -0
  39. package/dist/git.js.map +1 -1
  40. package/dist/guide.js +254 -33
  41. package/dist/guide.js.map +1 -1
  42. package/dist/paths.js +7 -0
  43. package/dist/paths.js.map +1 -1
  44. package/dist/planning/pack.js +12 -7
  45. package/dist/planning/pack.js.map +1 -1
  46. package/dist/planning/schema.js +17 -1
  47. package/dist/planning/schema.js.map +1 -1
  48. package/dist/prepush.js +52 -0
  49. package/dist/prepush.js.map +1 -1
  50. package/dist/records/store.js +17 -1
  51. package/dist/records/store.js.map +1 -1
  52. package/dist/records/types.js +122 -7
  53. package/dist/records/types.js.map +1 -1
  54. package/dist/releases.js +287 -0
  55. package/dist/releases.js.map +1 -0
  56. package/dist/render.js +23 -0
  57. package/dist/render.js.map +1 -1
  58. package/dist/title.js +69 -0
  59. package/dist/title.js.map +1 -0
  60. package/package.json +5 -1
  61. package/dist/agent-runner.js +0 -656
  62. package/dist/agent-runner.js.map +0 -1
  63. package/dist/atlas/packs.js +0 -169
  64. package/dist/atlas/packs.js.map +0 -1
@@ -0,0 +1,435 @@
1
+ /**
2
+ * `update` — a deterministic, owner-only maintenance transaction that moves
3
+ * one adopted consumer repository's recognised CI gate reader to the exact
4
+ * published version of the Prismatica CLI currently running here.
5
+ *
6
+ * It targets the EXECUTING CLI's own semantic version — never npm's moving
7
+ * `latest` tag — and only after `npm view` independently confirms that exact
8
+ * version is public with non-empty `dist.integrity`. It edits only the one
9
+ * unambiguous recognised gate invocation (and, when present, the exact
10
+ * generated header token naming the same old version), preserving every
11
+ * other byte. A self-hosted, missing, malformed or ambiguous integration
12
+ * refuses without touching anything. The transaction creates or resumes one
13
+ * Light lane identified by `Contract.updateVersion` and targeting exactly the
14
+ * workflow `Contract.updateWorkflow` names, runs the ordinary full
15
+ * Check through `npx --yes prismatica@<target> check <id>` (the exact public
16
+ * reader future CI will fetch), and calls ordinary `ship` — the same
17
+ * lifecycle every other change goes through.
18
+ */
19
+ import fs from 'node:fs';
20
+ import path from 'node:path';
21
+ import { execa } from 'execa';
22
+ import { checkStillBinds, isCheckEvidenceFile, laneRelative } from '../assurance/proofinputs.js';
23
+ import { listOpenChanges } from '../change.js';
24
+ import { loadConfig } from '../config.js';
25
+ import { classifyGateInvocations } from '../detect.js';
26
+ import { UserError } from '../errors.js';
27
+ import * as git from '../git.js';
28
+ import { readLedger } from '../ledger.js';
29
+ import { ledgerPath } from '../paths.js';
30
+ import { contractPath, readContract, writeContract } from '../records/store.js';
31
+ import { renderContractBody } from '../render.js';
32
+ import { prismaticaVersion } from '../runtime.js';
33
+ import * as ui from '../ui.js';
34
+ import { mainSyncCommand } from '../atlas/next.js';
35
+ import { runFrame } from './frame.js';
36
+ import { runShip } from './ship.js';
37
+ const PKG_NAME = 'prismatica';
38
+ /** `X.Y.Z` only — the one shape a pin must satisfy before any decision is made about it. */
39
+ const SEMVER_PATTERN = /^(\d+)\.(\d+)\.(\d+)$/;
40
+ /**
41
+ * `X.Y.Z` only — a small local copy, the same "two literal copies, on
42
+ * purpose" precedent `release.ts`'s own registry seam documents, since
43
+ * `releases.ts` is forbidden here regardless of scope.
44
+ */
45
+ function isNewerVersion(a, b) {
46
+ const pa = SEMVER_PATTERN.exec(a.trim());
47
+ const pb = SEMVER_PATTERN.exec(b.trim());
48
+ if (!pa || !pb) {
49
+ return false; // not a plain semver either side — never guess
50
+ }
51
+ for (let i = 1; i <= 3; i += 1) {
52
+ const na = Number(pa[i]);
53
+ const nb = Number(pb[i]);
54
+ if (na !== nb) {
55
+ return na > nb;
56
+ }
57
+ }
58
+ return false;
59
+ }
60
+ /**
61
+ * The state matrix (ac-1): equal is a true no-op, newer refuses downgrade,
62
+ * an older exact pin or a recognised legacy unpinned invocation is eligible,
63
+ * self-hosted/none/ambiguous all refuse without edits. A recognised pin that
64
+ * is not valid semver (`prismatica@banana`) is neither older nor newer —
65
+ * `isNewerVersion` would silently answer "false" and this matrix would then
66
+ * treat it as eligible, so malformed pins are classified BEFORE any
67
+ * older/newer comparison is even attempted. Pure — takes the
68
+ * already-classified structural result, decides nothing about the registry
69
+ * or the filesystem.
70
+ */
71
+ export function classifyUpdateState(classification, targetVersion) {
72
+ if (classification.kind === 'none') {
73
+ return { kind: 'none' };
74
+ }
75
+ if (classification.kind === 'ambiguous') {
76
+ return { kind: 'ambiguous', invocations: classification.invocations };
77
+ }
78
+ const { invocation } = classification;
79
+ if (invocation.kind === 'self-hosted') {
80
+ return { kind: 'self-hosted', invocation };
81
+ }
82
+ if (invocation.kind === 'exact-pin') {
83
+ const pinnedVersion = invocation.pinnedVersion;
84
+ if (!SEMVER_PATTERN.test(pinnedVersion.trim())) {
85
+ return { kind: 'malformed-pin', pinnedVersion };
86
+ }
87
+ if (pinnedVersion === targetVersion) {
88
+ return { kind: 'no-op' };
89
+ }
90
+ if (isNewerVersion(pinnedVersion, targetVersion)) {
91
+ return { kind: 'downgrade-refused', pinnedVersion };
92
+ }
93
+ }
94
+ return { kind: 'eligible', invocation };
95
+ }
96
+ // ── Narrow, byte-preserving workflow text mutation ───────────────────────
97
+ const LEGACY_UNPINNED_VALUES = [
98
+ 'prismatica gate',
99
+ 'npx prismatica gate',
100
+ 'npx --yes prismatica gate',
101
+ 'npx -y prismatica gate',
102
+ ];
103
+ function escapeRegExp(value) {
104
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
105
+ }
106
+ /**
107
+ * The exact same recognised shape `detect.ts`'s gate-invocation scanner
108
+ * matches for `exact-pin` — a local copy so this module never needs to
109
+ * export detection internals just to re-find the line it already classified.
110
+ */
111
+ const EXACT_PIN_SEGMENT = /^npx\s+(?:--yes\s+|-y\s+)?prismatica@(\S+)\s+gate(?:\s|$)/;
112
+ /**
113
+ * Every line whose command text — after stripping an optional `run:` prefix
114
+ * and a trailing inline comment, then splitting on `;`/`&`/`|` exactly like
115
+ * the detector does — is itself the recognised `exact-pin` invocation of
116
+ * `oldVersion`. This is the run step's own line, positively re-derived by
117
+ * structure, never assumed from a substring count.
118
+ */
119
+ function findExactPinRunLines(lines, oldVersion) {
120
+ const matches = [];
121
+ for (let i = 0; i < lines.length; i += 1) {
122
+ const raw = lines[i];
123
+ const trimmed = raw.trim();
124
+ if (trimmed === '' || trimmed.startsWith('#')) {
125
+ continue;
126
+ }
127
+ const prefixed = /^(\s*(?:-\s+)?run:\s*)(.*)$/.exec(raw);
128
+ const commandPart = (prefixed ? prefixed[2] : raw).replace(/\s+#.*$/, '');
129
+ for (const rawSegment of commandPart.split(/[;&|]+/)) {
130
+ const segment = rawSegment.trim();
131
+ if (segment === '') {
132
+ continue;
133
+ }
134
+ const match = EXACT_PIN_SEGMENT.exec(segment);
135
+ if (match && match[1] === oldVersion) {
136
+ matches.push(i);
137
+ break;
138
+ }
139
+ }
140
+ }
141
+ return matches;
142
+ }
143
+ /**
144
+ * The one generated header shape `templates.ts`'s `gateWorkflowYaml` ever
145
+ * writes (`# npx --yes prismatica@<version> gate`, verbatim) — never any
146
+ * comment or command elsewhere that merely contains the same version token.
147
+ * An unrelated comment or command sharing the old version text will not
148
+ * match this exact line shape and is therefore left untouched.
149
+ */
150
+ function findGeneratedHeaderLines(lines, oldVersion) {
151
+ const pattern = new RegExp(`^#\\s*npx --yes prismatica@${escapeRegExp(oldVersion)} gate\\s*$`);
152
+ const matches = [];
153
+ for (let i = 0; i < lines.length; i += 1) {
154
+ if (pattern.test(lines[i])) {
155
+ matches.push(i);
156
+ }
157
+ }
158
+ return matches;
159
+ }
160
+ /**
161
+ * The one text mutation this command ever makes, and the mechanism that
162
+ * makes "fails closed on anything it cannot edit without guessing" real
163
+ * rather than a comment: only lines POSITIVELY IDENTIFIED as Prismatica's own
164
+ * integration are touched, never a file-wide substring replace.
165
+ *
166
+ * `exact-pin`: the run step's own recognised invocation line (re-derived by
167
+ * the same structural match `detect.ts` used to classify it — required,
168
+ * exactly one) and, when present, the single line matching the exact
169
+ * generated header comment `templates.ts` writes for this old version. Any
170
+ * other line containing the same `prismatica@<oldVersion>` text — an
171
+ * unrelated comment, a different command — is never touched, because it
172
+ * cannot match either positively-identified shape. Zero or more than one
173
+ * header candidate refuses rather than guessing which one is the real one.
174
+ *
175
+ * `legacy-unpinned`: the recognised invocation is a bare `run:` value —
176
+ * `prismatica gate` or one of its `npx` forms, and nothing else on that
177
+ * line — pinned in place to `npx --yes prismatica@<targetVersion> gate`.
178
+ * Exactly one such line is trusted; zero or more than one refuses.
179
+ *
180
+ * A full YAML parse+reserialise is deliberately NOT used here: it would
181
+ * reformat bytes this command has no business touching. Text in, text out,
182
+ * everything else preserved.
183
+ */
184
+ export function mutateGateWorkflowText(text, invocation, targetVersion) {
185
+ if (invocation.kind === 'exact-pin') {
186
+ const oldVersion = invocation.pinnedVersion;
187
+ const oldToken = `prismatica@${oldVersion}`;
188
+ const newToken = `prismatica@${targetVersion}`;
189
+ const lines = text.split('\n');
190
+ const runLines = findExactPinRunLines(lines, oldVersion);
191
+ if (runLines.length !== 1) {
192
+ return null; // not exactly the one recognised run invocation — never guess
193
+ }
194
+ const headerLines = findGeneratedHeaderLines(lines, oldVersion);
195
+ if (headerLines.length > 1) {
196
+ return null; // more than one candidate header — never guess which is real
197
+ }
198
+ for (const index of [...runLines, ...headerLines]) {
199
+ lines[index] = lines[index].split(oldToken).join(newToken);
200
+ }
201
+ return lines.join('\n');
202
+ }
203
+ // legacy-unpinned — the leading `- ` list marker is optional: the yaml
204
+ // library renders a step with a `name` alongside `run` on its own
205
+ // indented line, but a hand-written or pre-0.2.0 workflow may combine
206
+ // them as `- run: …` on one line.
207
+ const lines = text.split('\n');
208
+ const runLine = /^(\s*(?:-\s+)?run:\s*)(.*)$/;
209
+ let matchedIndex = -1;
210
+ for (let i = 0; i < lines.length; i += 1) {
211
+ const match = runLine.exec(lines[i]);
212
+ if (!match) {
213
+ continue;
214
+ }
215
+ if (LEGACY_UNPINNED_VALUES.includes(match[2].trim())) {
216
+ if (matchedIndex !== -1) {
217
+ return null; // more than one — ambiguous, never guess which
218
+ }
219
+ matchedIndex = i;
220
+ }
221
+ }
222
+ if (matchedIndex === -1) {
223
+ return null;
224
+ }
225
+ const prefix = runLine.exec(lines[matchedIndex])[1];
226
+ lines[matchedIndex] = `${prefix}npx --yes prismatica@${targetVersion} gate`;
227
+ return lines.join('\n');
228
+ }
229
+ const NPM_NOT_FOUND = /E404|404 Not Found|is not in (?:this|the) registry/i;
230
+ async function npmPackageIntegrity(version) {
231
+ const result = await execa('npm', ['view', `${PKG_NAME}@${version}`, 'dist.integrity', '--json'], {
232
+ reject: false,
233
+ });
234
+ if (result.failed) {
235
+ return NPM_NOT_FOUND.test(`${result.stderr}${result.stdout}`) ? { state: 'absent' } : { state: 'uncertain' };
236
+ }
237
+ try {
238
+ const parsed = JSON.parse(result.stdout);
239
+ return typeof parsed === 'string' && parsed.length > 0 ? { state: 'present', integrity: parsed } : { state: 'uncertain' };
240
+ }
241
+ catch {
242
+ return { state: 'uncertain' };
243
+ }
244
+ }
245
+ // ── Safety: a clean, current main before anything else is even asked ─────
246
+ async function requireCleanCurrentMain(mainRoot, mainBranch) {
247
+ const dirtyCode = (await git.dirtyPaths(mainRoot)).filter((file) => !file.startsWith('.prismatica/'));
248
+ if (dirtyCode.length > 0) {
249
+ throw new UserError(`Your "${mainBranch}" has uncommitted changes (${dirtyCode.slice(0, 3).join(', ')}${dirtyCode.length > 3 ? ', …' : ''}).`, { command: 'git status', why: 'update starts from a clean, known baseline, exactly like framing any other change' });
250
+ }
251
+ const upstream = `origin/${mainBranch}`;
252
+ if (await git.refExists(mainRoot, upstream)) {
253
+ const behind = await git.behindCount(mainRoot, mainBranch, upstream);
254
+ if (behind > 0) {
255
+ throw new UserError(`Your "${mainBranch}" is ${behind} commit(s) behind ${upstream}.`, {
256
+ command: mainSyncCommand(mainRoot, mainBranch),
257
+ why: 'update should target the current tip, not an old one',
258
+ });
259
+ }
260
+ }
261
+ }
262
+ async function findExistingUpdateLane(mainRoot, targetVersion) {
263
+ for (const change of await listOpenChanges(mainRoot)) {
264
+ const { data: contract } = readContract(change.home, change.id);
265
+ if (!contract.updateVersion) {
266
+ continue;
267
+ }
268
+ if (contract.updateVersion !== targetVersion) {
269
+ throw new UserError(`An update lane for ${contract.updateVersion} is already open ("${change.id}") — finish or abandon it before updating to ${targetVersion}.`, { command: 'prismatica next', why: 'update never runs two maintenance transactions at once' });
270
+ }
271
+ return { home: change.home, contract };
272
+ }
273
+ return null;
274
+ }
275
+ function workflowRelativePath(invocation) {
276
+ return path.posix.join('.github', 'workflows', invocation.workflow);
277
+ }
278
+ // ── Resuming the external, target-published Check ────────────────────────
279
+ /** Whether a passing, TARGET-STAMPED check for this contract still binds the current HEAD — resumability, never a re-run once already proven. */
280
+ async function externalCheckAlreadyBinds(home, contract, targetVersion) {
281
+ const entries = readLedger(home).entries.filter((entry) => entry.contractId === contract.id && entry.event === 'check_run');
282
+ const latest = entries.at(-1);
283
+ if (!latest || !latest.pass || !latest.checkedHead || latest.prismaticaVersion !== targetVersion) {
284
+ return false;
285
+ }
286
+ return checkStillBinds(home, contract, latest.checkedHead);
287
+ }
288
+ export async function runUpdate(options) {
289
+ const mainRoot = await git.mainRepoRoot(options.cwd);
290
+ const config = loadConfig(mainRoot);
291
+ const targetVersion = prismaticaVersion();
292
+ await requireCleanCurrentMain(mainRoot, config.mainBranch);
293
+ const classification = classifyUpdateState(classifyGateInvocations(mainRoot), targetVersion);
294
+ switch (classification.kind) {
295
+ case 'none':
296
+ throw new UserError('No recognised `prismatica gate` invocation found in .github/workflows.', {
297
+ command: 'prismatica init',
298
+ why: 'update only ever edits an invocation it can unambiguously recognise',
299
+ });
300
+ case 'ambiguous':
301
+ throw new UserError(`${classification.invocations.length} recognised gate invocations found (${classification.invocations.map((i) => i.workflow).join(', ')}) — refusing to guess which one to update.`, { command: 'git grep -n "prismatica" .github/workflows', why: 'update never edits an ambiguous integration' });
302
+ case 'self-hosted':
303
+ throw new UserError(`${classification.invocation.workflow} self-hosts the gate — update never converts a self-hosted Prismatica into an npm consumer.`);
304
+ case 'no-op':
305
+ return { outcome: 'no-op', targetVersion };
306
+ case 'downgrade-refused':
307
+ throw new UserError(`CI already pins prismatica@${classification.pinnedVersion}, newer than the ${targetVersion} running here — update never downgrades.`);
308
+ case 'malformed-pin':
309
+ throw new UserError(`CI pins "prismatica@${classification.pinnedVersion}", which is not a valid semantic version — update refuses to guess whether that is older or newer.`, {
310
+ command: `git grep -n "prismatica@${classification.pinnedVersion}" .github/workflows`,
311
+ why: 'a malformed pin is fail-closed integration state, never eligible for an automatic decision',
312
+ });
313
+ }
314
+ const invocation = classification.invocation;
315
+ // Registry proof BEFORE any mutation — only reached once we know we would
316
+ // otherwise proceed to edit something.
317
+ const registry = await npmPackageIntegrity(targetVersion);
318
+ if (registry.state !== 'present') {
319
+ throw new UserError(`prismatica@${targetVersion} is not confirmed public with a non-empty registry integrity — update fails closed before any mutation.`, { command: `npm view ${PKG_NAME}@${targetVersion} dist.integrity`, why: 'the target must be proven publicly resolvable before anything changes' });
320
+ }
321
+ const existing = await findExistingUpdateLane(mainRoot, targetVersion);
322
+ let home;
323
+ let contract;
324
+ if (existing) {
325
+ home = existing.home;
326
+ contract = existing.contract;
327
+ }
328
+ else {
329
+ const workflowRel = workflowRelativePath(invocation);
330
+ const framed = await runFrame({
331
+ cwd: mainRoot,
332
+ title: `Update Prismatica CI gate to ${targetVersion}`,
333
+ issue: `update/${targetVersion}`,
334
+ allowedPaths: [workflowRel],
335
+ acceptanceChecks: [
336
+ { id: 'ac-1', description: `CI gate reads prismatica@${targetVersion}`, test: 'manual:owner' },
337
+ ],
338
+ answers: { touchesAuth: false, touchesPayments: false, touchesSavedData: false, copyOnly: false },
339
+ tierOverride: 'light',
340
+ installHook: false,
341
+ now: options.now,
342
+ });
343
+ home = framed.worktree;
344
+ contract = { ...framed.contract, updateVersion: targetVersion, updateWorkflow: workflowRel };
345
+ writeContract(home, contract, renderContractBody(contract));
346
+ const contractRel = laneRelative(home, contractPath(home, contract.id));
347
+ await git.commitPaths(home, [contractRel], `update: target prismatica@${targetVersion}`);
348
+ }
349
+ // Narrow structural edit — BOTH the path and the invocation metadata this
350
+ // step trusts come from THIS lane, never from main. `contract.updateWorkflow`
351
+ // is the one workflow path this transaction was framed to modify, written
352
+ // once at frame time and never again — it never moves because main later
353
+ // relocates its gate, and never because a supported `amend` widens or
354
+ // reorders `allowedPaths` (an ordered list of globs, which is why reading
355
+ // its first entry was never a durable answer). A lane that carries an
356
+ // `updateVersion` but cannot name its own workflow fails closed here,
357
+ // before anything is read or written. `laneGate` is a fresh
358
+ // reclassification of the lane's own checkout, never main's. If the lane's
359
+ // own positively identified invocation is not in that same file, main and
360
+ // this lane have diverged incompatibly: refuse rather than mixing one
361
+ // file's invocation metadata into another's text (the resume-path mismatch
362
+ // this guards against).
363
+ const workflowRel = contract.updateWorkflow;
364
+ if (!workflowRel) {
365
+ throw new UserError(`The update lane "${contract.id}" does not record which workflow it targets — refusing to guess from its scope list.`, {
366
+ command: `prismatica abandon ${contract.id} --reason "update lane names no target workflow"`,
367
+ why: 'an update transaction mutates only the exact file its own durable record names',
368
+ });
369
+ }
370
+ const laneGate = classifyGateInvocations(home);
371
+ if (laneGate.kind === 'ambiguous') {
372
+ throw new UserError(`${laneGate.invocations.length} recognised gate invocations found (${laneGate.invocations.map((i) => i.workflow).join(', ')}) — refusing to guess which one to update.`, { command: `git -C ${home} grep -n "prismatica" .github/workflows`, why: 'update never edits an ambiguous integration' });
373
+ }
374
+ if (laneGate.kind === 'none') {
375
+ throw new UserError(`Could not safely edit ${workflowRel}'s recognised gate invocation without guessing — the recognised text no longer matches exactly what was detected.`, { command: `git -C ${home} diff -- ${workflowRel}`, why: 'update never edits a shape it cannot count exactly' });
376
+ }
377
+ const laneInvocation = laneGate.invocation;
378
+ if (workflowRelativePath(laneInvocation) !== workflowRel) {
379
+ throw new UserError(`This lane is scoped to ${workflowRel}, but its own recognised gate invocation is now in ${laneInvocation.workflow} — main and this lane have diverged since the lane was framed.`, { command: 'prismatica next', why: "update never applies one file's invocation metadata to another file" });
380
+ }
381
+ const workflowAbs = path.join(home, workflowRel);
382
+ const currentText = fs.readFileSync(workflowAbs, 'utf8');
383
+ const alreadyAtTarget = laneInvocation.kind === 'exact-pin' && laneInvocation.pinnedVersion === targetVersion;
384
+ if (!alreadyAtTarget) {
385
+ const mutated = mutateGateWorkflowText(currentText, laneInvocation, targetVersion);
386
+ if (mutated === null) {
387
+ throw new UserError(`Could not safely edit ${workflowRel}'s recognised gate invocation without guessing — the recognised text no longer matches exactly what was detected.`, { command: `git -C ${home} diff -- ${workflowRel}`, why: 'update never edits a shape it cannot count exactly' });
388
+ }
389
+ fs.writeFileSync(workflowAbs, mutated);
390
+ await git.commitPaths(home, [workflowRel], `update: pin CI gate to prismatica@${targetVersion}`);
391
+ }
392
+ // The ordinary full Check, through the exact published target — resumable:
393
+ // skip once a passing, target-stamped run already binds current HEAD.
394
+ if (!(await externalCheckAlreadyBinds(home, contract, targetVersion))) {
395
+ const checked = await execa('npx', ['--yes', `${PKG_NAME}@${targetVersion}`, 'check', contract.id], {
396
+ cwd: home,
397
+ reject: false,
398
+ });
399
+ const latest = readLedger(home)
400
+ .entries.filter((entry) => entry.contractId === contract.id && entry.event === 'check_run')
401
+ .at(-1);
402
+ if (checked.failed || !latest || !latest.pass || latest.prismaticaVersion !== targetVersion) {
403
+ throw new UserError(`\`npx --yes prismatica@${targetVersion} check ${contract.id}\` did not produce a passing, target-stamped check.`, { command: `npx --yes prismatica@${targetVersion} check ${contract.id}`, why: 'this is the exact public reader future CI will fetch — it must prove it can read this repository before shipping' });
404
+ }
405
+ const recordPaths = (await git.dirtyEntries(home))
406
+ .map((entry) => entry.path)
407
+ .filter((p) => isCheckEvidenceFile(home, contract.id, p) || p === laneRelative(home, ledgerPath(home)));
408
+ if (recordPaths.length > 0) {
409
+ await git.commitPaths(home, recordPaths, `update: check evidence for prismatica@${targetVersion}`);
410
+ }
411
+ }
412
+ const shipReport = await runShip({ cwd: home, contractId: contract.id });
413
+ if (!shipReport.shipped) {
414
+ throw new UserError('The gate is not satisfied yet — see the requirements above.', {
415
+ command: `prismatica gate ${contract.id}`,
416
+ why: 'update ships through the same gate every change does',
417
+ });
418
+ }
419
+ return { outcome: 'shipped', targetVersion, contractId: contract.id, prUrl: shipReport.prUrl };
420
+ }
421
+ export function printUpdateReport(report) {
422
+ if (report.outcome === 'no-op') {
423
+ console.log(ui.ok(`✓ already current — CI gate reads prismatica@${report.targetVersion}`));
424
+ return;
425
+ }
426
+ console.log(ui.ok(`✓ CI gate pinned to prismatica@${report.targetVersion}`));
427
+ console.log('');
428
+ console.log(` ${ui.bold('contract')} ${report.contractId}`);
429
+ if (report.prUrl) {
430
+ console.log(` ${ui.bold('PR')} ${report.prUrl}`);
431
+ }
432
+ console.log('');
433
+ console.log(ui.dim(' gate → merge → close, guided by `prismatica next`.'));
434
+ }
435
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
package/dist/detect.js CHANGED
@@ -56,8 +56,14 @@ const GATE_INVOCATION_PATTERNS = [
56
56
  // the live trusted-main form (`node "$RUNNER_TEMP/prismatica-trusted/dist/cli.js" gate`).
57
57
  { kind: 'self-hosted', pattern: /^node\s+"?[^"\s]*dist\/cli\.js"?\s+gate(?:\s|$)/ },
58
58
  ];
59
- /** What this `run` block invokes, or null when nothing in it reaches the gate. */
60
- function runStepGateInvocation(run) {
59
+ /**
60
+ * EVERY recognised invocation in this `run` block, never just the first — a
61
+ * multiline step can contain two otherwise-valid gate commands (one per
62
+ * line, or chained with `;`/`&&`), and `update` must see both to refuse as
63
+ * ambiguous rather than silently editing the one it happened to find first.
64
+ */
65
+ function runStepGateInvocations(run) {
66
+ const found = [];
61
67
  for (const rawLine of run.split('\n')) {
62
68
  const line = rawLine.trim();
63
69
  if (line === '' || line.startsWith('#')) {
@@ -73,24 +79,34 @@ function runStepGateInvocation(run) {
73
79
  for (const { kind, pattern } of GATE_INVOCATION_PATTERNS) {
74
80
  const match = pattern.exec(segment);
75
81
  if (match) {
76
- return { kind, pinnedVersion: match[1] };
82
+ found.push({ kind, pinnedVersion: match[1] });
83
+ break; // this segment already matched — don't test the other patterns against it
77
84
  }
78
85
  }
79
86
  }
80
87
  }
81
- return null;
88
+ return found;
82
89
  }
83
90
  /**
84
91
  * Structurally parses each workflow file (the `yaml` dependency already in
85
92
  * use elsewhere) and inspects only `jobs.*.steps[].run` — never a step's
86
93
  * `name`, a comment, or echoed text. Unparsable YAML is never treated as a
87
94
  * match (fails closed to "missing", not a crash or a false positive).
95
+ *
96
+ * Returns EVERY recognised gate invocation found, across every workflow file,
97
+ * sorted by filename then job/step order — never just the first. `update`'s
98
+ * detector needs to tell "exactly one" apart from "more than one" before it
99
+ * will edit anything; `findGateWorkflow` below is the plain existence
100
+ * question `detectCapabilities` has always asked, answered from this same
101
+ * list so the two can never disagree about what a repository's workflows
102
+ * contain.
88
103
  */
89
- function findGateWorkflow(cwd) {
104
+ export function findGateInvocations(cwd) {
90
105
  const workflowsDir = path.join(cwd, '.github', 'workflows');
91
106
  if (!fs.existsSync(workflowsDir)) {
92
- return null;
107
+ return [];
93
108
  }
109
+ const found = [];
94
110
  // Sorted, so which invocation is reported never depends on directory order.
95
111
  for (const file of fs.readdirSync(workflowsDir).sort()) {
96
112
  if (!/\.ya?ml$/.test(file)) {
@@ -107,14 +123,28 @@ function findGateWorkflow(cwd) {
107
123
  for (const job of Object.values(jobs)) {
108
124
  const steps = Array.isArray(job?.steps) ? job.steps : [];
109
125
  for (const step of steps) {
110
- const found = typeof step?.run === 'string' ? runStepGateInvocation(step.run) : null;
111
- if (found) {
112
- return { ...found, workflow: file };
126
+ const invocations = typeof step?.run === 'string' ? runStepGateInvocations(step.run) : [];
127
+ for (const invocation of invocations) {
128
+ found.push({ ...invocation, workflow: file });
113
129
  }
114
130
  }
115
131
  }
116
132
  }
117
- return null;
133
+ return found;
134
+ }
135
+ /** The first recognised gate invocation, or `null` when none exists — what `detectCapabilities`'s capability row has always needed. */
136
+ function findGateWorkflow(cwd) {
137
+ return findGateInvocations(cwd)[0] ?? null;
138
+ }
139
+ export function classifyGateInvocations(cwd) {
140
+ const invocations = findGateInvocations(cwd);
141
+ if (invocations.length === 0) {
142
+ return { kind: 'none' };
143
+ }
144
+ if (invocations.length === 1) {
145
+ return { kind: 'one', invocation: invocations[0] };
146
+ }
147
+ return { kind: 'ambiguous', invocations };
118
148
  }
119
149
  const ProtectionSchema = z.looseObject({
120
150
  required_status_checks: z.looseObject({ contexts: z.array(z.string()).default([]) }).nullish(),
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}