@codyswann/lisa 4.86.0 → 4.87.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 (246) hide show
  1. package/all/copy-overwrite/scripts/lib/completion-proof-content.mjs +63 -22
  2. package/all/copy-overwrite/scripts/lib/npm-update-hosted-hook.mjs +6 -1
  3. package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +19 -3
  4. package/all/copy-overwrite/scripts/npm-updater-helper-graph.json +2 -2
  5. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  6. package/dist/core/lisa-owned-hash-ledger.js +16 -0
  7. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  8. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  9. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  10. package/dist/core/upstream-evidence-manifest.js +35 -28
  11. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  12. package/dist/opencode/plugin-templates/parity-safety-net.sh +19 -3
  13. package/package.json +4 -4
  14. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  16. package/plugins/lisa/.codex-plugin/skills/lisa-confluence-to-tracker/SKILL.md +5 -0
  17. package/plugins/lisa/.codex-plugin/skills/lisa-delivery-effectiveness/SKILL.md +7 -3
  18. package/plugins/lisa/.codex-plugin/skills/lisa-github-to-tracker/SKILL.md +5 -0
  19. package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +2 -0
  20. package/plugins/lisa/.codex-plugin/skills/lisa-implement/SKILL.md +2 -0
  21. package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +2 -0
  22. package/plugins/lisa/.codex-plugin/skills/lisa-learnings-audit/SKILL.md +9 -0
  23. package/plugins/lisa/.codex-plugin/skills/lisa-linear-to-tracker/SKILL.md +5 -0
  24. package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +2 -0
  25. package/plugins/lisa/.codex-plugin/skills/lisa-notion-to-tracker/SKILL.md +5 -0
  26. package/plugins/lisa/.codex-plugin/skills/lisa-parity-sentry-sdk-setup/SKILL.md +24 -17
  27. package/plugins/lisa/.codex-plugin/skills/lisa-persist-learning/SKILL.md +27 -8
  28. package/plugins/lisa/.codex-plugin/skills/lisa-plan/SKILL.md +2 -0
  29. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/validate-config.mjs +39 -5
  30. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/SKILL.md +30 -5
  31. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/scripts/cli-human.mjs +3 -1
  32. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/scripts/cli-usage.mjs +11 -5
  33. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/scripts/human-needed.mjs +112 -5
  34. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/scripts/session-manager.mjs +5 -1
  35. package/plugins/lisa/.codex-plugin/skills/lisa-task-decomposition/SKILL.md +18 -0
  36. package/plugins/lisa/agents/learning-judge.md +34 -14
  37. package/plugins/lisa/hooks/parity-safety-net.sh +19 -3
  38. package/plugins/lisa/rules/reference/ready-role-filing.md +4 -0
  39. package/plugins/lisa/rules/reference/work-item-definition-of-ready.md +8 -0
  40. package/plugins/lisa/skills/lisa-confluence-to-tracker/SKILL.md +5 -0
  41. package/plugins/lisa/skills/lisa-delivery-effectiveness/SKILL.md +7 -3
  42. package/plugins/lisa/skills/lisa-delivery-effectiveness/agents/openai.yaml +2 -2
  43. package/plugins/lisa/skills/lisa-github-to-tracker/SKILL.md +5 -0
  44. package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +2 -0
  45. package/plugins/lisa/skills/lisa-implement/SKILL.md +2 -0
  46. package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +2 -0
  47. package/plugins/lisa/skills/lisa-learnings-audit/SKILL.md +9 -0
  48. package/plugins/lisa/skills/lisa-linear-to-tracker/SKILL.md +5 -0
  49. package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +2 -0
  50. package/plugins/lisa/skills/lisa-notion-to-tracker/SKILL.md +5 -0
  51. package/plugins/lisa/skills/lisa-parity-sentry-sdk-setup/SKILL.md +24 -17
  52. package/plugins/lisa/skills/lisa-persist-learning/SKILL.md +27 -8
  53. package/plugins/lisa/skills/lisa-plan/SKILL.md +2 -0
  54. package/plugins/lisa/skills/lisa-secrets-access/scripts/validate-config.mjs +39 -5
  55. package/plugins/lisa/skills/lisa-session-manager/SKILL.md +30 -5
  56. package/plugins/lisa/skills/lisa-session-manager/scripts/cli-human.mjs +3 -1
  57. package/plugins/lisa/skills/lisa-session-manager/scripts/cli-usage.mjs +11 -5
  58. package/plugins/lisa/skills/lisa-session-manager/scripts/human-needed.mjs +112 -5
  59. package/plugins/lisa/skills/lisa-session-manager/scripts/session-manager.mjs +5 -1
  60. package/plugins/lisa/skills/lisa-task-decomposition/SKILL.md +18 -0
  61. package/plugins/lisa-agy/agents/learning-judge.md +34 -14
  62. package/plugins/lisa-agy/hooks/parity-safety-net.sh +19 -3
  63. package/plugins/lisa-agy/plugin.json +1 -1
  64. package/plugins/lisa-agy/skills/lisa-confluence-to-tracker/SKILL.md +5 -0
  65. package/plugins/lisa-agy/skills/lisa-delivery-effectiveness/SKILL.md +7 -3
  66. package/plugins/lisa-agy/skills/lisa-github-to-tracker/SKILL.md +5 -0
  67. package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +2 -0
  68. package/plugins/lisa-agy/skills/lisa-implement/SKILL.md +2 -0
  69. package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +2 -0
  70. package/plugins/lisa-agy/skills/lisa-learnings-audit/SKILL.md +9 -0
  71. package/plugins/lisa-agy/skills/lisa-linear-to-tracker/SKILL.md +5 -0
  72. package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +2 -0
  73. package/plugins/lisa-agy/skills/lisa-notion-to-tracker/SKILL.md +5 -0
  74. package/plugins/lisa-agy/skills/lisa-parity-sentry-sdk-setup/SKILL.md +24 -17
  75. package/plugins/lisa-agy/skills/lisa-persist-learning/SKILL.md +27 -8
  76. package/plugins/lisa-agy/skills/lisa-plan/SKILL.md +2 -0
  77. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/validate-config.mjs +39 -5
  78. package/plugins/lisa-agy/skills/lisa-session-manager/SKILL.md +30 -5
  79. package/plugins/lisa-agy/skills/lisa-session-manager/scripts/cli-human.mjs +3 -1
  80. package/plugins/lisa-agy/skills/lisa-session-manager/scripts/cli-usage.mjs +11 -5
  81. package/plugins/lisa-agy/skills/lisa-session-manager/scripts/human-needed.mjs +112 -5
  82. package/plugins/lisa-agy/skills/lisa-session-manager/scripts/session-manager.mjs +5 -1
  83. package/plugins/lisa-agy/skills/lisa-task-decomposition/SKILL.md +18 -0
  84. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  85. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  86. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  87. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-cdk-devin/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-cdk-devin/.devin-plugin/plugin.json +1 -1
  91. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-copilot/agents/learning-judge.agent.md +34 -14
  93. package/plugins/lisa-copilot/hooks/parity-safety-net.sh +19 -3
  94. package/plugins/lisa-copilot/rules/reference/ready-role-filing.md +4 -0
  95. package/plugins/lisa-copilot/rules/reference/work-item-definition-of-ready.md +8 -0
  96. package/plugins/lisa-copilot/skills/lisa-confluence-to-tracker/SKILL.md +5 -0
  97. package/plugins/lisa-copilot/skills/lisa-delivery-effectiveness/SKILL.md +7 -3
  98. package/plugins/lisa-copilot/skills/lisa-github-to-tracker/SKILL.md +5 -0
  99. package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +2 -0
  100. package/plugins/lisa-copilot/skills/lisa-implement/SKILL.md +2 -0
  101. package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +2 -0
  102. package/plugins/lisa-copilot/skills/lisa-learnings-audit/SKILL.md +9 -0
  103. package/plugins/lisa-copilot/skills/lisa-linear-to-tracker/SKILL.md +5 -0
  104. package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +2 -0
  105. package/plugins/lisa-copilot/skills/lisa-notion-to-tracker/SKILL.md +5 -0
  106. package/plugins/lisa-copilot/skills/lisa-parity-sentry-sdk-setup/SKILL.md +24 -17
  107. package/plugins/lisa-copilot/skills/lisa-persist-learning/SKILL.md +27 -8
  108. package/plugins/lisa-copilot/skills/lisa-plan/SKILL.md +2 -0
  109. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/validate-config.mjs +39 -5
  110. package/plugins/lisa-copilot/skills/lisa-session-manager/SKILL.md +30 -5
  111. package/plugins/lisa-copilot/skills/lisa-session-manager/scripts/cli-human.mjs +3 -1
  112. package/plugins/lisa-copilot/skills/lisa-session-manager/scripts/cli-usage.mjs +11 -5
  113. package/plugins/lisa-copilot/skills/lisa-session-manager/scripts/human-needed.mjs +112 -5
  114. package/plugins/lisa-copilot/skills/lisa-session-manager/scripts/session-manager.mjs +5 -1
  115. package/plugins/lisa-copilot/skills/lisa-task-decomposition/SKILL.md +18 -0
  116. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  117. package/plugins/lisa-cursor/agents/learning-judge.md +34 -14
  118. package/plugins/lisa-cursor/hooks/parity-safety-net.sh +19 -3
  119. package/plugins/lisa-cursor/rules/ready-role-filing-reference.mdc +4 -0
  120. package/plugins/lisa-cursor/rules/work-item-definition-of-ready-reference.mdc +8 -0
  121. package/plugins/lisa-cursor/skills/lisa-confluence-to-tracker/SKILL.md +5 -0
  122. package/plugins/lisa-cursor/skills/lisa-delivery-effectiveness/SKILL.md +7 -3
  123. package/plugins/lisa-cursor/skills/lisa-github-to-tracker/SKILL.md +5 -0
  124. package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +2 -0
  125. package/plugins/lisa-cursor/skills/lisa-implement/SKILL.md +2 -0
  126. package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +2 -0
  127. package/plugins/lisa-cursor/skills/lisa-learnings-audit/SKILL.md +9 -0
  128. package/plugins/lisa-cursor/skills/lisa-linear-to-tracker/SKILL.md +5 -0
  129. package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +2 -0
  130. package/plugins/lisa-cursor/skills/lisa-notion-to-tracker/SKILL.md +5 -0
  131. package/plugins/lisa-cursor/skills/lisa-parity-sentry-sdk-setup/SKILL.md +24 -17
  132. package/plugins/lisa-cursor/skills/lisa-persist-learning/SKILL.md +27 -8
  133. package/plugins/lisa-cursor/skills/lisa-plan/SKILL.md +2 -0
  134. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/validate-config.mjs +39 -5
  135. package/plugins/lisa-cursor/skills/lisa-session-manager/SKILL.md +30 -5
  136. package/plugins/lisa-cursor/skills/lisa-session-manager/scripts/cli-human.mjs +3 -1
  137. package/plugins/lisa-cursor/skills/lisa-session-manager/scripts/cli-usage.mjs +11 -5
  138. package/plugins/lisa-cursor/skills/lisa-session-manager/scripts/human-needed.mjs +112 -5
  139. package/plugins/lisa-cursor/skills/lisa-session-manager/scripts/session-manager.mjs +5 -1
  140. package/plugins/lisa-cursor/skills/lisa-task-decomposition/SKILL.md +18 -0
  141. package/plugins/lisa-devin/.claude-plugin/plugin.json +1 -1
  142. package/plugins/lisa-devin/.devin-plugin/plugin.json +1 -1
  143. package/plugins/lisa-devin/agents/learning-judge.md +34 -14
  144. package/plugins/lisa-devin/hooks/parity-safety-net.sh +19 -3
  145. package/plugins/lisa-devin/rules/reference/ready-role-filing.md +4 -0
  146. package/plugins/lisa-devin/rules/reference/work-item-definition-of-ready.md +8 -0
  147. package/plugins/lisa-devin/skills/lisa-confluence-to-tracker/SKILL.md +5 -0
  148. package/plugins/lisa-devin/skills/lisa-delivery-effectiveness/SKILL.md +7 -3
  149. package/plugins/lisa-devin/skills/lisa-github-to-tracker/SKILL.md +5 -0
  150. package/plugins/lisa-devin/skills/lisa-github-validate-issue/SKILL.md +2 -0
  151. package/plugins/lisa-devin/skills/lisa-implement/SKILL.md +2 -0
  152. package/plugins/lisa-devin/skills/lisa-jira-validate-ticket/SKILL.md +2 -0
  153. package/plugins/lisa-devin/skills/lisa-learnings-audit/SKILL.md +9 -0
  154. package/plugins/lisa-devin/skills/lisa-linear-to-tracker/SKILL.md +5 -0
  155. package/plugins/lisa-devin/skills/lisa-linear-validate-issue/SKILL.md +2 -0
  156. package/plugins/lisa-devin/skills/lisa-notion-to-tracker/SKILL.md +5 -0
  157. package/plugins/lisa-devin/skills/lisa-parity-sentry-sdk-setup/SKILL.md +24 -17
  158. package/plugins/lisa-devin/skills/lisa-persist-learning/SKILL.md +27 -8
  159. package/plugins/lisa-devin/skills/lisa-plan/SKILL.md +2 -0
  160. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/validate-config.mjs +39 -5
  161. package/plugins/lisa-devin/skills/lisa-session-manager/SKILL.md +30 -5
  162. package/plugins/lisa-devin/skills/lisa-session-manager/scripts/cli-human.mjs +3 -1
  163. package/plugins/lisa-devin/skills/lisa-session-manager/scripts/cli-usage.mjs +11 -5
  164. package/plugins/lisa-devin/skills/lisa-session-manager/scripts/human-needed.mjs +112 -5
  165. package/plugins/lisa-devin/skills/lisa-session-manager/scripts/session-manager.mjs +5 -1
  166. package/plugins/lisa-devin/skills/lisa-task-decomposition/SKILL.md +18 -0
  167. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  168. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  169. package/plugins/lisa-expo-agy/plugin.json +1 -1
  170. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  171. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  172. package/plugins/lisa-expo-devin/.claude-plugin/plugin.json +1 -1
  173. package/plugins/lisa-expo-devin/.devin-plugin/plugin.json +1 -1
  174. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  175. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  176. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  177. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  178. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  179. package/plugins/lisa-harper-fabric-devin/.claude-plugin/plugin.json +1 -1
  180. package/plugins/lisa-harper-fabric-devin/.devin-plugin/plugin.json +1 -1
  181. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  182. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  183. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  184. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  185. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  186. package/plugins/lisa-nestjs-devin/.claude-plugin/plugin.json +1 -1
  187. package/plugins/lisa-nestjs-devin/.devin-plugin/plugin.json +1 -1
  188. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  189. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  190. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  191. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  192. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  193. package/plugins/lisa-openclaw-devin/.claude-plugin/plugin.json +1 -1
  194. package/plugins/lisa-openclaw-devin/.devin-plugin/plugin.json +1 -1
  195. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  196. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  197. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  198. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  199. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  200. package/plugins/lisa-phaser-devin/.claude-plugin/plugin.json +1 -1
  201. package/plugins/lisa-phaser-devin/.devin-plugin/plugin.json +1 -1
  202. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  203. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  204. package/plugins/lisa-rails-agy/plugin.json +1 -1
  205. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  206. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  207. package/plugins/lisa-rails-devin/.claude-plugin/plugin.json +1 -1
  208. package/plugins/lisa-rails-devin/.devin-plugin/plugin.json +1 -1
  209. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  210. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  211. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  212. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  213. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  214. package/plugins/lisa-typescript-devin/.claude-plugin/plugin.json +1 -1
  215. package/plugins/lisa-typescript-devin/.devin-plugin/plugin.json +1 -1
  216. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  217. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  218. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  219. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  220. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  221. package/plugins/lisa-wiki-devin/.claude-plugin/plugin.json +1 -1
  222. package/plugins/lisa-wiki-devin/.devin-plugin/plugin.json +1 -1
  223. package/plugins/src/base/agents/learning-judge.md +34 -14
  224. package/plugins/src/base/hooks/parity-safety-net.sh +19 -3
  225. package/plugins/src/base/rules/reference/ready-role-filing.md +4 -0
  226. package/plugins/src/base/rules/reference/work-item-definition-of-ready.md +8 -0
  227. package/plugins/src/base/skills/lisa-confluence-to-tracker/SKILL.md +5 -0
  228. package/plugins/src/base/skills/lisa-delivery-effectiveness/SKILL.md +7 -3
  229. package/plugins/src/base/skills/lisa-github-to-tracker/SKILL.md +5 -0
  230. package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +2 -0
  231. package/plugins/src/base/skills/lisa-implement/SKILL.md +2 -0
  232. package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +2 -0
  233. package/plugins/src/base/skills/lisa-learnings-audit/SKILL.md +9 -0
  234. package/plugins/src/base/skills/lisa-linear-to-tracker/SKILL.md +5 -0
  235. package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +2 -0
  236. package/plugins/src/base/skills/lisa-notion-to-tracker/SKILL.md +5 -0
  237. package/plugins/src/base/skills/lisa-parity-sentry-sdk-setup/SKILL.md +24 -17
  238. package/plugins/src/base/skills/lisa-persist-learning/SKILL.md +27 -8
  239. package/plugins/src/base/skills/lisa-plan/SKILL.md +2 -0
  240. package/plugins/src/base/skills/lisa-secrets-access/scripts/validate-config.mjs +39 -5
  241. package/plugins/src/base/skills/lisa-session-manager/SKILL.md +30 -5
  242. package/plugins/src/base/skills/lisa-session-manager/scripts/cli-human.mjs +3 -1
  243. package/plugins/src/base/skills/lisa-session-manager/scripts/cli-usage.mjs +11 -5
  244. package/plugins/src/base/skills/lisa-session-manager/scripts/human-needed.mjs +112 -5
  245. package/plugins/src/base/skills/lisa-session-manager/scripts/session-manager.mjs +5 -1
  246. package/plugins/src/base/skills/lisa-task-decomposition/SKILL.md +18 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.86.0",
