@codyswann/lisa 4.33.9 → 4.33.10

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 (59) hide show
  1. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  2. package/dist/core/nightly-e2e-guard-behavior-certificate.js.map +1 -1
  3. package/dist/core/upstream-evidence-manifest.js +1 -1
  4. package/dist/migrations/ensure-lisa-postinstall.d.ts +26 -15
  5. package/dist/migrations/ensure-lisa-postinstall.d.ts.map +1 -1
  6. package/dist/migrations/ensure-lisa-postinstall.js +43 -20
  7. package/dist/migrations/ensure-lisa-postinstall.js.map +1 -1
  8. package/package.json +4 -4
  9. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  10. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  11. package/plugins/lisa-agy/plugin.json +1 -1
  12. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  14. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  15. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  21. package/plugins/lisa-expo-agy/plugin.json +1 -1
  22. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  26. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  27. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  31. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  32. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  36. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  37. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  41. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  42. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  46. package/plugins/lisa-rails-agy/plugin.json +1 -1
  47. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  51. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  52. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  56. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  57. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  59. package/scripts/install-claude-plugins.sh +22 -4
@@ -20,9 +20,9 @@ export const NIGHTLY_E2E_GUARD_BEHAVIOR_CERTIFICATES = Object.freeze({
20
20
  }),
21
21
  "312e8962e21be2f3c6c6c0235b0c6159b8dc39425508b4965c7df87fb1333380": Object.freeze({
22
22
  contractVersion: "1.9.0",
23
- packageVersions: Object.freeze(["4.33.9"]),
23
+ packageVersions: Object.freeze(["4.33.10"]),
24
24
  provenances: Object.freeze([
25
- "workspace package @codyswann/lisa@4.33.9 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
25
+ "workspace package @codyswann/lisa@4.33.10 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
26
26
  ]),
27
27
  }),
28
28
  "898ee0247806c7aa6e98328662d80bcff22ff067999298865462a58daef8bb22": Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"nightly-e2e-guard-behavior-certificate.js","sourceRoot":"","sources":["../../src/core/nightly-e2e-guard-behavior-certificate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,MAAM,CAAC,MAAM,CAAC;IACnE,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,mHAAmH;SACpH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,2GAA2G;SAC5G,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,iHAAiH;SAClH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,mHAAmH;SACpH,CAAC;KACH,CAAC;CACL,CAAC,CAAC"}
