@codyswann/lisa 2.166.1 → 2.166.3

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 (68) hide show
  1. package/dist/configs/vitest/base.d.ts +20 -2
  2. package/dist/configs/vitest/base.d.ts.map +1 -1
  3. package/dist/configs/vitest/base.js +23 -4
  4. package/dist/configs/vitest/base.js.map +1 -1
  5. package/dist/configs/vitest/nestjs.d.ts +2 -2
  6. package/dist/configs/vitest/nestjs.d.ts.map +1 -1
  7. package/dist/configs/vitest/nestjs.js +4 -4
  8. package/dist/configs/vitest/nestjs.js.map +1 -1
  9. package/dist/configs/vitest/typescript.d.ts +2 -2
  10. package/dist/configs/vitest/typescript.d.ts.map +1 -1
  11. package/dist/configs/vitest/typescript.js +4 -4
  12. package/dist/configs/vitest/typescript.js.map +1 -1
  13. package/package.json +1 -1
  14. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  16. package/plugins/lisa-agy/plugin.json +1 -1
  17. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  20. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  26. package/plugins/lisa-expo-agy/plugin.json +1 -1
  27. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  31. package/plugins/lisa-harper-fabric/skills/harper-build-and-deploy/SKILL.md +70 -8
  32. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  33. package/plugins/lisa-harper-fabric-agy/skills/harper-build-and-deploy/SKILL.md +70 -8
  34. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric-copilot/skills/harper-build-and-deploy/SKILL.md +70 -8
  36. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-harper-fabric-cursor/skills/harper-build-and-deploy/SKILL.md +70 -8
  38. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  40. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  41. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  45. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  46. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  50. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  51. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  55. package/plugins/lisa-rails-agy/plugin.json +1 -1
  56. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  60. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  61. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  65. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  66. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  68. package/plugins/src/harper-fabric/skills/harper-build-and-deploy/SKILL.md +70 -8
@@ -53,10 +53,28 @@ export declare const defaultThresholds: PortableThresholds;
53
53
  export declare const defaultCoverageExclusions: readonly string[];
54
54
  /**
55
55
  * Default patterns to exclude from test discovery across all stacks.
56
- * Lisa manages `.claude/worktrees/` as scratch worktrees for subagents;
57
- * test files inside them should never be collected by the repo-level vitest run.
56
+ *
57
+ * The `.claude/worktrees/` exclusion is intentionally NOT baked in here
58
+ * it is cwd-conditional and supplied by {@link worktreeExclusions} so that
59
+ * a vitest run launched from INSIDE a worktree can still discover its own
60
+ * tests. Stack factories spread `worktreeExclusions()` alongside this list.
58
61
  */
59
62
  export declare const defaultTestExclusions: readonly string[];
63
+ /**
64
+ * Returns the worktree exclusion glob a stack config should add to skip
65
+ * test files / coverage that live inside `.claude/worktrees/`.
66
+ *
67
+ * Lisa manages `.claude/worktrees/` as scratch worktrees for subagents.
68
+ * When vitest runs from the primary checkout, tests inside those worktrees
69
+ * should be skipped — each worktree has its own vitest run. When vitest runs
70
+ * from INSIDE a worktree (the project root *is* the worktree), the same glob
71
+ * matches every path under root and vitest finds zero tests. This returns the
72
+ * glob only when the current working directory is outside a worktree, so each
73
+ * stack factory can spread it into its `exclude` arrays without hand-rolling
74
+ * the conditional. Mirrors jest's `worktreeTestPathIgnorePatterns()`.
75
+ * @returns Single-entry array with the worktree exclude glob, or an empty array when already inside a worktree.
76
+ */
77
+ export declare function worktreeExclusions(): readonly string[];
60
78
  /**
61
79
  * Maps portable threshold format (with `global` wrapper) to Vitest's
62
80
  * flat threshold format. Projects store thresholds in the portable
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,UAAU,GAAG,cAAc,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAO/B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EActD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAIlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,kBAAkB,KAC7B,gBAaD,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,kBAAkB,EAC5B,WAAW,kBAAkB,KAC5B,kBAOD,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,GAAG,SAAS,UAAU,EAAE,KAAG,UA4C7D,CAAC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,UAAU,GAAG,cAAc,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAO/B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAatD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAMtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,kBAAkB,KAC7B,gBAaD,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,kBAAkB,EAC5B,WAAW,kBAAkB,KAC5B,kBAOD,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,GAAG,SAAS,UAAU,EAAE,KAAG,UA4C7D,CAAC"}
@@ -22,7 +22,6 @@ export const defaultCoverageExclusions = [
22
22
  "**/index.ts",