3
+ "version": "4.87.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: learning-judge
3
- description: Skeptical judgment gate for candidate learnings. Classifies each candidate as durable-learning, one-off, misunderstanding/spec-gap, or lisa-upstream with mandatory evidence citation. Hostile default — most candidates are DROPPED; only durable-learning ever persists. Use whenever a failure signal or debrief produces a claimed learning that something wants to write to the project learnings surface.
3
+ description: Skeptical judgment gate for candidate learnings. Classifies each candidate as durable-learning, planning-miss, one-off, misunderstanding/spec-gap, or lisa-upstream with mandatory evidence citation. Hostile default — most candidates are DROPPED; only durable-learning and planning-miss (a dispatched item that needed a human because planning let a gap through) persist. Use whenever a failure signal or debrief produces a claimed learning that something wants to write to the project learnings surface.
4
4
  ---
5
5
 
6
6
  # Learning Judge Agent
@@ -30,6 +30,7 @@ Each candidate you evaluate is a single object:
30
30
  | `evidence_links[]` | string[] | Concrete evidence URLs/refs available for citation (failure logs, rejection comments, prior incidents). |
31
31
  | `scope_hint` | `project` \| `upstream` | The submitter's guess at where the learning belongs. A hint only — attribution below decides. |
32
32
  | `triggering_issue` | string | The issue/work item whose failure produced this candidate. |
