@codyswann/lisa 4.22.7 → 4.22.9

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 (143) hide show
  1. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  2. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  3. package/dist/core/upstream-evidence-manifest.js +22 -13
  4. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  5. package/dist/sync/lifecycle-defaults.d.ts +21 -0
  6. package/dist/sync/lifecycle-defaults.d.ts.map +1 -1
  7. package/dist/sync/lifecycle-defaults.js +21 -1
  8. package/dist/sync/lifecycle-defaults.js.map +1 -1
  9. package/dist/sync/registry.d.ts.map +1 -1
  10. package/dist/sync/registry.js +7 -1
  11. package/dist/sync/registry.js.map +1 -1
  12. package/package.json +3 -3
  13. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  15. package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/SKILL.md +6 -5
  16. package/plugins/lisa/.codex-plugin/skills/lisa-github-prd-intake/SKILL.md +6 -5
  17. package/plugins/lisa/.codex-plugin/skills/lisa-github-sync/SKILL.md +2 -0
  18. package/plugins/lisa/.codex-plugin/skills/lisa-github-write-prd/SKILL.md +7 -3
  19. package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +6 -5
  20. package/plugins/lisa/.codex-plugin/skills/lisa-jira-sync/SKILL.md +3 -1
  21. package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +6 -5
  22. package/plugins/lisa/.codex-plugin/skills/lisa-linear-evidence/SKILL.md +12 -11
  23. package/plugins/lisa/.codex-plugin/skills/lisa-linear-prd-intake/SKILL.md +6 -5
  24. package/plugins/lisa/.codex-plugin/skills/lisa-linear-sync/SKILL.md +36 -20
  25. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
  26. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +22 -2
  27. package/plugins/lisa/rules/reference/config-resolution.md +30 -3
  28. package/plugins/lisa/scripts/resolve-lifecycle-role.mjs +340 -0
  29. package/plugins/lisa/skills/lisa-github-build-intake/SKILL.md +6 -5
  30. package/plugins/lisa/skills/lisa-github-prd-intake/SKILL.md +6 -5
  31. package/plugins/lisa/skills/lisa-github-sync/SKILL.md +2 -0
  32. package/plugins/lisa/skills/lisa-github-write-prd/SKILL.md +7 -3
  33. package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +6 -5
  34. package/plugins/lisa/skills/lisa-jira-sync/SKILL.md +3 -1
  35. package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +6 -5
  36. package/plugins/lisa/skills/lisa-linear-evidence/SKILL.md +12 -11
  37. package/plugins/lisa/skills/lisa-linear-prd-intake/SKILL.md +6 -5
  38. package/plugins/lisa/skills/lisa-linear-sync/SKILL.md +36 -20
  39. package/plugins/lisa/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
  40. package/plugins/lisa/skills/lisa-tracker-sync/SKILL.md +22 -2
  41. package/plugins/lisa-agy/plugin.json +1 -1
  42. package/plugins/lisa-agy/scripts/resolve-lifecycle-role.mjs +340 -0
  43. package/plugins/lisa-agy/skills/lisa-github-build-intake/SKILL.md +6 -5
  44. package/plugins/lisa-agy/skills/lisa-github-prd-intake/SKILL.md +6 -5
  45. package/plugins/lisa-agy/skills/lisa-github-sync/SKILL.md +2 -0
  46. package/plugins/lisa-agy/skills/lisa-github-write-prd/SKILL.md +7 -3
  47. package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +6 -5
  48. package/plugins/lisa-agy/skills/lisa-jira-sync/SKILL.md +3 -1
  49. package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +6 -5
  50. package/plugins/lisa-agy/skills/lisa-linear-evidence/SKILL.md +12 -11
  51. package/plugins/lisa-agy/skills/lisa-linear-prd-intake/SKILL.md +6 -5
  52. package/plugins/lisa-agy/skills/lisa-linear-sync/SKILL.md +36 -20
  53. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
  54. package/plugins/lisa-agy/skills/lisa-tracker-sync/SKILL.md +22 -2
  55. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  58. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-copilot/rules/reference/config-resolution.md +30 -3
  62. package/plugins/lisa-copilot/scripts/resolve-lifecycle-role.mjs +340 -0
  63. package/plugins/lisa-copilot/skills/lisa-github-build-intake/SKILL.md +6 -5
  64. package/plugins/lisa-copilot/skills/lisa-github-prd-intake/SKILL.md +6 -5
  65. package/plugins/lisa-copilot/skills/lisa-github-sync/SKILL.md +2 -0
  66. package/plugins/lisa-copilot/skills/lisa-github-write-prd/SKILL.md +7 -3
  67. package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +6 -5
  68. package/plugins/lisa-copilot/skills/lisa-jira-sync/SKILL.md +3 -1
  69. package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +6 -5
  70. package/plugins/lisa-copilot/skills/lisa-linear-evidence/SKILL.md +12 -11
  71. package/plugins/lisa-copilot/skills/lisa-linear-prd-intake/SKILL.md +6 -5
  72. package/plugins/lisa-copilot/skills/lisa-linear-sync/SKILL.md +36 -20
  73. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
  74. package/plugins/lisa-copilot/skills/lisa-tracker-sync/SKILL.md +22 -2
  75. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +30 -3
  77. package/plugins/lisa-cursor/scripts/resolve-lifecycle-role.mjs +340 -0
  78. package/plugins/lisa-cursor/skills/lisa-github-build-intake/SKILL.md +6 -5
  79. package/plugins/lisa-cursor/skills/lisa-github-prd-intake/SKILL.md +6 -5
  80. package/plugins/lisa-cursor/skills/lisa-github-sync/SKILL.md +2 -0
  81. package/plugins/lisa-cursor/skills/lisa-github-write-prd/SKILL.md +7 -3
  82. package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +6 -5
  83. package/plugins/lisa-cursor/skills/lisa-jira-sync/SKILL.md +3 -1
  84. package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +6 -5
  85. package/plugins/lisa-cursor/skills/lisa-linear-evidence/SKILL.md +12 -11
  86. package/plugins/lisa-cursor/skills/lisa-linear-prd-intake/SKILL.md +6 -5
  87. package/plugins/lisa-cursor/skills/lisa-linear-sync/SKILL.md +36 -20
  88. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
  89. package/plugins/lisa-cursor/skills/lisa-tracker-sync/SKILL.md +22 -2
  90. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  92. package/plugins/lisa-expo-agy/plugin.json +1 -1
  93. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  95. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  97. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  98. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  100. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  102. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  103. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  105. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  106. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  107. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  108. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  109. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  110. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  111. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  112. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  113. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  114. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  115. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  116. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  117. package/plugins/lisa-rails-agy/plugin.json +1 -1
  118. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  119. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  120. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  121. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  122. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  123. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  124. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  125. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  126. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  127. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  128. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  129. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  130. package/plugins/src/base/rules/reference/config-resolution.md +30 -3
  131. package/plugins/src/base/scripts/resolve-lifecycle-role.mjs +340 -0
  132. package/plugins/src/base/skills/lisa-github-build-intake/SKILL.md +6 -5
  133. package/plugins/src/base/skills/lisa-github-prd-intake/SKILL.md +6 -5
  134. package/plugins/src/base/skills/lisa-github-sync/SKILL.md +2 -0
  135. package/plugins/src/base/skills/lisa-github-write-prd/SKILL.md +7 -3
  136. package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +6 -5
  137. package/plugins/src/base/skills/lisa-jira-sync/SKILL.md +3 -1
  138. package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +6 -5
  139. package/plugins/src/base/skills/lisa-linear-evidence/SKILL.md +12 -11
  140. package/plugins/src/base/skills/lisa-linear-prd-intake/SKILL.md +6 -5
  141. package/plugins/src/base/skills/lisa-linear-sync/SKILL.md +36 -20
  142. package/plugins/src/base/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
  143. package/plugins/src/base/skills/lisa-tracker-sync/SKILL.md +22 -2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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.22.7",
