@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.
Files changed (190) hide show
  1. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  2. package/dist/core/upstream-evidence-manifest.js +25 -23
  3. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  4. package/dist/sync/lifecycle-defaults.d.ts +61 -0
  5. package/dist/sync/lifecycle-defaults.d.ts.map +1 -0
  6. package/dist/sync/lifecycle-defaults.js +75 -0
  7. package/dist/sync/lifecycle-defaults.js.map +1 -0
  8. package/dist/sync/registry.d.ts.map +1 -1
  9. package/dist/sync/registry.js +15 -23
  10. package/dist/sync/registry.js.map +1 -1
  11. package/package.json +1 -1
  12. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  14. package/plugins/lisa/.codex-plugin/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
  15. package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +1 -1
  16. package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +1 -1
  17. package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
  18. package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/SKILL.md +20 -9
  19. package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +76 -66
  20. package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/SKILL.md +1 -1
  21. package/plugins/lisa/.codex-plugin/skills/lisa-linear-evidence/SKILL.md +7 -7
  22. package/plugins/lisa/.codex-plugin/skills/lisa-linear-journey/SKILL.md +2 -2
  23. package/plugins/lisa/.codex-plugin/skills/lisa-linear-sync/SKILL.md +34 -30
  24. package/plugins/lisa/.codex-plugin/skills/lisa-linear-to-tracker/SKILL.md +3 -3
  25. package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +6 -6
  26. package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +8 -7
  27. package/plugins/lisa/.codex-plugin/skills/lisa-notion-to-tracker/SKILL.md +3 -3
  28. package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +1 -1
  29. package/plugins/lisa/.codex-plugin/skills/lisa-setup-linear/SKILL.md +59 -12
  30. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +2 -2
  31. package/plugins/lisa/agents/linear-agent.md +6 -6
  32. package/plugins/lisa/agents/linear-build-intake.md +3 -3
  33. package/plugins/lisa/rules/eager/rejection-detection.md +2 -2
  34. package/plugins/lisa/rules/reference/config-resolution.md +37 -9
  35. package/plugins/lisa/rules/reference/rejection-detection.md +2 -2
  36. package/plugins/lisa/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
  37. package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +1 -1
  38. package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +1 -1
  39. package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
  40. package/plugins/lisa/skills/lisa-linear-access/SKILL.md +20 -9
  41. package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +77 -67
  42. package/plugins/lisa/skills/lisa-linear-claim/SKILL.md +1 -1
  43. package/plugins/lisa/skills/lisa-linear-evidence/SKILL.md +7 -7
  44. package/plugins/lisa/skills/lisa-linear-journey/SKILL.md +2 -2
  45. package/plugins/lisa/skills/lisa-linear-sync/SKILL.md +34 -30
  46. package/plugins/lisa/skills/lisa-linear-to-tracker/SKILL.md +3 -3
  47. package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +6 -6
  48. package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +8 -7
  49. package/plugins/lisa/skills/lisa-notion-to-tracker/SKILL.md +3 -3
  50. package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +1 -1
  51. package/plugins/lisa/skills/lisa-setup-linear/SKILL.md +59 -12
  52. package/plugins/lisa/skills/lisa-tracker-build-intake/SKILL.md +1 -1
  53. package/plugins/lisa/skills/lisa-tracker-sync/SKILL.md +2 -2
  54. package/plugins/lisa-agy/agents/linear-agent.md +6 -6
  55. package/plugins/lisa-agy/agents/linear-build-intake.md +3 -3
  56. package/plugins/lisa-agy/plugin.json +1 -1
  57. package/plugins/lisa-agy/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
  58. package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +1 -1
  59. package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +1 -1
  60. package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
  61. package/plugins/lisa-agy/skills/lisa-linear-access/SKILL.md +20 -9
  62. package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +77 -67
  63. package/plugins/lisa-agy/skills/lisa-linear-claim/SKILL.md +1 -1
  64. package/plugins/lisa-agy/skills/lisa-linear-evidence/SKILL.md +7 -7
  65. package/plugins/lisa-agy/skills/lisa-linear-journey/SKILL.md +2 -2
  66. package/plugins/lisa-agy/skills/lisa-linear-sync/SKILL.md +34 -30
  67. package/plugins/lisa-agy/skills/lisa-linear-to-tracker/SKILL.md +3 -3
  68. package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +6 -6
  69. package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +8 -7
  70. package/plugins/lisa-agy/skills/lisa-notion-to-tracker/SKILL.md +3 -3
  71. package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +1 -1
  72. package/plugins/lisa-agy/skills/lisa-setup-linear/SKILL.md +59 -12
  73. package/plugins/lisa-agy/skills/lisa-tracker-build-intake/SKILL.md +1 -1
  74. package/plugins/lisa-agy/skills/lisa-tracker-sync/SKILL.md +2 -2
  75. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  77. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  78. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  79. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-copilot/agents/linear-agent.agent.md +6 -6
  82. package/plugins/lisa-copilot/agents/linear-build-intake.agent.md +3 -3
  83. package/plugins/lisa-copilot/rules/eager/rejection-detection.md +2 -2
  84. package/plugins/lisa-copilot/rules/reference/config-resolution.md +37 -9
  85. package/plugins/lisa-copilot/rules/reference/rejection-detection.md +2 -2
  86. package/plugins/lisa-copilot/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
  87. package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +1 -1
  88. package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +1 -1
  89. package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
  90. package/plugins/lisa-copilot/skills/lisa-linear-access/SKILL.md +20 -9
  91. package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +77 -67
  92. package/plugins/lisa-copilot/skills/lisa-linear-claim/SKILL.md +1 -1
  93. package/plugins/lisa-copilot/skills/lisa-linear-evidence/SKILL.md +7 -7
  94. package/plugins/lisa-copilot/skills/lisa-linear-journey/SKILL.md +2 -2
  95. package/plugins/lisa-copilot/skills/lisa-linear-sync/SKILL.md +34 -30
  96. package/plugins/lisa-copilot/skills/lisa-linear-to-tracker/SKILL.md +3 -3
  97. package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +6 -6
  98. package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +8 -7
  99. package/plugins/lisa-copilot/skills/lisa-notion-to-tracker/SKILL.md +3 -3
  100. package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +1 -1
  101. package/plugins/lisa-copilot/skills/lisa-setup-linear/SKILL.md +59 -12
  102. package/plugins/lisa-copilot/skills/lisa-tracker-build-intake/SKILL.md +1 -1
  103. package/plugins/lisa-copilot/skills/lisa-tracker-sync/SKILL.md +2 -2
  104. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  105. package/plugins/lisa-cursor/agents/linear-agent.md +6 -6
  106. package/plugins/lisa-cursor/agents/linear-build-intake.md +3 -3
  107. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +37 -9
  108. package/plugins/lisa-cursor/rules/rejection-detection-reference.mdc +2 -2
  109. package/plugins/lisa-cursor/rules/rejection-detection.mdc +2 -2
  110. package/plugins/lisa-cursor/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
  111. package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +1 -1
  112. package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +1 -1
  113. package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
  114. package/plugins/lisa-cursor/skills/lisa-linear-access/SKILL.md +20 -9
  115. package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +77 -67
  116. package/plugins/lisa-cursor/skills/lisa-linear-claim/SKILL.md +1 -1
  117. package/plugins/lisa-cursor/skills/lisa-linear-evidence/SKILL.md +7 -7
  118. package/plugins/lisa-cursor/skills/lisa-linear-journey/SKILL.md +2 -2
  119. package/plugins/lisa-cursor/skills/lisa-linear-sync/SKILL.md +34 -30
  120. package/plugins/lisa-cursor/skills/lisa-linear-to-tracker/SKILL.md +3 -3
  121. package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +6 -6
  122. package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +8 -7
  123. package/plugins/lisa-cursor/skills/lisa-notion-to-tracker/SKILL.md +3 -3
  124. package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +1 -1
  125. package/plugins/lisa-cursor/skills/lisa-setup-linear/SKILL.md +59 -12
  126. package/plugins/lisa-cursor/skills/lisa-tracker-build-intake/SKILL.md +1 -1
  127. package/plugins/lisa-cursor/skills/lisa-tracker-sync/SKILL.md +2 -2
  128. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  129. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  130. package/plugins/lisa-expo-agy/plugin.json +1 -1
  131. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  132. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  133. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  134. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  135. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  136. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  137. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  138. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  139. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  140. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  141. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  142. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  143. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  144. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  145. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  146. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  147. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  148. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  149. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  150. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  151. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  152. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  153. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  154. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  155. package/plugins/lisa-rails-agy/plugin.json +1 -1
  156. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  157. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  158. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  159. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  160. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  161. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  162. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  163. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  164. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  165. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  166. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  167. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  168. package/plugins/src/base/agents/linear-agent.md +6 -6
  169. package/plugins/src/base/agents/linear-build-intake.md +3 -3
  170. package/plugins/src/base/rules/eager/rejection-detection.md +2 -2
  171. package/plugins/src/base/rules/reference/config-resolution.md +37 -9
  172. package/plugins/src/base/rules/reference/rejection-detection.md +2 -2
  173. package/plugins/src/base/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
  174. package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +1 -1
  175. package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +1 -1
  176. package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
  177. package/plugins/src/base/skills/lisa-linear-access/SKILL.md +20 -9
  178. package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +77 -67
  179. package/plugins/src/base/skills/lisa-linear-claim/SKILL.md +1 -1
  180. package/plugins/src/base/skills/lisa-linear-evidence/SKILL.md +7 -7
  181. package/plugins/src/base/skills/lisa-linear-journey/SKILL.md +2 -2
  182. package/plugins/src/base/skills/lisa-linear-sync/SKILL.md +34 -30
  183. package/plugins/src/base/skills/lisa-linear-to-tracker/SKILL.md +3 -3
  184. package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +6 -6
  185. package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +8 -7
  186. package/plugins/src/base/skills/lisa-notion-to-tracker/SKILL.md +3 -3
  187. package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +1 -1
  188. package/plugins/src/base/skills/lisa-setup-linear/SKILL.md +59 -12
  189. package/plugins/src/base/skills/lisa-tracker-build-intake/SKILL.md +1 -1
  190. 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;AAE9D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvD,uEAAuE;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AASD,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC;IACjD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;CAC5D,CAkCA,CAAC;AA6BF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,EA0JjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA0C/C,CAAC"}
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"}
@@ -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: { ...BUILD_LABEL_DEFAULTS, review: "status:code-review" },
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 build and PRD lifecycle labels",
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":"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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
@@ -115,7 +115,7 @@
115
115
  "brace-expansion": ">=5.0.9"
