@codyswann/lisa 4.55.4 → 4.55.6

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/cdk/copy-overwrite/tsconfig.eslint.json +1 -1
  2. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  3. package/dist/core/lisa-owned-hash-ledger.js +6 -0
  4. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  5. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  6. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  7. package/dist/core/upstream-evidence-manifest.js +42 -40
  8. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  9. package/expo/copy-overwrite/scripts/bdd/validate.mjs +84 -8
  10. package/expo/copy-overwrite/scripts/check-bdd-coverage.mjs +1 -1
  11. package/expo/copy-overwrite/tsconfig.eslint.json +1 -1
  12. package/nestjs/copy-overwrite/tsconfig.eslint.json +1 -1
  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-exploratory-qa/SKILL.md +8 -6
  17. package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/SKILL.md +3 -0
  18. package/plugins/lisa/.codex-plugin/skills/lisa-github-write-issue/SKILL.md +6 -0
  19. package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +3 -0
  20. package/plugins/lisa/.codex-plugin/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  21. package/plugins/lisa/.codex-plugin/skills/lisa-learnings-audit/SKILL.md +2 -2
  22. package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +3 -0
  23. package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +6 -0
  24. package/plugins/lisa/.codex-plugin/skills/lisa-monitor/SKILL.md +1 -1
  25. package/plugins/lisa/.codex-plugin/skills/lisa-persist-learning/SKILL.md +5 -1
  26. package/plugins/lisa/.codex-plugin/skills/lisa-prd-source-write/SKILL.md +1 -0
  27. package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/SKILL.md +7 -5
  28. package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +2 -3
  29. package/plugins/lisa/.codex-plugin/skills/lisa-research/SKILL.md +6 -2
  30. package/plugins/lisa/.codex-plugin/skills/lisa-rework-triage/SKILL.md +16 -13
  31. package/plugins/lisa/.codex-plugin/skills/lisa-track/SKILL.md +24 -6
  32. package/plugins/lisa/commands/exploratory-qa.md +2 -2
  33. package/plugins/lisa/rules/eager/do-it-now.md +5 -5
  34. package/plugins/lisa/rules/eager/tracked-work.md +2 -0
  35. package/plugins/lisa/rules/eager/upstream-to-lisa.md +7 -18
  36. package/plugins/lisa/rules/reference/claim-time-guards.md +4 -0
  37. package/plugins/lisa/rules/reference/do-it-now.md +9 -27
  38. package/plugins/lisa/rules/reference/observability-audit.md +2 -2
  39. package/plugins/lisa/rules/reference/ready-role-filing.md +6 -2
  40. package/plugins/lisa/rules/reference/rejection-detection.md +8 -2
  41. package/plugins/lisa/rules/reference/tracked-work.md +2 -0
  42. package/plugins/lisa/rules/reference/upstream-to-lisa.md +14 -43
  43. package/plugins/lisa/skills/lisa-exploratory-qa/SKILL.md +9 -7
  44. package/plugins/lisa/skills/lisa-github-build-intake/SKILL.md +3 -0
  45. package/plugins/lisa/skills/lisa-github-write-issue/SKILL.md +6 -0
  46. package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +3 -0
  47. package/plugins/lisa/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  48. package/plugins/lisa/skills/lisa-learnings-audit/SKILL.md +2 -2
  49. package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +3 -0
  50. package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +6 -0
  51. package/plugins/lisa/skills/lisa-monitor/SKILL.md +1 -1
  52. package/plugins/lisa/skills/lisa-persist-learning/SKILL.md +5 -1
  53. package/plugins/lisa/skills/lisa-prd-source-write/SKILL.md +1 -0
  54. package/plugins/lisa/skills/lisa-project-ideation/SKILL.md +7 -5
  55. package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +2 -3
  56. package/plugins/lisa/skills/lisa-research/SKILL.md +6 -2
  57. package/plugins/lisa/skills/lisa-rework-triage/SKILL.md +16 -13
  58. package/plugins/lisa/skills/lisa-track/SKILL.md +24 -6
  59. package/plugins/lisa-agy/commands/lisa/exploratory-qa.md +2 -2
  60. package/plugins/lisa-agy/plugin.json +1 -1
  61. package/plugins/lisa-agy/skills/lisa-exploratory-qa/SKILL.md +9 -7
  62. package/plugins/lisa-agy/skills/lisa-github-build-intake/SKILL.md +3 -0
  63. package/plugins/lisa-agy/skills/lisa-github-write-issue/SKILL.md +6 -0
  64. package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +3 -0
  65. package/plugins/lisa-agy/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  66. package/plugins/lisa-agy/skills/lisa-learnings-audit/SKILL.md +2 -2
  67. package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +3 -0
  68. package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +6 -0
  69. package/plugins/lisa-agy/skills/lisa-monitor/SKILL.md +1 -1
  70. package/plugins/lisa-agy/skills/lisa-persist-learning/SKILL.md +5 -1
  71. package/plugins/lisa-agy/skills/lisa-prd-source-write/SKILL.md +1 -0
  72. package/plugins/lisa-agy/skills/lisa-project-ideation/SKILL.md +7 -5
  73. package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +2 -3
  74. package/plugins/lisa-agy/skills/lisa-research/SKILL.md +6 -2
  75. package/plugins/lisa-agy/skills/lisa-rework-triage/SKILL.md +16 -13
  76. package/plugins/lisa-agy/skills/lisa-track/SKILL.md +24 -6
  77. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  80. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-copilot/commands/lisa/exploratory-qa.md +2 -2
  84. package/plugins/lisa-copilot/rules/eager/do-it-now.md +5 -5
  85. package/plugins/lisa-copilot/rules/eager/tracked-work.md +2 -0
  86. package/plugins/lisa-copilot/rules/eager/upstream-to-lisa.md +7 -18
  87. package/plugins/lisa-copilot/rules/reference/claim-time-guards.md +4 -0
  88. package/plugins/lisa-copilot/rules/reference/do-it-now.md +9 -27
  89. package/plugins/lisa-copilot/rules/reference/observability-audit.md +2 -2
  90. package/plugins/lisa-copilot/rules/reference/ready-role-filing.md +6 -2
  91. package/plugins/lisa-copilot/rules/reference/rejection-detection.md +8 -2
  92. package/plugins/lisa-copilot/rules/reference/tracked-work.md +2 -0
  93. package/plugins/lisa-copilot/rules/reference/upstream-to-lisa.md +14 -43
  94. package/plugins/lisa-copilot/skills/lisa-exploratory-qa/SKILL.md +9 -7
  95. package/plugins/lisa-copilot/skills/lisa-github-build-intake/SKILL.md +3 -0
  96. package/plugins/lisa-copilot/skills/lisa-github-write-issue/SKILL.md +6 -0
  97. package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +3 -0
  98. package/plugins/lisa-copilot/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  99. package/plugins/lisa-copilot/skills/lisa-learnings-audit/SKILL.md +2 -2
  100. package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +3 -0
  101. package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +6 -0
  102. package/plugins/lisa-copilot/skills/lisa-monitor/SKILL.md +1 -1
  103. package/plugins/lisa-copilot/skills/lisa-persist-learning/SKILL.md +5 -1
  104. package/plugins/lisa-copilot/skills/lisa-prd-source-write/SKILL.md +1 -0
  105. package/plugins/lisa-copilot/skills/lisa-project-ideation/SKILL.md +7 -5
  106. package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +2 -3
  107. package/plugins/lisa-copilot/skills/lisa-research/SKILL.md +6 -2
  108. package/plugins/lisa-copilot/skills/lisa-rework-triage/SKILL.md +16 -13
  109. package/plugins/lisa-copilot/skills/lisa-track/SKILL.md +24 -6
  110. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  111. package/plugins/lisa-cursor/commands/lisa/exploratory-qa.md +2 -2
  112. package/plugins/lisa-cursor/rules/claim-time-guards-reference.mdc +4 -0
  113. package/plugins/lisa-cursor/rules/do-it-now-reference.mdc +9 -27
  114. package/plugins/lisa-cursor/rules/do-it-now.mdc +5 -5
  115. package/plugins/lisa-cursor/rules/observability-audit-reference.mdc +2 -2
  116. package/plugins/lisa-cursor/rules/ready-role-filing-reference.mdc +6 -2
  117. package/plugins/lisa-cursor/rules/rejection-detection-reference.mdc +8 -2
  118. package/plugins/lisa-cursor/rules/tracked-work-reference.mdc +2 -0
  119. package/plugins/lisa-cursor/rules/tracked-work.mdc +2 -0
  120. package/plugins/lisa-cursor/rules/upstream-to-lisa-reference.mdc +14 -43
  121. package/plugins/lisa-cursor/rules/upstream-to-lisa.mdc +7 -18
  122. package/plugins/lisa-cursor/skills/lisa-exploratory-qa/SKILL.md +9 -7
  123. package/plugins/lisa-cursor/skills/lisa-github-build-intake/SKILL.md +3 -0
  124. package/plugins/lisa-cursor/skills/lisa-github-write-issue/SKILL.md +6 -0
  125. package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +3 -0
  126. package/plugins/lisa-cursor/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  127. package/plugins/lisa-cursor/skills/lisa-learnings-audit/SKILL.md +2 -2
  128. package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +3 -0
  129. package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +6 -0
  130. package/plugins/lisa-cursor/skills/lisa-monitor/SKILL.md +1 -1
  131. package/plugins/lisa-cursor/skills/lisa-persist-learning/SKILL.md +5 -1
  132. package/plugins/lisa-cursor/skills/lisa-prd-source-write/SKILL.md +1 -0
  133. package/plugins/lisa-cursor/skills/lisa-project-ideation/SKILL.md +7 -5
  134. package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +2 -3
  135. package/plugins/lisa-cursor/skills/lisa-research/SKILL.md +6 -2
  136. package/plugins/lisa-cursor/skills/lisa-rework-triage/SKILL.md +16 -13
  137. package/plugins/lisa-cursor/skills/lisa-track/SKILL.md +24 -6
  138. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  139. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  140. package/plugins/lisa-expo/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
  141. package/plugins/lisa-expo/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
  142. package/plugins/lisa-expo/commands/e2e-coverage-gaps.md +2 -2
  143. package/plugins/lisa-expo/skills/e2e-coverage-gaps/SKILL.md +22 -10
  144. package/plugins/lisa-expo-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
  145. package/plugins/lisa-expo-agy/plugin.json +1 -1
  146. package/plugins/lisa-expo-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
  147. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  148. package/plugins/lisa-expo-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
  149. package/plugins/lisa-expo-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
  150. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  151. package/plugins/lisa-expo-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
  152. package/plugins/lisa-expo-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
  153. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  154. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  155. package/plugins/lisa-harper-fabric/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
  156. package/plugins/lisa-harper-fabric/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
  157. package/plugins/lisa-harper-fabric/commands/e2e-coverage-gaps.md +2 -2
  158. package/plugins/lisa-harper-fabric/skills/e2e-coverage-gaps/SKILL.md +22 -10
  159. package/plugins/lisa-harper-fabric-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
  160. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  161. package/plugins/lisa-harper-fabric-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
  162. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  163. package/plugins/lisa-harper-fabric-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
  164. package/plugins/lisa-harper-fabric-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
  165. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  166. package/plugins/lisa-harper-fabric-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
  167. package/plugins/lisa-harper-fabric-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
  168. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  169. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  170. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  171. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  172. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  173. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  174. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  175. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  176. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  177. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  178. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  179. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  180. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  181. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  182. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  183. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  184. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  185. package/plugins/lisa-rails/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
  186. package/plugins/lisa-rails/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
  187. package/plugins/lisa-rails/commands/e2e-coverage-gaps.md +2 -2
  188. package/plugins/lisa-rails/skills/e2e-coverage-gaps/SKILL.md +22 -10
  189. package/plugins/lisa-rails-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
  190. package/plugins/lisa-rails-agy/plugin.json +1 -1
  191. package/plugins/lisa-rails-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
  192. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  193. package/plugins/lisa-rails-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
  194. package/plugins/lisa-rails-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
  195. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  196. package/plugins/lisa-rails-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
  197. package/plugins/lisa-rails-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
  198. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  199. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  200. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  201. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  202. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  203. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  204. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  205. package/plugins/lisa-wiki/scripts/_wiki-lib.mjs +2 -2
  206. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  207. package/plugins/lisa-wiki-agy/scripts/_wiki-lib.mjs +2 -2
  208. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  209. package/plugins/lisa-wiki-copilot/scripts/_wiki-lib.mjs +2 -2
  210. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  211. package/plugins/lisa-wiki-cursor/scripts/_wiki-lib.mjs +2 -2
  212. package/plugins/src/base/commands/exploratory-qa.md +2 -2
  213. package/plugins/src/base/rules/eager/do-it-now.md +5 -5
  214. package/plugins/src/base/rules/eager/tracked-work.md +2 -0
  215. package/plugins/src/base/rules/eager/upstream-to-lisa.md +7 -18
  216. package/plugins/src/base/rules/reference/claim-time-guards.md +4 -0
  217. package/plugins/src/base/rules/reference/do-it-now.md +9 -27
  218. package/plugins/src/base/rules/reference/observability-audit.md +2 -2
  219. package/plugins/src/base/rules/reference/ready-role-filing.md +6 -2
  220. package/plugins/src/base/rules/reference/rejection-detection.md +8 -2
  221. package/plugins/src/base/rules/reference/tracked-work.md +2 -0
  222. package/plugins/src/base/rules/reference/upstream-to-lisa.md +14 -43
  223. package/plugins/src/base/skills/lisa-exploratory-qa/SKILL.md +9 -7
  224. package/plugins/src/base/skills/lisa-github-build-intake/SKILL.md +3 -0
  225. package/plugins/src/base/skills/lisa-github-write-issue/SKILL.md +6 -0
  226. package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +3 -0
  227. package/plugins/src/base/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  228. package/plugins/src/base/skills/lisa-learnings-audit/SKILL.md +2 -2
  229. package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +3 -0
  230. package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +6 -0
  231. package/plugins/src/base/skills/lisa-monitor/SKILL.md +1 -1
  232. package/plugins/src/base/skills/lisa-persist-learning/SKILL.md +5 -1
  233. package/plugins/src/base/skills/lisa-prd-source-write/SKILL.md +1 -0
  234. package/plugins/src/base/skills/lisa-project-ideation/SKILL.md +7 -5
  235. package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +2 -3
  236. package/plugins/src/base/skills/lisa-research/SKILL.md +6 -2
  237. package/plugins/src/base/skills/lisa-rework-triage/SKILL.md +16 -13
  238. package/plugins/src/base/skills/lisa-track/SKILL.md +24 -6
  239. package/plugins/src/expo/commands/e2e-coverage-gaps.md +2 -2
  240. package/plugins/src/expo/skills/e2e-coverage-gaps/SKILL.md +22 -10
  241. package/plugins/src/harper-fabric/commands/e2e-coverage-gaps.md +2 -2
  242. package/plugins/src/harper-fabric/skills/e2e-coverage-gaps/SKILL.md +22 -10
  243. package/plugins/src/rails/commands/e2e-coverage-gaps.md +2 -2
  244. package/plugins/src/rails/skills/e2e-coverage-gaps/SKILL.md +22 -10
  245. package/plugins/src/wiki/scripts/_wiki-lib.mjs +2 -2
  246. package/typescript/copy-overwrite/tsconfig.eslint.json +1 -1