3
+ "version": "4.22.9",
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"
@@ -352,7 +352,7 @@ When `github.projects.v2` is present, later setup/doctor and writer preflight va
352
352
  |-------|---------------|-------|
353
353
  | `linear.workspace` | `tracker = "linear"`, `source = "linear"`, or any `linear-*` skill is invoked | Linear workspace slug (e.g. `acme`). |
354
354
  | `linear.teamKey` | `tracker = "linear"` | Linear team key (e.g. `ENG`). The team owns the destination Issues. For source mode, projects are workspace-scoped or team-scoped per the URL passed. |
355
- | `linear.workflow` | `tracker = "linear"` | Workflow **state** name per build lifecycle role — the Linear analogue of `jira.workflow`, not of `github.labels`. Defaults `{ ready: "Ready", claimed: "In Progress", review: "In Review", blocked: "Blocked", done: { dev: "On Dev", staging: "On Stg", production: "Done" } }`. **`ready` is a dedicated state, never the team's default** — see below. Resolve and verify with `/lisa:setup:linear`. |
355
+ | `linear.workflow` | `tracker = "linear"` | Workflow **state** name per build lifecycle role — the Linear analogue of `jira.workflow`, not of `github.labels`. Defaults `{ ready: "Ready", claimed: "In Progress", blocked: "Blocked", done: { dev: "On Dev", staging: "On Stg", production: "Done" } }` — **no `review` key**, because it is optional and a default would be materialized into the project's config by `lisa sync`. **`ready` is a dedicated state, never the team's default** — see below. Resolve and verify with `/lisa:setup:linear`. |
356
356
  | `linear.labels` | `tracker = "linear"` or `source = "linear"` | **Markers and the PRD lane only.** `build.human_needed` (default `human-needed`) and the `prd.*` map. The build lifecycle does **not** live here — see `linear.workflow`. |
