@codyswann/lisa 4.34.15 → 4.34.17
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/all/copy-overwrite/scripts/lib/gate-failure-diagnosis.mjs +3 -5
- package/all/copy-overwrite/scripts/lisa-hooks/block-direct-issue-create.sh +20 -3
- package/all/copy-overwrite/scripts/lisa-hooks/block-managed-file-edits.sh +33 -8
- package/all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh +49 -4
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +1 -1
- package/dist/codex/scripts/block-no-verify.sh +49 -4
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +18 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +17 -14
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/opencode/plugin-templates/block-no-verify.sh +49 -4
- package/expo/copy-overwrite/scripts/check-lighthouse-details.mjs +13 -7
- package/package.json +4 -4
- 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-drive-pr-to-merge/SKILL.md +90 -0
- package/plugins/lisa/hooks/block-direct-issue-create.sh +20 -3
- package/plugins/lisa/hooks/block-managed-file-edits.sh +33 -8
- package/plugins/lisa/hooks/block-no-verify.agy.sh +49 -4
- package/plugins/lisa/hooks/block-no-verify.sh +49 -4
- package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +90 -0
- package/plugins/lisa-agy/hooks/block-direct-issue-create.sh +20 -3
- package/plugins/lisa-agy/hooks/block-no-verify.agy.sh +49 -4
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +90 -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/hooks/block-direct-issue-create.sh +20 -3
- package/plugins/lisa-copilot/hooks/block-managed-file-edits.sh +33 -8
- package/plugins/lisa-copilot/hooks/block-no-verify.sh +49 -4
- package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +90 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/block-direct-issue-create.sh +20 -3
- package/plugins/lisa-cursor/hooks/block-managed-file-edits.sh +33 -8
- package/plugins/lisa-cursor/hooks/block-no-verify.sh +49 -4
- package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +90 -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/hooks/block-direct-issue-create.sh +20 -3
- package/plugins/src/base/hooks/block-managed-file-edits.sh +33 -8
- package/plugins/src/base/hooks/block-no-verify.agy.sh +49 -4
- package/plugins/src/base/hooks/block-no-verify.sh +49 -4
- package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +90 -0
- package/rails/create-only/.github/workflows/deploy.yml +30 -0
- package/typescript/copy-overwrite/.claude/hooks/worktree-create.sh +3 -1
- package/typescript/copy-overwrite/scripts/lisa-mutation.mjs +14 -54
|
@@ -197,46 +197,6 @@ export const OUTCOMES = Object.freeze({
|
|
|
197
197
|
noFloorApplied: "mutation-gate: no-floor-applied",
|
|
198
198
|
});
|
|
199
199
|
|
|
200
|
-
/**
|
|
201
|
-
* The outcomes under which Stryker generated mutants and produced a score.
|
|
202
|
-
*
|
|
203
|
-
* THE POINT OF #3668. Every other outcome in {@link OUTCOMES} ends a run that
|
|
204
|
-
* MEASURED NOTHING, and until this set existed the exit-0 members of that group
|
|
205
|
-
* were indistinguishable from a real pass at the only layer a merge decision
|
|
206
|
-
* consults: `🔍 Quality Checks / 🧬 Mutation Testing Gate` printed `pass` for a
|
|
207
|
-
* pull request no mutant had touched. Measured on #3664 — a 400-line change to
|
|
208
|
-
* a shipped guard script, `nothing-to-mutate`, `pass`.
|
|
209
|
-
*
|
|
210
|
-
* The file said so itself, above {@link OUTCOMES}, and had for months: "both
|
|
211
|
-
* exit 0, and only the marker says which one happened." The marker lives in a
|
|
212
|
-
* log; a log is not a control. This set is what lets the workflow render the
|
|
213
|
-
* difference.
|
|
214
|
-
*
|
|
215
|
-
* MEMBERSHIP IS THE STRYKER RUN, not the verdict. `scoped` and `wholeList` are
|
|
216
|
-
* the two outcomes that carry a `reportRun`, so they are the two under which
|
|
217
|
-
* mutants existed — whether the score then cleared the floor or not is a
|
|
218
|
-
* different question, answered by the exit code. A run that measured and FAILED
|
|
219
|
-
* is still a run that measured.
|
|
220
|
-
*/
|
|
221
|
-
export const MEASURED_OUTCOMES = Object.freeze([
|
|
222
|
-
OUTCOMES.scoped,
|
|
223
|
-
OUTCOMES.wholeList,
|
|
224
|
-
]);
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Whether an outcome means mutants were generated against this change.
|
|
228
|
-
*
|
|
229
|
-
* An unknown marker answers `false`, and that direction is deliberate: a new
|
|
230
|
-
* outcome added without being classified must not inherit "measured". Failing
|
|
231
|
-
* closed here costs a `skipping` row on a run that did measure; failing open
|
|
232
|
-
* costs exactly the false green this issue is about.
|
|
233
|
-
*
|
|
234
|
-
* @param {string} outcome - One {@link OUTCOMES} marker
|
|
235
|
-
* @returns {boolean} True when Stryker produced mutants
|
|
236
|
-
*/
|
|
237
|
-
export const measuredAnything = outcome =>
|
|
238
|
-
MEASURED_OUTCOMES.includes(String(outcome));
|
|
239
|
-
|
|
240
200
|
/**
|
|
241
201
|
* Publishes the outcome where the workflow can render it, then returns the code.
|
|
242
202
|
*
|
|
@@ -259,16 +219,17 @@ export const measuredAnything = outcome =>
|
|
|
259
219
|
*
|
|
260
220
|
* @param {string} outcome - The {@link OUTCOMES} marker this run ended on
|
|
261
221
|
* @param {number} code - The exit code to return unchanged
|
|
222
|
+
* @param {boolean} [measured] - Whether this concrete run produced a score
|
|
262
223
|
* @param {NodeJS.ProcessEnv} [env] - Environment, injectable for tests
|
|
263
224
|
* @returns {number} `code`, unchanged
|
|
264
225
|
*/
|
|
265
|
-
export const finish = (outcome, code, env = process.env) => {
|
|
226
|
+
export const finish = (outcome, code, measured = false, env = process.env) => {
|
|
266
227
|
const target = env.GITHUB_OUTPUT;
|
|
267
228
|
if (target === undefined || target === "") return code;
|
|
268
229
|
try {
|
|
269
230
|
fs.appendFileSync(
|
|
270
231
|
target,
|
|
271
|
-
`mutation_outcome=${outcome}\nmutation_measured=${
|
|
232
|
+
`mutation_outcome=${outcome}\nmutation_measured=${measured === true}\n`
|
|
272
233
|
);
|
|
273
234
|
} catch (error) {
|
|
274
235
|
console.error(
|
|
@@ -2107,10 +2068,10 @@ export const WHOLE_LIST_FLAG = "--all";
|
|
|
2107
2068
|
* measured, printed, and — when it is what carried the run over the floor —
|
|
2108
2069
|
* failed on. See {@link timeoutAccounting}.
|
|
2109
2070
|
* @param {string} cwd - Project root.
|
|
2110
|
-
* @param {{code: number, output: string|null}} result - From `runStryker`.
|
|
2111
|
-
* @returns {number} The exit code
|
|
2071
|
+
* @param {{code: number, output: string|null, killedBy?: string}} result - From `runStryker`.
|
|
2072
|
+
* @returns {{code: number, measured: boolean}} The exit code and whether a score was produced.
|
|
2112
2073
|
*/
|
|
2113
|
-
const reportRun = (cwd, result) => {
|
|
2074
|
+
export const reportRun = (cwd, result) => {
|
|
2114
2075
|
const accounting = accountForTimeouts(result.output, cwd);
|
|
2115
2076
|
if (result.killedBy === CHILD_DEADLINE) {
|
|
2116
2077
|
// A gate that ran and failed measured something; a gate that was KILLED
|
|
@@ -2119,7 +2080,7 @@ const reportRun = (cwd, result) => {
|
|
|
2119
2080
|
// arm comes before the classification below because that reads Stryker's
|
|
2120
2081
|
// transcript, and a killed run's transcript stops wherever the kill landed.
|
|
2121
2082
|
console.error(childDeadlineBlock(resolveChildDeadline()));
|
|
2122
|
-
return result.code;
|
|
2083
|
+
return { code: result.code, measured: false };
|
|
2123
2084
|
}
|
|
2124
2085
|
if (result.code !== 0) {
|
|
2125
2086
|
// Stryker's own verdict stands; what is added is WHICH failure it was. The
|
|
@@ -2135,14 +2096,14 @@ const reportRun = (cwd, result) => {
|
|
|
2135
2096
|
// that DID produce one still gets the honest recomputation: a run under the
|
|
2136
2097
|
// floor is under it by more than Stryker said.
|
|
2137
2098
|
if (accounting.measured) console.error(accounting.message);
|
|
2138
|
-
return result.code;
|
|
2099
|
+
return { code: result.code, measured: accounting.measured };
|
|
2139
2100
|
}
|
|
2140
2101
|
if (accounting.failed) {
|
|
2141
2102
|
console.error(accounting.message);
|
|
2142
|
-
return 1;
|
|
2103
|
+
return { code: 1, measured: accounting.measured };
|
|
2143
2104
|
}
|
|
2144
2105
|
console.log(accounting.message);
|
|
2145
|
-
return 0;
|
|
2106
|
+
return { code: 0, measured: accounting.measured };
|
|
2146
2107
|
};
|
|
2147
2108
|
|
|
2148
2109
|
/**
|
|
@@ -2216,7 +2177,8 @@ export const runGate = (cwd = process.cwd(), argv = []) => {
|
|
|
2216
2177
|
`🧬 ${OUTCOMES.wholeList} — Stryker over every pattern in ` +
|
|
2217
2178
|
`${declaration.source}, with no diff scoping.`
|
|
2218
2179
|
);
|
|
2219
|
-
|
|
2180
|
+
const reported = reportRun(cwd, runStryker(cwd, []));
|
|
2181
|
+
return finish(OUTCOMES.wholeList, reported.code, reported.measured);
|
|
2220
2182
|
}
|
|
2221
2183
|
|
|
2222
2184
|
const base = resolveDiffBase(cwd, since);
|
|
@@ -2324,10 +2286,8 @@ export const runGate = (cwd = process.cwd(), argv = []) => {
|
|
|
2324
2286
|
);
|
|
2325
2287
|
for (const file of scope.selected) console.log(` • ${file}`);
|
|
2326
2288
|
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
reportRun(cwd, runStryker(cwd, scope.selected))
|
|
2330
|
-
);
|
|
2289
|
+
const reported = reportRun(cwd, runStryker(cwd, scope.selected));
|
|
2290
|
+
return finish(OUTCOMES.scoped, reported.code, reported.measured);
|
|
2331
2291
|
};
|
|
2332
2292
|
|
|
2333
2293
|
/**
|