@codyswann/lisa 3.69.5 → 3.70.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/all/copy-overwrite/scripts/lisa-gates.mjs +365 -45
- package/all/create-only/.github/workflows/continuous-gates.yml +74 -0
- package/cdk/create-only/.github/workflows/deploy.yml +41 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +10 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +20 -12
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/expo/copy-overwrite/scripts/bdd/contract.mjs +41 -2
- package/expo/copy-overwrite/scripts/bdd/envelope.mjs +18 -68
- package/expo/copy-overwrite/scripts/check-bdd-coverage.mjs +135 -206
- package/expo/create-only/.github/workflows/deploy.yml +42 -1
- package/expo/create-only/bdd/coverage-map.json +1 -7
- package/harper-fabric/create-only/.github/workflows/deploy.yml +37 -0
- package/nestjs/create-only/.github/workflows/deploy.yml +44 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/rails/create-only/.github/workflows/deploy.yml +41 -0
- package/scripts/check-learnings-budget.ts +93 -18
- package/typescript/github-rulesets/quality-checks.json +4 -0
|
@@ -17,8 +17,30 @@ concurrency:
|
|
|
17
17
|
cancel-in-progress: true
|
|
18
18
|
|
|
19
19
|
jobs:
|
|
20
|
+
# ── Pre-deploy gates ──────────────────────────────────────────────────────
|
|
21
|
+
# Resolves `pre-deploy:<branch>` from the `gates` block of .lisa.config.json
|
|
22
|
+
# and runs whatever is declared there, BEFORE the deploy job.
|
|
23
|
+
#
|
|
24
|
+
# This is what makes a declaration like
|
|
25
|
+
#
|
|
26
|
+
# "runtime-web-vulnerability": { "pre-deploy:main": "required" }
|
|
27
|
+
#
|
|
28
|
+
# mean something. A required gate that fails — or that resolves to no prover at
|
|
29
|
+
# all, which is UNPROVABLE rather than passing — stops the workflow here, so
|
|
30
|
+
# nothing is deployed. A gate job running BESIDE the deploy would go red after
|
|
31
|
+
# the thing had already shipped, which is a report.
|
|
32
|
+
pre_deploy_gates:
|
|
33
|
+
name: 🚦 Pre-Deploy Gates
|
|
34
|
+
uses: CodySwannGT/lisa/.github/workflows/gates.yml@main
|
|
35
|
+
with:
|
|
36
|
+
moment: pre-deploy:${{ github.ref_name }}
|
|
37
|
+
node_version: '22.21.1'
|
|
38
|
+
package_manager: 'bun'
|
|
39
|
+
secrets: inherit
|
|
40
|
+
|
|
20
41
|
deploy:
|
|
21
42
|
name: Build, deploy, and verify
|
|
43
|
+
needs: [pre_deploy_gates]
|
|
22
44
|
runs-on: ubuntu-latest
|
|
23
45
|
timeout-minutes: 30
|
|
24
46
|
env:
|
|
@@ -83,3 +105,18 @@ jobs:
|
|
|
83
105
|
else
|
|
84
106
|
echo "No verify script defined; add one to smoke-test the deployed Harper endpoint."
|
|
85
107
|
fi
|
|
108
|
+
|
|
109
|
+
# ── Post-deploy gates ─────────────────────────────────────────────────────
|
|
110
|
+
# Proves a property of what is now live. A red here does not un-ship the
|
|
111
|
+
# deploy; it names the gate that does not hold so an operator can act on it,
|
|
112
|
+
# which is the difference between a post-deploy gate and a post-deploy log.
|
|
113
|
+
post_deploy_gates:
|
|
114
|
+
name: 🚦 Post-Deploy Gates
|
|
115
|
+
uses: CodySwannGT/lisa/.github/workflows/gates.yml@main
|
|
116
|
+
needs: [deploy]
|
|
117
|
+
if: ${{ always() && !cancelled() && needs.deploy.result == 'success' }}
|
|
118
|
+
with:
|
|
119
|
+
moment: post-deploy:${{ github.ref_name }}
|
|
120
|
+
node_version: '22.21.1'
|
|
121
|
+
package_manager: 'bun'
|
|
122
|
+
secrets: inherit
|
|
@@ -81,11 +81,37 @@ jobs:
|
|
|
81
81
|
echo "approval_environment=$APPROVAL_ENV" >> $GITHUB_OUTPUT
|
|
82
82
|
echo "require_approval=$REQUIRE" >> $GITHUB_OUTPUT
|
|
83
83
|
|
|
84
|
+
# ── Pre-deploy gates ──────────────────────────────────────────────────────
|
|
85
|
+
# Resolves `pre-deploy:<environment>` from the `gates` block of
|
|
86
|
+
# .lisa.config.json and runs whatever is declared there, BEFORE the release.
|
|
87
|
+
#
|
|
88
|
+
# This is what makes a declaration like
|
|
89
|
+
#
|
|
90
|
+
# "runtime-web-vulnerability": { "pre-deploy:production": "required" }
|
|
91
|
+
# "load-capacity": { "pre-deploy:production": "required" }
|
|
92
|
+
#
|
|
93
|
+
# mean something. A required gate that fails — or that resolves to no prover at
|
|
94
|
+
# all, which is UNPROVABLE rather than passing — stops the workflow here, so
|
|
95
|
+
# the release is never cut. A gate job running BESIDE the deploy would go red
|
|
96
|
+
# after the tag and the artefacts had already shipped, which is a report.
|
|
97
|
+
#
|
|
98
|
+
# A project that declares nothing at this moment gets a green job that ran no
|
|
99
|
+
# gates and says so, and the deploy behaves exactly as it did before.
|
|
100
|
+
pre_deploy_gates:
|
|
101
|
+
name: 🚦 Pre-Deploy Gates
|
|
102
|
+
uses: CodySwannGT/lisa/.github/workflows/gates.yml@main
|
|
103
|
+
needs: [determine_environment]
|
|
104
|
+
with:
|
|
105
|
+
moment: pre-deploy:${{ needs.determine_environment.outputs.environment }}
|
|
106
|
+
node_version: '22.21.1'
|
|
107
|
+
package_manager: 'bun'
|
|
108
|
+
secrets: inherit
|
|
109
|
+
|
|
84
110
|
# Step 1: Create a release
|
|
85
111
|
release:
|
|
86
112
|
name: 📦 Release
|
|
87
113
|
uses: CodySwannGT/lisa/.github/workflows/release.yml@main
|
|
88
|
-
needs: [determine_environment]
|
|
114
|
+
needs: [determine_environment, pre_deploy_gates]
|
|
89
115
|
permissions:
|
|
90
116
|
contents: write
|
|
91
117
|
pull-requests: read
|
|
@@ -391,6 +417,23 @@ jobs:
|
|
|
391
417
|
- name: 📢 Notify on success
|
|
392
418
|
run: echo "Successfully deployed version ${{ needs.release.outputs.version }} to ${{ needs.determine_environment.outputs.environment }}"
|
|
393
419
|
|
|
420
|
+
# ── Post-deploy gates ─────────────────────────────────────────────────────
|
|
421
|
+
# Proves a property of what is now live — a DAST baseline against the running
|
|
422
|
+
# service, a load profile against the deployed stack. A red here does not
|
|
423
|
+
# un-ship the release; it names the gate that does not hold so an operator can
|
|
424
|
+
# act on it, which is the difference between a post-deploy gate and a
|
|
425
|
+
# post-deploy log.
|
|
426
|
+
post_deploy_gates:
|
|
427
|
+
name: 🚦 Post-Deploy Gates
|
|
428
|
+
uses: CodySwannGT/lisa/.github/workflows/gates.yml@main
|
|
429
|
+
needs: [determine_environment, deploy]
|
|
430
|
+
if: ${{ always() && !cancelled() && needs.deploy.result == 'success' }}
|
|
431
|
+
with:
|
|
432
|
+
moment: post-deploy:${{ needs.determine_environment.outputs.environment }}
|
|
433
|
+
node_version: '22.21.1'
|
|
434
|
+
package_manager: 'bun'
|
|
435
|
+
secrets: inherit
|
|
436
|
+
|
|
394
437
|
# Step 3: Load testing for staging deployments
|
|
395
438
|
load_testing:
|
|
396
439
|
name: 🔍 Load Testing
|
package/package.json
CHANGED
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
"zod-validation-error": "^4.0.0"
|
|
144
144
|
},
|
|
145
145
|
"name": "@codyswann/lisa",
|
|
146
|
-
"version": "3.
|
|
146
|
+
"version": "3.70.0",
|
|
147
147
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
148
148
|
"main": "dist/index.js",
|
|
149
149
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.70.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": "3.
|
|
3
|
+
"version": "3.70.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-openclaw",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.70.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": "3.
|
|
3
|
+
"version": "3.70.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": "3.
|
|
3
|
+
"version": "3.70.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"
|