33
+ | `signal` | `planning-miss` \| absent | Set by a caller that saw a dispatched item stop for a human or file a new ticket mid-build (`lisa-session-manager`, `lisa-implement`). A hint only — Step 2.5 decides. |
33
34
  | `fingerprint` | string | Stable dedupe key for this candidate (computed by the caller, e.g. `lisa-persist-learning`). Echo it back unchanged. |
34
35
 
35
36
  A candidate missing `triggering_issue` or with an empty evidence set can still be evaluated — but it can never reach `durable-learning`, because the mandatory citations below would be impossible.
@@ -51,27 +52,41 @@ Determine what actually caused the failure. If the root cause is a Lisa-shipped
51
52
  Only candidates that survive Steps 0–1 continue. Answer both questions, each with **cited** concrete evidence (from `evidence_links`, `provenance`, or your own tracker/repo lookup):
52
53
 
53
54
  1. **Prevention** — Would this exact rule, had it existed, have prevented the triggering failure? Re-walk the failure with the rule in force. If the failure would have happened anyway, the rule is a superstition: not durable.
54
- 2. **Recurrence** — Does the failure **class** recur? Cite concrete references: a prior issue, PR, revert, rejection comment, or incident showing the same class of mistake on a different occasion. **No recurrence evidence ⇒ never `durable-learning`.** A single occurrence, however painful, is `one-off` — the class may prove itself later, and the candidate can return with evidence.
55
+ 2. **Recurrence** — Does the failure **class** recur? Cite concrete references: a prior issue, PR, revert, rejection comment, or incident showing the same class of mistake on a different occasion. **No recurrence evidence ⇒ never `durable-learning`.** A single occurrence, however painful, is `one-off` — the class may prove itself later, and the candidate can return with evidence. The one exception is a requirement gap that reached a dispatched worker: judge it under Step 2.5 before concluding `one-off`.
55
56
 