116
116
  },
117
117
  "name": "@codyswann/lisa",
118
- "version": "2.326.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": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.326.2",
3
+ "version": "2.327.0",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.326.2",
3
+ "version": "2.327.0",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -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 `status:ready` for an Epic, and the Epic's lifecycle state rolls up from its children. The build-ready label is applied only in Phase 5.
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 `status:ready` to `lisa-tracker-write` for a Story. Its lifecycle state rolls up from its Sub-tasks. The build-ready label is applied only in Phase 5.
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 label. `lisa-tracker-write` applies `status:ready` here so downstream build intake (`lisa-tracker-build-intake`) claims the leaves and never the Epic or Stories. Apply `status:ready` 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.
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 (<READY_ROLE>; status:ready by default) 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."`
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 (status: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.
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 (status:ready) is leaf-only per leaf-only-lifecycle. Move status:ready 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
+ 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
- - **Label history (honest caveat).** Linear's build lanes are **label-driven**
122
- (`lisa-linear-build-intake` keys the queue on `status:*` labels), so label
123
- moves matter as much as workflow-state moves. `IssueHistory` carries label
124
- changes as `addedLabelIds` / `removedLabelIds` arrays of label **IDs**, not
125
- names. It does **not** inline label names, and it does not carry the label's
126
- full prior/next set only the per-event deltas. Resolve IDs names by
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` directlyno 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
- `status:*` label transitions reconstructs them from the ID deltas plus the
129
- label catalog, not from an inline name on the history node.
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