@codyswann/lisa 2.265.0 → 2.267.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 (168) 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 +38 -7
  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-implement/SKILL.md +22 -1
  88. package/plugins/lisa/.codex-plugin/skills/lisa-spec-conformance/SKILL.md +43 -11
  89. package/plugins/lisa/agents/spec-conformance-specialist.md +5 -2
  90. package/plugins/lisa/agents/verification-specialist.md +1 -1
  91. package/plugins/lisa/hooks/enforce-verification-gate.sh +83 -9
  92. package/plugins/lisa/rules/reference/verification.md +2 -0
  93. package/plugins/lisa/skills/lisa-implement/SKILL.md +22 -1
  94. package/plugins/lisa/skills/lisa-spec-conformance/SKILL.md +43 -11
  95. package/plugins/lisa-agy/agents/spec-conformance-specialist.md +5 -2
  96. package/plugins/lisa-agy/agents/verification-specialist.md +1 -1
  97. package/plugins/lisa-agy/plugin.json +1 -1
  98. package/plugins/lisa-agy/skills/lisa-implement/SKILL.md +22 -1
  99. package/plugins/lisa-agy/skills/lisa-spec-conformance/SKILL.md +43 -11
  100. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  102. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  103. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  105. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  106. package/plugins/lisa-copilot/agents/spec-conformance-specialist.agent.md +5 -2
  107. package/plugins/lisa-copilot/agents/verification-specialist.agent.md +1 -1
  108. package/plugins/lisa-copilot/hooks/enforce-verification-gate.sh +83 -9
  109. package/plugins/lisa-copilot/rules/reference/verification.md +2 -0
  110. package/plugins/lisa-copilot/skills/lisa-implement/SKILL.md +22 -1
  111. package/plugins/lisa-copilot/skills/lisa-spec-conformance/SKILL.md +43 -11
  112. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  113. package/plugins/lisa-cursor/agents/spec-conformance-specialist.md +5 -2
  114. package/plugins/lisa-cursor/agents/verification-specialist.md +1 -1
  115. package/plugins/lisa-cursor/hooks/enforce-verification-gate.sh +83 -9
  116. package/plugins/lisa-cursor/rules/verification-reference.mdc +2 -0
  117. package/plugins/lisa-cursor/skills/lisa-implement/SKILL.md +22 -1
  118. package/plugins/lisa-cursor/skills/lisa-spec-conformance/SKILL.md +43 -11
  119. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  120. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  121. package/plugins/lisa-expo-agy/plugin.json +1 -1
  122. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  123. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  124. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  125. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  126. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  127. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  128. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  129. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  130. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  131. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  132. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  133. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  134. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  135. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  136. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  137. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  138. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  139. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  140. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  141. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  142. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  143. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  144. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  145. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  146. package/plugins/lisa-rails-agy/plugin.json +1 -1
  147. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  148. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  149. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  150. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  151. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  152. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  153. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  154. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  155. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  156. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  157. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  158. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  159. package/plugins/src/base/agents/spec-conformance-specialist.md +5 -2
  160. package/plugins/src/base/agents/verification-specialist.md +1 -1
  161. package/plugins/src/base/hooks/enforce-verification-gate.sh +83 -9
  162. package/plugins/src/base/rules/reference/verification.md +2 -0
  163. package/plugins/src/base/skills/lisa-implement/SKILL.md +22 -1
  164. package/plugins/src/base/skills/lisa-spec-conformance/SKILL.md +43 -11
  165. package/scripts/detect-stale-workflow-inputs.mjs +21 -148
  166. package/scripts/lib/reusable-workflow-contract.d.mts +24 -0
  167. package/scripts/lib/reusable-workflow-contract.mjs +123 -0
  168. 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,CAq+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,CAigMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -210,10 +210,10 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
210
210
  "plugins/src/base/agents/quality-specialist.md": "2a1b433fa1be1c8b23c2c83e5f247b851c61e3c253a79caf8a3eb7f326744a22",