56
57
  Do not accept the candidate's own `why` as evidence — it is the claim under test.
57
58
 
58
- ### Step 3: Classify (4-way taxonomy)
59
+ ### Step 2.5: Planning miss (a gap planning let through)
60
+
61
+ A missing, ambiguous, contradictory or undecided requirement is not always a one-ticket problem. PRD intake, decomposition and the ready gate (`work-item-definition-of-ready`, the S18 stateless-pickup dry-run) exist so a dispatched worker never needs a human. When one does, the item's own question gets answered on the item, but the process that let it through is unchanged — dropping the signal guarantees the next PRD repeats it. So a requirement gap is a `planning-miss`, not a drop, when **all** of these hold, each established by cited evidence rather than the candidate's word. (The planning skills are Lisa-shipped, but that alone does not make the miss `lisa-upstream` in Step 1: a check about this project's domain — its report formats, its repos, its integrations — belongs here. Only a domain-free check every project's planning would miss is a Lisa gate defect.)
62
+
63
+ 1. **It was dispatched.** The item had passed the ready gate — it was in the ready role and was picked up for dispatch — claimed by a worker, or held by the dispatcher while routing it to a repository (a `repo-route` hold: the item is past the ready gate and mid-dispatch, and `repo-scope-split` at decomposition should have made the route unambiguous) — before the gap surfaced. Cite the claim, the dispatch, or the ready-role history. A gap found at PRD intake, during validation, or before the ready flip is the gate **working**: that is `misunderstanding/spec-gap`.
64
+ 2. **The information really was missing.** Quote what the worker could not find, and confirm it is absent from the item and the links it resolves. If the answer was on the item and the worker misread it, it is `misunderstanding/spec-gap` (the worker's defect, not planning's).
65
+ 3. **It is not environmental or planned.** An outage, an expired credential, a flaky tool, missing tool access (`tool-access-gate`), or a decision planning **flagged as a human gate** on the item (`human_gate`, `[lisa-human-gate]`) is not a planning miss: asking there was the plan working. Neither is an item that exhausted its attempts.
66
+ 4. **A planning check would have caught it.** This is Step 2's prevention question, asked of planning instead of the build. Name the stage that should have caught it — `prd` (the requirement was never decided), `decomposition` (the work was mis-scoped, mis-split, or depended on something nobody filed, including a leaf the router could not place in one repo per `repo-scope-split`), or `ready-gate` (the item looked ready but S18 should have asked the question) — and re-walk it: with the check in force, the item would not have reached Ready with this gap.
67
+
68
+ **The rule is the check planning should have run, never the answer.** Rewrite the candidate's `rule` as `Planning (<stage>): <check>` — e.g. `Planning (decomposition): an export ticket must name its report format before it is Ready.` — never `Exports use CSV.`, which only answers the one ticket and belongs on the item. A rule that only makes sense for this one item is not a check: drop it as `misunderstanding/spec-gap`. The `why` names the stage that let it through and quotes what the worker could not find. The prefix is load-bearing: planning skills select these entries from the bounded projection by it (`lisa-task-decomposition` step 0).
69
+
70
+ **Recurrence never blocks a first occurrence.** A first-occurrence planning miss persists at `low` confidence, so its persistence PR waits for a human to merge it. That is a deliberate, bounded exception to Step 2's recurrence requirement. The hostile default exists because a plausible-but-wrong rule would reach every future session unattended; a `low` rule never does, because a human reads it at the gate first. Meanwhile the signal is unusually strong and unusually rare: each occurrence already cost the human interruption the gate exists to prevent, so waiting for a second occurrence costs a second interruption and teaches nothing new. And the rule only adds a check to planning — a wrong one costs a planning question, not changed build behaviour. With recurrence evidence (another dispatched item that stopped on the same class of gap), Step 4 may grant `high`.
71
+
72
+ ### Step 3: Classify (5-way taxonomy)
59
73
 
