@codyswann/lisa 4.37.3 → 4.38.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 (81) hide show
  1. package/all/copy-contents/.gitattributes +9 -0
  2. package/dist/core/learnings-merge-driver.d.ts +8 -0
  3. package/dist/core/learnings-merge-driver.d.ts.map +1 -1
  4. package/dist/core/learnings-merge-driver.js +17 -0
  5. package/dist/core/learnings-merge-driver.js.map +1 -1
  6. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  7. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  8. package/dist/core/upstream-evidence-manifest.js +28 -2
  9. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  10. package/package.json +5 -4
  11. package/plugins/lisa/.claude-plugin/plugin.json +28 -1
  12. package/plugins/lisa/.codex-plugin/hooks.json +27 -0
  13. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  14. package/plugins/lisa/hooks/withdrawn-rulings.mjs +525 -0
  15. package/plugins/lisa/hooks/withdrawn-rulings.sh +24 -0
  16. package/plugins/lisa/rules/eager/withdrawn-rulings.md +69 -0
  17. package/plugins/lisa/rules/reference/withdrawn-rulings.md +114 -0
  18. package/plugins/lisa-agy/plugin.json +1 -1
  19. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  21. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  22. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-copilot/.claude-plugin/plugin.json +19 -1
  25. package/plugins/lisa-copilot/hooks/withdrawn-rulings.mjs +525 -0
  26. package/plugins/lisa-copilot/hooks/withdrawn-rulings.sh +24 -0
  27. package/plugins/lisa-copilot/rules/eager/withdrawn-rulings.md +69 -0
  28. package/plugins/lisa-copilot/rules/reference/withdrawn-rulings.md +114 -0
  29. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-cursor/hooks/hooks.json +10 -0
  31. package/plugins/lisa-cursor/hooks/withdrawn-rulings.mjs +525 -0
  32. package/plugins/lisa-cursor/hooks/withdrawn-rulings.sh +24 -0
  33. package/plugins/lisa-cursor/rules/withdrawn-rulings-reference.mdc +119 -0
  34. package/plugins/lisa-cursor/rules/withdrawn-rulings.mdc +74 -0
  35. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  37. package/plugins/lisa-expo-agy/plugin.json +1 -1
  38. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  42. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  43. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  47. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  48. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  52. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  53. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  58. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  62. package/plugins/lisa-rails-agy/plugin.json +1 -1
  63. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  67. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  68. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  72. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  73. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  74. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  75. package/plugins/src/base/.claude-plugin/plugin.json +27 -0
  76. package/plugins/src/base/hooks/withdrawn-rulings.mjs +525 -0
  77. package/plugins/src/base/hooks/withdrawn-rulings.sh +24 -0
  78. package/plugins/src/base/rules/eager/withdrawn-rulings.md +69 -0
  79. package/plugins/src/base/rules/reference/withdrawn-rulings.md +114 -0
  80. package/scripts/lib/hook-registration-audit.mjs +612 -0
  81. package/typescript/copy-contents/.husky/pre-push +98 -26
@@ -17,4 +17,13 @@
17
17
  # it exists to preserve.
18
18
  .lisa/PROJECT_LEARNINGS.overflow.md merge=lisa-learnings
19
19
 
20
+ # Withdrawal tombstones, appended by every agent that retracts a claim it
21
+ # circulated (CodySwannGT/lisa#3752). A sibling of the ledger above — same
22
+ # concurrent writers on their own branches — but one JSON object per line
23
+ # and append-only, so git's BUILT-IN union driver reconstructs concurrent
24
+ # appends exactly. No bespoke driver, and nothing machine-local to register.
25
+ # A default line merge here would drop a retraction, which is the one
26
+ # failure this ledger exists to make impossible.
27
+ .lisa/WITHDRAWN.jsonl merge=union
28
+
20
29
  # END: AI GUARDRAILS
@@ -31,6 +31,14 @@ export declare const GITATTRIBUTES_END_MARKER = "# END: AI GUARDRAILS";
31
31
  * @returns Fully expanded git driver command
32
32
  */
33
33
  export declare function buildLearningsMergeDriverCommand(invocation: string): string;
