@codyswann/lisa 2.351.0 → 2.352.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 (185) hide show
  1. package/all/copy-overwrite/scripts/lisa-hooks/block-instruction-file-edits.sh +1 -1
  2. package/all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh +1 -1
  3. package/all/create-only/.agents/rules/README.md +45 -0
  4. package/dist/cli/doctor-lisa-owned-artifacts.d.ts +18 -0
  5. package/dist/cli/doctor-lisa-owned-artifacts.d.ts.map +1 -0
  6. package/dist/cli/doctor-lisa-owned-artifacts.js +129 -0
  7. package/dist/cli/doctor-lisa-owned-artifacts.js.map +1 -0
  8. package/dist/cli/doctor.d.ts.map +1 -1
  9. package/dist/cli/doctor.js +2 -0
  10. package/dist/cli/doctor.js.map +1 -1
  11. package/dist/codex/scripts/_extract-edit-paths.sh +1 -1
  12. package/dist/codex/scripts/format-on-edit.sh +1 -1
  13. package/dist/codex/scripts/lint-on-edit.sh +1 -1
  14. package/dist/codex/scripts/rubocop-on-edit.sh +1 -1
  15. package/dist/codex/scripts/sg-scan-on-edit.sh +1 -1
  16. package/dist/configs/eslint/cdk.js +2 -2
  17. package/dist/configs/eslint/cdk.js.map +1 -1
  18. package/dist/configs/eslint/nestjs.js +2 -2
  19. package/dist/configs/eslint/nestjs.js.map +1 -1
  20. package/dist/configs/eslint/typescript.js +2 -2
  21. package/dist/configs/eslint/typescript.js.map +1 -1
  22. package/dist/core/host-rules-pointer.d.ts +33 -0
  23. package/dist/core/host-rules-pointer.d.ts.map +1 -0
  24. package/dist/core/host-rules-pointer.js +115 -0
  25. package/dist/core/host-rules-pointer.js.map +1 -0
  26. package/dist/core/instruction-files-migration.d.ts +3 -2
  27. package/dist/core/instruction-files-migration.d.ts.map +1 -1
  28. package/dist/core/instruction-files-migration.js +62 -64
  29. package/dist/core/instruction-files-migration.js.map +1 -1
  30. package/dist/core/learnings.d.ts +1 -1
  31. package/dist/core/learnings.d.ts.map +1 -1
  32. package/dist/core/learnings.js +1 -1
  33. package/dist/core/learnings.js.map +1 -1
  34. package/dist/core/lisa-owned-templates.d.ts +34 -0
  35. package/dist/core/lisa-owned-templates.d.ts.map +1 -0
  36. package/dist/core/lisa-owned-templates.js +41 -0
  37. package/dist/core/lisa-owned-templates.js.map +1 -0
  38. package/dist/core/lisa.d.ts.map +1 -1
  39. package/dist/core/lisa.js +5 -1
  40. package/dist/core/lisa.js.map +1 -1
  41. package/dist/core/project-config.d.ts +39 -9
  42. package/dist/core/project-config.d.ts.map +1 -1
  43. package/dist/core/project-config.js +37 -10
  44. package/dist/core/project-config.js.map +1 -1
  45. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  46. package/dist/core/upstream-evidence-manifest.js +34 -20
  47. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  48. package/dist/opencode/plugin-templates/lisa-block-instruction-file-edits.ts +1 -1
  49. package/dist/strategies/copy-overwrite.d.ts +13 -6
  50. package/dist/strategies/copy-overwrite.d.ts.map +1 -1
  51. package/dist/strategies/copy-overwrite.js +16 -7
  52. package/dist/strategies/copy-overwrite.js.map +1 -1
  53. package/dist/sync/registry.d.ts.map +1 -1
  54. package/dist/sync/registry.js +0 -6
  55. package/dist/sync/registry.js.map +1 -1
  56. package/package.json +1 -1
  57. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa/.codex-plugin/skills/lisa-debrief/SKILL.md +1 -1
  60. package/plugins/lisa/.codex-plugin/skills/lisa-debrief-apply/SKILL.md +3 -3
  61. package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +4 -1
  62. package/plugins/lisa/.codex-plugin/skills/lisa-improve-harness/SKILL.md +2 -2
  63. package/plugins/lisa/.codex-plugin/skills/lisa-learnings-audit/SKILL.md +6 -3
  64. package/plugins/lisa/agents/learnings-synthesizer.md +1 -1
  65. package/plugins/lisa/agents/skill-evaluator.md +1 -1
  66. package/plugins/lisa/hooks/block-instruction-file-edits.sh +1 -1
  67. package/plugins/lisa/hooks/block-shell-json-parsing.sh +1 -1
  68. package/plugins/lisa/rules/eager/config-resolution.md +6 -3
  69. package/plugins/lisa/rules/eager/project-learnings.md +3 -2
  70. package/plugins/lisa/rules/reference/config-resolution.md +10 -2
  71. package/plugins/lisa/rules/reference/intent-routing.md +1 -1
  72. package/plugins/lisa/rules/reference/project-learnings.md +6 -4
  73. package/plugins/lisa/rules/reference/promotion-contract.md +2 -1
  74. package/plugins/lisa/skills/lisa-debrief/SKILL.md +1 -1
  75. package/plugins/lisa/skills/lisa-debrief-apply/SKILL.md +3 -3
  76. package/plugins/lisa/skills/lisa-doctor/SKILL.md +4 -1
  77. package/plugins/lisa/skills/lisa-improve-harness/SKILL.md +2 -2
  78. package/plugins/lisa/skills/lisa-learnings-audit/SKILL.md +6 -3
  79. package/plugins/lisa-agy/agents/learnings-synthesizer.md +1 -1
  80. package/plugins/lisa-agy/agents/skill-evaluator.md +1 -1
  81. package/plugins/lisa-agy/hooks/block-instruction-file-edits.sh +1 -1
  82. package/plugins/lisa-agy/hooks/block-shell-json-parsing.sh +1 -1
  83. package/plugins/lisa-agy/plugin.json +1 -1
  84. package/plugins/lisa-agy/skills/lisa-debrief/SKILL.md +1 -1
  85. package/plugins/lisa-agy/skills/lisa-debrief-apply/SKILL.md +3 -3
  86. package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +4 -1
  87. package/plugins/lisa-agy/skills/lisa-improve-harness/SKILL.md +2 -2
  88. package/plugins/lisa-agy/skills/lisa-learnings-audit/SKILL.md +6 -3
  89. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  91. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  92. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  95. package/plugins/lisa-copilot/agents/learnings-synthesizer.agent.md +1 -1
  96. package/plugins/lisa-copilot/agents/skill-evaluator.agent.md +1 -1
  97. package/plugins/lisa-copilot/hooks/block-instruction-file-edits.sh +1 -1
  98. package/plugins/lisa-copilot/hooks/block-shell-json-parsing.sh +1 -1
  99. package/plugins/lisa-copilot/rules/eager/config-resolution.md +6 -3
  100. package/plugins/lisa-copilot/rules/eager/project-learnings.md +3 -2
  101. package/plugins/lisa-copilot/rules/reference/config-resolution.md +10 -2
  102. package/plugins/lisa-copilot/rules/reference/intent-routing.md +1 -1
  103. package/plugins/lisa-copilot/rules/reference/project-learnings.md +6 -4
  104. package/plugins/lisa-copilot/rules/reference/promotion-contract.md +2 -1
  105. package/plugins/lisa-copilot/skills/lisa-debrief/SKILL.md +1 -1
  106. package/plugins/lisa-copilot/skills/lisa-debrief-apply/SKILL.md +3 -3
  107. package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +4 -1
  108. package/plugins/lisa-copilot/skills/lisa-improve-harness/SKILL.md +2 -2
  109. package/plugins/lisa-copilot/skills/lisa-learnings-audit/SKILL.md +6 -3
  110. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  111. package/plugins/lisa-cursor/agents/learnings-synthesizer.md +1 -1
  112. package/plugins/lisa-cursor/agents/skill-evaluator.md +1 -1
  113. package/plugins/lisa-cursor/hooks/block-instruction-file-edits.sh +1 -1
  114. package/plugins/lisa-cursor/hooks/block-shell-json-parsing.sh +1 -1
  115. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +10 -2
  116. package/plugins/lisa-cursor/rules/config-resolution.mdc +6 -3
  117. package/plugins/lisa-cursor/rules/intent-routing-reference.mdc +1 -1
  118. package/plugins/lisa-cursor/rules/project-learnings-reference.mdc +6 -4
  119. package/plugins/lisa-cursor/rules/project-learnings.mdc +3 -2
  120. package/plugins/lisa-cursor/rules/promotion-contract-reference.mdc +2 -1
  121. package/plugins/lisa-cursor/skills/lisa-debrief/SKILL.md +1 -1
  122. package/plugins/lisa-cursor/skills/lisa-debrief-apply/SKILL.md +3 -3
  123. package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +4 -1
  124. package/plugins/lisa-cursor/skills/lisa-improve-harness/SKILL.md +2 -2
  125. package/plugins/lisa-cursor/skills/lisa-learnings-audit/SKILL.md +6 -3
  126. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  127. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  128. package/plugins/lisa-expo-agy/plugin.json +1 -1
  129. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  130. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  131. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  132. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  133. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  134. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  135. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  136. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  137. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  138. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  139. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  140. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  141. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  142. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  143. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  144. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  145. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  146. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  147. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  148. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  149. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  150. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  151. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  152. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  153. package/plugins/lisa-rails-agy/plugin.json +1 -1
  154. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  155. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  156. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  157. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  158. package/plugins/lisa-typescript/hooks/block-suppress-directives.sh +1 -1
  159. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  160. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  161. package/plugins/lisa-typescript-copilot/hooks/block-suppress-directives.sh +1 -1
  162. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  163. package/plugins/lisa-typescript-cursor/hooks/block-suppress-directives.sh +1 -1
  164. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  165. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  166. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  167. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  168. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  169. package/plugins/src/base/agents/learnings-synthesizer.md +1 -1
  170. package/plugins/src/base/agents/skill-evaluator.md +1 -1
  171. package/plugins/src/base/hooks/block-instruction-file-edits.sh +1 -1
  172. package/plugins/src/base/hooks/block-shell-json-parsing.sh +1 -1
  173. package/plugins/src/base/rules/eager/config-resolution.md +6 -3
  174. package/plugins/src/base/rules/eager/project-learnings.md +3 -2
  175. package/plugins/src/base/rules/reference/config-resolution.md +10 -2
  176. package/plugins/src/base/rules/reference/intent-routing.md +1 -1
  177. package/plugins/src/base/rules/reference/project-learnings.md +6 -4
  178. package/plugins/src/base/rules/reference/promotion-contract.md +2 -1
  179. package/plugins/src/base/skills/lisa-debrief/SKILL.md +1 -1
  180. package/plugins/src/base/skills/lisa-debrief-apply/SKILL.md +3 -3
  181. package/plugins/src/base/skills/lisa-doctor/SKILL.md +4 -1
  182. package/plugins/src/base/skills/lisa-improve-harness/SKILL.md +2 -2
  183. package/plugins/src/base/skills/lisa-learnings-audit/SKILL.md +6 -3
  184. package/plugins/src/typescript/hooks/block-suppress-directives.sh +1 -1
  185. package/all/create-only/.claude/rules/PROJECT_RULES.md +0 -17