23
23
  "**/node_modules/**",
24
24
  "**/dist/**",
25
- "**/.claude/worktrees/**",
26
25
  "**/*.test.ts",
27
26
  "**/*.spec.ts",
28
27
  "**/*.mock.ts",
@@ -34,14 +33,34 @@ export const defaultCoverageExclusions = [
34
33
  ];
35
34
  /**
36
35
  * Default patterns to exclude from test discovery across all stacks.
37
- * Lisa manages `.claude/worktrees/` as scratch worktrees for subagents;
38
- * test files inside them should never be collected by the repo-level vitest run.
36
+ *
37
+ * The `.claude/worktrees/` exclusion is intentionally NOT baked in here
38
+ * it is cwd-conditional and supplied by {@link worktreeExclusions} so that
39
+ * a vitest run launched from INSIDE a worktree can still discover its own
40
+ * tests. Stack factories spread `worktreeExclusions()` alongside this list.
39
41
  */
40
42
  export const defaultTestExclusions = [
41
43
  "**/node_modules/**",
42
44
  "**/dist/**",
43
- "**/.claude/worktrees/**",
44
45
  ];
46
+ /**
47
+ * Returns the worktree exclusion glob a stack config should add to skip
48
+ * test files / coverage that live inside `.claude/worktrees/`.
49
+ *
50
+ * Lisa manages `.claude/worktrees/` as scratch worktrees for subagents.
51
+ * When vitest runs from the primary checkout, tests inside those worktrees
52
+ * should be skipped — each worktree has its own vitest run. When vitest runs
53
+ * from INSIDE a worktree (the project root *is* the worktree), the same glob
54
+ * matches every path under root and vitest finds zero tests. This returns the
55
+ * glob only when the current working directory is outside a worktree, so each
56
+ * stack factory can spread it into its `exclude` arrays without hand-rolling
57
+ * the conditional. Mirrors jest's `worktreeTestPathIgnorePatterns()`.
58
+ * @returns Single-entry array with the worktree exclude glob, or an empty array when already inside a worktree.
59
+ */
60
+ export function worktreeExclusions() {
61
+ const isInsideWorktree = /[/\\]\.claude[/\\]worktrees(?:[/\\]|$)/.test(process.cwd());
62
+ return isInsideWorktree ? [] : ["**/.claude/worktrees/**"];
63
+ }
45
64
  /**
46
65
  * Maps portable threshold format (with `global` wrapper) to Vitest's
47
66
  * flat threshold format. Projects store thresholds in the portable
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/configs/vitest/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/configs/vitest/base.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,9 @@
13
13
  import type { ViteUserConfig } from "vitest/config";
14
14
  /** Vite UserConfig augmented with Vitest's `test` property */
15
15
  type UserConfig = ViteUserConfig;
16
- import { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs } from "./base.js";
16
+ import { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, worktreeExclusions } from "./base.js";
17
17
  import type { PortableThresholds } from "./base.js";
18
- export { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, };
18
+ export { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, worktreeExclusions, };
19
19
  export type { PortableThresholds };
20
20
  /**
21
21
  * Options for configuring the NestJS Vitest config factory.
@@ -1 +1 @@
1
- {"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/nestjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,UAAU,GAAG,cAAc,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAwBD;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAAI,kBAEnC,mBAAwB,KAAG,UAkB5B,CAAC"}
1
+ {"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/nestjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,UAAU,GAAG,cAAc,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAwBD;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAAI,kBAEnC,mBAAwB,KAAG,UAkB5B,CAAC"}
@@ -1,6 +1,6 @@
1
- import { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, } from "./base.js";
1
+ import { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, worktreeExclusions, } from "./base.js";
2
2
  // Re-export base utilities for entry-point configs
3
- export { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, };
3
+ export { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, worktreeExclusions, };
4
4
  /**
5
5
  * NestJS-specific patterns excluded from coverage collection.
6
6
  * These are generated or boilerplate files that don't benefit from coverage tracking.
@@ -41,12 +41,12 @@ export const getNestjsVitestConfig = ({ thresholds = defaultThresholds, } = {})
41
41
  // on "No test files found" otherwise. See typescript.ts for rationale.
42
42
  passWithNoTests: true,
43
43
  include: ["**/*.spec.ts"],