@@ -285,7 +285,7 @@ resolved by reading the ticket, never by filing a sibling blind. Then:
285
285
  - **Closed via merged work** → done; a genuine regression later is new
286
286
  evidence and a new ticket.
287
287
  - **Closed unmerged / rejected** → the human declined. **Do NOT re-file**
288
- unless new evidence **postdates the rejection** — and when re-filing, state
288
+ unless new evidence **postdates the rejection** and materially changes the consequence, requirement, or risk that justified the decline — and when re-filing, state
289
289
  the postdating evidence explicitly in the ticket ("rejected <date>; recurred
290
290
  <date> in <ref>"). Closed-as-rejected tickets ARE the gardener's memory of
291
291
  declined recommendations.
@@ -413,7 +413,7 @@ automation, through `lisa-tracker-write` (per `tracked-work` +
413
413
  visible prose line; matched on the marker, never the title; searched **open
414
414
  AND closed** per `rejection-detection`'s **Proposal rejection memory**. Treat
415
415
  matches by close state: **open** suppresses another proposal; **Not planned**
416
- suppresses another proposal unless new evidence postdates the rejection;
416
+ suppresses another proposal unless new evidence postdates the rejection and materially changes the consequence, requirement, or risk that justified the decline;
417
417
  **Completed** means the prior approved action happened, so a later recurrence
418
418
  may be re-filed. The `[lisa-gardener]` search above stays what it is — the
419
419
  candidate evidence, not the dedupe key. When an existing proposal suppresses
@@ -344,6 +344,9 @@ This gate never blocks a legitimate flat Task/Bug: those have no open children a
344
344
 
345
345
  #### 3b. Claim
346
346
 
347
+ Before the claim mutation, apply `claim-time-guards` — **Value before claim**, or **Worth doing** in `lisa-track` on runtimes without the rule tree (Antigravity). A ready label establishes neither value nor permission to expand scope. Respect the preceding human-hold gate; a declined incidental item consumes this cycle's one processed disposition.
348
+
349
+
347
350
  **Rejection detection runs first — before the transition below.** Per the vendor-neutral `rejection-detection` rule (cite the slug; do not restate its classification table), classify this Issue at the **top of 3b, BEFORE** the `$READY → $CLAIMED` transition — afterwards the current-lane signal is gone. Read the Issue's history via `lisa-linear-access operation: history id: <ISSUE-ID>`, keyed on **workflow-state** history, and classify it `rejection-reclaim | forward-only | never-left-ready | unknown` (a `rejection-reclaim` is a move back into `$READY` from a later lane). State names come from `.lisa.config.json`, never hardcoded.
348
351
 
349
352
  > Reading state history is strictly simpler than the label history this used to key on: `IssueHistory` inlines `fromState.name` / `toState.name` on each node, so the transition is read directly with no label-ID resolution against `list-issue-labels` and no reconstruction from `addedLabelIds`/`removedLabelIds` deltas. That reconstruction was lossy — the deltas carry no prior/next full set — which is one more reason the build lane moved to states. A failing/absent history yields `unknown` and the claim proceeds — detection never blocks the build. Issues carrying a learning marker (`[lisa-learning-drop]` / `[lisa-learning-pr]` / `[lisa-learning-upstream-handoff]`) or the `learning:needs-triage` label are never rejection triggers (no learning-about-learning). Carry the classification into the transition and lifecycle below.
@@ -6,6 +6,12 @@ allowed-tools: ["Bash", "Skill"]
6
6
 
7
7
  # Write Linear Work Item: $ARGUMENTS
8
8
 
9
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
10
+
11
+ ## Before creating incidental work
12
+
13
+ Apply `do-it-now`'s **Worth doing** guidance before drafting a new incidental item. Decline low-value observations without writing a ticket or requesting a human gate; report the reason briefly to the caller. A complete spec is not evidence of value. This does not cancel explicit user requests or accepted requirements. Honor prior Not planned decisions through `rejection-detection`, including legacy issues without markers. Accepted work continues through the existing validation and readiness contract below.
14
+
9
15
  ## Human-gate release authorization
10
16
 
11
17
  A release requires a trusted human author, not just matching comment text. Follow
@@ -200,7 +200,7 @@ watching it. Evaluate all three. When all three hold, record `policy-obsolete` a
200
200
  - **Marker** `<!-- [lisa-automation-retire] key=monitor -->` plus a visible prose line; matched on
201
201
  the marker, never the title; searched **open AND closed** per `rejection-detection`'s **Proposal
202
202
  rejection memory**. Treat matches by close state: **open** suppresses another proposal;
203
- **Not planned** suppresses another proposal unless new evidence postdates the rejection;
203
+ **Not planned** suppresses another proposal unless new evidence postdates the rejection and materially changes the consequence, requirement, or risk that justified the decline;
204
204
  **Completed** means the prior approved action happened, so a later recurrence may be re-filed.
205
205
  When an existing proposal suppresses filing, **the run still records `policy-obsolete` and files
206
206
  nothing** — the outcome describes this run, while the ticket is filed exactly once.
@@ -9,6 +9,8 @@ Route ONE candidate learning through the judgment gate and act on the verdict. C
9
9
 
10
10
  Most candidates are dropped — that is the gate working, not a failure. Nothing is ever silent (every drop leaves a visible note), and no learning content ever reaches the learnings surface outside a pull request.
11
11
 
12
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
13
+
12
14
  ## Candidate Input
13
15
 
14
16
  Accept the candidate as JSON or `key=value` fields:
@@ -68,7 +70,9 @@ The note is one line naming the classification (with its fixed plain-language gl
68
70
 
69
71
  ### `handoff-upstream` (classification `lisa-upstream`)
70
72
 
71
- This disposition completes the SLL-5 loop (#1583): on a Lisa-attributed failure the upstream Lisa ticket is filed **automatically**. Filing lives here — not in `lisa-attribute-failure` — because that skill is deliberately read-only (doctor delegates to it inside its own read-only contract), while this skill already owns exactly the verdict's side effects and the marker-dedupe discipline. Never persist a local rule for a Lisa-attributed failure; the host project's only durable trace is the brief linking note in step 6.
73
+ This disposition completes the SLL-5 loop (#1583): on an accepted worthwhile Lisa-attributed failure the upstream Lisa ticket is filed **automatically**. Filing lives here — not in `lisa-attribute-failure` — because that skill is deliberately read-only (doctor delegates to it inside its own read-only contract), while this skill already owns exactly the verdict's side effects and the marker-dedupe discipline. Never persist a local rule for a Lisa-attributed failure; the host project's only durable trace is the brief linking note in step 6.
74
+
75
+ First apply `do-it-now`'s **Worth doing** guidance. Attribution establishes ownership, not value. Decline low-value additional hardening in the current summary without filing, persisting a rule, or asking a human; otherwise continue below. Before creating an upstream issue, consult `rejection-detection` for open and closed matches, including legacy unmarked declines.
72
76
 
73
77
  1. **Post the handoff marker** on the triggering issue (same one-comment marker dedupe; the marker key is unchanged). The visible line must not claim a filing that has not happened yet — attribution and filing come after this step:
74
78
 
@@ -38,6 +38,7 @@ ideation_ledger_payload: # optional; forwarded unchanged to the ven
38
38
  selected_idea: "<selected idea title/key>"
39
39
  rejected_overlap_candidates: ["<issue refs/titles considered and rejected>"]
40
40
  expected_empirical_verification_artifact: "<artifact ref or unavailable>"
41
+ reproposal_context: "<optional dated decline, new evidence, changed consequence, token and acknowledgment already included in the PRD body by research>"
41
42
  ```
42
43
 
43
44
  `initial_role` semantics are uniform across vendors (the role STRINGS resolve per vendor from
@@ -207,7 +207,10 @@ For each idea in the creation set, invoke `/lisa:research` with:
207
207
  - a structured `ideation_ledger_payload` handoff containing the selected marker, automation id and
208
208
  memory path when available, persona names, persona evidence references, rejected overlap
209
209
  candidates, repo identity, `prd_ready`, selected idea title/key, and the expected empirical
210
- verification artifact. This payload is the only ideation-run metadata channel between
210
+ verification artifact. For a justified re-proposal, include `reproposal_context`: the dated
211
+ decline, dated new evidence reference, materially changed consequence, and the exact machine
212
+ token and human acknowledgment paragraph specified below. Research must include that paragraph
213
+ and token in the PRD body. This payload is the only ideation-run metadata channel between
211
214
  `project-ideation`, `research`, `prd-source-write`, and the vendor writer; keep GitHub-specific
212
215
  rendering out of this skill.
213
216
 
@@ -249,10 +252,9 @@ Per the `rejection-detection` rule's **Proposal rejection memory** section, that
249
252
  cover **open AND closed** PRDs (with a body-enumeration fallback on search-index lag), and a PRD
250
253
  **closed as _not planned_** (GitHub `stateReason == "not_planned"`; the config-resolved won't-do/
251
254
  canceled equivalent on JIRA/Linear — never a hardcoded lane string) is a **durable human decline**
252
- that **suppresses** re-proposing that idea. Re-propose only with evidence that **postdates the
255
+ that **suppresses** re-proposing that idea. Re-propose only for a materially changed consequence, requirement, or risk addressing the decline, supported by evidence that **postdates the
253
256
  decline**, and state it in the new PRD as BOTH the machine token (`declined <date>; recurred <date>
254
- in <ref>`) and a human acknowledgment sentence (`You declined this on <date>. It has recurred
255
- (<date>, <ref>), so we're raising it once more for your review.`). A PRD closed as _completed_ is
257
+ in <ref>`) and a human acknowledgment sentence (`You declined this on <date>. New evidence (<date>, <ref>) changes the consequence, requirement, or risk: <what changed and why the decline no longer applies>.`). A PRD closed as _completed_ is
256
258
  not a decline. This is tracker-side memory; the advisory ideation memory ledger stays advisory and
257
259
  never overrides it.
258
260
 
@@ -350,7 +352,7 @@ marker-deduped teardown proposal through `lisa-tracker-write` (per `tracked-work
350
352
  - **Marker** `<!-- [lisa-automation-retire] key=exploratory-prds -->` plus a visible prose line;
351
353
  matched on the marker, never the title; searched **open AND closed** per `rejection-detection`'s
352
354
  **Proposal rejection memory**. Treat matches by close state: **open** suppresses another proposal;
353
- **Not planned** suppresses another proposal unless new evidence postdates the rejection;
355
+ **Not planned** suppresses another proposal unless new evidence postdates the rejection and materially changes the consequence, requirement, or risk that justified the decline;
354
356
  **Completed** means the prior approved action happened, so a later recurrence may be re-filed.
355
357
  When an existing proposal suppresses filing, **the run still records `policy-obsolete` and files
356
358
  nothing** — the outcome describes this run, while the ticket is filed exactly once.
@@ -586,10 +586,9 @@ rule's **Proposal rejection memory** section, that marker search MUST cover **op
586
586
  tickets (body-enumeration fallback on search-index lag): an **open** match → reference it and ensure
587
587
  the `is blocked by` link is present rather than creating a duplicate; a match **closed as _not
588
588
  planned_** (GitHub `stateReason == "not_planned"`; the config-resolved equivalent on JIRA/Linear) is
589
- a **human decline** of that fix ticket — do **not** re-file it unless evidence **postdates the
589
+ a **human decline** of that fix ticket — do **not** re-file it without a materially changed consequence, requirement, or risk addressing the decline, supported by evidence that **postdates the
590
590
  decline**, and the re-filed ticket MUST carry BOTH the machine token (`declined <date>; recurred
591
- <date> in <ref>`) and the human acknowledgment sentence (`You declined this on <date>. It has
592
- recurred (<date>, <ref>), so we're raising it once more for your review.`); a match closed as
591
+ <date> in <ref>`) and the human acknowledgment sentence (`You declined this on <date>. New evidence (<date>, <ref>) changes the consequence, requirement, or risk: <what changed and why the decline no longer applies>.`); a match closed as
593
592
  _completed_ is a regression path, not a decline. Honor the backoff window and state fingerprint
594
593
  (Loop prevention) so re-runs over the same unchanged blocker are no-ops.
595
594
 
@@ -20,8 +20,12 @@ Produce a PRD for the problem in `$ARGUMENTS`, then create it in the configured
20
20
  structured metadata object to forward unchanged to `lisa-prd-source-write`. It carries the
21
21
  selected marker, automation id/path when available, persona names, persona evidence references,
22
22
  rejected overlap candidates, repo identity, `prd_ready`, selected idea title/key, and expected
23
- empirical verification artifact. `research` may use these fields to inform the PRD body, but must
24
- not discard, rename, or vendor-render them.
23
+ empirical verification artifact. When supplied, `reproposal_context` contains the dated decline,
24
+ new evidence, changed consequence, and the required machine token and human acknowledgment.
25
+ Include that token and acknowledgment verbatim in the synthesized PRD body before source routing,
26
+ so the justification survives even when the vendor's metadata renderer does not display this field.
27
+ Other metadata may inform the PRD body; forward the complete payload unchanged without renaming
28
+ or vendor-rendering its fields.
25
29
 
26
30
  ## Orchestration: agent team
27
31
 
@@ -6,16 +6,14 @@ allowed-tools: ["Skill", "Bash", "Read", "Glob", "Grep"]
6
6
 
7
7
  # Rework Triage: $ARGUMENTS
8
8
 
9
- Classify why a previous agent attempt at this ticket failed, and convert that cause into a
10
- structural improvement. This is the self-hardening arm of the lifecycle: every classified
11
- failure either hardens the harness (an upstream Lisa issue), the project (a provisioning or
12
- environment ticket), or the spec (a PRD defect flag). A rework cycle that fixes the bug but
13
- never asks *why the agent got it wrong* guarantees the mistake recurs.
9
+ Classify why the previous attempt failed and repair the actual cause. Apply `do-it-now`'s **Worth doing** guidance before proposing additional hardening. Fixing the defect and its relevant regression test can be sufficient; a failure does not automatically justify another rule, hook, or upstream ticket.
14
10
 
15
11
  The caller MUST have run `lisa-tracker-read` first and provided the context bundle (all
16
12
  comments chronological, linked PRs with review state, issue links, parent epic). Do not
17
13
  classify from a bare summary — evidence-free classification is worse than none.
18
14
 
15
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
16
+
19
17
  ## Phase 1 — Rework detection
20
18
 
21
19
  A ticket is **rework** when it was previously implemented by this lifecycle and has returned
@@ -115,7 +113,12 @@ never one per cycle re-entry.
115
113
 
116
114
  ## Phase 4 — Route the cause to its hardening destination
117
115
 
118
- Each cause has exactly one destination. File through the proper write path — never raw
116
+ For each primary or secondary cause, first decide whether additional work clears
117
+ `do-it-now`'s **Worth doing** bar. If not, report `Hardening action: none required`
118
+ with a brief reason in the existing triage comment. Do not create a replacement
119
+ learning or a human gate merely to retain the declined observation.
120
+
121
+ The table gives destinations for accepted additional work. File through the proper write path — never raw
119
122
  ticket creation — so every hardening artifact passes the same quality gates as any other
120
123
  Lisa work item.
121
124
 
@@ -128,7 +131,7 @@ Lisa work item.
128
131
  | `prd-defect` | Source PRD | Comment on the PRD (via the `lisa-prd-backlink` lineage) quoting the defective requirement and the QA failure; flag for product review. Do NOT silently edit the PRD — spec changes are a human gate. |
129
132
  | `implementation-defect` (no secondary) | None | Normal fix path; the classification comment is the record. Pass the pattern to the `learner` phase — repeated implementation defects of the same shape escalate to `verification-gap`. |
130
133
 
131
- **Secondary causes route too.** A recorded secondary cause triggers its own row's
134
+ **Secondary causes route too — when worthwhile.** A worthwhile secondary cause uses its row's
132
135
  destination in addition to the primary's: `implementation-defect` with a
133
136
  `verification-gap` secondary files the upstream Lisa issue per the `verification-gap`
134
137
  row — the code being wrong does not excuse the verification lifecycle for passing it.
@@ -151,16 +154,16 @@ section differ:
151
154
  | Defect | `self-hardening` | A Lisa gate/skill/template did something wrong — a harness bug the kernel must fix. | none |
152
155
  | Contribution | `template-candidate` | A generalizable pattern discovered downstream that would benefit every host project — not a defect, a proposed improvement to Lisa's templates/rules/skills. | `## Proposed template change` |
153
156
 
154
- 1. **Dedupe first.** `gh issue list -R <upstream> --state open --search "<fingerprint terms>"`
157
+ 1. **Dedupe first.** Search open AND closed items and consult `rejection-detection`'s **Proposal rejection memory**, including legacy issues without markers. `gh issue list -R <upstream> --state all --search "<fingerprint terms>"`
155
158
  — if an open issue already covers this failure class or pattern, comment the new
156
159
  occurrence on it (evidence compounds; duplicates dilute) and link it instead of filing.
157
160
  2. **File with the same bar as any ticket:** a three-audience description (what failed or
158
161
  improved for the operator, what the harness did or could do, what to change), the
159
- verbatim evidence chain (PRD text → ticket AC → QA failure → gate that passed it; for
160
- patterns, the downstream occurrences proving generality), and the lane's label:
161
- `gh issue create -R <upstream> --title "<gate/skill>: <failure class>" --label self-hardening`
162
- for defects, or
163
- `gh issue create -R <upstream> --title "<template surface>: <pattern>" --label template-candidate`
162
+ public-safe evidence chain (PRD text → ticket AC → QA failure → gate that passed it; for
163
+ patterns, the occurrences proving generality). Invoke `lisa-github-write-issue` against
164
+ `<upstream>` using the existing public-safe attribution/projection procedure from
165
+ `upstream-to-lisa`. Pass `build_ready: true` unless an explicit `human_gate` was declared,
166
+ then pass that reason instead. Use label `self-hardening` for defects or `template-candidate`
164
167
  for contributions. A `template-candidate` filing MUST include a
165
168
  `## Proposed template change` section naming the Lisa template/rule/skill surface to
166
169
  change (e.g. `typescript/package-lisa/package.lisa.json`, a `plugins/src/base` rule)
@@ -22,7 +22,23 @@ continue through the existing path and never override an independently declared
22
22
 
23
23
  Establish the tracked-work invariant before any durable project mutation. Discussion and read-only orientation may proceed without this skill; code, configuration, documentation, research artifacts, plans, investigation findings, tests, commits, and pull requests may not.
24
24
 
25
- This flow must return exactly one canonical `(tracker_provider, work_item_ref)` pair or fail closed. It never returns an unvalidated textual guess.
25
+ For accepted work this flow must return exactly one canonical `(tracker_provider, work_item_ref)` pair or fail closed. A declined incidental finding returns only its reason and authorizes no durable implementation. It never returns an unvalidated textual guess.
26
+
27
+ ## Worth doing
28
+
29
+ Before filing, promoting, or claiming an incidental finding, ask whether the expected benefit justifies implementation, verification, maintenance, CI, and operator attention. Use the evidence already available; no numeric score, new tracking system, or speculative audit is required.
30
+
31
+ - **Act** on concrete delivery failures, incorrect results, credible material security or data-loss risks, and recurring friction whose repair is worth its cost. A small fix can have a large consequence; security need not wait for an incident.
32
+ - **Bundle** related small repairs when one bounded maintenance task is worth doing. Reuse an existing relevant item where possible. Do not expand unrelated work or create one ticket per wording fix.
33
+ - **Decline** cosmetic preferences, speculative edge cases, duplicate controls, or changes whose likely benefit is smaller than their ongoing cost. Acceptable as-is is a valid engineering decision. Say why briefly in the current report, review, or issue; do not create a ticket, ledger entry, new rule, or human gate merely to record a declined observation.
34
+
35
+ A reproducible imperfection proves that something happens, not that it deserves factory capacity. A complete specification establishes buildability, not value. Missing enforcement or test coverage alone does not justify new machinery; name the required behavior or credible consequence at risk. Honor explicit user requests, accepted product requirements, and material safety obligations. This rule cannot silently cancel those commitments or excuse failing required checks.
36
+
37
+ ## Prefer less machinery
38
+
39
+ Start with the smallest sufficient correction at the owning component. Consider removing or consolidating redundant machinery before adding a hook, workflow, abstraction, registry, or test framework. Preserve required behavior and protection, and verify the consequence of the change. An isolated failure does not automatically justify a permanent control for every future session.
40
+
41
+ For an existing incidental item, read its discussion, linked PRs and dependencies before declining. Close as **Not planned** (configured Jira/Linear equivalent), give the reason, and remove active lifecycle labels. Preserve human holds and committed scope unless cancellation is authorized; resolve effects on active PRs and dependent delivery first. Before re-filing, search open AND closed issues, read legacy unmarked matches, and require materially changed consequences that address the earlier reason. A later observation of the same accepted limitation is insufficient.
26
42
 
27
43
  ## Phase 1 — Resolve tracker and classify input
28
44
 
@@ -42,14 +58,16 @@ Invoke `lisa-tracker-read <ref>` and require a live result from the configured p
42
58
 
43
59
  ### File or plain text
44
60
 
61
+ For incidental findings, apply `do-it-now` before resolving a new leaf. If the finding is declined, return the reason without creating or claiming anything; durable implementation does not start. Explicit user requests and accepted requirements remain in scope.
62
+
45
63
  Search conservatively before creating:
46
64
 
47
65
  1. Normalize the requested outcome and derive a short keyword set; never search with the whole prompt or secrets.
48
- 2. Search only open/non-terminal items in the configured project and current repository through the configured provider's documented read surface:
49
- - GitHub: `gh issue list --repo <org>/<repo> --state open --search "<keywords> in:title,body"`.
50
- - Jira: `lisa-atlassian-access operation: search-issues` with project-scoped JQL.
51
- - Linear: `lisa-linear-access operation: list-issues` scoped to the configured team/workspace.
52
- 3. Treat search results as candidates, never proof. Live-read each plausible candidate through `lisa-tracker-read`, and discard terminal, container, blocked, held-by-gate, cross-repo, and materially different outcomes. A held candidate is never reused: attaching new work to an item a human is holding is how the hold gets spent.
66
+ 2. Search open AND closed items in the configured project and current repository through the configured provider's documented read surface. Closed items supply decision history, never an active binding:
67
+ - GitHub: `gh issue list --repo <org>/<repo> --state all --search "<keywords> in:title,body"`.
68
+ - Jira: `lisa-atlassian-access operation: search-issues` with project-scoped JQL and no status filter.
69
+ - Linear: `lisa-linear-access operation: list-issues` scoped to the configured team/workspace and including all states.
70
+ 3. Treat search results as candidates, never proof. Live-read each plausible candidate and its discussion through `lisa-tracker-read`. Apply `rejection-detection` to prior **Not planned** decisions, including legacy unmarked matches, before creating: suppress the same accepted limitation unless materially changed post-decline evidence addresses its reason, with the required token and acknowledgment in any new item. A completed fix may have a verified regression. For active binding, discard terminal, container, blocked, held-by-gate, cross-repo, and materially different outcomes. A held candidate is never reused: attaching new work to an item a human is holding is how the hold gets spent.
53
71
  4. Reuse only when **exactly one** live leaf is a high-confidence semantic match for the same requested outcome and repository. A shared keyword or similar title is not enough. Record the search queries, candidates, and rejection reasons in the returned resolution evidence.
54
72
  5. If there is no unique high-confidence match (zero or ambiguous candidates), create **exactly one** item by invoking `lisa-tracker-write` once. Synthesize one complete single-repository leaf (`Bug`, `Task`, `Sub-task`, or `Improvement`, never Epic/container) with the writer's required three-audience body, Gherkin acceptance criteria, repository, target environment, relationship search, and executable Validation Journey. Pass `build_ready: true` unless the caller declared a `human_gate`, in which case pass that `human_gate: "<why>"` reason instead of `build_ready: true` and never alongside it, so the writer leaves the leaf in the tracker's default backlog role — out of the lane build-intake claims from — and stamps the hold on the body as a `[lisa-human-gate]` marker. Discarding a declared gate and filing build-ready anyway is the one outcome this step must never produce. Do not create placeholder/thin tickets, do not create a hierarchy, and do not retry creation by making another item if validation fails; repair the proposed spec and retry the same writer operation only if the vendor contract supports idempotent reuse.
55
73
  6. Live-read the writer's canonical returned reference with `lisa-tracker-read`. A create response without a verified live leaf is failure.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.55.4",
3
+ "version": "4.55.6",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: "Run a first-time-user exploratory QA pass on any product type (DOM web app, HTTP/API backend, canvas game, CLI/library, IaC/CDK): experience the product the way a brand-new end user would by driving its real consumer-facing interface via the use-the-product core (which detects the product type, resolves the per-environment mutation policy from .lisa.config.json so production is never mutated by accident, and explores through the project's personas when defined), finding anything confusing, broken, or hard to use, and filing each finding (bug or usability issue) as a tracked work item via lisa-tracker-write. Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient. The optional ready flag marks tickets build-ready (auto-picked-up by lisa-intake) or leaves them in the backlog for human triage (default). For gaps in the automated test suite, use the e2e-coverage-gaps skill if your stack provides one."
2
+ description: "Run a first-time-user exploratory QA pass on any product type (DOM web app, HTTP/API backend, canvas game, CLI/library, IaC/CDK): experience the product the way a brand-new end user would by driving its real consumer-facing interface via the use-the-product core (which detects the product type, resolves the per-environment mutation policy from .lisa.config.json so production is never mutated by accident, and explores through the project's personas when defined), finding anything confusing, broken, or hard to use, and filing each worthwhile finding (bug or usability issue) as a tracked work item via lisa-tracker-write. Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient. The optional ready flag marks tickets build-ready (auto-picked-up by lisa-intake) or leaves them in the backlog for human triage (default). For gaps in the automated test suite, use the e2e-coverage-gaps skill if your stack provides one."
3
3
  allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the lisa-exploratory-qa skill to experience the product the way a brand-new first-time end user would — driving its real consumer-facing interface via the use-the-product core (product-type detection, per-environment mutation policy, and persona-lensed exploration), finding anything confusing, broken, or hard to use, and filing each finding (bugs, usability/clarity issues) as a tracked work item via lisa-tracker-write, build-ready or in triage per the ready flag (default: triage). Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not enough. For automated test-coverage gaps, use the e2e-coverage-gaps skill if your stack provides one. $ARGUMENTS
7
+ Use the lisa-exploratory-qa skill to experience the product the way a brand-new first-time end user would — driving its real consumer-facing interface via the use-the-product core (product-type detection, per-environment mutation policy, and persona-lensed exploration), finding anything confusing, broken, or hard to use, and filing each worthwhile finding (bugs, usability/clarity issues) as a tracked work item via lisa-tracker-write, build-ready or in triage per the ready flag (default: triage). Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not enough. For automated test-coverage gaps, use the e2e-coverage-gaps skill if your stack provides one. $ARGUMENTS
@@ -46,6 +46,10 @@ Two guards that run when build-intake claims a ready item. Both come from acmeor
46
46
 
47
47
  It is a **single vendor-neutral contract** consumed by all three build-intake skills (`lisa-github-build-intake`, `lisa-jira-build-intake`, `lisa-linear-build-intake`). Each arm cites this slug in its claim step rather than growing its own copy, exactly as the arms cite `leaf-only-lifecycle`, `repo-scope-split`, `rejection-detection`, and `claim-archaeology`. One slug is what keeps a guard that fires on GitHub from being absent on Linear.
48
48
 
49
+ ## Value before claim
50
+
51
+ After respecting human holds and resolving the issue's scope, apply `do-it-now`'s **Worth doing** guidance before claiming agent-proposed incidental work. Read current discussion, linked PRs, and dependencies. Decline low-value work as **Not planned** with a specific reason and remove active lifecycle labels; do not convert it to completed work or manufacture a replacement task. Retain explicit user commitments and meaningful delivery/safety defects. A decline is a processed disposition within the existing cycle limit, not permission to start an extra item.
52
+
49
53
  ## Sequencing
50
54
 
51
55
  The shared claim phase is `3a.0` repo-scope gate → `3a` leaf-only claim gate → `3b` Claim → `3c` run lifecycle → `3d` transition to done. Inside `3b`, the pre-transition window now runs four passes in a fixed order:
@@ -5,38 +5,20 @@ alwaysApply: false
5
5
 
6
6
  # Do It Now
7
7
 
8
- ## The failure
8
+ Lisa helps projects ship dependable software with less effort. Finish authorized, worthwhile work instead of leaving an unowned promise. This instruction does not turn every imperfection into an obligation.
9
9
 
10
- An agent notices something that needs doing — a lint rule that would have caught the bug it just fixed, a stale comment, a real defect found beside the one it was sent for, a ticket that should be flipped to ready — and writes a sentence about it instead of doing it. "Worth adding a rule for this later." "We should file that." "Follow-up: update the doc."
10
+ ## Worth doing
11
11
 
12
- Almost none of those happen. The note lands in a session transcript nobody re-reads, or in a report the human skims once. Even when it survives, the next session pays full price to rebuild the context that made the work obvious — which is the moment you are in right now, and it will not come back this cheap.
12
+ Read **Worth doing** in the `lisa-track` skill for the shared value decision and preference for less machinery. That existing skill is the portable home: Antigravity does not receive the rule tree, but does receive skills. This rule's eager summary and every incidental filing/intake path point to the same guidance.
13
13
 
14
- The originating example: a session closed a non-reproducing bug, found a genuine defect next to it, filed a ticket for the real defect, and then left the ticket sitting outside the ready lane. Every individual step was correct. The handoff was incomplete, and the work sat.
14
+ ## Complete the accepted work
15
15
 
16
- ## The rule
16
+ Once scope and value are established, do the permitted work now: fix the defect, update documentation made wrong by the change, remove temporary scaffolding, and verify the result. Do not leave an accepted action as a vague follow-up. If worthwhile work must be deferred because it exceeds scope or depends on another change, track the smallest coherent outcome and give the reason.
17
17
 
18
- **If the factory is allowed to do it, do it in this session.** Allowed means: within scope, within your permissions, and not behind an exterior human gate. That covers the great majority of "later" items:
18
+ Protected deployments, held PRDs, and unresolved product decisions still wait outside the factory. Prepare the authorized portion and explain what remains. Routine decisions to decline low-value incidental work belong to the agent; do not send every nit to a human.
19
19
 
20
- - Filing the ticket — and flipping it to the ready role so something picks it up (`tracked-work`).
21
- - Adding the lint rule, ast-grep pattern, or test that prevents the recurrence (`promotion-contract` — and note that promotion is atomic: enable the control, fix the existing violations, ship the diagnostic, delete the superseded prose).
22
- - Fixing the flaky test rather than re-running it.
23
- - Updating the doc, comment, or rule your change just made wrong (`stale-state-claims`).
24
- - Cleaning up the scaffolding you introduced.
20
+ ## Existing backlog
25
21
 
26
- ## The exception, and its shape
22
+ Read the issue, current discussion, linked PRs, and dependencies before deciding. A ready label or an agent's prior filing is not proof of value. For an incidental improvement that does not clear the bar, close as **Not planned** (the configured equivalent on Jira/Linear), record a short specific reason, and remove active lifecycle labels. Do not mark declined work completed or implemented. Preserve explicit human holds and committed product scope; if cancellation would affect an active PR or a dependent delivery item, resolve that relationship before closing.
27
23
 
28
- Lisa's exterior gates exist on purpose and this rule does not override them. A protected deployment, a held-back PRD, a low-confidence learning awaiting human review, a product judgement only a person can make — these wait for the human, by design.
29
-
30
- The exception is narrower than it first appears, because it applies to the **gated step**, not to the whole item. Do everything up to the gate now:
31
-
32
- 1. Do the allowed part — file it, write it, prepare it, get it to the edge of the gate.
33
- 2. Mark the gate explicitly, in the tracker, so it is visible outside your session.
34
- 3. Say plainly, in your update, what is waiting on a human and what will happen once they act.
35
-
36
- "Waiting on a human" is a state you report, never a place you leave work silently.
37
-
38
- ## Deferring is a decision
39
-
40
- Sometimes not doing it now is genuinely right: the change is out of scope, it would balloon the diff past reviewability, it depends on a decision not yet made, or it belongs to a different work item. Those are legitimate — and they are **decisions**, which means they get said out loud with a reason, and the deferred item becomes tracked work rather than a sentence.
41
-
42
- What is never acceptable is the implied deferral: noticing, saying nothing, and moving on. The human cannot act on what you did not tell them, and neither can the next session.
24
+ Before re-filing, consult `rejection-detection`'s **Proposal rejection memory**, including legacy issues without markers. Repeating an accepted limitation is not new evidence that warrants reversing a decline.
@@ -5,12 +5,12 @@ alwaysApply: true
5
5
 
6
6
  # Do It Now (load-bearing)
7
7
 
8
- If something needs to happen eventually and **the factory is allowed to do it**, do it in this session. File the ticket, flip it to ready, add the lint rule, fix the flaky test, update the doc that just went stale. Not in a "follow-up" sentence — now.
8
+ Finish authorized, worthwhile work in this session. Lisa exists to help projects ship dependable software with less effort; more tickets, rules, or checks are not progress by themselves.
9
9
 
10
- **"I'll get to that later" is not an acceptable close** for work that is in scope and permitted. A deferral costs a whole future session its context, and most of them are never picked up at all.
10
+ Before turning an incidental finding into work, apply `do-it-now`'s **Worth doing** guidance. Act on concrete delivery failures, credible material security or data-loss risks, and recurring friction whose repair is worth its cost. Prefer the smallest sufficient fix, including simplifying or removing redundant machinery while preserving required behavior.
11
11
 
12
- The one exception is an **exterior human gate** — a protected deploy, a held-back PRD, a low-confidence learning, a product call only a person can make. There you do the allowed part now (file it, mark the gate, flip everything you may flip) and say plainly what is waiting on a human and why.
12
+ **Decline unnecessary work.** Cosmetic preferences, speculative edge cases, and already adequate behavior need no ticket, new rule, or human approval. Briefly state the reason in the current report or discussion when relevant. A complete specification establishes buildability, not value. Group related small repairs into one bounded maintenance task when worthwhile.
13
13
 
14
- Deferring is itself a decision. If you genuinely should not do it now, say so and say why; never leave it implied, and never leave it only in your own head.
14
+ Complete the accepted scope; don't manufacture follow-ups. Human decisions and protected actions still wait at their exterior gate. Do the authorized preparation and explain what remains.
15
15
 
16
- Full prose: [reference/do-it-now.md](do-it-now-reference.mdc).
16
+ Full guidance: [reference/do-it-now.md](do-it-now-reference.mdc).
@@ -120,10 +120,10 @@ A manual re-run next week must not duplicate last week's tickets. Mirror the `re
120
120
  - Gap: the literal `gap:<dimension>:<CURRENT_REPO>` (a dimension is missing-or-not; no hash needed).
121
121
  2. **Sentinel in the body.** Embed `<!-- lisa:monitor-finding: <fingerprint> -->` in every filed ticket.
122
122
  3. **Search before create** (this IS gate S13). Before filing, search the tracker for the fingerprint string. The search **MUST include closed/resolved tickets** (`gh issue list --search <fp> --state all` for GitHub; JQL with no status filter for JIRA; all states for Linear) — otherwise a just-closed match is invisible and the backoff and decline checks below can't fire. If an **open** ticket carries the fingerprint → skip (optionally link). Otherwise classify a closed match by **how** it closed:
123
- - **Closed as _not planned_ — a permanent decline** (`rejection-detection` **Proposal rejection memory**). GitHub `stateReason == "not_planned"`; the config-resolved won't-do/canceled equivalent on JIRA/Linear (never a hardcoded lane string). This is a durable human "no", not a time-boxed guard: **suppress the finding regardless of age**, and re-file only with evidence that **postdates the decline**. The new ticket MUST carry BOTH the machine token (`declined <date>; recurred <date> in <ref>`) and the human acknowledgment sentence (`You declined this on <date>. It has recurred (<date>, <ref>), so we're raising it once more for your review.`). This layers *on top of* the backoff below — a not_planned close outlives any window.
123
+ - **Closed as _not planned_ — a permanent decline** (`rejection-detection` **Proposal rejection memory**). GitHub `stateReason == "not_planned"`; the config-resolved won't-do/canceled equivalent on JIRA/Linear (never a hardcoded lane string). This is a durable human "no", not a time-boxed guard: **suppress the finding regardless of age**, and re-file only with evidence that **postdates the decline** and establishes a materially changed consequence, requirement, or risk addressing the recorded reason. Seeing the same accepted limitation on a later date is insufficient. The new ticket MUST carry BOTH the machine token (`declined <date>; recurred <date> in <ref>`) and the human acknowledgment sentence (`You declined this on <date>. New evidence (<date>, <ref>) changes the consequence, requirement, or risk: <what changed and why the decline no longer applies>.`). This layers *on top of* the backoff below — a not_planned close outlives any window.
124
124
  - **Closed as _completed_ within the recently-resolved backoff window** (`monitor.backoffHours`, default **24h** — matching the 24h Sentry event window; this is **not** the 2h `intake.repair.staleAfterHours`) → skip, to avoid re-filing a just-fixed regression before its signal has drained. A completed close **older** than the window is not a decline — a genuine recurrence is a regression and may file.
125
125
 
126
- Only file when no live match, no recently-resolved completed match, and no prior not_planned decline exists.
126
+ Only file when no live match or recently-resolved completed match exists, and any prior not_planned decline meets the evidence and acknowledgment requirements above.
127
127
 
128
128
  ## The cap
129
129
 
@@ -13,13 +13,17 @@ alwaysApply: false
13
13
 
14
14
  Filing a work item without the ready role is an **incomplete handoff** — build-intake scans the ready lane and nothing else, so the item is never picked up. A correct write plus a missing role still loses the work.
15
15
 
16
+ ## Value precedes readiness
17
+
18
+ Apply `do-it-now`'s **Worth doing** guidance before deciding to file. A declined observation produces no ticket and needs no `human_gate`; it is not an incomplete handoff. Build-ready means both worthwhile and complete enough to build. Do not invent work merely to satisfy this filing contract.
19
+
16
20
  ## Omitted means NOT ready — on every tracker
17
21
 
18
22
  **An omitted `build_ready` is NOT build-ready on JIRA, GitHub, and Linear alike.** Ready is an explicit claim, never an accident of which tracker a project configured. This is a **breaking change** for GitHub and Linear callers, which previously treated omission as ready; `lisa-github-validate-issue` F4's compensating omitted → `true` normalization is removed with it.
19
23
 
20
24
  ## Every filing declares one of three things
21
25
 
22
- - **`build_ready: true`** — complete enough to build; enters the ready lane for auto-pickup. Required for any complete defect found during other work, so it is claimable next cycle with no human flipping status.
26
+ - **`build_ready: true`** — complete enough to build; enters the ready lane for auto-pickup. Required for an accepted worthwhile defect found during other work, so it is claimable next cycle with no human flipping status.
23
27
  - **`human_gate: "<why a human must judge this first>"`** — deliberately held outside the queue. The writer stamps a visible line plus `<!-- [lisa-human-gate] reason=<short-slug> -->` so the hold is auditable.
24
28
  - **The container declaration** — `None — container: state rolls up from children`, the canonical line `derived-branch-plan` defines and every writer stamps in place of a Target Backend Environment. A container is never build-ready (`leaf-only-lifecycle`) and needs no gate, so it declares the third thing instead. Deliberately **not** keyed on `--label type:Epic`: a declared type is a claim that costs a leaf nothing and leaves it looking buildable, where the container line costs the item the environment and Branch Plan a leaf needs to be built. It is refused alongside a by-design leaf type (`type:Bug` / `type:Task` / `type:Sub-task` / `type:Improvement`) — an item cannot be a container and a leaf at once.
25
29
 
@@ -65,7 +69,7 @@ The safe direction is the implicit one. A ticket that reaches a build queue by a
65
69
 
66
70
  A writer accepts a filing only when it carries **one** of:
67
71
 
68
- - **`build_ready: true`** — the item is complete enough to build and enters the ready lane for auto-pickup. This is the correct answer for a complete defect found during other work.
72
+ - **`build_ready: true`** — the item is complete enough to build and enters the ready lane for auto-pickup. This is the correct answer for an accepted worthwhile defect found during other work.
69
73
  - **`human_gate: "<why a human must judge this first>"`** — the item is deliberately held outside the queue because a human product call is pending. The writer stamps a visible marker on the item so the hold is auditable rather than indistinguishable from an accident:
70
74
 
71
75
  ```text
@@ -191,6 +191,12 @@ A proposal is **declined** when its prior item is **closed as _not planned_**:
191
191
 
192
192
  **Closed as _completed_ is NOT a decline.** A completed fix whose underlying problem later recurs is a **regression**, and the loop **may file** it — the recurrence is genuinely new work, not a re-proposal of the declined thing. Only *not planned* is the durable "no".
193
193
 
194
+ ### Agent declines and legacy issues
195
+
196
+ A reasoned **Not planned** disposition made by an agent under `do-it-now` or an owner-authorized backlog audit has the same suppression effect. Do not require the owner to repeat it manually.
197
+
198
+ For older issues without a stable marker, additionally search open and closed issues by the owning surface and concrete symptom, then read the body and closing discussion to establish a semantic match. A title resemblance alone is insufficient. Missing markers do not erase a documented decline. Repeating the same accepted limitation on a later date is not changed evidence; reopening the proposal requires a materially changed consequence, requirement, or risk that addresses the recorded reason.
199
+
194
200
  ### Marker discipline — deterministic key, open AND closed search
195
201
 
196
202
  Every loop-proposed item carries a **visible prose line** plus a marker (a bare HTML marker renders as an empty comment bubble):
@@ -216,7 +222,7 @@ This footer is **required on every proposing loop's filed ticket** (`lisa-explor
216
222
 
217
223
  ### The rule
218
224
 
219
- A marker hit on a **closed-as-not-planned** item **suppresses the proposal** — regardless of title similarity. Re-proposal is permitted **only** with evidence that **postdates the decline**, and the re-filed item MUST carry BOTH of the following:
225
+ A marker hit on a **closed-as-not-planned** item **suppresses the proposal** — regardless of title similarity. Re-proposal is permitted **only** with evidence that **postdates the decline** and establishes a materially changed consequence, requirement, or risk addressing the recorded reason, and the re-filed item MUST carry BOTH of the following:
220
226
 
221
227
  1. **A machine token** for the dedupe/audit trail — generalizing the gardener's wording:
222
228
 
@@ -224,7 +230,7 @@ A marker hit on a **closed-as-not-planned** item **suppresses the proposal** —
224
230
 
225
231
  2. **A human acknowledgment sentence** in plain prose, so re-raising reads as a respectful return to an answered question rather than a machine nagging:
226
232
 
227
- > You declined this on `<decline-date>`. It has recurred (`<recurrence-date>`, `<recurrence-ref>`), so we're raising it once more for your review.
233
+ > You declined this on `<decline-date>`. New evidence (`<recurrence-date>`, `<recurrence-ref>`) changes the consequence, requirement, or risk: `<what changed and why the decline no longer applies>`.
228
234
 
229
235
  Naming the decline date, the recurrence date, and the recurrence reference in both forms is what turns "raising it again" into an auditable, evidence-backed, operator-legible act rather than nagging. A marker hit on a closed-as-**completed** item is not a decline — it falls under the regression path above.
230
236
 
@@ -5,6 +5,8 @@ alwaysApply: false
5
5
 
6
6
  # Tracked Work
7
7
 
8
+ Apply `do-it-now` before creating work from incidental findings. Declining an observation needs no new ticket. Related small accepted repairs may share one bounded maintenance leaf; traceability does not require a separate item for every nit.
9
+
8
10
  The project tracker is the durable operator-facing record for project work. Every session that will produce a durable project outcome must establish exactly one live configured-tracker leaf before the first durable mutation. Durable outcomes include code, tests, configuration, documentation, committed research or plans, investigation findings, commits, and pull requests. Read-only questions, discussion, and repository orientation are exempt until they turn into durable work.
9
11
 
10
12
  ## Resolve, claim, bind
@@ -5,6 +5,8 @@ alwaysApply: true
5
5
 
6
6
  # Tracked Work
7
7
 
8
+ Apply `do-it-now` before creating work from incidental findings. Declining an observation needs no new ticket. Related small accepted repairs may share one bounded maintenance leaf; traceability does not require a separate item for every nit.
9
+
8
10
  Before the first durable project mutation (code, tests, config, docs, committed research/plans/findings, commits, or PRs), establish exactly one live tracker leaf through `lisa-track`. Read-only discussion and orientation are exempt only while they produce no durable artifact.
9
11
 
10
12
  The mandatory order is: live-validate an explicit ref, or conservatively search and create exactly one valid leaf through `lisa-tracker-write` when no unique match exists; idempotently claim it through `lisa-tracker-claim`; then persist and verify the worktree-local binding with `node scripts/lisa-work-item.mjs link <ref>`. A tracker that answers no, and any claim or binding failure, blocks durable work; a tracker that cannot be reached does not block a commit — the offline checks still run, the skip is loud on stderr, and the required `Work-Item Traceability` check re-runs the live checks with credentials before anything merges.
@@ -5,56 +5,27 @@ alwaysApply: false
5
5
 
6
6
  # Upstream To Lisa
7
7
 
8
- When working in a project that has Lisa installed, you will sometimes find that the **real fix belongs upstream in Lisa**, not in this project. This rule defines what to do so the fix is both unblocking *now* and durable *later*.
8
+ A root cause in a Lisa-distributed artifact determines the destination of a worthwhile repair. First apply `do-it-now`'s **Worth doing** guidance. Ownership, a missing guard, or a reproducible edge case alone does not justify another issue.
9
9
 
10
- ## When this applies
10
+ ## Accepted repairs
11
11
 
12
- You are working in a downstream/host project (not the Lisa source repo) and you discover one of:
12
+ A concrete delivery failure, credible material safety risk, or recurring costly friction in a Lisa template, rule, skill, agent, hook, or CI workflow belongs upstream.
13
13
 
14
- - A bug or gap in a Lisa-distributed **template, rule, skill, agent, hook, or CI workflow**.
15
- - A **governance pattern** discovered here that should be generalized back into Lisa's templates so every project benefits.
16
- - Anything where the file you want to change is **Lisa-managed** — it carries Lisa governance markers, lives in a path Lisa owns, or any edit would be **overwritten on the next `lisa apply`**.
17
- - Anything where the root cause is in a Lisa **create-only** template, even if the generated file says Lisa will not overwrite it.
18
-
19
- The defining test: **does the root cause live in a Lisa-distributed artifact?** If yes, file upstream. The wipe-out test is a sufficient signal, not the only signal.
20
-
21
- | Template class | Local fix survives `lisa apply`? | Why it is still upstream-worthy |
14
+ | Template class | Local fix survives `lisa apply`? | Why repair upstream? |
22
15
  | --- | --- | --- |
23
- | **copy-overwrite** (managed) | No — clobbered on next apply | The local fix is throwaway; without the upstream fix it re-breaks. |
24
- | **create-only** (first setup) | Yes — Lisa never overwrites it | No existing repo self-heals, and every newly scaffolded repo inherits the bug. |
25
-
26
- For create-only files, header text such as `Lisa will not overwrite it` is a **positive** upstream signal, not a reason to stay local. Keep the downstream fix because Lisa will not replace it, and still file upstream so future projects receive the corrected template.
27
-
28
- ## What to do — both steps, always
29
-
30
- ### 1. Fix it locally so you are not blocked
31
-
32
- Apply the stopgap in this project so you can keep working. Do **not** stall waiting for an upstream fix to land.
33
-
34
- - For copy-overwrite files, treat the local change as temporary: it will be clobbered when the upstream fix ships and Lisa re-applies.
35
- - For create-only files, keep the local change: Lisa will not overwrite it. The upstream issue is still mandatory because new projects keep inheriting the broken template until Lisa changes.
36
-
37
- ### 2. File an upstream issue in the Lisa repository
38
-
39
- Use the `github-write-issue` skill (`lisa-github-write-issue`) to create a GitHub Issue **in Lisa's source repository `CodySwannGT/lisa`** — not in this project's own repo. The skill uses the `gh` CLI; the target repo must be `CodySwannGT/lisa` (e.g. `gh issue create --repo CodySwannGT/lisa ...`), because the agent's default repo is this host project.
40
-
41
- The issue should capture, following the skill's three-audience / acceptance-criteria conventions:
42
-
43
- - **Root cause** — which Lisa template/rule/skill/agent/hook/workflow is wrong or missing, with the path under `plugins/src/...` (or the relevant template source) if known.
44
- - **Symptom** — what broke or was missing in *this* project, and how it surfaced. Reference this project so the fix can be validated against a real case.
45
- - **Proposed durable fix** — the change to make in Lisa's source so it propagates to all projects on the next apply.
46
- - **Local stopgap applied** — note that a local fix is in place here, whether it is temporary copy-overwrite work or a retained create-only patch.
16
+ | **copy-overwrite** | No | Prevent the local repair being replaced by the broken source. |
17
+ | **create-only** | Yes | Stop new projects inheriting the defect. |
47
18
 
48
- ## Do not
19
+ A header saying `Lisa will not overwrite it` is a positive upstream ownership signal, not a reason to keep an accepted defect local. It does not establish priority or value.
49
20
 
50
- - Do **not** only fix it locally and move on. For copy-overwrite files, the local fix is throwaway and re-breaks on the next apply. For create-only files, the local fix survives, but the broken template still ships to every new project.
51
- - Do **not** edit Lisa's templates from inside this project. You are not in the Lisa repo; those edits don't exist upstream and get overwritten — they create the illusion of a fix while the real source stays broken.
52
- - Do **not** file the issue in this project's own repo. The durable fix is tracked in `CodySwannGT/lisa`.
21
+ 1. **Unblock the current task if needed.** Apply the smallest safe local stopgap. Keep it scoped and attributable; do not stall useful delivery waiting for an upstream release.
22
+ 2. **Search before filing.** Search open AND closed issues in the configured upstream repository (`hardening.upstreamRepo`, default `CodySwannGT/lisa`). Reuse a matching open issue. Honor **Not planned** decisions under `rejection-detection`'s **Proposal rejection memory**, including legacy unmarked issues. Check actual behavior before treating a completed issue as a regression.
23
+ 3. **File only the accepted work.** Use `lisa-github-write-issue` against the upstream repository, with the explicit readiness declaration from `ready-role-filing`. State the owning source, observed consequence or credible risk, smallest durable fix, and any local stopgap. Follow the public-safe attribution/projection procedure; never publish host names, credentials, or private source paths.
53
24
 
54
- ## Access fallback
25
+ Bundle related minor repairs into one bounded maintenance item when the combined benefit warrants it. Declined observations require no ticket or escalation. A generalizable governance pattern still has to justify its recurring cost across consumers; generality alone is insufficient.
55
26
 
56
- If you lack permission to create an issue in `CodySwannGT/lisa`, do not silently drop it. Surface the situation to the user along with the fully-drafted issue contents (root cause, symptom, proposed fix, local stopgap), so a human can file it or grant access.
27
+ ## Access and scope
57
28
 
58
- ## Not applicable inside the Lisa repo itself
29
+ If an accepted upstream repair cannot be filed because access is missing, prepare the public-safe issue and explain the access problem. Do not ask a human to file observations already declined on value.
59
30
 
60
- When you are already working **inside the Lisa source repo** (`CodySwannGT/lisa`), this rule does not apply — the fix is local to that repo, so make it directly in `plugins/src/...` (and rebuild artifacts) rather than filing an issue against yourself.
31
+ Do not mistake editing an installed artifact for changing Lisa's source. Inside Lisa itself, use the existing tracked task, repair the shared source, and regenerate equivalent agent surfaces; no second upstream issue is needed.