@codyswann/lisa 2.295.0 → 2.295.2
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/cdk/create-only/.github/workflows/deploy.yml +0 -19
- package/dist/cli/gate-commands.d.ts +1 -3
- package/dist/cli/gate-commands.d.ts.map +1 -1
- package/dist/cli/gate-commands.js +0 -26
- package/dist/cli/gate-commands.js.map +1 -1
- package/dist/cli/index.d.ts +7 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +43 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/update-check.d.ts +0 -8
- package/dist/cli/update-check.d.ts.map +1 -1
- package/dist/cli/update-check.js +2 -4
- package/dist/cli/update-check.js.map +1 -1
- package/dist/core/project-config.d.ts +0 -3
- package/dist/core/project-config.d.ts.map +1 -1
- package/dist/core/project-config.js +40 -4
- package/dist/core/project-config.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +10 -36
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/sync/registry.d.ts.map +1 -1
- package/dist/sync/registry.js +6 -3
- package/dist/sync/registry.js.map +1 -1
- package/expo/create-only/.github/workflows/deploy.yml +0 -13
- package/expo/package-lisa/package.lisa.json +2 -0
- package/harper-fabric/create-only/.github/workflows/deploy.yml +0 -5
- package/nestjs/create-only/.github/workflows/deploy.yml +0 -14
- 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/eager/config-resolution.md +0 -9
- package/plugins/lisa/rules/reference/config-resolution.md +0 -59
- 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-copilot/rules/eager/config-resolution.md +0 -9
- package/plugins/lisa-copilot/rules/reference/config-resolution.md +0 -59
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +0 -59
- package/plugins/lisa-cursor/rules/config-resolution.mdc +0 -9
- 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/rules/eager/config-resolution.md +0 -9
- package/plugins/src/base/rules/reference/config-resolution.md +0 -59
- package/rails/create-only/.github/workflows/deploy.yml +0 -5
- package/typescript/copy-overwrite/.github/GITHUB_ACTIONS.md +0 -28
- package/typescript/package-lisa/package.lisa.json +2 -0
- package/dist/cli/deploy-status-adapter-github.d.ts +0 -20
- package/dist/cli/deploy-status-adapter-github.d.ts.map +0 -1
- package/dist/cli/deploy-status-adapter-github.js +0 -167
- package/dist/cli/deploy-status-adapter-github.js.map +0 -1
- package/dist/cli/deploy-status-adapter-jira.d.ts +0 -18
- package/dist/cli/deploy-status-adapter-jira.d.ts.map +0 -1
- package/dist/cli/deploy-status-adapter-jira.js +0 -215
- package/dist/cli/deploy-status-adapter-jira.js.map +0 -1
- package/dist/cli/deploy-status-adapter-linear.d.ts +0 -16
- package/dist/cli/deploy-status-adapter-linear.d.ts.map +0 -1
- package/dist/cli/deploy-status-adapter-linear.js +0 -204
- package/dist/cli/deploy-status-adapter-linear.js.map +0 -1
- package/dist/cli/deploy-status-adapter-shared.d.ts +0 -57
- package/dist/cli/deploy-status-adapter-shared.d.ts.map +0 -1
- package/dist/cli/deploy-status-adapter-shared.js +0 -62
- package/dist/cli/deploy-status-adapter-shared.js.map +0 -1
- package/dist/cli/deploy-status-adapter.d.ts +0 -49
- package/dist/cli/deploy-status-adapter.d.ts.map +0 -1
- package/dist/cli/deploy-status-adapter.js +0 -87
- package/dist/cli/deploy-status-adapter.js.map +0 -1
- package/dist/cli/deploy-status-refs.d.ts +0 -70
- package/dist/cli/deploy-status-refs.d.ts.map +0 -1
- package/dist/cli/deploy-status-refs.js +0 -195
- package/dist/cli/deploy-status-refs.js.map +0 -1
- package/dist/cli/deploy-status-sync-cmd.d.ts +0 -23
- package/dist/cli/deploy-status-sync-cmd.d.ts.map +0 -1
- package/dist/cli/deploy-status-sync-cmd.js +0 -75
- package/dist/cli/deploy-status-sync-cmd.js.map +0 -1
- package/dist/cli/deploy-status-sync-engine.d.ts +0 -49
- package/dist/cli/deploy-status-sync-engine.d.ts.map +0 -1
- package/dist/cli/deploy-status-sync-engine.js +0 -214
- package/dist/cli/deploy-status-sync-engine.js.map +0 -1
- package/dist/cli/deploy-status-sync-exec.d.ts +0 -73
- package/dist/cli/deploy-status-sync-exec.d.ts.map +0 -1
- package/dist/cli/deploy-status-sync-exec.js +0 -95
- package/dist/cli/deploy-status-sync-exec.js.map +0 -1
- package/dist/cli/kane-commands.d.ts +0 -21
- package/dist/cli/kane-commands.d.ts.map +0 -1
- package/dist/cli/kane-commands.js +0 -44
- package/dist/cli/kane-commands.js.map +0 -1
- package/dist/core/config-field-validation.d.ts +0 -19
- package/dist/core/config-field-validation.d.ts.map +0 -1
- package/dist/core/config-field-validation.js +0 -69
- package/dist/core/config-field-validation.js.map +0 -1
- package/dist/core/deploy-status-sync.d.ts +0 -103
- package/dist/core/deploy-status-sync.d.ts.map +0 -1
- package/dist/core/deploy-status-sync.js +0 -339
- package/dist/core/deploy-status-sync.js.map +0 -1
- package/dist/core/deploy-status-transition.d.ts +0 -97
- package/dist/core/deploy-status-transition.d.ts.map +0 -1
- package/dist/core/deploy-status-transition.js +0 -134
- package/dist/core/deploy-status-transition.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvD,uEAAuE;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AASD,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC;IACjD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;CAC5D,CAkCA,CAAC;AA6BF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,EA0JjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA0C/C,CAAC"}
|
package/dist/sync/registry.js
CHANGED
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
* completely missing.
|
|
11
11
|
* @module sync/registry
|
|
12
12
|
*/
|
|
13
|
-
import { ENV_DONE_LABEL_DEFAULTS, JIRA_DONE_STATUS_DEFAULTS, } from "../core/deploy-status-sync.js";
|
|
14
13
|
import { DEFAULT_PROJECT_RULES_FILE } from "../core/project-config.js";
|
|
15
14
|
import { validateHealthSchedule } from "../health/contract.js";
|
|
16
15
|
const WHEN_TRACKER_JIRA = "tracker=jira";
|
|
@@ -66,7 +65,11 @@ const BUILD_LABEL_DEFAULTS = {
|
|
|
66
65
|
claimed: "status:in-progress",
|
|
67
66
|
blocked: "status:blocked",
|
|
68
67
|
human_needed: "human-needed",
|
|
69
|
-
done:
|
|
68
|
+
done: {
|
|
69
|
+
dev: "status:on-dev",
|
|
70
|
+
staging: "status:on-stg",
|
|
71
|
+
production: "status:done",
|
|
72
|
+
},
|
|
70
73
|
};
|
|
71
74
|
const PRD_LABEL_DEFAULTS = {
|
|
72
75
|
draft: "prd-draft",
|
|
@@ -184,7 +187,7 @@ export const SYNC_REGISTRY = [
|
|
|
184
187
|
claimed: "In Progress",
|
|
185
188
|
review: "Code Review",
|
|
186
189
|
blocked: "Blocked",
|
|
187
|
-
done:
|
|
190
|
+
done: { dev: "On Dev", staging: "On Stg", production: "Done" },
|
|
188
191
|
},
|
|
189
192
|
relevantWhen: ["jira", WHEN_TRACKER_JIRA],
|
|
190
193
|
description: "JIRA workflow status names per lifecycle role",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -177,19 +177,6 @@ jobs:
|
|
|
177
177
|
deploy:
|
|
178
178
|
name: 🚀 Deploy to EAS
|
|
179
179
|
runs-on: ubuntu-latest
|
|
180
|
-
# Declaring the environment makes GitHub emit deployment /
|
|
181
|
-
# deployment_status events for this run — the substrate that
|
|
182
|
-
# deploy-status-sync listens to. Friendly name resolution (dev/staging/
|
|
183
|
-
# production) comes from determine_environment; unconfigured branches
|
|
184
|
-
# degrade to the branch name, same as the approval gate.
|
|
185
|
-
# Mitigation A (double-approval): GitHub environment approvals are
|
|
186
|
-
# per-job, so if this job named the same protected env release_approval
|
|
187
|
-
# already gated, the operator would be prompted twice. On approval-gated
|
|
188
|
-
# runs the deploy job routes to `<env>-deploy` (host projects leave it
|
|
189
|
-
# unprotected — no required reviewers), giving exactly one prompt while
|
|
190
|
-
# still recording a deployment with a Jira-classifiable env name (the
|
|
191
|
-
# dev/staging/production substring is preserved).
|
|
192
|
-
environment: ${{ needs.determine_environment.outputs.require_approval == 'true' && format('{0}-deploy', needs.determine_environment.outputs.approval_environment) || needs.determine_environment.outputs.approval_environment }}
|
|
193
180
|
needs:
|
|
194
181
|
[
|
|
195
182
|
determine_environment,
|
|
@@ -98,6 +98,7 @@
|
|
|
98
98
|
},
|
|
99
99
|
"resolutions": {
|
|
100
100
|
"@isaacs/brace-expansion": "^5.0.1",
|
|
101
|
+
"brace-expansion": ">=5.0.7",
|
|
101
102
|
"eslint-plugin-react-hooks": "^7.0.0",
|
|
102
103
|
"fast-xml-parser": "^5.10.1",
|
|
103
104
|
"tar": ">=7.5.11",
|
|
@@ -105,6 +106,7 @@
|
|
|
105
106
|
},
|
|
106
107
|
"overrides": {
|
|
107
108
|
"@isaacs/brace-expansion": "^5.0.1",
|
|
109
|
+
"brace-expansion": ">=5.0.7",
|
|
108
110
|
"eslint-plugin-react-hooks": "^7.0.0",
|
|
109
111
|
"fast-xml-parser": "^5.10.1",
|
|
110
112
|
"zod-validation-error": "^4.0.0",
|
|
@@ -18,11 +18,6 @@ jobs:
|
|
|
18
18
|
name: Build, deploy, and verify
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
20
|
timeout-minutes: 30
|
|
21
|
-
# Declaring the environment makes GitHub emit deployment /
|
|
22
|
-
# deployment_status events for this run — the substrate that
|
|
23
|
-
# deploy-status-sync listens to. No determine_environment job exists in
|
|
24
|
-
# this workflow; main deploys to production, other refs use the branch name.
|
|
25
|
-
environment: ${{ github.ref_name == 'main' && 'production' || github.ref_name }}
|
|
26
21
|
env:
|
|
27
22
|
HARPER_PROJECT: ${{ vars.HARPER_PROJECT || github.event.repository.name }}
|
|
28
23
|
HARPER_PACKAGE: ${{ vars.HARPER_PACKAGE || 'harper-app' }}
|
|
@@ -244,20 +244,6 @@ jobs:
|
|
|
244
244
|
)
|
|
245
245
|
name: Deploy
|
|
246
246
|
runs-on: ubuntu-latest
|
|
247
|
-
# Declaring the environment makes GitHub emit deployment /
|
|
248
|
-
# deployment_status events for this run — the substrate that
|
|
249
|
-
# deploy-status-sync listens to. url surfaces the deployed API in the
|
|
250
|
-
# GitHub deployments UI.
|
|
251
|
-
# Mitigation A (double-approval): GitHub environment approvals are
|
|
252
|
-
# per-job, so if this job named the same protected env release_approval
|
|
253
|
-
# already gated, the operator would be prompted twice. On approval-gated
|
|
254
|
-
# runs the deploy job routes to `<env>-deploy` (host projects leave it
|
|
255
|
-
# unprotected — no required reviewers), giving exactly one prompt while
|
|
256
|
-
# still recording a deployment with a Jira-classifiable env name (the
|
|
257
|
-
# dev/staging/production substring is preserved).
|
|
258
|
-
environment:
|
|
259
|
-
name: ${{ needs.determine_environment.outputs.require_approval == 'true' && format('{0}-deploy', needs.determine_environment.outputs.approval_environment) || needs.determine_environment.outputs.approval_environment }}
|
|
260
|
-
url: ${{ steps.deployment_outputs.outputs.environment_url }}
|
|
261
247
|
outputs:
|
|
262
248
|
environment_url: ${{ steps.deployment_outputs.outputs.environment_url }}
|
|
263
249
|
deployment_status: ${{ steps.deployment_outputs.outputs.deployment_status }}
|
package/package.json
CHANGED
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"brace-expansion": ">=5.0.6"
|
|
114
114
|
},
|
|
115
115
|
"name": "@codyswann/lisa",
|
|
116
|
-
"version": "2.295.
|
|
116
|
+
"version": "2.295.2",
|
|
117
117
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
118
118
|
"main": "dist/index.js",
|
|
119
119
|
"exports": {
|
|
@@ -86,13 +86,4 @@ A non-integration environment bug is fixed, merged, and verified on that
|
|
|
86
86
|
environment branch first, then
|
|
87
87
|
forward cherry-picked down to the integration branch via a linked follow-up.
|
|
88
88
|
|
|
89
|
-
## Deploy status sync
|
|
90
|
-
|
|
91
|
-
`deployStatusSync` is an optional machine-written config block (`tier`, `provisioned` ids,
|
|
92
|
-
`linearBinding: labels|states`, `verifiedAt`). The deploy ladder is `deploy.order` (else canonical
|
|
93
|
-
`dev < staging < production`) over `deploy.branches` joined with the tracker's env-keyed done map;
|
|
94
|
-
a configured done status whose env has no branch is a config error — unless its value is exactly
|
|
95
|
-
the built-in default (a sync-materialized fallback, invisible everywhere: stripped before the
|
|
96
|
-
union, never blocking the alias) — and the sole `prod` ↔ `production` alias applies to the join.
|
|
97
|
-
|
|
98
89
|
Full reference: [reference/config-resolution.md](../reference/config-resolution.md).
|
|
@@ -596,65 +596,6 @@ This is the same `deploy.branches` map already used by env-keyed `done` (reverse
|
|
|
596
596
|
env from PR base branch) and the build flow (forward: base branch from env);
|
|
597
597
|
`deploy.order` only adds the ranking those two directions never needed.
|
|
598
598
|
|
|
599
|
-
### Deploy status sync (deployStatusSync)
|
|
600
|
-
|
|
601
|
-
`deployStatusSync` is an **optional, machine-written** section recorded by the
|
|
602
|
-
deploy-status-sync setup flow. Humans never need to author it; unknown fields
|
|
603
|
-
inside it are preserved on round-trip.
|
|
604
|
-
|
|
605
|
-
| Field | Type | Default | Meaning |
|
|
606
|
-
| --- | --- | --- | --- |
|
|
607
|
-
| `tier` | string | — | Provisioning tier chosen at setup time |
|
|
608
|
-
| `provisioned` | object (string → string) | — | Provisioned tracker artifact ids, keyed by artifact name |
|
|
609
|
-
| `linearBinding` | `"labels"` \| `"states"` | — | Whether Linear deploy statuses are represented as labels or workflow states |
|
|
610
|
-
| `verifiedAt` | string | — | Strict ISO-8601 UTC timestamp (`Z` suffix, e.g. `2026-01-01T00:00:00Z`) of the last successful verification |
|
|
611
|
-
|
|
612
|
-
**Ladder resolution.** The environment universe is the keys of
|
|
613
|
-
`deploy.branches`. Each env's done status comes from the tracker's env-keyed
|
|
614
|
-
done map — `github.labels.build.done`, `linear.labels.build.done`, or
|
|
615
|
-
`jira.workflow.done` — with configured entries winning over the built-in
|
|
616
|
-
defaults (`status:on-dev` / `status:on-stg` / `status:done` for label trackers;
|
|
617
|
-
`On Dev` / `On Stg` / `Done` for JIRA). Environments are ordered by
|
|
618
|
-
`deploy.order` when present (its env-name set must exactly match the keys of
|
|
619
|
-
`deploy.branches`); otherwise by the canonical `dev < staging < production`
|
|
620
|
-
rank, and an unrankable custom env name with more than one env configured is a
|
|
621
|
-
config error rather than a guess. A string-valued `done` binds only the
|
|
622
|
-
terminal (highest) rung; lower rungs fall back to the default table. An env
|
|
623
|
-
with a branch but no done status anywhere (possible only for custom names
|
|
624
|
-
outside the default tables) is **skipped**, not an error; an explicitly
|
|
625
|
-
configured done status whose env has no branch **is** a config error. A ladder
|
|
626
|
-
is flagged terminal-only when it resolves to exactly one rung **and** that
|
|
627
|
-
rung's env is the highest-ranked environment of the configured universe
|
|
628
|
-
(post-alias) — a sole surviving lower rung after skips is NOT terminal-only,
|
|
629
|
-
so downstream native closure never fires on an intermediate environment.
|
|
630
|
-
Absent or empty `deploy` yields an empty ladder, never an error.
|
|
631
|
-
|
|
632
|
-
**Alias.** Iff exactly one of `prod` / `production` appears across the
|
|
633
|
-
configured surfaces (`deploy.branches`, the configured done map,
|
|
634
|
-
`deploy.order`), the two spellings join as one environment — so
|
|
635
|
-
`branches.prod` meets the default `done.production` — and rungs report the
|
|
636
|
-
configured spelling. When both spellings appear they are distinct environments
|
|
637
|
-
and no aliasing occurs. No other alias exists.
|
|
638
|
-
|
|
639
|
-
**Materialized defaults are fallbacks.** `lisa sync` writes the full default
|
|
640
|
-
done map into config, so a configured done-map entry whose value is EXACTLY
|
|
641
|
-
the default table's value for that env is treated as a materialized fallback,
|
|
642
|
-
not operator intent — and it is invisible for ALL purposes: stripped before
|
|
643
|
-
the env-key union is computed, it never blocks the sole `prod` ↔ `production`
|
|
644
|
-
alias, never raises the done-without-branch error, and leaves the env exactly
|
|
645
|
-
as if it were unconfigured (so `branches.prod` beside a materialized
|
|
646
|
-
`production` entry still aliases to one prod rung). Only a value that DIFFERS
|
|
647
|
-
from the default is deliberate configuration: it participates in the union
|
|
648
|
-
(blocking the alias when it introduces the other spelling) and stays
|
|
649
|
-
protected by the error below.
|
|
650
|
-
|
|
651
|
-
**Error catalog** (verbatim):
|
|
652
|
-
|
|
653
|
-
- `Invalid deploy configuration in <source>: a done status ("<status>") is configured for environment "<env>", but deploy.branches has no "<env>" entry. Add deploy.branches.<env> (the git branch that deploys to <env>) or remove "<env>" from the done map.` (custom values only — default-identical entries fall back silently)
|
|
654
|
-
- `Invalid deploy.order in <source>: its environment names must exactly match the keys of deploy.branches. deploy.order has [<order-envs>]; deploy.branches has [<branch-envs>].` (also raised for duplicate `deploy.order` entries)
|
|
655
|
-
- `Invalid deploy.order in <source>: every entry must be an environment name string; found <entry>.`
|
|
656
|
-
- `Invalid deploy configuration in <source>: cannot order environment "<env>". Set deploy.order (environments listed lowest first, e.g. ["dev","staging","production"]) so Lisa knows the promotion order.`
|
|
657
|
-
|
|
658
599
|
### What's configurable, what's not
|
|
659
600
|
|
|
660
601
|
- **Status / label NAMES** are configurable per project — that's the point of the vocabulary maps.
|
|
@@ -86,13 +86,4 @@ A non-integration environment bug is fixed, merged, and verified on that
|
|
|
86
86
|
environment branch first, then
|
|
87
87
|
forward cherry-picked down to the integration branch via a linked follow-up.
|
|
88
88
|
|
|
89
|
-
## Deploy status sync
|
|
90
|
-
|
|
91
|
-
`deployStatusSync` is an optional machine-written config block (`tier`, `provisioned` ids,
|
|
92
|
-
`linearBinding: labels|states`, `verifiedAt`). The deploy ladder is `deploy.order` (else canonical
|
|
93
|
-
`dev < staging < production`) over `deploy.branches` joined with the tracker's env-keyed done map;
|
|
94
|
-
a configured done status whose env has no branch is a config error — unless its value is exactly
|
|
95
|
-
the built-in default (a sync-materialized fallback, invisible everywhere: stripped before the
|
|
96
|
-
union, never blocking the alias) — and the sole `prod` ↔ `production` alias applies to the join.
|
|
97
|
-
|
|
98
89
|
Full reference: [reference/config-resolution.md](../reference/config-resolution.md).
|
|
@@ -596,65 +596,6 @@ This is the same `deploy.branches` map already used by env-keyed `done` (reverse
|
|
|
596
596
|
env from PR base branch) and the build flow (forward: base branch from env);
|
|
597
597
|
`deploy.order` only adds the ranking those two directions never needed.
|
|
598
598
|
|
|
599
|
-
### Deploy status sync (deployStatusSync)
|
|
600
|
-
|
|
601
|
-
`deployStatusSync` is an **optional, machine-written** section recorded by the
|
|
602
|
-
deploy-status-sync setup flow. Humans never need to author it; unknown fields
|
|
603
|
-
inside it are preserved on round-trip.
|
|
604
|
-
|
|
605
|
-
| Field | Type | Default | Meaning |
|
|
606
|
-
| --- | --- | --- | --- |
|
|
607
|
-
| `tier` | string | — | Provisioning tier chosen at setup time |
|
|
608
|
-
| `provisioned` | object (string → string) | — | Provisioned tracker artifact ids, keyed by artifact name |
|
|
609
|
-
| `linearBinding` | `"labels"` \| `"states"` | — | Whether Linear deploy statuses are represented as labels or workflow states |
|
|
610
|
-
| `verifiedAt` | string | — | Strict ISO-8601 UTC timestamp (`Z` suffix, e.g. `2026-01-01T00:00:00Z`) of the last successful verification |
|
|
611
|
-
|
|
612
|
-
**Ladder resolution.** The environment universe is the keys of
|
|
613
|
-
`deploy.branches`. Each env's done status comes from the tracker's env-keyed
|
|
614
|
-
done map — `github.labels.build.done`, `linear.labels.build.done`, or
|
|
615
|
-
`jira.workflow.done` — with configured entries winning over the built-in
|
|
616
|
-
defaults (`status:on-dev` / `status:on-stg` / `status:done` for label trackers;
|
|
617
|
-
`On Dev` / `On Stg` / `Done` for JIRA). Environments are ordered by
|
|
618
|
-
`deploy.order` when present (its env-name set must exactly match the keys of
|
|
619
|
-
`deploy.branches`); otherwise by the canonical `dev < staging < production`
|
|
620
|
-
rank, and an unrankable custom env name with more than one env configured is a
|
|
621
|
-
config error rather than a guess. A string-valued `done` binds only the
|
|
622
|
-
terminal (highest) rung; lower rungs fall back to the default table. An env
|
|
623
|
-
with a branch but no done status anywhere (possible only for custom names
|
|
624
|
-
outside the default tables) is **skipped**, not an error; an explicitly
|
|
625
|
-
configured done status whose env has no branch **is** a config error. A ladder
|
|
626
|
-
is flagged terminal-only when it resolves to exactly one rung **and** that
|
|
627
|
-
rung's env is the highest-ranked environment of the configured universe
|
|
628
|
-
(post-alias) — a sole surviving lower rung after skips is NOT terminal-only,
|
|
629
|
-
so downstream native closure never fires on an intermediate environment.
|
|
630
|
-
Absent or empty `deploy` yields an empty ladder, never an error.
|
|
631
|
-
|
|
632
|
-
**Alias.** Iff exactly one of `prod` / `production` appears across the
|
|
633
|
-
configured surfaces (`deploy.branches`, the configured done map,
|
|
634
|
-
`deploy.order`), the two spellings join as one environment — so
|
|
635
|
-
`branches.prod` meets the default `done.production` — and rungs report the
|
|
636
|
-
configured spelling. When both spellings appear they are distinct environments
|
|
637
|
-
and no aliasing occurs. No other alias exists.
|
|
638
|
-
|
|
639
|
-
**Materialized defaults are fallbacks.** `lisa sync` writes the full default
|
|
640
|
-
done map into config, so a configured done-map entry whose value is EXACTLY
|
|
641
|
-
the default table's value for that env is treated as a materialized fallback,
|
|
642
|
-
not operator intent — and it is invisible for ALL purposes: stripped before
|
|
643
|
-
the env-key union is computed, it never blocks the sole `prod` ↔ `production`
|
|
644
|
-
alias, never raises the done-without-branch error, and leaves the env exactly
|
|
645
|
-
as if it were unconfigured (so `branches.prod` beside a materialized
|
|
646
|
-
`production` entry still aliases to one prod rung). Only a value that DIFFERS
|
|
647
|
-
from the default is deliberate configuration: it participates in the union
|
|
648
|
-
(blocking the alias when it introduces the other spelling) and stays
|
|
649
|
-
protected by the error below.
|
|
650
|
-
|
|
651
|
-
**Error catalog** (verbatim):
|
|
652
|
-
|
|
653
|
-
- `Invalid deploy configuration in <source>: a done status ("<status>") is configured for environment "<env>", but deploy.branches has no "<env>" entry. Add deploy.branches.<env> (the git branch that deploys to <env>) or remove "<env>" from the done map.` (custom values only — default-identical entries fall back silently)
|
|
654
|
-
- `Invalid deploy.order in <source>: its environment names must exactly match the keys of deploy.branches. deploy.order has [<order-envs>]; deploy.branches has [<branch-envs>].` (also raised for duplicate `deploy.order` entries)
|
|
655
|
-
- `Invalid deploy.order in <source>: every entry must be an environment name string; found <entry>.`
|
|
656
|
-
- `Invalid deploy configuration in <source>: cannot order environment "<env>". Set deploy.order (environments listed lowest first, e.g. ["dev","staging","production"]) so Lisa knows the promotion order.`
|
|
657
|
-
|
|
658
599
|
### What's configurable, what's not
|
|
659
600
|
|
|
660
601
|
- **Status / label NAMES** are configurable per project — that's the point of the vocabulary maps.
|
|
@@ -601,65 +601,6 @@ This is the same `deploy.branches` map already used by env-keyed `done` (reverse
|
|
|
601
601
|
env from PR base branch) and the build flow (forward: base branch from env);
|
|
602
602
|
`deploy.order` only adds the ranking those two directions never needed.
|
|
603
603
|
|
|
604
|
-
### Deploy status sync (deployStatusSync)
|
|
605
|
-
|
|
606
|
-
`deployStatusSync` is an **optional, machine-written** section recorded by the
|
|
607
|
-
deploy-status-sync setup flow. Humans never need to author it; unknown fields
|
|
608
|
-
inside it are preserved on round-trip.
|
|
609
|
-
|
|
610
|
-
| Field | Type | Default | Meaning |
|
|
611
|
-
| --- | --- | --- | --- |
|
|
612
|
-
| `tier` | string | — | Provisioning tier chosen at setup time |
|
|
613
|
-
| `provisioned` | object (string → string) | — | Provisioned tracker artifact ids, keyed by artifact name |
|
|
614
|
-
| `linearBinding` | `"labels"` \| `"states"` | — | Whether Linear deploy statuses are represented as labels or workflow states |
|
|
615
|
-
| `verifiedAt` | string | — | Strict ISO-8601 UTC timestamp (`Z` suffix, e.g. `2026-01-01T00:00:00Z`) of the last successful verification |
|
|
616
|
-
|
|
617
|
-
**Ladder resolution.** The environment universe is the keys of
|
|
618
|
-
`deploy.branches`. Each env's done status comes from the tracker's env-keyed
|
|
619
|
-
done map — `github.labels.build.done`, `linear.labels.build.done`, or
|
|
620
|
-
`jira.workflow.done` — with configured entries winning over the built-in
|
|
621
|
-
defaults (`status:on-dev` / `status:on-stg` / `status:done` for label trackers;
|
|
622
|
-
`On Dev` / `On Stg` / `Done` for JIRA). Environments are ordered by
|
|
623
|
-
`deploy.order` when present (its env-name set must exactly match the keys of
|
|
624
|
-
`deploy.branches`); otherwise by the canonical `dev < staging < production`
|
|
625
|
-
rank, and an unrankable custom env name with more than one env configured is a
|
|
626
|
-
config error rather than a guess. A string-valued `done` binds only the
|
|
627
|
-
terminal (highest) rung; lower rungs fall back to the default table. An env
|
|
628
|
-
with a branch but no done status anywhere (possible only for custom names
|
|
629
|
-
outside the default tables) is **skipped**, not an error; an explicitly
|
|
630
|
-
configured done status whose env has no branch **is** a config error. A ladder
|
|
631
|
-
is flagged terminal-only when it resolves to exactly one rung **and** that
|
|
632
|
-
rung's env is the highest-ranked environment of the configured universe
|
|
633
|
-
(post-alias) — a sole surviving lower rung after skips is NOT terminal-only,
|
|
634
|
-
so downstream native closure never fires on an intermediate environment.
|
|
635
|
-
Absent or empty `deploy` yields an empty ladder, never an error.
|
|
636
|
-
|
|
637
|
-
**Alias.** Iff exactly one of `prod` / `production` appears across the
|
|
638
|
-
configured surfaces (`deploy.branches`, the configured done map,
|
|
639
|
-
`deploy.order`), the two spellings join as one environment — so
|
|
640
|
-
`branches.prod` meets the default `done.production` — and rungs report the
|
|
641
|
-
configured spelling. When both spellings appear they are distinct environments
|
|
642
|
-
and no aliasing occurs. No other alias exists.
|
|
643
|
-
|
|
644
|
-
**Materialized defaults are fallbacks.** `lisa sync` writes the full default
|
|
645
|
-
done map into config, so a configured done-map entry whose value is EXACTLY
|
|
646
|
-
the default table's value for that env is treated as a materialized fallback,
|
|
647
|
-
not operator intent — and it is invisible for ALL purposes: stripped before
|
|
648
|
-
the env-key union is computed, it never blocks the sole `prod` ↔ `production`
|
|
649
|
-
alias, never raises the done-without-branch error, and leaves the env exactly
|
|
650
|
-
as if it were unconfigured (so `branches.prod` beside a materialized
|
|
651
|
-
`production` entry still aliases to one prod rung). Only a value that DIFFERS
|
|
652
|
-
from the default is deliberate configuration: it participates in the union
|
|
653
|
-
(blocking the alias when it introduces the other spelling) and stays
|
|
654
|
-
protected by the error below.
|
|
655
|
-
|
|
656
|
-
**Error catalog** (verbatim):
|
|
657
|
-
|
|
658
|
-
- `Invalid deploy configuration in <source>: a done status ("<status>") is configured for environment "<env>", but deploy.branches has no "<env>" entry. Add deploy.branches.<env> (the git branch that deploys to <env>) or remove "<env>" from the done map.` (custom values only — default-identical entries fall back silently)
|
|
659
|
-
- `Invalid deploy.order in <source>: its environment names must exactly match the keys of deploy.branches. deploy.order has [<order-envs>]; deploy.branches has [<branch-envs>].` (also raised for duplicate `deploy.order` entries)
|
|
660
|
-
- `Invalid deploy.order in <source>: every entry must be an environment name string; found <entry>.`
|
|
661
|
-
- `Invalid deploy configuration in <source>: cannot order environment "<env>". Set deploy.order (environments listed lowest first, e.g. ["dev","staging","production"]) so Lisa knows the promotion order.`
|
|
662
|
-
|
|
663
604
|
### What's configurable, what's not
|
|
664
605
|
|
|
665
606
|
- **Status / label NAMES** are configurable per project — that's the point of the vocabulary maps.
|
|
@@ -91,13 +91,4 @@ A non-integration environment bug is fixed, merged, and verified on that
|
|
|
91
91
|
environment branch first, then
|
|
92
92
|
forward cherry-picked down to the integration branch via a linked follow-up.
|
|
93
93
|
|
|
94
|
-
## Deploy status sync
|
|
95
|
-
|
|
96
|
-
`deployStatusSync` is an optional machine-written config block (`tier`, `provisioned` ids,
|
|
97
|
-
`linearBinding: labels|states`, `verifiedAt`). The deploy ladder is `deploy.order` (else canonical
|
|
98
|
-
`dev < staging < production`) over `deploy.branches` joined with the tracker's env-keyed done map;
|
|
99
|
-
a configured done status whose env has no branch is a config error — unless its value is exactly
|
|
100
|
-
the built-in default (a sync-materialized fallback, invisible everywhere: stripped before the
|
|
101
|
-
union, never blocking the alias) — and the sole `prod` ↔ `production` alias applies to the join.
|
|
102
|
-
|
|
103
94
|
Full reference: [reference/config-resolution.md](config-resolution-reference.mdc).
|