@codyswann/lisa 2.326.2 → 2.327.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/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +25 -23
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/sync/lifecycle-defaults.d.ts +61 -0
- package/dist/sync/lifecycle-defaults.d.ts.map +1 -0
- package/dist/sync/lifecycle-defaults.js +75 -0
- package/dist/sync/lifecycle-defaults.js.map +1 -0
- package/dist/sync/registry.d.ts.map +1 -1
- package/dist/sync/registry.js +15 -23
- package/dist/sync/registry.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/.codex-plugin/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +76 -66
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +2 -2
- package/plugins/lisa/agents/linear-agent.md +6 -6
- package/plugins/lisa/agents/linear-build-intake.md +3 -3
- package/plugins/lisa/rules/eager/rejection-detection.md +2 -2
- package/plugins/lisa/rules/reference/config-resolution.md +37 -9
- package/plugins/lisa/rules/reference/rejection-detection.md +2 -2
- package/plugins/lisa/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/lisa/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-tracker-sync/SKILL.md +2 -2
- package/plugins/lisa-agy/agents/linear-agent.md +6 -6
- package/plugins/lisa-agy/agents/linear-build-intake.md +3 -3
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/lisa-agy/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa-agy/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa-agy/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa-agy/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa-agy/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa-agy/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-tracker-sync/SKILL.md +2 -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/agents/linear-agent.agent.md +6 -6
- package/plugins/lisa-copilot/agents/linear-build-intake.agent.md +3 -3
- package/plugins/lisa-copilot/rules/eager/rejection-detection.md +2 -2
- package/plugins/lisa-copilot/rules/reference/config-resolution.md +37 -9
- package/plugins/lisa-copilot/rules/reference/rejection-detection.md +2 -2
- package/plugins/lisa-copilot/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/lisa-copilot/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa-copilot/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa-copilot/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa-copilot/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa-copilot/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa-copilot/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-tracker-sync/SKILL.md +2 -2
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/linear-agent.md +6 -6
- package/plugins/lisa-cursor/agents/linear-build-intake.md +3 -3
- package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +37 -9
- package/plugins/lisa-cursor/rules/rejection-detection-reference.mdc +2 -2
- package/plugins/lisa-cursor/rules/rejection-detection.mdc +2 -2
- package/plugins/lisa-cursor/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/lisa-cursor/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa-cursor/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa-cursor/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa-cursor/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa-cursor/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa-cursor/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-tracker-sync/SKILL.md +2 -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/agents/linear-agent.md +6 -6
- package/plugins/src/base/agents/linear-build-intake.md +3 -3
- package/plugins/src/base/rules/eager/rejection-detection.md +2 -2
- package/plugins/src/base/rules/reference/config-resolution.md +37 -9
- package/plugins/src/base/rules/reference/rejection-detection.md +2 -2
- package/plugins/src/base/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/src/base/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/src/base/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/src/base/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/src/base/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/src/base/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/src/base/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-tracker-sync/SKILL.md +2 -2
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in lifecycle role → name maps for each tracker vendor.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `sync/registry` so the vendor rationale below has room to be
|
|
5
|
+
* stated where the values live, rather than compressed to fit a file-length
|
|
6
|
+
* budget in the registry.
|
|
7
|
+
* @module sync/lifecycle-defaults
|
|
8
|
+
*/
|
|
9
|
+
import type { JsonValue } from "./json-path.js";
|
|
10
|
+
/**
|
|
11
|
+
* GitHub's build lifecycle, expressed as LABELS.
|
|
12
|
+
*
|
|
13
|
+
* Labels are not a preference here — GitHub Issues has no workflow-state field
|
|
14
|
+
* at all (only open/closed), so a label is the only lane available. Contrast
|
|
15
|
+
* {@link LINEAR_WORKFLOW_DEFAULTS}, which must NOT be modelled on this.
|
|
16
|
+
*/
|
|
17
|
+
export declare const BUILD_LABEL_DEFAULTS: {
|
|
18
|
+
readonly ready: "status:ready";
|
|
19
|
+
readonly claimed: "status:in-progress";
|
|
20
|
+
readonly blocked: "status:blocked";
|
|
21
|
+
readonly human_needed: "human-needed";
|
|
22
|
+
readonly done: {
|
|
23
|
+
readonly dev: "status:on-dev";
|
|
24
|
+
readonly staging: "status:on-stg";
|
|
25
|
+
readonly production: "status:done";
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Linear's build lifecycle, expressed as native workflow STATES — mirroring
|
|
30
|
+
* `jira.workflow`, not `github.labels`.
|
|
31
|
+
*
|
|
32
|
+
* Linear Issues carry first-class states with a machine-readable `type`
|
|
33
|
+
* (`backlog` / `unstarted` / `started` / `completed` / `canceled`), which is
|
|
34
|
+
* exactly the shape JIRA statuses have. Modelling Linear on the GitHub adapter
|
|
35
|
+
* (this map used to be `{...BUILD_LABEL_DEFAULTS}`) left TWO writers on one
|
|
36
|
+
* lifecycle: Linear's own git automations move `state` on merge while Lisa
|
|
37
|
+
* moved only labels, so the two disagreed permanently on any merge that did not
|
|
38
|
+
* run through a Lisa flow — and `On Dev` / `On Stg` could never appear on a
|
|
39
|
+
* board, cycle or insight, because Linear groups by state.
|
|
40
|
+
*
|
|
41
|
+
* The historical objection was that per-team state NAMES vary and get renamed.
|
|
42
|
+
* That is equally true of the JIRA statuses Lisa keys on regardless, and Linear
|
|
43
|
+
* additionally exposes the rename-proof `type` discriminator the lifecycle
|
|
44
|
+
* skills already use for terminal detection. Names live in config, so a rename
|
|
45
|
+
* is a one-key override.
|
|
46
|
+
*
|
|
47
|
+
* A stock Linear team ships `Todo`, `In Progress`, `In Review` and `Done` but
|
|
48
|
+
* NOT `Blocked`, `On Dev` or `On Stg`. `lisa-setup-linear` resolves each role
|
|
49
|
+
* and offers to create what is missing; it never invents a name silently. The
|
|
50
|
+
* env rungs must be typed `started`, never `completed` — see the
|
|
51
|
+
* `config-resolution` rule.
|
|
52
|
+
*/
|
|
53
|
+
export declare const LINEAR_WORKFLOW_DEFAULTS: JsonValue;
|
|
54
|
+
/**
|
|
55
|
+
* The PRD lifecycle, expressed as labels on every vendor that hosts PRDs as
|
|
56
|
+
* issues or projects. On Linear this stays label-driven even though the build
|
|
57
|
+
* lane did not: a PRD is a Linear PROJECT, and Projects carry their own status
|
|
58
|
+
* object rather than Issue workflow states.
|
|
59
|
+
*/
|
|
60
|
+
export declare const PRD_LABEL_DEFAULTS: JsonValue;
|
|
61
|
+
//# sourceMappingURL=lifecycle-defaults.d.ts.map
|
|
@@ -0,0 +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;;;;;;;;;;CAUvB,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAMtC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAShC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in lifecycle role → name maps for each tracker vendor.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `sync/registry` so the vendor rationale below has room to be
|
|
5
|
+
* stated where the values live, rather than compressed to fit a file-length
|
|
6
|
+
* budget in the registry.
|
|
7
|
+
* @module sync/lifecycle-defaults
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* GitHub's build lifecycle, expressed as LABELS.
|
|
11
|
+
*
|
|
12
|
+
* Labels are not a preference here — GitHub Issues has no workflow-state field
|
|
13
|
+
* at all (only open/closed), so a label is the only lane available. Contrast
|
|
14
|
+
* {@link LINEAR_WORKFLOW_DEFAULTS}, which must NOT be modelled on this.
|
|
15
|
+
*/
|
|
16
|
+
export const BUILD_LABEL_DEFAULTS = {
|
|
17
|
+
ready: "status:ready",
|
|
18
|
+
claimed: "status:in-progress",
|
|
19
|
+
blocked: "status:blocked",
|
|
20
|
+
human_needed: "human-needed",
|
|
21
|
+
done: {
|
|
22
|
+
dev: "status:on-dev",
|
|
23
|
+
staging: "status:on-stg",
|
|
24
|
+
production: "status:done",
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Linear's build lifecycle, expressed as native workflow STATES — mirroring
|
|
29
|
+
* `jira.workflow`, not `github.labels`.
|
|
30
|
+
*
|
|
31
|
+
* Linear Issues carry first-class states with a machine-readable `type`
|
|
32
|
+
* (`backlog` / `unstarted` / `started` / `completed` / `canceled`), which is
|
|
33
|
+
* exactly the shape JIRA statuses have. Modelling Linear on the GitHub adapter
|
|
34
|
+
* (this map used to be `{...BUILD_LABEL_DEFAULTS}`) left TWO writers on one
|
|
35
|
+
* lifecycle: Linear's own git automations move `state` on merge while Lisa
|
|
36
|
+
* moved only labels, so the two disagreed permanently on any merge that did not
|
|
37
|
+
* run through a Lisa flow — and `On Dev` / `On Stg` could never appear on a
|
|
38
|
+
* board, cycle or insight, because Linear groups by state.
|
|
39
|
+
*
|
|
40
|
+
* The historical objection was that per-team state NAMES vary and get renamed.
|
|
41
|
+
* That is equally true of the JIRA statuses Lisa keys on regardless, and Linear
|
|
42
|
+
* additionally exposes the rename-proof `type` discriminator the lifecycle
|
|
43
|
+
* skills already use for terminal detection. Names live in config, so a rename
|
|
44
|
+
* is a one-key override.
|
|
45
|
+
*
|
|
46
|
+
* A stock Linear team ships `Todo`, `In Progress`, `In Review` and `Done` but
|
|
47
|
+
* NOT `Blocked`, `On Dev` or `On Stg`. `lisa-setup-linear` resolves each role
|
|
48
|
+
* and offers to create what is missing; it never invents a name silently. The
|
|
49
|
+
* env rungs must be typed `started`, never `completed` — see the
|
|
50
|
+
* `config-resolution` rule.
|
|
51
|
+
*/
|
|
52
|
+
export const LINEAR_WORKFLOW_DEFAULTS = {
|
|
53
|
+
ready: "Todo",
|
|
54
|
+
claimed: "In Progress",
|
|
55
|
+
review: "In Review",
|
|
56
|
+
blocked: "Blocked",
|
|
57
|
+
done: { dev: "On Dev", staging: "On Stg", production: "Done" },
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* The PRD lifecycle, expressed as labels on every vendor that hosts PRDs as
|
|
61
|
+
* issues or projects. On Linear this stays label-driven even though the build
|
|
62
|
+
* lane did not: a PRD is a Linear PROJECT, and Projects carry their own status
|
|
63
|
+
* object rather than Issue workflow states.
|
|
64
|
+
*/
|
|
65
|
+
export const PRD_LABEL_DEFAULTS = {
|
|
66
|
+
draft: "prd-draft",
|
|
67
|
+
ready: "prd-ready",
|
|
68
|
+
in_review: "prd-in-review",
|
|
69
|
+
blocked: "prd-blocked",
|
|
70
|
+
ticketed: "prd-ticketed",
|
|
71
|
+
shipped: "prd-shipped",
|
|
72
|
+
verified: "prd-verified",
|
|
73
|
+
sentinel: "prd-intake-feedback",
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=lifecycle-defaults.js.map
|
|
@@ -0,0 +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,IAAI,EAAE;QACJ,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,aAAa;KAC1B;CACO,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAc;IACjD,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,WAAW;IACnB,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":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
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;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,EAsKjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA0C/C,CAAC"}
|
package/dist/sync/registry.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { DEFAULT_PROJECT_RULES_FILE } from "../core/project-config.js";
|
|
14
14
|
import { validateHealthSchedule } from "../health/contract.js";
|
|
15
|
+
import { BUILD_LABEL_DEFAULTS, LINEAR_WORKFLOW_DEFAULTS, PRD_LABEL_DEFAULTS, } from "./lifecycle-defaults.js";
|
|
15
16
|
const WHEN_TRACKER_JIRA = "tracker=jira";
|
|
16
17
|
const WHEN_TRACKER_GITHUB = "tracker=github";
|
|
17
18
|
const WHEN_SOURCE_GITHUB = "source=github";
|
|
@@ -60,27 +61,6 @@ export const SETUP_PROVIDER_REQUIREMENTS = {
|
|
|
60
61
|
const COVERAGE_DEFAULTS = {
|
|
61
62
|
global: { statements: 70, branches: 70, functions: 70, lines: 70 },
|
|
62
63
|
};
|
|
63
|
-
const BUILD_LABEL_DEFAULTS = {
|
|
64
|
-
ready: "status:ready",
|
|
65
|
-
claimed: "status:in-progress",
|
|
66
|
-
blocked: "status:blocked",
|
|
67
|
-
human_needed: "human-needed",
|
|
68
|
-
done: {
|
|
69
|
-
dev: "status:on-dev",
|
|
70
|
-
staging: "status:on-stg",
|
|
71
|
-
production: "status:done",
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
const PRD_LABEL_DEFAULTS = {
|
|
75
|
-
draft: "prd-draft",
|
|
76
|
-
ready: "prd-ready",
|
|
77
|
-
in_review: "prd-in-review",
|
|
78
|
-
blocked: "prd-blocked",
|
|
79
|
-
ticketed: "prd-ticketed",
|
|
80
|
-
shipped: "prd-shipped",
|
|
81
|
-
verified: "prd-verified",
|
|
82
|
-
sentinel: "prd-intake-feedback",
|
|
83
|
-
};
|
|
84
64
|
/**
|
|
85
65
|
* All settings `lisa sync` manages. Local-only keys (`atlassian.email`,
|
|
86
66
|
* `intake.assignee`, `jira.verified_workflow_hash`, secret paths) are
|
|
@@ -205,13 +185,25 @@ export const SYNC_REGISTRY = [
|
|
|
205
185
|
description: "GitHub build and PRD lifecycle labels",
|
|
206
186
|
},
|
|
207
187
|
{
|
|
188
|
+
key: "linear.workflow",
|
|
189
|
+
defaultValue: LINEAR_WORKFLOW_DEFAULTS,
|
|
190
|
+
relevantWhen: ["linear", WHEN_TRACKER_LINEAR],
|
|
191
|
+
description: "Linear workflow state names per build lifecycle role",
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
// Markers and the PRD lane only. The build lane moved to `linear.workflow`
|
|
195
|
+
// — see LINEAR_WORKFLOW_DEFAULTS. `human_needed` stays a LABEL for the same
|
|
196
|
+
// reason it does on JIRA: an Issue holds exactly one state but any number
|
|
197
|
+
// of labels, so an additive marker cannot be a state. The PRD lane stays
|
|
198
|
+
// labels because it rides on Linear PROJECTS, whose status model is a
|
|
199
|
+
// separate object from Issue workflow states.
|
|
208
200
|
key: "linear.labels",
|
|
209
201
|
defaultValue: {
|
|
210
|
-
build: {
|
|
202
|
+
build: { human_needed: BUILD_LABEL_DEFAULTS.human_needed },
|
|
211
203
|
prd: PRD_LABEL_DEFAULTS,
|
|
212
204
|
},
|
|
213
205
|
relevantWhen: ["linear", WHEN_TRACKER_LINEAR, WHEN_SOURCE_LINEAR],
|
|
214
|
-
description: "Linear
|
|
206
|
+
description: "Linear marker labels and PRD lifecycle labels",
|
|
215
207
|
},
|
|
216
208
|
{
|
|
217
209
|
key: "notion.statusProperty",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/sync/registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"brace-expansion": ">=5.0.9"
|
|
116
116
|
},
|
|
117
117
|
"name": "@codyswann/lisa",
|
|
118
|
-
"version": "2.
|
|
118
|
+
"version": "2.327.0",
|
|
119
119
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
120
120
|
"main": "dist/index.js",
|
|
121
121
|
"exports": {
|
|
@@ -302,7 +302,7 @@ For each PRD epic, **invoke the `lisa-tracker-write` skill** (do not invoke `lis
|
|
|
302
302
|
- `artifacts`: the full Phase 1.5 artifact list — every artifact, regardless of domain. The epic is the canonical hub. No filtering at the epic level.
|
|
303
303
|
- `priority`, `labels`, `components`, `fix_version`: as appropriate
|
|
304
304
|
|
|
305
|
-
**Leaf-only build-ready (`leaf-only-lifecycle`)**: an Epic is a container, not a leaf work unit. Do NOT mark it build-ready — `lisa-tracker-write` must not be passed
|
|
305
|
+
**Leaf-only build-ready (`leaf-only-lifecycle`)**: an Epic is a container, not a leaf work unit. Do NOT mark it build-ready — `lisa-tracker-write` must not be passed the build-ready role for an Epic, and the Epic's lifecycle state rolls up from its children. The build-ready role is applied only in Phase 5.
|
|
306
306
|
|
|
307
307
|
Capture the returned epic key — Phase 4 needs it as the parent for stories.
|
|
308
308
|
|
|
@@ -333,7 +333,7 @@ For each story, **invoke `lisa-tracker-write`** with:
|
|
|
333
333
|
| Infrastructure | `ops`, `reference` |
|
|
334
334
|
| Mixed / setup ("X.0") | All domains |
|
|
335
335
|
|
|
336
|
-
**Leaf-only build-ready (`leaf-only-lifecycle`)**: a Story is a container (it has child Sub-tasks), not a leaf work unit. Do NOT mark it build-ready — never pass
|
|
336
|
+
**Leaf-only build-ready (`leaf-only-lifecycle`)**: a Story is a container (it has child Sub-tasks), not a leaf work unit. Do NOT mark it build-ready — never pass the build-ready role to `lisa-tracker-write` for a Story. Its lifecycle state rolls up from its Sub-tasks. The build-ready role is applied only in Phase 5.
|
|
337
337
|
|
|
338
338
|
Capture each returned story key — Phase 5 needs it as the parent for sub-tasks.
|
|
339
339
|
|
|
@@ -350,7 +350,7 @@ Each sub-task MUST:
|
|
|
350
350
|
2. **Include an Empirical Verification Plan** — real user-like verification, NOT unit tests, linting, or typechecking
|
|
351
351
|
3. **Carry its own `## Source Requirement` section** (shared format above) with the full verbatim quote(s) from the Phase 1.4 register — a leaf claimed by build-intake in isolation must be self-explanatory. When a sub-task is split per-repo, every split child inherits the same requirement quote(s).
|
|
352
352
|
|
|
353
|
-
**Leaf-only build-ready (`leaf-only-lifecycle`)**: Sub-tasks are the **leaf work units** of the decomposition — they are the ONLY items in the hierarchy that receive the build-ready
|
|
353
|
+
**Leaf-only build-ready (`leaf-only-lifecycle`)**: Sub-tasks are the **leaf work units** of the decomposition — they are the ONLY items in the hierarchy that receive the build-ready role. `lisa-tracker-write` applies the build-ready role here so downstream build intake (`lisa-tracker-build-intake`) claims the leaves and never the Epic or Stories. Apply the build-ready role to each Sub-task; never to its parent Story or Epic (Phases 3–4). `lisa-tracker-write` enforces the same invariant on the write side, so a Sub-task split into per-repo children (the cross-repo case above) carries build-ready on the children, not on any intermediate parent that gains child work.
|
|
354
354
|
|
|
355
355
|
Sub-tasks inherit their parent story's artifacts by reference (the parent link). Do not pass the same artifact list to every sub-task.
|
|
356
356
|
|
|
@@ -251,7 +251,7 @@ PASS (the childless-parent exception) when the issue is build-ready and is a **l
|
|
|
251
251
|
| Epic | no | yes | **FAIL** (childless Epic — pure rollup container, exception does not apply) |
|
|
252
252
|
| any | any | no | **N/A** (not build-ready) |
|
|
253
253
|
|
|
254
|
-
Remediation (render `<READY_ROLE>` as the resolved configured label, never as a hard-coded default): `"Build-ready
|
|
254
|
+
Remediation (render `<READY_ROLE>` as the resolved configured label, never as a hard-coded default): `"Build-ready is leaf-only per leaf-only-lifecycle. Move <READY_ROLE> off this container onto its leaf children (or, for a childless Epic, decompose it into leaf children or reclassify it to a leaf type); a parent's lifecycle state rolls up from its children and is never set to ready directly."`
|
|
255
255
|
|
|
256
256
|
`product_relevant: false` — a build-ready container is a lifecycle/decomposition error for the caller to repair, not a product question.
|
|
257
257
|
|
|
@@ -189,7 +189,7 @@ The childless-parent exception promotes every childless type **except Epic** to
|
|
|
189
189
|
Post via `lisa-atlassian-access` `operation: comment key: <TICKET> body: "<message>"` with:
|
|
190
190
|
|
|
191
191
|
```text
|
|
192
|
-
[claude-build-intake] Not claimed: this ticket carries the build-ready status ($READY) but is a container with open child work (or a childless Epic), which violates the leaf-only-lifecycle rule. Build-ready
|
|
192
|
+
[claude-build-intake] Not claimed: this ticket carries the build-ready status ($READY) but is a container with open child work (or a childless Epic), which violates the leaf-only-lifecycle rule. Build-ready is leaf-only per leaf-only-lifecycle — an agent claims and implements leaves, never a container. Repair: move $READY off this parent onto its leaf children (or, for a childless Epic, decompose it into leaf children or reclassify it to a leaf type). A parent's lifecycle state rolls up from its children and is never set to ready directly.
|
|
193
193
|
```
|
|
194
194
|
|
|
195
195
|
This gate never blocks a legitimate flat Task/Bug: those have no open children and a leaf type, so they fall straight through to the claim in 3b.
|
|
@@ -252,7 +252,7 @@ PASS (the childless-parent exception) when the ticket is build-ready and is a **
|
|
|
252
252
|
| Epic | no | yes | **FAIL** (childless Epic — pure rollup container, exception does not apply) |
|
|
253
253
|
| any | any | no | **N/A** (not build-ready) |
|
|
254
254
|
|
|
255
|
-
Remediation: `"Build-ready
|
|
255
|
+
Remediation: `"Build-ready is leaf-only per leaf-only-lifecycle. Move the build-ready role off this container onto its leaf children (or, for a childless Epic, decompose it into leaf children or reclassify it to a leaf type); a parent's lifecycle state rolls up from its children and is never set to ready directly."`
|
|
256
256
|
|
|
257
257
|
`product_relevant: false` — a build-ready container is a lifecycle/decomposition error for the caller to repair, not a product question.
|
|
258
258
|
|
|
@@ -18,9 +18,11 @@ operation: get-team id:<ID>
|
|
|
18
18
|
operation: list-projects [team:<KEY>] [label:<NAME>] [state:<arr>]
|
|
19
19
|
operation: get-project id:<ID>
|
|
20
20
|
operation: save-project payload:{...}
|
|
21
|
-
operation: list-issues [team:<ID>] [project:<ID>] [label:<NAME>] [state_type:<arr>]
|
|
21
|
+
operation: list-issues [team:<ID>] [project:<ID>] [label:<NAME>] [state:<NAME>] [state_type:<arr>]
|
|
22
22
|
operation: get-issue id:<ID>
|
|
23
23
|
operation: save-issue payload:{...}
|
|
24
|
+
operation: list-workflow-states team:<ID>
|
|
25
|
+
operation: create-workflow-state payload:{...}
|
|
24
26
|
operation: list-comments issue_id:<ID>
|
|
25
27
|
operation: save-comment issue_id:<ID> body:"..."
|
|
26
28
|
operation: history id:<ID>
|
|
@@ -118,15 +120,24 @@ query($id:String!){
|
|
|
118
120
|
`toState.name`, `createdAt` (ISO timestamp), `actor.name`. Nodes with no
|
|
119
121
|
`fromState`/`toState` are non-state edits (label-only, assignee, etc.); keep
|
|
120
122
|
them for the label stream, skip them for workflow-state ordering.
|
|
121
|
-
- **
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
123
|
+
- **Build lanes are STATE-driven, so the `from`/`to` stream above is the primary
|
|
124
|
+
signal.** `lisa-linear-build-intake` keys the queue on workflow states
|
|
125
|
+
(`linear.workflow`), and `IssueHistory` inlines `fromState.name` /
|
|
126
|
+
`toState.name` directly — no catalog cross-reference, no ID resolution, no
|
|
127
|
+
reconstruction. Callers needing lifecycle transitions read them straight off
|
|
128
|
+
the node. This is strictly better than the label stream below and is why the
|
|
129
|
+
Linear adapter moved to states.
|
|
130
|
+
- **Label history (honest caveat, still needed for MARKERS and the PRD lane).**
|
|
131
|
+
`human_needed` is a label, and the PRD lifecycle rides on project labels, so
|
|
132
|
+
label moves still matter for those. `IssueHistory` carries label changes as
|
|
133
|
+
`addedLabelIds` / `removedLabelIds` — arrays of label **IDs**, not names. It
|
|
134
|
+
does **not** inline label names, and it does not carry the label's full
|
|
135
|
+
prior/next set — only the per-event deltas. Resolve IDs → names by
|
|
127
136
|
cross-referencing `list-issue-labels`. Do not overclaim: a caller that needs
|
|
128
|
-
|
|
129
|
-
|
|
137
|
+
label transitions reconstructs them from the ID deltas plus the label catalog,
|
|
138
|
+
not from an inline name on the history node. A caller reading a **build**
|
|
139
|
+
lifecycle transition should not be in this bullet at all — use the state
|
|
140
|
+
stream.
|
|
130
141
|
- **Empty is valid.** An Issue that never changed state returns an **empty**
|
|
131
142
|
history — an empty history is a valid result, not an error.
|
|
132
143
|
- **Graceful degrade — never block the build.** A failed history fetch returns
|