@codyswann/lisa 2.155.1 → 2.155.3
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/expo/package-lisa/package.lisa.json +1 -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/rules/reference/config-resolution.md +15 -6
- package/plugins/lisa/skills/doctor/SKILL.md +6 -2
- package/plugins/lisa/skills/sync-down/SKILL.md +9 -4
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/doctor/SKILL.md +6 -2
- package/plugins/lisa-agy/skills/sync-down/SKILL.md +9 -4
- 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/rules/reference/config-resolution.md +15 -6
- package/plugins/lisa-copilot/skills/doctor/SKILL.md +6 -2
- package/plugins/lisa-copilot/skills/sync-down/SKILL.md +9 -4
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +15 -6
- package/plugins/lisa-cursor/skills/doctor/SKILL.md +6 -2
- package/plugins/lisa-cursor/skills/sync-down/SKILL.md +9 -4
- 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-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/rules/reference/config-resolution.md +15 -6
- package/plugins/src/base/skills/doctor/SKILL.md +6 -2
- package/plugins/src/base/skills/sync-down/SKILL.md +9 -4
- package/scripts/migrate-deploy-order.sh +3 -1
package/package.json
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"lodash": ">=4.18.1"
|
|
85
85
|
},
|
|
86
86
|
"name": "@codyswann/lisa",
|
|
87
|
-
"version": "2.155.
|
|
87
|
+
"version": "2.155.3",
|
|
88
88
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
89
89
|
"main": "dist/index.js",
|
|
90
90
|
"exports": {
|
|
@@ -404,9 +404,15 @@ Rules:
|
|
|
404
404
|
|
|
405
405
|
- **Single-environment projects** (one entry in `deploy.branches`) may omit
|
|
406
406
|
`deploy.order`; the derived chain is empty and the back-sync no-ops.
|
|
407
|
-
- **
|
|
408
|
-
|
|
409
|
-
|
|
407
|
+
- **Projects whose environments all map to the same branch** (e.g.
|
|
408
|
+
`dev`/`staging`/`production` all → `main`) may also omit `deploy.order`: the
|
|
409
|
+
branches resolve to a single distinct branch, so there is nothing to back-sync
|
|
410
|
+
and the derived chain is the empty no-op. `deploy.order` is only required when
|
|
411
|
+
`deploy.branches` resolves to **more than one distinct branch**.
|
|
412
|
+
- **Multi-branch projects MUST set `deploy.order`** for config-driven back-sync.
|
|
413
|
+
If `deploy.branches` resolves to more than one distinct branch and `deploy.order`
|
|
414
|
+
is absent, the Action fails rather than guessing the rank (or the workflow
|
|
415
|
+
wrapper must pass an explicit `chain`, which always wins).
|
|
410
416
|
- The env-name set of `deploy.order` and `deploy.branches` **must match exactly**
|
|
411
417
|
— every env in one appears in the other. A mismatch is a config error.
|
|
412
418
|
|
|
@@ -475,9 +481,12 @@ Doctor must validate config in three layers:
|
|
|
475
481
|
and `deploy.branches`.
|
|
476
482
|
|
|
477
483
|
4. **Deploy env-order correctness**
|
|
478
|
-
- When `deploy.branches`
|
|
479
|
-
config-driven back-sync cannot derive a chain without the ranking (the wrapper
|
|
480
|
-
`deploy.order` or pass an explicit `chain`).
|
|
484
|
+
- When `deploy.branches` resolves to more than one **distinct** branch but `deploy.order` is
|
|
485
|
+
absent, `WARN`: config-driven back-sync cannot derive a chain without the ranking (the wrapper
|
|
486
|
+
must add `deploy.order` or pass an explicit `chain`).
|
|
487
|
+
- When `deploy.branches` defines multiple environments that all map to the **same** branch (e.g.
|
|
488
|
+
`dev`/`staging`/`production` all → `main`), `deploy.order` is **not** required — the chain is the
|
|
489
|
+
empty no-op. Do not `WARN` in this case.
|
|
481
490
|
- When `deploy.order` is present but its env names do not exactly match the `deploy.branches`
|
|
482
491
|
keys, `FAIL` — the derived sync-down chain would be wrong or empty.
|
|
483
492
|
|
|
@@ -104,8 +104,12 @@ this order:
|
|
|
104
104
|
6. **Deploy env-order audit** (only when `deploy.branches` is present)
|
|
105
105
|
- `PASS` (or skip) when `deploy.branches` defines a single environment — `deploy.order` is
|
|
106
106
|
optional and the back-sync chain is empty.
|
|
107
|
-
- `
|
|
108
|
-
|
|
107
|
+
- `PASS` (or skip) when `deploy.branches` defines multiple environments that all map to the
|
|
108
|
+
**same** branch (e.g. `dev`/`staging`/`production` all → `main`). The branches resolve to a
|
|
109
|
+
single distinct branch, so there is nothing to back-sync, the chain is the empty no-op, and
|
|
110
|
+
`deploy.order` is not required. Do not WARN.
|
|
111
|
+
- `WARN` when `deploy.branches` resolves to **more than one distinct** branch but `deploy.order`
|
|
112
|
+
is absent. Config-driven back-sync (`reusable-claude-sync-down-branches.yml`) cannot derive a
|
|
109
113
|
source→target chain without the env ranking; the repo must either add `deploy.order`
|
|
110
114
|
(low→high, e.g. `["dev","staging","production"]`) or pass an explicit `chain` in its
|
|
111
115
|
`claude-sync-down-branches.yml` wrapper. WARN not FAIL because the explicit-chain override is
|
|
@@ -44,6 +44,7 @@ CHAIN=$(jq -e -r '
|
|
|
44
44
|
| ($b | keys | sort) as $bk
|
|
45
45
|
| ($o | sort) as $ok
|
|
46
46
|
| if ($b | length) <= 1 then "{}"
|
|
47
|
+
elif (($b | [.[]] | unique | length) <= 1) then "{}"
|
|
47
48
|
elif ($o | length) == 0 then "ERR_NO_ORDER"
|
|
48
49
|
elif ($bk != $ok) then "ERR_MISMATCH"
|
|
49
50
|
else ($o | reverse) as $hl
|
|
@@ -53,12 +54,16 @@ CHAIN=$(jq -e -r '
|
|
|
53
54
|
' .lisa.config.json)
|
|
54
55
|
```
|
|
55
56
|
|
|
56
|
-
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments
|
|
57
|
-
`deploy.order` is missing. Tell the user to
|
|
58
|
-
`["dev","staging","production"]`). Do not
|
|
57
|
+
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments mapped to
|
|
58
|
+
more than one distinct branch but `deploy.order` is missing. Tell the user to
|
|
59
|
+
add `deploy.order` (low→high, e.g. `["dev","staging","production"]`). Do not
|
|
60
|
+
guess the ranking.
|
|
59
61
|
- `ERR_MISMATCH` → stop: `deploy.order` and `deploy.branches` name different
|
|
60
62
|
environments. They must match exactly.
|
|
61
|
-
- `{}`
|
|
63
|
+
- `{}` → nothing to sync; report and exit cleanly. This covers both a
|
|
64
|
+
single-environment project and a multi-environment project whose branches all
|
|
65
|
+
resolve to the **same** branch (e.g. dev/staging/production all → `main`), where
|
|
66
|
+
`deploy.order` is not required.
|
|
62
67
|
|
|
63
68
|
### 2. Resolve the source branch
|
|
64
69
|
|
|
@@ -104,8 +104,12 @@ this order:
|
|
|
104
104
|
6. **Deploy env-order audit** (only when `deploy.branches` is present)
|
|
105
105
|
- `PASS` (or skip) when `deploy.branches` defines a single environment — `deploy.order` is
|
|
106
106
|
optional and the back-sync chain is empty.
|
|
107
|
-
- `
|
|
108
|
-
|
|
107
|
+
- `PASS` (or skip) when `deploy.branches` defines multiple environments that all map to the
|
|
108
|
+
**same** branch (e.g. `dev`/`staging`/`production` all → `main`). The branches resolve to a
|
|
109
|
+
single distinct branch, so there is nothing to back-sync, the chain is the empty no-op, and
|
|
110
|
+
`deploy.order` is not required. Do not WARN.
|
|
111
|
+
- `WARN` when `deploy.branches` resolves to **more than one distinct** branch but `deploy.order`
|
|
112
|
+
is absent. Config-driven back-sync (`reusable-claude-sync-down-branches.yml`) cannot derive a
|
|
109
113
|
source→target chain without the env ranking; the repo must either add `deploy.order`
|
|
110
114
|
(low→high, e.g. `["dev","staging","production"]`) or pass an explicit `chain` in its
|
|
111
115
|
`claude-sync-down-branches.yml` wrapper. WARN not FAIL because the explicit-chain override is
|
|
@@ -44,6 +44,7 @@ CHAIN=$(jq -e -r '
|
|
|
44
44
|
| ($b | keys | sort) as $bk
|
|
45
45
|
| ($o | sort) as $ok
|
|
46
46
|
| if ($b | length) <= 1 then "{}"
|
|
47
|
+
elif (($b | [.[]] | unique | length) <= 1) then "{}"
|
|
47
48
|
elif ($o | length) == 0 then "ERR_NO_ORDER"
|
|
48
49
|
elif ($bk != $ok) then "ERR_MISMATCH"
|
|
49
50
|
else ($o | reverse) as $hl
|
|
@@ -53,12 +54,16 @@ CHAIN=$(jq -e -r '
|
|
|
53
54
|
' .lisa.config.json)
|
|
54
55
|
```
|
|
55
56
|
|
|
56
|
-
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments
|
|
57
|
-
`deploy.order` is missing. Tell the user to
|
|
58
|
-
`["dev","staging","production"]`). Do not
|
|
57
|
+
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments mapped to
|
|
58
|
+
more than one distinct branch but `deploy.order` is missing. Tell the user to
|
|
59
|
+
add `deploy.order` (low→high, e.g. `["dev","staging","production"]`). Do not
|
|
60
|
+
guess the ranking.
|
|
59
61
|
- `ERR_MISMATCH` → stop: `deploy.order` and `deploy.branches` name different
|
|
60
62
|
environments. They must match exactly.
|
|
61
|
-
- `{}`
|
|
63
|
+
- `{}` → nothing to sync; report and exit cleanly. This covers both a
|
|
64
|
+
single-environment project and a multi-environment project whose branches all
|
|
65
|
+
resolve to the **same** branch (e.g. dev/staging/production all → `main`), where
|
|
66
|
+
`deploy.order` is not required.
|
|
62
67
|
|
|
63
68
|
### 2. Resolve the source branch
|
|
64
69
|
|
|
@@ -404,9 +404,15 @@ Rules:
|
|
|
404
404
|
|
|
405
405
|
- **Single-environment projects** (one entry in `deploy.branches`) may omit
|
|
406
406
|
`deploy.order`; the derived chain is empty and the back-sync no-ops.
|
|
407
|
-
- **
|
|
408
|
-
|
|
409
|
-
|
|
407
|
+
- **Projects whose environments all map to the same branch** (e.g.
|
|
408
|
+
`dev`/`staging`/`production` all → `main`) may also omit `deploy.order`: the
|
|
409
|
+
branches resolve to a single distinct branch, so there is nothing to back-sync
|
|
410
|
+
and the derived chain is the empty no-op. `deploy.order` is only required when
|
|
411
|
+
`deploy.branches` resolves to **more than one distinct branch**.
|
|
412
|
+
- **Multi-branch projects MUST set `deploy.order`** for config-driven back-sync.
|
|
413
|
+
If `deploy.branches` resolves to more than one distinct branch and `deploy.order`
|
|
414
|
+
is absent, the Action fails rather than guessing the rank (or the workflow
|
|
415
|
+
wrapper must pass an explicit `chain`, which always wins).
|
|
410
416
|
- The env-name set of `deploy.order` and `deploy.branches` **must match exactly**
|
|
411
417
|
— every env in one appears in the other. A mismatch is a config error.
|
|
412
418
|
|
|
@@ -475,9 +481,12 @@ Doctor must validate config in three layers:
|
|
|
475
481
|
and `deploy.branches`.
|
|
476
482
|
|
|
477
483
|
4. **Deploy env-order correctness**
|
|
478
|
-
- When `deploy.branches`
|
|
479
|
-
config-driven back-sync cannot derive a chain without the ranking (the wrapper
|
|
480
|
-
`deploy.order` or pass an explicit `chain`).
|
|
484
|
+
- When `deploy.branches` resolves to more than one **distinct** branch but `deploy.order` is
|
|
485
|
+
absent, `WARN`: config-driven back-sync cannot derive a chain without the ranking (the wrapper
|
|
486
|
+
must add `deploy.order` or pass an explicit `chain`).
|
|
487
|
+
- When `deploy.branches` defines multiple environments that all map to the **same** branch (e.g.
|
|
488
|
+
`dev`/`staging`/`production` all → `main`), `deploy.order` is **not** required — the chain is the
|
|
489
|
+
empty no-op. Do not `WARN` in this case.
|
|
481
490
|
- When `deploy.order` is present but its env names do not exactly match the `deploy.branches`
|
|
482
491
|
keys, `FAIL` — the derived sync-down chain would be wrong or empty.
|
|
483
492
|
|
|
@@ -104,8 +104,12 @@ this order:
|
|
|
104
104
|
6. **Deploy env-order audit** (only when `deploy.branches` is present)
|
|
105
105
|
- `PASS` (or skip) when `deploy.branches` defines a single environment — `deploy.order` is
|
|
106
106
|
optional and the back-sync chain is empty.
|
|
107
|
-
- `
|
|
108
|
-
|
|
107
|
+
- `PASS` (or skip) when `deploy.branches` defines multiple environments that all map to the
|
|
108
|
+
**same** branch (e.g. `dev`/`staging`/`production` all → `main`). The branches resolve to a
|
|
109
|
+
single distinct branch, so there is nothing to back-sync, the chain is the empty no-op, and
|
|
110
|
+
`deploy.order` is not required. Do not WARN.
|
|
111
|
+
- `WARN` when `deploy.branches` resolves to **more than one distinct** branch but `deploy.order`
|
|
112
|
+
is absent. Config-driven back-sync (`reusable-claude-sync-down-branches.yml`) cannot derive a
|
|
109
113
|
source→target chain without the env ranking; the repo must either add `deploy.order`
|
|
110
114
|
(low→high, e.g. `["dev","staging","production"]`) or pass an explicit `chain` in its
|
|
111
115
|
`claude-sync-down-branches.yml` wrapper. WARN not FAIL because the explicit-chain override is
|
|
@@ -44,6 +44,7 @@ CHAIN=$(jq -e -r '
|
|
|
44
44
|
| ($b | keys | sort) as $bk
|
|
45
45
|
| ($o | sort) as $ok
|
|
46
46
|
| if ($b | length) <= 1 then "{}"
|
|
47
|
+
elif (($b | [.[]] | unique | length) <= 1) then "{}"
|
|
47
48
|
elif ($o | length) == 0 then "ERR_NO_ORDER"
|
|
48
49
|
elif ($bk != $ok) then "ERR_MISMATCH"
|
|
49
50
|
else ($o | reverse) as $hl
|
|
@@ -53,12 +54,16 @@ CHAIN=$(jq -e -r '
|
|
|
53
54
|
' .lisa.config.json)
|
|
54
55
|
```
|
|
55
56
|
|
|
56
|
-
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments
|
|
57
|
-
`deploy.order` is missing. Tell the user to
|
|
58
|
-
`["dev","staging","production"]`). Do not
|
|
57
|
+
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments mapped to
|
|
58
|
+
more than one distinct branch but `deploy.order` is missing. Tell the user to
|
|
59
|
+
add `deploy.order` (low→high, e.g. `["dev","staging","production"]`). Do not
|
|
60
|
+
guess the ranking.
|
|
59
61
|
- `ERR_MISMATCH` → stop: `deploy.order` and `deploy.branches` name different
|
|
60
62
|
environments. They must match exactly.
|
|
61
|
-
- `{}`
|
|
63
|
+
- `{}` → nothing to sync; report and exit cleanly. This covers both a
|
|
64
|
+
single-environment project and a multi-environment project whose branches all
|
|
65
|
+
resolve to the **same** branch (e.g. dev/staging/production all → `main`), where
|
|
66
|
+
`deploy.order` is not required.
|
|
62
67
|
|
|
63
68
|
### 2. Resolve the source branch
|
|
64
69
|
|
|
@@ -409,9 +409,15 @@ Rules:
|
|
|
409
409
|
|
|
410
410
|
- **Single-environment projects** (one entry in `deploy.branches`) may omit
|
|
411
411
|
`deploy.order`; the derived chain is empty and the back-sync no-ops.
|
|
412
|
-
- **
|
|
413
|
-
|
|
414
|
-
|
|
412
|
+
- **Projects whose environments all map to the same branch** (e.g.
|
|
413
|
+
`dev`/`staging`/`production` all → `main`) may also omit `deploy.order`: the
|
|
414
|
+
branches resolve to a single distinct branch, so there is nothing to back-sync
|
|
415
|
+
and the derived chain is the empty no-op. `deploy.order` is only required when
|
|
416
|
+
`deploy.branches` resolves to **more than one distinct branch**.
|
|
417
|
+
- **Multi-branch projects MUST set `deploy.order`** for config-driven back-sync.
|
|
418
|
+
If `deploy.branches` resolves to more than one distinct branch and `deploy.order`
|
|
419
|
+
is absent, the Action fails rather than guessing the rank (or the workflow
|
|
420
|
+
wrapper must pass an explicit `chain`, which always wins).
|
|
415
421
|
- The env-name set of `deploy.order` and `deploy.branches` **must match exactly**
|
|
416
422
|
— every env in one appears in the other. A mismatch is a config error.
|
|
417
423
|
|
|
@@ -480,9 +486,12 @@ Doctor must validate config in three layers:
|
|
|
480
486
|
and `deploy.branches`.
|
|
481
487
|
|
|
482
488
|
4. **Deploy env-order correctness**
|
|
483
|
-
- When `deploy.branches`
|
|
484
|
-
config-driven back-sync cannot derive a chain without the ranking (the wrapper
|
|
485
|
-
`deploy.order` or pass an explicit `chain`).
|
|
489
|
+
- When `deploy.branches` resolves to more than one **distinct** branch but `deploy.order` is
|
|
490
|
+
absent, `WARN`: config-driven back-sync cannot derive a chain without the ranking (the wrapper
|
|
491
|
+
must add `deploy.order` or pass an explicit `chain`).
|
|
492
|
+
- When `deploy.branches` defines multiple environments that all map to the **same** branch (e.g.
|
|
493
|
+
`dev`/`staging`/`production` all → `main`), `deploy.order` is **not** required — the chain is the
|
|
494
|
+
empty no-op. Do not `WARN` in this case.
|
|
486
495
|
- When `deploy.order` is present but its env names do not exactly match the `deploy.branches`
|
|
487
496
|
keys, `FAIL` — the derived sync-down chain would be wrong or empty.
|
|
488
497
|
|
|
@@ -104,8 +104,12 @@ this order:
|
|
|
104
104
|
6. **Deploy env-order audit** (only when `deploy.branches` is present)
|
|
105
105
|
- `PASS` (or skip) when `deploy.branches` defines a single environment — `deploy.order` is
|
|
106
106
|
optional and the back-sync chain is empty.
|
|
107
|
-
- `
|
|
108
|
-
|
|
107
|
+
- `PASS` (or skip) when `deploy.branches` defines multiple environments that all map to the
|
|
108
|
+
**same** branch (e.g. `dev`/`staging`/`production` all → `main`). The branches resolve to a
|
|
109
|
+
single distinct branch, so there is nothing to back-sync, the chain is the empty no-op, and
|
|
110
|
+
`deploy.order` is not required. Do not WARN.
|
|
111
|
+
- `WARN` when `deploy.branches` resolves to **more than one distinct** branch but `deploy.order`
|
|
112
|
+
is absent. Config-driven back-sync (`reusable-claude-sync-down-branches.yml`) cannot derive a
|
|
109
113
|
source→target chain without the env ranking; the repo must either add `deploy.order`
|
|
110
114
|
(low→high, e.g. `["dev","staging","production"]`) or pass an explicit `chain` in its
|
|
111
115
|
`claude-sync-down-branches.yml` wrapper. WARN not FAIL because the explicit-chain override is
|
|
@@ -44,6 +44,7 @@ CHAIN=$(jq -e -r '
|
|
|
44
44
|
| ($b | keys | sort) as $bk
|
|
45
45
|
| ($o | sort) as $ok
|
|
46
46
|
| if ($b | length) <= 1 then "{}"
|
|
47
|
+
elif (($b | [.[]] | unique | length) <= 1) then "{}"
|
|
47
48
|
elif ($o | length) == 0 then "ERR_NO_ORDER"
|
|
48
49
|
elif ($bk != $ok) then "ERR_MISMATCH"
|
|
49
50
|
else ($o | reverse) as $hl
|
|
@@ -53,12 +54,16 @@ CHAIN=$(jq -e -r '
|
|
|
53
54
|
' .lisa.config.json)
|
|
54
55
|
```
|
|
55
56
|
|
|
56
|
-
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments
|
|
57
|
-
`deploy.order` is missing. Tell the user to
|
|
58
|
-
`["dev","staging","production"]`). Do not
|
|
57
|
+
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments mapped to
|
|
58
|
+
more than one distinct branch but `deploy.order` is missing. Tell the user to
|
|
59
|
+
add `deploy.order` (low→high, e.g. `["dev","staging","production"]`). Do not
|
|
60
|
+
guess the ranking.
|
|
59
61
|
- `ERR_MISMATCH` → stop: `deploy.order` and `deploy.branches` name different
|
|
60
62
|
environments. They must match exactly.
|
|
61
|
-
- `{}`
|
|
63
|
+
- `{}` → nothing to sync; report and exit cleanly. This covers both a
|
|
64
|
+
single-environment project and a multi-environment project whose branches all
|
|
65
|
+
resolve to the **same** branch (e.g. dev/staging/production all → `main`), where
|
|
66
|
+
`deploy.order` is not required.
|
|
62
67
|
|
|
63
68
|
### 2. Resolve the source branch
|
|
64
69
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.155.
|
|
3
|
+
"version": "2.155.3",
|
|
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.155.
|
|
3
|
+
"version": "2.155.3",
|
|
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": "2.155.
|
|
3
|
+
"version": "2.155.3",
|
|
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.155.
|
|
3
|
+
"version": "2.155.3",
|
|
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.155.
|
|
3
|
+
"version": "2.155.3",
|
|
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"
|
|
@@ -404,9 +404,15 @@ Rules:
|
|
|
404
404
|
|
|
405
405
|
- **Single-environment projects** (one entry in `deploy.branches`) may omit
|
|
406
406
|
`deploy.order`; the derived chain is empty and the back-sync no-ops.
|
|
407
|
-
- **
|
|
408
|
-
|
|
409
|
-
|
|
407
|
+
- **Projects whose environments all map to the same branch** (e.g.
|
|
408
|
+
`dev`/`staging`/`production` all → `main`) may also omit `deploy.order`: the
|
|
409
|
+
branches resolve to a single distinct branch, so there is nothing to back-sync
|
|
410
|
+
and the derived chain is the empty no-op. `deploy.order` is only required when
|
|
411
|
+
`deploy.branches` resolves to **more than one distinct branch**.
|
|
412
|
+
- **Multi-branch projects MUST set `deploy.order`** for config-driven back-sync.
|
|
413
|
+
If `deploy.branches` resolves to more than one distinct branch and `deploy.order`
|
|
414
|
+
is absent, the Action fails rather than guessing the rank (or the workflow
|
|
415
|
+
wrapper must pass an explicit `chain`, which always wins).
|
|
410
416
|
- The env-name set of `deploy.order` and `deploy.branches` **must match exactly**
|
|
411
417
|
— every env in one appears in the other. A mismatch is a config error.
|
|
412
418
|
|
|
@@ -475,9 +481,12 @@ Doctor must validate config in three layers:
|
|
|
475
481
|
and `deploy.branches`.
|
|
476
482
|
|
|
477
483
|
4. **Deploy env-order correctness**
|
|
478
|
-
- When `deploy.branches`
|
|
479
|
-
config-driven back-sync cannot derive a chain without the ranking (the wrapper
|
|
480
|
-
`deploy.order` or pass an explicit `chain`).
|
|
484
|
+
- When `deploy.branches` resolves to more than one **distinct** branch but `deploy.order` is
|
|
485
|
+
absent, `WARN`: config-driven back-sync cannot derive a chain without the ranking (the wrapper
|
|
486
|
+
must add `deploy.order` or pass an explicit `chain`).
|
|
487
|
+
- When `deploy.branches` defines multiple environments that all map to the **same** branch (e.g.
|
|
488
|
+
`dev`/`staging`/`production` all → `main`), `deploy.order` is **not** required — the chain is the
|
|
489
|
+
empty no-op. Do not `WARN` in this case.
|
|
481
490
|
- When `deploy.order` is present but its env names do not exactly match the `deploy.branches`
|
|
482
491
|
keys, `FAIL` — the derived sync-down chain would be wrong or empty.
|
|
483
492
|
|
|
@@ -104,8 +104,12 @@ this order:
|
|
|
104
104
|
6. **Deploy env-order audit** (only when `deploy.branches` is present)
|
|
105
105
|
- `PASS` (or skip) when `deploy.branches` defines a single environment — `deploy.order` is
|
|
106
106
|
optional and the back-sync chain is empty.
|
|
107
|
-
- `
|
|
108
|
-
|
|
107
|
+
- `PASS` (or skip) when `deploy.branches` defines multiple environments that all map to the
|
|
108
|
+
**same** branch (e.g. `dev`/`staging`/`production` all → `main`). The branches resolve to a
|
|
109
|
+
single distinct branch, so there is nothing to back-sync, the chain is the empty no-op, and
|
|
110
|
+
`deploy.order` is not required. Do not WARN.
|
|
111
|
+
- `WARN` when `deploy.branches` resolves to **more than one distinct** branch but `deploy.order`
|
|
112
|
+
is absent. Config-driven back-sync (`reusable-claude-sync-down-branches.yml`) cannot derive a
|
|
109
113
|
source→target chain without the env ranking; the repo must either add `deploy.order`
|
|
110
114
|
(low→high, e.g. `["dev","staging","production"]`) or pass an explicit `chain` in its
|
|
111
115
|
`claude-sync-down-branches.yml` wrapper. WARN not FAIL because the explicit-chain override is
|
|
@@ -44,6 +44,7 @@ CHAIN=$(jq -e -r '
|
|
|
44
44
|
| ($b | keys | sort) as $bk
|
|
45
45
|
| ($o | sort) as $ok
|
|
46
46
|
| if ($b | length) <= 1 then "{}"
|
|
47
|
+
elif (($b | [.[]] | unique | length) <= 1) then "{}"
|
|
47
48
|
elif ($o | length) == 0 then "ERR_NO_ORDER"
|
|
48
49
|
elif ($bk != $ok) then "ERR_MISMATCH"
|
|
49
50
|
else ($o | reverse) as $hl
|
|
@@ -53,12 +54,16 @@ CHAIN=$(jq -e -r '
|
|
|
53
54
|
' .lisa.config.json)
|
|
54
55
|
```
|
|
55
56
|
|
|
56
|
-
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments
|
|
57
|
-
`deploy.order` is missing. Tell the user to
|
|
58
|
-
`["dev","staging","production"]`). Do not
|
|
57
|
+
- `ERR_NO_ORDER` → stop: `deploy.branches` has multiple environments mapped to
|
|
58
|
+
more than one distinct branch but `deploy.order` is missing. Tell the user to
|
|
59
|
+
add `deploy.order` (low→high, e.g. `["dev","staging","production"]`). Do not
|
|
60
|
+
guess the ranking.
|
|
59
61
|
- `ERR_MISMATCH` → stop: `deploy.order` and `deploy.branches` name different
|
|
60
62
|
environments. They must match exactly.
|
|
61
|
-
- `{}`
|
|
63
|
+
- `{}` → nothing to sync; report and exit cleanly. This covers both a
|
|
64
|
+
single-environment project and a multi-environment project whose branches all
|
|
65
|
+
resolve to the **same** branch (e.g. dev/staging/production all → `main`), where
|
|
66
|
+
`deploy.order` is not required.
|
|
62
67
|
|
|
63
68
|
### 2. Resolve the source branch
|
|
64
69
|
|
|
@@ -76,7 +76,9 @@ derive_chain() {
|
|
|
76
76
|
jq -e -r '
|
|
77
77
|
(.deploy.branches // {}) as $b | (.deploy.order // []) as $o
|
|
78
78
|
| ($b|keys|sort) as $bk | ($o|sort) as $ok
|
|
79
|
-
| if ($b|length)<=1 then "{}"
|
|
79
|
+
| if ($b|length)<=1 then "{}"
|
|
80
|
+
elif (($b|[.[]]|unique|length)<=1) then "{}"
|
|
81
|
+
elif ($o|length)==0 then "ERR_NO_ORDER"
|
|
80
82
|
elif ($bk!=$ok) then "ERR_MISMATCH"
|
|
81
83
|
else ($o|reverse) as $hl
|
|
82
84
|
| [ range(0;($hl|length)-1) | {($b[$hl[.]]):$b[$hl[.+1]]} ] | add | tojson end
|