@lumenflow/cli 4.12.4 → 4.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/wu-block.js CHANGED
@@ -31,7 +31,7 @@ import { BRANCHES, REMOTES, WU_STATUS, STATUS_SECTIONS, PATTERNS, LOG_PREFIX, FI
31
31
  import { ensureOnMain } from '@lumenflow/core/wu-helpers';
32
32
  import { resolveWuEventsRelativePath } from './state-path-resolvers.js';
33
33
  import { ensureStaged } from '@lumenflow/core/git-staged-validator';
34
- import { withMicroWorktree, LUMENFLOW_WU_TOOL_ENV } from '@lumenflow/core/micro-worktree';
34
+ import { withMicroWorktree } from '@lumenflow/core/micro-worktree';
35
35
  import { WUStateStore } from '@lumenflow/core/wu-state-store';
36
36
  // WU-1603: Atomic lane locking - release lock when WU is blocked
37
37
  import { releaseLaneLock } from '@lumenflow/core/lane-lock';
@@ -39,34 +39,11 @@ import { releaseLaneLock } from '@lumenflow/core/lane-lock';
39
39
  import { getLockPolicyForLane } from '@lumenflow/core/lane-checker';
40
40
  import { shouldUseBranchPrStatePath } from './wu-state-cloud.js';
41
41
  import { runCLI } from './cli-entry-point.js';
42
+ import { runWuMutationCommand } from './wu-command-harness.js';
42
43
  import { assertStateMutationOwnership } from './wu-state-mutation-ownership.js';
43
44
  // ensureOnMain() moved to wu-helpers.ts (WU-1256)
44
45
  // ensureStaged() moved to git-staged-validator.ts (WU-1341)
45
46
  // defaultWorktreeFrom() moved to wu-paths.ts (WU-1341)
46
- /**
47
- * WU-1365: Execute a function with LUMENFLOW_WU_TOOL set, restoring afterwards
48
- *
49
- * Sets the LUMENFLOW_WU_TOOL env var to allow pre-push hook bypass, then
50
- * restores the original value (or deletes it) after execution completes.
51
- *
52
- * @param toolName - Value to set for LUMENFLOW_WU_TOOL
53
- * @param fn - Async function to execute
54
- */
55
- async function withWuToolEnv(toolName, fn) {
56
- const previousWuTool = process.env[LUMENFLOW_WU_TOOL_ENV];
57
- process.env[LUMENFLOW_WU_TOOL_ENV] = toolName;
58
- try {
59
- return await fn();
60
- }
61
- finally {
62
- if (previousWuTool === undefined) {
63
- Reflect.deleteProperty(process.env, LUMENFLOW_WU_TOOL_ENV);
64
- }
65
- else {
66
- process.env[LUMENFLOW_WU_TOOL_ENV] = previousWuTool;
67
- }
68
- }
69
- }
70
47
  export function shouldUseBranchPrBlockPath(doc) {
71
48
  return shouldUseBranchPrStatePath(doc);
72
49
  }
@@ -214,6 +191,7 @@ export async function main() {
214
191
  ` 3. Create WU if missing: pnpm wu:create --id ${id} --lane "<lane>" --title "..."`);
215
192
  }
216
193
  const title = typeof doc.title === 'string' ? doc.title : '';
194
+ const lane = typeof doc.lane === 'string' ? doc.lane : undefined;
217
195
  const branchPrPath = shouldUseBranchPrBlockPath(doc);