44
- exclude: [...defaultTestExclusions],
44
+ exclude: [...defaultTestExclusions, ...worktreeExclusions()],
45
45
  testTimeout: 10000,
46
46
  coverage: {
47
47
  provider: "v8",
48
48
  include: ["**/*.ts"],
49
- exclude: [...nestjsCoverageExclusions],
49
+ exclude: [...nestjsCoverageExclusions, ...worktreeExclusions()],
50
50
  thresholds: mapThresholds(thresholds),
51
51
  },
52
52
  },
@@ -1 +1 @@
1
- {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../../src/configs/vitest/nestjs.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAInB,mDAAmD;AACnD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,CAAC;AAYF;;;GAGG;AACH,MAAM,wBAAwB,GAAsB;IAClD,GAAG,yBAAyB;IAC5B,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,mBAAmB;IACnB,mBAAmB;IACnB,2BAA2B;IAC3B,sBAAsB;IACtB,eAAe;IACf,YAAY;CACb,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,UAAU,GAAG,iBAAiB,MACP,EAAE,EAAc,EAAE,CAAC,CAAC;IAC3C,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,KAAK;QACX,8EAA8E;QAC9E,uEAAuE;QACvE,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,CAAC,cAAc,CAAC;QACzB,OAAO,EAAE,CAAC,GAAG,qBAAqB,CAAC;QACnC,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,CAAC,GAAG,wBAAwB,CAAC;YACtC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC;SACtC;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../../src/configs/vitest/nestjs.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAInB,mDAAmD;AACnD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,CAAC;AAYF;;;GAGG;AACH,MAAM,wBAAwB,GAAsB;IAClD,GAAG,yBAAyB;IAC5B,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,mBAAmB;IACnB,mBAAmB;IACnB,2BAA2B;IAC3B,sBAAsB;IACtB,eAAe;IACf,YAAY;CACb,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,UAAU,GAAG,iBAAiB,MACP,EAAE,EAAc,EAAE,CAAC,CAAC;IAC3C,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,KAAK;QACX,8EAA8E;QAC9E,uEAAuE;QACvE,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,CAAC,cAAc,CAAC;QACzB,OAAO,EAAE,CAAC,GAAG,qBAAqB,EAAE,GAAG,kBAAkB,EAAE,CAAC;QAC5D,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,CAAC,GAAG,wBAAwB,EAAE,GAAG,kBAAkB,EAAE,CAAC;YAC/D,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC;SACtC;KACF;CACF,CAAC,CAAC"}
@@ -9,9 +9,9 @@
9
9
  import type { ViteUserConfig } from "vitest/config";
10
10
  /** Vite UserConfig augmented with Vitest's `test` property */
11
11
  type UserConfig = ViteUserConfig;
12
- import { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs } from "./base.js";
12
+ import { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, worktreeExclusions } from "./base.js";
13
13
  import type { PortableThresholds } from "./base.js";
14
- export { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, };
14
+ export { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, worktreeExclusions, };
15
15
  export type { PortableThresholds };
16
16
  /**
17
17
  * Options for configuring the TypeScript Vitest config factory.
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,UAAU,GAAG,cAAc,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC;;GAEG;AACH,UAAU,uBAAuB;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GAAI,kBAEvC,uBAA4B,KAAG,UAmBhC,CAAC"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/configs/vitest/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,UAAU,GAAG,cAAc,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC;;GAEG;AACH,UAAU,uBAAuB;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GAAI,kBAEvC,uBAA4B,KAAG,UAmBhC,CAAC"}
@@ -1,6 +1,6 @@
1
- import { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, } from "./base.js";
1
+ import { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, worktreeExclusions, } from "./base.js";
2
2
  // Re-export base utilities for stack-specific configs to use
3
- export { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, };
3
+ export { defaultCoverageExclusions, defaultTestExclusions, defaultThresholds, mapThresholds, mergeThresholds, mergeVitestConfigs, worktreeExclusions, };
4
4
  /**
5
5
  * Creates a Vitest configuration for TypeScript/Node projects.
6
6
  *
@@ -21,12 +21,12 @@ export const getTypescriptVitestConfig = ({ thresholds = defaultThresholds, } =
21
21
  // the test-world analog of allowing `files: []` in tsconfig for zero sources.
22
22
  passWithNoTests: true,
23
23
  include: ["tests/**/*.test.ts", "src/**/*.test.ts"],
24
- exclude: [...defaultTestExclusions],
24
+ exclude: [...defaultTestExclusions, ...worktreeExclusions()],
25
25
  testTimeout: 10000,
26
26
  coverage: {
27
27
  provider: "v8",
28
28
  include: ["src/**/*.ts"],
29
- exclude: [...defaultCoverageExclusions],
29
+ exclude: [...defaultCoverageExclusions, ...worktreeExclusions()],
30
30
  thresholds: mapThresholds(thresholds),
31
31
  },
32
32
  },
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/configs/vitest/typescript.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAInB,6DAA6D;AAC7D,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,CAAC;AAYF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EACxC,UAAU,GAAG,iBAAiB,MACH,EAAE,EAAc,EAAE,CAAC,CAAC;IAC/C,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,4EAA4E;QAC5E,uEAAuE;QACvE,2EAA2E;QAC3E,8EAA8E;QAC9E,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;QACnD,OAAO,EAAE,CAAC,GAAG,qBAAqB,CAAC;QACnC,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,OAAO,EAAE,CAAC,GAAG,yBAAyB,CAAC;YACvC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC;SACtC;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/configs/vitest/typescript.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAInB,6DAA6D;AAC7D,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,CAAC;AAYF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EACxC,UAAU,GAAG,iBAAiB,MACH,EAAE,EAAc,EAAE,CAAC,CAAC;IAC/C,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,4EAA4E;QAC5E,uEAAuE;QACvE,2EAA2E;QAC3E,8EAA8E;QAC9E,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;QACnD,OAAO,EAAE,CAAC,GAAG,qBAAqB,EAAE,GAAG,kBAAkB,EAAE,CAAC;QAC5D,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,OAAO,EAAE,CAAC,GAAG,yBAAyB,EAAE,GAAG,kBAAkB,EAAE,CAAC;YAChE,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC;SACtC;KACF;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -85,7 +85,7 @@
85
85
  "lodash": ">=4.18.1"
