@codyswann/lisa 4.21.5 → 4.21.6

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 (120) hide show
  1. package/dist/cli/doctor-nightly-e2e-guard-command-files.d.ts +19 -0
  2. package/dist/cli/doctor-nightly-e2e-guard-command-files.d.ts.map +1 -0
  3. package/dist/cli/doctor-nightly-e2e-guard-command-files.js +221 -0
  4. package/dist/cli/doctor-nightly-e2e-guard-command-files.js.map +1 -0
  5. package/dist/cli/doctor-nightly-e2e-guard-contract.d.ts +113 -0
  6. package/dist/cli/doctor-nightly-e2e-guard-contract.d.ts.map +1 -0
  7. package/dist/cli/doctor-nightly-e2e-guard-contract.js +87 -0
  8. package/dist/cli/doctor-nightly-e2e-guard-contract.js.map +1 -0
  9. package/dist/cli/doctor-nightly-e2e-guard-deadline.d.ts +61 -0
  10. package/dist/cli/doctor-nightly-e2e-guard-deadline.d.ts.map +1 -0
  11. package/dist/cli/doctor-nightly-e2e-guard-deadline.js +97 -0
  12. package/dist/cli/doctor-nightly-e2e-guard-deadline.js.map +1 -0
  13. package/dist/cli/doctor-nightly-e2e-guard-evidence.d.ts +52 -0
  14. package/dist/cli/doctor-nightly-e2e-guard-evidence.d.ts.map +1 -0
  15. package/dist/cli/doctor-nightly-e2e-guard-evidence.js +68 -0
  16. package/dist/cli/doctor-nightly-e2e-guard-evidence.js.map +1 -0
  17. package/dist/cli/doctor-nightly-e2e-guard-graph.d.ts +14 -0
  18. package/dist/cli/doctor-nightly-e2e-guard-graph.d.ts.map +1 -0
  19. package/dist/cli/doctor-nightly-e2e-guard-graph.js +130 -0
  20. package/dist/cli/doctor-nightly-e2e-guard-graph.js.map +1 -0
  21. package/dist/cli/doctor-nightly-e2e-guard-io.d.ts +41 -0
  22. package/dist/cli/doctor-nightly-e2e-guard-io.d.ts.map +1 -0
  23. package/dist/cli/doctor-nightly-e2e-guard-io.js +239 -0
  24. package/dist/cli/doctor-nightly-e2e-guard-io.js.map +1 -0
  25. package/dist/cli/doctor-nightly-e2e-guard-job.d.ts +31 -0
  26. package/dist/cli/doctor-nightly-e2e-guard-job.d.ts.map +1 -0
  27. package/dist/cli/doctor-nightly-e2e-guard-job.js +156 -0
  28. package/dist/cli/doctor-nightly-e2e-guard-job.js.map +1 -0
  29. package/dist/cli/doctor-nightly-e2e-guard-proof.d.ts +42 -0
  30. package/dist/cli/doctor-nightly-e2e-guard-proof.d.ts.map +1 -0
  31. package/dist/cli/doctor-nightly-e2e-guard-proof.js +57 -0
  32. package/dist/cli/doctor-nightly-e2e-guard-proof.js.map +1 -0
  33. package/dist/cli/doctor-nightly-e2e-guard-remediation.d.ts +32 -0
  34. package/dist/cli/doctor-nightly-e2e-guard-remediation.d.ts.map +1 -0
  35. package/dist/cli/doctor-nightly-e2e-guard-remediation.js +55 -0
  36. package/dist/cli/doctor-nightly-e2e-guard-remediation.js.map +1 -0
  37. package/dist/cli/doctor-nightly-e2e-guard-runtime.d.ts +34 -0
  38. package/dist/cli/doctor-nightly-e2e-guard-runtime.d.ts.map +1 -0
  39. package/dist/cli/doctor-nightly-e2e-guard-runtime.js +93 -0
  40. package/dist/cli/doctor-nightly-e2e-guard-runtime.js.map +1 -0
  41. package/dist/cli/doctor-nightly-e2e-guard-scan.d.ts +17 -0
  42. package/dist/cli/doctor-nightly-e2e-guard-scan.d.ts.map +1 -0
  43. package/dist/cli/doctor-nightly-e2e-guard-scan.js +86 -0
  44. package/dist/cli/doctor-nightly-e2e-guard-scan.js.map +1 -0
  45. package/dist/cli/doctor-nightly-e2e-guard-shell-lexer.d.ts +38 -0
  46. package/dist/cli/doctor-nightly-e2e-guard-shell-lexer.d.ts.map +1 -0
  47. package/dist/cli/doctor-nightly-e2e-guard-shell-lexer.js +160 -0
  48. package/dist/cli/doctor-nightly-e2e-guard-shell-lexer.js.map +1 -0
  49. package/dist/cli/doctor-nightly-e2e-guard-shell.d.ts +40 -0
  50. package/dist/cli/doctor-nightly-e2e-guard-shell.d.ts.map +1 -0
  51. package/dist/cli/doctor-nightly-e2e-guard-shell.js +201 -0
  52. package/dist/cli/doctor-nightly-e2e-guard-shell.js.map +1 -0
  53. package/dist/cli/doctor-nightly-e2e-guard.d.ts +36 -0
  54. package/dist/cli/doctor-nightly-e2e-guard.d.ts.map +1 -0
  55. package/dist/cli/doctor-nightly-e2e-guard.js +186 -0
  56. package/dist/cli/doctor-nightly-e2e-guard.js.map +1 -0
  57. package/dist/cli/doctor.d.ts.map +1 -1
  58. package/dist/cli/doctor.js +7 -0
  59. package/dist/cli/doctor.js.map +1 -1
  60. package/dist/core/nightly-e2e-guard-behavior-certificate.d.ts +25 -0
  61. package/dist/core/nightly-e2e-guard-behavior-certificate.d.ts.map +1 -0
  62. package/dist/core/nightly-e2e-guard-behavior-certificate.js +30 -0
  63. package/dist/core/nightly-e2e-guard-behavior-certificate.js.map +1 -0
  64. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  65. package/dist/core/upstream-evidence-manifest.js +29 -2
  66. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  67. package/package.json +5 -3
  68. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  70. package/plugins/lisa-agy/plugin.json +1 -1
  71. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  74. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  79. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  80. package/plugins/lisa-expo-agy/plugin.json +1 -1
  81. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  84. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  85. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  86. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  90. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  91. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  95. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  96. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  100. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  101. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  105. package/plugins/lisa-rails-agy/plugin.json +1 -1
  106. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  108. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  109. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  110. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  111. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  112. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  113. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  114. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  115. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  116. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  117. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  118. package/scripts/check-derived-artifacts.mjs +32 -5
  119. package/scripts/generate-nightly-e2e-guard-certificate.mjs +370 -0
  120. package/scripts/two-channel-couplings.json +16 -4
