@codyswann/lisa 4.6.13 → 4.8.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 (62) hide show
  1. package/all/copy-overwrite/scripts/lisa-run-gates.mjs +333 -8
  2. package/cdk/package-lisa/package.lisa.json +9 -1
  3. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  4. package/dist/core/lisa-owned-hash-ledger.js +1 -0
  5. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  6. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  7. package/dist/core/upstream-evidence-manifest.js +8 -5
  8. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  9. package/expo/package-lisa/package.lisa.json +6 -1
  10. package/nestjs/package-lisa/package.lisa.json +9 -1
  11. package/package.json +1 -1
  12. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  14. package/plugins/lisa-agy/plugin.json +1 -1
  15. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  18. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  24. package/plugins/lisa-expo-agy/plugin.json +1 -1
  25. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  30. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  35. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  39. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  40. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  45. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-rails-agy/plugin.json +1 -1
  50. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  55. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  60. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  62. package/typescript/package-lisa/package.lisa.json +9 -1
@@ -41,15 +41,17 @@
41
41
  * @module lisa-run-gates
42
42
  */
43
43
 
44
+ import { createHash } from "node:crypto";
44
45
  import {
45
46
  existsSync,
47
+ mkdirSync,
46
48
  mkdtempSync,
47
49
  readFileSync,
48
50
  rmSync,
49
51
  writeFileSync,
50
52
  } from "node:fs";
51
53
  import { tmpdir } from "node:os";
52
- import { join, relative } from "node:path";
54
+ import { dirname, join, relative } from "node:path";
53
55
  import { fileURLToPath } from "node:url";
54
56
 
55
57
  import { DIAGNOSIS, diagnoseFailure } from "./lib/gate-failure-diagnosis.mjs";
@@ -58,6 +60,7 @@ import { invokedAsScript } from "./lib/invoked-as-script.mjs";
58
60
  import {
59
61
  configurationProblems,
60
62
  declarationsAt,
63
+ momentFamily,
61
64
  momentsExecutedBy,
62
65
  projectScripts,
63
66
  readGates,
@@ -965,6 +968,278 @@ function spawnExec(command) {
965
968
  }
966
969
  }
967
970
 
