@codyswann/lisa 2.264.0 → 2.266.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.
Files changed (163) hide show
  1. package/dist/core/lisa-plugin-selection.d.ts +11 -0
  2. package/dist/core/lisa-plugin-selection.d.ts.map +1 -1
  3. package/dist/core/lisa-plugin-selection.js +11 -1
  4. package/dist/core/lisa-plugin-selection.js.map +1 -1
  5. package/dist/core/lisa.d.ts +0 -41
  6. package/dist/core/lisa.d.ts.map +1 -1
  7. package/dist/core/lisa.js +23 -104
  8. package/dist/core/lisa.js.map +1 -1
  9. package/dist/core/template-ownership.d.ts +46 -0
  10. package/dist/core/template-ownership.d.ts.map +1 -0
  11. package/dist/core/template-ownership.js +123 -0
  12. package/dist/core/template-ownership.js.map +1 -0
  13. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  14. package/dist/core/upstream-evidence-manifest.js +26 -6
  15. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  16. package/dist/health/deadline.d.ts +25 -0
  17. package/dist/health/deadline.d.ts.map +1 -0
  18. package/dist/health/deadline.js +50 -0
  19. package/dist/health/deadline.js.map +1 -0
  20. package/dist/health/deterministic.d.ts +34 -0
  21. package/dist/health/deterministic.d.ts.map +1 -0
  22. package/dist/health/deterministic.js +206 -0
  23. package/dist/health/deterministic.js.map +1 -0
  24. package/dist/health/finding-utils.d.ts +17 -0
  25. package/dist/health/finding-utils.d.ts.map +1 -0
  26. package/dist/health/finding-utils.js +25 -0
  27. package/dist/health/finding-utils.js.map +1 -0
  28. package/dist/health/governance-probes.d.ts +51 -0
  29. package/dist/health/governance-probes.d.ts.map +1 -0
  30. package/dist/health/governance-probes.js +94 -0
  31. package/dist/health/governance-probes.js.map +1 -0
  32. package/dist/health/hook-inspection.d.ts +35 -0
  33. package/dist/health/hook-inspection.d.ts.map +1 -0
  34. package/dist/health/hook-inspection.js +123 -0
  35. package/dist/health/hook-inspection.js.map +1 -0
  36. package/dist/health/index.d.ts +1 -0
  37. package/dist/health/index.d.ts.map +1 -1
  38. package/dist/health/index.js +1 -0
  39. package/dist/health/index.js.map +1 -1
  40. package/dist/health/plugin-inspection.d.ts +37 -0
  41. package/dist/health/plugin-inspection.d.ts.map +1 -0
  42. package/dist/health/plugin-inspection.js +128 -0
  43. package/dist/health/plugin-inspection.js.map +1 -0
  44. package/dist/health/project-probes.d.ts +34 -0
  45. package/dist/health/project-probes.d.ts.map +1 -0
  46. package/dist/health/project-probes.js +104 -0
  47. package/dist/health/project-probes.js.map +1 -0
  48. package/dist/health/read-only-fs.d.ts +54 -0
  49. package/dist/health/read-only-fs.d.ts.map +1 -0
  50. package/dist/health/read-only-fs.js +165 -0
  51. package/dist/health/read-only-fs.js.map +1 -0
  52. package/dist/health/ruleset-inspection.d.ts +57 -0
  53. package/dist/health/ruleset-inspection.d.ts.map +1 -0
  54. package/dist/health/ruleset-inspection.js +315 -0
  55. package/dist/health/ruleset-inspection.js.map +1 -0
  56. package/dist/health/template-inspection.d.ts +67 -0
  57. package/dist/health/template-inspection.d.ts.map +1 -0
  58. package/dist/health/template-inspection.js +469 -0
  59. package/dist/health/template-inspection.js.map +1 -0
  60. package/dist/strategies/copy-contents.d.ts +7 -25
  61. package/dist/strategies/copy-contents.d.ts.map +1 -1
  62. package/dist/strategies/copy-contents.js +32 -63
  63. package/dist/strategies/copy-contents.js.map +1 -1
  64. package/dist/strategies/merge.d.ts +7 -0
  65. package/dist/strategies/merge.d.ts.map +1 -1
  66. package/dist/strategies/merge.js +10 -1
  67. package/dist/strategies/merge.js.map +1 -1
  68. package/dist/strategies/package-lisa.d.ts +10 -1
  69. package/dist/strategies/package-lisa.d.ts.map +1 -1
  70. package/dist/strategies/package-lisa.js +18 -20
  71. package/dist/strategies/package-lisa.js.map +1 -1
  72. package/dist/strategies/tagged-merge.d.ts +7 -0
  73. package/dist/strategies/tagged-merge.d.ts.map +1 -1
  74. package/dist/strategies/tagged-merge.js +10 -1
  75. package/dist/strategies/tagged-merge.js.map +1 -1
  76. package/dist/sync/config-sync.d.ts +7 -0
  77. package/dist/sync/config-sync.d.ts.map +1 -1
  78. package/dist/sync/config-sync.js +23 -16
  79. package/dist/sync/config-sync.js.map +1 -1
  80. package/dist/utils/ignore-patterns.d.ts +18 -0
  81. package/dist/utils/ignore-patterns.d.ts.map +1 -1
  82. package/dist/utils/ignore-patterns.js +2 -2
  83. package/dist/utils/ignore-patterns.js.map +1 -1
  84. package/package.json +3 -2
  85. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  87. package/plugins/lisa/.codex-plugin/skills/lisa-security-review/SKILL.md +69 -2
  88. package/plugins/lisa/.codex-plugin/skills/lisa-security-zap-scan/SKILL.md +22 -2
  89. package/plugins/lisa/agents/security-specialist.md +19 -2
  90. package/plugins/lisa/rules/eager/claim-evidence-mapping.md +9 -2
  91. package/plugins/lisa/rules/reference/claim-evidence-mapping.md +25 -4
  92. package/plugins/lisa/skills/lisa-security-review/SKILL.md +69 -2
  93. package/plugins/lisa/skills/lisa-security-zap-scan/SKILL.md +22 -2
  94. package/plugins/lisa-agy/agents/security-specialist.md +19 -2
  95. package/plugins/lisa-agy/plugin.json +1 -1
  96. package/plugins/lisa-agy/skills/lisa-security-review/SKILL.md +69 -2
  97. package/plugins/lisa-agy/skills/lisa-security-zap-scan/SKILL.md +22 -2
  98. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  100. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  101. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-copilot/agents/security-specialist.agent.md +19 -2
  105. package/plugins/lisa-copilot/rules/eager/claim-evidence-mapping.md +9 -2
  106. package/plugins/lisa-copilot/rules/reference/claim-evidence-mapping.md +25 -4
  107. package/plugins/lisa-copilot/skills/lisa-security-review/SKILL.md +69 -2
  108. package/plugins/lisa-copilot/skills/lisa-security-zap-scan/SKILL.md +22 -2
  109. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  110. package/plugins/lisa-cursor/agents/security-specialist.md +19 -2
  111. package/plugins/lisa-cursor/rules/claim-evidence-mapping-reference.mdc +25 -4
  112. package/plugins/lisa-cursor/rules/claim-evidence-mapping.mdc +9 -2
  113. package/plugins/lisa-cursor/skills/lisa-security-review/SKILL.md +69 -2
  114. package/plugins/lisa-cursor/skills/lisa-security-zap-scan/SKILL.md +22 -2
  115. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  116. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  117. package/plugins/lisa-expo-agy/plugin.json +1 -1
  118. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  119. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  120. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  121. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  122. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  123. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  124. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  125. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  126. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  127. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  128. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  129. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  130. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  131. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  132. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  133. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  134. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  135. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  136. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  137. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  138. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  139. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  140. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  141. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  142. package/plugins/lisa-rails-agy/plugin.json +1 -1
  143. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  144. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  145. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  146. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  147. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  148. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  149. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  150. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  151. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  152. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  153. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  154. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  155. package/plugins/src/base/agents/security-specialist.md +19 -2
  156. package/plugins/src/base/rules/eager/claim-evidence-mapping.md +9 -2
  157. package/plugins/src/base/rules/reference/claim-evidence-mapping.md +25 -4
  158. package/plugins/src/base/skills/lisa-security-review/SKILL.md +69 -2
  159. package/plugins/src/base/skills/lisa-security-zap-scan/SKILL.md +22 -2
  160. package/scripts/detect-stale-workflow-inputs.mjs +21 -148
  161. package/scripts/lib/reusable-workflow-contract.d.mts +24 -0
  162. package/scripts/lib/reusable-workflow-contract.mjs +123 -0
  163. package/scripts/verify-health-deterministic-built.mjs +499 -0
