@codyswann/lisa 4.74.4 → 4.74.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.
- package/all/copy-overwrite/scripts/lib/npm-update-gate.mjs +3 -0
- package/all/copy-overwrite/scripts/lib/npm-update-invariants.mjs +71 -1
- package/all/copy-overwrite/scripts/lib/npm-update-native-process.mjs +24 -4
- package/all/copy-overwrite/scripts/npm-updater-helper-graph.json +3 -3
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +12 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.js +6 -6
- package/package.json +5 -5
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-github-repo/SKILL.md +1 -0
- package/plugins/lisa/skills/lisa-setup-github-repo/SKILL.md +1 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-github-repo/SKILL.md +1 -0
- 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-copilot/skills/lisa-setup-github-repo/SKILL.md +1 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-setup-github-repo/SKILL.md +1 -0
- 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/plugins/src/base/skills/lisa-setup-github-repo/SKILL.md +1 -0
- package/scripts/lisa-github-rulesets.sh +219 -0
|
@@ -45,7 +45,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
45
45
|
"all/copy-overwrite/scripts/lib/npm-update-gate-hooks.mjs": "3ef6fe8fc458c6888afc511e6f246b78facbea8643a5abd572b8ba7303912c5c",
|
|
46
46
|
"all/copy-overwrite/scripts/lib/npm-update-gate-install.mjs": "393b12abc3f5a714ce4006222e1c005e1be0cd0e64ac5111977d4db3f8ba7636",
|
|
47
47
|
"all/copy-overwrite/scripts/lib/npm-update-gate-proof.mjs": "7d7ded577a86d2df88fa826d9fe325b0a378db97120f41acba6c9b81cade949f",
|
|
48
|
-
"all/copy-overwrite/scripts/lib/npm-update-gate.mjs": "
|
|
48
|
+
"all/copy-overwrite/scripts/lib/npm-update-gate.mjs": "183585f845688e10a5b6ce1b5567fef5c316f8596d6ea70da69b9a039c1399ed",
|
|
49
49
|
"all/copy-overwrite/scripts/lib/npm-update-gh-dispatch.mjs": "d78a187dfeb31aa8f5e7ecb38b5902dd4e034d52dca1527ac115dc591de90997",
|
|
50
50
|
"all/copy-overwrite/scripts/lib/npm-update-gh-grants.mjs": "1ed12369027e4c25a54e25c119be6d1430baffae79370deba01e2b462e430c18",
|
|
51
51
|
"all/copy-overwrite/scripts/lib/npm-update-gh-requests.mjs": "54604122ee71c3597c01890499f0cba5872f7c4d807c437b5161f52f9b5133be",
|
|
@@ -60,11 +60,11 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
60
60
|
"all/copy-overwrite/scripts/lib/npm-update-hosted-gate.mjs": "b9ced911733ab9c6afd06c9451bb9d9cc9363e0a6fd1059ef659aba0107065cc",
|
|
61
61
|
"all/copy-overwrite/scripts/lib/npm-update-hosted-hook.mjs": "0e9cf3bf55b9b979d22553f01ad4d17c0a85058b2b87657bd3126b9034e9f8c1",
|
|
62
62
|
"all/copy-overwrite/scripts/lib/npm-update-hosted-scope.mjs": "bf046814b607f5449f80b18081b3a42a97a9a96d54fae302661471e166797459",
|
|
63
|
-
"all/copy-overwrite/scripts/lib/npm-update-invariants.mjs": "
|
|
63
|
+
"all/copy-overwrite/scripts/lib/npm-update-invariants.mjs": "49fdc794312fe546014a5a4c5c4804da758832a912721733fecec8497aa548aa",
|
|
64
64
|
"all/copy-overwrite/scripts/lib/npm-update-isolation.mjs": "66ec5390a0af0e016880c781eae47b8c60d6fca0c79ef500e1926e42eae043bf",
|
|
65
65
|
"all/copy-overwrite/scripts/lib/npm-update-leaf-contract.mjs": "9a68e50c354cac20fec847e02668c153f0f3c5783faaa29f51f2b4adf93ba99a",
|
|
66
66
|
"all/copy-overwrite/scripts/lib/npm-update-leaf.mjs": "6638fa03bb9bb44bd84fc9b4a91d8a334030c108e2759a2a673000dcbfbfe637",
|
|
67
|
-
"all/copy-overwrite/scripts/lib/npm-update-native-process.mjs": "
|
|
67
|
+
"all/copy-overwrite/scripts/lib/npm-update-native-process.mjs": "ab8dea4348ce670814fe446755876331cef0f5769b6d9140e726081641f04326",
|
|
68
68
|
"all/copy-overwrite/scripts/lib/npm-update-npm.mjs": "70c1b1be0acb1e0a503bddf400be32ca163847e439b192acd98a7d63c1927b15",
|
|
69
69
|
"all/copy-overwrite/scripts/lib/npm-update-object.mjs": "3116e80306bef9e40d02ea5f184f9ba7ce08f8ade9b3d405f9669d95b8f19fb7",
|
|
70
70
|
"all/copy-overwrite/scripts/lib/npm-update-orchestrator.mjs": "10324c66b1ac6ea26a1f5da11dfba945d96999b11babf2d23125e7e27d626202",
|
|
@@ -147,7 +147,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
147
147
|
"all/copy-overwrite/scripts/npm-updater-gate-runtime.json": "5c2af03360bfd59df26934ea0a2e47baa3999cbaa0ad3a9a03dd74575589218d",
|
|
148
148
|
"all/copy-overwrite/scripts/npm-updater-gate-supervisor.c": "e7d6ed62ce27a466a097c879372b8c2ec18731371e682d04542de4d83f3daa00",
|
|
149
149
|
"all/copy-overwrite/scripts/npm-updater-gate.Dockerfile": "c1f56c254f188d394fea0c0b9995ebf185c280aa1079233443c1eed1425d0239",
|
|
150
|
-
"all/copy-overwrite/scripts/npm-updater-helper-graph.json": "
|
|
150
|
+
"all/copy-overwrite/scripts/npm-updater-helper-graph.json": "d0ef0fa86b289ad5a2cda82572e85ec578c31b37140eff1160344a4e71eab98c",
|
|
151
151
|
"all/copy-overwrite/scripts/schemas/lisa-command-envelope.v1.schema.json": "d153b7c2953a30f180e38f09e98240c63327f5196eeba9bdf545e5a1f125a879",
|
|
152
152
|
"all/copy-overwrite/scripts/schemas/lisa-state-contract.v1.schema.json": "6b7afe4ffeba8aaa53871d8855172f7eacde05953b1321145218ec638ff5c1c4",
|
|
153
153
|
"all/copy-overwrite/scripts/threshold-ratchet-compare.mjs": "761a0f32ab4bc138b3ed216f0edc9ad28c36783ccd3b62fbd57ef1b7fdc32681",
|
|
@@ -815,7 +815,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
815
815
|
"plugins/src/base/skills/lisa-setup-automations/SKILL.md": "520dbf5c1735c038ef6607eafefb6914e4e24a434c6abb2b057c6065efbf6bb6",
|
|
816
816
|
"plugins/src/base/skills/lisa-setup-automations/scripts/generate-workflow.mjs": "c13e287c8beb6f847b03c93298b8a3fb211e65ce897e63692933377f8c4303f1",
|
|
817
817
|
"plugins/src/base/skills/lisa-setup-confluence/SKILL.md": "e92d762dbdaeae671c3e52dfe8e10d40a10b606b5e050589181a3898649faedc",
|
|
818
|
-
"plugins/src/base/skills/lisa-setup-github-repo/SKILL.md": "
|
|
818
|
+
"plugins/src/base/skills/lisa-setup-github-repo/SKILL.md": "bc9232d0609a27c66a1267221f6da33b50850145532da760f5501d37addd2cb0",
|
|
819
819
|
"plugins/src/base/skills/lisa-setup-github/SKILL.md": "75435e81130abd21c678d302b7a220da95a19868d122ca93168278628b200666",
|
|
820
820
|
"plugins/src/base/skills/lisa-setup-jira/SKILL.md": "261acaeb2923cc9238f468dcf986a0e1323a67e1e51d175b2c1b700dacab2fb8",
|
|
821
821
|
"plugins/src/base/skills/lisa-setup-kane/SKILL.md": "fe50024a4f896af01716f2435f57227b1f8de61803e80bf3e3c3247ec179b103",
|
|
@@ -1327,7 +1327,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1327
1327
|
"scripts/lisa-github-environments.sh": "0a76e92f108519abaf3e29991299ec3b0db20ea533e69e6d2a53d802dba9c370",
|
|
1328
1328
|
"scripts/lisa-github-repo-settings.sh": "4afbccdfb08c62ba13afee42ec8561a28facf87c61f6f4b80000115328364d54",
|
|
1329
1329
|
"scripts/lisa-github-repo-setup.sh": "4717873e339b3e615d0bf22b4cb290b3575df5aba8c3639dc0d3bebc23abf651",
|
|
1330
|
-
"scripts/lisa-github-rulesets.sh": "
|
|
1330
|
+
"scripts/lisa-github-rulesets.sh": "183e3f80b09c3189c131e5b31b21d9349c17d1eded5d42742f49e91f058c75de",
|
|
1331
1331
|
"scripts/lisa-mutation.mjs": "74603e61f493d700318feb862f61ee1653430700b5edf232e70241ccdedac587",
|
|
1332
1332
|
"scripts/lisa-remote-env/materialized-env-authority.mjs": "2844475d7b407c4dccce4e0f500a3aaf5412f9f315c9173dd0ca22dd24497049",
|
|
1333
1333
|
"scripts/lisa-remote-env/session-start.sh": "2b40873f39b38e00b50285ca2c4c705ea018285fa457c3e1a985adbeaad6c26b",
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"lisa-test-run": "node scripts/lib/worktree-dependencies.mjs && bun run build && node dist/cli/lisa-test-run.js --profile lisa",
|
|
7
7
|
"test:integration": "node scripts/lib/worktree-dependencies.mjs && $npm_execpath run lisa-test-run -- --adapter vitest -- vitest run tests/integration",
|
|
8
8
|
"test:integration:push": "node scripts/lib/worktree-dependencies.mjs && $npm_execpath run lisa-test-run -- --adapter vitest -- vitest run tests/integration --exclude='**/mutation-gate-bite.test.ts' --exclude='**/mutation-gate-diff-bite.test.ts' --exclude='**/mutation-sigterm-control.test.ts' --exclude='**/mutation-performance-fixture.test.ts' --exclude='**/mutation-performance-packed-apply.test.ts' --exclude='**/mutation-source-roots.test.ts'",
|
|
9
|
-
"postinstall": "bash ./scripts/install-claude-plugins.sh || true; node ./scripts/install-generated-artifact-merge-driver.mjs || true; [ ! -f tsconfig.json ] || tsc -p tsconfig.json || true",
|
|
9
|
+
"postinstall": "npm_lifecycle_event=postinstall bash ./scripts/install-claude-plugins.sh || true; node ./scripts/install-generated-artifact-merge-driver.mjs || true; [ ! -f tsconfig.json ] || tsc -p tsconfig.json || true",
|
|
10
10
|
"pretest": "bun run build",
|
|
11
11
|
"test": "node scripts/lib/worktree-dependencies.mjs && $npm_execpath run lisa-test-run -- --adapter vitest -- vitest run",
|
|
12
12
|
"test:unit": "node scripts/lib/worktree-dependencies.mjs && $npm_execpath run lisa-test-run -- --adapter vitest -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
"qs": "^6.16.0"
|
|
190
190
|
},
|
|
191
191
|
"name": "@codyswann/lisa",
|
|
192
|
-
"version": "4.74.
|
|
192
|
+
"version": "4.74.6",
|
|
193
193
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
194
194
|
"main": "dist/index.js",
|
|
195
195
|
"exports": {
|
|
@@ -345,7 +345,7 @@
|
|
|
345
345
|
"test": "tests"
|
|
346
346
|
},
|
|
347
347
|
"types": "./dist/index.d.ts",
|
|
348
|
-
"lisaReleaseCommit": "
|
|
349
|
-
"gitHead": "
|
|
350
|
-
"lisaReleaseTag": "v4.74.
|
|
348
|
+
"lisaReleaseCommit": "00b41544bab8ef052550f94becac99518ccecb32",
|
|
349
|
+
"gitHead": "00b41544bab8ef052550f94becac99518ccecb32",
|
|
350
|
+
"lisaReleaseTag": "v4.74.6"
|
|
351
351
|
}
|
|
@@ -32,6 +32,7 @@ Apply the fleet-standard GitHub repository configuration to this project's repo.
|
|
|
32
32
|
- Repos without `.github/workflows/` get only app-based required checks — an Actions check that can never report would block every PR forever
|
|
33
33
|
- **A template change never reaches an already-configured repo on its own** — re-running this step is the migration. Each context the run newly makes blocking is printed as `+ now required: <context>`, and a ruleset that already satisfies its template reports `nothing to do` and is not sent at all, so a second run is visibly a no-op
|
|
34
34
|
- **Declaring a ruleset's required list makes it declarative.** By default a live-only required context is preserved, never dropped — including on the generated `base`, which gets no exemption: removing a protection by default, on a script invoked with `--yes`, is not something an operator ever opted into. Name a ruleset in `github.rulesets.requiredChecks` and the live list stops being unioned in, so removing an entry actually stops requiring it — printed as `- no longer required: <context>`. Dropping an `await` without that opt-in leaves the live context in place; `lisa-reconcile-policy.mjs` then reports it as EXTRA, and `--prune` is where the removal is asked for. The retired `addRequiredChecks` is still read and could only ever add
|
|
35
|
+
- **Bypass actors follow the same contract.** By default a live bypass actor the template does not name (e.g. an admin `RepositoryRole` someone added on purpose) is kept, the template's actors are added beside it, and a live actor's `bypass_mode` is never widened back to the template's. Declaring a ruleset's list — `github.rulesets.bypassActors.<ruleset name>` for a template ruleset, `policy.ruleset.bypass_actors` for the generated `base` — makes it exactly that list, which is the only way to remove one. Every change is printed by name, dry run included: `+ bypass actor added: <type> [<id>] (<mode>)`, a warning `- bypass actor removed: …`, and `~ bypass actor mode changed: <type> [<id>] (<old> -> <new>)`
|
|
35
36
|
3. **Deploy key** (`scripts/setup-deploy-key.sh --yes`) — write-access deploy key + `DEPLOY_KEY` secret, skipped when already configured. The `base` ruleset's `DeployKey: always` bypass is what lets CI version-bump pushes through protected branches.
|
|
36
37
|
4. **Deployment environments** (`scripts/lisa-github-environments.sh`) — entirely optional; only runs when `.lisa.config.json` declares environments:
|
|
37
38
|
```json
|
|
@@ -30,6 +30,7 @@ Apply the fleet-standard GitHub repository configuration to this project's repo.
|
|
|
30
30
|
- Repos without `.github/workflows/` get only app-based required checks — an Actions check that can never report would block every PR forever
|
|
31
31
|
- **A template change never reaches an already-configured repo on its own** — re-running this step is the migration. Each context the run newly makes blocking is printed as `+ now required: <context>`, and a ruleset that already satisfies its template reports `nothing to do` and is not sent at all, so a second run is visibly a no-op
|
|
32
32
|
- **Declaring a ruleset's required list makes it declarative.** By default a live-only required context is preserved, never dropped — including on the generated `base`, which gets no exemption: removing a protection by default, on a script invoked with `--yes`, is not something an operator ever opted into. Name a ruleset in `github.rulesets.requiredChecks` and the live list stops being unioned in, so removing an entry actually stops requiring it — printed as `- no longer required: <context>`. Dropping an `await` without that opt-in leaves the live context in place; `lisa-reconcile-policy.mjs` then reports it as EXTRA, and `--prune` is where the removal is asked for. The retired `addRequiredChecks` is still read and could only ever add
|
|
33
|
+
- **Bypass actors follow the same contract.** By default a live bypass actor the template does not name (e.g. an admin `RepositoryRole` someone added on purpose) is kept, the template's actors are added beside it, and a live actor's `bypass_mode` is never widened back to the template's. Declaring a ruleset's list — `github.rulesets.bypassActors.<ruleset name>` for a template ruleset, `policy.ruleset.bypass_actors` for the generated `base` — makes it exactly that list, which is the only way to remove one. Every change is printed by name, dry run included: `+ bypass actor added: <type> [<id>] (<mode>)`, a warning `- bypass actor removed: …`, and `~ bypass actor mode changed: <type> [<id>] (<old> -> <new>)`
|
|
33
34
|
3. **Deploy key** (`scripts/setup-deploy-key.sh --yes`) — write-access deploy key + `DEPLOY_KEY` secret, skipped when already configured. The `base` ruleset's `DeployKey: always` bypass is what lets CI version-bump pushes through protected branches.
|
|
34
35
|
4. **Deployment environments** (`scripts/lisa-github-environments.sh`) — entirely optional; only runs when `.lisa.config.json` declares environments:
|
|
35
36
|
```json
|
|
@@ -30,6 +30,7 @@ Apply the fleet-standard GitHub repository configuration to this project's repo.
|
|
|
30
30
|
- Repos without `.github/workflows/` get only app-based required checks — an Actions check that can never report would block every PR forever
|
|
31
31
|
- **A template change never reaches an already-configured repo on its own** — re-running this step is the migration. Each context the run newly makes blocking is printed as `+ now required: <context>`, and a ruleset that already satisfies its template reports `nothing to do` and is not sent at all, so a second run is visibly a no-op
|
|
32
32
|
- **Declaring a ruleset's required list makes it declarative.** By default a live-only required context is preserved, never dropped — including on the generated `base`, which gets no exemption: removing a protection by default, on a script invoked with `--yes`, is not something an operator ever opted into. Name a ruleset in `github.rulesets.requiredChecks` and the live list stops being unioned in, so removing an entry actually stops requiring it — printed as `- no longer required: <context>`. Dropping an `await` without that opt-in leaves the live context in place; `lisa-reconcile-policy.mjs` then reports it as EXTRA, and `--prune` is where the removal is asked for. The retired `addRequiredChecks` is still read and could only ever add
|
|
33
|
+
- **Bypass actors follow the same contract.** By default a live bypass actor the template does not name (e.g. an admin `RepositoryRole` someone added on purpose) is kept, the template's actors are added beside it, and a live actor's `bypass_mode` is never widened back to the template's. Declaring a ruleset's list — `github.rulesets.bypassActors.<ruleset name>` for a template ruleset, `policy.ruleset.bypass_actors` for the generated `base` — makes it exactly that list, which is the only way to remove one. Every change is printed by name, dry run included: `+ bypass actor added: <type> [<id>] (<mode>)`, a warning `- bypass actor removed: …`, and `~ bypass actor mode changed: <type> [<id>] (<old> -> <new>)`
|
|
33
34
|
3. **Deploy key** (`scripts/setup-deploy-key.sh --yes`) — write-access deploy key + `DEPLOY_KEY` secret, skipped when already configured. The `base` ruleset's `DeployKey: always` bypass is what lets CI version-bump pushes through protected branches.
|
|
34
35
|
4. **Deployment environments** (`scripts/lisa-github-environments.sh`) — entirely optional; only runs when `.lisa.config.json` declares environments:
|
|
35
36
|
```json
|
|
@@ -30,6 +30,7 @@ Apply the fleet-standard GitHub repository configuration to this project's repo.
|
|
|
30
30
|
- Repos without `.github/workflows/` get only app-based required checks — an Actions check that can never report would block every PR forever
|
|
31
31
|
- **A template change never reaches an already-configured repo on its own** — re-running this step is the migration. Each context the run newly makes blocking is printed as `+ now required: <context>`, and a ruleset that already satisfies its template reports `nothing to do` and is not sent at all, so a second run is visibly a no-op
|
|
32
32
|
- **Declaring a ruleset's required list makes it declarative.** By default a live-only required context is preserved, never dropped — including on the generated `base`, which gets no exemption: removing a protection by default, on a script invoked with `--yes`, is not something an operator ever opted into. Name a ruleset in `github.rulesets.requiredChecks` and the live list stops being unioned in, so removing an entry actually stops requiring it — printed as `- no longer required: <context>`. Dropping an `await` without that opt-in leaves the live context in place; `lisa-reconcile-policy.mjs` then reports it as EXTRA, and `--prune` is where the removal is asked for. The retired `addRequiredChecks` is still read and could only ever add
|
|
33
|
+
- **Bypass actors follow the same contract.** By default a live bypass actor the template does not name (e.g. an admin `RepositoryRole` someone added on purpose) is kept, the template's actors are added beside it, and a live actor's `bypass_mode` is never widened back to the template's. Declaring a ruleset's list — `github.rulesets.bypassActors.<ruleset name>` for a template ruleset, `policy.ruleset.bypass_actors` for the generated `base` — makes it exactly that list, which is the only way to remove one. Every change is printed by name, dry run included: `+ bypass actor added: <type> [<id>] (<mode>)`, a warning `- bypass actor removed: …`, and `~ bypass actor mode changed: <type> [<id>] (<old> -> <new>)`
|
|
33
34
|
3. **Deploy key** (`scripts/setup-deploy-key.sh --yes`) — write-access deploy key + `DEPLOY_KEY` secret, skipped when already configured. The `base` ruleset's `DeployKey: always` bypass is what lets CI version-bump pushes through protected branches.
|
|
34
35
|
4. **Deployment environments** (`scripts/lisa-github-environments.sh`) — entirely optional; only runs when `.lisa.config.json` declares environments:
|
|
35
36
|
```json
|
|
@@ -30,6 +30,7 @@ Apply the fleet-standard GitHub repository configuration to this project's repo.
|
|
|
30
30
|
- Repos without `.github/workflows/` get only app-based required checks — an Actions check that can never report would block every PR forever
|
|
31
31
|
- **A template change never reaches an already-configured repo on its own** — re-running this step is the migration. Each context the run newly makes blocking is printed as `+ now required: <context>`, and a ruleset that already satisfies its template reports `nothing to do` and is not sent at all, so a second run is visibly a no-op
|
|
32
32
|
- **Declaring a ruleset's required list makes it declarative.** By default a live-only required context is preserved, never dropped — including on the generated `base`, which gets no exemption: removing a protection by default, on a script invoked with `--yes`, is not something an operator ever opted into. Name a ruleset in `github.rulesets.requiredChecks` and the live list stops being unioned in, so removing an entry actually stops requiring it — printed as `- no longer required: <context>`. Dropping an `await` without that opt-in leaves the live context in place; `lisa-reconcile-policy.mjs` then reports it as EXTRA, and `--prune` is where the removal is asked for. The retired `addRequiredChecks` is still read and could only ever add
|
|
33
|
+
- **Bypass actors follow the same contract.** By default a live bypass actor the template does not name (e.g. an admin `RepositoryRole` someone added on purpose) is kept, the template's actors are added beside it, and a live actor's `bypass_mode` is never widened back to the template's. Declaring a ruleset's list — `github.rulesets.bypassActors.<ruleset name>` for a template ruleset, `policy.ruleset.bypass_actors` for the generated `base` — makes it exactly that list, which is the only way to remove one. Every change is printed by name, dry run included: `+ bypass actor added: <type> [<id>] (<mode>)`, a warning `- bypass actor removed: …`, and `~ bypass actor mode changed: <type> [<id>] (<old> -> <new>)`
|
|
33
34
|
3. **Deploy key** (`scripts/setup-deploy-key.sh --yes`) — write-access deploy key + `DEPLOY_KEY` secret, skipped when already configured. The `base` ruleset's `DeployKey: always` bypass is what lets CI version-bump pushes through protected branches.
|
|
34
35
|
4. **Deployment environments** (`scripts/lisa-github-environments.sh`) — entirely optional; only runs when `.lisa.config.json` declares environments:
|
|
35
36
|
```json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.74.
|
|
3
|
+
"version": "4.74.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.74.
|
|
3
|
+
"version": "4.74.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.74.
|
|
3
|
+
"version": "4.74.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.74.
|
|
3
|
+
"version": "4.74.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.74.
|
|
3
|
+
"version": "4.74.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"
|