60
74
  Exactly one of:
61
75
 
62
- - **`durable-learning`** — both falsification questions pass with cited evidence. The only classification that persists. Disposition `persist`.
76
+ - **`durable-learning`** — both falsification questions pass with cited evidence. Disposition `persist`.
77
+ - **`planning-miss`** — every Step 2.5 condition holds: the item was dispatched past the ready gate, the information really was missing, the cause is not an outage, an expired credential, a flaky tool or a decision flagged as a human gate, and a named planning check would have caught it. Disposition `persist`, with `planning_stage` set and `rule` rewritten as the check.
63
78
  - **`one-off`** — a genuine typo, transient fluke, or single-occurrence mistake with no recurrence evidence. Disposition `drop`.
64
- - **`misunderstanding/spec-gap`** — the failure traces to an ambiguous or missing requirement, not an agent defect. The fix is a better spec (raise it on the work item), not a rule. Disposition `drop`.
79
+ - **`misunderstanding/spec-gap`** — the failure traces to an ambiguous or missing requirement caught **before** the item was dispatched (the gate worked), or to information the item did hold that was misread. The fix is a better spec (raise it on the work item), not a rule. Disposition `drop`.
65
80
  - **`lisa-upstream`** — set in Step 1. Disposition `handoff-upstream`; never persisted locally.
