@codyswann/lisa 2.77.2 → 2.79.0

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.
package/package.json CHANGED
@@ -82,7 +82,7 @@
82
82
  "lodash": ">=4.18.1"
83
83
  },
84
84
  "name": "@codyswann/lisa",
85
- "version": "2.77.2",
85
+ "version": "2.79.0",
86
86
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
87
87
  "main": "dist/index.js",
88
88
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
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.77.2",
3
+ "version": "2.79.0",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -459,6 +459,38 @@ preflight for those configured vendors only.
459
459
  unreadable after all supported probes, is a doctor `FAIL`.
460
460
  - A reachable vendor with only auxiliary-substrate degradation is a doctor `WARN`.
461
461
 
462
+ ### Doctor automation readiness
463
+
464
+ Doctor's automation-readiness group is also read-only. It answers "could this repo safely support
465
+ Lisa's recurring automations from the current runtime?" without creating, editing, deleting, or
466
+ reconciling any automation state.
467
+
468
+ 1. **Resolve the automation queues from merged config**
469
+ - Resolve the PRD automation queue from merged `source`.
470
+ - Resolve the build automation queue from merged `tracker`.
471
+ - Resolve repair-intake from the same queue-detection contract `lisa:intake` /
472
+ `lisa:repair-intake` already use; doctor should not invent a second queue schema.
473
+ - If an automation's queue cannot be resolved because `source`, `tracker`, or the selected
474
+ vendor's required keys are still missing after merge, that automation is a doctor `FAIL`.
475
+ Unattended runs would be ambiguous before the scheduler is even involved.
476
+ 2. **Check native scheduler availability by runtime, read-only**
477
+ - Codex automation support means the runtime exposes the native automations surface
478
+ (`automation_update`) that `setup-automations` depends on.
479
+ - Claude automation support means `/schedule` is available.
480
+ - Other runtimes should be reported explicitly as having no known native Lisa scheduler unless a
481
+ supported surface is observable.
482
+ - Doctor must not create a throwaway automation just to prove the scheduler exists.
483
+ 3. **Match exploratory automation support to the repo's shipped stack**
484
+ - `exploratory-bugs` exists only for stacks that ship `exploratory-qa` (`expo`, `rails`,
485
+ `harper-fabric`). If the repo lacks that command surface, doctor reports the automation as
486
+ `SKIP`, not `FAIL`.
487
+ - `exploratory-prds` follows the normal queue-resolution rules; if its prerequisites are
488
+ unresolved, preserve the exact blocking config fact.
489
+ 4. **Severity**
490
+ - Queue resolution failure is a doctor `FAIL`.
491
+ - Missing native scheduler support in an otherwise manually-usable repo is a doctor `WARN`.
492
+ - Intentional absence of an optional exploratory automation surface is a doctor `SKIP`.
493
+
462
494
  ## Skill mapping
463
495
 
464
496
  The shim → vendor mapping is fixed:
@@ -140,6 +140,100 @@ every vendor Lisa supports.
140
140
  - `FAIL` when no supported substrate can prove read access for the configured tracker/source, or
141
141
  when the configured vendor target is unreadable from the current runtime.
142
142
 
