@on-par/factory-core 0.9.28-next.4 → 0.9.28-next.6

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.
@@ -0,0 +1,49 @@
1
+ import type { LinearTrackerConfig } from '../config/tracker-section.js';
2
+ import type { QueueBackend } from './queue-backend.js';
3
+ export interface LinearQueueLabel {
4
+ id: string;
5
+ name: string;
6
+ /** Parent label (group) name. */
7
+ group?: string;
8
+ }
9
+ export interface LinearQueueIssue {
10
+ id: string;
11
+ identifier: string;
12
+ priority: number;
13
+ createdAt: string;
14
+ stateType: string;
15
+ labels: LinearQueueLabel[];
16
+ }
17
+ export interface LinearQueueClient {
18
+ /** Issues in the mapped project, in the ready state, carrying the ready label. Rejects on any API error. */
19
+ listCandidates(): Promise<LinearQueueIssue[]>;
20
+ /** Fresh label names on one issue. */
21
+ issueLabels(issueId: string): Promise<string[]>;
22
+ /** Id of the team label `name`, creating it when missing. */
23
+ ensureLabel(name: string): Promise<string>;
24
+ addLabel(issueId: string, labelId: string): Promise<void>;
25
+ removeLabel(issueId: string, labelId: string): Promise<void>;
26
+ /** Moves the issue to the team workflow state named `stateName`. */
27
+ moveToState(issueId: string, stateName: string): Promise<void>;
28
+ }
29
+ export type LinearQueue = Pick<QueueBackend, 'list' | 'claimNext'>;
30
+ export interface LinearQueueOptions {
31
+ client: LinearQueueClient;
32
+ linear: LinearTrackerConfig;
33
+ claimantId?: string;
34
+ defaultLane?: string;
35
+ }
36
+ export declare const LINEAR_DEFAULT_LANE = "default";
37
+ export declare function isLinearCandidate(issue: LinearQueueIssue, readyLabel: string): boolean;
38
+ export declare function linearLaneOf(issue: LinearQueueIssue, laneLabelGroup: string, defaultLane?: string): string;
39
+ export declare function compareLinearCandidates(a: LinearQueueIssue, b: LinearQueueIssue): number;
40
+ export declare function createLinearQueue(options: LinearQueueOptions): LinearQueue;
41
+ export declare function createLinearQueueGraphqlClient(opts: {
42
+ apiKey: string;
43
+ linear: LinearTrackerConfig;
44
+ project: string;
45
+ fetch?: typeof globalThis.fetch;
46
+ endpoint?: string;
47
+ timeoutMs?: number;
48
+ }): LinearQueueClient;
49
+ //# sourceMappingURL=linear-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-queue.d.ts","sourceRoot":"","sources":["../../src/queue/linear-queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,OAAO,KAAK,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAG1E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AACD,MAAM,WAAW,iBAAiB;IAChC,4GAA4G;IAC5G,cAAc,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC9C,sCAAsC;IACtC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,6DAA6D;IAC7D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,oEAAoE;IACpE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AACD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;AACnE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAK7C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAQtF;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,gBAAgB,EACvB,cAAc,EAAE,MAAM,EACtB,WAAW,GAAE,MAA4B,GACxC,MAAM,CAER;AAaD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAYxF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAsC1E;AA+DD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,iBAAiB,CAqHpB"}
@@ -0,0 +1,258 @@
1
+ // packages/core/src/queue/linear-queue.ts — Linear-backed queue seam: list and claimNext (ADR-0173, #3892).
2
+ import { z } from 'zod';
3
+ import { LinearApiError } from '../work/linear-client.js';
4
+ import { claimedByLabel, CLAIMED_BY_LABEL_PREFIX, defaultClaimantId, PARKED_LABEL } from './github-queue.js';
5
+ import { QUEUE_ORDER_LABEL_PREFIX } from './queue-order.js';
6
+ import { toWorkKey } from '../work/work-key.js';
7
+ export const LINEAR_DEFAULT_LANE = 'default';
8
+ const EXCLUDED_STATE_TYPES = new Set(['started', 'completed', 'canceled']);
9
+ const ORDER_PATTERN = new RegExp(`^${QUEUE_ORDER_LABEL_PREFIX}(\\d+)$`);
10
+ export function isLinearCandidate(issue, readyLabel) {
11
+ if (EXCLUDED_STATE_TYPES.has(issue.stateType))
12
+ return false;
13
+ const names = issue.labels.map((l) => l.name);
14
+ return (names.some((n) => n === readyLabel) &&
15
+ !names.some((n) => n.startsWith(CLAIMED_BY_LABEL_PREFIX)) &&
16
+ !names.includes(PARKED_LABEL));
17
+ }
18
+ export function linearLaneOf(issue, laneLabelGroup, defaultLane = LINEAR_DEFAULT_LANE) {
19
+ return issue.labels.find((l) => l.group === laneLabelGroup)?.name ?? defaultLane;
20
+ }
21
+ function priorityRank(p) {
22
+ return p >= 1 && p <= 4 ? p : 5;
23
+ }
24
+ function orderOf(issue) {
25
+ const matches = issue.labels.map((l) => ORDER_PATTERN.exec(l.name)).filter((m) => m !== null);
26
+ if (matches.length !== 1)
27
+ return Number.POSITIVE_INFINITY;
28
+ const n = Number(matches[0]?.[1]);
29
+ return Number.isSafeInteger(n) && n > 0 ? n : Number.POSITIVE_INFINITY;
30
+ }
31
+ export function compareLinearCandidates(a, b) {
32
+ const pa = priorityRank(a.priority);
33
+ const pb = priorityRank(b.priority);
34
+ if (pa !== pb)
35
+ return pa - pb;
36
+ const oa = orderOf(a);
37
+ const ob = orderOf(b);
38
+ if (oa < ob)
39
+ return -1;
40
+ if (oa > ob)
41
+ return 1;
42
+ const ca = Date.parse(a.createdAt);
43
+ const cb = Date.parse(b.createdAt);
44
+ if (ca !== cb)
45
+ return ca - cb;
46
+ return a.identifier.localeCompare(b.identifier);
47
+ }
48
+ export function createLinearQueue(options) {
49
+ const { client, linear } = options;
50
+ const defaultLane = options.defaultLane ?? LINEAR_DEFAULT_LANE;
51
+ const claimantId = options.claimantId ?? defaultClaimantId();
52
+ const myLabel = claimedByLabel(claimantId);
53
+ let myLabelId;
54
+ async function sortedFor(lane) {
55
+ const issues = await client.listCandidates();
56
+ const laneOf = (i) => linearLaneOf(i, linear.laneLabelGroup, defaultLane);
57
+ const eligible = issues.filter((i) => isLinearCandidate(i, linear.readyLabel) && (lane === undefined || laneOf(i) === lane));
58
+ if (lane !== undefined)
59
+ return eligible.sort(compareLinearCandidates);
60
+ return eligible.sort((a, b) => laneOf(a).localeCompare(laneOf(b)) || compareLinearCandidates(a, b));
61
+ }
62
+ async function list(lane) {
63
+ return (await sortedFor(lane)).map((i) => toWorkKey(i.identifier));
64
+ }
65
+ async function claimNext(lane) {
66
+ const candidates = await sortedFor(lane);
67
+ if (candidates.length === 0)
68
+ return null;
69
+ myLabelId ??= await client.ensureLabel(myLabel);
70
+ for (const c of candidates) {
71
+ await client.addLabel(c.id, myLabelId);
72
+ await client.moveToState(c.id, linear.states.inProgress);
73
+ const after = await client.issueLabels(c.id);
74
+ const winner = after.filter((n) => n.startsWith(CLAIMED_BY_LABEL_PREFIX)).sort()[0];
75
+ if (winner === myLabel)
76
+ return { key: toWorkKey(c.identifier), decision: { kind: 'build' } };
77
+ // The winner owns In Progress, so the state is left alone.
78
+ if (after.includes(myLabel))
79
+ await client.removeLabel(c.id, myLabelId);
80
+ }
81
+ return null;
82
+ }
83
+ return { list, claimNext };
84
+ }
85
+ const MAX_PAGES = 10;
86
+ const ENVELOPE = z.object({
87
+ data: z.unknown().nullish(),
88
+ errors: z.array(z.object({ message: z.string() })).optional(),
89
+ });
90
+ const CANDIDATES_QUERY = `query($after: String, $team: String!, $project: String!, $ready: String!, $label: String!) {
91
+ issues(first: 100, after: $after, filter: { team: { key: { eq: $team } }, project: { or: [{ name: { eq: $project } }, { id: { eq: $project } }] }, state: { name: { eq: $ready } }, labels: { some: { name: { eq: $label } } } }) {
92
+ nodes { id identifier priority createdAt state { type } labels { nodes { id name parent { name } } } }
93
+ pageInfo { hasNextPage endCursor }
94
+ }
95
+ }`;
96
+ const TEAM_QUERY = `query($team: String!) { teams(filter: { key: { eq: $team } }) { nodes { id states { nodes { id name } } } } }`;
97
+ const FIND_LABEL_QUERY = `query($name: String!, $teamId: ID!) { issueLabels(filter: { name: { eq: $name }, team: { id: { eq: $teamId } } }) { nodes { id } } }`;
98
+ const CREATE_LABEL_MUTATION = `mutation($name: String!, $teamId: String!) { issueLabelCreate(input: { name: $name, teamId: $teamId }) { success issueLabel { id } } }`;
99
+ const ADD_LABEL_MUTATION = `mutation($id: String!, $labelId: String!) { issueAddLabel(id: $id, labelId: $labelId) { success } }`;
100
+ const REMOVE_LABEL_MUTATION = `mutation($id: String!, $labelId: String!) { issueRemoveLabel(id: $id, labelId: $labelId) { success } }`;
101
+ const UPDATE_STATE_MUTATION = `mutation($id: String!, $stateId: String!) { issueUpdate(id: $id, input: { stateId: $stateId }) { success } }`;
102
+ const ISSUE_LABELS_QUERY = `query($id: String!) { issue(id: $id) { labels { nodes { name } } } }`;
103
+ const CandidatesSchema = z.object({
104
+ issues: z.object({
105
+ nodes: z.array(z.object({
106
+ id: z.string(),
107
+ identifier: z.string(),
108
+ priority: z.number(),
109
+ createdAt: z.string(),
110
+ state: z.object({ type: z.string() }),
111
+ labels: z.object({
112
+ nodes: z.array(z.object({ id: z.string(), name: z.string(), parent: z.object({ name: z.string() }).nullish() })),
113
+ }),
114
+ })),
115
+ pageInfo: z.object({ hasNextPage: z.boolean(), endCursor: z.string().nullish() }),
116
+ }),
117
+ });
118
+ const TeamSchema = z.object({
119
+ teams: z.object({
120
+ nodes: z.array(z.object({
121
+ id: z.string(),
122
+ states: z.object({ nodes: z.array(z.object({ id: z.string(), name: z.string() })) }),
123
+ })),
124
+ }),
125
+ });
126
+ const FindLabelSchema = z.object({ issueLabels: z.object({ nodes: z.array(z.object({ id: z.string() })) }) });
127
+ const CreateLabelSchema = z.object({
128
+ issueLabelCreate: z.object({ success: z.boolean(), issueLabel: z.object({ id: z.string() }).nullish() }),
129
+ });
130
+ const AddLabelSchema = z.object({ issueAddLabel: z.object({ success: z.boolean() }) });
131
+ const RemoveLabelSchema = z.object({ issueRemoveLabel: z.object({ success: z.boolean() }) });
132
+ const UpdateSchema = z.object({ issueUpdate: z.object({ success: z.boolean() }) });
133
+ const IssueLabelsSchema = z.object({
134
+ issue: z.object({ labels: z.object({ nodes: z.array(z.object({ name: z.string() })) }) }).nullable(),
135
+ });
136
+ export function createLinearQueueGraphqlClient(opts) {
137
+ const { apiKey, linear, project } = opts;
138
+ const fetchImpl = opts.fetch ?? globalThis.fetch;
139
+ const endpoint = opts.endpoint ?? 'https://api.linear.app/graphql';
140
+ const redact = (text) => text.split(apiKey).join('***');
141
+ async function request(query, variables, schema) {
142
+ let res;
143
+ let json;
144
+ try {
145
+ res = await fetchImpl(endpoint, {
146
+ method: 'POST',
147
+ headers: { 'Content-Type': 'application/json', Authorization: apiKey },
148
+ body: JSON.stringify({ query, variables }),
149
+ signal: AbortSignal.timeout(opts.timeoutMs ?? 30_000),
150
+ });
151
+ if (!res.ok)
152
+ throw new LinearApiError(`Linear API returned HTTP ${res.status}`);
153
+ json = await res.json();
154
+ }
155
+ catch (err) {
156
+ if (err instanceof LinearApiError)
157
+ throw err;
158
+ throw new LinearApiError(redact(err instanceof Error ? err.message : String(err)));
159
+ }
160
+ const envelope = ENVELOPE.safeParse(json);
161
+ if (!envelope.success)
162
+ throw malformed(envelope.error);
163
+ const { data, errors } = envelope.data;
164
+ if (errors && errors.length > 0) {
165
+ throw new LinearApiError(redact(`Linear API error: ${errors.map((e) => e.message).join('; ')}`));
166
+ }
167
+ if (data == null)
168
+ throw new LinearApiError('Linear API returned no data');
169
+ const parsed = schema.safeParse(data);
170
+ if (!parsed.success)
171
+ throw malformed(parsed.error);
172
+ return parsed.data;
173
+ }
174
+ function malformed(error) {
175
+ const first = error.issues[0];
176
+ const where = first ? `${first.path.join('.')}: ${first.message}` : 'unknown';
177
+ return new LinearApiError(redact(`malformed Linear response: ${where}`));
178
+ }
179
+ let team;
180
+ function teamInfo() {
181
+ team ??= request(TEAM_QUERY, { team: linear.teamKey }, TeamSchema).then((d) => {
182
+ const found = d.teams.nodes[0];
183
+ if (!found)
184
+ throw new LinearApiError(`Linear team ${linear.teamKey} not found`);
185
+ return found;
186
+ });
187
+ team.catch(() => {
188
+ team = undefined;
189
+ });
190
+ return team;
191
+ }
192
+ function ensureSuccess(ok, what) {
193
+ if (!ok)
194
+ throw new LinearApiError(`Linear ${what} reported success=false`);
195
+ }
196
+ return {
197
+ async listCandidates() {
198
+ const out = [];
199
+ let after = null;
200
+ for (let page = 0; page < MAX_PAGES; page++) {
201
+ const { issues } = await request(CANDIDATES_QUERY, { after, team: linear.teamKey, project, ready: linear.states.ready, label: linear.readyLabel }, CandidatesSchema);
202
+ for (const n of issues.nodes) {
203
+ out.push({
204
+ id: n.id,
205
+ identifier: n.identifier,
206
+ priority: n.priority,
207
+ createdAt: n.createdAt,
208
+ stateType: n.state.type,
209
+ labels: n.labels.nodes.map((l) => ({
210
+ id: l.id,
211
+ name: l.name,
212
+ ...(l.parent ? { group: l.parent.name } : {}),
213
+ })),
214
+ });
215
+ }
216
+ if (!issues.pageInfo.hasNextPage)
217
+ return out;
218
+ after = issues.pageInfo.endCursor ?? null;
219
+ }
220
+ throw new LinearApiError('Linear ready queue exceeds 1000 issues');
221
+ },
222
+ async issueLabels(issueId) {
223
+ const d = await request(ISSUE_LABELS_QUERY, { id: issueId }, IssueLabelsSchema);
224
+ if (d.issue === null)
225
+ throw new LinearApiError(`Linear issue ${issueId} not found`);
226
+ return d.issue.labels.nodes.map((l) => l.name);
227
+ },
228
+ async ensureLabel(name) {
229
+ const { id: teamId } = await teamInfo();
230
+ const found = await request(FIND_LABEL_QUERY, { name, teamId }, FindLabelSchema);
231
+ const existing = found.issueLabels.nodes[0];
232
+ if (existing)
233
+ return existing.id;
234
+ const created = (await request(CREATE_LABEL_MUTATION, { name, teamId }, CreateLabelSchema)).issueLabelCreate;
235
+ ensureSuccess(created.success, 'label create');
236
+ if (!created.issueLabel)
237
+ throw new LinearApiError('Linear label create returned no label');
238
+ return created.issueLabel.id;
239
+ },
240
+ async addLabel(issueId, labelId) {
241
+ const d = await request(ADD_LABEL_MUTATION, { id: issueId, labelId }, AddLabelSchema);
242
+ ensureSuccess(d.issueAddLabel.success, 'label add');
243
+ },
244
+ async removeLabel(issueId, labelId) {
245
+ const d = await request(REMOVE_LABEL_MUTATION, { id: issueId, labelId }, RemoveLabelSchema);
246
+ ensureSuccess(d.issueRemoveLabel.success, 'label remove');
247
+ },
248
+ async moveToState(issueId, stateName) {
249
+ const info = await teamInfo();
250
+ const state = info.states.nodes.find((s) => s.name === stateName);
251
+ if (!state)
252
+ throw new LinearApiError(`Linear state "${stateName}" not found in team ${linear.teamKey}`);
253
+ const d = await request(UPDATE_STATE_MUTATION, { id: issueId, stateId: state.id }, UpdateSchema);
254
+ ensureSuccess(d.issueUpdate.success, 'state update');
255
+ },
256
+ };
257
+ }
258
+ //# sourceMappingURL=linear-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-queue.js","sourceRoot":"","sources":["../../src/queue/linear-queue.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,12 @@ import type { BuildRoute, RunOutcome } from './outcome.js';
4
4
  /** Path of one issue's persisted run state inside `runsDir`
5
5
  * (`getFactoryPaths(repoRoot).runs`). */