218
196
  await assertStateMutationOwnership({
219
197
  wuId: id,
@@ -241,94 +219,121 @@ export async function main() {
241
219
  }
242
220
  const baseMsg = `wu(${id.toLowerCase()}): block`;
243
221
  const commitMsg = args.reason ? `${baseMsg} — ${args.reason}` : baseMsg;
222
+ const telemetryContext = {
223
+ script: 'wu-block',
224
+ wuId: id,
225
+ lane,
226
+ };
244
227
  if (!args.noAuto) {
245
228
  if (branchPrPath) {
246
- const currentBranch = await getGitForCwd().getCurrentBranch();
247
- const claimedBranch = typeof doc.claimed_branch === 'string' ? doc.claimed_branch : '';
248
- if (claimedBranch && currentBranch !== claimedBranch) {
249
- die(`Cannot block branch-pr WU ${id}: current branch does not match claimed_branch.\n\n` +
250
- `Current branch: ${currentBranch}\n` +
251
- `Claimed branch: ${claimedBranch}`);
252
- }
253
- doc.status = WU_STATUS.BLOCKED;
254
- const noteLine = args.reason
255
- ? `Blocked (${todayISO()}): ${args.reason}`
256
- : `Blocked (${todayISO()})`;
257
- appendNote(doc, noteLine);
258
- writeWU(mainWUPath, doc);
259
- await moveFromInProgressToBlocked(WU_PATHS.STATUS(), id, title, args.reason);
260
- await regenerateBacklogFromState(WU_PATHS.BACKLOG());
261
- const stateDir = getStateStoreDirFromBacklog(WU_PATHS.BACKLOG());
262
- const store = new WUStateStore(stateDir);
263
- await store.load();
264
- await store.block(id, args.reason || 'No reason provided');
265
- await getGitForCwd().add([
266
- WU_PATHS.WU(id),
267
- WU_PATHS.STATUS(),
268
- WU_PATHS.BACKLOG(),
269
- resolveWuEventsRelativePath(process.cwd()),
270
- ]);
271
- await getGitForCwd().commit(commitMsg);
272
- await getGitForCwd().push(REMOTES.ORIGIN, currentBranch);
229
+ await runWuMutationCommand({
230
+ context: telemetryContext,
231
+ step: 'blocked',
232
+ success: { mode: 'branch-pr', no_auto: false },
233
+ failure: { mode: 'branch-pr', no_auto: false },
234
+ execute: async () => {
235
+ const currentBranch = await getGitForCwd().getCurrentBranch();
236
+ const claimedBranch = typeof doc.claimed_branch === 'string' ? doc.claimed_branch : '';
237
+ if (claimedBranch && currentBranch !== claimedBranch) {
238
+ die(`Cannot block branch-pr WU ${id}: current branch does not match claimed_branch.\n\n` +
239
+ `Current branch: ${currentBranch}\n` +
240
+ `Claimed branch: ${claimedBranch}`);
241
+ }
242
+ doc.status = WU_STATUS.BLOCKED;
243
+ const noteLine = args.reason
244
+ ? `Blocked (${todayISO()}): ${args.reason}`
245
+ : `Blocked (${todayISO()})`;
246
+ appendNote(doc, noteLine);
247
+ writeWU(mainWUPath, doc);
248
+ await moveFromInProgressToBlocked(WU_PATHS.STATUS(), id, title, args.reason);
249
+ await regenerateBacklogFromState(WU_PATHS.BACKLOG());
250
+ const stateDir = getStateStoreDirFromBacklog(WU_PATHS.BACKLOG());
251
+ const store = new WUStateStore(stateDir);
252
+ await store.load();
253
+ await store.block(id, args.reason || 'No reason provided');
254
+ await getGitForCwd().add([
255
+ WU_PATHS.WU(id),
256
+ WU_PATHS.STATUS(),
257
+ WU_PATHS.BACKLOG(),
258
+ resolveWuEventsRelativePath(process.cwd()),
259
+ ]);
260
+ await getGitForCwd().commit(commitMsg);
261
+ await getGitForCwd().push(REMOTES.ORIGIN, currentBranch);
262
+ },
263
+ });
273
264
  }
274
265
  else {
275
- // WU-1365: Set LUMENFLOW_WU_TOOL to allow pre-push hook bypass for micro-worktree pushes
276
- await withWuToolEnv(MICRO_WORKTREE_OPERATIONS.WU_BLOCK, async () => {
277
- // Use micro-worktree pattern to avoid pre-commit hook blocking commits to main
278
- await withMicroWorktree({
279
- operation: MICRO_WORKTREE_OPERATIONS.WU_BLOCK,
280
- id,
281
- logPrefix: LOG_PREFIX.BLOCK,
282
- pushOnly: true, // Push directly to origin/main without touching local main
283
- execute: async ({ worktreePath }) => {
284
- // Build paths relative to micro-worktree
285
- const microWUPath = path.join(worktreePath, WU_PATHS.WU(id));
286
- const microStatusPath = path.join(worktreePath, WU_PATHS.STATUS());
287
- const microBacklogPath = path.join(worktreePath, WU_PATHS.BACKLOG());
288
- // Update WU YAML in micro-worktree
289
- const microDoc = readWU(microWUPath, id);
290
- microDoc.status = WU_STATUS.BLOCKED;
291
- const noteLine = args.reason
292
- ? `Blocked (${todayISO()}): ${args.reason}`
293
- : `Blocked (${todayISO()})`;
294
- appendNote(microDoc, noteLine);
295
- writeWU(microWUPath, microDoc);
296
- // Update status.md in micro-worktree
297
- await moveFromInProgressToBlocked(microStatusPath, id, title, args.reason);
298
- // Update backlog.md in micro-worktree (WU-1574: regenerate from state store)
299
- await regenerateBacklogFromState(microBacklogPath);
300
- // Append block event to WUStateStore (WU-1573)
301
- const stateDir = getStateStoreDirFromBacklog(microBacklogPath);
302
- const store = new WUStateStore(stateDir);
303
- await store.load();
304
- await store.block(id, args.reason || 'No reason provided');
305
- return {
306
- commitMessage: commitMsg,
307
- files: [
308
- WU_PATHS.WU(id),
309
- WU_PATHS.STATUS(),
310
- WU_PATHS.BACKLOG(),
311
- resolveWuEventsRelativePath(worktreePath),
312
- ],
313
- };
314
- },
315
- });
316
- // Fetch to update local main tracking
317
- await getGitForCwd().fetch(REMOTES.ORIGIN, BRANCHES.MAIN);
266
+ await runWuMutationCommand({
267
+ context: telemetryContext,
268
+ step: 'blocked',
269
+ toolName: MICRO_WORKTREE_OPERATIONS.WU_BLOCK,
270
+ success: { mode: 'micro-worktree', no_auto: false },
271
+ failure: { mode: 'micro-worktree', no_auto: false },
272
+ execute: async () => {
273
+ // Use micro-worktree pattern to avoid pre-commit hook blocking commits to main
274
+ await withMicroWorktree({
275
+ operation: MICRO_WORKTREE_OPERATIONS.WU_BLOCK,
276
+ id,
277
+ logPrefix: LOG_PREFIX.BLOCK,
278
+ pushOnly: true, // Push directly to origin/main without touching local main
279
+ execute: async ({ worktreePath }) => {
280
+ // Build paths relative to micro-worktree
281
+ const microWUPath = path.join(worktreePath, WU_PATHS.WU(id));
282
+ const microStatusPath = path.join(worktreePath, WU_PATHS.STATUS());
283
+ const microBacklogPath = path.join(worktreePath, WU_PATHS.BACKLOG());
284
+ // Update WU YAML in micro-worktree
285
+ const microDoc = readWU(microWUPath, id);
286
+ microDoc.status = WU_STATUS.BLOCKED;
287
+ const noteLine = args.reason
288
+ ? `Blocked (${todayISO()}): ${args.reason}`
289
+ : `Blocked (${todayISO()})`;
290
+ appendNote(microDoc, noteLine);
291
+ writeWU(microWUPath, microDoc);
292
+ // Update status.md in micro-worktree
293
+ await moveFromInProgressToBlocked(microStatusPath, id, title, args.reason);
294
+ // Update backlog.md in micro-worktree (WU-1574: regenerate from state store)
295
+ await regenerateBacklogFromState(microBacklogPath);
296
+ // Append block event to WUStateStore (WU-1573)
297
+ const stateDir = getStateStoreDirFromBacklog(microBacklogPath);
298
+ const store = new WUStateStore(stateDir);
299
+ await store.load();
300
+ await store.block(id, args.reason || 'No reason provided');
301
+ return {
302
+ commitMessage: commitMsg,
303
+ files: [
304
+ WU_PATHS.WU(id),
305
+ WU_PATHS.STATUS(),
306
+ WU_PATHS.BACKLOG(),
307
+ resolveWuEventsRelativePath(worktreePath),
308
+ ],
309
+ };
310
+ },
311
+ });
312
+ // Fetch to update local main tracking
313
+ await getGitForCwd().fetch(REMOTES.ORIGIN, BRANCHES.MAIN);
314
+ },
318
315
  });
319
316
  }
320
317
  }
321
318
  else {
322
- // Manual mode: expect files already staged
323
- ensureStaged([mainWUPath, WU_PATHS.STATUS(), WU_PATHS.BACKLOG()]);
324
- await getGitForCwd().commit(commitMsg);
325
- if (branchPrPath) {
326
- const currentBranch = await getGitForCwd().getCurrentBranch();
327
- await getGitForCwd().push(REMOTES.ORIGIN, currentBranch);
328
- }
329
- else {
330
- await getGitForCwd().push(REMOTES.ORIGIN, BRANCHES.MAIN);
331
- }
319
+ await runWuMutationCommand({
320
+ context: telemetryContext,
321
+ step: 'blocked',
322
+ success: { mode: branchPrPath ? 'branch-pr' : 'manual', no_auto: true },
323
+ failure: { mode: branchPrPath ? 'branch-pr' : 'manual', no_auto: true },
324
+ execute: async () => {
325
+ // Manual mode: expect files already staged
326
+ ensureStaged([mainWUPath, WU_PATHS.STATUS(), WU_PATHS.BACKLOG()]);
327
+ await getGitForCwd().commit(commitMsg);
328
+ if (branchPrPath) {
329
+ const currentBranch = await getGitForCwd().getCurrentBranch();
330
+ await getGitForCwd().push(REMOTES.ORIGIN, currentBranch);
331
+ }
332
+ else {
333
+ await getGitForCwd().push(REMOTES.ORIGIN, BRANCHES.MAIN);
334
+ }
335
+ },
336
+ });
332
337
  }
333
338
  await handleWorktreeRemoval(args, doc);
334
339
  // WU-1325: Release lane lock when WU is blocked (only for lock_policy=active)
@@ -1 +1 @@
1
- {"version":3,"file":"wu-block.js","sourceRoot":"","sources":["../src/wu-block.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wu-block.js","sourceRoot":"","sources":["../src/wu-block.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ import { getErrorMessage } from '@lumenflow/core/error-handler';
4
+ import { LUMENFLOW_WU_TOOL_ENV } from '@lumenflow/core/micro-worktree';
5
+ import { emitWUFlowEvent } from '@lumenflow/core/telemetry';
6
+ function resolveEventFields(builder, value) {
7
+ if (!builder) {
8
+ return {};
9
+ }
10
+ return typeof builder === 'function' ? builder(value) : builder;
11
+ }
12
+ export function emitWuCommandEvent(context, event) {
13
+ emitWUFlowEvent({
14
+ script: context.script,
15
+ ...(context.wuId ? { wu_id: context.wuId } : {}),
16
+ ...(context.lane ? { lane: context.lane } : {}),
17
+ ...event,
18
+ });
19
+ }
20
+ export async function withWuToolEnv(toolName, fn) {
21
+ const previousWuTool = process.env[LUMENFLOW_WU_TOOL_ENV];
22
+ process.env[LUMENFLOW_WU_TOOL_ENV] = toolName;
23
+ try {
24
+ return await fn();
25
+ }
26
+ finally {
27
+ if (previousWuTool === undefined) {
28
+ Reflect.deleteProperty(process.env, LUMENFLOW_WU_TOOL_ENV);
29
+ }
30
+ else {
31
+ process.env[LUMENFLOW_WU_TOOL_ENV] = previousWuTool;
32
+ }
33
+ }
34
+ }
35
+ export async function runWuMutationCommand(options) {
36
+ const execute = typeof options.toolName === 'string' && options.toolName.length > 0
37
+ ? () => withWuToolEnv(options.toolName, options.execute)
38
+ : options.execute;
39
+ try {
40
+ const result = await execute();
41
+ emitWuCommandEvent(options.context, {
42
+ step: options.step,
43
+ outcome: 'success',
44
+ ...resolveEventFields(options.success, result),
45
+ });
46
+ return result;
47
+ }
48
+ catch (error) {
49
+ emitWuCommandEvent(options.context, {
50
+ step: options.step,
51
+ outcome: 'error',
52
+ error_message: getErrorMessage(error),
53
+ ...resolveEventFields(options.failure, error),
54
+ });
55
+ throw error;
56
+ }
57
+ }
58
+ //# sourceMappingURL=wu-command-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-command-harness.js","sourceRoot":"","sources":["../src/wu-command-harness.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAoB5D,SAAS,kBAAkB,CACzB,OAA6C,EAC7C,KAAQ;IAER,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAyB,EAAE,KAA2B;IACvF,eAAe,CAAC;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,KAAK;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,QAAgB,EAAE,EAAoB;IAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,QAAQ,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,cAAc,CAAC;QACtD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAI,OAAuC;IACnF,MAAM,OAAO,GACX,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACjE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,QAAkB,EAAE,OAAO,CAAC,OAAO,CAAC;QAClE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;QAC/B,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,SAAS;YAClB,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;SAC/C,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO;YAChB,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC;YACrC,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;SAC9C,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
package/dist/wu-create.js CHANGED
@@ -60,6 +60,7 @@ import { emitSizingAdvisory } from './wu-create-sizing-advisory.js';
60
60
  import { validateSizingEstimate } from './wu-sizing-validation.js';
61
61
  import { flushWuLifecycleSync } from './wu-lifecycle-sync/service.js';
62
62
  import { WU_LIFECYCLE_COMMANDS } from './wu-lifecycle-sync/constants.js';
63
+ import { runWuMutationCommand } from './wu-command-harness.js';
63
64
  // Re-export public API for backward compatibility (tests import from wu-create.js)
64
65
  export { validateCreateSpec } from './wu-create-validation.js';
65
66
  export { buildWUContent } from './wu-create-content.js';
@@ -621,6 +622,10 @@ export async function main() {
621
622
  try {
622
623
  const priority = args.priority || DEFAULT_PRIORITY;
623
624
  const type = effectiveType;
625
+ const telemetryContext = {
626
+ script: OPERATION_NAME,
627
+ lane: args.lane,
628
+ };
624
629
  // WU-1590: Shared create options for both paths
625
630
  const createOpts = {
626
631
  // Initiative system fields (WU-1247)
@@ -651,18 +656,26 @@ export async function main() {
651
656
  sizingEstimate: resolvedSizingEstimate,
652
657
  };
653
658
  if (cloudCtx.skipMicroWorktree) {
654
- // WU-1590: Cloud path - write and commit directly on current branch
655
- const cwd = process.cwd();
656
- const wuPath = createWUYamlInWorktree(cwd, wuId, args.lane, args.title, priority, type, createOpts);
657
- const backlogPath = updateBacklogInWorktree(cwd, wuId, args.lane, args.title);
658
- const shortTitle = truncateTitle(args.title);
659
- const commitMessage = COMMIT_FORMATS.CREATE(wuId, shortTitle);
660
- await commitCloudCreateArtifacts({
661
- git: getGitForCwd(),
662
- wuPath,
663
- backlogPath,
664
- commitMessage,
665
- targetBranch: cloudCtx.targetBranch,
659
+ await runWuMutationCommand({
660
+ context: telemetryContext,
661
+ step: 'created',
662
+ success: { mode: 'cloud-branch', auto_generated_id: isAutoGeneratedId, wu_id: wuId },
663
+ failure: { mode: 'cloud-branch', auto_generated_id: isAutoGeneratedId, wu_id: wuId },
664
+ execute: async () => {
665
+ // WU-1590: Cloud path - write and commit directly on current branch
666
+ const cwd = process.cwd();
667
+ const wuPath = createWUYamlInWorktree(cwd, wuId, args.lane, args.title, priority, type, createOpts);
668
+ const backlogPath = updateBacklogInWorktree(cwd, wuId, args.lane, args.title);
669
+ const shortTitle = truncateTitle(args.title);
670
+ const commitMessage = COMMIT_FORMATS.CREATE(wuId, shortTitle);
671
+ await commitCloudCreateArtifacts({
672
+ git: getGitForCwd(),
673
+ wuPath,
674
+ backlogPath,
675
+ commitMessage,
676
+ targetBranch: cloudCtx.targetBranch,
677
+ });
678
+ },
666
679
  });
667
680
  console.log(`${LOG_PREFIX} Cloud mode: committed WU spec on ${cloudCtx.targetBranch}`);
668
681
  }
@@ -671,11 +684,24 @@ export async function main() {
671
684
  // Wraps the micro-worktree transaction so that on push failure due to
672
685
  // duplicate ID (TOCTOU race), it re-fetches remote, regenerates the ID,
673
686
  // and retries the entire create-commit-push cycle.
674
- const previousWuTool = process.env[ENV_VARS.WU_TOOL];
675
- process.env[ENV_VARS.WU_TOOL] = OPERATION_NAME;
676
- try {
677
- const result = await retryCreateOnPushCollision({
687
+ const result = await runWuMutationCommand({
688
+ context: telemetryContext,
689
+ step: 'created',
690
+ toolName: OPERATION_NAME,
691
+ success: (createResult) => ({
692
+ mode: 'micro-worktree',
693
+ auto_generated_id: true,
694
+ retry_attempts: createResult.attempts,
695
+ wu_id: createResult.wuId,
696
+ }),
697
+ failure: { mode: 'micro-worktree', auto_generated_id: true, wu_id: wuId },
698
+ execute: async () => retryCreateOnPushCollision({
678
699
  git: getGitForCwd(),
700
+ // WU-2571: Thread the canonical wu_id config so retry-generated
701
+ // ids stay zero-padded. Previously the retry helper built ids as
702
+ // `${WU_ID_PREFIX}${highest + 1}`, silently bypassing the
703
+ // canonicalization applied above for the explicit-id path.
704
+ wuIdConfig,
679
705
  createFn: async (retryWuId) => {
680
706
  await withMicroWorktree({
681
707
  operation: OPERATION_NAME,
@@ -694,55 +720,44 @@ export async function main() {
694
720
  });
695
721
  },
696
722
  maxRetries: 3,
697
- });
698
- // Update wuId in case it was regenerated during retry
699
- wuId = result.wuId;
700
- if (result.attempts > 1) {
701
- console.log(`${LOG_PREFIX} Resolved push collision after ${result.attempts} attempts (final ID: ${wuId})`);
702
- }
703
- }
704
- finally {
705
- if (previousWuTool === undefined) {
706
- delete process.env[ENV_VARS.WU_TOOL];
707
- }
708
- else {
709
- process.env[ENV_VARS.WU_TOOL] = previousWuTool;
710
- }
723
+ }),
724
+ });
725
+ // Update wuId in case it was regenerated during retry
726
+ wuId = result.wuId;
727
+ if (result.attempts > 1) {
728
+ console.log(`${LOG_PREFIX} Resolved push collision after ${result.attempts} attempts (final ID: ${wuId})`);
711
729
  }
712
730
  }
713
731
  else {
714
732
  // Standard path: micro-worktree isolation (explicit --id provided, no collision retry)
715
- const previousWuTool = process.env[ENV_VARS.WU_TOOL];
716
- process.env[ENV_VARS.WU_TOOL] = OPERATION_NAME;
717
- try {
718
- await withMicroWorktree({
719
- operation: OPERATION_NAME,
720
- id: wuId,
721
- logPrefix: LOG_PREFIX,
722
- execute: async ({ worktreePath }) => {
723
- // Create WU YAML in micro-worktree
724
- const wuPath = createWUYamlInWorktree(worktreePath, wuId, args.lane, args.title, priority, type, createOpts);
725
- // Update backlog.md in micro-worktree
726
- const backlogPath = updateBacklogInWorktree(worktreePath, wuId, args.lane, args.title);
727
- // Build commit message
728
- const shortTitle = truncateTitle(args.title);
729
- const commitMessage = COMMIT_FORMATS.CREATE(wuId, shortTitle);
730
- // Return commit message and files to commit
731
- return {
732
- commitMessage,
733
- files: [wuPath, backlogPath],
734
- };
735
- },
736
- });
737
- }
738
- finally {
739
- if (previousWuTool === undefined) {
740
- delete process.env[ENV_VARS.WU_TOOL];
741
- }
742
- else {
743
- process.env[ENV_VARS.WU_TOOL] = previousWuTool;
744
- }
745
- }
733
+ await runWuMutationCommand({
734
+ context: telemetryContext,
735
+ step: 'created',
736
+ toolName: OPERATION_NAME,
737
+ success: { mode: 'micro-worktree', auto_generated_id: false, wu_id: wuId },
738
+ failure: { mode: 'micro-worktree', auto_generated_id: false, wu_id: wuId },
739
+ execute: async () => {
740
+ await withMicroWorktree({
741
+ operation: OPERATION_NAME,
742
+ id: wuId,
743
+ logPrefix: LOG_PREFIX,
744
+ execute: async ({ worktreePath }) => {
745
+ // Create WU YAML in micro-worktree
746
+ const wuPath = createWUYamlInWorktree(worktreePath, wuId, args.lane, args.title, priority, type, createOpts);
747
+ // Update backlog.md in micro-worktree
748
+ const backlogPath = updateBacklogInWorktree(worktreePath, wuId, args.lane, args.title);
749
+ // Build commit message
750
+ const shortTitle = truncateTitle(args.title);
751
+ const commitMessage = COMMIT_FORMATS.CREATE(wuId, shortTitle);
752
+ // Return commit message and files to commit
753
+ return {
754
+ commitMessage,
755
+ files: [wuPath, backlogPath],
756
+ };
757
+ },
758
+ });
759
+ },
760
+ });
746
761
  }
747
762
  console.log(`\n${LOG_PREFIX} Transaction complete!`);
748
763
  console.log(`\nWU ${wuId} created successfully:`);