@@ -0,0 +1,123 @@
1
+ const CREATE_ONLY = "create-only";
2
+ const COPY_OVERWRITE = "copy-overwrite";
3
+ /**
4
+ * Apply Lisa's exact ignore, deletion, learnings, and ownership precedence.
5
+ * @param input - Candidate plus precomputed project ownership state
6
+ * @returns Whether the candidate is applicable and, when omitted, why
7
+ */
8
+ export function decideTemplateOwnership(input) {
9
+ if (input.ignored)
10
+ return { process: false, reason: "ignored" };
11
+ const isLearnings = input.projectLearningsPath !== undefined &&
12
+ input.relativePath === input.projectLearningsPath;
13
+ if (isLearnings &&
14
+ input.strategy === CREATE_ONLY &&
15
+ input.suppressLearningsSeed) {
16
+ return { process: false, reason: "suppressed-learnings-seed" };
17
+ }
18
+ if (input.pendingDeletion && !isLearnings) {
19
+ return { process: false, reason: "pending-deletion" };
20
+ }
21
+ if (isLearnings && input.strategy !== CREATE_ONLY) {
22
+ return { process: false, reason: "project-learnings-owned" };
23
+ }
24
+ const createOnlyDecision = createOnlyOwnership(input);
25
+ if (createOnlyDecision !== undefined)
26
+ return createOnlyDecision;
27
+ if (input.strategy !== COPY_OVERWRITE)
28
+ return { process: true };
29
+ return copyOverwriteOwnership(input);
30
+ }
31
+ /**
32
+ * Resolve same-strategy create-only ownership.
33
+ * @param input - Ownership inputs
34
+ * @returns Skip decision when another stack owns the path
35
+ */
36
+ function createOnlyOwnership(input) {
37
+ return input.strategy === CREATE_ONLY &&
38
+ input.createOnlyOwner !== undefined &&
39
+ input.createOnlyOwner !== input.currentType
40
+ ? {
41
+ process: false,
42
+ reason: "create-only-override",
43
+ owner: input.createOnlyOwner,
44
+ }
45
+ : undefined;
46
+ }
47
+ /**
48
+ * Resolve cross-strategy and same-strategy overwrite ownership.
49
+ * @param input - Ownership inputs
50
+ * @returns Process or skip decision
51
+ */
52
+ function copyOverwriteOwnership(input) {
53
+ if (input.createOnlyOwner !== undefined &&
54
+ input.createOnlyOwner !== input.currentType &&
55
+ isMoreSpecific(input.createOnlyOwner, input.currentType, input.orderedTypes)) {
56
+ return {
57
+ process: false,
58
+ reason: "create-only-cross-owner",
59
+ owner: input.createOnlyOwner,
60
+ };
61
+ }
62
+ if (input.copyOverwriteOwner !== undefined &&
63
+ input.copyOverwriteOwner !== input.currentType) {
64
+ return {
65
+ process: false,
66
+ reason: "copy-overwrite-override",
67
+ owner: input.copyOverwriteOwner,
68
+ };
69
+ }
70
+ return { process: true };
71
+ }
72
+ /**
73
+ * Render one stable human-readable skip reason.
74
+ * @param decision - Skip decision
75
+ * @returns Stable operator-facing reason
76
+ */
77
+ export function templateSkipDescription(decision) {
78
+ const owner = decision.owner;
79
+ switch (decision.reason) {
80
+ case "suppressed-learnings-seed":
81
+ return "legacy learnings ledger pending relocation";
82
+ case "pending-deletion":
83
+ return "pending deletion by detected type";
84
+ case "project-learnings-owned":
85
+ return "owned by all/create-only";
86
+ case "create-only-override":
87
+ return `overridden by ${owner}/create-only`;
88
+ case "create-only-cross-owner":
89
+ return `owned by ${owner}/create-only`;
90
+ case "copy-overwrite-override":
91
+ return `overridden by ${owner}/copy-overwrite`;
92
+ case "ignored":
93
+ return "ignored";
94
+ }
95
+ }
96
+ /**
97
+ * Parse one trusted deletions manifest using Lisa's paths-minus-keep contract.
98
+ * @param candidate - Parsed deletions.json value
99
+ * @returns Paths that remain pending deletion
100
+ */
101
+ export function pendingDeletionPaths(candidate) {
102
+ if (candidate === null || typeof candidate !== "object")
103
+ return [];
104
+ const paths = Reflect.get(candidate, "paths");
105
+ const keep = Reflect.get(candidate, "keep");
106
+ if (!Array.isArray(paths) || !paths.every(path => typeof path === "string")) {
107
+ return [];
108
+ }
109
+ const kept = new Set(Array.isArray(keep) ? keep.filter(item => typeof item === "string") : []);
110
+ return paths.filter(path => !kept.has(path));
111
+ }
112
+ /**
113
+ * Compare canonical stack specificity.
114
+ * @param candidate - Candidate stack type
115
+ * @param current - Current stack type
116
+ * @param orderedTypes - Canonical stack order
117
+ * @returns Whether the candidate is more specific
118
+ */
119
+ function isMoreSpecific(candidate, current, orderedTypes) {
120
+ return orderedTypes.indexOf(candidate) > orderedTypes.indexOf(current);
121
+ }
122
+ /* eslint-enable jsdoc/require-param-description, jsdoc/require-returns -- restore repository documentation defaults */
123
+ //# sourceMappingURL=template-ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-ownership.js","sourceRoot":"","sources":["../../src/core/template-ownership.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,CAk/DpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAo+LjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,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,CAw/DpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAq/LjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -208,7 +208,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
208
208
  "plugins/src/base/agents/pr-mining-specialist.md": "2bf5b933b43ddfbcc9c67f9b98bd68bc6c99ab0c47dca96dcd9e340960df8e55",
