@codyswann/lisa 4.22.7 → 4.22.9
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/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +22 -13
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/sync/lifecycle-defaults.d.ts +21 -0
- package/dist/sync/lifecycle-defaults.d.ts.map +1 -1
- package/dist/sync/lifecycle-defaults.js +21 -1
- package/dist/sync/lifecycle-defaults.js.map +1 -1
- package/dist/sync/registry.d.ts.map +1 -1
- package/dist/sync/registry.js +7 -1
- package/dist/sync/registry.js.map +1 -1
- package/package.json +3 -3
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/SKILL.md +6 -5
- package/plugins/lisa/.codex-plugin/skills/lisa-github-prd-intake/SKILL.md +6 -5
- package/plugins/lisa/.codex-plugin/skills/lisa-github-sync/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-write-prd/SKILL.md +7 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +6 -5
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-sync/SKILL.md +3 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +6 -5
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-evidence/SKILL.md +12 -11
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-prd-intake/SKILL.md +6 -5
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-sync/SKILL.md +36 -20
- package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +22 -2
- package/plugins/lisa/rules/reference/config-resolution.md +30 -3
- package/plugins/lisa/scripts/resolve-lifecycle-role.mjs +340 -0
- package/plugins/lisa/skills/lisa-github-build-intake/SKILL.md +6 -5
- package/plugins/lisa/skills/lisa-github-prd-intake/SKILL.md +6 -5
- package/plugins/lisa/skills/lisa-github-sync/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-github-write-prd/SKILL.md +7 -3
- package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +6 -5
- package/plugins/lisa/skills/lisa-jira-sync/SKILL.md +3 -1
- package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +6 -5
- package/plugins/lisa/skills/lisa-linear-evidence/SKILL.md +12 -11
- package/plugins/lisa/skills/lisa-linear-prd-intake/SKILL.md +6 -5
- package/plugins/lisa/skills/lisa-linear-sync/SKILL.md +36 -20
- package/plugins/lisa/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
- package/plugins/lisa/skills/lisa-tracker-sync/SKILL.md +22 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/scripts/resolve-lifecycle-role.mjs +340 -0
- package/plugins/lisa-agy/skills/lisa-github-build-intake/SKILL.md +6 -5
- package/plugins/lisa-agy/skills/lisa-github-prd-intake/SKILL.md +6 -5
- package/plugins/lisa-agy/skills/lisa-github-sync/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-github-write-prd/SKILL.md +7 -3
- package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +6 -5
- package/plugins/lisa-agy/skills/lisa-jira-sync/SKILL.md +3 -1
- package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +6 -5
- package/plugins/lisa-agy/skills/lisa-linear-evidence/SKILL.md +12 -11
- package/plugins/lisa-agy/skills/lisa-linear-prd-intake/SKILL.md +6 -5
- package/plugins/lisa-agy/skills/lisa-linear-sync/SKILL.md +36 -20
- package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
- package/plugins/lisa-agy/skills/lisa-tracker-sync/SKILL.md +22 -2
- 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 +30 -3
- package/plugins/lisa-copilot/scripts/resolve-lifecycle-role.mjs +340 -0
- package/plugins/lisa-copilot/skills/lisa-github-build-intake/SKILL.md +6 -5
- package/plugins/lisa-copilot/skills/lisa-github-prd-intake/SKILL.md +6 -5
- package/plugins/lisa-copilot/skills/lisa-github-sync/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-github-write-prd/SKILL.md +7 -3
- package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +6 -5
- package/plugins/lisa-copilot/skills/lisa-jira-sync/SKILL.md +3 -1
- package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +6 -5
- package/plugins/lisa-copilot/skills/lisa-linear-evidence/SKILL.md +12 -11
- package/plugins/lisa-copilot/skills/lisa-linear-prd-intake/SKILL.md +6 -5
- package/plugins/lisa-copilot/skills/lisa-linear-sync/SKILL.md +36 -20
- package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
- package/plugins/lisa-copilot/skills/lisa-tracker-sync/SKILL.md +22 -2
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +30 -3
- package/plugins/lisa-cursor/scripts/resolve-lifecycle-role.mjs +340 -0
- package/plugins/lisa-cursor/skills/lisa-github-build-intake/SKILL.md +6 -5
- package/plugins/lisa-cursor/skills/lisa-github-prd-intake/SKILL.md +6 -5
- package/plugins/lisa-cursor/skills/lisa-github-sync/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-github-write-prd/SKILL.md +7 -3
- package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +6 -5
- package/plugins/lisa-cursor/skills/lisa-jira-sync/SKILL.md +3 -1
- package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +6 -5
- package/plugins/lisa-cursor/skills/lisa-linear-evidence/SKILL.md +12 -11
- package/plugins/lisa-cursor/skills/lisa-linear-prd-intake/SKILL.md +6 -5
- package/plugins/lisa-cursor/skills/lisa-linear-sync/SKILL.md +36 -20
- package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
- package/plugins/lisa-cursor/skills/lisa-tracker-sync/SKILL.md +22 -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/reference/config-resolution.md +30 -3
- package/plugins/src/base/scripts/resolve-lifecycle-role.mjs +340 -0
- package/plugins/src/base/skills/lisa-github-build-intake/SKILL.md +6 -5
- package/plugins/src/base/skills/lisa-github-prd-intake/SKILL.md +6 -5
- package/plugins/src/base/skills/lisa-github-sync/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-github-write-prd/SKILL.md +7 -3
- package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +6 -5
- package/plugins/src/base/skills/lisa-jira-sync/SKILL.md +3 -1
- package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +6 -5
- package/plugins/src/base/skills/lisa-linear-evidence/SKILL.md +12 -11
- package/plugins/src/base/skills/lisa-linear-prd-intake/SKILL.md +6 -5
- package/plugins/src/base/skills/lisa-linear-sync/SKILL.md +36 -20
- package/plugins/src/base/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +95 -44
- package/plugins/src/base/skills/lisa-tracker-sync/SKILL.md +22 -2
|
@@ -59,6 +59,27 @@ export declare const BUILD_LABEL_DEFAULTS: {
|
|
|
59
59
|
* ever explicitly marked ready. JIRA avoids this because `jira.workflow.ready`
|
|
60
60
|
* is `Ready` while a fresh ticket lands in the project default; this mirrors
|
|
61
61
|
* that. Do not "simplify" it back to `Todo`.
|
|
62
|
+
*
|
|
63
|
+
* **`review` is deliberately ABSENT — do not add it back.** It is an optional
|
|
64
|
+
* role (`config-resolution` "review is optional … projects that keep the ticket
|
|
65
|
+
* in `claimed` until terminal can omit it and lifecycle skills will skip the
|
|
66
|
+
* intermediate transition"), and a default here defeats that promise twice
|
|
67
|
+
* over. This map is a `defaultValue` in `sync/registry`, so `lisa sync`
|
|
68
|
+
* MATERIALIZES it into a project's `.lisa.config.json` — a project that
|
|
69
|
+
* deliberately omitted `review` would find it written back in. And as a
|
|
70
|
+
* resolution fallback it makes "unset" indistinguishable from "not customized",
|
|
71
|
+
* so no project can express "we have no agent review step".
|
|
72
|
+
*
|
|
73
|
+
* Measured consequence on a downstream team: with `review` unset, agents still
|
|
74
|
+
* moved two issues into a human-only review state. `In Review` here was the
|
|
75
|
+
* seed; the `type`-aware positional fallback then picked the lowest-position
|
|
76
|
+
* unbound `started` state, which on that board ranked behind `Blocked`
|
|
77
|
+
* (-1989.26) and `In Progress` (-1478.50) at -1209.69 — a state no config
|
|
78
|
+
* named, chosen by board position.
|
|
79
|
+
*
|
|
80
|
+
* {@link BUILD_LABEL_DEFAULTS} has no `review` key for the same reason, and
|
|
81
|
+
* `lisa-jira-evidence/scripts/post-evidence.sh` resolves review with an EMPTY
|
|
82
|
+
* default and an explicit skip branch. All three vendors now agree.
|
|
62
83
|
*/
|
|
63
84
|
export declare const LINEAR_WORKFLOW_DEFAULTS: JsonValue;
|
|
64
85
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-defaults.d.ts","sourceRoot":"","sources":["../../src/sync/lifecycle-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;CAWvB,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"lifecycle-defaults.d.ts","sourceRoot":"","sources":["../../src/sync/lifecycle-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;CAWvB,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAKtC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAShC,CAAC"}
|
|
@@ -58,11 +58,31 @@ export const BUILD_LABEL_DEFAULTS = {
|
|
|
58
58
|
* ever explicitly marked ready. JIRA avoids this because `jira.workflow.ready`
|
|
59
59
|
* is `Ready` while a fresh ticket lands in the project default; this mirrors
|
|
60
60
|
* that. Do not "simplify" it back to `Todo`.
|
|
61
|
+
*
|
|
62
|
+
* **`review` is deliberately ABSENT — do not add it back.** It is an optional
|
|
63
|
+
* role (`config-resolution` "review is optional … projects that keep the ticket
|
|
64
|
+
* in `claimed` until terminal can omit it and lifecycle skills will skip the
|
|
65
|
+
* intermediate transition"), and a default here defeats that promise twice
|
|
66
|
+
* over. This map is a `defaultValue` in `sync/registry`, so `lisa sync`
|
|
67
|
+
* MATERIALIZES it into a project's `.lisa.config.json` — a project that
|
|
68
|
+
* deliberately omitted `review` would find it written back in. And as a
|
|
69
|
+
* resolution fallback it makes "unset" indistinguishable from "not customized",
|
|
70
|
+
* so no project can express "we have no agent review step".
|
|
71
|
+
*
|
|
72
|
+
* Measured consequence on a downstream team: with `review` unset, agents still
|
|
73
|
+
* moved two issues into a human-only review state. `In Review` here was the
|
|
74
|
+
* seed; the `type`-aware positional fallback then picked the lowest-position
|
|
75
|
+
* unbound `started` state, which on that board ranked behind `Blocked`
|
|
76
|
+
* (-1989.26) and `In Progress` (-1478.50) at -1209.69 — a state no config
|
|
77
|
+
* named, chosen by board position.
|
|
78
|
+
*
|
|
79
|
+
* {@link BUILD_LABEL_DEFAULTS} has no `review` key for the same reason, and
|
|
80
|
+
* `lisa-jira-evidence/scripts/post-evidence.sh` resolves review with an EMPTY
|
|
81
|
+
* default and an explicit skip branch. All three vendors now agree.
|
|
61
82
|
*/
|
|
62
83
|
export const LINEAR_WORKFLOW_DEFAULTS = {
|
|
63
84
|
ready: "Ready",
|
|
64
85
|
claimed: "In Progress",
|
|
65
|
-
review: "In Review",
|
|
66
86
|
blocked: "Blocked",
|
|
67
87
|
done: { dev: "On Dev", staging: "On Stg", production: "Done" },
|
|
68
88
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-defaults.js","sourceRoot":"","sources":["../../src/sync/lifecycle-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,cAAc;IACrB,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,gBAAgB;IACzB,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,qBAAqB;IAClC,IAAI,EAAE;QACJ,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,aAAa;KAC1B;CACO,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"lifecycle-defaults.js","sourceRoot":"","sources":["../../src/sync/lifecycle-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,cAAc;IACrB,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,gBAAgB;IACzB,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,qBAAqB;IAClC,IAAI,EAAE;QACJ,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,aAAa;KAC1B;CACO,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAc;IACjD,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE;CAC/D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,qBAAqB;CAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAO9D;;;;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;AAMF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAO9D;;;;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;AAMF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,EA0KjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA0C/C,CAAC"}
|
package/dist/sync/registry.js
CHANGED
|
@@ -156,10 +156,16 @@ export const SYNC_REGISTRY = [
|
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
key: "jira.workflow",
|
|
159
|
+
// `review` is deliberately absent — it is an OPTIONAL role, and a
|
|
160
|
+
// `defaultValue` here is materialized into a project's `.lisa.config.json`
|
|
161
|
+
// by `lisa sync`, so seeding it would hand every JIRA project a review hop
|
|
162
|
+
// it never asked for. `lisa-jira-evidence/scripts/post-evidence.sh` already
|
|
163
|
+
// resolves review with an empty default and an explicit skip branch; this
|
|
164
|
+
// makes the registry agree with the implementation rather than contradict
|
|
165
|
+
// it. Same reasoning as LINEAR_WORKFLOW_DEFAULTS and BUILD_LABEL_DEFAULTS.
|
|
159
166
|
defaultValue: {
|
|
160
167
|
ready: "Ready",
|
|
161
168
|
claimed: "In Progress",
|
|
162
|
-
review: "Code Review",
|
|
163
169
|
blocked: "Blocked",
|
|
164
170
|
done: { dev: "On Dev", staging: "On Stg", production: "Done" },
|
|
165
171
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
"zod-validation-error": "^4.0.0"
|
|
162
162
|
},
|
|
163
163
|
"name": "@codyswann/lisa",
|
|
164
|
-
"version": "4.22.
|
|
164
|
+
"version": "4.22.9",
|
|
165
165
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
166
166
|
"main": "dist/index.js",
|
|
167
167
|
"exports": {
|
|
@@ -300,6 +300,6 @@
|
|
|
300
300
|
"vite": "^8.0.16"
|
|
301
301
|
},
|
|
302
302
|
"type": "module",
|
|
303
|
-
"lisaReleaseCommit": "
|
|
304
|
-
"gitHead": "
|
|
303
|
+
"lisaReleaseCommit": "b95be38aac7f06731ab4ff82a7ebea02aeeef381",
|
|
304
|
+
"gitHead": "b95be38aac7f06731ab4ff82a7ebea02aeeef381"
|
|
305
305
|
}
|
|
@@ -38,11 +38,12 @@ Build-queue label names are read from `.lisa.config.json` `github.labels.build.*
|
|
|
38
38
|
```bash
|
|
39
39
|
# Read role with default fallback. Local overrides global per-key.
|
|
40
40
|
read_role() {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
# Single resolver — see config-resolution "The single resolver".
|
|
42
|
+
# Exit 0 + empty output means an OPTIONAL role is unset: skip that transition,
|
|
43
|
+
# never substitute the second argument. A default on an optional role is what
|
|
44
|
+
# made "unset" indistinguishable from "not customized".
|
|
45
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
|
|
46
|
+
--role "$1" --vendor github --intent "${3:-read}" 2>/dev/null
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
READY=$(read_role ready "status:ready")
|
|
@@ -21,11 +21,12 @@ PRD label names are read from `.lisa.config.json` `github.labels.prd.*`, falling
|
|
|
21
21
|
```bash
|
|
22
22
|
# Read role with default fallback. Local overrides global per-key.
|
|
23
23
|
read_role() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
# Single resolver — see config-resolution "The single resolver".
|
|
25
|
+
# Exit 0 + empty output means an OPTIONAL role is unset: skip that transition,
|
|
26
|
+
# never substitute the second argument. A default on an optional role is what
|
|
27
|
+
# made "unset" indistinguishable from "not customized".
|
|
28
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
|
|
29
|
+
--role "$1" --vendor github --intent "${3:-read}" 2>/dev/null
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
READY=$(read_role ready "prd-ready")
|
|
@@ -79,6 +79,8 @@ Based on the milestone, suggest (but do NOT automatically perform) a label trans
|
|
|
79
79
|
|
|
80
80
|
The actual `status:in-progress` flip is owned by `lisa-github-build-intake` (claim) and `lisa-github-agent`. The configured `done` flip is owned by the build-intake owner after a successful build and evidence post. This skill never relabels.
|
|
81
81
|
|
|
82
|
+
Every suggested transition is bound by the **Tracker status vocabulary** section of `lisa-tracker-sync` — cite it, do not restate the policy. GitHub has **no review lane** (`BUILD_LABEL_DEFAULTS` seeds no `review` key, and `config-resolution` records "no default review label"), so the `pr-ready` milestone suggests the configured `done` label directly; there is no intermediate hop to skip. Resolve every label through the shared resolver rather than an inlined helper.
|
|
83
|
+
|
|
82
84
|
### Step 5: Parent Status Rollup (`--rollup`)
|
|
83
85
|
|
|
84
86
|
When invoked with `--rollup`, this skill **derives a parent/container issue's `status:*` label from the roll-up of its child sub-issues** instead of posting a milestone update on a leaf. This implements the GitHub sub-issue-completion arm of the **Parent status rollup (the state machine)** section of the `leaf-only-lifecycle` rule — cite that rule, do not restate the policy. It is the sync-side complement to the write-time labeling (`lisa-github-write-issue`), the validate-time S15 gate (`lisa-github-validate-issue`), and the claim-time gate (`lisa-github-build-intake`); all four cite the same rule so the classification never drifts.
|
|
@@ -20,9 +20,13 @@ ORG=$(jq -r '.github.org // empty' .lisa.config.local.json 2>/dev/null); ORG="${
|
|
|
20
20
|
REPO=$(jq -r '.github.repo // empty' .lisa.config.local.json 2>/dev/null); REPO="${REPO:-$(jq -r '.github.repo // empty' .lisa.config.json)}"
|
|
21
21
|
[ -z "$ORG" ] || [ -z "$REPO" ] && { echo "Error: github.org / github.repo not set in .lisa.config.json."; exit 1; }
|
|
22
22
|
|
|
23
|
-
read_role() {
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
read_role() {
|
|
24
|
+
# Single resolver — see config-resolution "The single resolver".
|
|
25
|
+
# Exit 0 + empty output means an OPTIONAL role is unset: skip that transition,
|
|
26
|
+
# never substitute the second argument. A default on an optional role is what
|
|
27
|
+
# made "unset" indistinguishable from "not customized".
|
|
28
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
|
|
29
|
+
--role "$1" --vendor github --intent "${3:-read}" 2>/dev/null
|
|
26
30
|
}
|
|
27
31
|
# Resolve the FULL PRD lifecycle vocabulary from config (never hard-code names) — needed so the
|
|
28
32
|
# "exactly one role" reconcile and the past-ready check work for projects that renamed any label.
|
|
@@ -22,11 +22,12 @@ Status names are read from `.lisa.config.json` `jira.workflow.*`, falling back t
|
|
|
22
22
|
```bash
|
|
23
23
|
# Read role with default fallback. Local overrides global per-key.
|
|
24
24
|
read_role() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
# Single resolver — see config-resolution "The single resolver".
|
|
26
|
+
# Exit 0 + empty output means an OPTIONAL role is unset: skip that transition,
|
|
27
|
+
# never substitute the second argument. A default on an optional role is what
|
|
28
|
+
# made "unset" indistinguishable from "not customized".
|
|
29
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
|
|
30
|
+
--role "$1" --vendor jira --intent "${3:-read}" 2>/dev/null
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
READY=$(read_role ready "Ready")
|
|
@@ -75,7 +75,9 @@ Based on the milestone, suggest (but don't automatically perform) a status trans
|
|
|
75
75
|
| PR ready | configured `jira.workflow.review` status, or no transition when unconfigured |
|
|
76
76
|
| PR merged | configured `jira.workflow.done` status for the PR's target environment (env-keyed `done` resolved via `deploy.branches`), or no transition when unconfigured |
|
|
77
77
|
|
|
78
|
-
Every suggested
|
|
78
|
+
Every suggested transition is bound by the **Tracker status vocabulary** section of `lisa-tracker-sync` — cite it, do not restate the policy. It is shared by all three vendor arms so the bar cannot drift between them, and it carries the two consequences that matter here: a milestone whose role is unset gets a comment rather than a transition, and a fallback may inform a read but never supply a write target.
|
|
79
|
+
|
|
80
|
+
`review` is optional on JIRA and has no default. Resolve it through the shared resolver rather than an inlined helper — `lisa-jira-evidence/scripts/post-evidence.sh` already models the correct behaviour (empty default, explicit skip branch, `leaving <ID> in its current (claimed) status`).
|
|
79
81
|
|
|
80
82
|
### Step 5: Parent Status Rollup (`--rollup`)
|
|
81
83
|
|
|
@@ -23,11 +23,12 @@ Build-queue **workflow state** names are read from `.lisa.config.json` `linear.w
|
|
|
23
23
|
```bash
|
|
24
24
|
# Read role with default fallback. Local overrides global per-key.
|
|
25
25
|
read_role() {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
# Single resolver — see config-resolution "The single resolver".
|
|
27
|
+
# Exit 0 + empty output means an OPTIONAL role is unset: skip that transition,
|
|
28
|
+
# never substitute the second argument. A default on an optional role is what
|
|
29
|
+
# made "unset" indistinguishable from "not customized".
|
|
30
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
|
|
31
|
+
--role "$1" --vendor linear --intent "${3:-read}" 2>/dev/null
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
READY=$(read_role ready "Ready")
|
|
@@ -12,21 +12,20 @@ Post verification evidence to a Linear Issue and transition it from the configur
|
|
|
12
12
|
|
|
13
13
|
## Workflow resolution
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Resolve every lifecycle role through the shared resolver — never an inlined `read_role` helper. Twelve skills used to inline their own and produced **eleven different implementations**, which is how the vendors drifted apart on this exact contract.
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
local_v=$(jq -r ".linear.workflow.${role} // empty" .lisa.config.local.json 2>/dev/null)
|
|
22
|
-
global_v=$(jq -r ".linear.workflow.${role} // empty" .lisa.config.json 2>/dev/null)
|
|
23
|
-
echo "${local_v:-${global_v:-$default}}"
|
|
18
|
+
resolve() { # role, intent -> value on stdout; empty when an optional role is unset
|
|
19
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
|
|
20
|
+
--role "$1" --vendor linear --intent "${2:-read}" 2>/dev/null
|
|
24
21
|
}
|
|
25
22
|
|
|
26
|
-
CLAIMED=$(
|
|
27
|
-
REVIEW=$(
|
|
23
|
+
CLAIMED=$(resolve claimed write)
|
|
24
|
+
REVIEW=$(resolve review write)
|
|
28
25
|
```
|
|
29
26
|
|
|
27
|
+
**`review` is OPTIONAL and has no default.** An empty `REVIEW` means the project does not run an agent review step, and this skill **skips the transition entirely**, leaving the Issue in `claimed` — the same behaviour `lisa-jira-evidence/scripts/post-evidence.sh` has always had. Do not substitute `In Review`, and do not fall back to a state resolved by `type` or board position: a fallback may inform a read but must never supply a write target (`config-resolution`, R2). Resolving a state nobody configured is how agents reach human-only review lanes.
|
|
28
|
+
|
|
30
29
|
## Configuration
|
|
31
30
|
|
|
32
31
|
Reads `linear.workspace`, `linear.teamKey`, and `linear.workflow.*` from `.lisa.config.json` (with `.local` override).
|
|
@@ -93,9 +92,11 @@ Linear comments support markdown including `<details>` collapsibles, fenced code
|
|
|
93
92
|
|
|
94
93
|
## Phase 5 — Transition Status
|
|
95
94
|
|
|
96
|
-
|
|
95
|
+
**If `$REVIEW` is empty, skip this phase entirely** — post the evidence comment and leave the Issue in `$CLAIMED`. Report it plainly (`No linear.workflow.review configured; leaving <ID> in its current (claimed) state`) so the skip is visible rather than silent. This is a supported configuration, not a failure.
|
|
96
|
+
|
|
97
|
+
When `$REVIEW` is non-empty, update labels via `lisa-linear-access operation: save-issue` to remove `$CLAIMED` and add `$REVIEW`. Resolve label IDs first via `lisa-linear-access operation: list-issue-labels` (create the label via `create_issue_label` if it doesn't exist on the team).
|
|
97
98
|
|
|
98
|
-
The native Linear `state` field is
|
|
99
|
+
The native Linear `state` field is updated to `$REVIEW` **only when the resolver returned it from config**. Never resolve the state by searching the team for something review-shaped: on a board with more than one review-ish state that picks by position, not by intent, and the states most likely to be found that way are the human-only ones a project deliberately kept out of its config.
|
|
99
100
|
|
|
100
101
|
## Phase 6 — Report
|
|
101
102
|
|
|
@@ -21,11 +21,12 @@ PRD label names are read from `.lisa.config.json` `linear.labels.prd.*`, falling
|
|
|
21
21
|
```bash
|
|
22
22
|
# Read role with default fallback. Local overrides global per-key.
|
|
23
23
|
read_role() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
# Single resolver — see config-resolution "The single resolver".
|
|
25
|
+
# Exit 0 + empty output means an OPTIONAL role is unset: skip that transition,
|
|
26
|
+
# never substitute the second argument. A default on an optional role is what
|
|
27
|
+
# made "unset" indistinguishable from "not customized".
|
|
28
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
|
|
29
|
+
--role "$1" --vendor linear --intent "${3:-read}" 2>/dev/null
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
READY=$(read_role ready "prd-ready")
|
|
@@ -16,14 +16,25 @@ Reads `linear.workspace`, `linear.teamKey` from `.lisa.config.json` (with `.loca
|
|
|
16
16
|
|
|
17
17
|
Callers (planning skills, lifecycle skills) invoke this skill at:
|
|
18
18
|
|
|
19
|
-
| Milestone | What to post |
|
|
20
|
-
|
|
21
|
-
| Plan created | Plan contents (sections + ordered tasks) as a comment
|
|
22
|
-
| Implementation in progress | Branch URL + first commit
|
|
23
|
-
| PR ready for review | PR URL + summary, the implementation handoff comment,
|
|
24
|
-
| PR merged | Merge SHA + deploy environment (if known)
|
|
19
|
+
| Milestone | What to post | Suggested role |
|
|
20
|
+
|-----------|--------------|----------------|
|
|
21
|
+
| Plan created | Plan contents (sections + ordered tasks) as a comment | `ready` |
|
|
22
|
+
| Implementation in progress | Branch URL + first commit | `claimed` |
|
|
23
|
+
| PR ready for review | PR URL + summary, the implementation handoff comment | `review` — **optional; omitted by most projects, in which case there is no transition to suggest** |
|
|
24
|
+
| PR merged | Merge SHA + deploy environment (if known) | env-keyed `done`, **then run Phase 4b — mandatory when the merge target is a non-terminal env branch** |
|
|
25
|
+
|
|
26
|
+
**Roles, never literal state names.** Resolve each through the shared resolver; the state names above are whatever the project configured, and a role the project did not configure has no suggestion at all:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
resolve() {
|
|
30
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-lifecycle-role.mjs" \
|
|
31
|
+
--role "$1" --vendor linear --intent read 2>/dev/null
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**This skill SUGGESTS transitions. It never writes the lane.** That matches `lisa-jira-sync` ("suggest, but don't automatically perform") and `lisa-github-sync` ("this skill never relabels"), and it is what this skill's own dispatcher already advertises: `lisa-tracker-sync`'s description reads *"Suggests (never auto-transitions) the next status."* Lane writes belong to the build-intake / agent owner, which is already true on the other two trackers.
|
|
25
36
|
|
|
26
|
-
|
|
37
|
+
`--rollup` is the one exception and is documented in Phase 4b — parent derivation is its entire purpose and is separately gated.
|
|
27
38
|
|
|
28
39
|
## Input
|
|
29
40
|
|
|
@@ -82,20 +93,24 @@ When `$ARGUMENTS` includes `pr_url=<url>` for `pr-ready` or `pr-merged`, ensure
|
|
|
82
93
|
|
|
83
94
|
The PR branch/title/body identifier is the PR -> Linear side. This phase is the required Linear -> PR side.
|
|
84
95
|
|
|
85
|
-
## Phase 4 —
|
|
96
|
+
## Phase 4 — Suggest the Next State (never write it)
|
|
97
|
+
|
|
98
|
+
Name the suggested next state in the milestone comment and stop. **This skill does not set `stateId`.** The lane write belongs to `lisa-linear-build-intake` / `lisa-linear-agent`, exactly as the `status:*` write belongs to `lisa-github-build-intake` on GitHub.
|
|
86
99
|
|
|
87
|
-
|
|
100
|
+
Resolve the suggestion by role, and **say nothing when the role is unset**:
|
|
88
101
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- `
|
|
92
|
-
|
|
102
|
+
| Milestone | Role to resolve | When the role is unset |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| `plan-created` | `ready` | required — report a setup defect |
|
|
105
|
+
| `implementation-in-progress` | `claimed` | required — report a setup defect |
|
|
106
|
+
| `pr-ready` | `review` | **optional — suggest no transition; the Issue stays in `claimed`** |
|
|
107
|
+
| `pr-merged` | `done` for the PR's target env (via `deploy.branches`) | required — report a setup defect |
|
|
93
108
|
|
|
94
|
-
If
|
|
109
|
+
If a resolved state doesn't exist on the team, that is a setup defect — report it and point at `/lisa:setup:linear`. Never create a workflow state here: a state carries a `type` and a board position, and guessing either puts the Issue somewhere no human sanctioned. Equally, never *find* one: resolving a role by scanning the team for a state whose name or `type` looks right picks by board position, not intent, and the states that surface that way are the human-only lanes a project deliberately left out of its config.
|
|
95
110
|
|
|
96
|
-
|
|
111
|
+
> **Removed: `--update-state`.** This flag previously let a caller make Phase 4 write the state. It was the only lane-write path in any sync skill, and combined with a defaulted `review` role it moved Issues into review states that projects had never configured. Callers that relied on it should let the build-intake owner make the transition; `--rollup` is unaffected.
|
|
97
112
|
|
|
98
|
-
|
|
113
|
+
No single-lane verification is needed: an Issue holds exactly one workflow state by construction, so the two-lanes-at-once corruption the old label-driven lane could produce is unrepresentable. (It was not hypothetical — 16 issues carried two `status:*` labels at the time of the migration.)
|
|
99
114
|
|
|
100
115
|
## Phase 4b — Reconcile Native Auto-Close (Linear-specific)
|
|
101
116
|
|
|
@@ -116,13 +131,13 @@ When the caller passes `--rollup`, this skill **derives a parent/container's wor
|
|
|
116
131
|
|
|
117
132
|
**Resolve the child set the same way `lisa-linear-read-issue` does** — `lisa-linear-access operation: list-issues({project: <id>})` for a Project's Issues, or `lisa-linear-access operation: get-issue` per child for an Issue's sub-Issues (via `parentId`). Capture each child's workflow state. If the item has **no** children it is a leaf — rollup is N/A; behave as a normal milestone sync.
|
|
118
133
|
|
|
119
|
-
**Evaluate the required children over the env ladder `in-progress < dev < staging < production` (the ordered keys of the Linear env-keyed `done` map
|
|
134
|
+
**Evaluate the required children over the env ladder `in-progress < dev < staging < production` (the ordered keys of the Linear env-keyed `done` map) and take the first match** (canonical roles from `config-resolution`; the Linear state map is the configured `blocked`, `claimed`, optional `review`, and env-keyed `done` — resolve each by role, and treat an unset `review` as simply having no such rung):
|
|
120
135
|
|
|
121
136
|
| If among the required child leaves… | Derived parent role | Linear state |
|
|
122
137
|
|---|---|---|
|
|
123
138
|
| any child carries `Blocked` | `blocked` | `Blocked` |
|
|
124
139
|
| else **every** required child has shipped to some env (each at a `done`-map state, e.g. `On Dev`/`On Stg`/`Done`) | `done[min-env]` | the **least-advanced** env state among them (all `On Stg` → `On Stg`; mixed dev+staging → `On Dev`; all production → `Done`) |
|
|
125
|
-
| else any child has **started** (
|
|
140
|
+
| else any child has **started** (at the `claimed` state, at the `review` state where the project configures one, or shipped to an env while a sibling has not) | `claimed` | the configured `claimed` state |
|
|
126
141
|
| else (children exist, none started) | — | unchanged — parent keeps its non-ready container state |
|
|
127
142
|
|
|
128
143
|
- **Blocked dominates** — one blocked child surfaces `Blocked` on the parent even while siblings progress. It never says *which* child or *which kind* of hold; run `scripts/rollup-blocker-classification.mjs` over the resolved child graph and carry its per-class report — blocking leaf, path, and who must act — into the rollup note. A non-zero exit means it classified nothing; that is a failure to report, never an all-clear. See `leaf-only-lifecycle` → **Classifying a hold**.
|
|
@@ -131,13 +146,14 @@ When the caller passes `--rollup`, this skill **derives a parent/container's wor
|
|
|
131
146
|
- **Recursive** — a Project reaches an env only when its Issues have themselves rolled up to at least that env. Evaluate bottom-up.
|
|
132
147
|
- **Never roll a parent into the `ready` state** — `ready` is leaf-only. Rollup only moves the parent between non-ready container states.
|
|
133
148
|
|
|
134
|
-
**Single-environment collapse (this repo).** The env rungs resolve via the env-keyed `done` logic in `config-resolution`. In this repo `deploy.branches` declares only `production: main`, so `done` collapses to the single `Done` state, the only env rung is production, and the lifecycle is `
|
|
149
|
+
**Single-environment collapse (this repo).** The env rungs resolve via the env-keyed `done` logic in `config-resolution`. In this repo `deploy.branches` declares only `production: main`, so `done` collapses to the single `Done` state, the only env rung is production, and the lifecycle is `ready → claimed → done` with **no** dev/staging promotion hops and no configured `review` rung; the rollup never resolves a dev or staging `done`. Multi-environment projects keep the env-keyed map and roll a parent up to the intermediate env states.
|
|
135
150
|
|
|
136
151
|
**Apply the derived state** via `lisa-linear-access operation: save-issue` (Project or Issue), setting the parent's `stateId` to the derived role. Post an idempotent rollup comment naming the derived state and the child tally. Because the terminal `done` state is itself typed `completed`, a parent rolled to terminal is natively closed by the same write — there is no second closure step. **Safe default:** if the derived terminal cannot be resolved (ambiguous required-set or unresolvable env `done`), do not guess — post the derived suggestion as a comment and leave the parent's state untouched.
|
|
137
152
|
|
|
138
153
|
## Rules
|
|
139
154
|
|
|
140
|
-
- Never transition
|
|
155
|
+
- Never transition a leaf Issue's workflow `state` from this skill at all. `--rollup` (parent derivation, per the `leaf-only-lifecycle` rule) is the only write path that remains; every other milestone SUGGESTS a transition in its comment and nothing more. The state is the lifecycle lane, so a write here would move the item in the build queue.
|
|
156
|
+
- Never resolve a role by searching the team's states. Only a name the project configured may be written; a `type`- or position-derived match may inform a read and must never supply a write target (`config-resolution`, R2).
|
|
141
157
|
- Rollup derives a *parent's* workflow state from its children and never rolls a parent into the human-owned ready lane (never `$READY`). It cites the `leaf-only-lifecycle` rule by slug rather than restating the state machine.
|
|
142
158
|
- Never post empty or minimal comments — if a milestone has no meaningful content, skip the post.
|
|
143
159
|
- Do not delete prior milestone comments. They are the audit trail.
|