143
+ ### Minimum GitHub Project coordination checks
144
+
145
+ When `github.projects.v2` is configured, doctor must run one additional read-only coordination
146
+ check instead of treating the config block as implicitly ready.
147
+
148
+ 1. **Delegate through the shared chokepoint**
149
+ - Call `lisa:github-project-v2` in read-only resolution mode:
150
+
151
+ ```text
152
+ operation: resolve-project
153
+ ```
154
+
155
+ - Do not inline ad-hoc Project GraphQL in doctor. Setup, doctor, writers, and linked-PR flows
156
+ must all read the same owner/access contract from the shared utility.
157
+ 2. **Preserve exact namespace + access failures**
158
+ - Enforce the v1 namespace rule exactly as documented by the shared utility. If
159
+ `github.projects.v2.owner.slug` does not match `github.org`, report:
160
+
161
+ ```yaml
162
+ code: project_namespace_mismatch
163
+ message: "github.projects.v2.owner.slug must match github.org in v1"
164
+ remediation: "Use a Project owned by <github.org> or remove github.projects.v2."
165
+ ```
166
+
167
+ - For owner-access or GraphQL failures, preserve the exact GitHub / GraphQL failure text in the
168
+ observed output. Examples include missing Project, `Resource not accessible by integration`,
169
+ unsupported owner kind, or a wrong owner/number pair.
170
+ 3. **Report exact remediation paths**
171
+ - Doctor must make the next operator action explicit. At minimum, say whether they need to:
172
+ 1. choose a Project owned by the tracked repo namespace,
173
+ 2. grant the token Project read/write access,
174
+ 3. correct the configured Project number/owner, or
175
+ 4. remove `github.projects.v2` when coordination is not required.
176
+ 4. **Map shared utility outcomes into doctor severity**
177
+ - `required: false` => doctor `WARN`. Repository-local GitHub issue/PR flows remain usable while
178
+ Project coordination is degraded.
179
+ - `required: true` => doctor `FAIL`. The same Project validation failure blocks Lisa readiness
180
+ because coordination was configured as required.
181
+
182
+ Good output examples:
183
+
184
+ ```text
185
+ WARN github.projects.v2: Resource not accessible by integration
186
+ Observed: exact GitHub / GraphQL failure text preserved from resolve-project.
187
+ Remediation: grant the token Project read/write access or remove github.projects.v2.required.
188
+ Repository-local GitHub issue/PR flows remain usable; Project coordination is disabled.
189
+ ```
190
+
191
+ ```text
192
+ FAIL github.projects.v2: github.projects.v2.owner.slug must match github.org in v1
193
+ Remediation: use a Project owned by CodySwannGT or remove github.projects.v2.
194
+ ```
195
+
196
+ ### Minimum automation-readiness checks
197
+
198
+ Doctor's automation-readiness group stays read-only: it audits whether this repo and runtime could
199
+ support `/lisa:setup-automations` and the resulting recurring jobs, but it does **not** create,
200
+ edit, delete, or reconcile automations on the default doctor path.
201
+
202
+ 1. **Resolve the queue inputs exactly as setup-automations would**
203
+ - Resolve the PRD queue from merged `source`.
204
+ - Resolve the build queue from merged `tracker`.
205
+ - Resolve the repair queue from the same queue-detection rules as `lisa:repair-intake`
206
+ (identical source-dispatch contract to `lisa:intake`).
207
+ - If any automation would require guessing because `source`, `tracker`, or their vendor keys are
208
+ still unresolved after the config-readiness audit, report that automation as `FAIL` rather
209
+ than pretending scheduling can proceed safely.
210
+ 2. **Audit the current runtime's native scheduler surface without mutating it**
211
+ - Codex: doctor should report whether the runtime exposes the native automations surface
212
+ (`automation_update`) needed by `/lisa:setup-automations`.
213
+ - Claude: doctor should report whether the runtime exposes `/schedule`.
214
+ - Other runtimes: doctor should explicitly say that no native Lisa scheduler is known for the
215
+ current runtime.
216
+ - This is observability only. Never create a placeholder automation just to prove the scheduler
217
+ works.
218
+ 3. **Check exploratory-automation support by shipped stack surface**
219
+ - `exploratory-bugs` is supported only when the project ships an `exploratory-qa` command
220
+ surface (the `expo`, `rails`, or `harper-fabric` stacks today). Reuse the same stack/support
221
+ rule documented by `setup-automations`; do not invent exploratory jobs for stacks that do not
222
+ ship that command.
223
+ - When the repo does not ship `exploratory-qa`, report `exploratory-bugs` as `SKIP` with the
224
+ reason.
225
+ - `exploratory-prds` remains applicable when the repo can run `/lisa:project-ideation`; if its
226
+ queue/config prerequisites are unresolved, report the exact blocking config fact.
227
+ 4. **Severity ladder**
228
+ - `PASS` when an automation's queue inputs are resolvable and the runtime exposes the required
229
+ native scheduler surface for that automation.
230
+ - `WARN` when Lisa remains usable manually, but the current runtime has no native scheduler
231
+ surface for unattended runs, so automation setup would be unavailable from here.
232
+ - `SKIP` when an optional automation is intentionally unsupported for this repo surface (for
233
+ example, `exploratory-bugs` on a stack with no `exploratory-qa` command).
234
+ - `FAIL` when the repo's config cannot resolve the queue that an automation needs, because that
235
+ would make unattended runs ambiguous or broken before scheduling even starts.
236
+
143
237
  ## Output contract
144
238
 