86
86
  },
87
87
  "name": "@codyswann/lisa",
88
- "version": "2.166.1",
88
+ "version": "2.166.3",
89
89
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
90
90
  "main": "dist/index.js",
91
91
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.166.1",
3
+ "version": "2.166.3",
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.166.1",
3
+ "version": "2.166.3",
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.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
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": "2.166.1",
3
+ "version": "2.166.3",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -27,14 +27,42 @@ The CLI binary is `harper` (v5; older installs use `harperdb`). Key commands:
27
27
  In this project, dev typically runs against the component dir, e.g.
28
28
  `harper dev harper-app` (use the project's documented run command if it wraps this).
29
29
 
30
- ## The build step (TypeScript generated artifacts)
30
+ ## The build step (TypeScript -> generated artifacts)
31
31
 
32
32
  Harper loads JavaScript (`resources.js`) and serves static files (`web/**`). In this
33
- project those are **generated**, not authored:
34
-
35
- - **TypeScript under `src/` is source.** `bun run build` compiles it into
36
- `harper-app/resources.js` and `harper-app/web/**`.
37
- - **Never edit `resources.js` or `web/**` directly** change the TypeScript and
33
+ project those are **generated**, not authored.
34
+
35
+ What the build actually does:
36
+
37
+ 1. Compiles the TypeScript source under `src/` into deployable JavaScript.
38
+ 2. Emits `harper-app/resources.js`, the aggregate resource module loaded by the
39
+ `jsResource` extension.
40
+ 3. Emits per-resource modules such as `harper-app/resource-*.js` when the project
41
+ build splits resources for Harper's runtime loader.
42
+ 4. Copies browser/static output into `harper-app/web/**` for the `static`
43
+ extension to serve.
44
+ 5. Mirrors shared library output into `harper-app/lib/**` and rewrites imports
45
+ such as `../lib/foo.js` to `./lib/foo.js`. Fabric packages the component root
46
+ as a flat deploy unit, and Node resolves real paths at runtime, so imports must
47
+ point at files that exist inside the packaged `harper-app/` root.
48
+ 6. Adds cache-busting `?v=` query parameters to browser-module imports when the
49
+ project build owns web asset versioning.
50
+
51
+ Generated Harper deploy artifacts usually include:
52
+
53
+ - `harper-app/resources.js`
54
+ - `harper-app/resource-*.js`
55
+ - `harper-app/web/**`
56
+ - `harper-app/lib/**`
57
+
58
+ Every lint, format, dead-code, search, or generated-artifact guard must ignore
59
+ those generated paths unless it is explicitly validating the build output itself.
60
+ When a new generated path appears, add it to every relevant ignore surface in the
61
+ same change; partial ignores fail later gates in non-obvious ways.
62
+
63
+ - **TypeScript under `src/` is source.** `bun run build` produces the deployable
64
+ Harper assets from it.
65
+ - **Never edit generated Harper assets directly** — change the TypeScript and
38
66
  rebuild. See [[harper-resources]] and [[harper-component-model]].
39
67
  - **Build before symlinking, packaging, or deploying `harper-app/`.** Deploying
40
68
  stale artifacts ships code that does not match `src/`.
@@ -86,11 +114,45 @@ harper deploy_component \
86
114
 
87
115
  - Omitting `package` deploys the current directory.
88
116
  - `restart=true` restarts threads after deploy so new code loads.
89
- - `replicated=true` replicates the deploy across all nodes in a cluster — include it
90
- when targeting Fabric/a cluster.
117
+ - `replicated=true` asks Harper/Fabric to apply the component deploy across the
118
+ cluster rather than only the node receiving the deploy request. Include it when
119
+ targeting Fabric or any clustered deployment.
91
120
  - Credentials can come from `CLI_TARGET_USERNAME` / `CLI_TARGET_PASSWORD` instead of
92
121
  inline flags — prefer that so secrets never land in shell history or tracked files.
93
122
 
123
+ ## Replication and topology
124
+
125
+ Fabric is a distributed runtime: a project can run on one or more Harper nodes,
126
+ often grouped by region or environment. Your application code is packaged as a
127
+ component, and the data layer is replicated through Harper's database and
128
+ clustering model.
129
+
130
+ Keep these semantics separate:
131
+
132
+ - **Component code replication** is controlled by deploy behavior. With
133
+ `replicated=true`, the deployed component package should reach the cluster nodes
134
+ that serve the application. Without it, you may update only the target node and
135
+ leave other nodes running older code.
136
+ - **Data replication** is runtime/database behavior. Deploying code does not by
137
+ itself prove that existing rows, schema changes, caches, or realtime state are
138
+ consistent across regions or nodes.
139
+ - **Thread restart** is local process behavior. `restart=true` reloads code after
140
+ the package lands; it is not a substitute for checking every node or region that
141
+ receives traffic.
142
+
143
+ After a replicated deploy, verify from the topology the app actually uses:
144
+
145
+ 1. Confirm the deploy command or workflow used `replicated=true` for Fabric/cluster
146
+ targets.
147
+ 2. Read `harper status` or the project's Fabric status command to see the expected
148
+ nodes/regions.
149
+ 3. Hit the public smoke endpoint through the production route, then hit a direct
150
+ node or region endpoint when the project exposes one.
151
+ 4. For schema or data changes, verify a write/read path that proves the expected
152
+ data is visible where traffic can land.
153
+ 5. If one node serves old assets or resources, treat the deploy as incomplete even
154
+ when the initial target node passed smoke.
155
+
94
156
  ## Secrets
95
157
 
96
158
  Keep runtime secrets out of tracked files. Use environment variables, the
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.166.1",
3
+ "version": "2.166.3",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -27,14 +27,42 @@ The CLI binary is `harper` (v5; older installs use `harperdb`). Key commands:
27
27
  In this project, dev typically runs against the component dir, e.g.
28
28
  `harper dev harper-app` (use the project's documented run command if it wraps this).
29
29
 
30
- ## The build step (TypeScript generated artifacts)
30
+ ## The build step (TypeScript -> generated artifacts)
31
31
 
32
32
  Harper loads JavaScript (`resources.js`) and serves static files (`web/**`). In this
33
- project those are **generated**, not authored:
34
-
35
- - **TypeScript under `src/` is source.** `bun run build` compiles it into
36
- `harper-app/resources.js` and `harper-app/web/**`.
37
- - **Never edit `resources.js` or `web/**` directly** change the TypeScript and
33
+ project those are **generated**, not authored.
34
+
35
+ What the build actually does:
36
+
37
+ 1. Compiles the TypeScript source under `src/` into deployable JavaScript.
38
+ 2. Emits `harper-app/resources.js`, the aggregate resource module loaded by the
39
+ `jsResource` extension.
40
+ 3. Emits per-resource modules such as `harper-app/resource-*.js` when the project
41
+ build splits resources for Harper's runtime loader.
42
+ 4. Copies browser/static output into `harper-app/web/**` for the `static`
43
+ extension to serve.
44
+ 5. Mirrors shared library output into `harper-app/lib/**` and rewrites imports
45
+ such as `../lib/foo.js` to `./lib/foo.js`. Fabric packages the component root
46
+ as a flat deploy unit, and Node resolves real paths at runtime, so imports must
47
+ point at files that exist inside the packaged `harper-app/` root.
48
+ 6. Adds cache-busting `?v=` query parameters to browser-module imports when the
49
+ project build owns web asset versioning.
50
+
51
+ Generated Harper deploy artifacts usually include:
52
+
53
+ - `harper-app/resources.js`
54
+ - `harper-app/resource-*.js`
55
+ - `harper-app/web/**`
56
+ - `harper-app/lib/**`
57
+
58
+ Every lint, format, dead-code, search, or generated-artifact guard must ignore
59
+ those generated paths unless it is explicitly validating the build output itself.
60
+ When a new generated path appears, add it to every relevant ignore surface in the
61
+ same change; partial ignores fail later gates in non-obvious ways.
62
+
63
+ - **TypeScript under `src/` is source.** `bun run build` produces the deployable
64
+ Harper assets from it.
65
+ - **Never edit generated Harper assets directly** — change the TypeScript and
38
66
  rebuild. See [[harper-resources]] and [[harper-component-model]].
39
67
  - **Build before symlinking, packaging, or deploying `harper-app/`.** Deploying
40
68
  stale artifacts ships code that does not match `src/`.
@@ -86,11 +114,45 @@ harper deploy_component \
86
114
 
87
115
  - Omitting `package` deploys the current directory.
88
116
  - `restart=true` restarts threads after deploy so new code loads.
89
- - `replicated=true` replicates the deploy across all nodes in a cluster — include it
90
- when targeting Fabric/a cluster.
117
+ - `replicated=true` asks Harper/Fabric to apply the component deploy across the
118
+ cluster rather than only the node receiving the deploy request. Include it when
119
+ targeting Fabric or any clustered deployment.
91
120
  - Credentials can come from `CLI_TARGET_USERNAME` / `CLI_TARGET_PASSWORD` instead of
92
121
  inline flags — prefer that so secrets never land in shell history or tracked files.
93
122
 
123
+ ## Replication and topology
124
+
125
+ Fabric is a distributed runtime: a project can run on one or more Harper nodes,
126
+ often grouped by region or environment. Your application code is packaged as a
127
+ component, and the data layer is replicated through Harper's database and
128
+ clustering model.
129
+
130
+ Keep these semantics separate:
131
+
132
+ - **Component code replication** is controlled by deploy behavior. With
133
+ `replicated=true`, the deployed component package should reach the cluster nodes
134
+ that serve the application. Without it, you may update only the target node and
135
+ leave other nodes running older code.
136
+ - **Data replication** is runtime/database behavior. Deploying code does not by
137
+ itself prove that existing rows, schema changes, caches, or realtime state are
138
+ consistent across regions or nodes.
139
+ - **Thread restart** is local process behavior. `restart=true` reloads code after
140
+ the package lands; it is not a substitute for checking every node or region that
141
+ receives traffic.
142
+
143
+ After a replicated deploy, verify from the topology the app actually uses:
144
+
145
+ 1. Confirm the deploy command or workflow used `replicated=true` for Fabric/cluster
146
+ targets.
147
+ 2. Read `harper status` or the project's Fabric status command to see the expected
148
+ nodes/regions.
149
+ 3. Hit the public smoke endpoint through the production route, then hit a direct
150
+ node or region endpoint when the project exposes one.
151
+ 4. For schema or data changes, verify a write/read path that proves the expected
152
+ data is visible where traffic can land.
153
+ 5. If one node serves old assets or resources, treat the deploy as incomplete even
154
+ when the initial target node passed smoke.
155
+
94
156
  ## Secrets
95
157
 
96
158
  Keep runtime secrets out of tracked files. Use environment variables, the
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.166.1",
3
+ "version": "2.166.3",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"