@codyswann/lisa 4.53.6 → 4.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/learnings-document.js +51 -1
- package/dist/core/learnings-document.js.map +1 -1
- package/dist/core/learnings-merge.d.ts.map +1 -1
- package/dist/core/learnings-merge.js +43 -4
- package/dist/core/learnings-merge.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/reusable-workflow-pin.d.ts +28 -0
- package/dist/core/reusable-workflow-pin.d.ts.map +1 -1
- package/dist/core/reusable-workflow-pin.js +49 -0
- package/dist/core/reusable-workflow-pin.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +7 -3
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- 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 +39 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +8 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +22 -0
- package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +39 -1
- package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +8 -0
- package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +22 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +39 -1
- package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +8 -0
- package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +22 -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 +39 -1
- package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +8 -0
- package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +22 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +39 -1
- package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +8 -0
- package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +22 -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 +39 -1
- package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +8 -0
- package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +22 -0
|
@@ -83,7 +83,7 @@ export function parseLearningsDocument(content) {
|
|
|
83
83
|
}
|
|
84
84
|
const jsonStart = sourceHeader.length + JSON_FENCE_START.length;
|
|
85
85
|
const jsonEnd = content.length - JSON_FENCE_END.length;
|
|
86
|
-
const entries = parseJsonLines(content.slice(jsonStart, jsonEnd))
|
|
86
|
+
const entries = validateEveryParsedEntry(parseJsonLines(content.slice(jsonStart, jsonEnd)), sourceVersion);
|
|
87
87
|
if (new Set(entries.map(entry => entry.id)).size !== entries.length) {
|
|
88
88
|
throw new Error("Invalid project learnings payload: duplicate ids");
|
|
89
89
|
}
|
|
@@ -221,8 +221,58 @@ export function conflictMarkerError(line) {
|
|
|
221
221
|
export function findConflictMarkerInBytes(prefix) {
|
|
222
222
|
return findConflictMarkerLine(new TextDecoder("utf-8").decode(prefix));
|
|
223
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Validate every entry, reporting ALL failures rather than the first (#3577).
|
|
226
|
+
*
|
|
227
|
+
* The `.map` this replaces threw on the first bad row, so a ledger with five
|
|
228
|
+
* over-length rules named one id. Whoever triaged from that message shortened
|
|
229
|
+
* that row, re-ran, met the next one, and reasonably concluded the fix had not
|
|
230
|
+
* worked — measured in the field, where it made a five-row problem read as a
|
|
231
|
+
* one-row problem for a week.
|
|
232
|
+
*
|
|
233
|
+
* ## The single-failure message is unchanged, deliberately
|
|
234
|
+
*
|
|
235
|
+
* One problem renders exactly the bytes the old `.map` threw. Every caller that
|
|
236
|
+
* matches on `Invalid learning entry '<id>': <detail>` keeps working, and the
|
|
237
|
+
* only observable difference is that a document with N bad rows now says so
|
|
238
|
+
* about all N. Widening a diagnostic must not break the readers of the narrow
|
|
239
|
+
* one, or the fix arrives as a second defect.
|
|
240
|
+
*
|
|
241
|
+
* ## Why the caps are two lists and not one
|
|
242
|
+
*
|
|
243
|
+
* `maxRuleCharacters` and `maxRuleLines` break a merge identically, and a
|
|
244
|
+
* validator that stopped at the first would let a consumer fix every
|
|
245
|
+
* over-length rule, go green, and keep failing on the multi-line ones. Both
|
|
246
|
+
* kinds now appear in one report.
|
|
247
|
+
*
|
|
248
|
+
* @param candidates - Parsed JSONL values, in document order
|
|
249
|
+
* @param sourceVersion - Contract version declared by the source document
|
|
250
|
+
* @returns Validated entries
|
|
251
|
+
* @throws {Error} Naming every invalid entry, when any is invalid
|
|
252
|
+
*/
|
|
253
|
+
function validateEveryParsedEntry(candidates, sourceVersion) {
|
|
254
|
+
const outcomes = candidates.map((candidate, index) => {
|
|
255
|
+
try {
|
|
256
|
+
return {
|
|
257
|
+
entry: validateParsedLearningEntry(candidate, index, sourceVersion),
|
|
258
|
+
problem: undefined,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
return {
|
|
263
|
+
entry: undefined,
|
|
264
|
+
problem: error instanceof Error ? error.message : String(error),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
const problems = outcomes.flatMap(outcome => outcome.problem === undefined ? [] : [outcome.problem]);
|
|
269
|
+
if (problems.length > 0)
|
|
270
|
+
throw new Error(problems.join("; "));
|
|
271
|
+
return outcomes.flatMap(outcome => outcome.entry === undefined ? [] : [outcome.entry]);
|
|
272
|
+
}
|
|
224
273
|
/**
|
|
225
274
|
* Add a stable entry identifier to validation failures.
|
|
275
|
+
*
|
|
226
276
|
* @param candidate - Parsed JSONL value
|
|
227
277
|
* @param index - Zero-based JSONL entry index
|
|
228
278
|
* @param sourceVersion - Contract version declared by the source document
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings-document.js","sourceRoot":"","sources":["../../src/core/learnings-document.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,UAAU,GAAG;;CAElB,CAAC;AACF,MAAM,UAAU,GAAG,CACjB,OAAe,EACP,EAAE,CAAC,GAAG,UAAU,iCAAiC,OAAO;;CAEjE,CAAC;AACF,MAAM,WAAW,GAAG,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GACpC,uDAAuD,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAiC;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,KAAK,GAAG,cAAc,EAAE,CAAC;AACtE,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,CAAC,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAe;IAEf,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,sBAAsB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,+CAA+C,kBAAkB,CAAC,SAAS,EAAE,CAC9E,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,eAAe,GACnB,aAAa,KAAK,CAAC;QACjB,CAAC,CAAC,2BAA2B;QAC7B,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC;IACnC,IAAI,sBAAsB,CAAC,OAAO,CAAC,GAAG,eAAe,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,+CAA+C,eAAe,EAAE,CACjE,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC/C,IACE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,gBAAgB,EAAE,CAAC;QACzD,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAChE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IACvD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"learnings-document.js","sourceRoot":"","sources":["../../src/core/learnings-document.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings-merge.d.ts","sourceRoot":"","sources":["../../src/core/learnings-merge.ts"],"names":[],"mappings":"AAwDA,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,sBAAsB,CAAC;AAE3B;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,oBAAoB,
|
|
1
|
+
{"version":3,"file":"learnings-merge.d.ts","sourceRoot":"","sources":["../../src/core/learnings-merge.ts"],"names":[],"mappings":"AAwDA,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,sBAAsB,CAAC;AAE3B;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,oBAAoB,CAqCtB"}
|
|
@@ -54,11 +54,25 @@ import { validateLearningEntry } from "./learnings-entry.js";
|
|
|
54
54
|
* @returns Canonical merged document, or a conflict with a reason
|
|
55
55
|
*/
|
|
56
56
|
export function mergeLearningsDocuments(base, ours, theirs) {
|
|
57
|
+
// EVERY SIDE IS PARSED, EVEN AFTER ONE FAILS (#3577). These three calls used
|
|
58
|
+
// to share one `try`, so a failure in `base` meant `ours` and `theirs` were
|
|
59
|
+
// never parsed at all. MEASURED: an agent was shown one incoming entry, and
|
|
60
|
+
// only on a SECOND run was shown two over-length rules of its OWN — so
|
|
61
|
+
// "no error on this run" did not mean the author's own entries were clean,
|
|
62
|
+
// and nothing in the output said so. The person reading this message is the
|
|
63
|
+
// one positioned to stop the problem spreading, which is what makes a
|
|
64
|
+
// first-failure-only report a fail-open rather than merely a terse one.
|
|
65
|
+
const sides = [
|
|
66
|
+
readSide("base", base),
|
|
67
|
+
readSide("ours", ours),
|
|
68
|
+
readSide("theirs", theirs),
|
|
69
|
+
];
|
|
70
|
+
const problems = sides.flatMap(side => side.problem === undefined ? [] : [`${side.label}: ${side.problem}`]);
|
|
71
|
+
if (problems.length > 0) {
|
|
72
|
+
return { kind: "conflict", reason: problems.join("\n") };
|
|
73
|
+
}
|
|
57
74
|
try {
|
|
58
|
-
const
|
|
59
|
-
const ourEntries = parseSide(ours);
|
|
60
|
-
const theirEntries = parseSide(theirs);
|
|
61
|
-
const resolved = resolveAllIds(baseEntries, ourEntries, theirEntries);
|
|
75
|
+
const resolved = resolveAllIds(sides[0]?.entries ?? new Map(), sides[1]?.entries ?? new Map(), sides[2]?.entries ?? new Map());
|
|
62
76
|
if (resolved.kind === "conflict") {
|
|
63
77
|
return resolved;
|
|
64
78
|
}
|
|
@@ -71,6 +85,31 @@ export function mergeLearningsDocuments(base, ours, theirs) {
|
|
|
71
85
|
};
|
|
72
86
|
}
|
|
73
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Parse one side, returning its problem instead of throwing it.
|
|
90
|
+
*
|
|
91
|
+
* The label is not decoration. An operator reading "this entry is too long"
|
|
92
|
+
* cannot tell a row they wrote from one arriving on the incoming branch, and
|
|
93
|
+
* those have different fixes — shorten mine, or go and talk to whoever wrote
|
|
94
|
+
* theirs. Naming the side is what makes the report actionable rather than
|
|
95
|
+
* merely complete.
|
|
96
|
+
*
|
|
97
|
+
* @param label - Which merge side this is, as an operator reads it
|
|
98
|
+
* @param content - Document for that side
|
|
99
|
+
* @returns The side's entries, or the problem that stopped it parsing
|
|
100
|
+
*/
|
|
101
|
+
function readSide(label, content) {
|
|
102
|
+
try {
|
|
103
|
+
return { label, entries: parseSide(content), problem: undefined };
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return {
|
|
107
|
+
label,
|
|
108
|
+
entries: new Map(),
|
|
109
|
+
problem: error instanceof Error ? error.message : String(error),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
74
113
|
/**
|
|
75
114
|
* Parse one side into an id-keyed map, treating an absent side as empty.
|
|
76
115
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings-merge.js","sourceRoot":"","sources":["../../src/core/learnings-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,EACL,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAqB7D;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAwB,EACxB,IAAY,EACZ,MAAc;IAEd,
|
|
1
|
+
{"version":3,"file":"learnings-merge.js","sourceRoot":"","sources":["../../src/core/learnings-merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,9 +41,9 @@ export const NIGHTLY_E2E_GUARD_BEHAVIOR_CERTIFICATES = Object.freeze({
|
|
|
41
41
|
}),
|
|
42
42
|
dfd2fef680de5ef03e63075e8a61c62ca4d95cdfdff6201939b79c748d3397f6: Object.freeze({
|
|
43
43
|
contractVersion: "1.9.0",
|
|
44
|
-
packageVersions: Object.freeze(["4.
|
|
44
|
+
packageVersions: Object.freeze(["4.54.0"]),
|
|
45
45
|
provenances: Object.freeze([
|
|
46
|
-
"workspace package @codyswann/lisa@4.
|
|
46
|
+
"workspace package @codyswann/lisa@4.54.0 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
|
|
47
47
|
]),
|
|
48
48
|
}),
|
|
49
49
|
});
|
|
@@ -79,6 +79,34 @@ export interface ReleasePin {
|
|
|
79
79
|
* @returns One entry per reference, in file order
|
|
80
80
|
*/
|
|
81
81
|
export declare function findReusableWorkflowRefs(source: string): readonly ReusableWorkflowRef[];
|
|
82
|
+
/**
|
|
83
|
+
* Whether a caller's trailing comment declares its ref to be host policy.
|
|
84
|
+
*
|
|
85
|
+
* ## Why a declaration has to exist
|
|
86
|
+
*
|
|
87
|
+
* `pinReusableWorkflowRefs` rewrites every caller to the installed release's
|
|
88
|
+
* SHA, and its one exemption — `shouldPin` — is about what LISA can vouch for,
|
|
89
|
+
* not about what the HOST decided. So a consumer that deliberately repinned a
|
|
90
|
+
* caller in a reviewed commit had it reverted on the next apply, with no
|
|
91
|
+
* direction check and nothing it could write to object.
|
|
92
|
+
*
|
|
93
|
+
* The asymmetry this closes was already recorded one migration over: a BRANCH
|
|
94
|
+
* ref is left alone because Lisa "cannot infer that host's release policy",
|
|
95
|
+
* while a SHA pin was rewritten — and a SHA pin is the STRONGER statement of
|
|
96
|
+
* that policy, not the weaker one.
|
|
97
|
+
*
|
|
98
|
+
* ## Why the comment is the only place it can live
|
|
99
|
+
*
|
|
100
|
+
* A consumer's workflow file has no registry and no frontmatter. The caller
|
|
101
|
+
* line's own comment is the only surface where a declaration sits beside the
|
|
102
|
+
* thing it governs, which is also why the whole line — comment included — is
|
|
103
|
+
* left untouched: the normal path replaces the comment wholesale, and doing
|
|
104
|
+
* that here would delete the declaration while honouring it once, so the next
|
|
105
|
+
* apply would rewrite the ref with nothing left to object.
|
|
106
|
+
* @param comment - Trailing comment text without its `#`, or null
|
|
107
|
+
* @returns True when the host has declared this ref deliberate
|
|
108
|
+
*/
|
|
109
|
+
export declare function isDeliberatePin(comment: string | null): boolean;
|
|
82
110
|
/**
|
|
83
111
|
* Whether a reference already carries the exact pin, comment included.
|
|
84
112
|
* @param reference - A parsed caller reference
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reusable-workflow-pin.d.ts","sourceRoot":"","sources":["../../src/core/reusable-workflow-pin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAE1E,uEAAuE;AACvE,eAAO,MAAM,eAAe,QAAoB,CAAC;AAajD,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAyBD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,GACb,SAAS,mBAAmB,EAAE,CAgBhC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,UAAU,GACd,OAAO,
|
|
1
|
+
{"version":3,"file":"reusable-workflow-pin.d.ts","sourceRoot":"","sources":["../../src/core/reusable-workflow-pin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAE1E,uEAAuE;AACvE,eAAO,MAAM,eAAe,QAAoB,CAAC;AAajD,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAyBD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,GACb,SAAS,mBAAmB,EAAE,CAgBhC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,UAAU,GACd,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAEpE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,SAAS,GAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAoB,GACpD,MAAM,CAwBR"}
|
|
@@ -110,6 +110,46 @@ export function findReusableWorkflowRefs(source) {
|
|
|
110
110
|
];
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* The marker a host writes to declare a pin as its own policy (#3596).
|
|
115
|
+
*
|
|
116
|
+
* Anchored at the start of the comment and shaped as a KEY, not a topic: a
|
|
117
|
+
* comment that merely discusses pinning ("this pin is deliberate, see the ADR")
|
|
118
|
+
* must not exempt the line it happens to sit on. Everything after the marker is
|
|
119
|
+
* the reason, and is not parsed — presence is the declaration, exactly as the
|
|
120
|
+
* `divergence:` field settled for plugin pins (CodySwannGT/lisa#3597).
|
|
121
|
+
*/
|
|
122
|
+
const DELIBERATE_PIN = /^lisa-pin:\s*deliberate\b/iu;
|
|
123
|
+
/**
|
|
124
|
+
* Whether a caller's trailing comment declares its ref to be host policy.
|
|
125
|
+
*
|
|
126
|
+
* ## Why a declaration has to exist
|
|
127
|
+
*
|
|
128
|
+
* `pinReusableWorkflowRefs` rewrites every caller to the installed release's
|
|
129
|
+
* SHA, and its one exemption — `shouldPin` — is about what LISA can vouch for,
|
|
130
|
+
* not about what the HOST decided. So a consumer that deliberately repinned a
|
|
131
|
+
* caller in a reviewed commit had it reverted on the next apply, with no
|
|
132
|
+
* direction check and nothing it could write to object.
|
|
133
|
+
*
|
|
134
|
+
* The asymmetry this closes was already recorded one migration over: a BRANCH
|
|
135
|
+
* ref is left alone because Lisa "cannot infer that host's release policy",
|
|
136
|
+
* while a SHA pin was rewritten — and a SHA pin is the STRONGER statement of
|
|
137
|
+
* that policy, not the weaker one.
|
|
138
|
+
*
|
|
139
|
+
* ## Why the comment is the only place it can live
|
|
140
|
+
*
|
|
141
|
+
* A consumer's workflow file has no registry and no frontmatter. The caller
|
|
142
|
+
* line's own comment is the only surface where a declaration sits beside the
|
|
143
|
+
* thing it governs, which is also why the whole line — comment included — is
|
|
144
|
+
* left untouched: the normal path replaces the comment wholesale, and doing
|
|
145
|
+
* that here would delete the declaration while honouring it once, so the next
|
|
146
|
+
* apply would rewrite the ref with nothing left to object.
|
|
147
|
+
* @param comment - Trailing comment text without its `#`, or null
|
|
148
|
+
* @returns True when the host has declared this ref deliberate
|
|
149
|
+
*/
|
|
150
|
+
export function isDeliberatePin(comment) {
|
|
151
|
+
return comment !== null && DELIBERATE_PIN.test(comment.trim());
|
|
152
|
+
}
|
|
113
153
|
/**
|
|
114
154
|
* Whether a reference already carries the exact pin, comment included.
|
|
115
155
|
* @param reference - A parsed caller reference
|
|
@@ -117,6 +157,11 @@ export function findReusableWorkflowRefs(source) {
|
|
|
117
157
|
* @returns True when nothing about this reference needs rewriting
|
|
118
158
|
*/
|
|
119
159
|
export function isPinnedAt(reference, pin) {
|
|
160
|
+
// A declared pin is SETTLED, not merely exempt. Reporting it as needing a
|
|
161
|
+
// pin would put a permanent finding in front of an operator who has already
|
|
162
|
+
// answered the question, which is how a report stops being read.
|
|
163
|
+
if (isDeliberatePin(reference.comment))
|
|
164
|
+
return true;
|
|
120
165
|
return reference.ref === pin.sha && reference.comment === `v${pin.version}`;
|
|
121
166
|
}
|
|
122
167
|
/**
|
|
@@ -163,6 +208,10 @@ export function pinReusableWorkflowRefs(source, pin, shouldPin = () => true) {
|
|
|
163
208
|
// it. Leaving a mutable ref is the lesser failure by a wide margin.
|
|
164
209
|
if (workflow !== undefined && !shouldPin(workflow))
|
|
165
210
|
return line;
|
|
211
|
+
// The host said this ref is its own policy. Left byte-for-byte, comment
|
|
212
|
+
// included — see `isDeliberatePin` for why the comment has to survive.
|
|
213
|
+
if (isDeliberatePin(commentOf(groups["tail"] ?? "")))
|
|
214
|
+
return line;
|
|
166
215
|
// The closing quote is reconstructed from the opening one rather than
|
|
167
216
|
// captured: YAML quoting is symmetric, and a separate optional-quote
|
|
168
217
|
// group adjacent to a greedy tail is the ambiguity that makes this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reusable-workflow-pin.js","sourceRoot":"","sources":["../../src/core/reusable-workflow-pin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reusable-workflow-pin.js","sourceRoot":"","sources":["../../src/core/reusable-workflow-pin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,qCAAqC,CAAC;AAE1E,uEAAuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,SAAS,GACb,gKAAgK,CAAC;AAsBnK;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAc;IAEd,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAChD,IAAI,aAAa,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QACvC,IAAI,QAAQ,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAC3D,OAAO;YACL;gBACE,IAAI,EAAE,KAAK,GAAG,CAAC;gBACf,QAAQ;gBACR,GAAG;gBACH,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;aAC/B;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,cAAc,GAAG,6BAA6B,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,eAAe,CAAC,OAAsB;IACpD,OAAO,OAAO,KAAK,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,SAA8B,EAC9B,GAAe;IAEf,0EAA0E;IAC1E,4EAA4E;IAC5E,iEAAiE;IACjE,IAAI,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAC9E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,SAA8B;IACzD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,GAAe,EACf,YAA2C,GAAG,EAAE,CAAC,IAAI;IAErD,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,IAAI,aAAa,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACxC,sEAAsE;QACtE,iEAAiE;QACjE,wEAAwE;QACxE,sEAAsE;QACtE,oEAAoE;QACpE,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAChE,wEAAwE;QACxE,uEAAuE;QACvE,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,sEAAsE;QACtE,qEAAqE;QACrE,mEAAmE;QACnE,mDAAmD;QACnD,OAAO,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,oBAAoB,GAAG,QAAQ,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;IACxH,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -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,CA8iFpE,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,CA8iFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAs1QjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -551,7 +551,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
551
551
|
"plugins/src/base/skills/lisa-detect-tooling/scripts/commands.mjs": "e28bd61fdde4a336b56ae3395423026943a5816015719d31d04f0d5a0ab50eec",
|
|
552
552
|
"plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs": "d9419814fc04c935bd7e320e85b1977c9bfc9275d9ea5fb557002ad438ee7925",
|
|
553
553
|
"plugins/src/base/skills/lisa-doctor/SKILL.md": "ab7bb855fd3ebe321e41b0143815f202b70f6ba38f6678791d6d9e933e0c3fd8",
|
|
554
|
-
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "
|
|
554
|
+
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "9b90ab97ba29e140a06ed50e8f3822ba0b7820b35dce1ed016f1d57510d6b6e9",
|
|
555
555
|
"plugins/src/base/skills/lisa-epic-triage/SKILL.md": "d02760411249bddbd396f283191fe3e82bb7b95bf9393a19a7025dc5a57c3ab7",
|
|
556
556
|
"plugins/src/base/skills/lisa-evaluation-suite/SKILL.md": "96b5c2091ccd22a565935a7b0b917f67998881b81055ce3e4d518319472eac8b",
|
|
557
557
|
"plugins/src/base/skills/lisa-exploratory-qa/SKILL.md": "562b80ea0be5ffb1087386495a380bfb5808a1da4c08a7e253c5229d747bc5c7",
|
|
@@ -618,7 +618,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
618
618
|
"plugins/src/base/skills/lisa-linear-to-tracker/SKILL.md": "863904e013f61508aff5a519697d2fa0e646690729214f5adcb585a86cd7043a",
|
|
619
619
|
"plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md": "bfa2906443c1864b4d2846fb6410a7733c5e999ad7de11ffd6283df78fdb59e5",
|
|
620
620
|
"plugins/src/base/skills/lisa-linear-verify/SKILL.md": "d11a58bd7c2b773a973fe8f8ad19a2621f038327ee2d8afa3039bd72885f5e97",
|
|
621
|
-
"plugins/src/base/skills/lisa-linear-write-issue/SKILL.md": "
|
|
621
|
+
"plugins/src/base/skills/lisa-linear-write-issue/SKILL.md": "263b61f875e017ee3a205ec28a88e5c2e3df66be9f385f3d7d51e31388f6a3f8",
|
|
622
622
|
"plugins/src/base/skills/lisa-linear-write-prd/SKILL.md": "ad4289b5530d65d3b61b27da54db8cd7f8e9133f97326d8961f853f364c5b457",
|
|
623
623
|
"plugins/src/base/skills/lisa-monitor/SKILL.md": "cd2b3d345f83dfefde0b5bdbf36c3f360b9d4228d4cd6d1aa18265b6c320d867",
|
|
624
624
|
"plugins/src/base/skills/lisa-nightly-add-test-coverage/SKILL.md": "1e8d7c9519e107ca21aaa9438515b4d51fac4cd25f2a0f80bdb4e037ac89856c",
|
|
@@ -659,7 +659,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
659
659
|
"plugins/src/base/skills/lisa-queue-status/SKILL.md": "4bbb45c2db8d928897e2b901913b952860bbceaab3e9e7ffe54a71a4d60842a0",
|
|
660
660
|
"plugins/src/base/skills/lisa-remote-dispatch/SKILL.md": "f3c48120a206d01db45f849ca5b61690d572abc16bc36d559a4cacc8f9422c06",
|
|
661
661
|
"plugins/src/base/skills/lisa-remote-dispatch/scripts/dispatch.mjs": "2c51d388ecb681905f6b2280ffefc03434f91bfe4901e637869b716be81ccc93",
|
|
662
|
-
"plugins/src/base/skills/lisa-repair-intake/SKILL.md": "
|
|
662
|
+
"plugins/src/base/skills/lisa-repair-intake/SKILL.md": "dba013e9d148a2573eb99c1c78bf3d5d16e294a8edfb208f279b3c366dce7f2b",
|
|
663
663
|
"plugins/src/base/skills/lisa-reproduce-bug/SKILL.md": "49dee0ea4d444a6df050d85fd57566497df288490f64b467d0505b1863fc1039",
|
|
664
664
|
"plugins/src/base/skills/lisa-research/SKILL.md": "9e2e7f3d02a18d9bb34f0b9e8c43d6b9b454d0f81987390839d40a84331b20f7",
|
|
665
665
|
"plugins/src/base/skills/lisa-review-implementation/SKILL.md": "42134253cca50e384f36eaa085c0a1e6b8772e9f3e912a8d1231f1cd69199858",
|
|
@@ -8559,6 +8559,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8559
8559
|
"tests/unit/core/learnings-lost-write-detection.test.ts": true,
|
|
8560
8560
|
"tests/unit/core/learnings-merge-driver-install.test.ts": true,
|
|
8561
8561
|
"tests/unit/core/learnings-merge-driver.test.ts": true,
|
|
8562
|
+
"tests/unit/core/learnings-merge-reports-every-invalid-entry.test.ts": true,
|
|
8562
8563
|
"tests/unit/core/learnings-merge.test.ts": true,
|
|
8563
8564
|
"tests/unit/core/learnings-migration.test.ts": true,
|
|
8564
8565
|
"tests/unit/core/learnings-overflow-budget-check.test.ts": true,
|
|
@@ -8590,6 +8591,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
8590
8591
|
"tests/unit/core/project-config-nightly-e2e-default.test.ts": true,
|
|
8591
8592
|
"tests/unit/core/project-config-nightly-e2e.test.ts": true,
|
|
8592
8593
|
"tests/unit/core/project-config.test.ts": true,
|
|
8594
|
+
"tests/unit/core/reusable-workflow-deliberate-pin.test.ts": true,
|
|
8593
8595
|
"tests/unit/core/reusable-workflow-load-adapter.test.ts": true,
|
|
8594
8596
|
"tests/unit/core/reusable-workflow-load-failure.test.ts": true,
|
|
8595
8597
|
"tests/unit/core/reusable-workflow-load-scan.test.ts": true,
|
|
@@ -9285,6 +9287,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
9285
9287
|
"tests/unit/strategies/drive-pr-auto-merge-race.test.ts": true,
|
|
9286
9288
|
"tests/unit/strategies/drive-pr-conflict-zero-ci.test.ts": true,
|
|
9287
9289
|
"tests/unit/strategies/drive-pr-hold-gate.test.ts": true,
|
|
9290
|
+
"tests/unit/strategies/drive-pr-review-re-request-contract.test.ts": true,
|
|
9288
9291
|
"tests/unit/strategies/easignore-worktree-exclusion.test.ts": true,
|
|
9289
9292
|
"tests/unit/strategies/env-promotion-completeness.test.ts": true,
|
|
9290
9293
|
"tests/unit/strategies/evidence-ref-contract.test.ts": true,
|
|
@@ -9347,6 +9350,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
9347
9350
|
"tests/unit/strategies/linear-key-resolver-ladder-parity.test.ts": true,
|
|
9348
9351
|
"tests/unit/strategies/linear-lifecycle-guard-parity.test.ts": true,
|
|
9349
9352
|
"tests/unit/strategies/linear-ready-state-inversion.test.ts": true,
|
|
9353
|
+
"tests/unit/strategies/linear-relation-convert-contract.test.ts": true,
|
|
9350
9354
|
"tests/unit/strategies/linear-state-write-fixtures.ts": true,
|
|
9351
9355
|
"tests/unit/strategies/linear-state-write-guard.test.ts": true,
|
|
9352
9356
|
"tests/unit/strategies/linear-state-write-sink.test.ts": true,
|