145
239
  The final report must:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
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.77.2",
3
+ "version": "2.79.0",
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-expo",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
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.77.2",
3
+ "version": "2.79.0",
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-harper-fabric",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
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.77.2",
3
+ "version": "2.79.0",
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-nestjs",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
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.77.2",
3
+ "version": "2.79.0",
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-openclaw",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
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.77.2",
3
+ "version": "2.79.0",
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-rails",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
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.77.2",
3
+ "version": "2.79.0",
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-typescript",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint 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.77.2",
3
+ "version": "2.79.0",
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-wiki",
3
- "version": "2.77.2",
3
+ "version": "2.79.0",
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.77.2",
3
+ "version": "2.79.0",
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"
@@ -459,6 +459,38 @@ preflight for those configured vendors only.
459
459
  unreadable after all supported probes, is a doctor `FAIL`.
460
460
  - A reachable vendor with only auxiliary-substrate degradation is a doctor `WARN`.
461
461
 
462
+ ### Doctor automation readiness
463
+
464
+ Doctor's automation-readiness group is also read-only. It answers "could this repo safely support
465
+ Lisa's recurring automations from the current runtime?" without creating, editing, deleting, or
466
+ reconciling any automation state.
467
+
468
+ 1. **Resolve the automation queues from merged config**
469
+ - Resolve the PRD automation queue from merged `source`.
470
+ - Resolve the build automation queue from merged `tracker`.
471
+ - Resolve repair-intake from the same queue-detection contract `lisa:intake` /
472
+ `lisa:repair-intake` already use; doctor should not invent a second queue schema.
473
+ - If an automation's queue cannot be resolved because `source`, `tracker`, or the selected
474
+ vendor's required keys are still missing after merge, that automation is a doctor `FAIL`.
475
+ Unattended runs would be ambiguous before the scheduler is even involved.
476
+ 2. **Check native scheduler availability by runtime, read-only**
477
+ - Codex automation support means the runtime exposes the native automations surface
478
+ (`automation_update`) that `setup-automations` depends on.
479
+ - Claude automation support means `/schedule` is available.
480
+ - Other runtimes should be reported explicitly as having no known native Lisa scheduler unless a
481
+ supported surface is observable.
482
+ - Doctor must not create a throwaway automation just to prove the scheduler exists.
483
+ 3. **Match exploratory automation support to the repo's shipped stack**
484
+ - `exploratory-bugs` exists only for stacks that ship `exploratory-qa` (`expo`, `rails`,
485
+ `harper-fabric`). If the repo lacks that command surface, doctor reports the automation as
486
+ `SKIP`, not `FAIL`.
487
+ - `exploratory-prds` follows the normal queue-resolution rules; if its prerequisites are
488
+ unresolved, preserve the exact blocking config fact.
489
+ 4. **Severity**
490
+ - Queue resolution failure is a doctor `FAIL`.
491
+ - Missing native scheduler support in an otherwise manually-usable repo is a doctor `WARN`.
492
+ - Intentional absence of an optional exploratory automation surface is a doctor `SKIP`.
493
+
462
494
  ## Skill mapping
463
495
 
464
496
  The shim → vendor mapping is fixed:
@@ -140,6 +140,100 @@ every vendor Lisa supports.
140
140
  - `FAIL` when no supported substrate can prove read access for the configured tracker/source, or
141
141
  when the configured vendor target is unreadable from the current runtime.
142
142
 
