prismatica 0.2.0 → 0.3.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/dist/assurance/mainpush.js +383 -8
- package/dist/assurance/mainpush.js.map +1 -1
- package/dist/assurance/proofinputs.js +62 -34
- package/dist/assurance/proofinputs.js.map +1 -1
- package/dist/atlas/labels.js +2 -2
- package/dist/atlas/labels.js.map +1 -1
- package/dist/atlas/next.js +81 -18
- package/dist/atlas/next.js.map +1 -1
- package/dist/board/html.js +37 -9
- package/dist/board/html.js.map +1 -1
- package/dist/board/model.js +58 -14
- package/dist/board/model.js.map +1 -1
- package/dist/cli.js +61 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/delta.js +84 -1
- package/dist/commands/delta.js.map +1 -1
- package/dist/commands/doctor.js +53 -9
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/frame.js +13 -1
- package/dist/commands/frame.js.map +1 -1
- package/dist/commands/guide.js +17 -5
- package/dist/commands/guide.js.map +1 -1
- package/dist/commands/next.js +80 -21
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/release.js +950 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/ship.js +18 -2
- package/dist/commands/ship.js.map +1 -1
- package/dist/commands/start.js +5 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/executor.js +7 -0
- package/dist/executor.js.map +1 -1
- package/dist/git.js +27 -0
- package/dist/git.js.map +1 -1
- package/dist/guide.js +206 -33
- package/dist/guide.js.map +1 -1
- package/dist/paths.js +7 -0
- package/dist/paths.js.map +1 -1
- package/dist/planning/pack.js +12 -7
- package/dist/planning/pack.js.map +1 -1
- package/dist/planning/schema.js +17 -1
- package/dist/planning/schema.js.map +1 -1
- package/dist/prepush.js +52 -0
- package/dist/prepush.js.map +1 -1
- package/dist/records/store.js +17 -1
- package/dist/records/store.js.map +1 -1
- package/dist/records/types.js +87 -7
- package/dist/records/types.js.map +1 -1
- package/dist/releases.js +287 -0
- package/dist/releases.js.map +1 -0
- package/dist/render.js +23 -0
- package/dist/render.js.map +1 -1
- package/dist/title.js +69 -0
- package/dist/title.js.map +1 -0
- package/package.json +5 -1
- package/dist/agent-runner.js +0 -656
- package/dist/agent-runner.js.map +0 -1
- package/dist/atlas/packs.js +0 -169
- package/dist/atlas/packs.js.map +0 -1
|
@@ -288,67 +288,95 @@ async function isOwnersDecisionFor(home, contract, relPath, ref) {
|
|
|
288
288
|
return verifySignature(decisionMessage(decision.contractId, decision.patchId, decision.decision), decision.signature, decision.publicKey);
|
|
289
289
|
}
|
|
290
290
|
/**
|
|
291
|
-
* Every
|
|
292
|
-
* lifecycle
|
|
291
|
+
* Every dirty entry in `home`, classified against this change's own
|
|
292
|
+
* lifecycle-output allowlist — the one place that allowlist is applied, shared
|
|
293
|
+
* by `uncommittedProofInputs` (the working-tree refusal, as display strings)
|
|
294
|
+
* and `nonExemptDirtyPaths` (the exact paths `next` builds a checkpoint commit
|
|
295
|
+
* from).
|
|
293
296
|
*
|
|
294
297
|
* `dirtyEntries`, never `dirtyPaths`: plain porcelain collapses a brand-new
|
|
295
298
|
* untracked DIRECTORY to a single entry, so on a lane's first `check` the whole
|
|
296
299
|
* of `.prismatica/evidence/` arrives as one path and no per-file test can be
|
|
297
|
-
* applied to it.
|
|
298
|
-
*
|
|
299
|
-
* A `renamed` or `unmerged` entry is refused BEFORE any exemption is consulted.
|
|
300
|
-
* Neither is a shape this sequence can produce — every record here is written
|
|
301
|
-
* in place — and a staged rename is reported as ONE entry whose path is the
|
|
302
|
-
* DESTINATION, so testing the path alone would tolerate `git mv` of a committed
|
|
303
|
-
* report into `evidence/<id>/` while the record itself left the tree.
|
|
300
|
+
* applied to it. A `renamed` or `unmerged` entry is classified `unsafe` BEFORE
|
|
301
|
+
* any exemption is consulted.
|
|
304
302
|
*/
|
|
305
|
-
|
|
306
|
-
const refused = [];
|
|
303
|
+
async function classifyDirtyEntries(home, contract) {
|
|
307
304
|
const contractRel = laneRelative(home, contractPath(home, contract.id));
|
|
305
|
+
const result = [];
|
|
308
306
|
for (const entry of await git.dirtyEntries(home)) {
|
|
309
307
|
if (entry.change === 'renamed') {
|
|
310
|
-
|
|
308
|
+
result.push({
|
|
309
|
+
path: entry.path,
|
|
310
|
+
display: entry.renamedFrom ? `${entry.renamedFrom} → ${entry.path}` : entry.path,
|
|
311
|
+
exempt: false,
|
|
312
|
+
unsafe: true,
|
|
313
|
+
});
|
|
311
314
|
continue;
|
|
312
315
|
}
|
|
313
316
|
if (entry.change === 'unmerged') {
|
|
314
|
-
|
|
317
|
+
result.push({ path: entry.path, display: entry.path, exempt: false, unsafe: true });
|
|
315
318
|
continue;
|
|
316
319
|
}
|
|
320
|
+
let exempt = false;
|
|
317
321
|
if (isCheckEvidenceFile(home, contract.id, entry.path)) {
|
|
318
|
-
|
|
322
|
+
exempt = true;
|
|
319
323
|
}
|
|
320
|
-
if (entry.path === laneRelative(home, ledgerPath(home))) {
|
|
321
|
-
|
|
322
|
-
continue;
|
|
323
|
-
}
|
|
324
|
-
refused.push(entry.path);
|
|
325
|
-
continue;
|
|
324
|
+
else if (entry.path === laneRelative(home, ledgerPath(home))) {
|
|
325
|
+
exempt = await isAppendedLog(home, ledgerPath(home), entry.path, ledgerExtendsByAppend);
|
|
326
326
|
}
|
|
327
|
-
if (entry.path === laneRelative(home, readyLogPath(home))) {
|
|
327
|
+
else if (entry.path === laneRelative(home, readyLogPath(home))) {
|
|
328
328
|
// `review` appends a drafted-attempt event past its own cleanliness gate,
|
|
329
329
|
// so the very next `check` sees this file uncommitted in the ordinary
|
|
330
330
|
// loop. Tolerated on the ledger's terms and no others.
|
|
331
|
-
|
|
332
|
-
continue;
|
|
333
|
-
}
|
|
334
|
-
refused.push(entry.path);
|
|
335
|
-
continue;
|
|
331
|
+
exempt = await isAppendedLog(home, readyLogPath(home), entry.path, readyLogExtendsByAppend);
|
|
336
332
|
}
|
|
337
|
-
if (isReplaceableReview(home, contract.id, entry.path)) {
|
|
338
|
-
|
|
333
|
+
else if (isReplaceableReview(home, contract.id, entry.path)) {
|
|
334
|
+
exempt = true;
|
|
339
335
|
}
|
|
340
|
-
if (entry.path === contractRel) {
|
|
336
|
+
else if (entry.path === contractRel) {
|
|
341
337
|
// Prismatica's own stage bump and nothing else. A contract with no
|
|
342
338
|
// committed version at HEAD fails closed: the terms this run is about
|
|
343
339
|
// are then on no pull request at all.
|
|
344
340
|
const committed = parseContract(await git.showFile(home, 'HEAD', contractRel));
|
|
345
|
-
|
|
346
|
-
continue;
|
|
347
|
-
}
|
|
341
|
+
exempt = Boolean(committed && isForwardStageOnly(contract, committed));
|
|
348
342
|
}
|
|
349
|
-
|
|
343
|
+
result.push({ path: entry.path, display: entry.path, exempt, unsafe: false });
|
|
350
344
|
}
|
|
351
|
-
return
|
|
345
|
+
return result;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Every uncommitted path in `home` that is NOT one of this change's own
|
|
349
|
+
* lifecycle outputs — the list `check` and `review` refuse on.
|
|
350
|
+
*/
|
|
351
|
+
export async function uncommittedProofInputs(home, contract) {
|
|
352
|
+
const entries = await classifyDirtyEntries(home, contract);
|
|
353
|
+
return entries.filter((entry) => entry.unsafe || !entry.exempt).map((entry) => entry.display);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* The exact non-exempt dirty paths `next` needs for a checkpoint commit —
|
|
357
|
+
* implementation plus any dirty contract, pack, Flow report, Delta, proposal
|
|
358
|
+
* or canonical record, over the SAME allowlist `check` and `review` refuse on
|
|
359
|
+
* (never a second, independent approximation of it). `blocked` is true when a
|
|
360
|
+
* rename or unmerged conflict sits among the non-exempt entries: `paths` then
|
|
361
|
+
* excludes it, because a plain `git add <path>` cannot safely resolve either,
|
|
362
|
+
* and the caller must route to manual resolution instead of a malformed
|
|
363
|
+
* command.
|
|
364
|
+
*
|
|
365
|
+
* `exemptPaths` is this change's own lifecycle outputs — the ledger, this
|
|
366
|
+
* change's evidence, a draft review, the ready log, a forward-only contract
|
|
367
|
+
* stage bump — read off the SAME classifier pass, never a second list.
|
|
368
|
+
* `check` and `review` still tolerate them uncommitted; `next` is the only
|
|
369
|
+
* caller that also needs to know they exist, so it can fold them into the
|
|
370
|
+
* one checkpoint commit that gets the lane clean enough for Ship.
|
|
371
|
+
*/
|
|
372
|
+
export async function nonExemptDirtyPaths(home, contract) {
|
|
373
|
+
const entries = await classifyDirtyEntries(home, contract);
|
|
374
|
+
const nonExempt = entries.filter((entry) => !entry.exempt);
|
|
375
|
+
return {
|
|
376
|
+
paths: nonExempt.filter((entry) => !entry.unsafe).map((entry) => entry.path),
|
|
377
|
+
blocked: nonExempt.some((entry) => entry.unsafe),
|
|
378
|
+
exemptPaths: entries.filter((entry) => entry.exempt).map((entry) => entry.path),
|
|
379
|
+
};
|
|
352
380
|
}
|
|
353
381
|
/**
|
|
354
382
|
* Whether a check recorded at `checkedHead` still binds `head` (the current
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proofinputs.js","sourceRoot":"","sources":["../../src/assurance/proofinputs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"proofinputs.js","sourceRoot":"","sources":["../../src/assurance/proofinputs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,8BAA8B,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzE,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,aAAa,GAAG,wCAAwC,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,UAAkB,EAAE,OAAe;IACnF,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/F,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,kEAAkE;AAClE,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,MAAM,CAAC,MAA4C,EAAE,IAAY;IACxE,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,kDAAkD;IAClE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,eAAe,CACtB,QAAuB,EACvB,WAAmB,EACnB,OAAkC;IAElC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAuB,EAAE,WAAmB;IAChF,OAAO,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAuB,EAAE,WAAmB;IAClF,OAAO,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;AAChG,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAC1B,IAAY,EACZ,IAAY,EACZ,OAAe,EACf,WAAsE;IAEtE,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,KAAe,EAAE,MAAgB;IAC3D,OAAO,CACL,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC;QAC7C,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB;IACxC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,UAAkB,EAAE,OAAe;IAC5E,IAAI,OAAO,KAAK,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;IACjG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,kDAAkD;IAClE,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAW;IACvD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjF,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,KAAK,UAAU,mBAAmB,CAChC,IAAY,EACZ,QAAkB,EAClB,OAAe,EACf,GAAW;IAEX,IAAI,OAAO,KAAK,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,kDAAkD;IAClE,CAAC;IACD,4EAA4E;IAC5E,0EAA0E;IAC1E,kBAAkB;IAClB,IAAI,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,eAAe,CACpB,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,EACzE,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,SAAS,CACnB,CAAC;AACJ,CAAC;AAqBD;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,QAAkB;IAElB,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;gBAChF,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACpF,SAAS;QACX,CAAC;QACD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACjE,0EAA0E;YAC1E,sEAAsE;YACtE,uDAAuD;YACvD,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QAC9F,CAAC;aAAM,IAAI,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACtC,mEAAmE;YACnE,sEAAsE;YACtE,sCAAsC;YACtC,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;YAC/E,MAAM,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAY,EAAE,QAAkB;IAC3E,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChG,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,QAAkB;IAElB,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5E,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;QAChD,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KAChF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,QAAkB,EAClB,WAAmB,EACnB,IAAI,GAAG,MAAM;IAEb,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,8DAA8D;IAC9E,CAAC;IACD,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,2DAA2D;IAC3E,CAAC;IACD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClD,yEAAyE;YACzE,uEAAuE;YACvE,sEAAsE;YACtE,0EAA0E;YAC1E,qEAAqE;YACrE,oEAAoE;YACpE,uDAAuD;YACvD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACpD,SAAS,CAAC,iEAAiE;QAC7E,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,SAAS,CAAC,gEAAgE;QAC5E,CAAC;QACD,IAAI,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5D,SAAS,CAAC,gEAAgE;QAC5E,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;YAC3E,IAAI,MAAM,IAAI,KAAK,IAAI,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;gBACzD,SAAS;YACX,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/atlas/labels.js
CHANGED
|
@@ -64,10 +64,10 @@ export const FLOW_STEP_FIELD = {
|
|
|
64
64
|
changes: { label: 'Changes', hint: 'What data or state changes.' },
|
|
65
65
|
assumes: { label: 'Only if', hint: 'This step only works when these are true.' },
|
|
66
66
|
};
|
|
67
|
-
// ── Mechanics (
|
|
67
|
+
// ── Mechanics (proposed like any other Flow content, collapsed by default) ────
|
|
68
68
|
export const MECHANICS_FIELD = {
|
|
69
69
|
label: 'Where it lives in the code',
|
|
70
|
-
hint: '
|
|
70
|
+
hint: 'An agent proposes it, like any other Flow content — canonical mechanics only change once you run `flow approve`.',
|
|
71
71
|
};
|
|
72
72
|
// ── Evidence — attached per step/rule, never a whole-flow claim ───────────────
|
|
73
73
|
/** The four states from R8: manually verified / test verified / code inferred / stale — plus unknown. */
|
package/dist/atlas/labels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/atlas/labels.ts"],"names":[],"mappings":"AAaA,iFAAiF;AAEjF,MAAM,CAAC,MAAM,UAAU,GAGnB;IACF,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,0CAA0C,EAAE;IACzE,UAAU,EAAE;QACV,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,yDAAyD;KAChE;IACD,KAAK,EAAE;QACL,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,kEAAkE;KACzE;IACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,oCAAoC,EAAE;IACrE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,2CAA2C,EAAE;IACnF,UAAU,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,yEAAyE;KAChF;IACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,2DAA2D,EAAE;IAC5F,QAAQ,EAAE;QACR,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,sDAAsD;KAC7D;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAqD;IACvF,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,0CAA0C,EAAE;IAC3E,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,yCAAyC,EAAE;IAC9E,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,mCAAmC,EAAE;CACxE,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,wCAAwC,CAAC;AAElF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAc;IAC1C,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,mCAAmC;CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA0C;IAC7E,SAAS,EAAE,wBAAwB;IACnC,mBAAmB,EAAE,+BAA+B;IACpD,gBAAgB,EAAE,uBAAuB;IACzC,GAAG,EAAE,mBAAmB;IACxB,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,MAAM,eAAe,GAGxB;IACF,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,uCAAuC,EAAE;IACtE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE;IAChD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gDAAgD,EAAE;IACjF,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,6BAA6B,EAAE;IAClE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,2CAA2C,EAAE;CACjF,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/atlas/labels.ts"],"names":[],"mappings":"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"}
|
package/dist/atlas/next.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UNDERSTAND_CTA, UNDERSTAND_IMPORT_COMMAND } from './labels.js';
|
|
2
2
|
import { shellQuote } from '../shellquote.js';
|
|
3
|
+
import { clampTitle } from '../title.js';
|
|
3
4
|
/**
|
|
4
5
|
* The ONE way Prismatica ever tells the owner to catch main up. Shared by
|
|
5
6
|
* `next`'s rule 11, `frame`'s stale-base refusal and `close`'s follow-through
|
|
@@ -40,7 +41,14 @@ function forChange(change) {
|
|
|
40
41
|
after: `prismatica open ${change.builder} ${change.id}`,
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
+
// No code diff at all yet — even though `frame`/`pack` typically leave the
|
|
45
|
+
// freshly written contract and pack themselves uncommitted, that is not
|
|
46
|
+
// "work to check": the agent's own first commit sweeps them in along with
|
|
47
|
+
// the code (see the checkpoint-commit branch below). Gating this on
|
|
48
|
+
// `hasCommittedWork` alone, rather than on `checkpointPaths` too, is what
|
|
49
|
+
// keeps a freshly packed lane routed to `open` instead of a premature
|
|
50
|
+
// commit nagging the owner before the agent has done anything.
|
|
51
|
+
if (!change.hasCommittedWork) {
|
|
44
52
|
return {
|
|
45
53
|
rule: 7,
|
|
46
54
|
command: `prismatica open ${change.builder} ${change.id}`,
|
|
@@ -58,16 +66,50 @@ function forChange(change) {
|
|
|
58
66
|
after: `prismatica open ${change.builder} ${change.id}`,
|
|
59
67
|
};
|
|
60
68
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
// Flow Report belongs BEFORE Check: the complete working-tree impact is
|
|
70
|
+
// resolved first, so the report file lands in the SAME checkpoint commit as
|
|
71
|
+
// the code it explains, rather than a Check → Flow Report → commit →
|
|
72
|
+
// second Check cycle.
|
|
73
|
+
if (change.flowReportGaps.length > 0) {
|
|
74
|
+
return {
|
|
75
|
+
rule: 7,
|
|
76
|
+
// `--auto`, because the bare command has no arguments to act on and
|
|
77
|
+
// simply errors. `--auto` records what the diff proves and then prints
|
|
78
|
+
// the exact per-flow commands for everything it deliberately would not
|
|
79
|
+
// decide, so this is one paste that always moves the change forward.
|
|
80
|
+
command: 'prismatica flow report --auto',
|
|
81
|
+
why: change.flowReportGaps.join('; '),
|
|
82
|
+
after: 'prismatica next',
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (change.checkpointBlocked) {
|
|
64
86
|
return {
|
|
65
87
|
rule: 7,
|
|
66
|
-
command:
|
|
67
|
-
why: `"${change.id}" has
|
|
88
|
+
command: `git -C ${shellQuote(change.lane)} status`,
|
|
89
|
+
why: `"${change.id}" has a rename or an unresolved conflict — resolve it by hand before the next checkpoint commit`,
|
|
68
90
|
after: `prismatica check ${change.id}`,
|
|
69
91
|
};
|
|
70
92
|
}
|
|
93
|
+
if (change.checkpointPaths.length > 0) {
|
|
94
|
+
// Widened to also name this change's own exempt records, in the same
|
|
95
|
+
// classifier pass's order, so the commit it prints never leaves one of
|
|
96
|
+
// them behind for a second owner loop. `after` asks `prismatica next`
|
|
97
|
+
// rather than re-running Check: every path this can now include —
|
|
98
|
+
// implementation plus the ledger, evidence, a draft review or a forward
|
|
99
|
+
// stage bump — is already tolerated by `checkStillBinds` across this
|
|
100
|
+
// exact commit, so the previous Check stays current and re-checking
|
|
101
|
+
// would only write a fresh ledger row and dirty the lane again.
|
|
102
|
+
const quotedPaths = [...change.checkpointPaths, ...change.checkpointRecordPaths]
|
|
103
|
+
.map(shellQuote)
|
|
104
|
+
.join(' ');
|
|
105
|
+
const inLane = `git -C ${shellQuote(change.lane)}`;
|
|
106
|
+
return {
|
|
107
|
+
rule: 7,
|
|
108
|
+
command: `${inLane} add ${quotedPaths} && ${inLane} commit -m ${shellQuote(clampTitle(change.title))}`,
|
|
109
|
+
why: `"${change.id}" has uncommitted work that Check requires committed`,
|
|
110
|
+
after: 'prismatica next',
|
|
111
|
+
};
|
|
112
|
+
}
|
|
71
113
|
if (change.lastCheck !== 'pass') {
|
|
72
114
|
if (!change.readyCheckAttemptAvailable) {
|
|
73
115
|
return {
|
|
@@ -87,18 +129,6 @@ function forChange(change) {
|
|
|
87
129
|
after: 'prismatica next',
|
|
88
130
|
};
|
|
89
131
|
}
|
|
90
|
-
if (change.flowReportGaps.length > 0) {
|
|
91
|
-
return {
|
|
92
|
-
rule: 7,
|
|
93
|
-
// `--auto`, because the bare command has no arguments to act on and
|
|
94
|
-
// simply errors. `--auto` records what the diff proves and then prints
|
|
95
|
-
// the exact per-flow commands for everything it deliberately would not
|
|
96
|
-
// decide, so this is one paste that always moves the change forward.
|
|
97
|
-
command: 'prismatica flow report --auto',
|
|
98
|
-
why: change.flowReportGaps.join('; '),
|
|
99
|
-
after: 'prismatica next',
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
132
|
// A reviewer who said no outranks everything downstream, at EVERY tier above
|
|
103
133
|
// light — this used to be reachable only through the heavy-tier decision
|
|
104
134
|
// branch below, so a normal-tier `request_changes` fell straight through to
|
|
@@ -184,6 +214,25 @@ function forChange(change) {
|
|
|
184
214
|
after: `prismatica check ${change.id}`,
|
|
185
215
|
};
|
|
186
216
|
}
|
|
217
|
+
// Only exempt records are dirty — the reported dogfood failure: `check`,
|
|
218
|
+
// `review`, `seal` and `accept` all leave their own lifecycle outputs
|
|
219
|
+
// uncommitted by design (see `checkpointPaths` above, which is empty by
|
|
220
|
+
// the time we reach here), but Ship's `requireExactCleanLane` refuses on
|
|
221
|
+
// ANY dirty path. Placed after `failed` and before `unknown` on purpose:
|
|
222
|
+
// by this point `merged`/`ready`/`pending`/`failed` have already
|
|
223
|
+
// returned, so this only ever intercepts the two returns below whose
|
|
224
|
+
// command would otherwise hit Ship's clean-HEAD preflight — the ordinary
|
|
225
|
+
// ready-to-ship fallthrough and the gh-unavailable `unknown` case.
|
|
226
|
+
if (change.checkpointRecordPaths.length > 0) {
|
|
227
|
+
const quotedPaths = change.checkpointRecordPaths.map(shellQuote).join(' ');
|
|
228
|
+
const inLane = `git -C ${shellQuote(change.lane)}`;
|
|
229
|
+
return {
|
|
230
|
+
rule: 7,
|
|
231
|
+
command: `${inLane} add ${quotedPaths} && ${inLane} commit -m ${shellQuote(clampTitle(change.title))}`,
|
|
232
|
+
why: `"${change.id}" has generated records that still need committing before Ship's clean-lane check will pass`,
|
|
233
|
+
after: `prismatica ship ${change.id}`,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
187
236
|
if (change.prState === 'unknown') {
|
|
188
237
|
return {
|
|
189
238
|
rule: 7,
|
|
@@ -294,6 +343,20 @@ export function decideNext(state) {
|
|
|
294
343
|
after: 'prismatica next',
|
|
295
344
|
};
|
|
296
345
|
}
|
|
346
|
+
// A release contract that reached main with no release record yet. Checked
|
|
347
|
+
// BEFORE `awaitingVerification` for two reasons: a release contract can
|
|
348
|
+
// never satisfy that candidate pool honestly (it never gets a passport), and
|
|
349
|
+
// when both an ordinary awaiting-verification contract and an in-flight
|
|
350
|
+
// release exist at once, finishing the release — the narrower, owner-only,
|
|
351
|
+
// resumable transaction — is the more useful next step.
|
|
352
|
+
if (state.releaseInFlight) {
|
|
353
|
+
return {
|
|
354
|
+
rule: 13,
|
|
355
|
+
command: 'prismatica release publish',
|
|
356
|
+
why: `"${state.releaseInFlight.contractId}" merged with no release record for ${state.releaseInFlight.version} yet`,
|
|
357
|
+
after: 'prismatica next',
|
|
358
|
+
};
|
|
359
|
+
}
|
|
297
360
|
// A change that reached main and never got its passport. Below everything
|
|
298
361
|
// above it on purpose: an open change is live work, and this one has already
|
|
299
362
|
// shipped — but "all quiet" is wrong while the record of whether it actually
|
package/dist/atlas/next.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/atlas/next.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/atlas/next.ts"],"names":[],"mappings":"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"}
|
package/dist/board/html.js
CHANGED
|
@@ -62,7 +62,7 @@ const STATE_HINT = {
|
|
|
62
62
|
planned: 'state: planned — a contract exists; no agent is building yet',
|
|
63
63
|
building: 'state: building — an agent is working in the change’s lane',
|
|
64
64
|
checking: 'state: checking — checks and review are proving the work',
|
|
65
|
-
needs_you: 'state: needs_you —
|
|
65
|
+
needs_you: 'state: needs_you — an owner-only action is waiting',
|
|
66
66
|
shipping: 'state: shipping — the PR is at the merge gate',
|
|
67
67
|
live: 'state: live — shipped, verified, passport written',
|
|
68
68
|
};
|
|
@@ -122,7 +122,7 @@ function renderNeedsYou(items) {
|
|
|
122
122
|
if (items.length === 0) {
|
|
123
123
|
return `<div class="empty">
|
|
124
124
|
<p class="empty-title">Nothing is waiting on you.</p>
|
|
125
|
-
<p class="empty-sub">When a change needs
|
|
125
|
+
<p class="empty-sub">When a change needs an action from you, it appears here first.</p>
|
|
126
126
|
</div>`;
|
|
127
127
|
}
|
|
128
128
|
return filterEmpty('needs') + items
|
|
@@ -319,11 +319,12 @@ function renderApps(apps) {
|
|
|
319
319
|
.join('\n');
|
|
320
320
|
return `<div class="panel"><table class="apps"><thead><tr><th>App</th><th>Last shipped</th><th title="in-flight changes vs the WIP limit">Open</th><th title="the merge gate — the one choke point">Gate</th><th>Red flags</th><th>Checks</th></tr></thead><tbody>${rows}</tbody></table></div>`;
|
|
321
321
|
}
|
|
322
|
-
function renderReleases(releases, pendingVerification, legacyReleases, intents) {
|
|
322
|
+
function renderReleases(releases, pendingVerification, legacyReleases, releaseRecords, intents) {
|
|
323
323
|
// The empty state claims nothing exists yet — false, and confusing to show
|
|
324
|
-
// directly above a list of pending or legacy contracts
|
|
324
|
+
// directly above a list of pending or legacy contracts (or npm release
|
|
325
|
+
// records) that plainly do.
|
|
325
326
|
const passports = releases.length === 0
|
|
326
|
-
? pendingVerification.length === 0 && legacyReleases.length === 0
|
|
327
|
+
? pendingVerification.length === 0 && legacyReleases.length === 0 && releaseRecords.length === 0
|
|
327
328
|
? `<div class="empty">
|
|
328
329
|
<p class="empty-title">Nothing has shipped yet.</p>
|
|
329
330
|
<p class="empty-sub">A release appears here only after its change merges, deploys, and passes a live check — with a tested way back.</p>
|
|
@@ -406,7 +407,34 @@ function renderReleases(releases, pendingVerification, legacyReleases, intents)
|
|
|
406
407
|
.join('')}</ul></article>`)
|
|
407
408
|
.join('\n') +
|
|
408
409
|
'</div>';
|
|
409
|
-
|
|
410
|
+
// An npm release record — `release prepare`/`release publish`'s own
|
|
411
|
+
// write-once outcome, distinct from a passport: `published` means the npm
|
|
412
|
+
// registry itself confirmed this exact version and artifact; `superseded`
|
|
413
|
+
// means the registry confirmed it was never published or staged at all.
|
|
414
|
+
const releaseRecordsBlock = releaseRecords.length === 0
|
|
415
|
+
? ''
|
|
416
|
+
: `<div class="rel-group"><h3 class="subhead">npm releases</h3>
|
|
417
|
+
<p class="sentence t-muted">Written only after the npm registry itself independently confirmed the claim.</p>` +
|
|
418
|
+
releaseRecords
|
|
419
|
+
.map((item) => {
|
|
420
|
+
const { release } = item;
|
|
421
|
+
const published = release.outcome === 'published';
|
|
422
|
+
return `<article class="release" data-app="${escapeHtml(item.app)}">
|
|
423
|
+
<div class="release-head">
|
|
424
|
+
<span class="dot" style="background:${published ? STATE_TONE.live.dot : STATE_TONE.planned.dot}"></span>
|
|
425
|
+
<h4 class="card-title">${escapeHtml(release.version)}</h4>
|
|
426
|
+
${appChip(item.app)}
|
|
427
|
+
<span class="chip${published ? ' st-proven' : ''}" title="${published ? 'the npm registry confirmed this exact version and artifact' : 'the registry confirmed this version was never published or staged'}">${published ? 'published' : 'superseded'}</span>
|
|
428
|
+
</div>
|
|
429
|
+
<p class="sentence">${published ? `Integrity: ${escapeHtml(release.integrity ?? '(unknown)')} · dist-tag: ${escapeHtml(release.distTag ?? '(unknown)')}` : `Closed ${escapeHtml(release.at.slice(0, 10))} — nothing was ever published`}${release.recoveryRoutes.length > 0
|
|
430
|
+
? ` · ${release.recoveryRoutes.map((route) => escapeHtml(route)).join('; ')}`
|
|
431
|
+
: ''}</p>
|
|
432
|
+
<nav class="links">${release.pr ? `<a class="rl" href="${escapeHtml(release.pr)}" title="the pull request it merged through">PR</a>` : ''}${recordLink(item.repo, 'releases', release.version, 'release', 'the full release record')}</nav>
|
|
433
|
+
</article>`;
|
|
434
|
+
})
|
|
435
|
+
.join('\n') +
|
|
436
|
+
'</div>';
|
|
437
|
+
return passports + pendingBlock + legacyBlock + releaseRecordsBlock + intentBlock + filterEmpty('releases');
|
|
410
438
|
}
|
|
411
439
|
// ── Understand (Flows + Rules) ───────────────────────────────────────────────
|
|
412
440
|
function flowActionForm(repo, id, action, confirmKind, title, label, cls) {
|
|
@@ -1259,7 +1287,7 @@ function sideNav(model, active) {
|
|
|
1259
1287
|
<a href="${active === 'understand' ? '/#needs' : '#needs'}" title="${escapeHtml(needsYouTitle)}"><span class="n-dot"></span>Needs you ${badge(needsYouTotal, true, 'needs')}</a>
|
|
1260
1288
|
<a href="${active === 'understand' ? '/#work' : '#work'}"><span class="n-dot"></span>Work ${badge(model.cards.length, false, 'work')}</a>
|
|
1261
1289
|
<a href="${active === 'understand' ? '/#apps' : '#apps'}"><span class="n-dot"></span>Apps ${badge(model.apps.length, false, 'apps')}</a>
|
|
1262
|
-
<a href="${active === 'understand' ? '/#releases' : '#releases'}"><span class="n-dot"></span>Releases ${badge(model.releases.length + model.pendingVerification.length + model.legacyReleases.length, false, 'releases')}</a>
|
|
1290
|
+
<a href="${active === 'understand' ? '/#releases' : '#releases'}"><span class="n-dot"></span>Releases ${badge(model.releases.length + model.pendingVerification.length + model.legacyReleases.length + model.releaseRecords.length, false, 'releases')}</a>
|
|
1263
1291
|
<a href="/understand" class="${active === 'understand' ? 'active' : ''}" title="what each app does, in plain language — Flows and Rules"><span class="n-dot"></span>Understand ${badge(model.understandPending, true)}</a>
|
|
1264
1292
|
</nav>
|
|
1265
1293
|
<div class="side-controls">
|
|
@@ -1334,7 +1362,7 @@ export function renderBoardPage(model) {
|
|
|
1334
1362
|
${renderAppScope(model)}
|
|
1335
1363
|
${renderStartAction(model)}
|
|
1336
1364
|
<section id="needs">
|
|
1337
|
-
<div class="sec-head"><h2>Needs you</h2><span class="sec-sub" title="everything waiting on the owner, across every app">
|
|
1365
|
+
<div class="sec-head"><h2>Needs you</h2><span class="sec-sub" title="everything waiting on the owner, across every app">owner-only actions waiting</span></div>
|
|
1338
1366
|
${renderNeedsYou(model.needsYou)}
|
|
1339
1367
|
</section>
|
|
1340
1368
|
<section id="work">
|
|
@@ -1348,7 +1376,7 @@ ${renderStartAction(model)}
|
|
|
1348
1376
|
</section>
|
|
1349
1377
|
<section id="releases">
|
|
1350
1378
|
<div class="sec-head"><h2>Releases</h2><span class="sec-sub" title="verified, pending and legacy release records">verified releases, pending verification and legacy records</span></div>
|
|
1351
|
-
${renderReleases(model.releases, model.pendingVerification, model.legacyReleases, model.intents)}
|
|
1379
|
+
${renderReleases(model.releases, model.pendingVerification, model.legacyReleases, model.releaseRecords, model.intents)}
|
|
1352
1380
|
</section>`;
|
|
1353
1381
|
return pageShell('Prismatica — board', main, model);
|
|
1354
1382
|
}
|