34
+ /**
35
+ * The withdrawal-tombstone ledger, bound to git's built-in union driver.
36
+ *
37
+ * Fixed rather than derived from `learnings.file`, because the hook that reads
38
+ * it is materialized into every plugin payload and has no way to resolve a
39
+ * project's configuration from there. One path, known to both writers.
40
+ */
41
+ export declare const WITHDRAWN_RULINGS_LEDGER = ".lisa/WITHDRAWN.jsonl";
34
42
  /**
35
43
  * Build the `.gitattributes` line binding one ledger path to the driver.
36
44
  * @param ledgerPath - Project-relative learnings file path
@@ -1 +1 @@
1
- {"version":3,"file":"learnings-merge-driver.d.ts","sourceRoot":"","sources":["../../src/core/learnings-merge-driver.ts"],"names":[],"mappings":"AAmCA,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,mBAAmB,CAAC;AAE5D,iEAAiE;AACjE,eAAO,MAAM,kCAAkC,wCACR,CAAC;AAExC,wEAAwE;AACxE,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAEnE,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAmC5E"}
1
+ {"version":3,"file":"learnings-merge-driver.d.ts","sourceRoot":"","sources":["../../src/core/learnings-merge-driver.ts"],"names":[],"mappings":"AAmCA,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,mBAAmB,CAAC;AAE5D,iEAAiE;AACjE,eAAO,MAAM,kCAAkC,wCACR,CAAC;AAExC,wEAAwE;AACxE,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAEnE,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA4C5E"}
@@ -67,6 +67,14 @@ export const GITATTRIBUTES_END_MARKER = "# END: AI GUARDRAILS";
67
67
  export function buildLearningsMergeDriverCommand(invocation) {
68
68
  return `${invocation} merge-learnings --base %O --ours %A --theirs %B --path %P`;
69
69
  }
70
+ /**
71
+ * The withdrawal-tombstone ledger, bound to git's built-in union driver.
72
+ *
73
+ * Fixed rather than derived from `learnings.file`, because the hook that reads
74
+ * it is materialized into every plugin payload and has no way to resolve a
75
+ * project's configuration from there. One path, known to both writers.
76
+ */
77
+ export const WITHDRAWN_RULINGS_LEDGER = ".lisa/WITHDRAWN.jsonl";
70
78
  /**
71
79
  * Build the `.gitattributes` line binding one ledger path to the driver.
72
80
  * @param ledgerPath - Project-relative learnings file path
@@ -126,6 +134,15 @@ export function renderLearningsGitattributesBlock(ledgerPath) {
126
134
  "# it exists to preserve.",
127
135
  buildLearningsAttributeLine(resolveLearningsOverflowFile(ledgerPath)),
128
136
  "",
137
+ "# Withdrawal tombstones, appended by every agent that retracts a claim it",
138
+ "# circulated (CodySwannGT/lisa#3752). A sibling of the ledger above — same",
139
+ "# concurrent writers on their own branches — but one JSON object per line",
140
+ "# and append-only, so git's BUILT-IN union driver reconstructs concurrent",
141
+ "# appends exactly. No bespoke driver, and nothing machine-local to register.",
142
+ "# A default line merge here would drop a retraction, which is the one",
143
+ "# failure this ledger exists to make impossible.",
144
+ `${WITHDRAWN_RULINGS_LEDGER} merge=union`,
145
+ "",
129
146
  GITATTRIBUTES_END_MARKER,
130
147
  "",
131
148
  ].join("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"learnings-merge-driver.js","sourceRoot":"","sources":["../../src/core/learnings-merge-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,iFAAiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,gBAAgB,CAAC;AAE5D,iEAAiE;AACjE,MAAM,CAAC,MAAM,kCAAkC,GAC7C,qCAAqC,CAAC;AAExC,wEAAwE;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAEnE,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,gCAAgC,CAAC,UAAkB;IACjE,OAAO,GAAG,UAAU,4DAA4D,CAAC;AACnF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,OAAO,GAAG,UAAU,UAAU,2BAA2B,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iCAAiC,CAAC,UAAkB;IAClE,OAAO;QACL,0BAA0B;QAC1B,EAAE;QACF,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,8EAA8E;QAC9E,4EAA4E;QAC5E,yEAAyE;QACzE,uEAAuE;QACvE,0EAA0E;QAC1E,2EAA2E;QAC3E,kEAAkE;QAClE,EAAE;QACF,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,kEAAkE;QAClE,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,yCAAyC;QACzC,2BAA2B,CAAC,UAAU,CAAC;QACvC,EAAE;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,4EAA4E;QAC5E,0BAA0B;QAC1B,2BAA2B,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;QACrE,EAAE;QACF,wBAAwB;QACxB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"learnings-merge-driver.js","sourceRoot":"","sources":["../../src/core/learnings-merge-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,iFAAiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,gBAAgB,CAAC;AAE5D,iEAAiE;AACjE,MAAM,CAAC,MAAM,kCAAkC,GAC7C,qCAAqC,CAAC;AAExC,wEAAwE;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAEnE,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,gCAAgC,CAAC,UAAkB;IACjE,OAAO,GAAG,UAAU,4DAA4D,CAAC;AACnF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,OAAO,GAAG,UAAU,UAAU,2BAA2B,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iCAAiC,CAAC,UAAkB;IAClE,OAAO;QACL,0BAA0B;QAC1B,EAAE;QACF,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,8EAA8E;QAC9E,4EAA4E;QAC5E,yEAAyE;QACzE,uEAAuE;QACvE,0EAA0E;QAC1E,2EAA2E;QAC3E,kEAAkE;QAClE,EAAE;QACF,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,kEAAkE;QAClE,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,yCAAyC;QACzC,2BAA2B,CAAC,UAAU,CAAC;QACvC,EAAE;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,4EAA4E;QAC5E,0BAA0B;QAC1B,2BAA2B,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;QACrE,EAAE;QACF,2EAA2E;QAC3E,4EAA4E;QAC5E,2EAA2E;QAC3E,2EAA2E;QAC3E,8EAA8E;QAC9E,uEAAuE;QACvE,kDAAkD;QAClD,GAAG,wBAAwB,cAAc;QACzC,EAAE;QACF,wBAAwB;QACxB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -34,9 +34,9 @@ export const NIGHTLY_E2E_GUARD_BEHAVIOR_CERTIFICATES = Object.freeze({
34
34
  }),
35
35
  dfd2fef680de5ef03e63075e8a61c62ca4d95cdfdff6201939b79c748d3397f6: Object.freeze({
36
36
  contractVersion: "1.9.0",
37
- packageVersions: Object.freeze(["4.37.3"]),
37
+ packageVersions: Object.freeze(["4.38.0"]),
38
38
  provenances: Object.freeze([
39
- "workspace package @codyswann/lisa@4.37.3 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
39
+ "workspace package @codyswann/lisa@4.38.0 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
40
40
  ]),
41
41
  }),
42
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoiFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAouQjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
1
+ {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA8iFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAyvQjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable max-lines -- generated exact public-evidence allowlist */
2
2
  /** Generated by scripts/generate-upstream-evidence-manifest.mjs. Do not edit. */