211
211
  "plugins/src/base/agents/security-specialist.md": "2d592b4c2666082ef84cae8878be99b9ebd07f75ab77656409beff306f17a6b4",
212
212
  "plugins/src/base/agents/skill-evaluator.md": "83af6324ed0ee0cd5c4132429e137649c3fd616ef6fa5d4bd95579438d401894",
213
- "plugins/src/base/agents/spec-conformance-specialist.md": "b869bccbb1289db8ce05be6ea07827f8cdd336bb0e986167a5d08244c7936277",
213
+ "plugins/src/base/agents/spec-conformance-specialist.md": "f589e4d543a617d3c421aa28d6583e1b25e0b18fc83412e6d544a389bdac225c",
214
214
  "plugins/src/base/agents/test-specialist.md": "0e6f7137b8338f76d0302cb7a930f50821b4d66dd197977012f32ab5a0c38061",
215
215
  "plugins/src/base/agents/tracker-mining-specialist.md": "fef49c3ca8622c83a54d34b3f960471e0f2ad50e6889f691585b0f208180f6bd",
216
- "plugins/src/base/agents/verification-specialist.md": "5e016e5f03435a7a8dc75934173d962138868dc0c538630080468af527c60076",
216
+ "plugins/src/base/agents/verification-specialist.md": "32d8a660ba486279fdbb6d0c6665bee36a9703e0cb05e1ab0629b82bc26ebd04",
217
217
  "plugins/src/base/commands/agent-ready.md": "b1bc19c90330b9885b44f733e83cc6b44afa9b5e9fd2e9aba99995480e0829e1",
218
218
  "plugins/src/base/commands/analyze-claude-remote.md": "d3caa481582cec72b030d02cf65b4c06e23c554ca08d37204e64773a6288db1f",
219
219
  "plugins/src/base/commands/attribute-failure.md": "bf2fdad4dfa54c47992176b2e97ab1a6a78a1e0066e5d6e2e14a72b97315c276",
@@ -287,7 +287,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
287
287
  "plugins/src/base/hooks/cleanup-stale-worktrees.sh": "c9b2fcca1b34d6f636b5289ece11b254cbb8ee2c2bac5c2e426b6f4dcfa972f2",
288
288
  "plugins/src/base/hooks/debug-hook.sh": "50124ffc72d7914553b0ed259882f2202643cdccf238380675ac1ff6d8d27d05",
289
289
  "plugins/src/base/hooks/enforce-team-first.sh": "51d2e929ea6c04e7c7851be7849dd7d3e7cd0c211b4c8fb856e858a51ddeeb58",
290
- "plugins/src/base/hooks/enforce-verification-gate.sh": "827b1a48622ad6b5715d924d555fa19715e84f787cf45de30f5fb389c2281b7a",
290
+ "plugins/src/base/hooks/enforce-verification-gate.sh": "120cec1795ad4cb49ab67a54fb0c3552185338bb0b8dda0f19f70dc1dac288f9",
291
291
  "plugins/src/base/hooks/inject-flow-context.sh": "f4ab07065762d592c0fc36be2e4918e767b293aaa4094b9d85d69010576c6dbf",
292
292
  "plugins/src/base/hooks/inject-rules.sh": "89a3780250e21aefa0eb83235523835ec0f83b25807b1ccc21f7a397a0459842",
293
293
  "plugins/src/base/hooks/install-pkgs.sh": "e9a13faba849a277410dde911ab102ee6f88ef915b33571bb1d4eef904172db5",
@@ -356,7 +356,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
356
356
  "plugins/src/base/rules/reference/tracked-work.md": "cc956e7a61d8f65bfc4e0e3bc4c3da1b5a9e541683aa17dc1850979d04abac24",
357
357
  "plugins/src/base/rules/reference/upstream-to-lisa.md": "dcf07f8eba66aaf1d132bfaeff73cbf7576279822893235a3c3f8cbc4a4a3323",
358
358
  "plugins/src/base/rules/reference/usage-accounting.md": "d2a24f8f176dbd900beb6e396fc669008b0be0c9033fac5c1c1ecc19002bd7c2",
