@codyswann/lisa 2.217.2 → 2.217.4

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 (64) hide show
  1. package/dist/cli/doctor-monitor-thresholds.d.ts +11 -0
  2. package/dist/cli/doctor-monitor-thresholds.d.ts.map +1 -0
  3. package/dist/cli/doctor-monitor-thresholds.js +81 -0
  4. package/dist/cli/doctor-monitor-thresholds.js.map +1 -0
  5. package/dist/cli/doctor.d.ts.map +1 -1
  6. package/dist/cli/doctor.js +2 -0
  7. package/dist/cli/doctor.js.map +1 -1
  8. package/package.json +1 -1
  9. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  10. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  11. package/plugins/lisa/.codex-plugin/skills/lisa-monitor/SKILL.md +64 -0
  12. package/plugins/lisa/skills/lisa-monitor/SKILL.md +64 -0
  13. package/plugins/lisa-agy/plugin.json +1 -1
  14. package/plugins/lisa-agy/skills/lisa-monitor/SKILL.md +64 -0
  15. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  18. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-copilot/skills/lisa-monitor/SKILL.md +64 -0
  22. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-cursor/skills/lisa-monitor/SKILL.md +64 -0
  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-agy/plugin.json +1 -1
  32. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  36. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  37. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  41. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  42. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  46. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  47. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  51. package/plugins/lisa-rails-agy/plugin.json +1 -1
  52. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  56. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  57. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  61. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  62. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  64. package/plugins/src/base/skills/lisa-monitor/SKILL.md +64 -0
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Find legacy monitor keys in committed and local config independently.
3
+ * @param targetPath - Project path to inspect
4
+ * @returns One named doctor check result
5
+ */
6
+ export declare function checkLegacyMonitorThresholds(targetPath: string): Promise<{
7
+ name: string;
8
+ status: "ok" | "warn";
9
+ detail: string;
10
+ }>;
11
+ //# sourceMappingURL=doctor-monitor-thresholds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-monitor-thresholds.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-monitor-thresholds.ts"],"names":[],"mappings":"AAqEA;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CA6BD"}
@@ -0,0 +1,81 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import * as path from "node:path";
4
+ const MONITOR_THRESHOLD_CONFIG_CHECK_NAME = "Monitor threshold keys current?";
5
+ const CONFIG_FILES = [".lisa.config.json", ".lisa.config.local.json"];
6
+ const LEGACY_MONITOR_THRESHOLDS = [
7
+ {
8
+ legacy: "monitor.thresholds.sentryMinEvents24h",
9
+ current: "monitor.thresholds.minEvents24h",
10
+ property: "sentryMinEvents24h",
11
+ },
12
+ {
13
+ legacy: "monitor.thresholds.xrayFaultRatePct",
14
+ current: "monitor.thresholds.faultRatePct",
15
+ property: "xrayFaultRatePct",
16
+ },
17
+ ];
18
+ /**
19
+ * Return an object-shaped value as a string-keyed record.
20
+ * @param value - Value to narrow
21
+ * @returns Record for objects, otherwise undefined
22
+ */
23
+ function asRecord(value) {
24
+ return typeof value === "object" && value !== null
25
+ ? value
26
+ : undefined;
27
+ }
28
+ /**
29
+ * Find legacy monitor threshold keys in one raw config file.
30
+ * Parse failures are reported by doctor's existing project-config check.
31
+ * @param targetPath - Project path to inspect
32
+ * @param fileName - Raw config file to inspect
33
+ * @returns Legacy-path migration findings
34
+ */
35
+ async function legacyFindingsForFile(targetPath, fileName) {
36
+ const configPath = path.join(targetPath, fileName);
37
+ if (!existsSync(configPath))
38
+ return { findings: [] };
39
+ try {
40
+ const config = asRecord(JSON.parse(await readFile(configPath, "utf8")));
41
+ const monitor = asRecord(config?.["monitor"]);
42
+ const thresholds = asRecord(monitor?.["thresholds"]);
43
+ return {
44
+ findings: LEGACY_MONITOR_THRESHOLDS.filter(threshold => Object.hasOwn(thresholds ?? {}, threshold.property)).map(threshold => `${fileName}: ${threshold.legacy} -> ${threshold.current}`),
45
+ };
46
+ }
47
+ catch {
48
+ return { findings: [], uninspectable: fileName };
49
+ }
50
+ }
51
+ /**
52
+ * Find legacy monitor keys in committed and local config independently.
53
+ * @param targetPath - Project path to inspect
54
+ * @returns One named doctor check result
55
+ */
56
+ export async function checkLegacyMonitorThresholds(targetPath) {
57
+ const inspections = await Promise.all(CONFIG_FILES.map(fileName => legacyFindingsForFile(targetPath, fileName)));
58
+ const findings = inspections.flatMap(inspection => inspection.findings);
59
+ const uninspectable = inspections.flatMap(inspection => inspection.uninspectable ? [inspection.uninspectable] : []);
60
+ return findings.length === 0 && uninspectable.length === 0
61
+ ? {
62
+ name: MONITOR_THRESHOLD_CONFIG_CHECK_NAME,
63
+ status: "ok",
64
+ detail: "No legacy monitor threshold keys found",
65
+ }
66
+ : {
67
+ name: MONITOR_THRESHOLD_CONFIG_CHECK_NAME,
68
+ status: "warn",
69
+ detail: [
70
+ findings.length > 0
71
+ ? `Replace legacy monitor threshold keys: ${findings.join(", ")}`
72
+ : undefined,
73
+ uninspectable.length > 0
74
+ ? `Could not inspect monitor threshold keys in: ${uninspectable.join(", ")}`
75
+ : undefined,
76
+ ]
77
+ .filter((message) => message !== undefined)
78
+ .join(". "),
79
+ };
80
+ }
81
+ //# sourceMappingURL=doctor-monitor-thresholds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-monitor-thresholds.js","sourceRoot":"","sources":["../../src/cli/doctor-monitor-thresholds.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAO3C,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AA6SD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CAgCvB"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAO3C,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AA6SD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CAiCvB"}
@@ -7,6 +7,7 @@ import { AGENTS_MD_FILENAME } from "../codex/agents-md-installer.js";
7
7
  import { CLAUDE_MD_FILENAME } from "../claude/claude-md-installer.js";