209
209
  "plugins/src/base/agents/product-specialist.md": "9c342b1a1c5f8c0eb874db24547fe26d259a97a74e1df5cbc26ffb635025a2e6",
210
210
  "plugins/src/base/agents/quality-specialist.md": "2a1b433fa1be1c8b23c2c83e5f247b851c61e3c253a79caf8a3eb7f326744a22",
211
- "plugins/src/base/agents/security-specialist.md": "7aa6775e6e43a860338fe77e5378a61dcc34c7f76f7d3c840288ae882f6cfd38",
211
+ "plugins/src/base/agents/security-specialist.md": "2d592b4c2666082ef84cae8878be99b9ebd07f75ab77656409beff306f17a6b4",
212
212
  "plugins/src/base/agents/skill-evaluator.md": "83af6324ed0ee0cd5c4132429e137649c3fd616ef6fa5d4bd95579438d401894",
213
213
  "plugins/src/base/agents/spec-conformance-specialist.md": "b869bccbb1289db8ce05be6ea07827f8cdd336bb0e986167a5d08244c7936277",
214
214
  "plugins/src/base/agents/test-specialist.md": "0e6f7137b8338f76d0302cb7a930f50821b4d66dd197977012f32ab5a0c38061",
@@ -305,7 +305,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
305
305
  "plugins/src/base/rules/eager/automation-runbook-contract.md": "b9b4f4d82b366959e90451a2b425ac116953ac074ab6a192dc3909ec8a2be1d6",