143
+ ### Minimum GitHub Project coordination checks
144
+
145
+ When `github.projects.v2` is configured, doctor must run one additional read-only coordination
146
+ check instead of treating the config block as implicitly ready.
147
+
148
+ 1. **Delegate through the shared chokepoint**
149
+ - Call `lisa:github-project-v2` in read-only resolution mode:
150
+
151
+ ```text
152
+ operation: resolve-project
153
+ ```
154
+
155
+ - Do not inline ad-hoc Project GraphQL in doctor. Setup, doctor, writers, and linked-PR flows
156
+ must all read the same owner/access contract from the shared utility.
157
+ 2. **Preserve exact namespace + access failures**
158
+ - Enforce the v1 namespace rule exactly as documented by the shared utility. If
159
+ `github.projects.v2.owner.slug` does not match `github.org`, report:
160
+
161
+ ```yaml
162
+ code: project_namespace_mismatch
163
+ message: "github.projects.v2.owner.slug must match github.org in v1"
164
+ remediation: "Use a Project owned by <github.org> or remove github.projects.v2."
165
+ ```
166
+
167
+ - For owner-access or GraphQL failures, preserve the exact GitHub / GraphQL failure text in the
168
+ observed output. Examples include missing Project, `Resource not accessible by integration`,
169
+ unsupported owner kind, or a wrong owner/number pair.
170
+ 3. **Report exact remediation paths**
171
+ - Doctor must make the next operator action explicit. At minimum, say whether they need to:
172
+ 1. choose a Project owned by the tracked repo namespace,
173
+ 2. grant the token Project read/write access,
174
+ 3. correct the configured Project number/owner, or
175
+ 4. remove `github.projects.v2` when coordination is not required.
176
+ 4. **Map shared utility outcomes into doctor severity**
177
+ - `required: false` => doctor `WARN`. Repository-local GitHub issue/PR flows remain usable while
178
+ Project coordination is degraded.
179
+ - `required: true` => doctor `FAIL`. The same Project validation failure blocks Lisa readiness
180
+ because coordination was configured as required.
181
+
182
+ Good output examples:
183
+
184
+ ```text
185
+ WARN github.projects.v2: Resource not accessible by integration
186
+ Observed: exact GitHub / GraphQL failure text preserved from resolve-project.
187
+ Remediation: grant the token Project read/write access or remove github.projects.v2.required.
188
+ Repository-local GitHub issue/PR flows remain usable; Project coordination is disabled.
189
+ ```
190
+
191
+ ```text
192
+ FAIL github.projects.v2: github.projects.v2.owner.slug must match github.org in v1
193
+ Remediation: use a Project owned by CodySwannGT or remove github.projects.v2.
194
+ ```
195
+
196
+ ### Minimum automation-readiness checks
197
+
198
+ Doctor's automation-readiness group stays read-only: it audits whether this repo and runtime could
199
+ support `/lisa:setup-automations` and the resulting recurring jobs, but it does **not** create,
200
+ edit, delete, or reconcile automations on the default doctor path.
201
+
202
+ 1. **Resolve the queue inputs exactly as setup-automations would**
203
+ - Resolve the PRD queue from merged `source`.
204
+ - Resolve the build queue from merged `tracker`.
205
+ - Resolve the repair queue from the same queue-detection rules as `lisa:repair-intake`
206
+ (identical source-dispatch contract to `lisa:intake`).
207
+ - If any automation would require guessing because `source`, `tracker`, or their vendor keys are
208
+ still unresolved after the config-readiness audit, report that automation as `FAIL` rather
209
+ than pretending scheduling can proceed safely.
210
+ 2. **Audit the current runtime's native scheduler surface without mutating it**
211
+ - Codex: doctor should report whether the runtime exposes the native automations surface
212
+ (`automation_update`) needed by `/lisa:setup-automations`.
213
+ - Claude: doctor should report whether the runtime exposes `/schedule`.
214
+ - Other runtimes: doctor should explicitly say that no native Lisa scheduler is known for the
215
+ current runtime.
216
+ - This is observability only. Never create a placeholder automation just to prove the scheduler
217
+ works.
218
+ 3. **Check exploratory-automation support by shipped stack surface**
219
+ - `exploratory-bugs` is supported only when the project ships an `exploratory-qa` command
220
+ surface (the `expo`, `rails`, or `harper-fabric` stacks today). Reuse the same stack/support
221
+ rule documented by `setup-automations`; do not invent exploratory jobs for stacks that do not
222
+ ship that command.
223
+ - When the repo does not ship `exploratory-qa`, report `exploratory-bugs` as `SKIP` with the
224
+ reason.
225
+ - `exploratory-prds` remains applicable when the repo can run `/lisa:project-ideation`; if its
226
+ queue/config prerequisites are unresolved, report the exact blocking config fact.
227
+ 4. **Severity ladder**
228
+ - `PASS` when an automation's queue inputs are resolvable and the runtime exposes the required
229
+ native scheduler surface for that automation.
230
+ - `WARN` when Lisa remains usable manually, but the current runtime has no native scheduler
231
+ surface for unattended runs, so automation setup would be unavailable from here.
232
+ - `SKIP` when an optional automation is intentionally unsupported for this repo surface (for
233
+ example, `exploratory-bugs` on a stack with no `exploratory-qa` command).
234
+ - `FAIL` when the repo's config cannot resolve the queue that an automation needs, because that
235
+ would make unattended runs ambiguous or broken before scheduling even starts.
236
+
143
237
  ## Output contract
144
238
 
145
239
  The final report must: