@rsaglobaltech/specgate 0.27.9 → 1.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/packages/core/src/application/ValidateChangeUseCase.js +19 -3
  3. package/dist/packages/core/src/application/ValidateChangeUseCase.js.map +1 -1
  4. package/dist/packages/core/src/domain/ApiContract.js +157 -0
  5. package/dist/packages/core/src/domain/ApiContract.js.map +1 -0
  6. package/dist/packages/core/src/domain/Approvals.js +127 -0
  7. package/dist/packages/core/src/domain/Approvals.js.map +1 -0
  8. package/dist/packages/core/src/domain/ChangeLayers.js +285 -0
  9. package/dist/packages/core/src/domain/ChangeLayers.js.map +1 -0
  10. package/dist/packages/core/src/domain/HarnessConfig.js.map +1 -1
  11. package/dist/packages/core/src/domain/HarnessGaps.js +182 -0
  12. package/dist/packages/core/src/domain/HarnessGaps.js.map +1 -0
  13. package/dist/packages/core/src/domain/HarnessReport.js +16 -1
  14. package/dist/packages/core/src/domain/HarnessReport.js.map +1 -1
  15. package/dist/packages/core/src/domain/HarnessRun.js.map +1 -1
  16. package/dist/packages/core/src/domain/Principles.js +119 -0
  17. package/dist/packages/core/src/domain/Principles.js.map +1 -0
  18. package/dist/packages/core/src/domain/RequirementGraph.js +12 -1
  19. package/dist/packages/core/src/domain/RequirementGraph.js.map +1 -1
  20. package/dist/packages/core/src/domain/Workspace.js +150 -0
  21. package/dist/packages/core/src/domain/Workspace.js.map +1 -0
  22. package/dist/packages/core/src/domain/WorkspaceStory.js +176 -0
  23. package/dist/packages/core/src/domain/WorkspaceStory.js.map +1 -0
  24. package/dist/packages/core/src/index.js +1 -0
  25. package/dist/packages/core/src/index.js.map +1 -1
  26. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js +12 -0
  27. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js.map +1 -1
  28. package/dist/packages/mcp-spec-driven/src/tools.js +18 -0
  29. package/dist/packages/mcp-spec-driven/src/tools.js.map +1 -1
  30. package/dist/scripts/alm/cli.js +45 -4
  31. package/dist/scripts/alm/cli.js.map +1 -1
  32. package/dist/scripts/alm/clients.js +3 -1
  33. package/dist/scripts/alm/clients.js.map +1 -1
  34. package/dist/scripts/alm/phases.js +279 -0
  35. package/dist/scripts/alm/phases.js.map +1 -0
  36. package/dist/scripts/alm/port.js +33 -5
  37. package/dist/scripts/alm/port.js.map +1 -1
  38. package/dist/scripts/alm/providers/azure.js +72 -11
  39. package/dist/scripts/alm/providers/azure.js.map +1 -1
  40. package/dist/scripts/alm/providers/github.js +67 -7
  41. package/dist/scripts/alm/providers/github.js.map +1 -1
  42. package/dist/scripts/alm/providers/index.js +8 -2
  43. package/dist/scripts/alm/providers/index.js.map +1 -1
  44. package/dist/scripts/alm/providers/jira.js +86 -8
  45. package/dist/scripts/alm/providers/jira.js.map +1 -1
  46. package/dist/scripts/alm/providers/linear.js +167 -0
  47. package/dist/scripts/alm/providers/linear.js.map +1 -0
  48. package/dist/scripts/change/artifacts.js +15 -1
  49. package/dist/scripts/change/artifacts.js.map +1 -1
  50. package/dist/scripts/change/instructions.js +47 -5
  51. package/dist/scripts/change/instructions.js.map +1 -1
  52. package/dist/scripts/cli/commands/alm/PhaseCommand.js +153 -0
  53. package/dist/scripts/cli/commands/alm/PhaseCommand.js.map +1 -0
  54. package/dist/scripts/cli/commands/alm/PullCommand.js +33 -2
  55. package/dist/scripts/cli/commands/alm/PullCommand.js.map +1 -1
  56. package/dist/scripts/cli/commands/alm/pull-back.js +104 -0
  57. package/dist/scripts/cli/commands/alm/pull-back.js.map +1 -0
  58. package/dist/scripts/cli/commands/change/ChangeCommand.js +149 -15
  59. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  60. package/dist/scripts/cli/commands/change/TicketCommand.js +20 -7
  61. package/dist/scripts/cli/commands/change/TicketCommand.js.map +1 -1
  62. package/dist/scripts/cli/commands/harness/RunCommand.js +64 -20
  63. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  64. package/dist/scripts/cli/commands/project/AdoptCommand.js +44 -4
  65. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
  66. package/dist/scripts/cli/commands/project/InitProjectCommand.js +9 -14
  67. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  68. package/dist/scripts/cli/commands/project/MigrateCommand.js +166 -0
  69. package/dist/scripts/cli/commands/project/MigrateCommand.js.map +1 -0
  70. package/dist/scripts/cli/commands/project/OnboardCommand.js +23 -5
  71. package/dist/scripts/cli/commands/project/OnboardCommand.js.map +1 -1
  72. package/dist/scripts/cli/commands/quality/CheckCommand.js +25 -0
  73. package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
  74. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +15 -0
  75. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
  76. package/dist/scripts/cli/commands/spec/ContractCommand.js +117 -0
  77. package/dist/scripts/cli/commands/spec/ContractCommand.js.map +1 -0
  78. package/dist/scripts/cli/commands/spec/DoneCommand.js +22 -0
  79. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
  80. package/dist/scripts/cli/commands/spec/DraftCommand.js +22 -8
  81. package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
  82. package/dist/scripts/cli/commands/spec/DriftCommand.js +128 -0
  83. package/dist/scripts/cli/commands/spec/DriftCommand.js.map +1 -0
  84. package/dist/scripts/cli/commands/spec/StatusCommand.js +85 -0
  85. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  86. package/dist/scripts/cli/commands/spec/StudioCommand.js +48 -6
  87. package/dist/scripts/cli/commands/spec/StudioCommand.js.map +1 -1
  88. package/dist/scripts/cli/commands/workspace/WorkspaceCommand.js +612 -0
  89. package/dist/scripts/cli/commands/workspace/WorkspaceCommand.js.map +1 -0
  90. package/dist/scripts/contract.js +10 -0
  91. package/dist/scripts/contract.js.map +1 -0
  92. package/dist/scripts/docs/nav.js +16 -1
  93. package/dist/scripts/docs/nav.js.map +1 -1
  94. package/dist/scripts/draft/drafting-guide.js +6 -0
  95. package/dist/scripts/draft/drafting-guide.js.map +1 -1
  96. package/dist/scripts/draft/ticket-guide.js +5 -0
  97. package/dist/scripts/draft/ticket-guide.js.map +1 -1
  98. package/dist/scripts/drift.js +10 -0
  99. package/dist/scripts/drift.js.map +1 -0
  100. package/dist/scripts/harness/gap-evidence.js +149 -0
  101. package/dist/scripts/harness/gap-evidence.js.map +1 -0
  102. package/dist/scripts/harness/prompt.js +54 -1
  103. package/dist/scripts/harness/prompt.js.map +1 -1
  104. package/dist/scripts/harness/report.js +104 -5
  105. package/dist/scripts/harness/report.js.map +1 -1
  106. package/dist/scripts/lib/approvals.js +243 -0
  107. package/dist/scripts/lib/approvals.js.map +1 -0
  108. package/dist/scripts/lib/change-review.js +19 -11
  109. package/dist/scripts/lib/change-review.js.map +1 -1
  110. package/dist/scripts/lib/contracts.js +211 -0
  111. package/dist/scripts/lib/contracts.js.map +1 -0
  112. package/dist/scripts/lib/drift.js +80 -0
  113. package/dist/scripts/lib/drift.js.map +1 -0
  114. package/dist/scripts/lib/live-model.js +1 -0
  115. package/dist/scripts/lib/live-model.js.map +1 -1
  116. package/dist/scripts/lib/migrate.js +264 -0
  117. package/dist/scripts/lib/migrate.js.map +1 -0
  118. package/dist/scripts/lib/role-packages.js +230 -0
  119. package/dist/scripts/lib/role-packages.js.map +1 -0
  120. package/dist/scripts/lib/steering.js +180 -0
  121. package/dist/scripts/lib/steering.js.map +1 -0
  122. package/dist/scripts/lib/studio-app-page.js +28 -5
  123. package/dist/scripts/lib/studio-app-page.js.map +1 -1
  124. package/dist/scripts/lib/studio-app.js +29 -0
  125. package/dist/scripts/lib/studio-app.js.map +1 -1
  126. package/dist/scripts/lib/studio-route.js +20 -0
  127. package/dist/scripts/lib/studio-route.js.map +1 -1
  128. package/dist/scripts/lib/surface.js +55 -0
  129. package/dist/scripts/lib/surface.js.map +1 -1
  130. package/dist/scripts/lib/workspace-draft.js +146 -0
  131. package/dist/scripts/lib/workspace-draft.js.map +1 -0
  132. package/dist/scripts/lib/workspace-live-page.js +90 -0
  133. package/dist/scripts/lib/workspace-live-page.js.map +1 -0
  134. package/dist/scripts/lib/workspace-live.js +199 -0
  135. package/dist/scripts/lib/workspace-live.js.map +1 -0
  136. package/dist/scripts/lib/workspace.js +619 -0
  137. package/dist/scripts/lib/workspace.js.map +1 -0
  138. package/dist/scripts/migrate.js +10 -0
  139. package/dist/scripts/migrate.js.map +1 -0
  140. package/dist/scripts/schema/registry.js +12 -0
  141. package/dist/scripts/schema/registry.js.map +1 -1
  142. package/dist/scripts/workspace.js +10 -0
  143. package/dist/scripts/workspace.js.map +1 -0
  144. package/package.json +1 -1
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.linearProvider = void 0;
4
+ const http_client_1 = require("./http-client");
5
+ /** Linear's public API. A self-hosted Linear does not exist; `base_url` is for tests and proxies. */
6
+ const PUBLIC_API = "https://api.linear.app";
7
+ /**
8
+ * The state type of each phase (REQ-305). Linear's state names are the team's
9
+ * own; its types — backlog, unstarted, started, completed, canceled — are not.
10
+ */
11
+ const PHASE_TYPE = {
12
+ proposed: "unstarted",
13
+ building: "started",
14
+ archived: "completed",
15
+ };
16
+ /**
17
+ * Linear (REQ-308), through its GraphQL API.
18
+ *
19
+ * Every operation is one POST to `/graphql`, so a failure is in the body as
20
+ * well as in the status: an answer with `errors` is a failed request even when
21
+ * it comes with a 200. The personal API key goes in `Authorization` as it is —
22
+ * Linear's keys are not bearer tokens — and never in a query.
23
+ *
24
+ * An issue is addressed by its identifier (`ENG-123`), which is what a person
25
+ * reads on the board and what `issue(id:)` accepts. A cancelled issue reads as
26
+ * open, as GitHub's "not planned" does: nobody delivered it.
27
+ */
28
+ class LinearClient extends http_client_1.HttpAlmClient {
29
+ capabilities = LINEAR_CAPABILITIES;
30
+ headers;
31
+ teamKey;
32
+ team;
33
+ constructor(cfg, fetchImpl) {
34
+ super({ ...cfg, base_url: cfg.base_url ?? PUBLIC_API }, fetchImpl);
35
+ const token = http_client_1.HttpAlmClient.requireEnv(cfg.token_env);
36
+ this.headers = { Authorization: token, "Content-Type": "application/json" };
37
+ this.teamKey = String(cfg.team_key ?? "").trim();
38
+ if (!/^[A-Z][A-Z0-9]*$/.test(this.teamKey)) {
39
+ throw new Error(`alm.config.yaml: team_key '${this.teamKey}' is not a Linear team key.\n` +
40
+ "Fix: write the key that prefixes its issues, e.g. `team_key: ENG`.");
41
+ }
42
+ }
43
+ async graphql(what, query, variables) {
44
+ const res = await this.request("/graphql", what, {
45
+ method: "POST",
46
+ headers: this.headers,
47
+ body: JSON.stringify({ query, variables }),
48
+ });
49
+ const body = (await res.json());
50
+ if (body.errors && body.errors.length > 0) {
51
+ throw new Error(`${what} failed: ${body.errors.map((e) => e.message).join("; ")}`);
52
+ }
53
+ if (!body.data)
54
+ throw new Error(`${what} failed: Linear answered no data.`);
55
+ return body.data;
56
+ }
57
+ /** The team, with its workflow states, read once. */
58
+ teamOf() {
59
+ this.team ??= this.graphql(`Linear read team ${this.teamKey}`, "query TeamByKey($key: String!) { teams(filter: { key: { eq: $key } }) " +
60
+ "{ nodes { id states { nodes { id name type } } } } }", { key: this.teamKey }).then((data) => {
61
+ const team = data.teams?.nodes?.[0];
62
+ if (!team) {
63
+ throw new Error(`Linear: no team with key ${this.teamKey} that this key can see.\n` +
64
+ "Fix: check team_key, and that the API key belongs to a member of the team.");
65
+ }
66
+ return team;
67
+ });
68
+ return this.team;
69
+ }
70
+ async stateFor(phase, name) {
71
+ const states = (await this.teamOf()).states?.nodes ?? [];
72
+ const state = name
73
+ ? states.find((s) => s.name.toLowerCase() === name.toLowerCase())
74
+ : states.find((s) => s.type === PHASE_TYPE[phase]);
75
+ if (!state) {
76
+ throw new Error(`Linear: team ${this.teamKey} has no ${name ? `state "${name}"` : `${PHASE_TYPE[phase]} state`}.\n` +
77
+ `Fix: name the state of '${phase}' in phases: of alm.config.yaml, as the team calls it.`);
78
+ }
79
+ return state;
80
+ }
81
+ async createIssue(reqId, title) {
82
+ return this.create(`${reqId} — ${title}`, `Linear create issue for ${reqId}`);
83
+ }
84
+ async create(title, what, parentId) {
85
+ const team = await this.teamOf();
86
+ const data = await this.graphql(what, "mutation IssueCreate($input: IssueCreateInput!) { issueCreate(input: $input) " +
87
+ "{ success issue { identifier url } } }", { input: { teamId: team.id, title, ...(parentId ? { parentId } : {}) } });
88
+ const issue = data.issueCreate?.issue;
89
+ if (!data.issueCreate?.success || !issue)
90
+ throw new Error(`${what} failed: not created.`);
91
+ return { key: issue.identifier, url: issue.url ?? null };
92
+ }
93
+ async issue(key) {
94
+ const data = await this.graphql(`Linear read ${key}`, "query IssueStatus($id: String!) { issue(id: $id) { id state { type } } }", { id: identifier(key) });
95
+ return data.issue;
96
+ }
97
+ async getIssueStatus(issueKey) {
98
+ return (await this.issue(issueKey)).state?.type === "completed" ? "done" : "open";
99
+ }
100
+ async closeIssue(issueKey) {
101
+ await this.setPhase(issueKey, "archived");
102
+ }
103
+ async listIssues(label) {
104
+ const data = await this.graphql(`Linear search for issues labelled ${label}`, "query IssuesByLabel($key: String!, $label: String!) { issues(first: 100, filter: { " +
105
+ 'team: { key: { eq: $key } }, labels: { name: { eq: $label } }, state: { type: { nin: ["completed", "canceled"] } } }) ' +
106
+ "{ nodes { identifier title description url } } }", { key: this.teamKey, label });
107
+ return (data.issues?.nodes ?? []).map((i) => ({
108
+ key: i.identifier,
109
+ title: String(i.title ?? ""),
110
+ body: String(i.description ?? ""),
111
+ url: i.url ?? null,
112
+ }));
113
+ }
114
+ async setPhase(issueKey, phase, state) {
115
+ const target = await this.stateFor(phase, state);
116
+ const data = await this.graphql(`Linear move ${issueKey} to ${target.name}`, "mutation IssueUpdate($id: String!, $input: IssueUpdateInput!) { issueUpdate(id: $id, input: $input) { success } }", { id: identifier(issueKey), input: { stateId: target.id } });
117
+ if (!data.issueUpdate?.success)
118
+ throw new Error(`Linear move ${issueKey} failed.`);
119
+ return target.name;
120
+ }
121
+ async createSubIssue(parentKey, title) {
122
+ const parent = await this.issue(parentKey);
123
+ return this.create(title, `Linear create a sub-issue of ${parentKey}`, parent.id);
124
+ }
125
+ async listComments(issueKey) {
126
+ const data = await this.graphql(`Linear read the comments of ${issueKey}`, "query IssueComments($id: String!) { issue(id: $id) { comments(orderBy: createdAt) " +
127
+ "{ nodes { id body user { name } } } } }", { id: identifier(issueKey) });
128
+ return (data.issue?.comments?.nodes ?? []).map((c) => ({
129
+ id: String(c.id),
130
+ author: String(c.user?.name ?? ""),
131
+ body: String(c.body ?? ""),
132
+ }));
133
+ }
134
+ async readIssueText(issueKey) {
135
+ const data = await this.graphql(`Linear read ${issueKey}`, "query IssueText($id: String!) { issue(id: $id) { title description } }", { id: identifier(issueKey) });
136
+ return { title: String(data.issue?.title ?? ""), body: String(data.issue?.description ?? "") };
137
+ }
138
+ }
139
+ /** An issue identifier, checked before it is sent: `ENG-123`. */
140
+ function identifier(key) {
141
+ if (!/^[A-Z][A-Z0-9]*-\d+$/.test(key)) {
142
+ throw new Error(`Linear: '${key}' is not an issue identifier (TEAM-123).`);
143
+ }
144
+ return key;
145
+ }
146
+ const LINEAR_CAPABILITIES = {
147
+ create: true,
148
+ readStatus: true,
149
+ close: true,
150
+ listIssues: true,
151
+ phase: true,
152
+ subIssues: true,
153
+ comments: true,
154
+ readText: true,
155
+ };
156
+ exports.linearProvider = {
157
+ id: "linear",
158
+ label: "Linear",
159
+ config: {
160
+ required: ["team_key", "token_env"],
161
+ optional: ["base_url"],
162
+ },
163
+ capabilities: LINEAR_CAPABILITIES,
164
+ create: (cfg, fetchImpl) => new LinearClient(cfg, fetchImpl),
165
+ };
166
+ exports.default = exports.linearProvider;
167
+ //# sourceMappingURL=linear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../../scripts/alm/providers/linear.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,7 @@ const fs = __importStar(require("node:fs"));
54
54
  const path = __importStar(require("node:path"));