package/package.json CHANGED
@@ -48,9 +48,11 @@
48
48
  "check:upstream-evidence-manifest": "node scripts/generate-upstream-evidence-manifest.mjs --check",
49
49
  "build:lisa-owned-hash-ledger": "node scripts/generate-lisa-owned-hash-ledger.mjs",
50
50
  "check:lisa-owned-hash-ledger": "node scripts/generate-lisa-owned-hash-ledger.mjs --check",
51
+ "build:nightly-guard-certificate": "node scripts/generate-nightly-e2e-guard-certificate.mjs",
52
+ "check:nightly-guard-certificate": "node scripts/generate-nightly-e2e-guard-certificate.mjs --check",
51
53
  "generate:two-channel-couplings": "bun scripts/generate-two-channel-couplings.ts",
52
54
  "check:two-channel-couplings": "bun scripts/generate-two-channel-couplings.ts --check",
53
- "check:artifacts": "status=0; bun run check:upstream-evidence-manifest || status=1; bun run check:lisa-owned-hash-ledger || status=1; bun run check:two-channel-couplings || status=1; exit $status",
55
+ "check:artifacts": "status=0; bun run check:upstream-evidence-manifest || status=1; bun run check:lisa-owned-hash-ledger || status=1; bun run check:nightly-guard-certificate || status=1; bun run check:two-channel-couplings || status=1; exit $status",
54
56
  "refresh:upstream-public-commits": "node scripts/generate-upstream-evidence-manifest.mjs --refresh-public-commits",
55
57
  "check:rules-pairing": "bash scripts/check-rules-pairing.sh",
56
58
  "check:pipeline-status-reads": "node scripts/check-pipeline-status-reads.mjs",
@@ -159,7 +161,7 @@
159
161
  "zod-validation-error": "^4.0.0"
160
162
  },
161
163
  "name": "@codyswann/lisa",
162
- "version": "4.21.5",
164
+ "version": "4.21.6",
163
165
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
164
166
  "main": "dist/index.js",
165
167
  "exports": {
@@ -298,5 +300,5 @@
298
300
  "vite": "^8.0.16"
299
301
  },
300
302
  "type": "module",
301
- "lisaReleaseCommit": "3058845dd698f4d6fd2bb7356825d96f65e008ce"
303
+ "lisaReleaseCommit": "d17bab15edc316cce82f3f4cd0593810242b3395"
302
304
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.21.5",
3
+ "version": "4.21.6",
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"
@@ -3,12 +3,14 @@
3
3
  * Fail a commit whose generated artifacts no longer vouch for the bytes beside