6
6
  export declare function runStateFile(runsDir: string, key: WorkKey): string;
7
- /** Persists `state` with its string `key` and no numeric `issue` (#3890), filling `repo` from the
8
- * run's worktree when the caller did not supply one. Returns the in-memory record (both `key` and
9
- * `issue`), so a caller can see the resolved slug. An unresolvable slug omits the key rather than
10
- * writing a placeholder. */
7
+ /** Persists `state` with its string `key` (#3890), filling `repo` from the run's worktree when the
8
+ * caller did not supply one. A numeric key also persists the numeric `issue`, so a factory binary
9
+ * from before #3890 (0.9.27 or earlier) on the same host still reads the record (ADR-0168: no
10
+ * on-disk state migrates). A non-numeric key (a Linear or Jira ticket) persists no `issue`.
11
+ * Returns the in-memory record (both `key` and `issue`), so a caller can see the resolved slug.
12
+ * An unresolvable slug omits the key rather than writing a placeholder. */
11
13
  export declare function writeIssueRunState(file: string, state: IssueRunState): Promise<IssueRunState>;
12
14
  /** Reads one issue's persisted run state, or null when the file is missing,
13
15
  * unreadable, or not a JSON object. Never throws. `repo` is surfaced when the record
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/run/state.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAgE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;0CAC0C;AAC1C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAElE;AAED;;;6BAG6B;AAC7B,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAanG;AAED;;;;mEAImE;AACnE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA2BnF;AAED,MAAM,WAAW,oBAAoB;IACnC,6FAA6F;IAC7F,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,0EAA0E;IAC1E,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;yGACyG;AACzG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAUtG;AAED;;2FAE2F;AAC3F,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmCrH;AAED,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAWhE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAYhE;AAED,kGAAkG;AAClG,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,aAAa,GAAG,SAAS,EAC/B,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM,GACV,aAAa,CAkBf"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/run/state.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAgE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;0CAC0C;AAC1C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAElE;AAED;;;;;4EAK4E;AAC5E,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAcnG;AAED;;;;mEAImE;AACnE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA2BnF;AAED,MAAM,WAAW,oBAAoB;IACnC,6FAA6F;IAC7F,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,0EAA0E;IAC1E,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;yGACyG;AACzG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAUtG;AAED;;2FAE2F;AAC3F,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmCrH;AAED,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAWhE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAYhE;AAED,kGAAkG;AAClG,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,aAAa,GAAG,SAAS,EAC/B,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM,GACV,aAAa,CAkBf"}
package/dist/run/state.js CHANGED
@@ -13,15 +13,18 @@ import { isNumericWorkKey, issueNumberOf, toWorkKey, workKeyFromIssue } from '..
13
13
  export function runStateFile(runsDir, key) {
14
14
  return resolve(runsDir, `issue-${key}.json`);
15
15
  }
16
- /** Persists `state` with its string `key` and no numeric `issue` (#3890), filling `repo` from the
17
- * run's worktree when the caller did not supply one. Returns the in-memory record (both `key` and
18
- * `issue`), so a caller can see the resolved slug. An unresolvable slug omits the key rather than
19
- * writing a placeholder. */
16
+ /** Persists `state` with its string `key` (#3890), filling `repo` from the run's worktree when the
17
+ * caller did not supply one. A numeric key also persists the numeric `issue`, so a factory binary
18
+ * from before #3890 (0.9.27 or earlier) on the same host still reads the record (ADR-0168: no
19
+ * on-disk state migrates). A non-numeric key (a Linear or Jira ticket) persists no `issue`.
20
+ * Returns the in-memory record (both `key` and `issue`), so a caller can see the resolved slug.
21
+ * An unresolvable slug omits the key rather than writing a placeholder. */
20
22
  export async function writeIssueRunState(file, state) {
21
23
  const repo = state.repo ?? resolveRepoSlug(state.worktree) ?? undefined;
22
24
  const key = state.key ?? workKeyFromIssue(state.issue);
23
25
  const { issue: _issue, key: _key, ...rest } = state;
24
- const persisted = repo === undefined ? rest : { ...rest, repo };
26
+ const legacy = isNumericWorkKey(key) ? { issue: issueNumberOf(key) } : {};
27
+ const persisted = repo === undefined ? { ...legacy, ...rest } : { ...legacy, ...rest, repo };
25
28
  // `repo` must be absent, not undefined, in the JSON: JSON.stringify drops undefined
26
29
  // values, so the two shapes serialize identically — keep it that way.
27
30
  await mkdir(dirname(file), { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/run/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/run/state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@on-par/factory-core",
3
- "version": "0.9.28-next.4",
3
+ "version": "0.9.28-next.6",
4
4
  "description": "Core engine: model router, constitutions, checkers, and pipeline phases for the Software Factory.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,10 +54,10 @@
54
54
  "prepack": "node ../../scripts/pack-hygiene-cli.ts prepack"
55
55
  },
56
56
  "dependencies": {
57
- "@on-par/adr-kit": "0.9.28-next.4",
58
- "@on-par/contracts": "0.9.28-next.4",
59
- "@on-par/factory-config": "0.9.28-next.4",
60
- "@on-par/repo-context": "0.9.28-next.4",
57
+ "@on-par/adr-kit": "0.9.28-next.6",
58
+ "@on-par/contracts": "0.9.28-next.6",
59
+ "@on-par/factory-config": "0.9.28-next.6",
60
+ "@on-par/repo-context": "0.9.28-next.6",
61
61
  "@octokit/rest": "^22.0.0",
62
62
  "execa": "^10.2.1",
63
63
  "gray-matter": "^4.0.3",