971
+ /**
972
+ * Version of the recorded document. Bumped only when a reader must change.
973
+ */
974
+ export const EVIDENCE_SCHEMA_VERSION = 1;
975
+
976
+ /**
977
+ * Discriminator a reader checks before trusting a file's shape.
978
+ *
979
+ * A reader that parsed any JSON it was handed would credit a file that happens
980
+ * to have a `gates` array, which is how evidence of one thing becomes evidence
981
+ * of another. This token is also what a caller greps for to find out whether
982
+ * the runner it resolved is old enough to ignore `--evidence` entirely.
983
+ */
984
+ export const EVIDENCE_KIND = "lisa-gate-evidence";
985
+
986
+ /**
987
+ * What this run was able to say about the moment as a whole.
988
+ *
989
+ * Every one of these is written to disk, INCLUDING the ones that prove
990
+ * nothing. That is the point: a reader must be able to tell "ran, and this
991
+ * project declares nothing here" from "never ran", and it cannot do that from
992
+ * a file's absence, because absence is also what a crashed runner leaves.
993
+ */
994
+ export const EVIDENCE_VERDICT = Object.freeze({
995
+ /** Every required gate at this moment passed. */
996
+ PROVED: "proved",
997
+ /** A required gate went unproved. */
998
+ BLOCKED: "blocked",
999
+ /** The configuration was invalid, so nothing was executed. */
1000
+ REFUSED: "refused",
1001
+ /** The project has no gates block; the registry governs nothing here. */
1002
+ NO_GATES: "no-gates",
1003
+ /** The block is half-written, so the caller's built-in steps still run. */
1004
+ FELL_BACK: "fell-back",
1005
+ /** The runner could not run. Nothing was proved. */
1006
+ RUNNER_FAILED: "runner-failed",
1007
+ });
1008
+
1009
+ /**
1010
+ * A runner state read as one of evidence's three values.
1011
+ *
1012
+ * Only PASSED becomes `pass`. FAILED becomes `fail`. Everything else —
1013
+ * unprovable, killed, skipped, queued behind a blocker — becomes `unknown`,
1014
+ * which is neither an accusation nor a credit: nothing measured the property,
1015
+ * so the honest record says nobody knows. Collapsing any of them into `pass`
1016
+ * is the defect the whole subsystem exists to refuse, and collapsing them into
1017
+ * `fail` would blame a project for a gap in observation.
1018
+ */
1019
+ const EVIDENCE_STATUS_FOR = Object.freeze({
1020
+ [STATE.PASSED]: "pass",
1021
+ [STATE.FAILED]: "fail",
1022
+ [STATE.UNPROVABLE]: "unknown",
1023
+ [STATE.KILLED]: "unknown",
1024
+ [STATE.SKIPPED]: "unknown",
1025
+ [STATE.NOT_RUN]: "unknown",
1026
+ });
1027
+
1028
+ /**
1029
+ * The same value with every object key in a stable order.
1030
+ *
1031
+ * A digest over `JSON.stringify` of the raw block would change when an editor
1032
+ * reordered two keys, which would make every prior observation read as
1033
+ * produced under a different contract. Ordering is normalised so the digest
1034
+ * answers "is this the same declaration?" and nothing else.
1035
+ * @param {unknown} value Any JSON value.
1036
+ * @returns {unknown} The same value, key-ordered.
1037
+ */
1038
+ function canonical(value) {
1039
+ if (Array.isArray(value)) return value.map(canonical);
1040
+ if (value === null || typeof value !== "object") return value;
1041
+ return Object.fromEntries(
1042
+ Object.keys(value)
1043
+ // An explicit comparator, never a bare `.sort()`: the default sorts by
1044
+ // UTF-16 code unit through `String()`, and a lint rule in this tree
1045
+ // rejects the bare form for exactly that reason.
1046
+ .sort((left, right) => left.localeCompare(right))
1047
+ .map(key => [key, canonical(value[key])])
1048
+ );
1049
+ }
1050
+
1051
+ /**
1052
+ * Digest of the gates block this run executed.
1053
+ *
1054
+ * Evidence is only reusable while the contract that produced it still holds. A
1055
+ * reader comparing digests can refuse a result recorded when the gate was
1056
+ * `optional` from satisfying a moment that now declares it `required` — which
1057
+ * is a stale-evidence hole that no timestamp closes.
1058
+ * @param {object|null} gates The gates block, or null when it was unreadable.
1059
+ * @returns {string|null} `sha256:<hex>`, or null when there was no block.
1060
+ */
1061
+ function configDigest(gates) {
1062
+ if (!gates) return null;
1063
+ const canonicalised = JSON.stringify(canonical(gates));
1064
+ return `sha256:${createHash("sha256").update(canonicalised).digest("hex")}`;
1065
+ }
1066
+
1067
+ /**
1068
+ * One revision from git, or null when git cannot answer.
1069
+ *
1070
+ * Null rather than a throw: a project without git — a container, an unpacked
1071
+ * tarball — still records everything else, and a subject field that says "not
1072
+ * known" is honest. What it must never do is guess.
1073
+ * @param {string} spec A rev-parse argument, e.g. `HEAD`.
1074
+ * @returns {string|null} The resolved object name.
1075
+ */
1076
+ function gitRev(spec) {
1077
+ try {
1078
+ const child = boundedSpawnSync("git", ["rev-parse", spec], {
1079
+ encoding: "utf8",
1080
+ stdio: ["ignore", "pipe", "ignore"],
1081
+ });
1082
+ if (child.error || child.status !== 0) return null;
1083
+ return String(child.stdout ?? "").trim() || null;
1084
+ } catch {
1085
+ // A killed `git` is not an answer about the tree, and this module's own
1086
+ // doctrine is that an unknown answer is recorded as unknown.
1087
+ return null;
1088
+ }
1089
+ }
1090
+
1091
+ /**
1092
+ * What this evidence is ABOUT — the binding that makes it non-transferable.
1093
+ *
1094
+ * `observed_at` alone is a timestamp, not a proof. Without a subject, a reader
1095
+ * cannot tell a `continuous:staging` result from a `pre-deploy:production`
1096
+ * one, or a result for the tree being released from one for a tree that never
1097
+ * shipped. Each field answers one of those questions, and the tree pair is
1098
+ * deliberately BOTH: two commits legitimately share a tree after a rebase, and
1099
+ * that is exactly the case where reuse is sound.
1100
+ * @param {object} options Inputs.
1101
+ * @param {string} options.moment The moment that was run.
1102
+ * @param {object|null} options.gates The gates block that was executed.
1103
+ * @returns {object} The subject binding.
1104
+ */
1105
+ function evidenceSubject({ moment, gates }) {
1106
+ const family = momentFamily(moment);
1107
+ const [, environment = null] = moment.split(":");
1108
+ return {
1109
+ repository: process.env.GITHUB_REPOSITORY ?? null,
1110
+ commit_sha: process.env.GITHUB_SHA ?? gitRev("HEAD"),
1111
+ tree_sha: gitRev("HEAD^{tree}"),
1112
+ ref: process.env.GITHUB_REF ?? null,
1113
+ moment,
1114
+ family,
1115
+ // `momentFamily` returns the moment itself when it takes no environment
1116
+ // suffix, so that comparison is the test for "this is a deploy family".
1117
+ environment: family === moment ? null : environment,
1118
+ config_digest: configDigest(gates),
1119
+ };
1120
+ }
1121
+
1122
+ /**
1123
+ * Which run produced this, so an auditor can go and read it.
1124
+ * @returns {object} The originating run, with nulls off CI.
1125
+ */
1126
+ function evidenceRun() {
1127
+ const id = process.env.GITHUB_RUN_ID ?? null;
1128
+ const server = process.env.GITHUB_SERVER_URL ?? null;
1129
+ const repository = process.env.GITHUB_REPOSITORY ?? null;
1130
+ return {
1131
+ id,
1132
+ attempt: process.env.GITHUB_RUN_ATTEMPT ?? null,
1133
+ workflow: process.env.GITHUB_WORKFLOW ?? null,
1134
+ job: process.env.GITHUB_JOB ?? null,
1135
+ actor: process.env.GITHUB_ACTOR ?? null,
1136
+ url:
1137
+ id && server && repository
1138
+ ? `${server}/${repository}/actions/runs/${id}`
1139
+ : null,
1140
+ };
1141
+ }
1142
+
1143
+ /**
1144
+ * One gate's outcome in the shipped `EVIDENCE_FIELDS` shape.
1145
+ *
1146
+ * The shape is `lisa-gates.mjs`'s, not a new one. That file has shipped
1147
+ * `EVIDENCE_FIELDS` and a `readEvidence` reader since the continuous moment
1148
+ * was added, with no producer anywhere — so the format already existed and the
1149
+ * only thing missing was something to write it. Inventing a second shape for
1150
+ * the same property is this repository's recurring defect.
1151
+ *
1152
+ * `work` is null and stays null until a prover-output parser exists. That is
1153
+ * not a shortcut: `readEvidence` demotes a `pass` with no work count to
1154
+ * `unknown` for any gate whose registry entry names one, so the conservative
1155
+ * value fails SAFE. A fabricated count would fail the other way.
1156
+ * @param {GateOutcome} outcome One resolved gate and its verdict.
1157
+ * @param {string} observedAt When the run that produced it began.
1158
+ * @returns {object} The gate's evidence record.
1159
+ */
1160
+ function gateEvidence(outcome, observedAt) {
1161
+ return {
1162
+ gate: outcome.id,
1163
+ status: EVIDENCE_STATUS_FOR[outcome.state] ?? "unknown",
1164
+ work: null,
1165
+ measures: {
1166
+ exit_code: outcome.code ?? null,
1167
+ state: outcome.state,
1168
+ detail: outcome.detail ?? null,
1169
+ diagnosis: outcome.diagnosis ?? null,
1170
+ },
1171
+ prover: { tool: outcome.command ?? null, version: null },
1172
+ observed_at: observedAt,
1173
+ max_age_minutes: null,
1174
+ level: outcome.level,
1175
+ label: outcome.label ?? outcome.id,
1176
+ };
1177
+ }
1178
+
1179
+ /**
1180
+ * The whole document one run of one moment records.
1181
+ *
1182
+ * `observed_at` is the run's START, not its end, and that is the conservative
1183
+ * direction on purpose: a freshness bound computed against it can only ever
1184
+ * judge the evidence OLDER than it truly is, so a bound errs toward `unknown`
1185
+ * rather than toward crediting a stale observation.
1186
+ * @param {object} options Inputs.
1187
+ * @param {string} options.moment The moment that was run.
1188
+ * @param {object|null} [options.gates] The gates block that was executed.
1189
+ * @param {string} options.verdict One of `EVIDENCE_VERDICT`.
1190
+ * @param {GateRun|null} [options.result] What `runGates` produced, if it ran.
1191
+ * @param {string} options.observedAt When the run began, ISO-8601.
1192
+ * @param {string} options.recordedAt When the document was built, ISO-8601.
1193
+ * @returns {object} The evidence envelope.
1194
+ */
1195
+ export function evidenceDocument({
1196
+ moment,
1197
+ gates = null,
1198
+ verdict,
1199
+ result = null,
1200
+ observedAt,
1201
+ recordedAt,
1202
+ }) {
1203
+ const observations = (result?.results ?? []).map(outcome =>
1204
+ gateEvidence(outcome, observedAt)
1205
+ );
1206
+ return {
1207
+ schema_version: EVIDENCE_SCHEMA_VERSION,
1208
+ kind: EVIDENCE_KIND,
1209
+ verdict,
1210
+ observed: observations.length,
1211
+ observed_at: observedAt,
1212
+ recorded_at: recordedAt,
1213
+ subject: evidenceSubject({ moment, gates }),
1214
+ run: evidenceRun(),
1215
+ gates: observations,
1216
+ };
1217
+ }
1218
+
1219
+ /**
1220
+ * Write the envelope where the caller asked for it.
1221
+ *
1222
+ * The return value is load-bearing rather than advisory: a caller that ignored
1223
+ * it would let a run which recorded NOTHING exit clean, and a missing record
1224
+ * that looks like a clean record is the failure this whole file refuses.
1225
+ * @param {string} path File to write.
1226
+ * @param {object} document The envelope.
1227
+ * @returns {boolean} Whether it was written.
1228
+ */
1229
+ function writeEvidence(path, document) {
1230
+ try {
1231
+ mkdirSync(dirname(path), { recursive: true });
1232
+ writeFileSync(path, `${JSON.stringify(document, null, 2)}\n`);
1233
+ return true;
1234
+ } catch (err) {
1235
+ console.error(`⚠️ Could not record gate evidence: ${err.message}`);
1236
+ console.error(
1237
+ " Nothing about this run was recorded, so this is NOT a pass."
1238
+ );
1239
+ return false;
1240
+ }
1241
+ }
1242
+
968
1243
  /**
969
1244
  * Read a `--name=<value>` flag from the argument list.
970
1245
  * @param {string[]} argv Arguments after the script name.
@@ -1057,13 +1332,53 @@ function main() {
1057
1332
  const argv = process.argv.slice(2);
1058
1333
  const moment = readFlag(argv, "moment");
1059
1334
  const coveragePath = readFlag(argv, "coverage");
1335
+ const evidencePath = readFlag(argv, "evidence");
1336
+ // Taken before anything runs. See `evidenceDocument`: a start stamp makes a
1337
+ // freshness bound err toward `unknown` rather than toward crediting a stale
1338
+ // observation, which is the only direction a gate may err in.
1339
+ const observedAt = new Date().toISOString();
1060
1340
  if (!moment) {
1061
1341
  console.error(
1062
- "usage: lisa-run-gates.mjs --moment=<moment> [--coverage=<file>]"
1342
+ "usage: lisa-run-gates.mjs --moment=<moment> [--coverage=<file>] " +
1343
+ "[--evidence=<file>]"
1063
1344
  );
1064
1345
  return EXIT.RUNNER_FAILED;
1065
1346
  }
1066
1347
 
1348
+ /**
1349
+ * Record this run, and refuse to report a verdict we could not record.
1350
+ *
1351
+ * Every exit path below goes through here, including the ones that prove
1352
+ * nothing, because a reader must be able to tell "ran and declared nothing"
1353
+ * from "never ran" — and a file's absence says both.
1354
+ *
1355
+ * A write failure returns RUNNER_FAILED even when a gate verdict was
1356
+ * already reached. The gate's own message is still printed; what the exit
1357
+ * code says is that the runner was asked to leave a record and did not, and
1358
+ * that is a fact about the runner rather than about the code.
1359
+ * @param {number} code The exit code this path would return.
1360
+ * @param {string} verdict One of `EVIDENCE_VERDICT`.
1361
+ * @param {object} [parts] The block that ran and what it produced.
1362
+ * @param {object|null} [parts.gates] The gates block.
1363
+ * @param {GateRun|null} [parts.result] What `runGates` produced.
1364
+ * @returns {number} The exit code, upgraded on a recording failure.
1365
+ */
1366
+ const settle = (code, verdict, parts = {}) => {
1367
+ if (!evidencePath) return code;
1368
+ const written = writeEvidence(
1369
+ evidencePath,
1370
+ evidenceDocument({
1371
+ moment,
1372
+ gates: parts.gates ?? null,
1373
+ verdict,
1374
+ result: parts.result ?? null,
1375
+ observedAt,
1376
+ recordedAt: new Date().toISOString(),
1377
+ })
1378
+ );
1379
+ return written ? code : EXIT.RUNNER_FAILED;
1380
+ };
1381
+
1067
1382
  let config;