55
55
  const ChangeWorkspace_1 = require("../../packages/core/src/infrastructure/ChangeWorkspace");
56
56
  const registry_1 = require("../schema/registry");
57
+ const ChangeLayers_1 = require("../../packages/core/src/domain/ChangeLayers");
57
58
  /** The default graph, still exported for callers that predate schemas. */
58
59
  exports.ARTIFACTS = [
59
60
  { id: "proposal", generates: "proposal.md", requires: [] },
@@ -94,6 +95,13 @@ function outputsPresent(projectDir, changeId, artifacts) {
94
95
  // adds", not "the project has scenarios".
95
96
  present[a.id] = hasAnyFile(path.join(dir, a.generates.split("*")[0]));
96
97
  }
98
+ else if (a.id === "discover" || a.id === "design" || a.id === "tasks") {
99
+ // REQ-288: a layer still as `change new` wrote it is not written yet.
100
+ const file = path.join(dir, a.generates);
101
+ present[a.id] =
102
+ fs.existsSync(file) &&
103
+ !(0, ChangeLayers_1.isUntouchedLayer)(a.id, fs.readFileSync(file, "utf8"), changeId);
104
+ }
97
105
  else {
98
106
  present[a.id] = fs.existsSync(path.join(dir, a.generates));
99
107
  }
@@ -115,8 +123,10 @@ function artifactState(projectDir, changeId, config) {
115
123
  // creating anything — the artefact counts as done, not as missing.
116
124
  const skipped = { specs: config.skip_specs === true };
117
125
  // Lite rigor makes design optional in the same way.
118
- if (config.rigor === "lite" && !exists.design)
126
+ // A layered change always has a design: it is the architect's layer.
127
+ if (config.rigor === "lite" && !exists.design && config.schema !== ChangeLayers_1.LAYERED_SCHEMA) {
119
128
  skipped.design = true;
129
+ }
120
130
  const satisfied = (id) => exists[id] || skipped[id];
121
131
  return artifacts.map((a) => {
122
132
  const missingDeps = (a.requires || []).filter((dep) => !satisfied(dep));
@@ -131,6 +141,10 @@ function artifactState(projectDir, changeId, config) {
131
141
  status = "ready";
132
142
  const entry = {
133
143
  id: a.id,
144
+ ...(config.schema === ChangeLayers_1.LAYERED_SCHEMA &&
145
+ (a.id === "discover" || a.id === "design" || a.id === "tasks")
146
+ ? { owner: (0, ChangeLayers_1.layer)(a.id).owner }
147
+ : {}),
134
148
  outputPath: a.generates,
135
149
  status,
136
150
  requires: a.requires || [],
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../scripts/change/artifacts.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBH,oCASC;AAiDD,sCAgCC;AA/GD,4CAA8B;AAC9B,gDAAkC;AAElC,4FAA2F;AAE3F,iDAAmD;AAGnD,0EAA0E;AAC7D,QAAA,SAAS,GAAqB;IACzC,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1D,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;IACtE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;IAChE,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;CACtE,CAAC;AAEF;;;;GAIG;AACH,SAAgB,YAAY,CAC1B,UAAkB,EAClB,MAAuC;IAEvC,MAAM,KAAK,GAAG,IAAA,wBAAa,EAAC,UAAU,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;IACpF,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5F,OAAO,iBAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;AAChC,CAAC;AAWD;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,UAAkB,EAClB,QAAgB,EAChB,SAAoC;IAEpC,MAAM,GAAG,GAAG,IAAA,uBAAK,EAAC,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAA,4BAAU,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,yEAAyE;YACzE,0EAA0E;YAC1E,qEAAqE;YACrE,0CAA0C;YAC1C,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAC3B,UAAkB,EAClB,QAAgB,EAChB,MAAoB;IAEpB,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE/D,6EAA6E;IAC7E,mEAAmE;IACnE,MAAM,OAAO,GAA4B,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;IAC/E,oDAAoD;IACpD,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAErE,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAE5D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,IAAI,MAAoC,CAAC;QACzC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,MAAM,GAAG,SAAS,CAAC;aACjC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,MAAM,GAAG,MAAM,CAAC;aAClC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,GAAG,SAAS,CAAC;;YAC/C,MAAM,GAAG,OAAO,CAAC;QACtB,MAAM,KAAK,GAAuB;YAChC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM;YACN,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;SAC3B,CAAC;QACF,IAAI,MAAM,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../scripts/change/artifacts.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,7 @@ exports.main = main;
52
52
  * Code extension — consumes this. It is deliberately data, not prose: the
53
53
  * caller decides how to render it.
54
54
  */
55
+ const ChangeLayers_1 = require("../../packages/core/src/domain/ChangeLayers");
55
56
  const fs = __importStar(require("node:fs"));
56
57
  const path = __importStar(require("node:path"));
57
58
  const project_root_1 = require("../lib/project-root");
@@ -86,12 +87,46 @@ const DESIGN_RULES = [
86
87
  "Only for `--full` rigor. At `--lite` this artefact is skipped, not missing.",
87
88
  "Record the decision and the alternatives rejected. If it is a decision the project will be asked about later, it wants an ADR instead.",
88
89
  ];
90
+ // ADR-0042: the layers of a `layered` change, each with its owner.
91
+ const DISCOVER_RULES = [
92
+ "Owner: product. The business context, the use case and the acceptance criteria — what and why, never how.",
93
+ "Number each criterion `- AC-1: …` under `## Acceptance criteria`: the design must answer every one.",
94
+ "No technology: frameworks, databases, APIs and queues belong in design.md (`layer_discover_technical`).",
95
+ "Once agreed, the story stays put: rewriting it during the design is reported (`layer_discover_rewritten`).",
96
+ ];
97
+ const LAYERED_DESIGN_RULES = [
98
+ "Owner: the architect. Modules, mechanisms, channels, and the ADRs this touches.",
99
+ "Name each acceptance criterion of discover.md where it is answered (`AC-1 — …`), or validation reports `layer_design_misses_criterion`.",
100
+ ];
101
+ const LAYERED_TASKS_RULES = [
102
+ "Owner: the developer. Each task is verifiable and names the requirement it delivers (`REQ-NNN`).",
103
+ "The specification tasks under `## 1. Specification` are the process and need no requirement.",
104
+ ];
89
105
  const ARTIFACT_RULES = {
106
+ discover: DISCOVER_RULES,
90
107
  proposal: PROPOSAL_RULES,
91
108
  specs: exports.DELTA_RULES,
92
109
  design: DESIGN_RULES,
93
110
  tasks: TASKS_RULES,
94
111
  };
112
+ // REQ-351: what approval and the harness will ask of each requirement, said
113
+ // to whoever writes them — an agent left them out (truck-flote, MS-10, MS-9).
114
+ const LAYERED_DELTA_RULES = [
115
+ ...exports.DELTA_RULES,
116
+ "Every requirement's `<!-- specgate:trace … -->` carries `kind=` (functional, non-functional or business-rule) and `actor=` (who uses it): `change approve` refuses a requirement without them, and `change validate` says so (`change_not_approvable`).",
117
+ "Give each requirement a feature file of its own (`feature=features/<capability>/<REQ-NNN>.feature`): one feature file per requirement, or archiving replaces one's scenarios with another's (`change_feature_shared`).",
118
+ ];
119
+ /** A layered change's own rules and templates for the layers it shares with 0.27. */
120
+ const LAYERED_RULES = {
121
+ specs: LAYERED_DELTA_RULES,
122
+ design: LAYERED_DESIGN_RULES,
123
+ tasks: LAYERED_TASKS_RULES,
124
+ };
125
+ const LAYER_TEMPLATES = {
126
+ discover: (id) => (0, ChangeLayers_1.templateDiscover)(id),
127
+ design: (id) => (0, ChangeLayers_1.templateLayeredDesign)(id),
128
+ tasks: () => (0, ChangeLayers_1.templateLayeredTasks)(),
129
+ };
95
130
  /** Pseudo-artefacts: not files to write, but stages to carry out. */
96
131
  exports.STAGES = {
97
132
  apply: {
@@ -169,15 +204,18 @@ function buildInstructions(projectDir, artifact, changeId, templates) {
169
204
  const states = (0, artifacts_1.artifactState)(projectDir, changeId, config);
170
205
  const state = states.find((s) => s.id === artifact);
171
206
  const context = { ...projectContext(projectDir) };
172
- const proposal = readIfExists(path.join(p.change(changeId), "proposal.md"));
173
- // The proposal is the intent every later artefact has to stay faithful to.
174
- if (proposal && artifact !== "proposal")
207
+ // The Discover (a 0.27 change's proposal) is the intent every later
208
+ // artefact has to stay faithful to.
209
+ const proposal = readIfExists(path.join(p.change(changeId), "discover.md")) ||
210
+ readIfExists(path.join(p.change(changeId), "proposal.md"));
211
+ if (proposal && artifact !== "proposal" && artifact !== "discover")
175
212
  context.proposal = proposal;
176
213
  if (Array.isArray(config.req_range) && config.req_range.length === 2) {
177
214
  context.reservedReqRange = config.req_range;
178
215
  }
179
216
  context.rigor = config.rigor;
180
217
  context.schema = config.schema || "spec-driven";
218
+ const layered = config.schema === ChangeLayers_1.LAYERED_SCHEMA;
181
219
  context.deltasWritten = (0, ChangeWorkspace_1.listDeltas)(projectDir, changeId).length;
182
220
  if (stage) {
183
221
  return {
@@ -198,8 +236,12 @@ function buildInstructions(projectDir, artifact, changeId, templates) {
198
236
  state: state ? state.status : "unknown",
199
237
  requires: state ? state.requires : [],
200
238
  unlocks: unlockedBy(artifact, artifacts),
201
- template: templates[artifact] ? templates[artifact](changeId, projectDir) : null,
202
- rules: ARTIFACT_RULES[artifact] || [],
239
+ template: layered && LAYER_TEMPLATES[artifact]
240
+ ? LAYER_TEMPLATES[artifact](changeId)
241
+ : templates[artifact]
242
+ ? templates[artifact](changeId, projectDir)
243
+ : null,
244
+ rules: (layered && LAYERED_RULES[artifact]) || ARTIFACT_RULES[artifact] || [],
203
245
  context,
204
246
  nextCommand: `specgate change validate ${changeId}`,
205
247
  };
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../scripts/change/instructions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../scripts/change/instructions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ /**
3
+ * `specgate alm phase <change>` and `specgate alm move <change> [<phase>]`
4
+ * (REQ-309) — what an agent needs to drive the board: read where a change
5
+ * stands without the network, and move its ticket there.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.phaseMain = phaseMain;
42
+ exports.moveMain = moveMain;
43
+ const project_root_1 = require("../../../lib/project-root");
44
+ const agent_1 = require("../../../lib/agent");
45
+ const diagnostics_1 = require("../../../lib/diagnostics");
46
+ const core_1 = require("../../../alm/core");
47
+ const clients_1 = require("../../../alm/clients");
48
+ const port_1 = require("../../../alm/port");
49
+ const phases_1 = require("../../../alm/phases");
50
+ const ui = __importStar(require("../../../lib/ui"));
51
+ function parseArgs(argv) {
52
+ const opts = { projectDir: ".", json: false, positional: [] };
53
+ for (let i = 0; i < argv.length; i++) {
54
+ const a = argv[i];
55
+ if (a === "--project-dir" && argv[i + 1])
56
+ opts.projectDir = argv[++i];
57
+ else if (a === "--json")
58
+ opts.json = true;
59
+ else if (a.startsWith("-")) {
60
+ process.stderr.write(`Unknown flag: ${a}\n`);
61
+ process.exit(2);
62
+ }
63
+ else
64
+ opts.positional.push(a);
65
+ }
66
+ return opts;
67
+ }
68
+ /** `alm phase <change>`: the phase, the ticket and the board state last set. No network. */
69
+ async function phaseMain(argv) {
70
+ const opts = parseArgs(argv);
71
+ const io = (0, agent_1.agentIo)(opts.json || (0, agent_1.wantsJson)(argv));
72
+ const nullShape = { phase: null };
73
+ const id = opts.positional[0];
74
+ const projectDir = (0, project_root_1.resolveProjectDir)(opts.projectDir);
75
+ const change = (0, phases_1.boardChanges)(projectDir).find((c) => c.id === id);
76
+ if (!change) {
77
+ return io.fail(nullShape, [
78
+ (0, diagnostics_1.error)("change_not_found", `No change ${id || "(none)"}.`, {
79
+ target: id,
80
+ fix: "specgate alm phase <change-id> — see specgate change list.",
81
+ }),
82
+ ]);
83
+ }
84
+ const record = (0, phases_1.readPhaseMap)(projectDir)[change.id];
85
+ const phase = {
86
+ change: change.id,
87
+ phase: change.phase,
88
+ ticket: change.ticket,
89
+ state: record && record.phase === change.phase ? (record.state ?? null) : null,
90
+ requirements: change.requirements,
91
+ };
92
+ io.emit({ phase }, () => process.stdout.write(ui.header("alm phase", change.id) +
93
+ ` ${change.phase} ${change.ticket ?? ui.muted("no ticket")} ${phase.state ? `board: ${phase.state}` : ui.muted("not on the board yet")}\n\n`));
94
+ }
95
+ /** `alm move <change> [<phase>]`: move the change's ticket to its phase, or the one named. */
96
+ async function moveMain(argv) {
97
+ const opts = parseArgs(argv);
98
+ const io = (0, agent_1.agentIo)(opts.json || (0, agent_1.wantsJson)(argv));
99
+ const nullShape = { move: null };
100
+ const [id, named] = opts.positional;
101
+ if (named && !port_1.PHASES.includes(named)) {
102
+ return io.fail(nullShape, [
103
+ (0, diagnostics_1.error)("phase_unknown", `"${named}" is not a phase.`, {
104
+ target: named,
105
+ fix: `One of: ${port_1.PHASES.join(", ")}.`,
106
+ }),
107
+ ]);
108
+ }
109
+ try {
110
+ const projectDir = (0, project_root_1.resolveProjectDir)(opts.projectDir);
111
+ const change = (0, phases_1.boardChanges)(projectDir).find((c) => c.id === id);
112
+ if (!change) {
113
+ return io.fail(nullShape, [
114
+ (0, diagnostics_1.error)("change_not_found", `No change ${id || "(none)"}.`, {
115
+ target: id,
116
+ fix: "specgate alm move <change-id> [<phase>]",
117
+ }),
118
+ ]);
119
+ }
120
+ if (!change.ticket) {
121
+ return io.fail(nullShape, [
122
+ (0, diagnostics_1.error)("change_no_ticket", `${change.id} has no ticket to move.`, {
123
+ target: change.id,
124
+ fix: "Add ticket: <KEY> to its change.yaml.",
125
+ }),
126
+ ]);
127
+ }
128
+ const cfg = (0, core_1.readAlmConfig)(projectDir);
129
+ const client = (0, clients_1.makeClient)(cfg, undefined, projectDir);
130
+ const map = (0, phases_1.readPhaseMap)(projectDir);
131
+ const action = await (0, phases_1.movePhase)({ ...change, ticket: change.ticket }, map, client, cfg, {
132
+ phase: named || undefined,
133
+ force: true,
134
+ });
135
+ if (action.action === "phase-unsupported") {
136
+ return io.fail(nullShape, [
137
+ (0, diagnostics_1.error)("alm_phase_unsupported", action.detail || "", { target: cfg.provider }),
138
+ ]);
139
+ }
140
+ (0, phases_1.writePhaseMap)(projectDir, map, false);
141
+ const move = {
142
+ change: change.id,
143
+ issue: action.issue,
144
+ phase: action.phase,
145
+ state: action.state,
146
+ };
147
+ io.emit({ move }, () => process.stdout.write(ui.header("alm move", change.id) + ui.ok(`${action.issue} → ${action.state}`) + "\n"));
148
+ }
149
+ catch (e) {
150
+ return io.fail(nullShape, [(0, diagnostics_1.error)("alm_move_error", e.message || String(e))]);
151
+ }
152
+ }
153
+ //# sourceMappingURL=PhaseCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhaseCommand.js","sourceRoot":"","sources":["../../../../../scripts/cli/commands/alm/PhaseCommand.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCH,8BA+BC;AAGD,4BA2DC;AA5HD,4DAA8D;AAC9D,8CAAwD;AACxD,0DAAiD;AACjD,4CAAkD;AAClD,kDAAkD;AAClD,4CAA2C;AAE3C,gDAA2F;AAC3F,oDAAsC;AAQtC,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,IAAI,GAAY,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,eAAe,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACjE,IAAI,CAAC,KAAK,QAAQ;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aACrC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;;YAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4FAA4F;AACrF,KAAK,UAAU,SAAS,CAAC,IAAc;IAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,IAAI,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,IAAA,gCAAiB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YACxB,IAAA,mBAAK,EAAC,kBAAkB,EAAE,aAAa,EAAE,IAAI,QAAQ,GAAG,EAAE;gBACxD,MAAM,EAAE,EAAE;gBACV,GAAG,EAAE,4DAA4D;aAClE,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,MAAM,CAAC,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9E,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;IACF,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAC1D,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,sBAAsB,CACzE,MAAM,CACT,CACF,CAAC;AACJ,CAAC;AAED,8FAA8F;AACvF,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,IAAI,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,IAAI,KAAK,IAAI,CAAC,aAAM,CAAC,QAAQ,CAAC,KAAc,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YACxB,IAAA,mBAAK,EAAC,eAAe,EAAE,IAAI,KAAK,mBAAmB,EAAE;gBACnD,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,WAAW,aAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aACrC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,gCAAiB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;gBACxB,IAAA,mBAAK,EAAC,kBAAkB,EAAE,aAAa,EAAE,IAAI,QAAQ,GAAG,EAAE;oBACxD,MAAM,EAAE,EAAE;oBACV,GAAG,EAAE,yCAAyC;iBAC/C,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;gBACxB,IAAA,mBAAK,EAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,EAAE,yBAAyB,EAAE;oBAC/D,MAAM,EAAE,MAAM,CAAC,EAAE;oBACjB,GAAG,EAAE,uCAAuC;iBAC7C,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,oBAAa,EAAC,UAAU,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,EAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;YACrF,KAAK,EAAG,KAAe,IAAI,SAAS;YACpC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;gBACxB,IAAA,mBAAK,EAAC,uBAAuB,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;aAC9E,CAAC,CAAC;QACL,CAAC;QACD,IAAA,sBAAa,EAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,MAAM,CAAC,EAAE;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;QACF,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CACrF,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAA,mBAAK,EAAC,gBAAgB,EAAG,CAAW,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC"}
@@ -67,6 +67,8 @@ const agent_1 = require("../../../lib/agent");
67
67
  const diagnostics_1 = require("../../../lib/diagnostics");
68
68
  const core_1 = require("../../../alm/core");
69
69
  const clients_1 = require("../../../alm/clients");
70
+ const phases_1 = require("../../../alm/phases");
71
+ const pull_back_1 = require("./pull-back");
70
72
  const ChangeWorkspace_1 = require("../../../../packages/core/src/infrastructure/ChangeWorkspace");
71
73
  const InboundChange_1 = require("../../../../packages/core/src/domain/InboundChange");
72
74
  const NULL_SHAPE = { pulled: [], skipped: [] };
@@ -151,6 +153,31 @@ async function main(argv) {
151
153
  }),
152
154
  ]);
153
155
  }
156
+ // REQ-306: what each open change's ticket gained since the last pull comes
157
+ // back as notes, before any new issue is pulled.
158
+ let notes;
159
+ try {
160
+ const map = (0, phases_1.readPhaseMap)(projectDir);
161
+ notes = await (0, pull_back_1.pullBack)(projectDir, (0, phases_1.boardChanges)(projectDir), map, client, {
162
+ dryRun: opts.dryRun,
163
+ today: new Date().toISOString().slice(0, 10),
164
+ });
165
+ (0, phases_1.writePhaseMap)(projectDir, map, opts.dryRun);
166
+ }
167
+ catch (e) {
168
+ return io.fail(NULL_SHAPE, [
169
+ (0, diagnostics_1.error)("alm_pull_error", e.message || String(e), {
170
+ fix: "Check the ticket keys in change.yaml and your ALM configuration.",
171
+ }),
172
+ ]);
173
+ }
174
+ const printNotes = () => {
175
+ for (const n of notes) {
176
+ process.stdout.write(n.action === "comments-unsupported"
177
+ ? ` ${n.change}: ${n.text}\n`
178
+ : ` ${n.change} <- ${n.issue}: ${n.text}\n`);
179
+ }
180
+ };
154
181
  // Declared, not discovered at the first request: Jira searches with JQL,
155
182
  // GitHub with query parameters, Azure with WIQL — and a provider that cannot
156
183
  // search says so rather than failing halfway through a pull.
@@ -164,7 +191,10 @@ async function main(argv) {
164
191
  }
165
192
  const issues = await client.listIssues(opts.label);
166
193
  if (issues.length === 0) {
167
- return io.emit({ pulled: [], skipped: [], label: opts.label }, () => process.stdout.write(`\n No open issues labelled '${opts.label}'.\n\n`));
194
+ return io.emit({ pulled: [], skipped: [], label: opts.label, notes }, () => {
195
+ printNotes();
196
+ process.stdout.write(`\n No open issues labelled '${opts.label}'.\n\n`);
197
+ });
168
198
  }
169
199
  const p = (0, ChangeWorkspace_1.paths)(projectDir);
170
200
  const existing = new Set((0, ChangeWorkspace_1.listChangeIds)(projectDir));
@@ -224,7 +254,8 @@ async function main(argv) {
224
254
  fix: "Delete the change to re-pull it, or edit the one that exists.",
225
255
  }));
226
256
  }
227
- io.emit({ pulled, skipped, label: opts.label, status }, () => {
257
+ io.emit({ pulled, skipped, label: opts.label, status, notes }, () => {
258
+ printNotes();
228
259
  process.stdout.write(`\n Pulled ${pulled.length} issue(s) labelled '${opts.label}'\n\n`);
229
260
  for (const row of pulled) {
230
261
  process.stdout.write(` ${row.issue} → ${row.change} (${row.requirement})\n`);