66
81
 
67
- When multiple classifications seem defensible, choose the one that does **not** persist — the hostile default.
82
+ When multiple classifications seem defensible, choose the one that does **not** persist — the hostile default. Dispatch is a fact, not a judgement call: if you cannot cite that the item passed the ready gate and was dispatched, it is not `planning-miss`.
68
83
 
69
- ### Step 4: Confidence (durable-learning only)
84
+ ### Step 4: Confidence (durable-learning and planning-miss)
70
85
 
71
86
  - **`high`** — the causal story is unambiguous and the recurrence citations are directly on point. The persistence PR may merge through the project's normal gates unattended.
72
87
  - **`low`** — durable on the evidence, but the causal chain has an inferential step or the recurrence evidence is indirect. The persistence PR must wait for a human (auto-merge off + triage label).
73
88
 
74
- If you cannot justify `high` in one sentence a non-engineer would accept, it is `low`.
89
+ If you cannot justify `high` in one sentence a non-engineer would accept, it is `low`. A `planning-miss` with no recurrence citation is always `low`.
75
90
 
76
91
  ## Verdict Output Schema
77
92
 
@@ -79,11 +94,13 @@ Return exactly one verdict object per candidate:
79
94
 
80
95
  | Field | Type | Meaning |
81
96
  |-------|------|---------|