306
306
  "plugins/src/base/rules/eager/base-rules.md": "d3a4bd518acf2c6f4e866042542f9155fdbf5b2fdad5747e1afd097bdef15351",
307
307
  "plugins/src/base/rules/eager/claim-archaeology.md": "96afa034075593dfb7433c5c990b472a6b6f7320332da42ef54b1f01fa45664b",
308
- "plugins/src/base/rules/eager/claim-evidence-mapping.md": "d3428bb877c1a25639745d776e20b16c8ade7987e81c7c3bf3175fc0f12dbfb3",
308
+ "plugins/src/base/rules/eager/claim-evidence-mapping.md": "d12a6153b8c22db2826153c479d107c7a885e22cbcdd49e4fd8193e0cbbe8ae3",
309
309
  "plugins/src/base/rules/eager/coding-philosophy.md": "cf2c52032e0368d81f17f002fed5c957ab350d01fc4a43f66b5f366516bac54a",
310
310
  "plugins/src/base/rules/eager/config-resolution.md": "2689c1f47903a5f6c84677fbfd2f1f148096faf122b7498b21d3b0f2345c6c87",
311
311
  "plugins/src/base/rules/eager/convergent-review.md": "700e0ac9c9812316930134c92f0b2d65cee90e70cb45a27b7966edfbe6962bc3",