3
3
  export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
4
- "all/copy-contents/.gitattributes": "39b6fea7a398e6cb9afff8735c19823ed3eabd1cd36d087f6fc21ab6b7fd7d3a",
4
+ "all/copy-contents/.gitattributes": "e19d1a971de1a9142cb13d58ce56a98a3ec1c0594a6930ca7f92cb5ef4135d40",
5
5
  "all/copy-contents/gitignore": "66e105ae1b6874e6c587d128a04ff5a5005bf923759fc41cc31d73b9ba44bacf",
6
6
  "all/copy-overwrite/scripts/check-conflict-markers.mjs": "d7a689bcc122af7f38d1c536924fc2f3dcb503b09658ffc6035ccbe720d14d6b",
7
7
  "all/copy-overwrite/scripts/check-npm-publish-landed.mjs": "bba6114e5e4643575749210819acfda207260ac1db5fcb48c33c320c3a9503ca",
@@ -401,6 +401,8 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
401
401
  "plugins/src/base/hooks/threshold-ratchet.sh": "b86f4d0b554e44fd119ad8a8920cd0ba6c9dbe779f7ee219d381cf0629453990",
402
402
  "plugins/src/base/hooks/ticket-sync-reminder.sh": "212f80bcdfd9e3ec2254987c5a7186d1d2d38065b330ddcdc631f76df7c4a6c0",
