@codyswann/lisa 2.293.0 → 2.294.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +12 -3
- package/dist/cli/deploy-status-adapter-github.d.ts +20 -0
- package/dist/cli/deploy-status-adapter-github.d.ts.map +1 -0
- package/dist/cli/deploy-status-adapter-github.js +167 -0
- package/dist/cli/deploy-status-adapter-github.js.map +1 -0
- package/dist/cli/deploy-status-adapter-jira.d.ts +18 -0
- package/dist/cli/deploy-status-adapter-jira.d.ts.map +1 -0
- package/dist/cli/deploy-status-adapter-jira.js +215 -0
- package/dist/cli/deploy-status-adapter-jira.js.map +1 -0
- package/dist/cli/deploy-status-adapter-linear.d.ts +16 -0
- package/dist/cli/deploy-status-adapter-linear.d.ts.map +1 -0
- package/dist/cli/deploy-status-adapter-linear.js +204 -0
- package/dist/cli/deploy-status-adapter-linear.js.map +1 -0
- package/dist/cli/deploy-status-adapter-shared.d.ts +57 -0
- package/dist/cli/deploy-status-adapter-shared.d.ts.map +1 -0
- package/dist/cli/deploy-status-adapter-shared.js +62 -0
- package/dist/cli/deploy-status-adapter-shared.js.map +1 -0
- package/dist/cli/deploy-status-adapter.d.ts +49 -0
- package/dist/cli/deploy-status-adapter.d.ts.map +1 -0
- package/dist/cli/deploy-status-adapter.js +87 -0
- package/dist/cli/deploy-status-adapter.js.map +1 -0
- package/dist/cli/deploy-status-refs.d.ts +70 -0
- package/dist/cli/deploy-status-refs.d.ts.map +1 -0
- package/dist/cli/deploy-status-refs.js +195 -0
- package/dist/cli/deploy-status-refs.js.map +1 -0
- package/dist/cli/deploy-status-sync-cmd.d.ts +23 -0
- package/dist/cli/deploy-status-sync-cmd.d.ts.map +1 -0
- package/dist/cli/deploy-status-sync-cmd.js +75 -0
- package/dist/cli/deploy-status-sync-cmd.js.map +1 -0
- package/dist/cli/deploy-status-sync-engine.d.ts +49 -0
- package/dist/cli/deploy-status-sync-engine.d.ts.map +1 -0
- package/dist/cli/deploy-status-sync-engine.js +214 -0
- package/dist/cli/deploy-status-sync-engine.js.map +1 -0
- package/dist/cli/deploy-status-sync-exec.d.ts +73 -0
- package/dist/cli/deploy-status-sync-exec.d.ts.map +1 -0
- package/dist/cli/deploy-status-sync-exec.js +95 -0
- package/dist/cli/deploy-status-sync-exec.js.map +1 -0
- package/dist/cli/gate-commands.d.ts +3 -1
- package/dist/cli/gate-commands.d.ts.map +1 -1
- package/dist/cli/gate-commands.js +26 -0
- package/dist/cli/gate-commands.js.map +1 -1
- package/dist/cli/index.d.ts +2 -7
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -43
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/kane-commands.d.ts +21 -0
- package/dist/cli/kane-commands.d.ts.map +1 -0
- package/dist/cli/kane-commands.js +44 -0
- package/dist/cli/kane-commands.js.map +1 -0
- package/dist/cli/update-check.d.ts +8 -0
- package/dist/cli/update-check.d.ts.map +1 -1
- package/dist/cli/update-check.js +4 -2
- package/dist/cli/update-check.js.map +1 -1
- package/dist/core/deploy-status-sync.d.ts +15 -0
- package/dist/core/deploy-status-sync.d.ts.map +1 -1
- package/dist/core/deploy-status-sync.js +57 -19
- package/dist/core/deploy-status-sync.js.map +1 -1
- package/dist/core/deploy-status-transition.d.ts +97 -0
- package/dist/core/deploy-status-transition.d.ts.map +1 -0
- package/dist/core/deploy-status-transition.js +134 -0
- package/dist/core/deploy-status-transition.js.map +1 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +24 -3
- package/dist/core/upstream-evidence-manifest.js.map +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/eager/config-resolution.md +3 -2
- package/plugins/lisa/rules/reference/config-resolution.md +13 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/rules/eager/config-resolution.md +3 -2
- package/plugins/lisa-copilot/rules/reference/config-resolution.md +13 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +13 -1
- package/plugins/lisa-cursor/rules/config-resolution.mdc +3 -2
- 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 +3 -2
- package/plugins/src/base/rules/reference/config-resolution.md +13 -1
|
@@ -39,6 +39,16 @@ const DONE_MAP_PATHS = {
|
|
|
39
39
|
linear: "linear.labels.build.done",
|
|
40
40
|
jira: "jira.workflow.done",
|
|
41
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* Config dot-path of a tracker's env-keyed done vocabulary. Exposed so
|
|
44
|
+
* consumers (e.g. the transition engine's explanatory no-ops) can name the
|
|
45
|
+
* exact missing config key without duplicating the vocabulary source map.
|
|
46
|
+
* @param tracker - Tracker whose done map applies
|
|
47
|
+
* @returns Dot-path inside `.lisa.config.json`
|
|
48
|
+
*/
|
|
49
|
+
export function doneMapPath(tracker) {
|
|
50
|
+
return DONE_MAP_PATHS[tracker];
|
|
51
|
+
}
|
|
42
52
|
/** Default done vocabulary per tracker, used when config has no entry. */
|
|
43
53
|
const DONE_DEFAULTS = {
|
|
44
54
|
github: ENV_DONE_LABEL_DEFAULTS,
|
|
@@ -83,10 +93,24 @@ function readConfiguredDone(config, tracker) {
|
|
|
83
93
|
return { map: stringRecord(done) };
|
|
84
94
|
}
|
|
85
95
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* entries are
|
|
96
|
+
* Drop done-map entries whose value is EXACTLY the default table's value
|
|
97
|
+
* for that env. `lisa sync` materializes the default map into config, so
|
|
98
|
+
* such entries are not operator intent — they are invisible for ALL
|
|
99
|
+
* purposes: stripped before the env-key union is computed, they never
|
|
100
|
+
* block the sole `prod` ↔ `production` alias and never error. Only a
|
|
101
|
+
* value that DIFFERS from the default is deliberate configuration.
|
|
89
102
|
* @param doneMap - Configured env-keyed done map
|
|
103
|
+
* @param defaults - Tracker default done vocabulary
|
|
104
|
+
* @returns The done map without materialized-default entries
|
|
105
|
+
*/
|
|
106
|
+
function stripMaterializedDefaults(doneMap, defaults) {
|
|
107
|
+
return Object.fromEntries(Object.entries(doneMap).filter(([env, status]) => status !== defaults[env]));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Reject a configured done entry whose environment has no deploy branch.
|
|
111
|
+
* Materialized defaults are already stripped by the time this runs, so
|
|
112
|
+
* every remaining entry is deliberate operator intent.
|
|
113
|
+
* @param doneMap - Configured env-keyed done map (defaults stripped)
|
|
90
114
|
* @param branchEnvs - Environments present in `deploy.branches`
|
|
91
115
|
* @param source - Config source shown in errors
|
|
92
116
|
*/
|
|
@@ -165,15 +189,11 @@ function orderEnvironments(branchEnvs, order, canonical, source) {
|
|
|
165
189
|
* done status resolves nowhere (possible only for custom names outside the
|
|
166
190
|
* default tables) is skipped — a branch-only env is a deploy target without
|
|
167
191
|
* tracker vocabulary, not an error.
|
|
168
|
-
* @param
|
|
169
|
-
* @param branches - Env-to-branch record
|
|
170
|
-
* @param done - Configured done vocabulary
|
|
171
|
-
* @param defaults - Tracker default done vocabulary
|
|
172
|
-
* @param canonical - Alias-aware canonical name resolver
|
|
173
|
-
* @param terminalEnv - Highest-ranked env of the configured universe
|
|
192
|
+
* @param input - Ordered envs, branch map, vocabularies, and alias resolver
|
|
174
193
|
* @returns The joined rungs, lowest environment first
|
|
175
194
|
*/
|
|
176
|
-
function buildRungs(
|
|
195
|
+
function buildRungs(input) {
|
|
196
|
+
const { orderedEnvs, branches, done, defaults, canonical, terminalEnv } = input;
|
|
177
197
|
return orderedEnvs.flatMap(env => {
|
|
178
198
|
const branch = branches[env];
|
|
179
199
|
const terminal = env === terminalEnv ? done.terminal : undefined;
|
|
@@ -202,27 +222,45 @@ export function resolveDeployLadder(config, tracker, source) {
|
|
|
202
222
|
const branchEnvs = Object.keys(branches);
|
|
203
223
|
if (branchEnvs.length === 0)
|
|
204
224
|
return { rungs: [], terminalOnly: false };
|
|
205
|
-
const
|
|
225
|
+
const raw = readConfiguredDone(config, tracker);
|
|
226
|
+
// Materialized defaults are invisible everywhere: strip them BEFORE the
|
|
227
|
+
// union so they can never block the sole alias or raise an error.
|
|
228
|
+
const doneMap = raw.map === undefined
|
|
229
|
+
? undefined
|
|
230
|
+
: stripMaterializedDefaults(raw.map, DONE_DEFAULTS[tracker]);
|
|
231
|
+
const done = {
|
|
232
|
+
...(doneMap === undefined ? {} : { map: doneMap }),
|
|
233
|
+
...(raw.terminal === undefined ? {} : { terminal: raw.terminal }),
|
|
234
|
+
};
|
|
206
235
|
const order = readOrder(config, source);
|
|
207
236
|
const union = new Set([
|
|
208
237
|
...branchEnvs,
|
|
209
|
-
...Object.keys(
|
|
238
|
+
...Object.keys(doneMap ?? {}),
|
|
210
239
|
...(order ?? []),
|
|
211
240
|
]);
|
|
212
241
|
const soleProdAlias = union.has("prod") && !union.has("production");
|
|
213
242
|
const canonical = (env) => soleProdAlias && env === "prod" ? "production" : env;
|
|
214
|
-
if (
|
|
215
|
-
assertDoneEnvsHaveBranches(
|
|
243
|
+
if (doneMap !== undefined) {
|
|
244
|
+
assertDoneEnvsHaveBranches(doneMap, branchEnvs, source);
|
|
216
245
|
}
|
|
217
246
|
const ordered = orderEnvironments(branchEnvs, order, canonical, source);
|
|
218
247
|
const terminalEnv = ordered.at(-1);
|
|
219
|
-
const rungs = buildRungs(
|
|
248
|
+
const rungs = buildRungs({
|
|
249
|
+
orderedEnvs: ordered,
|
|
250
|
+
branches,
|
|
251
|
+
done,
|
|
252
|
+
defaults: DONE_DEFAULTS[tracker],
|
|
253
|
+
canonical,
|
|
254
|
+
terminalEnv,
|
|
255
|
+
});
|
|
220
256
|
// terminalOnly guards DSS-2's native closure: a sole surviving LOWER rung
|
|
221
257
|
// (skip-collapsed ladder) must never be treated as the terminal env.
|
|
222
|
-
const terminalOnly = rungs.length === 1 &&
|
|
223
|
-
|
|
224
|
-
rungs
|
|
225
|
-
|
|
258
|
+
const terminalOnly = rungs.length === 1 && rungs[0]?.env === terminalEnv;
|
|
259
|
+
return {
|
|
260
|
+
rungs,
|
|
261
|
+
terminalOnly,
|
|
262
|
+
...(terminalEnv === undefined ? {} : { terminalEnv }),
|
|
263
|
+
};
|
|
226
264
|
}
|
|
227
265
|
/** Strict ISO-8601 UTC timestamp (`Z` suffix, optional milliseconds). */
|
|
228
266
|
const ISO_UTC_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?Z$/u;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-status-sync.js","sourceRoot":"","sources":["../../src/core/deploy-status-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,SAAS,EACT,YAAY,GAGb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy-status-sync.js","sourceRoot":"","sources":["../../src/core/deploy-status-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure transition planner for deploy-status-sync (DSS-2).
|
|
3
|
+
*
|
|
4
|
+
* Given the resolved deploy ladder, a target environment, and the fetched
|
|
5
|
+
* tracker item states, decide — with zero IO — what should happen to each
|
|
6
|
+
* item: promote to the rung's done status (closing natively only at the
|
|
7
|
+
* universe's terminal env), skip items at-or-beyond the rung (never moving
|
|
8
|
+
* anything backward), skip containers per `leaf-only-lifecycle`, and turn an
|
|
9
|
+
* unconfigured environment into an explanatory no-op naming the exact
|
|
10
|
+
* missing config key. All status vocabulary is config-sourced via the DSS-1
|
|
11
|
+
* resolver's ladder; this module never invents status names.
|
|
12
|
+
* @module core/deploy-status-transition
|
|
13
|
+
*/
|
|
14
|
+
import { type DeployLadder, type DeployLadderRung, type Tracker } from "./deploy-status-sync.js";
|
|
15
|
+
/** Marker prefixing every managed comment the engine writes. */
|
|
16
|
+
export declare const DEPLOY_STATUS_SYNC_MARKER = "[lisa-deploy-status-sync]";
|
|
17
|
+
/** Vendor-neutral snapshot of one tracker item, fetched by an adapter. */
|
|
18
|
+
export interface TrackerItemState {
|
|
19
|
+
/** Canonical work-item ref (`owner/repo#N` or `KEY-N`) */
|
|
20
|
+
readonly ref: string;
|
|
21
|
+
/** Raw item type (e.g. `Epic`, `type:Story`), when the tracker exposes it */
|
|
22
|
+
readonly type?: string;
|
|
23
|
+
/** Number of child items not yet terminal */
|
|
24
|
+
readonly openChildren: number;
|
|
25
|
+
/** Current status within the configured done vocabulary, when recognizable */
|
|
26
|
+
readonly currentStatus?: string;
|
|
27
|
+
/** True when the item is natively closed/terminal */
|
|
28
|
+
readonly closed: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** Promote one leaf to the rung's done status (and optionally close). */
|
|
31
|
+
export interface PromoteAction {
|
|
32
|
+
readonly kind: "promote";
|
|
33
|
+
readonly ref: string;
|
|
34
|
+
/** Config-sourced done status of the target rung */
|
|
35
|
+
readonly doneStatus: string;
|
|
36
|
+
/** True only at the universe's terminal env (native closure) */
|
|
37
|
+
readonly close: boolean;
|
|
38
|
+
/** Deterministic managed-comment body (marker-prefixed, no timestamps) */
|
|
39
|
+
readonly commentBody: string;
|
|
40
|
+
}
|
|
41
|
+
/** Skip an item already at-or-beyond the target rung — zero writes. */
|
|
42
|
+
export interface SkipAtOrBeyondAction {
|
|
43
|
+
readonly kind: "skip-at-or-beyond";
|
|
44
|
+
readonly ref: string;
|
|
45
|
+
readonly reason: string;
|
|
46
|
+
}
|
|
47
|
+
/** Skip a container per leaf-only-lifecycle, with a rollup comment. */
|
|
48
|
+
export interface SkipContainerAction {
|
|
49
|
+
readonly kind: "skip-container";
|
|
50
|
+
readonly ref: string;
|
|
51
|
+
readonly reason: string;
|
|
52
|
+
/** Deterministic rollup body (identical across env events) */
|
|
53
|
+
readonly commentBody: string;
|
|
54
|
+
}
|
|
55
|
+
/** Skip a closed item whose status is outside the config vocabulary. */
|
|
56
|
+
export interface SkipUnrecognizedStatusAction {
|
|
57
|
+
readonly kind: "skip-unrecognized-status";
|
|
58
|
+
readonly ref: string;
|
|
59
|
+
readonly reason: string;
|
|
60
|
+
}
|
|
61
|
+
/** One planned action for one extracted work-item ref. */
|
|
62
|
+
export type ItemAction = PromoteAction | SkipAtOrBeyondAction | SkipContainerAction | SkipUnrecognizedStatusAction;
|
|
63
|
+
/** Input to {@link planTransitions}. */
|
|
64
|
+
export interface TransitionPlanInput {
|
|
65
|
+
/** Resolved ladder from the DSS-1 resolver (config-sourced vocabulary) */
|
|
66
|
+
readonly ladder: DeployLadder;
|
|
67
|
+
/** Environment the deploy landed in */
|
|
68
|
+
readonly env: string;
|
|
69
|
+
/** Tracker vendor (names the done-map config key in no-ops) */
|
|
70
|
+
readonly tracker: Tracker;
|
|
71
|
+
/** Branch that deployed (comment context only) */
|
|
72
|
+
readonly branch: string;
|
|
73
|
+
/** Head SHA of the deployed range (comment context only) */
|
|
74
|
+
readonly headSha: string;
|
|
75
|
+
/** Fetched item states for every extracted ref */
|
|
76
|
+
readonly items: readonly TrackerItemState[];
|
|
77
|
+
}
|
|
78
|
+
/** The full plan: either per-item actions or an explanatory no-op. */
|
|
79
|
+
export type TransitionPlan = {
|
|
80
|
+
readonly kind: "no-op";
|
|
81
|
+
readonly env: string;
|
|
82
|
+
/** Operator-readable explanation naming the missing config key */
|
|
83
|
+
readonly reason: string;
|
|
84
|
+
} | {
|
|
85
|
+
readonly kind: "plan";
|
|
86
|
+
readonly env: string;
|
|
87
|
+
readonly rung: DeployLadderRung;
|
|
88
|
+
readonly actions: readonly ItemAction[];
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Plan all transitions for a deploy event. Pure — performs no IO; callers
|
|
92
|
+
* fetch item states through an adapter and execute the returned actions.
|
|
93
|
+
* @param input - Ladder, env, tracker, range context, and item states
|
|
94
|
+
* @returns Explanatory no-op or per-item action plan
|
|
95
|
+
*/
|
|
96
|
+
export declare function planTransitions(input: TransitionPlanInput): TransitionPlan;
|
|
97
|
+
//# sourceMappingURL=deploy-status-transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-status-transition.d.ts","sourceRoot":"","sources":["../../src/core/deploy-status-transition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure transition planner for deploy-status-sync (DSS-2).
|
|
3
|
+
*
|
|
4
|
+
* Given the resolved deploy ladder, a target environment, and the fetched
|
|
5
|
+
* tracker item states, decide — with zero IO — what should happen to each
|
|
6
|
+
* item: promote to the rung's done status (closing natively only at the
|
|
7
|
+
* universe's terminal env), skip items at-or-beyond the rung (never moving
|
|
8
|
+
* anything backward), skip containers per `leaf-only-lifecycle`, and turn an
|
|
9
|
+
* unconfigured environment into an explanatory no-op naming the exact
|
|
10
|
+
* missing config key. All status vocabulary is config-sourced via the DSS-1
|
|
11
|
+
* resolver's ladder; this module never invents status names.
|
|
12
|
+
* @module core/deploy-status-transition
|
|
13
|
+
*/
|
|
14
|
+
import { doneMapPath, } from "./deploy-status-sync.js";
|
|
15
|
+
/** Marker prefixing every managed comment the engine writes. */
|
|
16
|
+
export const DEPLOY_STATUS_SYNC_MARKER = "[lisa-deploy-status-sync]";
|
|
17
|
+
const PROD_SPELLINGS = new Set(["prod", "production"]);
|
|
18
|
+
/**
|
|
19
|
+
* Find the ladder rung for an environment, honoring the sole
|
|
20
|
+
* `prod` ↔ `production` alias (a ladder built from `branches.prod` may be
|
|
21
|
+
* addressed as `production` and vice versa).
|
|
22
|
+
* @param ladder - Resolved deploy ladder
|
|
23
|
+
* @param env - Requested environment name
|
|
24
|
+
* @returns The matching rung, or undefined when unconfigured
|
|
25
|
+
*/
|
|
26
|
+
function findRung(ladder, env) {
|
|
27
|
+
const exact = ladder.rungs.find(rung => rung.env === env);
|
|
28
|
+
if (exact !== undefined || !PROD_SPELLINGS.has(env))
|
|
29
|
+
return exact;
|
|
30
|
+
return ladder.rungs.find(rung => PROD_SPELLINGS.has(rung.env));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build the deterministic promotion comment body. No timestamps — a re-run
|
|
34
|
+
* of the same event must produce a byte-identical body so the managed
|
|
35
|
+
* comment upsert resolves to `unchanged` with zero edit calls.
|
|
36
|
+
* @param input - Planner input (env, branch, head)
|
|
37
|
+
* @param rung - Target rung
|
|
38
|
+
* @param close - Whether terminal closure applies
|
|
39
|
+
* @returns Marker-prefixed comment body
|
|
40
|
+
*/
|
|
41
|
+
function promotionBody(input, rung, close) {
|
|
42
|
+
const closure = close
|
|
43
|
+
? "\nTerminal environment reached; item closed natively (leaf-only-lifecycle)."
|
|
44
|
+
: "";
|
|
45
|
+
return `${DEPLOY_STATUS_SYNC_MARKER}\nDeploy status sync: "${input.env}" deploy of branch "${input.branch}" (head ${input.headSha}) → "${rung.doneStatus}".${closure}`;
|
|
46
|
+
}
|
|
47
|
+
/** Deterministic rollup body for skipped containers (env-independent). */
|
|
48
|
+
const CONTAINER_ROLLUP_BODY = `${DEPLOY_STATUS_SYNC_MARKER}\nRollup: container skipped per leaf-only-lifecycle — containers are never transitioned by deploy events; leaf items advance individually.`;
|
|
49
|
+
/**
|
|
50
|
+
* Whether an item is a container (epic-typed or has open children), per the
|
|
51
|
+
* assertLeaf semantics of the work-item contract.
|
|
52
|
+
* @param item - Fetched item state
|
|
53
|
+
* @returns True when the item must not be transitioned
|
|
54
|
+
*/
|
|
55
|
+
function isContainer(item) {
|
|
56
|
+
const normalizedType = (item.type ?? "")
|
|
57
|
+
.replace(/^type:/i, "")
|
|
58
|
+
.trim()
|
|
59
|
+
.toLowerCase();
|
|
60
|
+
return normalizedType === "epic" || item.openChildren > 0;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Plan the action for one item against the target rung.
|
|
64
|
+
* @param item - Fetched item state
|
|
65
|
+
* @param input - Planner input
|
|
66
|
+
* @param rung - Target rung
|
|
67
|
+
* @param close - Whether terminal closure applies at this rung
|
|
68
|
+
* @param doneStatuses - Ladder done statuses, lowest rung first
|
|
69
|
+
* @returns The planned action
|
|
70
|
+
*/
|
|
71
|
+
function planItem(item, input, rung, close, doneStatuses) {
|
|
72
|
+
if (isContainer(item)) {
|
|
73
|
+
return {
|
|
74
|
+
kind: "skip-container",
|
|
75
|
+
ref: item.ref,
|
|
76
|
+
reason: `container (type "${item.type ?? "unknown"}", ${String(item.openChildren)} open children) skipped per leaf-only-lifecycle`,
|
|
77
|
+
commentBody: CONTAINER_ROLLUP_BODY,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const currentIndex = item.currentStatus === undefined
|
|
81
|
+
? -1
|
|
82
|
+
: doneStatuses.indexOf(item.currentStatus);
|
|
83
|
+
if (item.closed) {
|
|
84
|
+
if (currentIndex === -1) {
|
|
85
|
+
return {
|
|
86
|
+
kind: "skip-unrecognized-status",
|
|
87
|
+
ref: item.ref,
|
|
88
|
+
reason: `closed at status "${item.currentStatus ?? "(none)"}", which is outside the configured ${doneMapPath(input.tracker)} vocabulary; not moving (config-bound vocabulary)`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
kind: "skip-at-or-beyond",
|
|
93
|
+
ref: item.ref,
|
|
94
|
+
reason: `already closed at "${item.currentStatus ?? ""}"`,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const targetIndex = doneStatuses.indexOf(rung.doneStatus);
|
|
98
|
+
if (currentIndex >= targetIndex) {
|
|
99
|
+
return {
|
|
100
|
+
kind: "skip-at-or-beyond",
|
|
101
|
+
ref: item.ref,
|
|
102
|
+
reason: `current status "${item.currentStatus ?? ""}" is at or beyond "${rung.doneStatus}"`,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
kind: "promote",
|
|
107
|
+
ref: item.ref,
|
|
108
|
+
doneStatus: rung.doneStatus,
|
|
109
|
+
close,
|
|
110
|
+
commentBody: promotionBody(input, rung, close),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Plan all transitions for a deploy event. Pure — performs no IO; callers
|
|
115
|
+
* fetch item states through an adapter and execute the returned actions.
|
|
116
|
+
* @param input - Ladder, env, tracker, range context, and item states
|
|
117
|
+
* @returns Explanatory no-op or per-item action plan
|
|
118
|
+
*/
|
|
119
|
+
export function planTransitions(input) {
|
|
120
|
+
const rung = findRung(input.ladder, input.env);
|
|
121
|
+
if (rung === undefined) {
|
|
122
|
+
return {
|
|
123
|
+
kind: "no-op",
|
|
124
|
+
env: input.env,
|
|
125
|
+
reason: `no-op: environment "${input.env}" has no configured done status — .lisa.config.json is missing ${doneMapPath(input.tracker)}.${input.env}. No transitions attempted.`,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const close = input.ladder.terminalEnv !== undefined &&
|
|
129
|
+
rung.env === input.ladder.terminalEnv;
|
|
130
|
+
const doneStatuses = input.ladder.rungs.map(entry => entry.doneStatus);
|
|
131
|
+
const actions = input.items.map(item => planItem(item, input, rung, close, doneStatuses));
|
|
132
|
+
return { kind: "plan", env: input.env, rung, actions };
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=deploy-status-transition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-status-transition.js","sourceRoot":"","sources":["../../src/core/deploy-status-transition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4hEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4hEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA8wMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/** Generated by scripts/generate-upstream-evidence-manifest.mjs. Do not edit. */
|
|
3
3
|
export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
4
4
|
"all/copy-contents/gitignore": "06b56376465d5421db55d0b04958bbc79fdbf33b42f0559fe5ef6875ced1160f",
|
|
5
|
-
"all/copy-overwrite/scripts/lisa-work-item.mjs": "
|
|
5
|
+
"all/copy-overwrite/scripts/lisa-work-item.mjs": "5eb31c284e820a51312d4484f0669128007326af55ee515923fec33700d003a1",
|
|
6
6
|
"all/create-only/.claude/rules/PROJECT_RULES.md": "6e1c7923ad2a15356babc60c97e7f97be728d790af285b6a7cd7d1b4d39cd97f",
|
|
7
7
|
"all/create-only/.lisaignore": "3c9827e7e98daa46510b5357cd6dd9406da1821e64cc46d2eea9f311cd6d06b9",
|
|
8
8
|
"all/create-only/scripts/remote-agent-aws-setup.sh": "7677908a345891810d2104ba8b2fd1a8318bb29c408fb5ce0110d57beef9b556",
|
|
@@ -308,7 +308,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
308
308
|
"plugins/src/base/rules/eager/claim-archaeology.md": "96afa034075593dfb7433c5c990b472a6b6f7320332da42ef54b1f01fa45664b",
|
|
309
309
|
"plugins/src/base/rules/eager/claim-evidence-mapping.md": "d12a6153b8c22db2826153c479d107c7a885e22cbcdd49e4fd8193e0cbbe8ae3",
|
|
310
310
|
"plugins/src/base/rules/eager/coding-philosophy.md": "cf2c52032e0368d81f17f002fed5c957ab350d01fc4a43f66b5f366516bac54a",
|
|
311
|
-
"plugins/src/base/rules/eager/config-resolution.md": "
|
|
311
|
+
"plugins/src/base/rules/eager/config-resolution.md": "19eb8edca6913eff5b1a32cbfbca9e3c6ec85310781b425ecc4694610e884712",
|
|
312
312
|
"plugins/src/base/rules/eager/convergent-review.md": "ba4ba53863ef99be353c07c01195fa4ae2923ef2b2a5ad4427072802c260d208",
|
|
313
313
|
"plugins/src/base/rules/eager/dependency-decision-records.md": "e22888f107906992e863fca50f26c2c4b124da7132535cacfac71e4f3085728f",
|
|
314
314
|
"plugins/src/base/rules/eager/dependency-internalization-kit.md": "9e2cc78afffc477c14718390ed88c42f781911c51fb7c13dada497f9e956b1a3",
|
|
@@ -340,7 +340,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
340
340
|
"plugins/src/base/rules/reference/claim-archaeology.md": "fff025d47848c768d5b2c7047de744b7151eb2e44148d2df058c87310859457b",
|
|
341
341
|
"plugins/src/base/rules/reference/claim-evidence-mapping.md": "49a3bbf4e8a9a8ca9e13eeafa672517d077060cfeb5d9710881ec9f5c3f3ec75",
|
|
342
342
|
"plugins/src/base/rules/reference/coding-philosophy.md": "fed8381f16a5d6793a49d84d5813d62125808cb2f4981a558b119cf63e2586d9",
|
|
343
|
-
"plugins/src/base/rules/reference/config-resolution.md": "
|
|
343
|
+
"plugins/src/base/rules/reference/config-resolution.md": "ee6b1f8e92954546181a6b36b61d0a32501ad5aea89b5b258e2eeb223047a8f7",
|
|
344
344
|
"plugins/src/base/rules/reference/convergent-review.md": "788a9d4dc2af7a928c3ccbb4d53a92856bb3544941ce512cfe38068d6b35850d",
|
|
345
345
|
"plugins/src/base/rules/reference/dependency-decision-records.md": "84f9fb8fa0a606307e828ec355ccbf2258beeeb88795dd113abe9bb2c37db39f",
|
|
346
346
|
"plugins/src/base/rules/reference/dependency-internalization-kit.md": "8c8e9bddbe2165905c3919ae9dd3d131b557cf9c7eb370393dfa85827076c73b",
|
|
@@ -6306,6 +6306,15 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6306
6306
|
"src/cli/check-learnings-budget-cmd.ts": true,
|
|
6307
6307
|
"src/cli/cross-pollinate-cmd.ts": true,
|
|
6308
6308
|
"src/cli/cross-pollinate-nudge.ts": true,
|
|
6309
|
+
"src/cli/deploy-status-adapter-github.ts": true,
|
|
6310
|
+
"src/cli/deploy-status-adapter-jira.ts": true,
|
|
6311
|
+
"src/cli/deploy-status-adapter-linear.ts": true,
|
|
6312
|
+
"src/cli/deploy-status-adapter-shared.ts": true,
|
|
6313
|
+
"src/cli/deploy-status-adapter.ts": true,
|
|
6314
|
+
"src/cli/deploy-status-refs.ts": true,
|
|
6315
|
+
"src/cli/deploy-status-sync-cmd.ts": true,
|
|
6316
|
+
"src/cli/deploy-status-sync-engine.ts": true,
|
|
6317
|
+
"src/cli/deploy-status-sync-exec.ts": true,
|
|
6309
6318
|
"src/cli/doctor-kane.ts": true,
|
|
6310
6319
|
"src/cli/doctor-legacy-overlay.ts": true,
|
|
6311
6320
|
"src/cli/doctor-monitor-thresholds.ts": true,
|
|
@@ -6338,6 +6347,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6338
6347
|
"src/cli/health-cmd.ts": true,
|
|
6339
6348
|
"src/cli/index.ts": true,
|
|
6340
6349
|
"src/cli/kane-cmd.ts": true,
|
|
6350
|
+
"src/cli/kane-commands.ts": true,
|
|
6341
6351
|
"src/cli/print-update-warning.ts": true,
|
|
6342
6352
|
"src/cli/prompts.ts": true,
|
|
6343
6353
|
"src/cli/remote-environment-catalog.ts": true,
|
|
@@ -6436,6 +6446,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6436
6446
|
"src/core/config-field-validation.ts": true,
|
|
6437
6447
|
"src/core/config.ts": true,
|
|
6438
6448
|
"src/core/deploy-status-sync.ts": true,
|
|
6449
|
+
"src/core/deploy-status-transition.ts": true,
|
|
6439
6450
|
"src/core/git-service.ts": true,
|
|
6440
6451
|
"src/core/index.ts": true,
|
|
6441
6452
|
"src/core/instruction-files-migration.ts": true,
|
|
@@ -6647,6 +6658,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6647
6658
|
"tests/fixtures/wiki-safety/allowed-contacts.md": true,
|
|
6648
6659
|
"tests/fixtures/wiki-safety/redaction-source.md": true,
|
|
6649
6660
|
"tests/helpers/__fixtures__/wiki-status-fixture.ts": true,
|
|
6661
|
+
"tests/helpers/deploy-status-cmd-fixture.ts": true,
|
|
6650
6662
|
"tests/helpers/readiness-workflow-fixtures.ts": true,
|
|
6651
6663
|
"tests/helpers/safety-net-guard-fixtures.ts": true,
|
|
6652
6664
|
"tests/helpers/safety-net-guard-harness.ts": true,
|
|
@@ -6676,6 +6688,14 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6676
6688
|
"tests/unit/claude/claude-md-installer.test.ts": true,
|
|
6677
6689
|
"tests/unit/cli/apply.test.ts": true,
|
|
6678
6690
|
"tests/unit/cli/check-learnings-budget-cmd.test.ts": true,
|
|
6691
|
+
"tests/unit/cli/deploy-status-adapter-github.test.ts": true,
|
|
6692
|
+
"tests/unit/cli/deploy-status-adapter-jira.test.ts": true,
|
|
6693
|
+
"tests/unit/cli/deploy-status-adapter-linear.test.ts": true,
|
|
6694
|
+
"tests/unit/cli/deploy-status-refs-hardening.test.ts": true,
|
|
6695
|
+
"tests/unit/cli/deploy-status-refs.test.ts": true,
|
|
6696
|
+
"tests/unit/cli/deploy-status-sync-cmd-exec.test.ts": true,
|
|
6697
|
+
"tests/unit/cli/deploy-status-sync-cmd-output.test.ts": true,
|
|
6698
|
+
"tests/unit/cli/deploy-status-sync-cmd.test.ts": true,
|
|
6679
6699
|
"tests/unit/cli/doctor-kane.test.ts": true,
|
|
6680
6700
|
"tests/unit/cli/doctor-monitor-thresholds.test.ts": true,
|
|
6681
6701
|
"tests/unit/cli/doctor-readiness-blockers.test.ts": true,
|
|
@@ -6805,6 +6825,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6805
6825
|
"tests/unit/core/deploy-status-sync-config.test.ts": true,
|
|
6806
6826
|
"tests/unit/core/deploy-status-sync-errors.test.ts": true,
|
|
6807
6827
|
"tests/unit/core/deploy-status-sync.test.ts": true,
|
|
6828
|
+
"tests/unit/core/deploy-status-transition.test.ts": true,
|
|
6808
6829
|
"tests/unit/core/instruction-files-migration.test.ts": true,
|
|
6809
6830
|
"tests/unit/core/kane-cli.test.ts": true,
|
|
6810
6831
|
"tests/unit/core/kane-pilot.test.ts": true,
|