@codyswann/lisa 4.14.0 → 4.15.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/cli/doctor-two-channel-drift.d.ts.map +1 -1
- package/dist/cli/doctor-two-channel-drift.js +79 -19
- package/dist/cli/doctor-two-channel-drift.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +7 -2
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/health/deterministic.d.ts +3 -0
- package/dist/health/deterministic.d.ts.map +1 -1
- package/dist/health/deterministic.js +6 -0
- package/dist/health/deterministic.js.map +1 -1
- package/dist/health/ruleset-inspection.d.ts +14 -0
- package/dist/health/ruleset-inspection.d.ts.map +1 -1
- package/dist/health/ruleset-inspection.js +19 -8
- package/dist/health/ruleset-inspection.js.map +1 -1
- package/dist/health/ruleset-reach-inspection.d.ts +68 -0
- package/dist/health/ruleset-reach-inspection.d.ts.map +1 -0
- package/dist/health/ruleset-reach-inspection.js +209 -0
- package/dist/health/ruleset-reach-inspection.js.map +1 -0
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +31 -0
- package/plugins/lisa/skills/lisa-doctor/SKILL.md +31 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +31 -0
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +31 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +31 -0
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/skills/lisa-doctor/SKILL.md +31 -0
- package/scripts/lisa-github-rulesets.sh +149 -29
- package/scripts/lisa-ruleset-reach.mjs +512 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-two-channel-drift.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-two-channel-drift.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor-two-channel-drift.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-two-channel-drift.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA+E/C;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAmB5B;AAyHD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,WAAW,CAAC,CAsDtB"}
|
|
@@ -43,6 +43,7 @@ import { existsSync } from "node:fs";
|
|
|
43
43
|
import { readdir, readFile } from "node:fs/promises";
|
|
44
44
|
import * as path from "node:path";
|
|
45
45
|
import { fileURLToPath } from "node:url";
|
|
46
|
+
import { createDetectorRegistry } from "../detection/index.js";
|
|
46
47
|
/** Name rendered in the doctor report. */
|
|
47
48
|
const CHECK_NAME = "Two-channel delivery drift";
|
|
48
49
|
/** The ledger's location relative to the package root, in either tree layout. */
|
|
@@ -74,7 +75,11 @@ async function readLedger(ledgerPath) {
|
|
|
74
75
|
return { state: "absent" };
|
|
75
76
|
try {
|
|
76
77
|
const parsed = JSON.parse(await readFile(ledgerPath, "utf-8"));
|
|
77
|
-
return {
|
|
78
|
+
return {
|
|
79
|
+
state: "read",
|
|
80
|
+
couplings: parsed.couplings ?? [],
|
|
81
|
+
ratified: parsed.ratified ?? {},
|
|
82
|
+
};
|
|
78
83
|
}
|
|
79
84
|
catch (error) {
|
|
80
85
|
return {
|
|
@@ -118,9 +123,79 @@ function advisoryFor(coupling) {
|
|
|
118
123
|
? "Run `lisa apply` — the artifact is delivered on that channel and your tree is behind it."
|
|
119
124
|
: coupling.remedy === "adopt-the-artifact"
|
|
120
125
|
? "Lisa writes this artifact ONCE, at scaffold time, and never refreshes it — no version bump brings it. Copy it in from the Lisa package's delivery lane and commit it."
|
|
121
|
-
: "Lisa ships no such artifact. Author it in your own tree, or
|
|
126
|
+
: "Lisa ships no such artifact. Author it in your own tree, or declare the governing named gate `off` in `.lisa.config.json` so the decision is explicit and auditable.";
|
|
122
127
|
return ` - \`${coupling.workflow}\` reads \`${coupling.path}\`, which your tree does not have. ${coupling.detail} ${step}`;
|
|
123
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Whether at least one delivery lane can run for the target project.
|
|
131
|
+
* Couplings without lanes are still relevant: they are precisely the cases
|
|
132
|
+
* where no generated lane currently delivers the caller-tree artifact.
|
|
133
|
+
* @param coupling - Ledger coupling to classify
|
|
134
|
+
* @param activeTypes - Detected project types, including expanded parents
|
|
135
|
+
* @returns True when the coupling applies to this target
|
|
136
|
+
*/
|
|
137
|
+
function appliesToProject(coupling, activeTypes) {
|
|
138
|
+
if (coupling.lanes === undefined || coupling.lanes.length === 0)
|
|
139
|
+
return true;
|
|
140
|
+
return coupling.lanes.some(lane => {
|
|
141
|
+
const [projectType] = lane.split("/", 1);
|
|
142
|
+
return projectType === "all" || activeTypes.has(projectType ?? "");
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Select caller-tree couplings that can apply to this target.
|
|
147
|
+
* @param targetPath - Project path to inspect
|
|
148
|
+
* @param callers - Live reusable workflow names
|
|
149
|
+
* @param couplings - Couplings from the shipped ledger
|
|
150
|
+
* @returns Applicable caller-tree couplings
|
|
151
|
+
*/
|
|
152
|
+
async function applicableCouplings(targetPath, callers, couplings) {
|
|
153
|
+
const detectorRegistry = createDetectorRegistry();
|
|
154
|
+
const activeTypes = new Set(detectorRegistry.expandAndOrderTypes(await detectorRegistry.detectAll(targetPath)));
|
|
155
|
+
return couplings.filter(coupling => callers.includes(coupling.workflow) &&
|
|
156
|
+
coupling.verdict !== "package-backed" &&
|
|
157
|
+
appliesToProject(coupling, activeTypes));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Summarize what was inspected, including accepted ledger exceptions.
|
|
161
|
+
* @param relevant - Applicable couplings
|
|
162
|
+
* @param callers - Live reusable workflow names
|
|
163
|
+
* @param ratifiedCount - Number covered by a ledger ratification
|
|
164
|
+
* @returns Human-readable inspection summary
|
|
165
|
+
*/
|
|
166
|
+
function inspectionSummary(relevant, callers, ratifiedCount) {
|
|
167
|
+
const exceptions = ratifiedCount > 0
|
|
168
|
+
? ` Honored ${ratifiedCount} ledger-ratified exception(s).`
|
|
169
|
+
: "";
|
|
170
|
+
return `Inspected ${relevant.length} coupling(s) across ${callers.length} live caller(s) (${callers.join(", ")}).${exceptions}`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Turn applicable couplings into the final doctor result.
|
|
174
|
+
* @param targetPath - Project path to inspect
|
|
175
|
+
* @param callers - Live reusable workflow names
|
|
176
|
+
* @param relevant - Applicable caller-tree couplings
|
|
177
|
+
* @param ratifications - Accepted source-only exceptions by coupling key
|
|
178
|
+
* @returns The doctor check result
|
|
179
|
+
*/
|
|
180
|
+
function evaluateCouplings(targetPath, callers, relevant, ratifications) {
|
|
181
|
+
const ratified = relevant.filter(coupling => ratifications[coupling.key] !== undefined);
|
|
182
|
+
const missing = relevant.filter(coupling => ratifications[coupling.key] === undefined &&
|
|
183
|
+
!existsSync(path.join(targetPath, coupling.path)));
|
|
184
|
+
const inspected = inspectionSummary(relevant, callers, ratified.length);
|
|
185
|
+
if (missing.length === 0) {
|
|
186
|
+
return {
|
|
187
|
+
name: CHECK_NAME,
|
|
188
|
+
status: "ok",
|
|
189
|
+
detail: `${inspected} Every applicable, unratified caller-tree artifact those workflows read is present, so both halves are in step.`,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
const unrestorable = missing.filter(coupling => UNRESTORABLE.has(coupling.verdict));
|
|
193
|
+
return {
|
|
194
|
+
name: CHECK_NAME,
|
|
195
|
+
status: unrestorable.length > 0 ? "fail" : "warn",
|
|
196
|
+
detail: `${inspected} ${missing.length} of them read a caller-tree artifact this checkout does not have — the workflow half arrived at \`@main\` and the artifact half did not:\n${missing.map(advisoryFor).join("\n")}`,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
124
199
|
/**
|
|
125
200
|
* Report caller-tree artifacts the project's live `@main` callers need.
|
|
126
201
|
* @param targetPath - Project path to inspect
|
|
@@ -169,22 +244,7 @@ export async function checkTwoChannelDrift(targetPath, ledgerPath = defaultLedge
|
|
|
169
244
|
"cannot legitimately be empty.",
|
|
170
245
|
};
|
|
171
246
|
}
|
|
172
|
-
const relevant =
|
|
173
|
-
|
|
174
|
-
const inspected = `Inspected ${relevant.length} coupling(s) across ${callers.length} live ` +
|
|
175
|
-
`caller(s) (${callers.join(", ")}).`;
|
|
176
|
-
if (missing.length === 0) {
|
|
177
|
-
return {
|
|
178
|
-
name: CHECK_NAME,
|
|
179
|
-
status: "ok",
|
|
180
|
-
detail: `${inspected} Every caller-tree artifact those workflows read is present, so both halves are in step.`,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
const unrestorable = missing.filter(coupling => UNRESTORABLE.has(coupling.verdict));
|
|
184
|
-
return {
|
|
185
|
-
name: CHECK_NAME,
|
|
186
|
-
status: unrestorable.length > 0 ? "fail" : "warn",
|
|
187
|
-
detail: `${inspected} ${missing.length} of them read a caller-tree artifact this checkout does not have — the workflow half arrived at \`@main\` and the artifact half did not:\n${missing.map(advisoryFor).join("\n")}`,
|
|
188
|
-
};
|
|
247
|
+
const relevant = await applicableCouplings(targetPath, callers, ledger.couplings);
|
|
248
|
+
return evaluateCouplings(targetPath, callers, relevant, ledger.ratified);
|
|
189
249
|
}
|
|
190
250
|
//# sourceMappingURL=doctor-two-channel-drift.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-two-channel-drift.js","sourceRoot":"","sources":["../../src/cli/doctor-two-channel-drift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-two-channel-drift.js","sourceRoot":"","sources":["../../src/cli/doctor-two-channel-drift.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,
|
|
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,CAo6EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAusPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -527,7 +527,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
527
527
|
"plugins/src/base/skills/lisa-detect-tooling/SKILL.md": "6ea2b1404d5c27f8a5bec8c90ad35ed0124789b70c091869455f538a2a9debbe",
|
|
528
528
|
"plugins/src/base/skills/lisa-detect-tooling/scripts/commands.mjs": "e28bd61fdde4a336b56ae3395423026943a5816015719d31d04f0d5a0ab50eec",
|
|
529
529
|
"plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs": "d9419814fc04c935bd7e320e85b1977c9bfc9275d9ea5fb557002ad438ee7925",
|
|
530
|
-
"plugins/src/base/skills/lisa-doctor/SKILL.md": "
|
|
530
|
+
"plugins/src/base/skills/lisa-doctor/SKILL.md": "fdb5ca374e8186e9599e5403d7c74439d11396066faede25102a604b4e915e61",
|
|
531
531
|
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "95cfbb4de8050e1e0ec3481b33a1231fa73fadfff956aa63fdab4663aa37558c",
|
|
532
532
|
"plugins/src/base/skills/lisa-epic-triage/SKILL.md": "d02760411249bddbd396f283191fe3e82bb7b95bf9393a19a7025dc5a57c3ab7",
|
|
533
533
|
"plugins/src/base/skills/lisa-evaluation-suite/SKILL.md": "96b5c2091ccd22a565935a7b0b917f67998881b81055ce3e4d518319472eac8b",
|
|
@@ -1136,11 +1136,12 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1136
1136
|
"scripts/lisa-github-environments.sh": "0a76e92f108519abaf3e29991299ec3b0db20ea533e69e6d2a53d802dba9c370",
|
|
1137
1137
|
"scripts/lisa-github-repo-settings.sh": "4afbccdfb08c62ba13afee42ec8561a28facf87c61f6f4b80000115328364d54",
|
|
1138
1138
|
"scripts/lisa-github-repo-setup.sh": "4717873e339b3e615d0bf22b4cb290b3575df5aba8c3639dc0d3bebc23abf651",
|
|
1139
|
-
"scripts/lisa-github-rulesets.sh": "
|
|
1139
|
+
"scripts/lisa-github-rulesets.sh": "a5b81fe09266f1daf181b8031c2b73fa0fd6206a9e7299d42eaa12766fbd51fb",
|
|
1140
1140
|
"scripts/lisa-mutation.mjs": "74603e61f493d700318feb862f61ee1653430700b5edf232e70241ccdedac587",
|
|
1141
1141
|
"scripts/lisa-remote-env/session-start.sh": "cb63d08b14ab7aa2d405e6770e0cf7db5d6588ae1dcb924ea6224b026fcff496",
|
|
1142
1142
|
"scripts/lisa-remote-env/setup.sh": "c30d98a5645f033fc1d3a723043691b9ad997ae5666df539ff6aa19c563431b2",
|
|
1143
1143
|
"scripts/lisa-ruleset-payload.mjs": "3e10b5a4c113e3aa895c6a09f063045eb198dbdabb11a00be87bea1477c91fbb",
|
|
1144
|
+
"scripts/lisa-ruleset-reach.mjs": "e51b12092062379e7317b368c89a789e2067ec302388e557ea84a29a35ffc238",
|
|
1144
1145
|
"scripts/lisa-update-local.sh": "c811f9e10dbcb38499a9791c1ae9051460b347051d04a1d2046925bab9a53c96",
|
|
1145
1146
|
"scripts/lisa-work-item.mjs": "51081847e980f314a764c2e50a7a121b1ced9ef4b980f33898057de4c7b852e6",
|
|
1146
1147
|
"scripts/materialize-copy-overwrite.mjs": "096271af0377b1ecd2725632973793549310a437fc3789979a71067b09ae2fe6",
|
|
@@ -7154,6 +7155,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7154
7155
|
"scripts/lisa-remote-env/session-start.sh": true,
|
|
7155
7156
|
"scripts/lisa-remote-env/setup.sh": true,
|
|
7156
7157
|
"scripts/lisa-ruleset-payload.mjs": true,
|
|
7158
|
+
"scripts/lisa-ruleset-reach.mjs": true,
|
|
7157
7159
|
"scripts/lisa-update-local.sh": true,
|
|
7158
7160
|
"scripts/lisa-work-item.mjs": true,
|
|
7159
7161
|
"scripts/materialize-copy-overwrite.mjs": true,
|
|
@@ -7478,6 +7480,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7478
7480
|
"src/health/project-probes.ts": true,
|
|
7479
7481
|
"src/health/read-only-fs.ts": true,
|
|
7480
7482
|
"src/health/ruleset-inspection.ts": true,
|
|
7483
|
+
"src/health/ruleset-reach-inspection.ts": true,
|
|
7481
7484
|
"src/health/storage.ts": true,
|
|
7482
7485
|
"src/health/strict-validation.ts": true,
|
|
7483
7486
|
"src/health/template-inspection.ts": true,
|
|
@@ -8150,6 +8153,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8150
8153
|
"tests/unit/health/drift-tickets.test.ts": true,
|
|
8151
8154
|
"tests/unit/health/gitignore.test.ts": true,
|
|
8152
8155
|
"tests/unit/health/package-surfaces.test.ts": true,
|
|
8156
|
+
"tests/unit/health/ruleset-reach-inspection.test.ts": true,
|
|
8153
8157
|
"tests/unit/health/storage.test.ts": true,
|
|
8154
8158
|
"tests/unit/helpers/bounded-bash.test.ts": true,
|
|
8155
8159
|
"tests/unit/helpers/bounded-exec-file-sync.test.ts": true,
|
|
@@ -8370,6 +8374,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8370
8374
|
"tests/unit/scripts/lisa-reconcile-policy-verdicts.test.ts": true,
|
|
8371
8375
|
"tests/unit/scripts/lisa-reconcile-policy.test.ts": true,
|
|
8372
8376
|
"tests/unit/scripts/lisa-ruleset-payload.test.ts": true,
|
|
8377
|
+
"tests/unit/scripts/lisa-ruleset-reach.test.ts": true,
|
|
8373
8378
|
"tests/unit/scripts/lisa-run-gates-conditional-floor.test.ts": true,
|
|
8374
8379
|
"tests/unit/scripts/lisa-run-gates-counts.test.ts": true,
|
|
8375
8380
|
"tests/unit/scripts/lisa-run-gates-envelope.test.ts": true,
|