359
- "plugins/src/base/rules/reference/verification.md": "aeb348f8bcf4cd3dc1e6c8e3984afd4461bb2f1283055b9298dab3979c53a115",
359
+ "plugins/src/base/rules/reference/verification.md": "9aa9ec95a739268181b74d6952fa7cda16c96d633ece6a3e889d3b28a8f8ffb7",
360
360
  "plugins/src/base/rules/reference/wiki-knowledge-source.md": "305d38e13984c2a64144f302336405d0ccbec493a6ed3ec67d210fed44940717",
361
361
  "plugins/src/base/scripts/automation-run-record.mjs": "89143e06975d8333b137fd2bdb5f12bcd703403752337f00c25d18fefba6a4c8",
362
362
  "plugins/src/base/scripts/automation-status-claude-adapter.mjs": "b1054acf4a5cbbe5354bd62a22b96533bcbc69b6cb9245976ceb8af638a04494",
@@ -416,7 +416,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
416
416
  "plugins/src/base/skills/lisa-github-verify/SKILL.md": "0d8dce0fff60591d1efff30e340c2cbbef2e8a849ed650389f2391518580ca53",
417
417
  "plugins/src/base/skills/lisa-github-write-issue/SKILL.md": "ee54b3d14cc5dd3a68a8c36590102dd02f49334c9493ad52fa8c7f35157073b1",
418
418
  "plugins/src/base/skills/lisa-github-write-prd/SKILL.md": "bc919c52e2f42129d41a3f40279d2def99486ec58bed2dab51ca7166b427a947",
419
- "plugins/src/base/skills/lisa-implement/SKILL.md": "046bc040b7a1182f71dd4be7a04e977a963a5ab707fad627d89ef0877d4a789b",
419
+ "plugins/src/base/skills/lisa-implement/SKILL.md": "634f09dbd2654af070be393f5fd41e8d7fedee7437be2890e54d47ec59258539",
420
420
  "plugins/src/base/skills/lisa-improve-code-complexity/SKILL.md": "24ab5b193b409db6ee6bee981a1c0a48d08991782d7846116ad01658c8bc1ae8",
421
421
  "plugins/src/base/skills/lisa-improve-harness/SKILL.md": "bafda5d2f9b86c48cd16bf0015528fdf5891675221d662fdc533aaad66aad669",
422
422
  "plugins/src/base/skills/lisa-improve-max-lines-per-function/SKILL.md": "95c875950c9848fdaf520a18b9bbb264e33d7347be10170add768e01d9cd8e52",
@@ -518,7 +518,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
518
518
  "plugins/src/base/skills/lisa-setup-notion/SKILL.md": "f5a1e9290789fd1c33675168d30461fb24a11c98a433ef777c1f536bc2f905ef",
519
519
  "plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md": "7a134f6ce7857152076c2a85e0777d88f1f22b0ecfe607dd2fc6f8a286547910",
520
520
  "plugins/src/base/skills/lisa-sonarcloud-access/SKILL.md": "924b6f54e38bf000625fcbecef828e78f7b4a401c36a5353b7c22ff12d530d5c",
521
- "plugins/src/base/skills/lisa-spec-conformance/SKILL.md": "0d0b5576e1c3a1cd3352d613851d399c825de6fa31c1c75a3c691171ce7817c3",
521
+ "plugins/src/base/skills/lisa-spec-conformance/SKILL.md": "3bcaf6d3b47917d00732542e30a8a302c3e293a9957faf79cac5b1d75cc538a2",
522
522
  "plugins/src/base/skills/lisa-sync-down/SKILL.md": "c32e6a4e3115ca32b7d335e90d0a73b243c6c631a2d192568423be0cb5944e84",
523
523
  "plugins/src/base/skills/lisa-task-decomposition/SKILL.md": "bcc5940772c018e1b72a527b8378895596a4668844bc9d10599f47be5bd69172",
