@codyswann/lisa 4.42.1 → 4.42.3
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/check-orphaned-branches.mjs +458 -29
- package/dist/cli/doctor-reusable-workflow-refs.d.ts +3 -3
- package/dist/cli/doctor-reusable-workflow-refs.d.ts.map +1 -1
- package/dist/cli/doctor-reusable-workflow-refs.js +46 -74
- package/dist/cli/doctor-reusable-workflow-refs.js.map +1 -1
- package/dist/cli/version.d.ts +17 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +34 -0
- package/dist/cli/version.js.map +1 -1
- 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/lisa-release-pin.d.ts +63 -0
- package/dist/core/lisa-release-pin.d.ts.map +1 -0
- package/dist/core/lisa-release-pin.js +147 -0
- package/dist/core/lisa-release-pin.js.map +1 -0
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +4 -1
- package/dist/core/lisa.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/reusable-workflow-pin.d.ts +113 -0
- package/dist/core/reusable-workflow-pin.d.ts.map +1 -0
- package/dist/core/reusable-workflow-pin.js +165 -0
- package/dist/core/reusable-workflow-pin.js.map +1 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +17 -8
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/migrations/ensure-nightly-e2e-workflow-pins.d.ts +16 -36
- package/dist/migrations/ensure-nightly-e2e-workflow-pins.d.ts.map +1 -1
- package/dist/migrations/ensure-nightly-e2e-workflow-pins.js +33 -76
- package/dist/migrations/ensure-nightly-e2e-workflow-pins.js.map +1 -1
- package/dist/migrations/ensure-pinned-reusable-workflow-refs.d.ts +143 -0
- package/dist/migrations/ensure-pinned-reusable-workflow-refs.d.ts.map +1 -0
- package/dist/migrations/ensure-pinned-reusable-workflow-refs.js +293 -0
- package/dist/migrations/ensure-pinned-reusable-workflow-refs.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 +5 -0
- package/dist/migrations/index.js.map +1 -1
- package/package.json +5 -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 +27 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-git-submit-pr/SKILL.md +16 -0
- package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +27 -0
- package/plugins/lisa/skills/lisa-git-submit-pr/SKILL.md +16 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +27 -0
- package/plugins/lisa-agy/skills/lisa-git-submit-pr/SKILL.md +16 -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-drive-pr-to-merge/SKILL.md +27 -0
- package/plugins/lisa-copilot/skills/lisa-git-submit-pr/SKILL.md +16 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +27 -0
- package/plugins/lisa-cursor/skills/lisa-git-submit-pr/SKILL.md +16 -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-drive-pr-to-merge/SKILL.md +27 -0
- package/plugins/src/base/skills/lisa-git-submit-pr/SKILL.md +16 -0
- package/scripts/lisa-update-local.sh +1 -0
- package/scripts/measure-tmpdir-growth.mjs +24 -3
- package/typescript/copy-overwrite/.github/GITHUB_ACTIONS.md +6 -1
- package/typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs +370 -4
- package/typescript/create-only/.github/workflows/review-evidence.yml +20 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading and rewriting the ref a host project's workflow uses to call one of
|
|
3
|
+
* Lisa's reusable workflows.
|
|
4
|
+
*
|
|
5
|
+
* ## What a caller line looks like
|
|
6
|
+
*
|
|
7
|
+
* ```yaml
|
|
8
|
+
* jobs:
|
|
9
|
+
* quality:
|
|
10
|
+
* uses: CodySwannGT/lisa/.github/workflows/quality.yml@<40-char sha> # v4.4.11
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* The SHA is what Actions resolves; the trailing comment is what a human
|
|
14
|
+
* reads. Both are written by the pinner, so the comment can never disagree
|
|
15
|
+
* with the pin — a reader who trusts it is right to.
|
|
16
|
+
*
|
|
17
|
+
* ## Why a full SHA and not `@main`
|
|
18
|
+
*
|
|
19
|
+
* `@main` means every host repository executes whatever is on Lisa's default
|
|
20
|
+
* branch at the moment its run starts: not the Lisa the project installed, not
|
|
21
|
+
* the Lisa anyone reviewed, and not the Lisa that was green the last time CI
|
|
22
|
+
* passed. A caller's CI can then change without the caller changing, an old
|
|
23
|
+
* run cannot be reproduced, and the trust boundary moves from "what the pin
|
|
24
|
+
* pointed at when it was reviewed" to "whatever that ref points at later" —
|
|
25
|
+
* the supply-chain hole GitHub's own hardening guidance answers by pinning to
|
|
26
|
+
* a full-length commit SHA.
|
|
27
|
+
*
|
|
28
|
+
* A short SHA is not a substitute. It is ambiguous by construction, and
|
|
29
|
+
* several GitHub APIs in this repository's history have been measured
|
|
30
|
+
* answering `total_count: 0` for a short SHA that had runs at its full form.
|
|
31
|
+
*
|
|
32
|
+
* ## The two failure modes this module has to hold together
|
|
33
|
+
*
|
|
34
|
+
* Pinning trades one silent failure for another, and pretending otherwise is
|
|
35
|
+
* how this decision has already been reversed twice:
|
|
36
|
+
*
|
|
37
|
+
* - **A frozen ref stops receiving fixes** and never goes red. A caller sat
|
|
38
|
+
* on a `@v3.35.0` tag while Lisa shipped 4.x, for months, reporting
|
|
39
|
+
* healthily the whole time. That is what `@main` was reinstated to solve.
|
|
40
|
+
* - **An unreachable ref stops loading.** Actions creates zero jobs, so a
|
|
41
|
+
* required check is ABSENT rather than red and pull requests hang on a
|
|
42
|
+
* verdict that never arrives.
|
|
43
|
+
*
|
|
44
|
+
* The answer to the first is that nothing here is hand-maintained: the pin is
|
|
45
|
+
* rewritten from the installed version's tag every time Lisa is applied, so it
|
|
46
|
+
* moves when the package pin moves and cannot silently fall behind it. The
|
|
47
|
+
* answer to the second is that Lisa's release pipeline refuses to publish a
|
|
48
|
+
* release commit that is reachable from no durable ref, so the SHA a consumer
|
|
49
|
+
* is handed is always a tagged commit rather than a loose one; and if history
|
|
50
|
+
* ever does move under it, the next apply re-derives the pin from the tag and
|
|
51
|
+
* repairs it without anyone noticing it was broken.
|
|
52
|
+
* @module core/reusable-workflow-pin
|
|
53
|
+
*/
|
|
54
|
+
/** The repository whose reusable workflows this module governs. */
|
|
55
|
+
export const LISA_REUSABLE_PREFIX = "CodySwannGT/lisa/.github/workflows/";
|
|
56
|
+
/** The only ref shape a caller may carry: a full-length commit SHA. */
|
|
57
|
+
export const FULL_COMMIT_SHA = /^[0-9a-f]{40}$/u;
|
|
58
|
+
/**
|
|
59
|
+
* A job-level `uses:` pointing at a Lisa reusable workflow.
|
|
60
|
+
*
|
|
61
|
+
* Matched as text rather than through a YAML round-trip because these files
|
|
62
|
+
* are human-maintained and dense with explanatory comments that a parse and
|
|
63
|
+
* reserialize would delete. The same technique is used by the sibling
|
|
64
|
+
* workflow migrations for the same reason.
|
|
65
|
+
*/
|
|
66
|
+
const USES_LINE = /^(?<lead>[ \t]*uses:[ \t]*)(?<open>["']?)CodySwannGT\/lisa\/\.github\/workflows\/(?<workflow>[A-Za-z0-9._-]+)@(?<ref>[^\s"'#]+)(?<tail>["' \t]*(?:#[^\n]*)?)$/u;
|
|
67
|
+
/**
|
|
68
|
+
* Whether a line is entirely a YAML comment.
|
|
69
|
+
*
|
|
70
|
+
* A commented-out caller is documentation, not a call. Rewriting one would
|
|
71
|
+
* edit prose, and reporting one would raise a finding about a line that
|
|
72
|
+
* invokes nothing.
|
|
73
|
+
* @param line - One line of a workflow file
|
|
74
|
+
* @returns True when the first non-space character is `#`
|
|
75
|
+
*/
|
|
76
|
+
function isCommentLine(line) {
|
|
77
|
+
return /^\s*#/u.test(line);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Extract the comment text from the tail of a matched `uses:` line.
|
|
81
|
+
* @param tail - Everything after the ref and its closing quote
|
|
82
|
+
* @returns Comment text without the `#` and surrounding space, or null
|
|
83
|
+
*/
|
|
84
|
+
function commentOf(tail) {
|
|
85
|
+
const hash = tail.indexOf("#");
|
|
86
|
+
return hash < 0 ? null : tail.slice(hash + 1).trim();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Every Lisa reusable-workflow caller reference in one workflow file.
|
|
90
|
+
* @param source - Full text of a workflow file
|
|
91
|
+
* @returns One entry per reference, in file order
|
|
92
|
+
*/
|
|
93
|
+
export function findReusableWorkflowRefs(source) {
|
|
94
|
+
return source.split("\n").flatMap((line, index) => {
|
|
95
|
+
if (isCommentLine(line))
|
|
96
|
+
return [];
|
|
97
|
+
const groups = USES_LINE.exec(line)?.groups;
|
|
98
|
+
if (groups === undefined)
|
|
99
|
+
return [];
|
|
100
|
+
const { workflow, ref, tail } = groups;
|
|
101
|
+
if (workflow === undefined || ref === undefined)
|
|
102
|
+
return [];
|
|
103
|
+
return [
|
|
104
|
+
{
|
|
105
|
+
line: index + 1,
|
|
106
|
+
workflow,
|
|
107
|
+
ref,
|
|
108
|
+
comment: commentOf(tail ?? ""),
|
|
109
|
+
},
|
|
110
|
+
];
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Whether a reference already carries the exact pin, comment included.
|
|
115
|
+
* @param reference - A parsed caller reference
|
|
116
|
+
* @param pin - The identity every caller must carry
|
|
117
|
+
* @returns True when nothing about this reference needs rewriting
|
|
118
|
+
*/
|
|
119
|
+
export function isPinnedAt(reference, pin) {
|
|
120
|
+
return reference.ref === pin.sha && reference.comment === `v${pin.version}`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Whether a reference names anything other than a full commit SHA.
|
|
124
|
+
*
|
|
125
|
+
* This is the question the reporting surface asks, and it is deliberately NOT
|
|
126
|
+
* "is it the pin I expect": a repository one release behind is current-enough
|
|
127
|
+
* and self-heals on its next apply, while a repository on `@main` never does.
|
|
128
|
+
* @param reference - A parsed caller reference
|
|
129
|
+
* @returns True when the ref is a branch, a tag, or a short SHA
|
|
130
|
+
*/
|
|
131
|
+
export function isMutableRef(reference) {
|
|
132
|
+
return !FULL_COMMIT_SHA.test(reference.ref);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Rewrite every Lisa reusable-workflow caller in a file to the given pin.
|
|
136
|
+
*
|
|
137
|
+
* The trailing comment on a caller line is Lisa-owned and is replaced
|
|
138
|
+
* wholesale with `# v<version>`. That is what makes the rewrite idempotent —
|
|
139
|
+
* appending would grow the line on every apply — and what makes the version a
|
|
140
|
+
* reader sees impossible to disagree with the SHA above it.
|
|
141
|
+
*
|
|
142
|
+
* Quoting, indentation, and everything else on the line are preserved.
|
|
143
|
+
* @param source - Full text of a workflow file
|
|
144
|
+
* @param pin - The identity every caller must carry
|
|
145
|
+
* @returns The rewritten text, byte-identical to the input when nothing changed
|
|
146
|
+
*/
|
|
147
|
+
export function pinReusableWorkflowRefs(source, pin) {
|
|
148
|
+
return source
|
|
149
|
+
.split("\n")
|
|
150
|
+
.map(line => {
|
|
151
|
+
if (isCommentLine(line))
|
|
152
|
+
return line;
|
|
153
|
+
const groups = USES_LINE.exec(line)?.groups;
|
|
154
|
+
if (groups === undefined)
|
|
155
|
+
return line;
|
|
156
|
+
const { lead, open, workflow } = groups;
|
|
157
|
+
// The closing quote is reconstructed from the opening one rather than
|
|
158
|
+
// captured: YAML quoting is symmetric, and a separate optional-quote
|
|
159
|
+
// group adjacent to a greedy tail is the ambiguity that makes this
|
|
160
|
+
// pattern backtrack super-linearly on a long line.
|
|
161
|
+
return `${lead ?? ""}${open ?? ""}${LISA_REUSABLE_PREFIX}${workflow ?? ""}@${pin.sha}${open ?? ""} # v${pin.version}`;
|
|
162
|
+
})
|
|
163
|
+
.join("\n");
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=reusable-workflow-pin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reusable-workflow-pin.js","sourceRoot":"","sources":["../../src/core/reusable-workflow-pin.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,CAgkFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,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,CAgkFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA4yQjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -5,7 +5,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
5
5
|
"all/copy-contents/gitignore": "66e105ae1b6874e6c587d128a04ff5a5005bf923759fc41cc31d73b9ba44bacf",
|
|
6
6
|
"all/copy-overwrite/scripts/check-conflict-markers.mjs": "d7a689bcc122af7f38d1c536924fc2f3dcb503b09658ffc6035ccbe720d14d6b",
|
|
7
7
|
"all/copy-overwrite/scripts/check-npm-publish-landed.mjs": "bba6114e5e4643575749210819acfda207260ac1db5fcb48c33c320c3a9503ca",
|
|
8
|
-
"all/copy-overwrite/scripts/check-orphaned-branches.mjs": "
|
|
8
|
+
"all/copy-overwrite/scripts/check-orphaned-branches.mjs": "857b923b3fb19db9755e5a62e54ad14a33862a17051bc63ec65563c1295713c3",
|
|
9
9
|
"all/copy-overwrite/scripts/check-release-package-identity.mjs": "a0f17592d4436de4c240f7c78512537581aa2ed5e89f0caf1fe890694163a873",
|
|
10
10
|
"all/copy-overwrite/scripts/check-state-classification.mjs": "a72910f9885629dd6d8a739b900f5603e4b53d68ece64100a2a5647016b58e1e",
|
|
11
11
|
"all/copy-overwrite/scripts/check-third-party-action-pins.mjs": "9f441b6b8697f0a64abd29125eb7881ebdb0c8d47487bdd18ff09633eb3dab19",
|
|
@@ -576,7 +576,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
576
576
|
"plugins/src/base/skills/lisa-detect-tooling/scripts/commands.mjs": "e28bd61fdde4a336b56ae3395423026943a5816015719d31d04f0d5a0ab50eec",
|
|
577
577
|
"plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs": "d9419814fc04c935bd7e320e85b1977c9bfc9275d9ea5fb557002ad438ee7925",
|
|
578
578
|
"plugins/src/base/skills/lisa-doctor/SKILL.md": "ab7bb855fd3ebe321e41b0143815f202b70f6ba38f6678791d6d9e933e0c3fd8",
|
|
579
|
-
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "
|
|
579
|
+
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "76b7df5e37ca70d2b48401325974f45d4a89ec2f3a7103cabecc6bdf0f05e08c",
|
|
580
580
|
"plugins/src/base/skills/lisa-epic-triage/SKILL.md": "d02760411249bddbd396f283191fe3e82bb7b95bf9393a19a7025dc5a57c3ab7",
|
|
581
581
|
"plugins/src/base/skills/lisa-evaluation-suite/SKILL.md": "96b5c2091ccd22a565935a7b0b917f67998881b81055ce3e4d518319472eac8b",
|
|
582
582
|
"plugins/src/base/skills/lisa-exploratory-qa/SKILL.md": "562b80ea0be5ffb1087386495a380bfb5808a1da4c08a7e253c5229d747bc5c7",
|
|
@@ -584,7 +584,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
584
584
|
"plugins/src/base/skills/lisa-generate-claude-remote-build-script/SKILL.md": "9ae66050b046b3d5bcf4acb582928cb56f295d4d869b712e85b6e0717b67dc7b",
|
|
585
585
|
"plugins/src/base/skills/lisa-git-commit/SKILL.md": "56320566e9278fb43b4d51c00854f3714dc61edc960292d51962a6f49116ac0f",
|
|
586
586
|
"plugins/src/base/skills/lisa-git-prune/SKILL.md": "11fad06d109538f1a8ee4ef8043bb0e083672e3c9a7cb7ae8a7233c5411d6dd2",
|
|
587
|
-
"plugins/src/base/skills/lisa-git-submit-pr/SKILL.md": "
|
|
587
|
+
"plugins/src/base/skills/lisa-git-submit-pr/SKILL.md": "7847ee39ea3a14445fbf1d459e3cd7d93ed67dcdcf8b6f161ca64bb307233245",
|
|
588
588
|
"plugins/src/base/skills/lisa-github-add-journey/SKILL.md": "4ceda3474a9b32abae835c2676e8cb2b7e888c6ba04b95843dbe7254293bbf32",
|
|
589
589
|
"plugins/src/base/skills/lisa-github-build-intake/SKILL.md": "48ecd7ed8fb69b2023ae87f04cc48963bbc67aec5a8d92d5021d39d83e33f305",
|
|
590
590
|
"plugins/src/base/skills/lisa-github-claim/SKILL.md": "71301c6d45d7eb5523e74aa7f070bb2becf57ca68fb8bde9e02ee937b78815f7",
|
|
@@ -1210,10 +1210,10 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1210
1210
|
"scripts/lisa-remote-env/setup.sh": "803ceee995da51503202458a24b4f5bd80ace8c779d0c782bf1197c36e1ebe91",
|
|
1211
1211
|
"scripts/lisa-ruleset-payload.mjs": "3e10b5a4c113e3aa895c6a09f063045eb198dbdabb11a00be87bea1477c91fbb",
|
|
1212
1212
|
"scripts/lisa-ruleset-reach.mjs": "e51b12092062379e7317b368c89a789e2067ec302388e557ea84a29a35ffc238",
|
|
1213
|
-
"scripts/lisa-update-local.sh": "
|
|
1213
|
+
"scripts/lisa-update-local.sh": "eb031a6bb4735e5096ac52efc3ef027233485c86524a83cd7f258d0b6f7b985b",
|
|
1214
1214
|
"scripts/lisa-work-item.mjs": "51081847e980f314a764c2e50a7a121b1ced9ef4b980f33898057de4c7b852e6",
|
|
1215
1215
|
"scripts/materialize-copy-overwrite.mjs": "f510944db5b234131cb659b8780f571b460f8052a854131aa27558d73e126f36",
|
|
1216
|
-
"scripts/measure-tmpdir-growth.mjs": "
|
|
1216
|
+
"scripts/measure-tmpdir-growth.mjs": "aa2f336fdb9592e4b7bda1a676d0915ba259e66a06081622a7e724604219d56b",
|
|
1217
1217
|
"scripts/merge-generated-artifact.mjs": "d5abe45efb47732aa59da587f2ccfc9c2290b113a2bcab8b305ff46ab39c273e",
|
|
1218
1218
|
"scripts/mutation-performance-measure.mjs": "0dc9719648ae7a94ccad57587cef8cd03e8d38bbc33d47c1863b503a7d8350c6",
|
|
1219
1219
|
"scripts/mutation-performance.schema.json": "b99a447bb5b3ff73b22d2a1539a0effedadaa5fc08e546f988f5c4e9e5682499",
|
|
@@ -1249,7 +1249,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1249
1249
|
"typescript/copy-contents/.husky/pre-push": "e73dde7a1dcb3c10be5db540b9d9f46ec74b90ecc10a850b4fb098481ef6de6e",
|
|
1250
1250
|
"typescript/copy-contents/.husky/prepare-commit-msg": "4a719c20da65653f266e7c8a346b5546ad05f1dfa34665fc7fec47e89d2f58d1",
|
|
1251
1251
|
"typescript/copy-overwrite/.claude/hooks/worktree-create.sh": "888cfd16bd1ac04f9f8a835eae62f8bd2c956de654bce12ce9a6a52947b121ca",
|
|
1252
|
-
"typescript/copy-overwrite/.github/GITHUB_ACTIONS.md": "
|
|
1252
|
+
"typescript/copy-overwrite/.github/GITHUB_ACTIONS.md": "4289146bae8e112049387d4be86941c563b02376a06f0238364aaf3e61c2b127",
|
|
1253
1253
|
"typescript/copy-overwrite/.lintstagedrc.json": "60bf2d5e86bf9d72f04b8b14368591f104674ff80046fe8bd82e4174ca1523fd",
|
|
1254
1254
|
"typescript/copy-overwrite/.nvmrc": "0775c6feb7638122e8b68d611cd709bf270f7b5adb5d0d2baa9afab8a6c0fc42",
|
|
1255
1255
|
"typescript/copy-overwrite/.prettierignore": "b3b3910fbea6fb918cb213935d3a7a356d0d5d554dd9aca66fb1beb672124d30",
|
|
@@ -1270,7 +1270,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1270
1270
|
"typescript/copy-overwrite/eslint.slow.config.ts": "9f0efef2d1012e21a1d5e03eb98634bfeb459e3427147d75ad6905acbbab8466",
|
|
1271
1271
|
"typescript/copy-overwrite/knip.json": "d557bfb64c8c23d9f03c173798aa1f176f5e28d395ad6667f855049d4b886db6",
|
|
1272
1272
|
"typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs": "dfd2fef680de5ef03e63075e8a61c62ca4d95cdfdff6201939b79c748d3397f6",
|
|
1273
|
-
"typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs": "
|
|
1273
|
+
"typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs": "ad97de4cea9ca61b10d637ef093e1697e434942d14d92e3e59955b9a81304a4c",
|
|
1274
1274
|
"typescript/copy-overwrite/scripts/check-threshold-ratchet.mjs": "47bc8b91e38535e694f43d9d3b76c4589ae2796e4ce9e875ab6b09a273e0c93a",
|
|
1275
1275
|
"typescript/copy-overwrite/scripts/check-verification-coverage.mjs": "777e46c8e8147935f0b944dc21536f6238b26b5b7dca06c5fdb2d2898a9790dc",
|
|
1276
1276
|
"typescript/copy-overwrite/scripts/lib/bounded-spawn.mjs": "72e277ada531914d7bc51c3cb8dc67b8881aa817d96fa2f9f4d81668a3d3bbc1",
|
|
@@ -1292,7 +1292,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1292
1292
|
"typescript/copy-overwrite/vitest.config.ts": "dc140e617db43da38f456bcc909ae621a62996fe25e7b0babd5e81941308365c",
|
|
1293
1293
|
"typescript/create-only/.github/required-checks.json": "01f5b7d8587adc21e85f525b57ac04a8143427459d95b48b616216eca54a73df",
|
|
1294
1294
|
"typescript/create-only/.github/workflows/ci.yml": "409799708fe51716f3c8228950db3bb26864f43a01a9e6186f6d3d1970e29f2d",
|
|
1295
|
-
"typescript/create-only/.github/workflows/review-evidence.yml": "
|
|
1295
|
+
"typescript/create-only/.github/workflows/review-evidence.yml": "62a115d54c084c64d067825daf869f737e1c25dfd2a6e8b3a9df284d069229a6",
|
|
1296
1296
|
"typescript/create-only/.github/workflows/third-party-review-evidence.yml": "8f1a3b04fa483c59ac4513a2d16eabf4a3e3bba447a562734b1f35fba2552769",
|
|
1297
1297
|
"typescript/create-only/.gitleaksignore": "6927d376648675331801c798a4390b652a22a3e5d350cd26f36d42c10af02d67",
|
|
1298
1298
|
"typescript/create-only/audit.ignore.local.json": "096eba7c600446a2f906369a6ff747804a51b9ad3153ca10d9a1d673e416b337",
|
|
@@ -7755,6 +7755,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7755
7755
|
"src/core/lisa-owned-provenance.ts": true,
|
|
7756
7756
|
"src/core/lisa-owned-templates.ts": true,
|
|
7757
7757
|
"src/core/lisa-plugin-selection.ts": true,
|
|
7758
|
+
"src/core/lisa-release-pin.ts": true,
|
|
7758
7759
|
"src/core/lisa-rules-mirror.ts": true,
|
|
7759
7760
|
"src/core/lisa-skill-sources.ts": true,
|
|
7760
7761
|
"src/core/lisa.ts": true,
|
|
@@ -7767,6 +7768,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7767
7768
|
"src/core/project-config-nightly-e2e.ts": true,
|
|
7768
7769
|
"src/core/project-config.ts": true,
|
|
7769
7770
|
"src/core/reconciliation-report.ts": true,
|
|
7771
|
+
"src/core/reusable-workflow-pin.ts": true,
|
|
7770
7772
|
"src/core/safe-relative-markdown-path.ts": true,
|
|
7771
7773
|
"src/core/self-apply.ts": true,
|
|
7772
7774
|
"src/core/sonar-integration.ts": true,
|
|
@@ -7824,6 +7826,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7824
7826
|
"src/migrations/ensure-lisa-postinstall.ts": true,
|
|
7825
7827
|
"src/migrations/ensure-nightly-e2e-workflow-pins.ts": true,
|
|
7826
7828
|
"src/migrations/ensure-oxlint-base-configs.ts": true,
|
|
7829
|
+
"src/migrations/ensure-pinned-reusable-workflow-refs.ts": true,
|
|
7827
7830
|
"src/migrations/ensure-playwright-dedicated-caller.ts": true,
|
|
7828
7831
|
"src/migrations/ensure-push-default-safe.ts": true,
|
|
7829
7832
|
"src/migrations/ensure-quality-caller-scopes.ts": true,
|
|
@@ -8105,6 +8108,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8105
8108
|
"tests/helpers/test-run-module-closure.ts": true,
|
|
8106
8109
|
"tests/helpers/test-run-supervision-analyzer.ts": true,
|
|
8107
8110
|
"tests/helpers/test-utils.ts": true,
|
|
8111
|
+
"tests/helpers/tmpdir-growth-cap-boundary.ts": true,
|
|
8108
8112
|
"tests/helpers/tmpdir-growth-command-harness.ts": true,
|
|
8109
8113
|
"tests/helpers/tmpdir-growth-darwin-performance.ts": true,
|
|
8110
8114
|
"tests/helpers/tmpdir-growth-performance-types.ts": true,
|
|
@@ -8115,6 +8119,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8115
8119
|
"tests/helpers/verification-gate-harness.ts": true,
|
|
8116
8120
|
"tests/helpers/workflow-job-graph.ts": true,
|
|
8117
8121
|
"tests/helpers/workflow-test-utils.ts": true,
|
|
8122
|
+
"tests/integration/applied-project-pins-lisa-workflows.test.ts": true,
|
|
8118
8123
|
"tests/integration/apply-prompted-guard-downgrade.test.ts": true,
|
|
8119
8124
|
"tests/integration/apply-reports-unchanged-manifest.test.ts": true,
|
|
8120
8125
|
"tests/integration/apply-unattended-preserves-host-config.test.ts": true,
|
|
@@ -8618,6 +8623,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8618
8623
|
"tests/unit/core/lisa-owned-templates-classification.test.ts": true,
|
|
8619
8624
|
"tests/unit/core/lisa-owned-templates.test.ts": true,
|
|
8620
8625
|
"tests/unit/core/lisa-plugin-selection.test.ts": true,
|
|
8626
|
+
"tests/unit/core/lisa-release-pin.test.ts": true,
|
|
8621
8627
|
"tests/unit/core/lisa-skill-sources.test.ts": true,
|
|
8622
8628
|
"tests/unit/core/nightly-e2e-pull-request-triggers.test.ts": true,
|
|
8623
8629
|
"tests/unit/core/no-downstream-project-names.test.ts": true,
|
|
@@ -8631,6 +8637,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8631
8637
|
"tests/unit/core/project-config-nightly-e2e-default.test.ts": true,
|
|
8632
8638
|
"tests/unit/core/project-config-nightly-e2e.test.ts": true,
|
|
8633
8639
|
"tests/unit/core/project-config.test.ts": true,
|
|
8640
|
+
"tests/unit/core/reusable-workflow-pin.test.ts": true,
|
|
8634
8641
|
"tests/unit/core/role-agent-template-contract.test.ts": true,
|
|
8635
8642
|
"tests/unit/core/self-apply.test.ts": true,
|
|
8636
8643
|
"tests/unit/core/skill-frontmatter-contract.test.ts": true,
|
|
@@ -8786,6 +8793,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8786
8793
|
"tests/unit/migrations/ensure-lisa-postinstall.test.ts": true,
|
|
8787
8794
|
"tests/unit/migrations/ensure-nightly-e2e-workflow-pins.test.ts": true,
|
|
8788
8795
|
"tests/unit/migrations/ensure-oxlint-base-configs.test.ts": true,
|
|
8796
|
+
"tests/unit/migrations/ensure-pinned-reusable-workflow-refs.test.ts": true,
|
|
8789
8797
|
"tests/unit/migrations/ensure-playwright-dedicated-caller.test.ts": true,
|
|
8790
8798
|
"tests/unit/migrations/ensure-push-default-safe.test.ts": true,
|
|
8791
8799
|
"tests/unit/migrations/ensure-quality-caller-scopes.test.ts": true,
|
|
@@ -8974,6 +8982,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8974
8982
|
"tests/unit/scripts/maestro-flake-classification.test.ts": true,
|
|
8975
8983
|
"tests/unit/scripts/maestro-flake-helpers.ts": true,
|
|
8976
8984
|
"tests/unit/scripts/maestro-intermittent-registry.test.ts": true,
|
|
8985
|
+
"tests/unit/scripts/measure-tmpdir-growth-performance.test.ts": true,
|
|
8977
8986
|
"tests/unit/scripts/measure-tmpdir-growth.test.ts": true,
|
|
8978
8987
|
"tests/unit/scripts/merge-driver-registration.test.ts": true,
|
|
8979
8988
|
"tests/unit/scripts/merge-generated-artifact-derived-entries.test.ts": true,
|