@@ -56,7 +56,7 @@ const LisaBlockInstructionFileEdits = async () => {
56
56
  "1. Every agent needs it every session, only in this project? That is a",
57
57
  " project rule — capture it with /lisa:persist-learning so it lands in",
58
58
  " the learnings ledger. The gardener (/lisa:learnings:audit) proposes",
59
- " promotion into .claude/rules/PROJECT_RULES.md as a human-gated ticket.",
59
+ " promotion into the host-rules directory .agents/rules/ as a human-gated ticket.",
60
60
  "2. It changes how an existing skill behaves? Edit that skill's SKILL.md.",
61
61
  "3. It is true beyond this project? Propose it upstream via",
62
62
  " /lisa:cross-pollinate, or open an issue on CodySwannGT/lisa.",
@@ -21,12 +21,19 @@ export declare class CopyOverwriteStrategy implements ICopyStrategy {
21
21
  /**
22
22
  * Resolve a differing managed file on a non-interactive apply.
23
23
  *
24
- * There is no prompt available here, so the file is left alone and reported
25
- * as `stale` — unless `--refresh-templates` covers it, which is the operator
26
- * deciding in advance to take upstream's version. That flag is the supported
27
- * way to deliver a changed enforcement guard to an installed project; without
28
- * it the only route is deleting the file so the create path picks it up,
29
- * which is a workaround nobody should have to know.
24
+ * There is no prompt available here, so a file the project may have
25
+ * customised is left alone and reported as `stale` — unless
26
+ * `--refresh-templates` covers it, which is the operator deciding in advance
27
+ * to take upstream's version.
28
+ *
29
+ * Lisa's own artifacts are not in that category and never wait for the flag.
30
+ * A version bump is how the fleet takes an upgrade, and it passes no flags, so
31
+ * gating `scripts/lisa-hooks/*` behind one meant a released security fix
32
+ * reached nobody: the fail-open fixes in #2374 shipped while installed repos
33
+ * kept running the vulnerable guard, until someone deleted the files by hand
34
+ * so the create path would recreate them. Lisa owns those files outright —
35
+ * see `isLisaOwnedTemplate` — so they refresh here, backed up first, and a
36
+ * project that wants to keep its own copy says so in `.lisaignore`.
30
37
  * @param sourcePath - Packaged template path
31
38
  * @param destPath - Installed file path
32
39
  * @param relativePath - Repo-relative path for reporting
@@ -1 +1 @@
1
- {"version":3,"file":"copy-overwrite.d.ts","sourceRoot":"","sources":["../../src/strategies/copy-overwrite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACzD,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAE1C;;;;;;;OAOG;IACG,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC;IAuD/B;;;;;;;;;;;;;;OAcG;YACW,mBAAmB;CAoBlC"}
1
+ {"version":3,"file":"copy-overwrite.d.ts","sourceRoot":"","sources":["../../src/strategies/copy-overwrite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACzD,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAE1C;;;;;;;OAOG;IACG,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC;IAuD/B;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,mBAAmB;CAuBlC"}
@@ -1,6 +1,7 @@
1
1
  import * as fse from "fs-extra";
2
2
  import { copyFile } from "node:fs/promises";
3
3
  import { mayRefreshTemplate } from "../core/config.js";
4
+ import { isLisaOwnedTemplate } from "../core/lisa-owned-templates.js";
4
5
  import { filesIdentical, ensureParentDir } from "../utils/file-operations.js";
5
6
  /**
6
7
  * Copy-overwrite strategy: Replace file if exists (prompts on conflict)
@@ -60,12 +61,19 @@ export class CopyOverwriteStrategy {
60
61
  /**
61
62
  * Resolve a differing managed file on a non-interactive apply.
62
63
  *
63
- * There is no prompt available here, so the file is left alone and reported
64
- * as `stale` — unless `--refresh-templates` covers it, which is the operator
65
- * deciding in advance to take upstream's version. That flag is the supported
66
- * way to deliver a changed enforcement guard to an installed project; without
67
- * it the only route is deleting the file so the create path picks it up,
68
- * which is a workaround nobody should have to know.
64
+ * There is no prompt available here, so a file the project may have
65
+ * customised is left alone and reported as `stale` — unless
66
+ * `--refresh-templates` covers it, which is the operator deciding in advance
67
+ * to take upstream's version.
68
+ *
69
+ * Lisa's own artifacts are not in that category and never wait for the flag.
70
+ * A version bump is how the fleet takes an upgrade, and it passes no flags, so
71
+ * gating `scripts/lisa-hooks/*` behind one meant a released security fix
72
+ * reached nobody: the fail-open fixes in #2374 shipped while installed repos
73
+ * kept running the vulnerable guard, until someone deleted the files by hand
74
+ * so the create path would recreate them. Lisa owns those files outright —
75
+ * see `isLisaOwnedTemplate` — so they refresh here, backed up first, and a
76
+ * project that wants to keep its own copy says so in `.lisaignore`.
69
77
  * @param sourcePath - Packaged template path
70
78
  * @param destPath - Installed file path
71
79
  * @param relativePath - Repo-relative path for reporting
@@ -74,7 +82,8 @@ export class CopyOverwriteStrategy {
74
82
  */
75
83
  async applyNonInteractive(sourcePath, destPath, relativePath, context) {
76
84
  const { config, backupFile } = context;
77
- if (!mayRefreshTemplate(relativePath, config.refreshTemplates)) {
85
+ if (!isLisaOwnedTemplate(relativePath) &&
86
+ !mayRefreshTemplate(relativePath, config.refreshTemplates)) {
78
87
  return { relativePath, strategy: this.name, action: "stale" };
79
88
  }
80
89
  // Backed up first: opting in to an overwrite is not opting out of being
@@ -1 +1 @@
1
- {"version":3,"file":"copy-overwrite.js","sourceRoot":"","sources":["../../src/strategies/copy-overwrite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copy-overwrite.js","sourceRoot":"","sources":["../../src/strategies/copy-overwrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,gBAAyB,CAAC;IAE1C;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,UAAkB,EAClB,QAAgB,EAChB,YAAoB,EACpB,OAAwB;QAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,MAAM,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAClE,CAAC;QAED,4EAA4E;QAC5E,yEAAyE;QACzE,yEAAyE;QACzE,2CAA2C;QAC3C,EAAE;QACF,2EAA2E;QAC3E,yEAAyE;QACzE,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,wCAAwC;QACxC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,mBAAmB,CAC7B,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,OAAO,CACR,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,eAAe,CAC3C,YAAY,EACZ,UAAU,EACV,QAAQ,CACT,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3B,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACtE,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACK,KAAK,CAAC,mBAAmB,CAC/B,UAAkB,EAClB,QAAgB,EAChB,YAAoB,EACpB,OAAwB;QAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAEvC,IACE,CAAC,mBAAmB,CAAC,YAAY,CAAC;YAClC,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAC1D,CAAC;YACD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAChE,CAAC;QAED,wEAAwE;QACxE,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3B,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACtE,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAO9D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvD,uEAAuE;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AASD,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC;IACjD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;CAC5D,CAkCA,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,EAsKjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA0C/C,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAO9D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvD,uEAAuE;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AASD,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC;IACjD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;CAC5D,CAkCA,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,EAiKjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA0C/C,CAAC"}
@@ -10,7 +10,6 @@
10
10
  * completely missing.
11
11
  * @module sync/registry
12
12
  */
13
- import { DEFAULT_PROJECT_RULES_FILE } from "../core/project-config.js";
14
13
  import { validateHealthSchedule } from "../health/contract.js";
15
14
  import { BUILD_LABEL_DEFAULTS, LINEAR_WORKFLOW_DEFAULTS, PRD_LABEL_DEFAULTS, } from "./lifecycle-defaults.js";
16
15
  const WHEN_TRACKER_JIRA = "tracker=jira";
@@ -73,11 +72,6 @@ export const SYNC_REGISTRY = [
73
72
  defaultValue: "claude",
74
73
  description: "Target coding-agent harness(es)",
75
74
  },
76
- {
77
- key: "projectRulesFile",
78
- defaultValue: DEFAULT_PROJECT_RULES_FILE,
79
- description: "Hand-authored project rules file (independent of the ledger)",
80
- },
81
75
  {
82
76
  key: "health.schedule",
83
77
  defaultValue: "off",
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -120,7 +120,7 @@
120
120
  }
121
121
  },
122
122
  "name": "@codyswann/lisa",
123
- "version": "2.351.0",
123
+ "version": "2.352.0",
124
124
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
125
125
  "main": "dist/index.js",
126
126
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.351.0",
3
+ "version": "2.352.0",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.351.0",
3
+ "version": "2.352.0",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -72,7 +72,7 @@ A markdown triage document at `./debrief/<initiative-slug>-<YYYY-MM-DD>.md` (or
72
72
  - `Summary` — one sentence
73
73
  - `Category`
74
74
  - `Evidence` — links to the source ticket comment / PR comment / commit / test file (multiple allowed)
75
- - `Recommended persistence destination` — the agent's best guess for where this should land if accepted (e.g., "Edge Case Brainstorm checklist → Navigation & URL state", "learnings ledger via the executable contract", "new tooling-gap ticket", "upstream Lisa issue"). Never name machine-local auto-memory, `PROJECT_RULES.md`, or `AGENTS.md` — those are not persistence destinations.
75
+ - `Recommended persistence destination` — the agent's best guess for where this should land if accepted (e.g., "Edge Case Brainstorm checklist → Navigation & URL state", "learnings ledger via the executable contract", "new tooling-gap ticket", "upstream Lisa issue"). Never name machine-local auto-memory, the host-rules directory `.agents/rules/`, or `AGENTS.md` — those are not persistence destinations.
76
76
  - `Disposition` — empty checkbox-style field the human will fill: `[ ] Accept` / `[ ] Reject` / `[ ] Defer` plus a free-text reason
77
77
  4. **Source map** — appendix listing every work item and PR walked, so the human can verify completeness.
78
78
 
@@ -18,7 +18,7 @@ A path or URL to a Debrief triage document produced by `lisa-debrief`. The docum
18
18
 
19
19
  1. **Verify the doc exists and parses.** If the file cannot be read or the expected sections are missing, stop and report — do not guess.
20
20
  2. **Confirm dispositions exist.** If every row is unmarked, stop and ask the human to triage first. A pristine doc is a no-op, not an error to silently swallow.
21
- 3. **Identify the destination map.** Read the project's `.lisa.config.json` (or stack defaults) for: edge-case checklist file (default: `plugins/src/base/rules/intent-routing.md`'s Edge Case Brainstorm sub-flow), the committed learnings ledger path (resolve it — never hardcode — via `resolveProjectLearningsFile` from `@codyswann/lisa/learnings`: the `learnings.file` override, else the default `.lisa/PROJECT_LEARNINGS.md`), tracker for new tickets. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the ledger now; machine-local auto-memory and `PROJECT_RULES.md` / `AGENTS.md` are no longer knowledge destinations (see [Ledger persistence](#ledger-persistence-knowledge-categories)).
21
+ 3. **Identify the destination map.** Read the project's `.lisa.config.json` (or stack defaults) for: edge-case checklist file (default: `plugins/src/base/rules/intent-routing.md`'s Edge Case Brainstorm sub-flow), the committed learnings ledger path (resolve it — never hardcode — via `resolveProjectLearningsFile` from `@codyswann/lisa/learnings`: the `learnings.file` override, else the default `.lisa/PROJECT_LEARNINGS.md`), tracker for new tickets. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the ledger now; machine-local auto-memory and host rules (`.agents/rules/`) / `AGENTS.md` are no longer knowledge destinations (see [Ledger persistence](#ledger-persistence-knowledge-categories)).
22
22
 
23
23
  ## Routing rules
24
24
 
@@ -61,13 +61,13 @@ For each such Accepted row:
61
61
  - `first_learned` = `last_confirmed` = today (ISO date; on consolidation keep the superseded entry's earliest `first_learned`).
62
62
  - `confidence` = **`high`**. A human marking the row **Accept** is corroboration — an independent human judgement that the learning is real — so a debrief-accepted entry starts higher than the learner's single-occurrence auto-capture (which defaults to `low`). The writer re-asserts the entry and token budgets; an over-budget failure means consolidate harder or drop, never truncate by hand.
63
63
 
64
- **Machine-local memory is no longer a knowledge destination.** Auto-memory (`project_*.md`, `MEMORY.md`) remains available only for the assistant's *personal* collaboration notes — it is invisible to cloud runs and to teammates, so it can never hold shared project knowledge. **`AGENTS.md` is human-authored** agent operating instruction — it is the source of truth, and `CLAUDE.md` is only a one-line `@AGENTS.md` pointer — and `PROJECT_RULES.md` is durable human-authored guidance; `apply` never writes to any of the three for these categories.
64
+ **Machine-local memory is no longer a knowledge destination.** Auto-memory (`project_*.md`, `MEMORY.md`) remains available only for the assistant's *personal* collaboration notes — it is invisible to cloud runs and to teammates, so it can never hold shared project knowledge. **`AGENTS.md` is human-authored** agent operating instruction — it is the source of truth, and `CLAUDE.md` is only a one-line `@AGENTS.md` pointer — and the host-rules directory `.agents/rules/` is durable human-authored guidance; `apply` never writes to any of the three for these categories.
65
65
 
66
66
  ## Idempotency
67
67
 
68
68
  `apply` is safe to re-run. Each Accepted row carries an evidence link that doubles as a fingerprint. Before writing, check whether the destination already cites that fingerprint:
69
69
 
70
- - **Knowledge categories (gotcha, friction, drift) → ledger.** Parse the ledger once with `parseLearningsFile` from `@codyswann/lisa/learnings` and scan the entries' `provenance` for the row's evidence link. If any entry's provenance already contains it, the row is already persisted — skip the write. This replaces the old scattered-file greps (memory files, `PROJECT_RULES.md`, `AGENTS.md`): provenance in the single governed ledger is now the one fingerprint surface.
70
+ - **Knowledge categories (gotcha, friction, drift) → ledger.** Parse the ledger once with `parseLearningsFile` from `@codyswann/lisa/learnings` and scan the entries' `provenance` for the row's evidence link. If any entry's provenance already contains it, the row is already persisted — skip the write. This replaces the old scattered-file greps (memory files, host rules, `AGENTS.md`): provenance in the single governed ledger is now the one fingerprint surface.
71
71
  - **Other categories** keep their existing destination check (the tracker for the ticket marker, the PRD for the defect comment, `intent-routing.md` for the edge-case citation).
72
72
 
73
73
  If the fingerprint is already present, skip the write and note the row as `already-applied` in the run summary. This lets the human triage a doc incrementally (mark a few, run apply, mark more, run apply again) without producing duplicates.
@@ -56,7 +56,10 @@ as applicable to the current repo:
56
56
  and `source` only. If a required CLI, MCP surface, or auth context is unavailable in the current
57
57
  runtime, report that explicitly instead of pretending the repo is ready.
58
58
  4. **Runtime distribution surfaces** — confirm the command, skill, hook, and related distribution
59
- surfaces relevant to this repo are present where Lisa expects them on the active runtime.
59
+ surfaces relevant to this repo are present where Lisa expects them on the active runtime, and
60
+ that the Lisa-owned enforcement artifacts (`scripts/lisa-hooks/*`,
61
+ `scripts/lisa-enforcement-fallback.sh`) match the installed Lisa version rather than an older
62
+ copy. Present-but-stale is a finding: a guard whose fix never landed enforces the old behavior.
60
63
  5. **Automation readiness** — inspect whether the configured queue source/tracker and scheduling
61
64
  prerequisites are observable, but do **not** create, edit, or delete automations during doctor.
62
65
  6. **Optional GitHub Project coordination** — when `github.projects.v2` is configured, delegate
@@ -341,7 +341,7 @@ Any durable lesson the loop produced is **submitted** to `lisa-persist-learning`
341
341
  only write path per the `project-learnings` rule) as a candidate; its hostile-default judge — not
342
342
  this skill, and not the caller — decides the disposition. A dropped candidate is recorded in
343
343
  `Known limits`, never reported as routed or owned. This skill never writes the learnings file,
344
- `PROJECT_RULES.md`, or `CLAUDE.md` itself, and never promotes a learning to a higher rung (that
344
+ host rules (`.agents/rules/`), or `CLAUDE.md` itself, and never promotes a learning to a higher rung (that
345
345
  is the gardener's ticket-gated job).
346
346
 
347
347
  ## Idempotency
@@ -483,5 +483,5 @@ its face, because a single-trajectory loop always has limits.
483
483
  - **Bounded claims.** One trajectory supports one trajectory's claim. No comparative,
484
484
  longitudinal, or population claims; `Known limits` is never empty.
485
485
  - **One write path for learnings.** Durable lessons are submitted to `lisa-persist-learning` for
486
- judgment; this skill never edits the learnings ledger, `PROJECT_RULES.md`, or a rules tree,
486
+ judgment; this skill never edits the learnings ledger or any rules tree (host `.agents/rules/` included),
487
487
  and never promotes a learning to a higher rung.
@@ -49,9 +49,12 @@ memorized list:
49
49
  — stronger than an omission count, because room was not merely tight, a real
50
50
  capture was turned away. Drain it every run (see The audit cycle).
51
51
  3. **Rules trees** — the plugin `rules/eager/` + `rules/reference/` pairs AND
52
- the host project's `.claude/rules/` (e.g. `PROJECT_RULES.md`, which is
53
- human-authored only its existing sections are still audit candidates;
54
- first-run candidates come from exactly there).
52
+ the host project's canonical host-rules directory `.agents/rules/`, plus any
53
+ retired-but-surviving single-file rules the project still carries
54
+ (`.claude/rules/PROJECT_RULES.md`, or a legacy `projectRulesFile` path).
55
+ All of it is human-authored only — the gardener proposes, it never rewrites —
56
+ and its existing sections are still audit candidates; first-run candidates
57
+ come from exactly there.
55
58
  4. **Skills** — `.claude/skills/` and the plugin skill roots the runtime
56
59
  exposes (descriptions are eager context; bodies load on invoke).
57
60
  5. **The wiki index** — `wiki/index.md` when the project has a wiki.
@@ -44,7 +44,7 @@ Map every finding to exactly one category. When a finding could fit two, pick th
44
44
 
45
45
  A finding that does not fit any of the eight is itself a signal — surface it under an additional ad-hoc category `Uncategorized` with a note explaining why no category fit. Better to surface than to drop.
46
46
 
47
- The destination column is a **hint for the human triaging the row**, not the routing decision: `lisa-debrief-apply` routes on the category, never on this column. Keep the hint honest anyway — a human decides Accept/Reject partly on where the learning will land. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the committed learnings ledger through the executable contract. Machine-local auto-memory (`project_*.md`, `MEMORY.md`), `PROJECT_RULES.md`, and `AGENTS.md` (whose `CLAUDE.md` is only a `@AGENTS.md` pointer) are **never** destinations — the first is invisible to cloud runs and teammates, and the latter two are human-authored surfaces that agents do not write.
47
+ The destination column is a **hint for the human triaging the row**, not the routing decision: `lisa-debrief-apply` routes on the category, never on this column. Keep the hint honest anyway — a human decides Accept/Reject partly on where the learning will land. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the committed learnings ledger through the executable contract. Machine-local auto-memory (`project_*.md`, `MEMORY.md`), the host-rules directory `.agents/rules/`, and `AGENTS.md` (whose `CLAUDE.md` is only a `@AGENTS.md` pointer) are **never** destinations — the first is invisible to cloud runs and teammates, and the latter two are human-authored surfaces that agents do not write.
48
48
 
49
49
  ## Dedupe rules
50
50
 
@@ -18,7 +18,7 @@ Rungs are ordered by context cost and enforcement strength. Decision vocabulary:
18
18
  | Rung | Recommendation | Destination | Enters context | Admission policy |
19
19
  | --- | --- | --- | --- | --- |
20
20
  | 6 | EXECUTABLE-CONTROL | Lint / ast-grep / type / test / hook / `package.lisa.json` force | Never — diagnostic fires on violation | Mechanically decidable + stable + recurred |
21
- | 5 | EAGER-RULE | Auto-loaded rules tree | Unconditionally, every session | **Earned by failure evidence** (repeated misses despite retrievability); demotion-biased |
21
+ | 5 | EAGER-RULE | Host rules: `.agents/rules/` (project scope) · plugin `rules/eager/` (upstream scope) | Unconditionally, every session | **Earned by failure evidence** (repeated misses despite retrievability); demotion-biased |
22
22
  | 4 | SKILL | `.claude/skills/<name>/SKILL.md` | Description eager; body on invoke | Procedural, complex, recognizable trigger |
23
23
  | 3 | WIKI | Wiki page + index entry | Only when routed to | Durable reference knowledge |
24
24
  | 2 | KEEP-IN-LEDGER | `PROJECT_LEARNINGS.md` (bounded contract projection) | Bounded projection only | Default landing zone; probationary, expiring |
@@ -117,7 +117,7 @@ WHERE IT GOES INSTEAD — take the first one that fits:
117
117
  That is a project rule — but do not write it yourself. Capture it with
118
118
  \`/lisa:persist-learning\` so it lands in the learnings ledger with provenance
119
119
  and a confidence score. The gardener (\`/lisa:learnings:audit\`) then proposes
120
- promotion into \`.claude/rules/PROJECT_RULES.md\` as a human-gated ticket.
120
+ promotion into the host-rules directory \`.agents/rules/\` as a human-gated ticket.
121
121
 
122
122
  2. It changes how an existing skill should behave. Edit that skill's SKILL.md.
123
123
  Knowledge belongs next to the procedure it modifies, not in a global preamble.
@@ -3,7 +3,7 @@
3
3
  # Text tools (grep/sed/cut/awk) break on valid JSON — multiline values, escaped
4
4
  # quotes, reordered keys, nested objects — producing silently wrong output
5
5
  # instead of errors. jq is the required tool for structural JSON reads and
6
- # writes in shell. Promoted from PROJECT_RULES.md prose to an executable
6
+ # writes in shell. Promoted from host-rules prose to an executable
7
7
  # control by the learnings gardener (issue #1787).
8
8
  #
9
9
  # Precision-first: this hook fires only on high-confidence STRUCTURAL parsing
@@ -37,9 +37,12 @@ This is the shared slug for the config-bound-transitions policy (the `leaf-only-
37
37
 
38
38
  ## Project rules and learnings
39
39
 
40
- Resolve hand-authored project rules from `.lisa.config.json`
41
- `projectRulesFile`, defaulting to `.claude/rules/PROJECT_RULES.md`. Automated
42
- learnings never append to that file: they use the separate machine-managed
40
+ Host-authored project rules live in the fixed, agent-neutral directory
41
+ `.agents/rules/` not a configurable file. Every agent reaches it through the
42
+ Lisa-managed pointer block in `AGENTS.md`, so it is read once, on demand. A
43
+ project that still carries the retired `.claude/rules/PROJECT_RULES.md` keeps
44
+ it, untouched and authoritative; the pointer names it too. Automated
45
+ learnings never append to host rules: they use the separate machine-managed
43
46
  ledger resolved from `.lisa.config.json` — the optional `learnings.file`
44
47
  override, else the default `.lisa/PROJECT_LEARNINGS.md`. The ledger lives in the
45
48
  cold `.lisa/` tree (never an auto-loaded rules directory) and is consumed only
@@ -15,7 +15,8 @@ receive the contract's bounded projection, not the full file.
15
15
 
16
16
  Missing learnings are a silent no-op. Malformed, non-canonical, unsafe, or
17
17
  over-budget learnings produce one readable warning, apply no entry, and must not
18
- block unrelated task work. Never append automated learnings to
19
- `PROJECT_RULES.md`; project learnings are a separate machine-managed document.
18
+ block unrelated task work. Never append automated learnings to host rules
19
+ (`.agents/rules/`, or a surviving legacy `PROJECT_RULES.md`); project learnings
20
+ are a separate machine-managed document.
20
21
 
21
22
  Full prose: [reference/project-learnings.md](../reference/project-learnings.md).
@@ -33,7 +33,6 @@ fi
33
33
  {
34
34
  "tracker": "jira",
35
35
  "source": "notion",
36
- "projectRulesFile": ".claude/rules/PROJECT_RULES.md",
37
36
 
38
37
  "atlassian": { "cloudId": "<uuid>", "site": "<host>" },
39
38
  "jira": {
@@ -179,12 +178,21 @@ fi
179
178
  |-------|----------|---------|-------|
180
179
  | `tracker` | **yes** | — | Destination for ticket writes. One of `"jira"`, `"github"`, `"linear"`. Missing → fail with instruction to run the matching `/lisa:setup:*` skill. |
181
180
  | `source` | no | — | Default PRD source for batch skills (`/lisa:intake`) and arg-less single-PRD skills. One of `"notion"`, `"confluence"`, `"linear"`, `"github"`, `"jira"`. Explicit URLs/keys passed to a skill always win over `source`; this is a default, not a lock. |
182
- | `projectRulesFile` | no | `.claude/rules/PROJECT_RULES.md` | Safe repo-relative Markdown path for hand-authored project rules. Independent of the learnings ledger relocating the rules file never moves the ledger. |
181
+ | ~~`projectRulesFile`~~ | | | **Retired.** Host-authored rules now live in the fixed, agent-neutral directory `.agents/rules/` — not a configurable file. An existing key is still parsed and preserved so installed projects keep applying, but nothing serves rules from it. See **Host rules** below. |
183
182
  | `learnings.file` | no | `.lisa/PROJECT_LEARNINGS.md` | Safe repo-relative Markdown path for the machine-managed learnings ledger, overriding the `.lisa/` default. Rejected if it resolves inside any auto-loaded rules tree (`.claude/rules`, `.cursor/rules`, `.github/instructions`, `.agents/rules`) — the ledger must stay out of eager context. |
184
183
  | `health.schedule` | no | `off` | Health cadence contract: `off`, `daily`, or `weekly`. `lisa sync` populates the default with `_lisaSync.populated` provenance and rejects values outside this closed vocabulary. Runtime results live only at the gitignored `.lisa/health/latest.json`, never in either config file. |
185
184
  | `usage` | no | — | Optional token/cost pricing metadata consumed by the `usage-accounting` rule. Missing pricing never blocks a lifecycle flow; Lisa records token counts with `estimated_cost: null` when no trustworthy price source is configured. |
186
185
  | `wiki` | no | — | Wiki location for the `wiki-knowledge-source` rule. Omit for a local in-repo wiki (`wiki/`). See **Wiki source** below. |
187
186
 
187
+ ### Host rules (`.agents/rules/`)
188
+
189
+ Host-authored operating rules live in `.agents/rules/` — **fixed, not configurable**. One directory, every agent.
190
+
191
+ - **Not a native auto-load tree.** `.claude/rules`, `.cursor/rules`, and `.github/instructions` are; `.agents/rules` deliberately is not. Every agent reaches it through the single Lisa-managed pointer block in `AGENTS.md` (Claude via the `@AGENTS.md` import in `CLAUDE.md`), so no agent loads host rules twice.
192
+ - **Host-owned.** Lisa never writes rule bodies into `.agents/rules/`, and never edits or deletes a file there. Lisa's own rules originate in its plugins and arrive by their own route.
193
+ - **Not the learnings ledger.** `.agents/rules` is reserved in the auto-loaded-tree blocklist, so a `learnings.file` override can never resolve inside it.
194
+ - **Transition.** A project that still has the retired `.claude/rules/PROJECT_RULES.md` keeps it, untouched and authoritative. The pointer block names it so agents whose runtime does not auto-load `.claude/rules/` still find it. Moving that content is a human-gated decision, never an automated rewrite.
195
+
188
196
  ### Wiki source (`wiki`)
189
197
 
190
198
  Declares **where this repo's LLM Wiki lives** so the query/ingest skills can resolve and (for a remote wiki) mirror it. `wiki.source` has two shapes — **local** (`path`) and **remote** (`url`) — and the block belongs in the **consumer** repo's `.lisa.config.json`, not in `wiki/lisa-wiki.config.json` (which describes a wiki from the inside and is unavailable until a remote wiki is mirrored — chicken-and-egg). The whole `wiki` block is optional; omit it and the resolver falls back to the in-repo `wiki/` convention.
@@ -223,7 +223,7 @@ Sequence:
223
223
  - **PRD defect** — the ticket faithfully captured the PRD, but the PRD itself was wrong, ambiguous, or missing the failing case
224
224
  - **Missing tool access** — an agent lacked a tool, credential, environment, or permission the work required
225
225
 
226
- The three knowledge categories (recurring gotcha, process friction, convention drift) persist to the committed learnings ledger through the executable contract — never to machine-local memory, `PROJECT_RULES.md`, or `AGENTS.md`.
226
+ The three knowledge categories (recurring gotcha, process friction, convention drift) persist to the committed learnings ledger through the executable contract — never to machine-local memory, host rules (`.agents/rules/`), or `AGENTS.md`.
227
227
  4. **Produce the human-triage document** — a markdown file with one row per candidate learning showing: category, summary, evidence (links to the source ticket comment / PR comment / commit), recommended persistence destination, and a checkbox-style disposition field the human will mark (Accept / Reject / Defer). Surface step-1 anomalies (work items missing PRs, etc.) in a separate section. The document is exhaustive — it lists every candidate, even ones the synthesizer rates low confidence — because the human, not the agent, decides what is worth keeping.
228
228
  5. **Record Debrief usage on the triage document** — invoke `lisa-usage-accounting` against the generated markdown artifact so the document carries its own direct `debrief` usage entry in the canonical `## Lisa Usage` section. If runtime usage is unavailable, write the entry with `source: unavailable` and nullable token/cost fields rather than skipping it.
229
229
  6. **Stop and hand the document to the human.** Debrief does NOT persist accepted learnings itself. The human triages, marks dispositions, and runs the **`/lisa:debrief:apply`** command (skill: `debrief-apply`) to route the accepted items to their destinations.
@@ -34,7 +34,7 @@ Each persisted entry has seven fields:
34
34
 
35
35
  - The **learner agent** at capture time appends or consolidates new entries
36
36
  (`persistLearningEntry` / `persistConsolidatedLearning`) from task learnings.
37
- It is capture-only: it never appends to `PROJECT_RULES.md`, creates skills, or
37
+ It is capture-only: it never appends to host rules, creates skills, or
38
38
  files upstream issues — promotion is the gardener's ticket-gated job.
39
39
  - **`lisa-debrief-apply`** routes accepted debrief findings in the three
40
40
  knowledge categories — recurring gotcha, process friction, convention drift —
@@ -42,7 +42,8 @@ Each persisted entry has seven fields:
42
42
  `persistConsolidatedLearning`, with consolidation-at-write), provenance drawn
43
43
  from the triage row's evidence links and a `high` starting confidence because
44
44
  a human Accept is corroboration. It no longer writes to machine-local memory,
45
- `PROJECT_RULES.md`, or `AGENTS.md` (the human-authored source of truth, of
45
+ the host-rules directory `.agents/rules/` (or a surviving legacy
46
+ `PROJECT_RULES.md`), or `AGENTS.md` (the human-authored source of truth, of
46
47
  which `CLAUDE.md` is only a `@AGENTS.md` pointer) for these categories.
47
48
  - The **build-intake flows** advance `last_confirmed` at claim time
48
49
  (`confirmLearningEntry`, below).
@@ -77,9 +78,10 @@ warning, apply no entry, and do not block unrelated work.
77
78
  Precedence:
78
79
 
79
80
  1. System, developer, user, and repo instructions still outrank learnings.
80
- 2. Committed project rules remain durable human-authored guidance.
81
+ 2. Committed host rules (`.agents/rules/`) remain durable human-authored
82
+ guidance.
81
83
  3. Project learnings add recent operational knowledge, but never rewrite or
82
- append to `PROJECT_RULES.md`.
84
+ append to host rules.
83
85
 
84
86
  ## Task telemetry (MLD) is not context
85
87
 
@@ -121,6 +121,7 @@ and lets reviewers diff against a single source of truth.
121
121
  - **The gardener** (`lisa-learnings-audit`): embeds the AC template above into
122
122
  EXECUTABLE-CONTROL promotion tickets and applies the eager-tier admission
123
123
  policy when auditing.
124
- - **PROJECT_RULES.md owners**: that file is human-authored only; machine
124
+ - **Host-rules owners** (`.agents/rules/`, plus any surviving legacy
125
+ `PROJECT_RULES.md`): that surface is human-authored only; machine
125
126
  writes go to the learnings ledger, and promotions out of it arrive as
126
127
  gardener tickets governed by this contract.
@@ -72,7 +72,7 @@ A markdown triage document at `./debrief/<initiative-slug>-<YYYY-MM-DD>.md` (or
72
72
  - `Summary` — one sentence
73
73
  - `Category`
74
74
  - `Evidence` — links to the source ticket comment / PR comment / commit / test file (multiple allowed)
75
- - `Recommended persistence destination` — the agent's best guess for where this should land if accepted (e.g., "Edge Case Brainstorm checklist → Navigation & URL state", "learnings ledger via the executable contract", "new tooling-gap ticket", "upstream Lisa issue"). Never name machine-local auto-memory, `PROJECT_RULES.md`, or `AGENTS.md` — those are not persistence destinations.
75
+ - `Recommended persistence destination` — the agent's best guess for where this should land if accepted (e.g., "Edge Case Brainstorm checklist → Navigation & URL state", "learnings ledger via the executable contract", "new tooling-gap ticket", "upstream Lisa issue"). Never name machine-local auto-memory, the host-rules directory `.agents/rules/`, or `AGENTS.md` — those are not persistence destinations.
76
76
  - `Disposition` — empty checkbox-style field the human will fill: `[ ] Accept` / `[ ] Reject` / `[ ] Defer` plus a free-text reason
77
77
  4. **Source map** — appendix listing every work item and PR walked, so the human can verify completeness.
78
78
 
@@ -18,7 +18,7 @@ A path or URL to a Debrief triage document produced by `lisa-debrief`. The docum
18
18
 
19
19
  1. **Verify the doc exists and parses.** If the file cannot be read or the expected sections are missing, stop and report — do not guess.
20
20
  2. **Confirm dispositions exist.** If every row is unmarked, stop and ask the human to triage first. A pristine doc is a no-op, not an error to silently swallow.
21
- 3. **Identify the destination map.** Read the project's `.lisa.config.json` (or stack defaults) for: edge-case checklist file (default: `plugins/src/base/rules/intent-routing.md`'s Edge Case Brainstorm sub-flow), the committed learnings ledger path (resolve it — never hardcode — via `resolveProjectLearningsFile` from `@codyswann/lisa/learnings`: the `learnings.file` override, else the default `.lisa/PROJECT_LEARNINGS.md`), tracker for new tickets. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the ledger now; machine-local auto-memory and `PROJECT_RULES.md` / `AGENTS.md` are no longer knowledge destinations (see [Ledger persistence](#ledger-persistence-knowledge-categories)).
21
+ 3. **Identify the destination map.** Read the project's `.lisa.config.json` (or stack defaults) for: edge-case checklist file (default: `plugins/src/base/rules/intent-routing.md`'s Edge Case Brainstorm sub-flow), the committed learnings ledger path (resolve it — never hardcode — via `resolveProjectLearningsFile` from `@codyswann/lisa/learnings`: the `learnings.file` override, else the default `.lisa/PROJECT_LEARNINGS.md`), tracker for new tickets. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the ledger now; machine-local auto-memory and host rules (`.agents/rules/`) / `AGENTS.md` are no longer knowledge destinations (see [Ledger persistence](#ledger-persistence-knowledge-categories)).
22
22
 
23
23
  ## Routing rules
24
24
 
@@ -61,13 +61,13 @@ For each such Accepted row:
61
61
  - `first_learned` = `last_confirmed` = today (ISO date; on consolidation keep the superseded entry's earliest `first_learned`).
62
62
  - `confidence` = **`high`**. A human marking the row **Accept** is corroboration — an independent human judgement that the learning is real — so a debrief-accepted entry starts higher than the learner's single-occurrence auto-capture (which defaults to `low`). The writer re-asserts the entry and token budgets; an over-budget failure means consolidate harder or drop, never truncate by hand.
63
63
 
64
- **Machine-local memory is no longer a knowledge destination.** Auto-memory (`project_*.md`, `MEMORY.md`) remains available only for the assistant's *personal* collaboration notes — it is invisible to cloud runs and to teammates, so it can never hold shared project knowledge. **`AGENTS.md` is human-authored** agent operating instruction — it is the source of truth, and `CLAUDE.md` is only a one-line `@AGENTS.md` pointer — and `PROJECT_RULES.md` is durable human-authored guidance; `apply` never writes to any of the three for these categories.
64
+ **Machine-local memory is no longer a knowledge destination.** Auto-memory (`project_*.md`, `MEMORY.md`) remains available only for the assistant's *personal* collaboration notes — it is invisible to cloud runs and to teammates, so it can never hold shared project knowledge. **`AGENTS.md` is human-authored** agent operating instruction — it is the source of truth, and `CLAUDE.md` is only a one-line `@AGENTS.md` pointer — and the host-rules directory `.agents/rules/` is durable human-authored guidance; `apply` never writes to any of the three for these categories.
65
65
 
66
66
  ## Idempotency
67
67
 
68
68
  `apply` is safe to re-run. Each Accepted row carries an evidence link that doubles as a fingerprint. Before writing, check whether the destination already cites that fingerprint:
69
69
 
70
- - **Knowledge categories (gotcha, friction, drift) → ledger.** Parse the ledger once with `parseLearningsFile` from `@codyswann/lisa/learnings` and scan the entries' `provenance` for the row's evidence link. If any entry's provenance already contains it, the row is already persisted — skip the write. This replaces the old scattered-file greps (memory files, `PROJECT_RULES.md`, `AGENTS.md`): provenance in the single governed ledger is now the one fingerprint surface.
70
+ - **Knowledge categories (gotcha, friction, drift) → ledger.** Parse the ledger once with `parseLearningsFile` from `@codyswann/lisa/learnings` and scan the entries' `provenance` for the row's evidence link. If any entry's provenance already contains it, the row is already persisted — skip the write. This replaces the old scattered-file greps (memory files, host rules, `AGENTS.md`): provenance in the single governed ledger is now the one fingerprint surface.
71
71
  - **Other categories** keep their existing destination check (the tracker for the ticket marker, the PRD for the defect comment, `intent-routing.md` for the edge-case citation).
72
72
 
73
73
  If the fingerprint is already present, skip the write and note the row as `already-applied` in the run summary. This lets the human triage a doc incrementally (mark a few, run apply, mark more, run apply again) without producing duplicates.
@@ -56,7 +56,10 @@ as applicable to the current repo:
56
56
  and `source` only. If a required CLI, MCP surface, or auth context is unavailable in the current
57
57
  runtime, report that explicitly instead of pretending the repo is ready.
58
58
  4. **Runtime distribution surfaces** — confirm the command, skill, hook, and related distribution
59
- surfaces relevant to this repo are present where Lisa expects them on the active runtime.
59
+ surfaces relevant to this repo are present where Lisa expects them on the active runtime, and
60
+ that the Lisa-owned enforcement artifacts (`scripts/lisa-hooks/*`,
61
+ `scripts/lisa-enforcement-fallback.sh`) match the installed Lisa version rather than an older
62
+ copy. Present-but-stale is a finding: a guard whose fix never landed enforces the old behavior.
60
63
  5. **Automation readiness** — inspect whether the configured queue source/tracker and scheduling
61
64
  prerequisites are observable, but do **not** create, edit, or delete automations during doctor.
62
65
  6. **Optional GitHub Project coordination** — when `github.projects.v2` is configured, delegate
@@ -341,7 +341,7 @@ Any durable lesson the loop produced is **submitted** to `lisa-persist-learning`
341
341
  only write path per the `project-learnings` rule) as a candidate; its hostile-default judge — not
342
342
  this skill, and not the caller — decides the disposition. A dropped candidate is recorded in
343
343
  `Known limits`, never reported as routed or owned. This skill never writes the learnings file,
344
- `PROJECT_RULES.md`, or `CLAUDE.md` itself, and never promotes a learning to a higher rung (that
344
+ host rules (`.agents/rules/`), or `CLAUDE.md` itself, and never promotes a learning to a higher rung (that
345
345
  is the gardener's ticket-gated job).
346
346
 
347
347
  ## Idempotency
@@ -483,5 +483,5 @@ its face, because a single-trajectory loop always has limits.
483
483
  - **Bounded claims.** One trajectory supports one trajectory's claim. No comparative,
484
484
  longitudinal, or population claims; `Known limits` is never empty.
485
485
  - **One write path for learnings.** Durable lessons are submitted to `lisa-persist-learning` for
486
- judgment; this skill never edits the learnings ledger, `PROJECT_RULES.md`, or a rules tree,
486
+ judgment; this skill never edits the learnings ledger or any rules tree (host `.agents/rules/` included),
487
487
  and never promotes a learning to a higher rung.
@@ -49,9 +49,12 @@ memorized list:
49
49
  — stronger than an omission count, because room was not merely tight, a real
50
50
  capture was turned away. Drain it every run (see The audit cycle).
51
51
  3. **Rules trees** — the plugin `rules/eager/` + `rules/reference/` pairs AND
52
- the host project's `.claude/rules/` (e.g. `PROJECT_RULES.md`, which is
53
- human-authored only its existing sections are still audit candidates;
54
- first-run candidates come from exactly there).
52
+ the host project's canonical host-rules directory `.agents/rules/`, plus any
53
+ retired-but-surviving single-file rules the project still carries
54
+ (`.claude/rules/PROJECT_RULES.md`, or a legacy `projectRulesFile` path).
55
+ All of it is human-authored only — the gardener proposes, it never rewrites —
56
+ and its existing sections are still audit candidates; first-run candidates
57
+ come from exactly there.
55
58
  4. **Skills** — `.claude/skills/` and the plugin skill roots the runtime
56
59
  exposes (descriptions are eager context; bodies load on invoke).
57
60
  5. **The wiki index** — `wiki/index.md` when the project has a wiki.
@@ -44,7 +44,7 @@ Map every finding to exactly one category. When a finding could fit two, pick th
44
44
 
45
45
  A finding that does not fit any of the eight is itself a signal — surface it under an additional ad-hoc category `Uncategorized` with a note explaining why no category fit. Better to surface than to drop.
46
46
 
47
- The destination column is a **hint for the human triaging the row**, not the routing decision: `lisa-debrief-apply` routes on the category, never on this column. Keep the hint honest anyway — a human decides Accept/Reject partly on where the learning will land. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the committed learnings ledger through the executable contract. Machine-local auto-memory (`project_*.md`, `MEMORY.md`), `PROJECT_RULES.md`, and `AGENTS.md` (whose `CLAUDE.md` is only a `@AGENTS.md` pointer) are **never** destinations — the first is invisible to cloud runs and teammates, and the latter two are human-authored surfaces that agents do not write.
47
+ The destination column is a **hint for the human triaging the row**, not the routing decision: `lisa-debrief-apply` routes on the category, never on this column. Keep the hint honest anyway — a human decides Accept/Reject partly on where the learning will land. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the committed learnings ledger through the executable contract. Machine-local auto-memory (`project_*.md`, `MEMORY.md`), the host-rules directory `.agents/rules/`, and `AGENTS.md` (whose `CLAUDE.md` is only a `@AGENTS.md` pointer) are **never** destinations — the first is invisible to cloud runs and teammates, and the latter two are human-authored surfaces that agents do not write.
48
48
 
49
49
  ## Dedupe rules
50
50
 
@@ -18,7 +18,7 @@ Rungs are ordered by context cost and enforcement strength. Decision vocabulary:
18
18
  | Rung | Recommendation | Destination | Enters context | Admission policy |
19
19
  | --- | --- | --- | --- | --- |
20
20
  | 6 | EXECUTABLE-CONTROL | Lint / ast-grep / type / test / hook / `package.lisa.json` force | Never — diagnostic fires on violation | Mechanically decidable + stable + recurred |
21
- | 5 | EAGER-RULE | Auto-loaded rules tree | Unconditionally, every session | **Earned by failure evidence** (repeated misses despite retrievability); demotion-biased |
21
+ | 5 | EAGER-RULE | Host rules: `.agents/rules/` (project scope) · plugin `rules/eager/` (upstream scope) | Unconditionally, every session | **Earned by failure evidence** (repeated misses despite retrievability); demotion-biased |
22
22
  | 4 | SKILL | `.claude/skills/<name>/SKILL.md` | Description eager; body on invoke | Procedural, complex, recognizable trigger |
23
23
  | 3 | WIKI | Wiki page + index entry | Only when routed to | Durable reference knowledge |
24
24
  | 2 | KEEP-IN-LEDGER | `PROJECT_LEARNINGS.md` (bounded contract projection) | Bounded projection only | Default landing zone; probationary, expiring |
@@ -117,7 +117,7 @@ WHERE IT GOES INSTEAD — take the first one that fits:
117
117
  That is a project rule — but do not write it yourself. Capture it with
118
118
  \`/lisa:persist-learning\` so it lands in the learnings ledger with provenance
119
119
  and a confidence score. The gardener (\`/lisa:learnings:audit\`) then proposes
120
- promotion into \`.claude/rules/PROJECT_RULES.md\` as a human-gated ticket.
120
+ promotion into the host-rules directory \`.agents/rules/\` as a human-gated ticket.
121
121
 
122
122
  2. It changes how an existing skill should behave. Edit that skill's SKILL.md.
123
123
  Knowledge belongs next to the procedure it modifies, not in a global preamble.
@@ -3,7 +3,7 @@
3
3
  # Text tools (grep/sed/cut/awk) break on valid JSON — multiline values, escaped
4
4
  # quotes, reordered keys, nested objects — producing silently wrong output
5
5
  # instead of errors. jq is the required tool for structural JSON reads and
6
- # writes in shell. Promoted from PROJECT_RULES.md prose to an executable
6
+ # writes in shell. Promoted from host-rules prose to an executable
7
7
  # control by the learnings gardener (issue #1787).
8
8
  #
9
9
  # Precision-first: this hook fires only on high-confidence STRUCTURAL parsing