524
524
  "plugins/src/base/skills/lisa-task-triage/SKILL.md": "c6e11b6d195560e6bd7b51fede65c155567c35208801a700a26d95679b03484e",
@@ -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,
@@ -6434,6 +6451,15 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6434
6451
  "tests/fixtures/queue-status-prd-readers/github.json": true,
6435
6452
  "tests/fixtures/queue-status-prd-readers/linear.json": true,
6436
6453
  "tests/fixtures/queue-status-prd-readers/notion.json": true,
6454
+ "tests/fixtures/verification/artifact_mismatch.json": true,
6455
+ "tests/fixtures/verification/evidence_digest_mismatch.json": true,
6456
+ "tests/fixtures/verification/evidence_kind_mismatch.json": true,
6457
+ "tests/fixtures/verification/not_established_unreviewed.json": true,
6458
+ "tests/fixtures/verification/pass_with_named_unproved_edge.json": true,
6459
+ "tests/fixtures/verification/security_shaped_without_reproducer.json": true,
6460
+ "tests/fixtures/verification/v1_back_compat.json": true,
6461
+ "tests/fixtures/verification/v2_pass_clean.json": true,
6462
+ "tests/fixtures/verification/v2_structurally_invalid_claims.json": true,
6437
6463
  "tests/fixtures/wiki-safety/allowed-contacts.md": true,
6438
6464
  "tests/fixtures/wiki-safety/redaction-source.md": true,
6439
6465
  "tests/helpers/__fixtures__/wiki-status-fixture.ts": true,
@@ -6576,6 +6602,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6576
6602
  "tests/unit/detection/detectors.test.ts": true,
6577
6603
  "tests/unit/governance-contracts.test.ts": true,
6578
6604
  "tests/unit/health/contract.test.ts": true,
6605
+ "tests/unit/health/deterministic-regressions.test.ts": true,
6606
+ "tests/unit/health/deterministic.test.ts": true,
6579
6607
  "tests/unit/health/directory-sync.test.ts": true,
6580
6608
  "tests/unit/health/gitignore.test.ts": true,
6581
6609
  "tests/unit/health/package-surfaces.test.ts": true,
@@ -6598,6 +6626,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6598
6626
  "tests/unit/hooks/parity-safety-net.test.ts": true,
6599
6627
  "tests/unit/hooks/post-checkout.test.ts": true,
6600
6628
  "tests/unit/hooks/track-plan-sessions.test.ts": true,
6629
+ "tests/unit/hooks/verification-failure-mode-fixtures.test.ts": true,
6601
6630
  "tests/unit/hooks/work-item-wiring.test.ts": true,
6602
6631
  "tests/unit/hooks/worktree-create.test.ts": true,
6603
6632
  "tests/unit/migrations/ensure-audit-ignore-local-exclusions.test.ts": true,
@@ -6676,6 +6705,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6676
6705
  "tests/unit/strategies/automation-status-scaffold.test.ts": true,
6677
6706
  "tests/unit/strategies/automations-retirement.test.ts": true,
6678
6707
  "tests/unit/strategies/automations-skills.test.ts": true,
6708
+ "tests/unit/strategies/bce-parity-and-consumption.test.ts": true,
6679
6709
  "tests/unit/strategies/browser-verification-controller-contract.test.ts": true,
6680
6710
  "tests/unit/strategies/build-intake-duplicate-closeout.test.ts": true,
6681
6711
  "tests/unit/strategies/build-ready-control.test.ts": true,
@@ -6904,6 +6934,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6904
6934
  "wiki/architecture/pattern-b-fan-out-spec.md": true,
6905
6935
  "wiki/architecture/template-governance.md": true,
6906
6936
  "wiki/concepts/.gitkeep": true,
6937
+ "wiki/concepts/bounded-claims-evidence-system.md": true,
6907
6938
  "wiki/concepts/coding-agent-feature-taxonomy.md": true,
6908
6939
  "wiki/concepts/lisa-vocabulary.md": true,
6909
6940
  "wiki/decisions/.gitkeep": true,