@@ -333,7 +333,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
333
333
  "plugins/src/base/rules/reference/automation-runbook-contract.md": "920469276ffb2dd3eb1bf33dbdbc740336619d68bf41ae8fda3e8a89d68ffa22",
334
334
  "plugins/src/base/rules/reference/base-rules.md": "487ea1764c4b636ca4a33b78a90e925f028bb9a54182c0795cd1bbdc437a262d",
335
335
  "plugins/src/base/rules/reference/claim-archaeology.md": "fff025d47848c768d5b2c7047de744b7151eb2e44148d2df058c87310859457b",
336
- "plugins/src/base/rules/reference/claim-evidence-mapping.md": "97a7cf623f6df51d57f6d649036c04067d4fe42d4ab66230ac51306f0104b4a1",
336
+ "plugins/src/base/rules/reference/claim-evidence-mapping.md": "49a3bbf4e8a9a8ca9e13eeafa672517d077060cfeb5d9710881ec9f5c3f3ec75",
337
337
  "plugins/src/base/rules/reference/coding-philosophy.md": "fed8381f16a5d6793a49d84d5813d62125808cb2f4981a558b119cf63e2586d9",
338
338
  "plugins/src/base/rules/reference/config-resolution.md": "071b2c91f3b661ee493ea6f37d78f0fdea8004b4e4e7b5e94dcf232df7eceda7",
339
339
  "plugins/src/base/rules/reference/convergent-review.md": "65f309c04095179eac28f8572da3c49c0e02741c4c594fe992ff643b341a4139",
@@ -504,8 +504,8 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
504
504
  "plugins/src/base/skills/lisa-review-local/SKILL.md": "66defe83565ab3633a13e69ce394de64f17f2c2bddbf046bc12c8bbd0ca57f5c",
505
505
  "plugins/src/base/skills/lisa-rework-triage/SKILL.md": "3389740fc0f162be0b684625424e716a0a3e4c99c8cdb4317ec82dcfcf7b57c7",
506
506
  "plugins/src/base/skills/lisa-root-cause-analysis/SKILL.md": "2b1cb5bac2be7e8bb6b852efb0bd499cbcdca6299c342a54e0c8d872821c7364",
507
- "plugins/src/base/skills/lisa-security-review/SKILL.md": "4d5c30c4d637e8438ae02f904e08eb81cde2b3c8384c55469e76ae1b91bb96bd",
508
- "plugins/src/base/skills/lisa-security-zap-scan/SKILL.md": "7abb4231389b54ffeff2dd081c9100500ee6803e1e034ac2a230b173a5d1537a",
507
+ "plugins/src/base/skills/lisa-security-review/SKILL.md": "5a980eaf5efc4fcce66e75521ec5b1eda143a5b0d36e7157234a705dac94e3f5",
508
+ "plugins/src/base/skills/lisa-security-zap-scan/SKILL.md": "a5189442dbf970cc49fd089ab03c386c8a205b856e09501f6ad1966321e7e4b5",
509
509
  "plugins/src/base/skills/lisa-sentry-access/SKILL.md": "ecaf49b42bbf399781a3ebd0b1595e5a8ac44422537832e0442b2f184da0c83c",
510
510
  "plugins/src/base/skills/lisa-setup-atlassian/SKILL.md": "3820aecb57d184fde1cfa988e7e1402d8f2a766a0b3ffbb576de5a6a72b3d5c5",