1068
1383
  try {
1069
1384
  config = readGates();
@@ -1072,14 +1387,14 @@ function main() {
1072
1387
  `⚠️ Gate runner could not read configuration: ${err.message}`
1073
1388
  );
1074
1389
  console.error(" Nothing was proved by the gate registry at this moment.");
1075
- return EXIT.RUNNER_FAILED;
1390
+ return settle(EXIT.RUNNER_FAILED, EVIDENCE_VERDICT.RUNNER_FAILED);
1076
1391
  }
1077
1392
 
1078
1393
  // The gates BLOCK is the migration switch. Its absence means this project
1079
1394
  // has not adopted the registry, so the caller must run its hardcoded steps.
1080
1395
  if (!config.gates || Object.keys(config.gates).length === 0) {
1081
1396
  if (coveragePath) writeCoverage(coveragePath, []);
1082
- return EXIT.NO_GATES;
1397
+ return settle(EXIT.NO_GATES, EVIDENCE_VERDICT.NO_GATES);
1083
1398
  }
1084
1399
 
1085
1400
  // FAIL CLOSED ON A CONFIGURATION THE VALIDATOR REFUSES.
@@ -1115,7 +1430,9 @@ function main() {
1115
1430
  const blocking = problemsIn(declarationsAt({ gates: config.gates, moment }));
1116
1431
  if (blocking.length) {
1117
1432
  reportRefusal(moment, blocking, line => console.error(line));
1118
- return EXIT.BLOCKED;
1433
+ return settle(EXIT.BLOCKED, EVIDENCE_VERDICT.REFUSED, {
1434
+ gates: config.gates,
1435
+ });
1119
1436
  }
1120
1437
  const elsewhere = problemsIn(config.gates).filter(
1121
1438
  problem => !blocking.includes(problem)
@@ -1145,7 +1462,9 @@ function main() {
1145
1462
  coveredFloor({ gates: config.gates, moment, wired })
1146
1463
  )
1147
1464
  ) {
1148
- return EXIT.RUNNER_FAILED;
1465
+ return settle(EXIT.RUNNER_FAILED, EVIDENCE_VERDICT.RUNNER_FAILED, {
1466
+ gates: config.gates,
1467
+ });
1149
1468
  }
1150
1469
  if (missing.length) {
1151
1470
  console.log(
@@ -1167,7 +1486,9 @@ function main() {
1167
1486
  `(a level of "off" counts as a decision) to hand this moment to the ` +
1168
1487
  `registry.`
1169
1488
  );
1170
- return EXIT.NO_GATES;
1489
+ return settle(EXIT.NO_GATES, EVIDENCE_VERDICT.FELL_BACK, {
1490
+ gates: config.gates,
1491
+ });
1171
1492
  }
1172
1493
 
1173
1494
  console.log(`🚦 Gates at ${moment}:`);
@@ -1189,7 +1510,11 @@ function main() {
1189
1510
  if (result.total === 0) {
1190
1511
  console.log(` (the gates block declares nothing at ${moment})`);
1191
1512
  }
1192
- return result.blocked ? EXIT.BLOCKED : EXIT.PROVED;
1513
+ return settle(
1514
+ result.blocked ? EXIT.BLOCKED : EXIT.PROVED,
1515
+ result.blocked ? EVIDENCE_VERDICT.BLOCKED : EVIDENCE_VERDICT.PROVED,
1516
+ { gates: config.gates, result }
1517
+ );
1193
1518
  }
1194
1519
 
1195
1520
  // Through the shared helper, not a hand-rolled comparison: a guard that
@@ -8,7 +8,7 @@
8
8
  "prepare": "husky install || true",
9
9
  "test": "vitest run",
10
10
  "test:unit": "vitest run --exclude='**/integration/**'",
11
- "test:integration": "vitest run tests/integration",
11
+ "test:integration:lisa": "vitest run '.integration.' 'integration/'",
12
12
  "test:cov": "vitest run --coverage",
13
13
  "test:mutation": "node scripts/lisa-mutation.mjs",
14
14
  "test:watch": "vitest",
@@ -61,11 +61,19 @@
61
61
  "node": "22.21.1"
62
62
  },
63
63
  "scripts": {
64
+ "test:integration": "$npm_execpath run test:integration:lisa",
64
65
  "lint": "$npm_execpath run lint:lisa"
65
66
  }
66
67
  },