82
- | `classification` | `durable-learning` \| `one-off` \| `misunderstanding/spec-gap` \| `lisa-upstream` | The Step 3 outcome. |
97
+ | `classification` | `durable-learning` \| `planning-miss` \| `one-off` \| `misunderstanding/spec-gap` \| `lisa-upstream` | The Step 3 outcome. |
83
98
  | `cited_evidence[]` | string[] | The concrete refs you actually relied on for this call — prevention and recurrence citations for durable; attribution citations for upstream; the decisive absence/counter-evidence for drops. Never empty. This is what makes a wrong call auditable. |
84
99
  | `rationale` | string | 1–3 sentences readable by product, engineering, and QA alike (a non-technical operator stands at the gate). |
85
- | `confidence` | `high` \| `low` | Present **only** when `classification` is `durable-learning`. |
86
- | `disposition` | `persist` \| `drop` \| `handoff-upstream` | `persist` iff durable-learning; `handoff-upstream` iff lisa-upstream; otherwise `drop`. |
100
+ | `confidence` | `high` \| `low` | Present **only** when `classification` is `durable-learning` or `planning-miss`. |
101
+ | `planning_stage` | `prd` \| `decomposition` \| `ready-gate` | Present **only** when `classification` is `planning-miss`: the stage that let the gap through. |
102
+ | `rule` | string | Present **only** when `classification` is `planning-miss`: the candidate's rule rewritten as the `Planning (<stage>): <check>` check, within the contract's caps. The caller persists this text, not the submitted one. |
103
+ | `disposition` | `persist` \| `drop` \| `handoff-upstream` | `persist` iff durable-learning or planning-miss; `handoff-upstream` iff lisa-upstream; otherwise `drop`. |
87
104
 