511
511
  "plugins/src/base/skills/lisa-setup-automations/SKILL.md": "b7dff30df2abe6832b39b2eab8b77adc5da14acf8b44ba59603afb619b92b8fa",
@@ -908,7 +908,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
908
908
  "scripts/cleanup-worktrees.sh": "5215cdecc7683e8501d23eec632d0c138bbf60f12c09b0a357451a557d8ec176",
909
909
  "scripts/copy-codex-scripts.mjs": "2d7082d5033088c85f66995aee9e3ee1e7751435e65bfde8e1cb002e6689d476",
910
910
  "scripts/copy-opencode-plugin-templates.mjs": "bef79103c293b73d7c37e8a8c9fa1b4f1f2e53367898a6326b12f8a0ba8ddc43",
911
- "scripts/detect-stale-workflow-inputs.mjs": "6ae55754a69157bd79e1fe2b5f5b5e6c6e0fbf966a03b9ce643ea8c5248f50b1",
911
+ "scripts/detect-stale-workflow-inputs.mjs": "204e64ccbd87de0edde0045668814638181dec2fa439fa4d8f06a0aaf5082af4",
912
912
  "scripts/fix-namespace-test-assertions.mjs": "bfed6f27753660b38457c3f0a032a6c866691666d2d5d61fc10c3fb2f4f4f412",
913
913
  "scripts/fix-test-assertions-pass2.mjs": "baca043a291120ff52ce61c06397206dc21ca3bef9c23a5975b9c1f896d963c7",
914
914
  "scripts/fix-test-assertions.mjs": "59b5e8cc31e7c7323d20bd180f2ae97c08a9685758483b6fe00ba77317a845f2",
@@ -927,6 +927,8 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
927
927
  "scripts/internal-opencode-skill-policy.json": "d7191650d8a12727549b67df61dbfa61e16cfb9cc31e461cd98d253ceab1612a",
928
928
  "scripts/lib/nest-plugin-commands.mjs": "c52b2f48edbc17edcc60ae33536549829cbc279c60c5d85d912ac6609cae9bea",
929
929
  "scripts/lib/per-agent-hook-filter.mjs": "2565e2cb414f253fa7fd014021120ec9760f4e716bf0ae69e5f7de09a5b966c1",
930
+ "scripts/lib/reusable-workflow-contract.d.mts": "791f01b55dd7a6b5d9a5f4cb9c44167caa146c2fc3c31a2ae4c2d8a350adc2f1",
931
+ "scripts/lib/reusable-workflow-contract.mjs": "134ee2a327290f066f1eb318b5ed53c711557c3e10ed462c00ff5c97cfb20863",
930
932
  "scripts/lisa-commit-and-pr-local.sh": "605409c3ce6ec38ad3275604291a1ceae98f7807a605654263bc14f811c03903",
931
933
  "scripts/lisa-github-environments.sh": "0a76e92f108519abaf3e29991299ec3b0db20ea533e69e6d2a53d802dba9c370",
932
934
  "scripts/lisa-github-repo-settings.sh": "4afbccdfb08c62ba13afee42ec8561a28facf87c61f6f4b80000115328364d54",
@@ -944,6 +946,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
944
946
  "scripts/update-node-version.ts": "a286750ac2006dd84209bb713e85f994d8d15d9bb596ec3e287a187672e5072d",
945
947
  "scripts/update-test-skill-paths.mjs": "e26a3ac716c33013e22bf5223a58457452f5af2038218a0e3a51c244eab5ddc9",
946
948
  "scripts/verify-health-contract-built.mjs": "9e090e3378325c4193e96ba03acff17fb63e40c9e7f2dd89296f72353ab6ba88",
949
+ "scripts/verify-health-deterministic-built.mjs": "ab19427ec4b1dfaa06037cc23b7fc06319b4c12d8c6b67808dddd77e5367fd12",
947
950
  "tsconfig/base.json": "d04a105ec81aa9dc69d230d4a83406d920c305b6fc13c641ebafde0c41fc658f",
948
951
  "tsconfig/build.json": "a743350ea93b0e8d2151c974c5a8a4cbcf946cd7f06c40d83146079bde70afe1",