403
403
  "plugins/src/base/hooks/track-plan-sessions.sh": "8bc47dcad3aed628df0c9efbe7b6f3df87635b94b0c54c71e0bd52eceace563a",
404
+ "plugins/src/base/hooks/withdrawn-rulings.mjs": "fcaac3917b7cafc9b8c853644d16a0598b3df0ef6d117af0ad03c4251c60a294",
405
+ "plugins/src/base/hooks/withdrawn-rulings.sh": "5dbf429b6ec73c3c29fb96008efa1015feaa4812c1b4bb26aaa5d0b904a0ff9c",
404
406
  "plugins/src/base/rules/eager/automation-runbook-contract.md": "0442c478cac32b2522534309bda96a30e1cd268b9041d2b6a7a63d08a5c49920",
405
407
  "plugins/src/base/rules/eager/base-rules.md": "d3a4bd518acf2c6f4e866042542f9155fdbf5b2fdad5747e1afd097bdef15351",
406
408
  "plugins/src/base/rules/eager/bdd-e2e-coverage.md": "379c0fcbf69be3f536d99a0034a3fe1548cfd05d37af6c6504a7e921401eb88b",
@@ -455,6 +457,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
455
457
  "plugins/src/base/rules/eager/usage-accounting.md": "b93fa782d61911579b25363e465bb1f4e9b7e4edb54465a346d52f74dffe5a97",
456
458
  "plugins/src/base/rules/eager/verification.md": "a6cc1d50c5b91080171490edce4d375f136a14790dcbb247ca8b736ad8f55cfd",
457
459
  "plugins/src/base/rules/eager/wiki-knowledge-source.md": "b3ae63fca40461fef19779d8f0c971553963ed8fe9c22fc504da3d8e757b3a36",
460
+ "plugins/src/base/rules/eager/withdrawn-rulings.md": "d31ad0b430524038131474c4b7b8239a8d68562f502d2d7797f2de5bbe3b2495",
458
461
  "plugins/src/base/rules/eager/work-item-definition-of-ready.md": "9d9d800cba5420176705df9fae2aec0cfad81d7e6d2c306aea2f7a498eaa10a3",
459
462
  "plugins/src/base/rules/reference/automation-runbook-contract.md": "427be7bddf9a581dbb1c1fdbe07c02d4a1ff4ec96f4d91f409651b6ac4ff8a45",
460
463
  "plugins/src/base/rules/reference/base-rules.md": "938173f9e048a0f8e09bd825d97f2e3a3e97f03fc99037fcdae47a9bfa99f307",
@@ -510,6 +513,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
510
513
  "plugins/src/base/rules/reference/usage-accounting.md": "79c00ed4a97c40de72cfccef16b6846ba668fc564354507907876489c038ab75",
511
514
  "plugins/src/base/rules/reference/verification.md": "9ae8db87b37c7700687fabd1b8632b3cddd0f1f1e4b04384c604f88f160056ed",
512
515
  "plugins/src/base/rules/reference/wiki-knowledge-source.md": "725a7415a0606f85164722bd4b4975bce1f496cc43c97e45b224810b1a685189",
516
+ "plugins/src/base/rules/reference/withdrawn-rulings.md": "089ebd9f633ca739a10bdef0ac162b28aa8516da181f568923246cace9c00508",
513
517
  "plugins/src/base/rules/reference/work-item-definition-of-ready.md": "ebcfe89f5a33a8008c4a54c1c2f4a092952df3263adc8f537a4c0b6ad8dbe18d",
514
518
  "plugins/src/base/scripts/automation-run-record.mjs": "24351f445c9c9dc7e9136be918bb0c4fbea567f0c3972cbe62afbdc83653ce2a",
515
519
  "plugins/src/base/scripts/automation-status-claude-adapter.mjs": "f377d6384d05a97af2a33dc6c1ddb255bc07c7af308c595f6f6fc2789e24d46b",
@@ -1170,6 +1174,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1170
1174
  "scripts/internal-opencode-skill-policy.json": "d7191650d8a12727549b67df61dbfa61e16cfb9cc31e461cd98d253ceab1612a",
1171
1175
  "scripts/lib/bounded-spawn.mjs": "a37de43abd0c9840d0caab4e211a066c4dcf4fd76bbbf12a84b6a402300f99a1",