357
357
 
358
358
  ##### Why Linear uses states, not labels
@@ -439,13 +439,40 @@ Every lifecycle skill operates on a fixed set of **roles** (`ready`, `claimed`,
439
439
  |---|---|---|---|---|
440
440
  | `ready` | Human signal "this is buildable; agent may claim" | `Ready` (status) | `Ready` (state) | `status:ready` (label) |
441
441
  | `claimed` | Agent has picked the item up | `In Progress` (status) | `In Progress` (state) | `status:in-progress` (label) |
442
- | `review` | Optional post-build review hold, when a tracker/project still uses one | `Code Review` (status) | `In Review` (state) | no default review label |
442
+ | `review` | Optional post-build review hold, when a tracker/project still uses one | **no default** | **no default** | **no default** |
443
443
  | `blocked` | Agent stopped on triage ambiguities or external blocker | `Blocked` (status) | `Blocked` (state) | `status:blocked` (label) |
444
444
  | `done` | Terminal state for this work, **env-keyed** | map of env → status | map of env → state | map of env → label |
445
445
 
446
446
  **JIRA and Linear resolve roles to native workflow statuses/states** (`jira.workflow`, `linear.workflow`); **GitHub resolves them to labels** (`github.labels.build`) because GitHub Issues has no workflow-state field at all. A role transition is therefore a *state move* on JIRA and Linear, and a *label swap* on GitHub. Skills operate on roles and never hardcode either form.
447
447
 
448
- `review` is optional. GitHub build intake skips it by default and moves successful builds directly from `claimed` to the configured `done` label. Linear and JIRA projects that still use a post-build review hold can configure `review`; projects that keep the ticket in `claimed` until terminal can omit it and lifecycle skills will skip the intermediate transition.
448
+ ### R1 — an absent OPTIONAL role means SKIP, never a default
449
+
450
+ `ready`, `claimed`, `blocked` and `done` are **required**; omitting one is a setup defect and a skill must say so. `review`, the `qa.*` roles and `human_needed` are **optional and carry no built-in default on any vendor**. Omitting one means the project does not run that step, and every lifecycle skill skips the transition — the item simply stays in its current role.
451
+
452
+ A default on an optional role breaks this twice over. Vendor default maps are `defaultValue`s in `sync/registry`, so `lisa sync` **materializes** them into a project's `.lisa.config.json` — a project that deliberately omitted `review` finds it written back in. And as a resolution fallback, a default makes "unset" indistinguishable from "not customized", so no project can express *"we have no agent review step."*
453
+
454
+ Measured downstream: a project bound no `review` role — its policy was that a PR-open ticket stays in `claimed` until it reaches an environment — and agents moved two issues into a human-only review state regardless, because every layer that could have honoured the omission supplied a default instead.
455
+
456
+ GitHub has always been correct here (`BUILD_LABEL_DEFAULTS` seeds no `review`), and `lisa-jira-evidence/scripts/post-evidence.sh` has always implemented it correctly (`REVIEW=""`, explicit skip branch). The default maps for JIRA and Linear now agree with them.
457
+
458
+ ### R2 — a fallback may inform a READ, never supply a WRITE target
459
+
460
+ Where a vendor exposes a fallback for a missing role — Linear resolves states by `type`, since Linear states carry one — it may be used to *read*. It must **never** supply a value to write.
461
+
462
+ Such a fallback selects by **board position**, not intent. On a board carrying more than one plausible state it returns whichever sits earliest, and the states that surface that way are precisely the human-only lanes a project kept out of its config on purpose. Measured on one board: with `blocked` and `claimed` already bound, the lowest-position unbound `started` state was a human-only review lane, and that is exactly where two issues landed.
463
+
464
+ `ready` has no fallback at all, in either direction — see below.
465
+
466
+ ### The single resolver
467
+
468
+ Every skill resolves roles through `${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs`, never an inlined `read_role()` helper. Twelve skills previously inlined one and produced **eleven distinct implementations**; that copy-paste is what let the vendors drift apart on R1.
469
+
470
+ ```bash
471
+ node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
472
+ --role <role> --vendor <jira|linear|github> --intent <read|write> [--env <env>]
473
+ ```
474
+
475
+ Exit `0` with a value → configured. Exit `0` with **empty** output → an optional role is unset; skip the transition. Exit `2` → a required role is unset, or a write was refused a fallback value.
449
476
 
450
477
  **`ready` must never resolve to the team's DEFAULT state.** `Todo` is where Linear puts a brand-new issue, so using it for `ready` inverts the gate: the lane stops meaning "a human flipped this to build-ready" and starts meaning "nobody has touched this". Measured on the first team migrated: 20 issues in the lane, only 8 ever explicitly marked ready. JIRA avoids this because `jira.workflow.ready` is a dedicated `Ready` status while a fresh ticket lands in the project default.
451
478