67
68
  "adopt": {
68
69
  "scripts": {
70
+ "test:integration": [
71
+ "vitest run '.integration.' 'integration/'",
72
+ "vitest run tests/integration",
73
+ "vitest run tests/integration --passWithNoTests",
74
+ "vitest run test/integration",
75
+ "NODE_ENV=test jest --testPathPatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\" --passWithNoTests"
76
+ ],
69
77
  "lint": [
70
78
  "oxlint && eslint . --quiet",
71
79
  "eslint . --quiet"
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA6mBjC,CAAC"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA8mBjC,CAAC"}
@@ -527,6 +527,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
527
527
  "0978ac24f28bf9f11230781d271997384009b1528ed61de523333e52a5a4cf57",
528
528
  "169d1ba136e4f413dfd8b1b9e296ded55442b083ec203ca5642295186d593cb9",
529
529
  "17a6bbf39e7de014d709e3d7f74d9b555316c4d57ab017ea8bfd88f5722de64c",
530
+ "23574bf396cadfaa1e8f8c59b70bca4ecebd145e23917a90d79ee2ded74f2b69",
530
531
  "235c541534fc0eca510135ac39b9fbd196965fbeb54d42a09fbf052da1c925cd",
531
532
  "242ac60aa8d77842e3704c5568b426084d9f2643ec9bce2a0601f66497835093",
532
533
  "2d166a07c9809800771c7f41e515bff8d66c23aeeae2838dd52d5f2547037422",
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAg5EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAylPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
1
+ {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAg5EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA4lPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -26,7 +26,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
26
26
  "all/copy-overwrite/scripts/lisa-lint-staged-preflight.mjs": "ce4bc224a102e3ac2bc29d8f2038eefd619129d4639c25954c93f05011f7f977",
27
27
  "all/copy-overwrite/scripts/lisa-postinstall.mjs": "d22fe47acf9a68828ca28b19b88e269bf535e77bc38952dec9f7a703269f1c44",
28
28
  "all/copy-overwrite/scripts/lisa-reconcile-policy.mjs": "5c6b8a6ff3010b11f78b70eda0e73e78e1155b634a781b8abec79e40ac286eb7",
29
- "all/copy-overwrite/scripts/lisa-run-gates.mjs": "59f78a0895c4d3c68a0b74ac879abfb3220f1866ee48b9540f70388d77292555",
29
+ "all/copy-overwrite/scripts/lisa-run-gates.mjs": "23574bf396cadfaa1e8f8c59b70bca4ecebd145e23917a90d79ee2ded74f2b69",
30
30
  "all/copy-overwrite/scripts/lisa-schema-validate.mjs": "8a1684f5c2b4d37fc782d2090273772814f7ad6c61e7ae5459163a1f28b7a5dc",
31
31
  "all/copy-overwrite/scripts/lisa-test-node.mjs": "31b338144af00e20e3de02202982846d7333433a9bbda76a8c77d50e6fdbc47b",
32
32
  "all/copy-overwrite/scripts/lisa-work-item.mjs": "04401ae05bf9464e6929180ffdfff80afc528a1df20733b032a0342252ca1d4a",
@@ -62,7 +62,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
62
62
  "cdk/deletions.json": "b1d07e463f52deaa5f9958060de40d369f4f256b898563efb83911abf39a62a5",
63
63
  "cdk/merge/.claude/settings.json": "6f938fdc9c808ee4dda9d605815788dda384197065aac6793c7549d8811a6224",
64
64
  "cdk/merge/.oxlintrc.json": "f7d248cf8a89561374d7e68e24aa780f4a6a523938475ad685f034ce0194d75c",
65
- "cdk/package-lisa/package.lisa.json": "8b008f6fe121bbe5b0253e28d859e2fa330b8564c1e027bc955a0f2668743a0f",
65
+ "cdk/package-lisa/package.lisa.json": "52b0dc333bdd298145df5b52753f1f4f44d7cbea1da5eb87f45a19b71fd6a7a4",
66
66
  "eslint-plugin-code-organization/README.md": "e70c9e262ce3a97e1f9fe1897ffa71e3d1b124f10486b90ead5d4a5252977826",
67
67
  "eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js": "27e8e2cdf9bae3c35c22f17407570a163cfe52bd848ec40f7f2f1068e97c10c9",
68
68
  "eslint-plugin-code-organization/index.js": "9be5ecb135bc30cf39a3371825e94f8a379d8339653297bd7e48c07624923c83",
@@ -149,7 +149,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
149
149
  "expo/github-rulesets/nightly-e2e-health.json": "af9556f52bbb04d303f557eb178d876d82348d15a991729b8a96fb1f06d5b03a",
150
150
  "expo/merge/.claude/settings.json": "e97b33d7ad86b71abba94ab957d725e34c3cafca455e92fba0b29ebabc3b73d1",
151
151
  "expo/merge/.oxlintrc.json": "95b3069256c0040be0ef1a5adae46d14687ad56fb18f473a653ba2de45d106bb",
152
- "expo/package-lisa/package.lisa.json": "3aff4fec3af67204dc32b60a2e6cd4be58ab9fba870c2cc863982fb0d3b7e282",
152
+ "expo/package-lisa/package.lisa.json": "1307eb2f18cde81b46ddf71409f11f91ae08078d8c24cf9585a04c589e6fc0b3",
153
153
  "harper-fabric/copy-contents/.prettierignore": "478c782f4c5611187e21584dfd5522e37fc636c5eb03394fea3db45321c6712c",
154
154
  "harper-fabric/copy-contents/gitignore": "d091c40fd0ea3068491f1be0d6510090ae872ca95d0d058ef4595d6492d13897",
155
155
  "harper-fabric/copy-overwrite/.github/workflows/ci.yml": "1fef0b72f890869e656dbe3b9463c83725ea8ca8e24e50b58d93c68502603fd0",
@@ -213,7 +213,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
213
213
  "nestjs/deletions.json": "037a64f96b76670326bc61921f4484e864e02c09786adabbd1cfdf886183cad5",
214
214
  "nestjs/merge/.claude/settings.json": "d0ce50361a1f3868d15728646e66b9e1cdb8373688eb22459adbdb176e342aca",
215
215
  "nestjs/merge/.oxlintrc.json": "1de29d135744df0258e8659ee0b684acf84e687bbefade51db0576813e6ff097",
216
- "nestjs/package-lisa/package.lisa.json": "e1adb6a1f2bed053330e8cf4812fbb4b8d5db9f926111cc3c8861fc4d018fcf7",
216
+ "nestjs/package-lisa/package.lisa.json": "e5fd414c53f8bab276505e8c72c78ae4a57055dd9cf79e1725a7e3634af690e2",
217
217
  "npm-package/create-only/.github/workflows/publish-to-npm.yml": "1d051007a328ba4f6c67a5e3123593921b823e0866c05343c4588a6156e9f593",
218
218
  "npm-package/package-lisa/package.lisa.json": "4a17f67b6ac09e239f4afb3cf71ecd42e1b6890164008aa8e654f3110b1d65fd",
219
219
  "oxlint/base.json": "8cbc563bdfbbaf455742cef24d33676f45b55baf1ea62b529018b2d112d70f8a",
@@ -1221,7 +1221,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1221
1221
  "typescript/github-rulesets/quality-checks.json": "3aa1c6dbc703ad2ecd87c6f7fdff1aae118696dba95c9795c2c954c6b8a444d9",
1222
1222
  "typescript/merge/.claude/settings.json": "834e6456cae81f45073bbbb08bf731fef043efb30cae2658cb4a59f17e66d165",
1223
1223
  "typescript/merge/.oxlintrc.json": "9504c20db80470c242c4ffe8cccad6951ed8141dfb5bf6503053e0b2712ab276",
1224
- "typescript/package-lisa/package.lisa.json": "3d35ae0f06db575e534bb12943084b5d563812d5ec40c309dc607f165ff4d168",
1224
+ "typescript/package-lisa/package.lisa.json": "3a90beda549bddfe8fdfe90b7e8f2eb03b7a9879f96b5bab782b84cc76acea49",
1225
1225
  "ui/README.md": "ee05dac69cbba5f74a4ff945e78afdd54bd62d26087a255799dbbfc943f52b45",
1226
1226
  "ui/index.html": "97db4b30d9168bf96db7fb0bbcf4b87fe175f415182fe58abf0026750c9db69c",
1227
1227
  });
@@ -7667,6 +7667,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7667
7667
  "tests/integration/coverage-scratch-debris.test.ts": true,
7668
7668
  "tests/integration/deletion-reference-guard.test.ts": true,
7669
7669
  "tests/integration/deploy-gate-blocks-release.test.ts": true,
7670
+ "tests/integration/deploy-moment-evidence.test.ts": true,
7670
7671
  "tests/integration/deploy-moment-runner.test.ts": true,
7671
7672
  "tests/integration/edit-time-copies-are-derived.test.ts": true,
7672
7673
  "tests/integration/edit-time-scripts-resolve-gates.test.ts": true,
@@ -8269,6 +8270,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8269
8270
  "tests/unit/scripts/lisa-reconcile-policy.test.ts": true,
8270
8271
  "tests/unit/scripts/lisa-ruleset-payload.test.ts": true,
8271
8272
  "tests/unit/scripts/lisa-run-gates-conditional-floor.test.ts": true,
8273
+ "tests/unit/scripts/lisa-run-gates-evidence.test.ts": true,
8272
8274
  "tests/unit/scripts/lisa-run-gates-fixtures.ts": true,
8273
8275
  "tests/unit/scripts/lisa-run-gates-floor.test.ts": true,
8274
8276
  "tests/unit/scripts/lisa-run-gates-invalid-config.test.ts": true,
@@ -8552,6 +8554,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8552
8554
  "tests/unit/strategies/monitor-threshold-compatibility.test.ts": true,
8553
8555
  "tests/unit/strategies/multi-repo-container-decomposition.test.ts": true,
8554
8556
  "tests/unit/strategies/not-established-section-contract.test.ts": true,
8557
+ "tests/unit/strategies/package-lisa-integration-script-layout.test.ts": true,
8555
8558
  "tests/unit/strategies/package-lisa-script-composition.test.ts": true,
8556
8559
  "tests/unit/strategies/package-lisa-script-report.test.ts": true,
8557
8560
  "tests/unit/strategies/package-lisa-version-pin.test.ts": true,