1172
1176
  "scripts/lib/gitattributes-merge-drivers.mjs": "bf43913f423f5774a69b60f2541f7a49c173aabd4855e2c30cbe2984806a182b",
1177
+ "scripts/lib/hook-registration-audit.mjs": "f282fccded9cf954e034de2d81a348ad5addb444694baa09da540f0cb89a5189",
1173
1178
  "scripts/lib/invoked-as-script.mjs": "4711b3e900dc85c000c287dd6a675f519fd0f5f288508ae1d5acefdab136ad4e",
1174
1179
  "scripts/lib/mutation-performance-reporter.mjs": "7f4fd67a2128797970b10a97b9947f9b63518fe1110c2f12e51fe2c430751235",
1175
1180
  "scripts/lib/nest-plugin-commands.mjs": "c52b2f48edbc17edcc60ae33536549829cbc279c60c5d85d912ac6609cae9bea",
@@ -1232,7 +1237,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1232
1237
  "typescript/copy-contents/.husky/commit-msg": "1885cc0f655a5a336078db510ceb8854582c628cb813c14fd052a1f6aa3bab07",
1233
1238
  "typescript/copy-contents/.husky/post-checkout": "f3abc4528e12d3ad2bc48b236d19f105e2817595c744156a558c62ae5551ccfb",
1234
1239
  "typescript/copy-contents/.husky/pre-commit": "4f4811401632ec2452e513875a8f01f5c4a9b74776b1926c9075ed99a06da436",
1235
- "typescript/copy-contents/.husky/pre-push": "c71d3e842aafb2ccbaaebb82e1cabd267ef9a0d6f2845fd75807f46fdeccbc0a",
1240
+ "typescript/copy-contents/.husky/pre-push": "e73dde7a1dcb3c10be5db540b9d9f46ec74b90ecc10a850b4fb098481ef6de6e",
1236
1241
  "typescript/copy-contents/.husky/prepare-commit-msg": "4a719c20da65653f266e7c8a346b5546ad05f1dfa34665fc7fec47e89d2f58d1",
1237
1242
  "typescript/copy-overwrite/.claude/hooks/worktree-create.sh": "888cfd16bd1ac04f9f8a835eae62f8bd2c956de654bce12ce9a6a52947b121ca",
1238
1243
  "typescript/copy-overwrite/.github/GITHUB_ACTIONS.md": "3f5d8e7f5f2c8ec1d369359f2ee64c033736df4bc172d06da1b4be5ee65b173b",
@@ -2719,6 +2724,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2719
2724
  "plugins/lisa-copilot/hooks/threshold-ratchet-families.mjs": true,
2720
2725
  "plugins/lisa-copilot/hooks/threshold-ratchet.mjs": true,
2721
2726
  "plugins/lisa-copilot/hooks/threshold-ratchet.sh": true,
2727
+ "plugins/lisa-copilot/hooks/withdrawn-rulings.mjs": true,
2728
+ "plugins/lisa-copilot/hooks/withdrawn-rulings.sh": true,
2722
2729
  "plugins/lisa-copilot/rules/eager/automation-runbook-contract.md": true,
2723
2730
  "plugins/lisa-copilot/rules/eager/base-rules.md": true,
2724
2731
  "plugins/lisa-copilot/rules/eager/bdd-e2e-coverage.md": true,
@@ -2773,6 +2780,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2773
2780
  "plugins/lisa-copilot/rules/eager/usage-accounting.md": true,
2774
2781
  "plugins/lisa-copilot/rules/eager/verification.md": true,
2775
2782
  "plugins/lisa-copilot/rules/eager/wiki-knowledge-source.md": true,
2783
+ "plugins/lisa-copilot/rules/eager/withdrawn-rulings.md": true,
2776
2784
  "plugins/lisa-copilot/rules/eager/work-item-definition-of-ready.md": true,
2777
2785
  "plugins/lisa-copilot/rules/reference/automation-runbook-contract.md": true,
2778
2786
  "plugins/lisa-copilot/rules/reference/base-rules.md": true,
@@ -2828,6 +2836,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2828
2836
  "plugins/lisa-copilot/rules/reference/usage-accounting.md": true,