4
4
  * them.
5
5
  *
6
- * Lisa has two artifacts derived from tracked sources:
6
+ * Lisa has three artifact families derived from tracked sources:
7
7
  *
8
8
  * - `src/core/upstream-evidence-manifest.ts`, regenerated by
9
9
  * `bun run build:upstream-evidence-manifest`
10
10
  * - `src/core/lisa-owned-hash-ledger.ts`, regenerated by
11
11
  * `bun run build:lisa-owned-hash-ledger`
12
+ * - `src/core/nightly-e2e-guard-behavior-certificate.ts`, regenerated by
13
+ * `bun run build:nightly-guard-certificate`
12
14
  *
13
15
  * Each already has a suite-level guard, but the suite is the slow and late place
14
16
  * to learn it. CodySwannGT/lisa#2557 is what that costs: three branches, each
@@ -20,8 +22,8 @@
20
22
  *
21
23
  * **This script verifies nothing itself.** It delegates to each generator's own
22
24
  * `--check`, which is the point: a second implementation of "is the artifact
23
- * current" would be a second thing to keep in step. The two checks deliberately
24
- * assert different properties, and both are correct for their artifact:
25
+ * current" would be a second thing to keep in step. The checks deliberately
26
+ * assert different properties, and each is correct for its artifact:
25
27
  *
26
28
  * - The manifest hashes tracked files with no history walk, so a fresh
27
29
  * regeneration is byte-reproducible anywhere and byte-identity is a fair test.
@@ -38,7 +40,7 @@
38
40
  * NOT true: the manifest does not hash the ledger, so there is no required order
39
41
  * between the two, and a stale manifest is not evidence of a stale ledger.
40
42
  *
41
- * Both triggers below are deliberate **supersets** of what each artifact covers.
43
+ * The triggers below are deliberate **supersets** of what each artifact covers.
42
44
  * Re-deriving exact membership here would create a second copy of the rule that
43
45
  * could drift and silently stop firing; over-triggering only costs a few seconds
44
46
  * on a commit that owed nothing, which is the safe direction to be wrong in.
@@ -101,6 +103,25 @@ export function requiresLedgerCheck(stagedPaths) {
101
103
  return stagedPaths.some(staged => staged.includes(COPY_OVERWRITE));
102
104
  }
103
105
 
106
+ const NIGHTLY_GUARD_CERTIFICATE_INPUTS = Object.freeze([
107
+ "package.json",
108
+ "scripts/generate-nightly-e2e-guard-certificate.mjs",
109
+ "src/core/nightly-e2e-guard-behavior-certificate.ts",
110
+ "typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs",
111
+ "typescript/copy-overwrite/scripts/lib/invoked-as-script.mjs",
112
+ ]);
113
+
114
+ /**
115
+ * Whether staged bytes can change a behavior-certificate generation result.
116
+ * @param {readonly string[]} stagedPaths - Repo-relative staged paths
117
+ * @returns {boolean} True when the dedicated certificate check is owed
118
+ */
119
+ export function requiresNightlyGuardCertificateCheck(stagedPaths) {
120
+ return stagedPaths.some(staged =>
121
+ NIGHTLY_GUARD_CERTIFICATE_INPUTS.includes(staged)
122
+ );
123
+ }
124
+
104
125
  /**
105
126
  * Whether this change touches a path the evidence manifest hash-pins.
106
127
  * @param {readonly string[]} stagedPaths - Repo-relative staged paths
@@ -221,6 +242,12 @@ const ARTIFACTS = Object.freeze([
221
242
  command: "bun run build:lisa-owned-hash-ledger",
222
243
  trigger: requiresLedgerCheck,
223
244
  }),
245
+ Object.freeze({
246
+ name: "nightly guard behavior certificate",
247
+ script: "scripts/generate-nightly-e2e-guard-certificate.mjs",
248
+ command: "bun run build:nightly-guard-certificate",
249
+ trigger: requiresNightlyGuardCertificateCheck,
250
+ }),
224
251
  ]);
225
252
 
226
253
  /**
@@ -257,7 +284,7 @@ function main() {
257
284
  "\n\n"
258
285
  )}\n\n` +
259
286
  `The order is: git add the real changes, THEN regenerate, THEN git add the\n` +
260
- `regenerated file. Both generators read the git index and the working tree,\n` +
287
+ `regenerated file. The generators read the git index and/or working tree,\n` +
261
288
  `so regenerating before staging records the file set you had a moment ago.\n\n` +
262
289
  `Passing by hand and failing here is expected, not a puzzle: lint-staged\n` +
263
290
  `reformats every staged file just above, and this gate runs after it on\n` +