1
+ {"version":3,"file":"nightly-e2e-guard-behavior-certificate.js","sourceRoot":"","sources":["../../src/core/nightly-e2e-guard-behavior-certificate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,MAAM,CAAC,MAAM,CAAC;IACnE,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,mHAAmH;SACpH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,4GAA4G;SAC7G,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,iHAAiH;SAClH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,mHAAmH;SACpH,CAAC;KACH,CAAC;CACL,CAAC,CAAC"}
@@ -1144,7 +1144,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1144
1144
  "scripts/generate-two-channel-couplings.ts": "8c1f5b8d6ac5043dec9789f3ac1fe83d9ba00d1e1eccf9c6a92f274ab8da919e",
1145
1145
  "scripts/generate-upstream-evidence-manifest.mjs": "8f18972834d6be9771501c35da30de95539a7e7b3fb3d7605e0bc31477812a5f",
1146
1146
  "scripts/github-status-check.sh": "c6a4a13ff5cf689fcbd7a6aca718f9e7d46d54ccb6687f662b055c1ca20e792f",
1147
- "scripts/install-claude-plugins.sh": "cff3be05dfcc989589c2c1a69e6f790f383ab1fdea91ea4c122b1463df4b320c",
1147
+ "scripts/install-claude-plugins.sh": "1bd2885d74a4909548d306e000fe049849b19b6f093de7cb1c641384f6b73209",
1148
1148
  "scripts/install-generated-artifact-merge-driver.mjs": "971aae61d2b9eb8e8eca871f103b8d35bb3f8b9f949273a2bff4010dc32d63cc",
1149
1149
  "scripts/internal-agy-skill-policy.json": "c2ce87d2eeebfdc9f24d6486425c010cf9289376f8a459f4767ca22d2bf8670d",
1150
1150
  "scripts/internal-codex-skill-policy.json": "d7191650d8a12727549b67df61dbfa61e16cfb9cc31e461cd98d253ceab1612a",
@@ -12,26 +12,37 @@ export declare const APPLY_FAILURE_NOTICE: string;
12
12
  /**
13
13
  * The bootstrap invocation chained into a host project's `postinstall`.
14
14
  *
15
- * Shape: **loud but non-fatal**. It used to end in `2>/dev/null || true`, which
16
- * discarded the apply's stderr and its exit code, so a totally failed apply was
17
- * indistinguishable from success and a repo could silently stop receiving
18
- * template updates (CodySwannGT/lisa#2467). Stderr now flows through and a
19
- * failure adds an explicit warning line.
15
+ * Shape: **loud and fatal**. Two earlier shapes each discarded the apply's exit
16
+ * code. `2>/dev/null || true` discarded its stderr too, so a totally failed
17
+ * apply was byte-for-byte indistinguishable from success and a repo could
18
+ * silently stop receiving template updates (CodySwannGT/lisa#2467). Replacing
19
+ * `true` with `echo` recovered the reason but not the fact: `echo` also exits 0,
20
+ * so a failed apply still reported success and the one warning line scrolled
21
+ * away in a wall of install output (CodySwannGT/lisa#3466). The failure branch
22
+ * now prints the notice and exits 1.
20
23
  *
21
- * It deliberately still exits 0. A postinstall runs inside `npm install` /
22
- * `bun install`; exiting non-zero aborts the install and leaves `node_modules`
23
- * half-built. Apply legitimately cannot run in plenty of environments (no git
24
- * repo, no project config, sandboxed or non-interactive shells), so a hard
25
- * failure would convert a template-sync problem into an install outage across
26
- * the fleet. The durable signal instead lives in the apply receipt that a
27
- * successful apply writes — `lisa doctor` reports a repo whose receipt is
28
- * missing or older than the installed Lisa, so the failure is still findable
29
- * long after the install output has scrolled away.
24
+ * Failing the install is a deliberate trade against the previous reasoning,
25
+ * which was that a non-zero postinstall would convert a template-sync problem
26
+ * into an install outage across the fleet. Two things bound that risk. The
27
+ * `[ -n "$CI" ] ||` guard means this branch never executes when `CI` is set, so
28
+ * no CI pipeline can be broken by it and the exposure is local installs only;
29
+ * and `CI=1` remains the escape hatch for anyone who needs to install past a
30
+ * broken apply. Against that, the apply receipt this failed run did NOT write —
31
+ * previously offered as the durable signal — cannot tell `lisa doctor` that an
32
+ * apply *failed*, only that none has succeeded recently, which is equally true
33
+ * of a project that was never applied or was deliberately skipped. The exit code
34
+ * is the only signal that distinguishes them.
35
+ *
36
+ * The cost, stated plainly: {@link composePostinstall} builds
37
+ * `<lisa> && <the host's own postinstall>`, so a failed apply now also skips
38
+ * whatever the host chained after it (`patch-package` and friends). That is the
39
+ * honest outcome — the install genuinely did not complete — but it is a wider
40
+ * change than the exit code alone.
30
41
  *
31
42
  * Exported so tests can execute the real script under `sh` rather than assert
32
43
  * on a string.
33
44
  */
34
- export declare const LISA_INVOCATION = "[ -n \"$CI\" ] || LISA_BOOTSTRAP=1 LISA_POSTINSTALL=1 node node_modules/@codyswann/lisa/dist/index.js --yes --skip-git-check . || echo \"lisa: TEMPLATE APPLY FAILED - this project is NOT receiving Lisa template or guardrail updates. The error is above. Reproduce it with: LISA_POSTINSTALL=1 node node_modules/@codyswann/lisa/dist/index.js --yes --skip-git-check . - then run: node node_modules/@codyswann/lisa/dist/index.js doctor\" >&2";
45
+ export declare const LISA_INVOCATION = "[ -n \"$CI\" ] || LISA_BOOTSTRAP=1 LISA_POSTINSTALL=1 node node_modules/@codyswann/lisa/dist/index.js --yes --skip-git-check . || { echo \"lisa: TEMPLATE APPLY FAILED - this project is NOT receiving Lisa template or guardrail updates. The error is above. Reproduce it with: LISA_POSTINSTALL=1 node node_modules/@codyswann/lisa/dist/index.js --yes --skip-git-check . - then run: node node_modules/@codyswann/lisa/dist/index.js doctor\" >&2; exit 1; }";
35
46
  /**
36
47
  * Migration: ensure Node-based projects chain Lisa into their postinstall script.
37
48
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-lisa-postinstall.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-lisa-postinstall.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAqBlC;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAG8C,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,eAAe,ybAA0H,CAAC;AAuFvJ;;;;;;;;;GASG;AACH,qBAAa,8BAA+B,YAAW,SAAS;IAC9D,QAAQ,CAAC,IAAI,6BAA6B;IAC1C,QAAQ,CAAC,WAAW,qEACgD;IAEpE;;;;;;;;;;;;;OAaG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBtD;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAqC7D"}
1
+ {"version":3,"file":"ensure-lisa-postinstall.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-lisa-postinstall.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAqBlC;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAG8C,CAAC;AAYhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,eAAe,scAAyG,CAAC;AA0FtI;;;;;;;;;GASG;AACH,qBAAa,8BAA+B,YAAW,SAAS;IAC9D,QAAQ,CAAC,IAAI,6BAA6B;IAC1C,QAAQ,CAAC,WAAW,qEACgD;IAEpE;;;;;;;;;;;;;OAaG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBtD;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAqC7D"}
@@ -31,29 +31,49 @@ const LISA_APPLY_COMMAND_AS_POSTINSTALL = `${POSTINSTALL_PREFIX}${LISA_APPLY_COM
31
31
  export const APPLY_FAILURE_NOTICE = "lisa: TEMPLATE APPLY FAILED - this project is NOT receiving Lisa template " +
32
32
  "or guardrail updates. The error is above. Reproduce it with: " +
33
33
  `${LISA_APPLY_COMMAND_AS_POSTINSTALL} - then run: node ${LISA_MARKER} doctor`;
34
+ /**
35
+ * The failure branch: say why, then exit non-zero.
36
+ *
37
+ * `exit 1` rather than a bare `false` because this invocation is routinely
38
+ * chained (`<lisa> && <the host's own postinstall>`); `exit` ends the script at
39
+ * the failure regardless of what a consumer composed around it, so the status
40
+ * cannot be overwritten by a later command in the chain.
41
+ */
42
+ const APPLY_FAILURE_TAIL = ` || { echo "${APPLY_FAILURE_NOTICE}" >&2; exit 1; }`;
34
43
  /**
35
44
  * The bootstrap invocation chained into a host project's `postinstall`.
36
45
  *
37
- * Shape: **loud but non-fatal**. It used to end in `2>/dev/null || true`, which
38
- * discarded the apply's stderr and its exit code, so a totally failed apply was
39
- * indistinguishable from success and a repo could silently stop receiving
40
- * template updates (CodySwannGT/lisa#2467). Stderr now flows through and a
41
- * failure adds an explicit warning line.
46
+ * Shape: **loud and fatal**. Two earlier shapes each discarded the apply's exit
47
+ * code. `2>/dev/null || true` discarded its stderr too, so a totally failed
48
+ * apply was byte-for-byte indistinguishable from success and a repo could
49
+ * silently stop receiving template updates (CodySwannGT/lisa#2467). Replacing
50
+ * `true` with `echo` recovered the reason but not the fact: `echo` also exits 0,
51
+ * so a failed apply still reported success and the one warning line scrolled
52
+ * away in a wall of install output (CodySwannGT/lisa#3466). The failure branch
53
+ * now prints the notice and exits 1.
54
+ *
55
+ * Failing the install is a deliberate trade against the previous reasoning,
56
+ * which was that a non-zero postinstall would convert a template-sync problem
57
+ * into an install outage across the fleet. Two things bound that risk. The
58
+ * `[ -n "$CI" ] ||` guard means this branch never executes when `CI` is set, so
59
+ * no CI pipeline can be broken by it and the exposure is local installs only;
60
+ * and `CI=1` remains the escape hatch for anyone who needs to install past a
61
+ * broken apply. Against that, the apply receipt this failed run did NOT write —
62
+ * previously offered as the durable signal — cannot tell `lisa doctor` that an
63
+ * apply *failed*, only that none has succeeded recently, which is equally true
64
+ * of a project that was never applied or was deliberately skipped. The exit code
65
+ * is the only signal that distinguishes them.
42
66
  *
43
- * It deliberately still exits 0. A postinstall runs inside `npm install` /
44
- * `bun install`; exiting non-zero aborts the install and leaves `node_modules`
45
- * half-built. Apply legitimately cannot run in plenty of environments (no git
46
- * repo, no project config, sandboxed or non-interactive shells), so a hard
47
- * failure would convert a template-sync problem into an install outage across
48
- * the fleet. The durable signal instead lives in the apply receipt that a
49
- * successful apply writes — `lisa doctor` reports a repo whose receipt is
50
- * missing or older than the installed Lisa, so the failure is still findable
51
- * long after the install output has scrolled away.
67
+ * The cost, stated plainly: {@link composePostinstall} builds
68
+ * `<lisa> && <the host's own postinstall>`, so a failed apply now also skips
69
+ * whatever the host chained after it (`patch-package` and friends). That is the
70
+ * honest outcome — the install genuinely did not complete — but it is a wider
71
+ * change than the exit code alone.
52
72
  *
53
73
  * Exported so tests can execute the real script under `sh` rather than assert
54
74
  * on a string.
55
75
  */
56
- export const LISA_INVOCATION = `${CI_GUARD_PREFIX}${BOOTSTRAP_PREFIX}${POSTINSTALL_PREFIX}${LISA_APPLY_COMMAND} || echo "${APPLY_FAILURE_NOTICE}" >&2`;
76
+ export const LISA_INVOCATION = `${CI_GUARD_PREFIX}${BOOTSTRAP_PREFIX}${POSTINSTALL_PREFIX}${LISA_APPLY_COMMAND}${APPLY_FAILURE_TAIL}`;
57
77
  /**
58
78
  * Project types that do not use Node.js postinstall hooks (e.g. Rails).
59
79
  * Projects detected as only these types are skipped by this migration.
@@ -72,10 +92,11 @@ async function readPackageJson(projectDir) {
72
92
  * replaces it rather than chaining a second copy in front of it.
73
93
  *
74
94
  * The optional tail covers, in order: the failure-swallowing legacy form
75
- * (`2>/dev/null || true`), the current loud-but-non-fatal form
76
- * (`|| echo "..." >&2`), and a bare invocation with no tail at all. Guard
77
- * prefixes are optional and repeatable because older Lisa versions introduced
78
- * them one at a time — `LISA_POSTINSTALL=1` being the newest
95
+ * (`2>/dev/null || true`), the loud-but-still-exit-0 form
96
+ * (`|| echo "..." >&2`, CodySwannGT/lisa#3466), the current loud-and-fatal form
97
+ * (`|| { echo "..." >&2; exit 1; }`), and a bare invocation with no tail at
98
+ * all. Guard prefixes are optional and repeatable because older Lisa versions
99
+ * introduced them one at a time — `LISA_POSTINSTALL=1` being the newest
79
100
  * (CodySwannGT/lisa#3066).
80
101
  *
81
102
  * **Every alternative here is permanent.** There is no cutover date: this text
@@ -89,7 +110,9 @@ async function readPackageJson(projectDir) {
89
110
  */
90
111
  const LISA_INVOCATION_RE = new RegExp('(?:(?:\\[ -n "\\$CI" \\] \\|\\| )|(?:LISA_BOOTSTRAP=1 )|(?:LISA_POSTINSTALL=1 ))*' +
91
112
  "node node_modules/@codyswann/lisa/dist/index\\.js --yes --skip-git-check \\." +
92
- '(?: 2>/dev/null \\|\\| true| \\|\\| echo "[^"]*" >&2)?');
113
+ "(?: 2>/dev/null \\|\\| true" +
114
+ '| \\|\\| \\{ echo "[^"]*" >&2; exit 1; \\}' +
115
+ '| \\|\\| echo "[^"]*" >&2)?');
93
116
  /**
94
117
  * Compose the new postinstall, prepending the Lisa invocation to any existing command.
95
118
  * If the existing script already contains a legacy Lisa invocation (no CI guard),
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-lisa-postinstall.js","sourceRoot":"","sources":["../../src/migrations/ensure-lisa-postinstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensure-lisa-postinstall.js","sourceRoot":"","sources":["../../src/migrations/ensure-lisa-postinstall.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -165,7 +165,7 @@
165
165
  "zod-validation-error": "^4.0.0"
166
166
  },
167
167
  "name": "@codyswann/lisa",
168
- "version": "4.33.9",
168
+ "version": "4.33.10",
169
169
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
170
170
  "main": "dist/index.js",
171
171
  "exports": {
@@ -313,7 +313,7 @@
313
313
  "test": "tests"
314
314
  },
315
315
  "types": "./dist/index.d.ts",
316
- "lisaReleaseCommit": "e27b5463d29df52d8d5ffc9bae219cd970ca0323",
317
- "gitHead": "e27b5463d29df52d8d5ffc9bae219cd970ca0323",
318
- "lisaReleaseTag": "v4.33.9"
316
+ "lisaReleaseCommit": "74fcfd1ce7a337cd684e03739b6dd8bef59094d2",
317
+ "gitHead": "74fcfd1ce7a337cd684e03739b6dd8bef59094d2",
318
+ "lisaReleaseTag": "v4.33.10"
319
319
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
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": "4.33.9",
3
+ "version": "4.33.10",
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": "4.33.9",
3
+ "version": "4.33.10",
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-cdk",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
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": "4.33.9",
3
+ "version": "4.33.10",
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-expo",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.33.9",
3
+ "version": "4.33.10",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -178,15 +178,24 @@ HOST_HAS_LISA_POSTINSTALL="$(node -e "
178
178
  process.stdout.write(postinstall.includes('node_modules/@codyswann/lisa/dist/index.js') ? 'true' : 'false');
179
179
  " 2>/dev/null || echo false)"
180
180
 
181
+ # Set when the package-side apply below fails. Read at the very end of this
182
+ # script, which exits non-zero. See the exit block for why it is deferred.
183
+ APPLY_FAILED=false
184
+
181
185
  if [ "$IS_LISA_SELF" != "true" ] && [ -z "${CI:-}" ]; then
182
186
  if [ "$HOST_HAS_LISA_POSTINSTALL" = "true" ]; then
183
187
  echo "Lisa apply deferred to the host project's own postinstall script."
184
188
  elif ! LISA_BOOTSTRAP=1 LISA_POSTINSTALL=1 node "$LISA_DIR/dist/index.js" --yes --skip-git-check "$PROJECT_ROOT"; then
185
- # Loud but non-fatal, for the same reason as the host-side bootstrap: a
186
- # postinstall that exits non-zero aborts the whole install. The durable
187
- # signal is the apply receipt this failed run did NOT write, which
188
- # `lisa doctor` reports (CodySwannGT/lisa#2467).
189
+ # Loud AND fatal, matching the host-side bootstrap in
190
+ # src/migrations/ensure-lisa-postinstall.ts. This used to warn and exit 0,
191
+ # reasoning that the apply receipt the failed run did NOT write was signal
192
+ # enough for `lisa doctor` (CodySwannGT/lisa#2467) — but a missing receipt
193
+ # cannot distinguish a failed apply from one that never ran or was skipped,
194
+ # so the failure was reported as a successful install
195
+ # (CodySwannGT/lisa#3466). The `[ -z "${CI:-}" ]` guard above keeps the
196
+ # blast radius to local installs, and `CI=1` remains the escape hatch.
189
197
  echo "⚠️ lisa: TEMPLATE APPLY FAILED (error above) - this project is NOT receiving Lisa template or guardrail updates. Diagnose with: node $LISA_DIR/dist/index.js doctor" >&2
198
+ APPLY_FAILED=true
190
199
  fi
191
200
  fi
192
201
 
@@ -599,3 +608,12 @@ if [ -n "$LISA_VERSION" ]; then
599
608
  && printf '%s' "$LISA_VERSION" > "$PLUGIN_SYNC_MARKER" 2>/dev/null \
600
609
  || true
601
610
  fi
611
+
612
+ # A failed template apply fails this lifecycle script (CodySwannGT/lisa#3466).
613
+ # Deferred to here rather than exiting at the failure itself: plugin sync is
614
+ # independent work that did succeed, and the sync marker above must record it
615
+ # so the next install does not redo it. What must NOT happen is reporting
616
+ # success — that is the whole defect.
617
+ if [ "$APPLY_FAILED" = "true" ]; then
618
+ exit 1
619
+ fi