2829
2837
  "plugins/lisa-copilot/rules/reference/verification.md": true,
2830
2838
  "plugins/lisa-copilot/rules/reference/wiki-knowledge-source.md": true,
2839
+ "plugins/lisa-copilot/rules/reference/withdrawn-rulings.md": true,
2831
2840
  "plugins/lisa-copilot/rules/reference/work-item-definition-of-ready.md": true,
2832
2841
  "plugins/lisa-copilot/scripts/automation-run-record.mjs": true,
2833
2842
  "plugins/lisa-copilot/scripts/automation-status-claude-adapter.mjs": true,
@@ -3208,6 +3217,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
3208
3217
  "plugins/lisa-cursor/hooks/threshold-ratchet-families.mjs": true,
3209
3218
  "plugins/lisa-cursor/hooks/threshold-ratchet.mjs": true,
3210
3219
  "plugins/lisa-cursor/hooks/threshold-ratchet.sh": true,
3220
+ "plugins/lisa-cursor/hooks/withdrawn-rulings.mjs": true,
3221
+ "plugins/lisa-cursor/hooks/withdrawn-rulings.sh": true,
3211
3222
  "plugins/lisa-cursor/mcp.json": true,
3212
3223
  "plugins/lisa-cursor/rules/automation-runbook-contract-reference.mdc": true,
3213
3224
  "plugins/lisa-cursor/rules/automation-runbook-contract.mdc": true,
@@ -3317,6 +3328,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
3317
3328
  "plugins/lisa-cursor/rules/verification.mdc": true,
3318
3329
  "plugins/lisa-cursor/rules/wiki-knowledge-source-reference.mdc": true,
3319
3330
  "plugins/lisa-cursor/rules/wiki-knowledge-source.mdc": true,
3331
+ "plugins/lisa-cursor/rules/withdrawn-rulings-reference.mdc": true,
3332
+ "plugins/lisa-cursor/rules/withdrawn-rulings.mdc": true,
3320
3333
  "plugins/lisa-cursor/rules/work-item-definition-of-ready-reference.mdc": true,
3321
3334
  "plugins/lisa-cursor/rules/work-item-definition-of-ready.mdc": true,
3322
3335
  "plugins/lisa-cursor/scripts/automation-run-record.mjs": true,
@@ -5817,6 +5830,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
5817
5830
  "plugins/lisa/hooks/threshold-ratchet.sh": true,
5818
5831
  "plugins/lisa/hooks/ticket-sync-reminder.sh": true,
5819
5832
  "plugins/lisa/hooks/track-plan-sessions.sh": true,
5833
+ "plugins/lisa/hooks/withdrawn-rulings.mjs": true,
5834
+ "plugins/lisa/hooks/withdrawn-rulings.sh": true,
5820
5835
  "plugins/lisa/rules/eager/automation-runbook-contract.md": true,
5821
5836
  "plugins/lisa/rules/eager/base-rules.md": true,
5822
5837
  "plugins/lisa/rules/eager/bdd-e2e-coverage.md": true,
@@ -5871,6 +5886,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
5871
5886
  "plugins/lisa/rules/eager/usage-accounting.md": true,
5872
5887
  "plugins/lisa/rules/eager/verification.md": true,
5873
5888
  "plugins/lisa/rules/eager/wiki-knowledge-source.md": true,
5889
+ "plugins/lisa/rules/eager/withdrawn-rulings.md": true,
5874
5890
  "plugins/lisa/rules/eager/work-item-definition-of-ready.md": true,
5875
5891
  "plugins/lisa/rules/reference/automation-runbook-contract.md": true,
5876
5892
  "plugins/lisa/rules/reference/base-rules.md": true,
@@ -5926,6 +5942,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
5926
5942
  "plugins/lisa/rules/reference/usage-accounting.md": true,
5927
5943
  "plugins/lisa/rules/reference/verification.md": true,
5928
5944
  "plugins/lisa/rules/reference/wiki-knowledge-source.md": true,
5945
+ "plugins/lisa/rules/reference/withdrawn-rulings.md": true,
5929
5946
  "plugins/lisa/rules/reference/work-item-definition-of-ready.md": true,
5930
5947
  "plugins/lisa/scripts/automation-run-record.mjs": true,