949
952
  "tsconfig/cdk.json": "f9c0bfad5e40ce30bc037f08abf2f8feb78963484f2929ab17ec187ffe34b732",
@@ -6176,6 +6179,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6176
6179
  "scripts/internal-opencode-skill-policy.json": true,
6177
6180
  "scripts/lib/nest-plugin-commands.mjs": true,
6178
6181
  "scripts/lib/per-agent-hook-filter.mjs": true,
6182
+ "scripts/lib/reusable-workflow-contract.d.mts": true,
6183
+ "scripts/lib/reusable-workflow-contract.mjs": true,
6179
6184
  "scripts/lisa-commit-and-pr-local.sh": true,
6180
6185
  "scripts/lisa-github-environments.sh": true,
6181
6186
  "scripts/lisa-github-repo-settings.sh": true,
@@ -6193,6 +6198,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6193
6198
  "scripts/update-node-version.ts": true,
6194
6199
  "scripts/update-test-skill-paths.mjs": true,
6195
6200
  "scripts/verify-health-contract-built.mjs": true,
6201
+ "scripts/verify-health-deterministic-built.mjs": true,
6196
6202
  "sgconfig.yml": true,
6197
6203
  "specs/.keep": true,
6198
6204
  "src/agy/mcp-installer.ts": true,
@@ -6322,6 +6328,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6322
6328
  "src/core/project-config-kane.ts": true,
6323
6329
  "src/core/project-config.ts": true,
6324
6330
  "src/core/self-apply.ts": true,
6331
+ "src/core/template-ownership.ts": true,
6325
6332
  "src/core/upstream-attribution-body.ts": true,
6326
6333
  "src/detection/detector.interface.ts": true,
6327
6334
  "src/detection/detectors/cdk.ts": true,
@@ -6335,10 +6342,20 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6335
6342
  "src/detection/index.ts": true,
6336
6343
  "src/errors/index.ts": true,
6337
6344
  "src/health/contract.ts": true,
6345
+ "src/health/deadline.ts": true,
6346
+ "src/health/deterministic.ts": true,
6338
6347
  "src/health/directory-sync.ts": true,
6348
+ "src/health/finding-utils.ts": true,
6349
+ "src/health/governance-probes.ts": true,
6350
+ "src/health/hook-inspection.ts": true,
6339
6351
  "src/health/index.ts": true,
6352
+ "src/health/plugin-inspection.ts": true,
6353
+ "src/health/project-probes.ts": true,
6354
+ "src/health/read-only-fs.ts": true,
6355
+ "src/health/ruleset-inspection.ts": true,
6340
6356
  "src/health/storage.ts": true,
6341
6357
  "src/health/strict-validation.ts": true,
6358
+ "src/health/template-inspection.ts": true,
6342
6359
  "src/index.ts": true,
6343
6360
  "src/logging/console-logger.ts": true,
6344
6361
  "src/logging/index.ts": true,
@@ -6576,6 +6593,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6576
6593
  "tests/unit/detection/detectors.test.ts": true,
6577
6594
  "tests/unit/governance-contracts.test.ts": true,
6578
6595
  "tests/unit/health/contract.test.ts": true,
6596
+ "tests/unit/health/deterministic-regressions.test.ts": true,
6597
+ "tests/unit/health/deterministic.test.ts": true,
6579
6598
  "tests/unit/health/directory-sync.test.ts": true,
6580
6599
  "tests/unit/health/gitignore.test.ts": true,
6581
6600
  "tests/unit/health/package-surfaces.test.ts": true,
@@ -6773,6 +6792,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6773
6792
  "tests/unit/strategies/repair-intake-contract.test.ts": true,
6774
6793
  "tests/unit/strategies/repo-scope-claim.test.ts": true,
6775
6794
  "tests/unit/strategies/rework-triage-skill.test.ts": true,
6795
+ "tests/unit/strategies/security-two-bucket-contract.test.ts": true,
6776
6796
  "tests/unit/strategies/setup-confluence-verified-parent.test.ts": true,
6777
6797
  "tests/unit/strategies/setup-github-prd-verified-label.test.ts": true,
6778
6798
  "tests/unit/strategies/setup-github-project-verification.test.ts": true,