@codyswann/lisa 3.45.6 → 3.45.8
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/lisa-floor-collisions.mjs +50 -3
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +5 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +9 -9
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/migrations/ensure-playwright-dedicated-caller.d.ts +77 -0
- package/dist/migrations/ensure-playwright-dedicated-caller.d.ts.map +1 -0
- package/dist/migrations/ensure-playwright-dedicated-caller.js +370 -0
- package/dist/migrations/ensure-playwright-dedicated-caller.js.map +1 -0
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +3 -0
- package/dist/migrations/index.js.map +1 -1
- package/expo/create-only/.github/workflows/nightly-e2e-report.yml +2 -2
- 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-agy/plugin.json +1 -1
- 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-cursor/.claude-plugin/plugin.json +1 -1
- 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/typescript/copy-overwrite/.github/GITHUB_ACTIONS.md +5 -6
- package/typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs +23 -16
- package/harper-fabric/copy-overwrite/.github/dependabot.yml +0 -47
- package/typescript/copy-overwrite/.github/dependabot.yml +0 -43
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { Migration, MigrationContext, MigrationResult } from "./migration.interface.js";
|
|
2
|
+
/**
|
|
3
|
+
* Inputs `playwright-e2e.yml` declares.
|
|
4
|
+
*
|
|
5
|
+
* Hardcoded rather than read from `ctx.lisaDir`, because `.github/` is not in
|
|
6
|
+
* the npm `files` allowlist — an installed Lisa carries no copy of the reusable
|
|
7
|
+
* workflow to parse. Exported so a test can pin it against the real workflow:
|
|
8
|
+
* an input added or renamed there would otherwise silently turn every caller
|
|
9
|
+
* passing it into a "diverged" verdict that nobody retrofits.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DECLARED_INPUTS: ReadonlySet<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Migration: repoint a project's seeded Playwright caller at the dedicated
|
|
14
|
+
* reusable workflow.
|
|
15
|
+
*
|
|
16
|
+
* `expo/create-only/.github/workflows/playwright-e2e.yml` is create-only, so
|
|
17
|
+
* `src/core/lisa.ts` skips it whenever the destination exists. That is correct —
|
|
18
|
+
* it is why a project can customise the file — but it means editing the template
|
|
19
|
+
* ships the change to greenfield projects ONLY. "Fixed upstream" and "a version
|
|
20
|
+
* bump will carry it" are independent claims for anything in that lane, and this
|
|
21
|
+
* file was edited upstream with no path for the projects already holding a copy.
|
|
22
|
+
*
|
|
23
|
+
* The stale copy calls the shared quality workflow and suppresses the two dozen
|
|
24
|
+
* jobs it does not want by NAME. That inversion goes stale silently: a job added
|
|
25
|
+
* to the shared workflow is absent from every hand-maintained list, so it RUNS on
|
|
26
|
+
* a nightly whose whole point is that it runs one suite.
|
|
27
|
+
*
|
|
28
|
+
* Unlike most `ensure-*` migrations this one REWRITES a file the host owns, so it
|
|
29
|
+
* rewrites only a shape it recognises:
|
|
30
|
+
*
|
|
31
|
+
* - Exactly one Lisa caller in the file, and it targets the shared quality
|
|
32
|
+
* workflow.
|
|
33
|
+
* - Every input it passes, the retired `skip_jobs` aside, is one the dedicated
|
|
34
|
+
* workflow declares.
|
|
35
|
+
*
|
|
36
|
+
* Anything else is reported and left exactly as written. A silent fork is the
|
|
37
|
+
* harm to avoid, and so is a silent no-op that leaves an operator believing the
|
|
38
|
+
* retrofit happened — so both outcomes are logged.
|
|
39
|
+
*/
|
|
40
|
+
export declare class EnsurePlaywrightDedicatedCallerMigration implements Migration {
|
|
41
|
+
readonly name = "ensure-playwright-dedicated-caller";
|
|
42
|
+
readonly description = "Repoint a seeded Playwright caller from the shared quality workflow at the dedicated one";
|
|
43
|
+
/**
|
|
44
|
+
* Applies when the caller is stale, or diverged and worth reporting.
|
|
45
|
+
* @param ctx - Migration context
|
|
46
|
+
* @returns True when there is something to do or something to say
|
|
47
|
+
*/
|
|
48
|
+
applies(ctx: MigrationContext): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Rewrite a stale caller, or report a diverged one without touching it.
|
|
51
|
+
* @param ctx - Migration context
|
|
52
|
+
* @returns Result describing the action taken
|
|
53
|
+
*/
|
|
54
|
+
apply(ctx: MigrationContext): Promise<MigrationResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Report a caller this migration declines to rewrite.
|
|
57
|
+
* @param ctx - Migration context
|
|
58
|
+
* @param plan - The classification that produced the decision
|
|
59
|
+
* @returns A skipped result carrying the operator-readable reason
|
|
60
|
+
*/
|
|
61
|
+
private report;
|
|
62
|
+
/**
|
|
63
|
+
* Produce the rewritten caller lines.
|
|
64
|
+
* @param plan - The classification of the current file
|
|
65
|
+
* @param verbs - Facade verbs the project declares
|
|
66
|
+
* @returns The new file contents, line by line
|
|
67
|
+
*/
|
|
68
|
+
private rewrite;
|
|
69
|
+
/**
|
|
70
|
+
* Summarize the rewrite for the operator standing outside the factory.
|
|
71
|
+
* @param plan - The classification of the current file
|
|
72
|
+
* @param verbs - Facade verbs the project declares
|
|
73
|
+
* @returns A one-line summary a non-technical reader can act on
|
|
74
|
+
*/
|
|
75
|
+
private describe;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=ensure-playwright-dedicated-caller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-playwright-dedicated-caller.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-playwright-dedicated-caller.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AA2BlC;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAa9C,CAAC;AAwQH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,wCAAyC,YAAW,SAAS;IACxE,QAAQ,CAAC,IAAI,wCAAwC;IACrD,QAAQ,CAAC,WAAW,8FACyE;IAE7F;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA+B5D;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAMd;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IA+Bf;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAUjB"}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import * as fse from "fs-extra";
|
|
4
|
+
import { readJsonOrNull } from "../utils/json-utils.js";
|
|
5
|
+
/** The seeded caller this migration repairs. */
|
|
6
|
+
const CALLER_FILE = path.join(".github", "workflows", "playwright-e2e.yml");
|
|
7
|
+
/** Any job-level caller pointing at a Lisa reusable workflow. */
|
|
8
|
+
const LISA_CALLER = /^\s*uses:\s*CodySwannGT\/lisa\/\.github\/workflows\/(\S+?)\.yml@(\S+)\s*$/u;
|
|
9
|
+
/** The reusable workflow a repaired caller must target. */
|
|
10
|
+
const DEDICATED_WORKFLOW = "playwright-e2e";
|
|
11
|
+
/** The reusable workflow a stale caller still targets. */
|
|
12
|
+
const STALE_WORKFLOW = "quality";
|
|
13
|
+
/** The `with:` block header inside a caller job. */
|
|
14
|
+
const WITH_HEADER = /^ {4}with:\s*$/u;
|
|
15
|
+
/** One input key inside a `with:` block. Continuation lines indent deeper. */
|
|
16
|
+
const WITH_KEY = /^ {6}(\w+):(.*)$/u;
|
|
17
|
+
/** A comment line at input indent — explanatory prose attached to the key below. */
|
|
18
|
+
const WITH_COMMENT = /^ {6}#/u;
|
|
19
|
+
/** The input a stale caller passes that the dedicated workflow does not declare. */
|
|
20
|
+
const RETIRED_INPUT = "skip_jobs";
|
|
21
|
+
/**
|
|
22
|
+
* Inputs `playwright-e2e.yml` declares.
|
|
23
|
+
*
|
|
24
|
+
* Hardcoded rather than read from `ctx.lisaDir`, because `.github/` is not in
|
|
25
|
+
* the npm `files` allowlist — an installed Lisa carries no copy of the reusable
|
|
26
|
+
* workflow to parse. Exported so a test can pin it against the real workflow:
|
|
27
|
+
* an input added or renamed there would otherwise silently turn every caller
|
|
28
|
+
* passing it into a "diverged" verdict that nobody retrofits.
|
|
29
|
+
*/
|
|
30
|
+
export const DECLARED_INPUTS = new Set([
|
|
31
|
+
"node_version",
|
|
32
|
+
"package_manager",
|
|
33
|
+
"working_directory",
|
|
34
|
+
"moment",
|
|
35
|
+
"playwright_setup_command",
|
|
36
|
+
"playwright_shards",
|
|
37
|
+
"cache_build",
|
|
38
|
+
"concurrency_group",
|
|
39
|
+
"prepare_environment",
|
|
40
|
+
"prepare_verbs",
|
|
41
|
+
"prepare_setup_command",
|
|
42
|
+
"prepare_timeout_minutes",
|
|
43
|
+
]);
|
|
44
|
+
/** Facade verbs the retrofit may request, and the script each one requires. */
|
|
45
|
+
const PREPARE_VERBS = [
|
|
46
|
+
["reset", "environment:reset"],
|
|
47
|
+
["reseed", "environment:reseed"],
|
|
48
|
+
];
|
|
49
|
+
const EMPTY = {
|
|
50
|
+
verdict: "not-applicable",
|
|
51
|
+
reason: "",
|
|
52
|
+
lines: [],
|
|
53
|
+
usesAt: -1,
|
|
54
|
+
ref: "",
|
|
55
|
+
withAt: -1,
|
|
56
|
+
retiredAt: -1,
|
|
57
|
+
moment: "",
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Read the input keys of the `with:` block starting at the given header line.
|
|
61
|
+
* @param lines - The caller file split into lines
|
|
62
|
+
* @param withAt - Index of the ` with:` header line
|
|
63
|
+
* @returns One entry per input key, in file order
|
|
64
|
+
*/
|
|
65
|
+
function readWithEntries(lines, withAt) {
|
|
66
|
+
// Blank lines and comments stay inside the block; anything indented four
|
|
67
|
+
// spaces or less ends it. Continuation lines of a block scalar indent deeper
|
|
68
|
+
// than six spaces and so never match WITH_KEY.
|
|
69
|
+
const breaksAt = lines.findIndex((line, i) => i > withAt && line.trim() !== "" && !line.startsWith(" "));
|
|
70
|
+
const limit = breaksAt < 0 ? lines.length : breaksAt;
|
|
71
|
+
return lines
|
|
72
|
+
.slice(withAt + 1, limit)
|
|
73
|
+
.map((line, offset) => ({
|
|
74
|
+
index: withAt + 1 + offset,
|
|
75
|
+
match: WITH_KEY.exec(line),
|
|
76
|
+
}))
|
|
77
|
+
.filter((entry) => entry.match !== null)
|
|
78
|
+
.map(entry => ({
|
|
79
|
+
index: entry.index,
|
|
80
|
+
key: entry.match[1],
|
|
81
|
+
value: entry.match[2].trim(),
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Strip surrounding single or double quotes from a scalar value.
|
|
86
|
+
* @param value - Raw scalar text
|
|
87
|
+
* @returns The value without wrapping quotes
|
|
88
|
+
*/
|
|
89
|
+
function unquote(value) {
|
|
90
|
+
return value.replace(/^['"]|['"]$/gu, "");
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Input keys the dedicated workflow does not declare.
|
|
94
|
+
*
|
|
95
|
+
* `skip_jobs` CONTENTS are deliberately never consulted. That list was seeded by
|
|
96
|
+
* Lisa, grew every time the shared workflow gained a job, and no consumer could
|
|
97
|
+
* keep it current — a stale list and a hand-tuned one are the same bytes, so it
|
|
98
|
+
* cannot be evidence of host intent. What the host demonstrably chose is the set
|
|
99
|
+
* of INPUTS the caller passes, and that is what decides whether the repoint is
|
|
100
|
+
* safe: an undeclared input is refused at dispatch, so repointing over one would
|
|
101
|
+
* trade a wrong-but-running nightly for a dead one.
|
|
102
|
+
* @param entries - Input keys the caller passes
|
|
103
|
+
* @returns Undeclared keys, with the retired input excluded
|
|
104
|
+
*/
|
|
105
|
+
function findUndeclared(entries) {
|
|
106
|
+
return entries
|
|
107
|
+
.filter(entry => entry.key !== RETIRED_INPUT && !DECLARED_INPUTS.has(entry.key))
|
|
108
|
+
.map(entry => entry.key);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Locate every Lisa reusable-workflow caller line in the file.
|
|
112
|
+
* @param lines - The caller file split into lines
|
|
113
|
+
* @returns Line index and capture groups for each caller found
|
|
114
|
+
*/
|
|
115
|
+
function findCallers(lines) {
|
|
116
|
+
return lines
|
|
117
|
+
.map((line, index) => ({ index, match: LISA_CALLER.exec(line) }))
|
|
118
|
+
.filter((entry) => entry.match !== null);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Classify a caller already known to target the shared quality workflow.
|
|
122
|
+
* @param lines - The caller file split into lines
|
|
123
|
+
* @param caller - The caller line and its captures
|
|
124
|
+
* @param caller.index - Line index of the `uses:` line
|
|
125
|
+
* @param caller.match - Regex captures from the `uses:` line
|
|
126
|
+
* @returns The classification and everything a rewrite needs
|
|
127
|
+
*/
|
|
128
|
+
function classifyStaleCaller(lines, caller) {
|
|
129
|
+
const withAt = lines.findIndex(line => WITH_HEADER.test(line));
|
|
130
|
+
if (withAt < 0) {
|
|
131
|
+
return {
|
|
132
|
+
...EMPTY,
|
|
133
|
+
lines,
|
|
134
|
+
verdict: "diverged",
|
|
135
|
+
reason: "its caller job has no `with:` block, so it is not a shape Lisa seeded",
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const entries = readWithEntries(lines, withAt);
|
|
139
|
+
const retired = entries.find(entry => entry.key === RETIRED_INPUT);
|
|
140
|
+
// An empty value means a block scalar (`|` / `>`), whose extent this
|
|
141
|
+
// line-based rewrite will not try to delete safely.
|
|
142
|
+
if (retired && retired.value === "") {
|
|
143
|
+
return {
|
|
144
|
+
...EMPTY,
|
|
145
|
+
lines,
|
|
146
|
+
verdict: "diverged",
|
|
147
|
+
reason: `its \`${RETIRED_INPUT}\` value is a multi-line block, which this retrofit will not rewrite`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const undeclared = findUndeclared(entries);
|
|
151
|
+
const shared = {
|
|
152
|
+
lines,
|
|
153
|
+
usesAt: caller.index,
|
|
154
|
+
ref: caller.match[2],
|
|
155
|
+
withAt,
|
|
156
|
+
retiredAt: retired?.index ?? -1,
|
|
157
|
+
moment: unquote(entries.find(entry => entry.key === "moment")?.value ?? ""),
|
|
158
|
+
};
|
|
159
|
+
return undeclared.length > 0
|
|
160
|
+
? {
|
|
161
|
+
...shared,
|
|
162
|
+
verdict: "diverged",
|
|
163
|
+
reason: `it passes ${undeclared.join(", ")}, which the dedicated workflow does not declare`,
|
|
164
|
+
}
|
|
165
|
+
: { ...shared, verdict: "stale", reason: "" };
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Read and classify a project's seeded Playwright caller.
|
|
169
|
+
* @param projectDir - Destination project directory
|
|
170
|
+
* @returns The classification and everything a rewrite needs
|
|
171
|
+
*/
|
|
172
|
+
async function buildPlan(projectDir) {
|
|
173
|
+
const file = path.join(projectDir, CALLER_FILE);
|
|
174
|
+
if (!(await fse.pathExists(file)))
|
|
175
|
+
return EMPTY;
|
|
176
|
+
const lines = (await readFile(file, "utf8")).split("\n");
|
|
177
|
+
const callers = findCallers(lines);
|
|
178
|
+
if (callers.length === 0)
|
|
179
|
+
return { ...EMPTY, lines };
|
|
180
|
+
if (callers.length > 1) {
|
|
181
|
+
return {
|
|
182
|
+
...EMPTY,
|
|
183
|
+
lines,
|
|
184
|
+
verdict: "diverged",
|
|
185
|
+
reason: `it calls ${callers.length} Lisa reusable workflows, and this retrofit only understands a file with one`,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
const caller = callers[0];
|
|
189
|
+
const workflow = caller.match[1];
|
|
190
|
+
if (workflow === DEDICATED_WORKFLOW) {
|
|
191
|
+
return { ...EMPTY, lines, verdict: "current" };
|
|
192
|
+
}
|
|
193
|
+
if (workflow !== STALE_WORKFLOW)
|
|
194
|
+
return { ...EMPTY, lines };
|
|
195
|
+
return classifyStaleCaller(lines, caller);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Derive the environment name to prepare from the caller's declared moment.
|
|
199
|
+
* @param moment - The caller's `moment:` input (e.g. `continuous:development`)
|
|
200
|
+
* @returns The environment segment, defaulting to `development`
|
|
201
|
+
*/
|
|
202
|
+
function environmentFor(moment) {
|
|
203
|
+
const environment = moment.split(":")[1]?.trim() ?? "";
|
|
204
|
+
return environment === "" ? "development" : environment;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Read the facade verbs the project actually declares.
|
|
208
|
+
*
|
|
209
|
+
* A verb named in `prepare_verbs` that the project does not declare FAILS the
|
|
210
|
+
* run rather than skipping, so the retrofit asks only for verbs it can prove
|
|
211
|
+
* exist. A project with neither gets no `prepare_*` inputs at all, which leaves
|
|
212
|
+
* its nightly behaving exactly as it did.
|
|
213
|
+
* @param projectDir - Destination project directory
|
|
214
|
+
* @returns Declared verb names, in reset-then-reseed order
|
|
215
|
+
*/
|
|
216
|
+
async function declaredVerbs(projectDir) {
|
|
217
|
+
const pkg = await readJsonOrNull(path.join(projectDir, "package.json"));
|
|
218
|
+
const scripts = pkg?.scripts ?? {};
|
|
219
|
+
return PREPARE_VERBS.filter(([, script]) => script in scripts).map(([verb]) => verb);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* First line of the contiguous comment block immediately above `at`.
|
|
223
|
+
*
|
|
224
|
+
* The retired input's explanatory prose describes an input being deleted;
|
|
225
|
+
* leaving it behind documents a key the file no longer passes.
|
|
226
|
+
* @param lines - The caller file split into lines
|
|
227
|
+
* @param at - Index of the key line whose comments to find
|
|
228
|
+
* @returns The first line index to delete
|
|
229
|
+
*/
|
|
230
|
+
function commentStart(lines, at) {
|
|
231
|
+
return lines
|
|
232
|
+
.slice(0, at)
|
|
233
|
+
.reduce((acc, line, i) => (WITH_COMMENT.test(line) ? acc : i + 1), 0);
|
|
234
|
+
}
|
|
235
|
+
/** The comment written above an inserted `prepare_environment` input. */
|
|
236
|
+
const PREPARE_NOTE = [
|
|
237
|
+
" # Return the environment to a known state BEFORE the suite. Cleanup-",
|
|
238
|
+
" # after is best-effort: it does not run when a runner dies, is",
|
|
239
|
+
" # cancelled, or is evicted, so the next run starts against whatever",
|
|
240
|
+
" # the last failure left behind.",
|
|
241
|
+
];
|
|
242
|
+
/**
|
|
243
|
+
* Migration: repoint a project's seeded Playwright caller at the dedicated
|
|
244
|
+
* reusable workflow.
|
|
245
|
+
*
|
|
246
|
+
* `expo/create-only/.github/workflows/playwright-e2e.yml` is create-only, so
|
|
247
|
+
* `src/core/lisa.ts` skips it whenever the destination exists. That is correct —
|
|
248
|
+
* it is why a project can customise the file — but it means editing the template
|
|
249
|
+
* ships the change to greenfield projects ONLY. "Fixed upstream" and "a version
|
|
250
|
+
* bump will carry it" are independent claims for anything in that lane, and this
|
|
251
|
+
* file was edited upstream with no path for the projects already holding a copy.
|
|
252
|
+
*
|
|
253
|
+
* The stale copy calls the shared quality workflow and suppresses the two dozen
|
|
254
|
+
* jobs it does not want by NAME. That inversion goes stale silently: a job added
|
|
255
|
+
* to the shared workflow is absent from every hand-maintained list, so it RUNS on
|
|
256
|
+
* a nightly whose whole point is that it runs one suite.
|
|
257
|
+
*
|
|
258
|
+
* Unlike most `ensure-*` migrations this one REWRITES a file the host owns, so it
|
|
259
|
+
* rewrites only a shape it recognises:
|
|
260
|
+
*
|
|
261
|
+
* - Exactly one Lisa caller in the file, and it targets the shared quality
|
|
262
|
+
* workflow.
|
|
263
|
+
* - Every input it passes, the retired `skip_jobs` aside, is one the dedicated
|
|
264
|
+
* workflow declares.
|
|
265
|
+
*
|
|
266
|
+
* Anything else is reported and left exactly as written. A silent fork is the
|
|
267
|
+
* harm to avoid, and so is a silent no-op that leaves an operator believing the
|
|
268
|
+
* retrofit happened — so both outcomes are logged.
|
|
269
|
+
*/
|
|
270
|
+
export class EnsurePlaywrightDedicatedCallerMigration {
|
|
271
|
+
name = "ensure-playwright-dedicated-caller";
|
|
272
|
+
description = "Repoint a seeded Playwright caller from the shared quality workflow at the dedicated one";
|
|
273
|
+
/**
|
|
274
|
+
* Applies when the caller is stale, or diverged and worth reporting.
|
|
275
|
+
* @param ctx - Migration context
|
|
276
|
+
* @returns True when there is something to do or something to say
|
|
277
|
+
*/
|
|
278
|
+
async applies(ctx) {
|
|
279
|
+
const plan = await buildPlan(ctx.projectDir);
|
|
280
|
+
return plan.verdict === "stale" || plan.verdict === "diverged";
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Rewrite a stale caller, or report a diverged one without touching it.
|
|
284
|
+
* @param ctx - Migration context
|
|
285
|
+
* @returns Result describing the action taken
|
|
286
|
+
*/
|
|
287
|
+
async apply(ctx) {
|
|
288
|
+
const plan = await buildPlan(ctx.projectDir);
|
|
289
|
+
if (plan.verdict === "diverged")
|
|
290
|
+
return this.report(ctx, plan);
|
|
291
|
+
if (plan.verdict !== "stale")
|
|
292
|
+
return { name: this.name, action: "noop" };
|
|
293
|
+
const verbs = await declaredVerbs(ctx.projectDir);
|
|
294
|
+
const message = this.describe(plan, verbs);
|
|
295
|
+
if (ctx.dryRun) {
|
|
296
|
+
ctx.logger.dry(`Would update ${CALLER_FILE}: ${message}`);
|
|
297
|
+
return {
|
|
298
|
+
name: this.name,
|
|
299
|
+
action: "applied",
|
|
300
|
+
changedFiles: [CALLER_FILE],
|
|
301
|
+
message,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
await writeFile(path.join(ctx.projectDir, CALLER_FILE), this.rewrite(plan, verbs).join("\n"));
|
|
305
|
+
ctx.logger.success(message);
|
|
306
|
+
return {
|
|
307
|
+
name: this.name,
|
|
308
|
+
action: "applied",
|
|
309
|
+
changedFiles: [CALLER_FILE],
|
|
310
|
+
message,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Report a caller this migration declines to rewrite.
|
|
315
|
+
* @param ctx - Migration context
|
|
316
|
+
* @param plan - The classification that produced the decision
|
|
317
|
+
* @returns A skipped result carrying the operator-readable reason
|
|
318
|
+
*/
|
|
319
|
+
report(ctx, plan) {
|
|
320
|
+
const message = `Left ${CALLER_FILE} alone: ${plan.reason}. It still calls the shared quality workflow, so its nightly runs jobs this suite does not need. Repoint it by hand, or delete it and re-run to be seeded a current one.`;
|
|
321
|
+
ctx.logger.warn(message);
|
|
322
|
+
return { name: this.name, action: "skipped", message };
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Produce the rewritten caller lines.
|
|
326
|
+
* @param plan - The classification of the current file
|
|
327
|
+
* @param verbs - Facade verbs the project declares
|
|
328
|
+
* @returns The new file contents, line by line
|
|
329
|
+
*/
|
|
330
|
+
rewrite(plan, verbs) {
|
|
331
|
+
const usesLine = plan.lines[plan.usesAt].replace(`${STALE_WORKFLOW}.yml@${plan.ref}`, `${DEDICATED_WORKFLOW}.yml@${plan.ref}`);
|
|
332
|
+
const repointed = plan.lines.map((line, i) => i === plan.usesAt ? usesLine : line);
|
|
333
|
+
// Inserted at the TOP of the `with:` block: a key appended at the bottom
|
|
334
|
+
// could land inside a trailing block scalar such as
|
|
335
|
+
// `playwright_setup_command: |`, where it would be swallowed as script text.
|
|
336
|
+
const withPrepare = verbs.length === 0
|
|
337
|
+
? repointed
|
|
338
|
+
: [
|
|
339
|
+
...repointed.slice(0, plan.withAt + 1),
|
|
340
|
+
...PREPARE_NOTE,
|
|
341
|
+
` prepare_environment: '${environmentFor(plan.moment)}'`,
|
|
342
|
+
` prepare_verbs: '${verbs.join(",")}'`,
|
|
343
|
+
...repointed.slice(plan.withAt + 1),
|
|
344
|
+
];
|
|
345
|
+
if (plan.retiredAt < 0)
|
|
346
|
+
return withPrepare;
|
|
347
|
+
const retiredAt = plan.retiredAt + (withPrepare.length - repointed.length);
|
|
348
|
+
return [
|
|
349
|
+
...withPrepare.slice(0, commentStart(withPrepare, retiredAt)),
|
|
350
|
+
...withPrepare.slice(retiredAt + 1),
|
|
351
|
+
];
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Summarize the rewrite for the operator standing outside the factory.
|
|
355
|
+
* @param plan - The classification of the current file
|
|
356
|
+
* @param verbs - Facade verbs the project declares
|
|
357
|
+
* @returns A one-line summary a non-technical reader can act on
|
|
358
|
+
*/
|
|
359
|
+
describe(plan, verbs) {
|
|
360
|
+
const parts = [
|
|
361
|
+
`pointed it at the dedicated Playwright workflow (${DEDICATED_WORKFLOW}.yml@${plan.ref})`,
|
|
362
|
+
plan.retiredAt < 0 ? null : `dropped the retired ${RETIRED_INPUT} list`,
|
|
363
|
+
verbs.length === 0
|
|
364
|
+
? "left the environment unprepared, because this project declares no environment:reset or environment:reseed script"
|
|
365
|
+
: `asked for a prepared environment (${verbs.join(", ")})`,
|
|
366
|
+
].filter((part) => part !== null);
|
|
367
|
+
return `Retrofitted ${CALLER_FILE}: ${parts.join("; ")}`;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=ensure-playwright-dedicated-caller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-playwright-dedicated-caller.js","sourceRoot":"","sources":["../../src/migrations/ensure-playwright-dedicated-caller.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export { EnsureLearningsGitattributesMigration } from "./ensure-learnings-gitatt
|
|
|
6
6
|
export { EnsureLearningsMergeDriverMigration } from "./ensure-learnings-merge-driver.js";
|
|
7
7
|
export { EnsureLisaPostinstallMigration } from "./ensure-lisa-postinstall.js";
|
|
8
8
|
export { EnsureOxlintBaseConfigsMigration } from "./ensure-oxlint-base-configs.js";
|
|
9
|
+
export { EnsurePlaywrightDedicatedCallerMigration } from "./ensure-playwright-dedicated-caller.js";
|
|
9
10
|
export { EnsureQualityCallerScopesMigration } from "./ensure-quality-caller-scopes.js";
|
|
10
11
|
export { EnsureSonarExcludesLisaHarnessMigration } from "./ensure-sonar-excludes-lisa-harness.js";
|
|
11
12
|
export { EnsureTsconfigLocalFilesFallbackMigration } from "./ensure-tsconfig-local-files-fallback.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,yCAAyC,EAAE,MAAM,2CAA2C,CAAC;AACtG,OAAO,EAAE,6CAA6C,EAAE,MAAM,gDAAgD,CAAC;AAC/G,OAAO,EAAE,qCAAqC,EAAE,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,mCAAmC,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,wCAAwC,EAAE,MAAM,yCAAyC,CAAC;AACnG,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,uCAAuC,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,yCAAyC,EAAE,MAAM,2CAA2C,CAAC;AACtG,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAElF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD;;;OAGG;gBACS,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE;IAmB7C;;;OAGG;IACH,MAAM,IAAI,SAAS,SAAS,EAAE;IAI9B;;;;OAIG;IACG,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAazE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
|
package/dist/migrations/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { EnsureLearningsGitattributesMigration } from "./ensure-learnings-gitatt
|
|
|
4
4
|
import { EnsureLearningsMergeDriverMigration } from "./ensure-learnings-merge-driver.js";
|
|
5
5
|
import { EnsureLisaPostinstallMigration } from "./ensure-lisa-postinstall.js";
|
|
6
6
|
import { EnsureOxlintBaseConfigsMigration } from "./ensure-oxlint-base-configs.js";
|
|
7
|
+
import { EnsurePlaywrightDedicatedCallerMigration } from "./ensure-playwright-dedicated-caller.js";
|
|
7
8
|
import { EnsureQualityCallerScopesMigration } from "./ensure-quality-caller-scopes.js";
|
|
8
9
|
import { EnsureSonarExcludesLisaHarnessMigration } from "./ensure-sonar-excludes-lisa-harness.js";
|
|
9
10
|
import { EnsureTsconfigLocalFilesFallbackMigration } from "./ensure-tsconfig-local-files-fallback.js";
|
|
@@ -17,6 +18,7 @@ export { EnsureLearningsGitattributesMigration } from "./ensure-learnings-gitatt
|
|
|
17
18
|
export { EnsureLearningsMergeDriverMigration } from "./ensure-learnings-merge-driver.js";
|
|
18
19
|
export { EnsureLisaPostinstallMigration } from "./ensure-lisa-postinstall.js";
|
|
19
20
|
export { EnsureOxlintBaseConfigsMigration } from "./ensure-oxlint-base-configs.js";
|
|
21
|
+
export { EnsurePlaywrightDedicatedCallerMigration } from "./ensure-playwright-dedicated-caller.js";
|
|
20
22
|
export { EnsureQualityCallerScopesMigration } from "./ensure-quality-caller-scopes.js";
|
|
21
23
|
export { EnsureSonarExcludesLisaHarnessMigration } from "./ensure-sonar-excludes-lisa-harness.js";
|
|
22
24
|
export { EnsureTsconfigLocalFilesFallbackMigration } from "./ensure-tsconfig-local-files-fallback.js";
|
|
@@ -43,6 +45,7 @@ export class MigrationRegistry {
|
|
|
43
45
|
new EnsureLearningsMergeDriverMigration(),
|
|
44
46
|
new EnsureLisaPostinstallMigration(),
|
|
45
47
|
new EnsureOxlintBaseConfigsMigration(),
|
|
48
|
+
new EnsurePlaywrightDedicatedCallerMigration(),
|
|
46
49
|
new EnsureQualityCallerScopesMigration(),
|
|
47
50
|
new EnsureSonarExcludesLisaHarnessMigration(),
|
|
48
51
|
new EnsureWikiSourceDeclaredMigration(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,8 +39,8 @@ name: 🌙 Nightly E2E Report
|
|
|
39
39
|
# The reporter reads `dev`'s branch rules at generation time and renders one of
|
|
40
40
|
# `required` / `not_required` / `unknown` into the issue title, body and close
|
|
41
41
|
# comment. It does NOT assume. That is a fix, not a feature: this reporter used
|
|
42
|
-
# to state that pull requests were blocked in every issue it filed, and in
|
|
43
|
-
#
|
|
42
|
+
# to state that pull requests were blocked in every issue it filed, and in one
|
|
43
|
+
# measured adopter that was false — zero required contexts on `dev` matched the
|
|
44
44
|
# gate, and people were burning audited bypass labels to clear a gate that was
|
|
45
45
|
# not gating.
|
|
46
46
|
#
|
package/package.json
CHANGED
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"ws": ">=8.21.0"
|
|
133
133
|
},
|
|
134
134
|
"name": "@codyswann/lisa",
|
|
135
|
-
"version": "3.45.
|
|
135
|
+
"version": "3.45.8",
|
|
136
136
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
137
137
|
"main": "dist/index.js",
|
|
138
138
|
"exports": {
|