5931
5948
  "plugins/lisa/scripts/automation-status-claude-adapter.mjs": true,
@@ -6492,6 +6509,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6492
6509
  "plugins/src/base/hooks/threshold-ratchet.sh": true,
6493
6510
  "plugins/src/base/hooks/ticket-sync-reminder.sh": true,
6494
6511
  "plugins/src/base/hooks/track-plan-sessions.sh": true,
6512
+ "plugins/src/base/hooks/withdrawn-rulings.mjs": true,
6513
+ "plugins/src/base/hooks/withdrawn-rulings.sh": true,
6495
6514
  "plugins/src/base/rules/eager/automation-runbook-contract.md": true,
6496
6515
  "plugins/src/base/rules/eager/base-rules.md": true,
6497
6516
  "plugins/src/base/rules/eager/bdd-e2e-coverage.md": true,
@@ -6546,6 +6565,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6546
6565
  "plugins/src/base/rules/eager/usage-accounting.md": true,
6547
6566
  "plugins/src/base/rules/eager/verification.md": true,
6548
6567
  "plugins/src/base/rules/eager/wiki-knowledge-source.md": true,
6568
+ "plugins/src/base/rules/eager/withdrawn-rulings.md": true,
6549
6569
  "plugins/src/base/rules/eager/work-item-definition-of-ready.md": true,
6550
6570
  "plugins/src/base/rules/reference/automation-runbook-contract.md": true,
6551
6571
  "plugins/src/base/rules/reference/base-rules.md": true,
@@ -6601,6 +6621,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6601
6621
  "plugins/src/base/rules/reference/usage-accounting.md": true,
6602
6622
  "plugins/src/base/rules/reference/verification.md": true,
6603
6623
  "plugins/src/base/rules/reference/wiki-knowledge-source.md": true,
6624
+ "plugins/src/base/rules/reference/withdrawn-rulings.md": true,
6604
6625
  "plugins/src/base/rules/reference/work-item-definition-of-ready.md": true,
6605
6626
  "plugins/src/base/scripts/automation-run-record.mjs": true,
6606
6627
  "plugins/src/base/scripts/automation-status-claude-adapter.mjs": true,
@@ -7332,6 +7353,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7332
7353
  "scripts/internal-opencode-skill-policy.json": true,
7333
7354
  "scripts/lib/bounded-spawn.mjs": true,
7334
7355
  "scripts/lib/gitattributes-merge-drivers.mjs": true,
7356
+ "scripts/lib/hook-registration-audit.mjs": true,
7335
7357
  "scripts/lib/invoked-as-script.mjs": true,
7336
7358
  "scripts/lib/mutation-performance-reporter.mjs": true,
7337
7359
  "scripts/lib/nest-plugin-commands.mjs": true,
@@ -8707,6 +8729,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8707
8729
  "tests/unit/hooks/track-plan-sessions.test.ts": true,
8708
8730
  "tests/unit/hooks/typecheck-hook-placement.test.ts": true,
8709
8731
  "tests/unit/hooks/verification-failure-mode-fixtures.test.ts": true,
8732
+ "tests/unit/hooks/withdrawn-rulings-wiring.test.ts": true,
8733
+ "tests/unit/hooks/withdrawn-rulings.test.ts": true,
8710
8734
  "tests/unit/hooks/work-item-wiring.test.ts": true,
8711
8735
  "tests/unit/hooks/worktree-create-failure.test.ts": true,
8712
8736
  "tests/unit/hooks/worktree-create.test.ts": true,
@@ -8752,6 +8776,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8752
8776
  "tests/unit/opencode/settings-installer.test.ts": true,
8753
8777
  "tests/unit/opencode/skills-installer.test.ts": true,
8754
8778
  "tests/unit/plugins/container-view-pattern-parity.test.ts": true,
8779
+ "tests/unit/plugins/hook-registration.test.ts": true,
8780
+ "tests/unit/plugins/support/hook-registration-fixture.ts": true,
8755
8781
  "tests/unit/scripts/ast-grep-enforcement.test.ts": true,
8756
8782
  "tests/unit/scripts/bdd-adoption.test.ts": true,
8757
8783
  "tests/unit/scripts/bdd-discovery.test.ts": true,