88
105
  Also echo back the candidate's `fingerprint` and `triggering_issue` so the caller can route without re-deriving them.
89
106
 
@@ -102,9 +119,12 @@ Also echo back the candidate's `fingerprint` and `triggering_issue` so the calle
102
119
  | Attribution (Lisa vs project) | project/lisa-upstream | [refs] |
103
120
  | Prevention (would the rule have prevented it?) | yes/no | [refs] |
104
121
  | Recurrence (does the class recur?) | yes/no | [refs] |
122
+ | Planning miss (dispatched, really missing, not environmental or a flagged gate, planning check named) | yes/no/n-a | [refs] |
105
123
 
106
- **Classification**: durable-learning | one-off | misunderstanding/spec-gap | lisa-upstream
107
- **Confidence**: high | low (durable-learning only)
124
+ **Classification**: durable-learning | planning-miss | one-off | misunderstanding/spec-gap | lisa-upstream
125
+ **Planning stage**: prd | decomposition | ready-gate (planning-miss only)
126
+ **Rule**: Planning (<stage>): <check> (planning-miss only — the rewritten rule the caller persists)
127
+ **Confidence**: high | low (durable-learning and planning-miss only)
108
128
  **Disposition**: persist | drop | handoff-upstream
109
129
  **Rationale**: [1–3 plain-language sentences]
110
130
  ```
@@ -112,7 +132,7 @@ Also echo back the candidate's `fingerprint` and `triggering_issue` so the calle
112
132
  ## Important Reminders
113
133
 
114
134
  1. **Most candidates DROP** — a session where you persist everything you saw is a failed gate, not a productive one.
115
- 2. **No recurrence citation, no durable-learning** — this is absolute; there are no exceptions for "obviously true" rules.
135
+ 2. **No recurrence citation, no durable-learning** — this is absolute; there are no exceptions for "obviously true" rules. A `planning-miss` is not a durable-learning: without recurrence it persists only at `low`, behind a human merge, and the recurrence requirement never blocks a first occurrence of it.
116
136
  3. **Cite what you relied on** — a verdict without `cited_evidence` is invalid; re-run the evaluation.
117
137
  4. **`lisa-upstream` never becomes a local rule** — classify and hand off; filing the upstream ticket is the caller's flow, not yours.
118
138
  5. **You classify; you do not write** — never touch the learnings surface, post comments, or open PRs. The caller (`lisa-persist-learning`) owns all side effects.