8
8
  import { migrateInstructionFiles } from "../core/instruction-files-migration.js";
9
9
  import { createDetectorRegistry } from "../detection/index.js";
10
+ import { checkLegacyMonitorThresholds } from "./doctor-monitor-thresholds.js";
10
11
  import { STARTERS } from "./starters.js";
11
12
  import { runUpdateCheck } from "./update-check.js";
12
13
  const VERSION_CHECK_NAME = "Lisa version current?";
@@ -285,6 +286,7 @@ export async function runDoctor(targetPath, options, dependencies = {}) {
285
286
  const checks = [
286
287
  await checkVersion(deps, options.offline === true),
287
288
  await checkProjectConfig(resolvedTarget),
289
+ await checkLegacyMonitorThresholds(resolvedTarget),
288
290
  await checkProjectType(resolvedTarget),
289
291
  await checkInstructionFiles(resolvedTarget),
290
292
  checkLegacyCodexOverlay(resolvedTarget),
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AACnD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAC7C,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AACjE,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;AA4BpE,MAAM,oBAAoB,GAAuB;IAC/C,SAAS,EAAE,KAAK;IAChB,cAAc;IACd,WAAW,EAAE,IAAI,CAAC,EAAE;QAClB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;CACvC,CAAC;AAEF;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CACzB,IAAwB,EACxB,OAAgB;IAEhB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,uCAAuC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC3C,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,aAAa,MAAM,CAAC,OAAO,eAAe,MAAM,CAAC,MAAM,EAAE;SAClE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QACrC,MAAM,EAAE,MAAM,CAAC,MAAM;YACnB,CAAC,CAAC,aAAa,MAAM,CAAC,OAAO,eAAe,MAAM,CAAC,MAAM,EAAE;YAC3D,CAAC,CAAC,6BAA6B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;KAC9E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAClD,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;SACjE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SAChD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAEhD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,uDAAuD;SAChE,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,yBAAyB;gBAC/B,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,2BAClC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;aACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IAChD,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,gBAAgB,CAAC,mBAAmB,CACxD,MAAM,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAC7C,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,+BAA+B;SACxC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAwB,EACxB,OAAgB;IAEhB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,+CAA+C;SACxD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;QAC1C,MAAM,aAAa,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CACnC,gCAAgC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAChE,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,GAAG,aAAa,SAAS,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC;YAClE,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC9B,OAAO,GAAG,aAAa,eAAe,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,aAAa,cAAc,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CACH,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAE3E,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QAC7C,MAAM,EACJ,QAAQ,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,8CAA8C;YAChD,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,UAAkB;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,2BAA2B;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,uBAAuB;QACvB,6BAA6B;QAC7B,UAAU;KACX,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QAC5C,MAAM,EACJ,OAAO,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,iCAAiC;YACnC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,SAAS,uBAAuB,CAAC,UAAkB;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,6BAA6B;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,kBAAkB;KACnB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAE5D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,+CAA+C;SACxD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,WAAW;SACvB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;QACL,IAAI,EAAE,+BAA+B;QACrC,MAAM,EAAE,MAAM;QACd,MAAM,EACJ,2CAA2C,MAAM,KAAK;YACtD,qEAAqE;YACrE,wEAAwE;YACxE,mDAAmD;KACtD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAAC,UAAkB;IAC/C,OAAO;QACL,mBAAmB;QACnB,yBAAyB;QACzB,kBAAkB;QAClB,kBAAkB;KACnB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IACrD,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,mCAAmC;SAC5C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACzD,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,MAAM,CAAC,OAAO;gBACpB,CAAC,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC1C,CAAC,CAAC,qEAAqE;SAC1E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0CACN,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;SACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAA8B,EAC9B,OAAsB,EACtB,eAA4C,EAAE;IAE9C,MAAM,IAAI,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG;QACb,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;QAClD,MAAM,kBAAkB,CAAC,cAAc,CAAC;QACxC,MAAM,4BAA4B,CAAC,cAAc,CAAC;QAClD,MAAM,gBAAgB,CAAC,cAAc,CAAC;QACtC,MAAM,qBAAqB,CAAC,cAAc,CAAC;QAC3C,uBAAuB,CAAC,cAAc,CAAC;QACvC,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;QACxD,SAAS,CAAC,cAAc,CAAC;KAC1B,CAAC;IACF,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC;IAE1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,KAAK,CACR,MAAM;aACH,GAAG,CACF,KAAK,CAAC,EAAE,CACN,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CACjE;aACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -95,7 +95,7 @@
95
95
  "ws": ">=8.20.1"
96
96
  },
97
97
  "name": "@codyswann/lisa",
98
- "version": "2.217.2",
98
+ "version": "2.217.4",
99
99
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
100
100
  "main": "dist/index.js",
101
101
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -15,6 +15,70 @@ Spot-check application health, **audit observability completeness**, and **file
15
15
  - `--all-gaps` — also file `recommended`-tier gaps (session replay, product analytics, etc.), not just `core`. Does not change anomaly thresholds.
16
16
  - `max_candidates=<n>` — cap tickets filed this run (default 20; config `monitor.maxCandidates`).
17
17
 
18
+ ## Monitor threshold compatibility
19
+
20
+ Before resolving anomaly thresholds, inspect the committed
21
+ `.lisa.config.json` and local `.lisa.config.local.json` separately with `jq`.
22
+ Use a literal, fixed-path projection that returns presence and value for only
23
+ these four exact paths; do not use `Read`, `cat`, interpolation, or a filter
24
+ that emits either entire config into agent context:
25
+
26
+ - `monitor.thresholds.minEvents24h`, then
27
+ `monitor.thresholds.sentryMinEvents24h`.
28
+ - `monitor.thresholds.faultRatePct`, then
29
+ `monitor.thresholds.xrayFaultRatePct`.
30
+
31
+ Run this fixed filter once with literal final argument `.lisa.config.json` and
32
+ once with literal final argument `.lisa.config.local.json` when the respective
33
+ file exists:
34
+
35
+ ```bash
36
+ jq 'def threshold($object; $name):
37
+ if ($object | has($name)) then
38
+ ($object[$name] | type) as $type |
39
+ if $type == "number" then
40
+ if ($object[$name] | isfinite and (isnan | not)) then
41
+ {present: true, valid: true, type: "number", value: $object[$name]}
42
+ else
43
+ {present: true, valid: false, type: "non-finite-number"}
44
+ end
45
+ else
46
+ {present: true, valid: false, type: $type}
47
+ end
48
+ else
49
+ {present: false, valid: false, type: "missing"}
50
+ end;
51
+ (.monitor.thresholds | if type == "object" then . else {} end) as $t |
52
+ {
53
+ "monitor.thresholds.minEvents24h": threshold($t; "minEvents24h"),
54
+ "monitor.thresholds.sentryMinEvents24h": threshold($t; "sentryMinEvents24h"),
55
+ "monitor.thresholds.faultRatePct": threshold($t; "faultRatePct"),
56
+ "monitor.thresholds.xrayFaultRatePct": threshold($t; "xrayFaultRatePct")
57
+ }' .lisa.config.json
58
+ ```
59
+
60
+ A nonzero `jq` result fails threshold collection; do not treat an uninspectable
61
+ present file as if it were absent.
62
+
63
+ For each exact path, keep the raw `jq` presence/value result from each file;
64
+ do not inject defaults during this merge. Local presence overrides committed
65
+ presence per path. After that merge, resolve the current key before the legacy
66
+ key, then use default `1` for `monitor.thresholds.minEvents24h` or default `5`
67
+ for `monitor.thresholds.faultRatePct`. Current key wins over legacy key even
68
+ when its configured value is invalid.
69
+
70
+ Every configured threshold must be a finite JSON number. If the selected path
71
+ is null, a string, a boolean, an object, an array, or otherwise non-finite,
72
+ fail threshold collection and report the exact path and source without echoing
73
+ the invalid value; never fall through to a legacy value or default. Never quote
74
+ or report either whole config. The fixed `jq` projection itself must redact
75
+ invalid configured content: it emits only presence, validity, and a fixed type
76
+ classification, and includes the numeric `value` field only for a finite number.
77
+ For a valid resolution, the monitor report must include the resolved value and
78
+ source. Report only a validated numeric resolved value and one fixed source enum:
79
+ `local-current`, `committed-current`, `local-legacy`, `committed-legacy`, or
80
+ `default`.
81
+
18
82
  ## Orchestration: agent team
19
83
 
20
84
  You are "inside an agent team" only if you are yourself a spawned teammate or subagent — you were spawned into a team context, or your context names a team lead you report to. A lead/root session that has previously spawned subagents is still the lead and retains full authority to create this flow's team.
@@ -15,6 +15,70 @@ Spot-check application health, **audit observability completeness**, and **file
15
15
  - `--all-gaps` — also file `recommended`-tier gaps (session replay, product analytics, etc.), not just `core`. Does not change anomaly thresholds.
16
16
  - `max_candidates=<n>` — cap tickets filed this run (default 20; config `monitor.maxCandidates`).
17
17
 
18
+ ## Monitor threshold compatibility
19
+
20
+ Before resolving anomaly thresholds, inspect the committed
21
+ `.lisa.config.json` and local `.lisa.config.local.json` separately with `jq`.
22
+ Use a literal, fixed-path projection that returns presence and value for only
23
+ these four exact paths; do not use `Read`, `cat`, interpolation, or a filter
24
+ that emits either entire config into agent context:
25
+
26
+ - `monitor.thresholds.minEvents24h`, then
27
+ `monitor.thresholds.sentryMinEvents24h`.
28
+ - `monitor.thresholds.faultRatePct`, then
29
+ `monitor.thresholds.xrayFaultRatePct`.
30
+
31
+ Run this fixed filter once with literal final argument `.lisa.config.json` and
32
+ once with literal final argument `.lisa.config.local.json` when the respective
33
+ file exists:
34
+
35
+ ```bash
36
+ jq 'def threshold($object; $name):
37
+ if ($object | has($name)) then
38
+ ($object[$name] | type) as $type |
39
+ if $type == "number" then
40
+ if ($object[$name] | isfinite and (isnan | not)) then
41
+ {present: true, valid: true, type: "number", value: $object[$name]}
42
+ else
43
+ {present: true, valid: false, type: "non-finite-number"}
44
+ end
45
+ else
46
+ {present: true, valid: false, type: $type}
47
+ end
48
+ else
49
+ {present: false, valid: false, type: "missing"}
50
+ end;
51
+ (.monitor.thresholds | if type == "object" then . else {} end) as $t |
52
+ {
53
+ "monitor.thresholds.minEvents24h": threshold($t; "minEvents24h"),
54
+ "monitor.thresholds.sentryMinEvents24h": threshold($t; "sentryMinEvents24h"),
55
+ "monitor.thresholds.faultRatePct": threshold($t; "faultRatePct"),
56
+ "monitor.thresholds.xrayFaultRatePct": threshold($t; "xrayFaultRatePct")
57
+ }' .lisa.config.json
58
+ ```
59
+
60
+ A nonzero `jq` result fails threshold collection; do not treat an uninspectable
61
+ present file as if it were absent.
62
+
63
+ For each exact path, keep the raw `jq` presence/value result from each file;
64
+ do not inject defaults during this merge. Local presence overrides committed
65
+ presence per path. After that merge, resolve the current key before the legacy
66
+ key, then use default `1` for `monitor.thresholds.minEvents24h` or default `5`
67
+ for `monitor.thresholds.faultRatePct`. Current key wins over legacy key even
68
+ when its configured value is invalid.
69
+
70
+ Every configured threshold must be a finite JSON number. If the selected path
71
+ is null, a string, a boolean, an object, an array, or otherwise non-finite,
72
+ fail threshold collection and report the exact path and source without echoing
73
+ the invalid value; never fall through to a legacy value or default. Never quote
74
+ or report either whole config. The fixed `jq` projection itself must redact
75
+ invalid configured content: it emits only presence, validity, and a fixed type
76
+ classification, and includes the numeric `value` field only for a finite number.
77
+ For a valid resolution, the monitor report must include the resolved value and
78
+ source. Report only a validated numeric resolved value and one fixed source enum:
79
+ `local-current`, `committed-current`, `local-legacy`, `committed-legacy`, or
80
+ `default`.
81
+
18
82
  ## Orchestration: agent team
19
83
 
20
84
  You are "inside an agent team" only if you are yourself a spawned teammate or subagent — you were spawned into a team context, or your context names a team lead you report to. A lead/root session that has previously spawned subagents is still the lead and retains full authority to create this flow's team.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.217.2",
3
+ "version": "2.217.4",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -15,6 +15,70 @@ Spot-check application health, **audit observability completeness**, and **file
15
15
  - `--all-gaps` — also file `recommended`-tier gaps (session replay, product analytics, etc.), not just `core`. Does not change anomaly thresholds.
16
16
  - `max_candidates=<n>` — cap tickets filed this run (default 20; config `monitor.maxCandidates`).
17
17
 
18
+ ## Monitor threshold compatibility
19
+
20
+ Before resolving anomaly thresholds, inspect the committed
21
+ `.lisa.config.json` and local `.lisa.config.local.json` separately with `jq`.
22
+ Use a literal, fixed-path projection that returns presence and value for only
23
+ these four exact paths; do not use `Read`, `cat`, interpolation, or a filter
24
+ that emits either entire config into agent context:
25
+
26
+ - `monitor.thresholds.minEvents24h`, then
27
+ `monitor.thresholds.sentryMinEvents24h`.
28
+ - `monitor.thresholds.faultRatePct`, then
29
+ `monitor.thresholds.xrayFaultRatePct`.
30
+
31
+ Run this fixed filter once with literal final argument `.lisa.config.json` and
32
+ once with literal final argument `.lisa.config.local.json` when the respective
33
+ file exists:
34
+
35
+ ```bash
36
+ jq 'def threshold($object; $name):
37
+ if ($object | has($name)) then
38
+ ($object[$name] | type) as $type |
39
+ if $type == "number" then
40
+ if ($object[$name] | isfinite and (isnan | not)) then
41
+ {present: true, valid: true, type: "number", value: $object[$name]}
42
+ else
43
+ {present: true, valid: false, type: "non-finite-number"}
44
+ end
45
+ else
46
+ {present: true, valid: false, type: $type}
47
+ end
48
+ else
49
+ {present: false, valid: false, type: "missing"}
50
+ end;
51
+ (.monitor.thresholds | if type == "object" then . else {} end) as $t |
52
+ {
53
+ "monitor.thresholds.minEvents24h": threshold($t; "minEvents24h"),
54
+ "monitor.thresholds.sentryMinEvents24h": threshold($t; "sentryMinEvents24h"),
55
+ "monitor.thresholds.faultRatePct": threshold($t; "faultRatePct"),
56
+ "monitor.thresholds.xrayFaultRatePct": threshold($t; "xrayFaultRatePct")
57
+ }' .lisa.config.json
58
+ ```
59
+
60
+ A nonzero `jq` result fails threshold collection; do not treat an uninspectable
61
+ present file as if it were absent.
62
+
63
+ For each exact path, keep the raw `jq` presence/value result from each file;
64
+ do not inject defaults during this merge. Local presence overrides committed
65
+ presence per path. After that merge, resolve the current key before the legacy
66
+ key, then use default `1` for `monitor.thresholds.minEvents24h` or default `5`
67
+ for `monitor.thresholds.faultRatePct`. Current key wins over legacy key even
68
+ when its configured value is invalid.
69
+
70
+ Every configured threshold must be a finite JSON number. If the selected path
71
+ is null, a string, a boolean, an object, an array, or otherwise non-finite,
72
+ fail threshold collection and report the exact path and source without echoing
73
+ the invalid value; never fall through to a legacy value or default. Never quote
74
+ or report either whole config. The fixed `jq` projection itself must redact
75
+ invalid configured content: it emits only presence, validity, and a fixed type
76
+ classification, and includes the numeric `value` field only for a finite number.
77
+ For a valid resolution, the monitor report must include the resolved value and
78
+ source. Report only a validated numeric resolved value and one fixed source enum:
79
+ `local-current`, `committed-current`, `local-legacy`, `committed-legacy`, or
80
+ `default`.
81
+
18
82
  ## Orchestration: agent team
19
83
 
20
84
  You are "inside an agent team" only if you are yourself a spawned teammate or subagent — you were spawned into a team context, or your context names a team lead you report to. A lead/root session that has previously spawned subagents is still the lead and retains full authority to create this flow's team.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -15,6 +15,70 @@ Spot-check application health, **audit observability completeness**, and **file
15
15
  - `--all-gaps` — also file `recommended`-tier gaps (session replay, product analytics, etc.), not just `core`. Does not change anomaly thresholds.
16
16
  - `max_candidates=<n>` — cap tickets filed this run (default 20; config `monitor.maxCandidates`).
17
17
 
18
+ ## Monitor threshold compatibility
19
+
20
+ Before resolving anomaly thresholds, inspect the committed
21
+ `.lisa.config.json` and local `.lisa.config.local.json` separately with `jq`.
22
+ Use a literal, fixed-path projection that returns presence and value for only
23
+ these four exact paths; do not use `Read`, `cat`, interpolation, or a filter
24
+ that emits either entire config into agent context:
25
+
26
+ - `monitor.thresholds.minEvents24h`, then
27
+ `monitor.thresholds.sentryMinEvents24h`.
28
+ - `monitor.thresholds.faultRatePct`, then
29
+ `monitor.thresholds.xrayFaultRatePct`.
30
+
31
+ Run this fixed filter once with literal final argument `.lisa.config.json` and
32
+ once with literal final argument `.lisa.config.local.json` when the respective
33
+ file exists:
34
+
35
+ ```bash
36
+ jq 'def threshold($object; $name):
37
+ if ($object | has($name)) then
38
+ ($object[$name] | type) as $type |
39
+ if $type == "number" then
40
+ if ($object[$name] | isfinite and (isnan | not)) then
41
+ {present: true, valid: true, type: "number", value: $object[$name]}
42
+ else
43
+ {present: true, valid: false, type: "non-finite-number"}
44
+ end
45
+ else
46
+ {present: true, valid: false, type: $type}
47
+ end
48
+ else
49
+ {present: false, valid: false, type: "missing"}
50
+ end;
51
+ (.monitor.thresholds | if type == "object" then . else {} end) as $t |
52
+ {
53
+ "monitor.thresholds.minEvents24h": threshold($t; "minEvents24h"),
54
+ "monitor.thresholds.sentryMinEvents24h": threshold($t; "sentryMinEvents24h"),
55
+ "monitor.thresholds.faultRatePct": threshold($t; "faultRatePct"),
56
+ "monitor.thresholds.xrayFaultRatePct": threshold($t; "xrayFaultRatePct")
57
+ }' .lisa.config.json
58
+ ```
59
+
60
+ A nonzero `jq` result fails threshold collection; do not treat an uninspectable
61
+ present file as if it were absent.
62
+
63
+ For each exact path, keep the raw `jq` presence/value result from each file;
64
+ do not inject defaults during this merge. Local presence overrides committed
65
+ presence per path. After that merge, resolve the current key before the legacy
66
+ key, then use default `1` for `monitor.thresholds.minEvents24h` or default `5`
67
+ for `monitor.thresholds.faultRatePct`. Current key wins over legacy key even
68
+ when its configured value is invalid.
69
+
70
+ Every configured threshold must be a finite JSON number. If the selected path
71
+ is null, a string, a boolean, an object, an array, or otherwise non-finite,
72
+ fail threshold collection and report the exact path and source without echoing
73
+ the invalid value; never fall through to a legacy value or default. Never quote
74
+ or report either whole config. The fixed `jq` projection itself must redact
75
+ invalid configured content: it emits only presence, validity, and a fixed type
76
+ classification, and includes the numeric `value` field only for a finite number.
77
+ For a valid resolution, the monitor report must include the resolved value and
78
+ source. Report only a validated numeric resolved value and one fixed source enum:
79
+ `local-current`, `committed-current`, `local-legacy`, `committed-legacy`, or
80
+ `default`.
81
+
18
82
  ## Orchestration: agent team
19
83
 
20
84
  You are "inside an agent team" only if you are yourself a spawned teammate or subagent — you were spawned into a team context, or your context names a team lead you report to. A lead/root session that has previously spawned subagents is still the lead and retains full authority to create this flow's team.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.217.2",
3
+ "version": "2.217.4",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -15,6 +15,70 @@ Spot-check application health, **audit observability completeness**, and **file
15
15
  - `--all-gaps` — also file `recommended`-tier gaps (session replay, product analytics, etc.), not just `core`. Does not change anomaly thresholds.
16
16
  - `max_candidates=<n>` — cap tickets filed this run (default 20; config `monitor.maxCandidates`).
17
17
 
18
+ ## Monitor threshold compatibility
19
+
20
+ Before resolving anomaly thresholds, inspect the committed
21
+ `.lisa.config.json` and local `.lisa.config.local.json` separately with `jq`.
22
+ Use a literal, fixed-path projection that returns presence and value for only
23
+ these four exact paths; do not use `Read`, `cat`, interpolation, or a filter
24
+ that emits either entire config into agent context:
25
+
26
+ - `monitor.thresholds.minEvents24h`, then
27
+ `monitor.thresholds.sentryMinEvents24h`.
28
+ - `monitor.thresholds.faultRatePct`, then
29
+ `monitor.thresholds.xrayFaultRatePct`.
30
+
31
+ Run this fixed filter once with literal final argument `.lisa.config.json` and
32
+ once with literal final argument `.lisa.config.local.json` when the respective
33
+ file exists:
34
+
35
+ ```bash
36
+ jq 'def threshold($object; $name):
37
+ if ($object | has($name)) then
38
+ ($object[$name] | type) as $type |
39
+ if $type == "number" then
40
+ if ($object[$name] | isfinite and (isnan | not)) then
41
+ {present: true, valid: true, type: "number", value: $object[$name]}
42
+ else
43
+ {present: true, valid: false, type: "non-finite-number"}
44
+ end
45
+ else
46
+ {present: true, valid: false, type: $type}
47
+ end
48
+ else
49
+ {present: false, valid: false, type: "missing"}
50
+ end;
51
+ (.monitor.thresholds | if type == "object" then . else {} end) as $t |
52
+ {
53
+ "monitor.thresholds.minEvents24h": threshold($t; "minEvents24h"),
54
+ "monitor.thresholds.sentryMinEvents24h": threshold($t; "sentryMinEvents24h"),
55
+ "monitor.thresholds.faultRatePct": threshold($t; "faultRatePct"),
56
+ "monitor.thresholds.xrayFaultRatePct": threshold($t; "xrayFaultRatePct")
57
+ }' .lisa.config.json
58
+ ```
59
+
60
+ A nonzero `jq` result fails threshold collection; do not treat an uninspectable
61
+ present file as if it were absent.
62
+
63
+ For each exact path, keep the raw `jq` presence/value result from each file;
64
+ do not inject defaults during this merge. Local presence overrides committed
65
+ presence per path. After that merge, resolve the current key before the legacy
66
+ key, then use default `1` for `monitor.thresholds.minEvents24h` or default `5`
67
+ for `monitor.thresholds.faultRatePct`. Current key wins over legacy key even
68
+ when its configured value is invalid.
69
+
70
+ Every configured threshold must be a finite JSON number. If the selected path
71
+ is null, a string, a boolean, an object, an array, or otherwise non-finite,
72
+ fail threshold collection and report the exact path and source without echoing
73
+ the invalid value; never fall through to a legacy value or default. Never quote
74
+ or report either whole config. The fixed `jq` projection itself must redact
75
+ invalid configured content: it emits only presence, validity, and a fixed type
76
+ classification, and includes the numeric `value` field only for a finite number.
77
+ For a valid resolution, the monitor report must include the resolved value and
78
+ source. Report only a validated numeric resolved value and one fixed source enum:
79
+ `local-current`, `committed-current`, `local-legacy`, `committed-legacy`, or
80
+ `default`.
81
+
18
82
  ## Orchestration: agent team
19
83
 
20
84
  You are "inside an agent team" only if you are yourself a spawned teammate or subagent — you were spawned into a team context, or your context names a team lead you report to. A lead/root session that has previously spawned subagents is still the lead and retains full authority to create this flow's team.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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": "2.217.2",
3
+ "version": "2.217.4",
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"
@@ -15,6 +15,70 @@ Spot-check application health, **audit observability completeness**, and **file
15
15
  - `--all-gaps` — also file `recommended`-tier gaps (session replay, product analytics, etc.), not just `core`. Does not change anomaly thresholds.
16
16
  - `max_candidates=<n>` — cap tickets filed this run (default 20; config `monitor.maxCandidates`).
17
17
 
18
+ ## Monitor threshold compatibility
19
+
20
+ Before resolving anomaly thresholds, inspect the committed
21
+ `.lisa.config.json` and local `.lisa.config.local.json` separately with `jq`.
22
+ Use a literal, fixed-path projection that returns presence and value for only
23
+ these four exact paths; do not use `Read`, `cat`, interpolation, or a filter
24
+ that emits either entire config into agent context:
25
+
26
+ - `monitor.thresholds.minEvents24h`, then
27
+ `monitor.thresholds.sentryMinEvents24h`.
28
+ - `monitor.thresholds.faultRatePct`, then
29
+ `monitor.thresholds.xrayFaultRatePct`.
30
+
31
+ Run this fixed filter once with literal final argument `.lisa.config.json` and
32
+ once with literal final argument `.lisa.config.local.json` when the respective
33
+ file exists:
34
+
35
+ ```bash
36
+ jq 'def threshold($object; $name):
37
+ if ($object | has($name)) then
38
+ ($object[$name] | type) as $type |
39
+ if $type == "number" then
40
+ if ($object[$name] | isfinite and (isnan | not)) then
41
+ {present: true, valid: true, type: "number", value: $object[$name]}
42
+ else
43
+ {present: true, valid: false, type: "non-finite-number"}
44
+ end
45
+ else
46
+ {present: true, valid: false, type: $type}
47
+ end
48
+ else
49
+ {present: false, valid: false, type: "missing"}
50
+ end;
51
+ (.monitor.thresholds | if type == "object" then . else {} end) as $t |
52
+ {
53
+ "monitor.thresholds.minEvents24h": threshold($t; "minEvents24h"),
54
+ "monitor.thresholds.sentryMinEvents24h": threshold($t; "sentryMinEvents24h"),
55
+ "monitor.thresholds.faultRatePct": threshold($t; "faultRatePct"),
56
+ "monitor.thresholds.xrayFaultRatePct": threshold($t; "xrayFaultRatePct")
57
+ }' .lisa.config.json
58
+ ```
59
+
60
+ A nonzero `jq` result fails threshold collection; do not treat an uninspectable
61
+ present file as if it were absent.
62
+
63
+ For each exact path, keep the raw `jq` presence/value result from each file;
64
+ do not inject defaults during this merge. Local presence overrides committed
65
+ presence per path. After that merge, resolve the current key before the legacy
66
+ key, then use default `1` for `monitor.thresholds.minEvents24h` or default `5`
67
+ for `monitor.thresholds.faultRatePct`. Current key wins over legacy key even
68
+ when its configured value is invalid.
69
+
70
+ Every configured threshold must be a finite JSON number. If the selected path
71
+ is null, a string, a boolean, an object, an array, or otherwise non-finite,
72
+ fail threshold collection and report the exact path and source without echoing
73
+ the invalid value; never fall through to a legacy value or default. Never quote
74
+ or report either whole config. The fixed `jq` projection itself must redact
75
+ invalid configured content: it emits only presence, validity, and a fixed type
76
+ classification, and includes the numeric `value` field only for a finite number.
77
+ For a valid resolution, the monitor report must include the resolved value and
78
+ source. Report only a validated numeric resolved value and one fixed source enum:
79
+ `local-current`, `committed-current`, `local-legacy`, `committed-legacy`, or
80
+ `default`.
81
+
18
82
  ## Orchestration: agent team
19
83
 
20
84
  You are "inside an agent team" only if you are yourself a spawned teammate or subagent — you were spawned into a team context, or your context names a team lead you report to. A lead/root session that has previously spawned subagents is still the lead and retains full authority to create this flow's team.