@lumenflow/core 2.15.2 → 2.17.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 (270) hide show
  1. package/dist/adapters/filesystem-metrics.adapter.d.ts.map +1 -1
  2. package/dist/adapters/filesystem-metrics.adapter.js +17 -16
  3. package/dist/adapters/filesystem-metrics.adapter.js.map +1 -1
  4. package/dist/adapters/mock-dashboard-renderer.adapter.d.ts +86 -0
  5. package/dist/adapters/mock-dashboard-renderer.adapter.d.ts.map +1 -0
  6. package/dist/adapters/mock-dashboard-renderer.adapter.js +105 -0
  7. package/dist/adapters/mock-dashboard-renderer.adapter.js.map +1 -0
  8. package/dist/adapters/terminal-renderer.adapter.d.ts.map +1 -1
  9. package/dist/adapters/terminal-renderer.adapter.js +0 -2
  10. package/dist/adapters/terminal-renderer.adapter.js.map +1 -1
  11. package/dist/arg-parser.d.ts.map +1 -1
  12. package/dist/arg-parser.js +4 -3
  13. package/dist/arg-parser.js.map +1 -1
  14. package/dist/backlog-editor.js +1 -1
  15. package/dist/backlog-editor.js.map +1 -1
  16. package/dist/backlog-generator.d.ts.map +1 -1
  17. package/dist/backlog-generator.js +48 -21
  18. package/dist/backlog-generator.js.map +1 -1
  19. package/dist/backlog-parser.d.ts.map +1 -1
  20. package/dist/backlog-parser.js +0 -1
  21. package/dist/backlog-parser.js.map +1 -1
  22. package/dist/backlog-sync-validator.d.ts.map +1 -1
  23. package/dist/backlog-sync-validator.js +5 -3
  24. package/dist/backlog-sync-validator.js.map +1 -1
  25. package/dist/branch-check.d.ts.map +1 -1
  26. package/dist/branch-check.js +1 -0
  27. package/dist/branch-check.js.map +1 -1
  28. package/dist/cli/is-agent-branch.d.ts +2 -1
  29. package/dist/cli/is-agent-branch.d.ts.map +1 -1
  30. package/dist/cli/is-agent-branch.js +8 -1
  31. package/dist/cli/is-agent-branch.js.map +1 -1
  32. package/dist/code-path-validator.d.ts.map +1 -1
  33. package/dist/code-path-validator.js +2 -1
  34. package/dist/code-path-validator.js.map +1 -1
  35. package/dist/code-paths-overlap.js +1 -1
  36. package/dist/code-paths-overlap.js.map +1 -1
  37. package/dist/commands-logger.js +1 -1
  38. package/dist/commands-logger.js.map +1 -1
  39. package/dist/context/location-resolver.js +1 -1
  40. package/dist/context/location-resolver.js.map +1 -1
  41. package/dist/context-validation-integration.d.ts +1 -1
  42. package/dist/context-validation-integration.d.ts.map +1 -1
  43. package/dist/context-validation-integration.js +3 -2
  44. package/dist/context-validation-integration.js.map +1 -1
  45. package/dist/core/tool-runner.js +1 -1
  46. package/dist/core/tool-runner.js.map +1 -1
  47. package/dist/core/tool.schemas.d.ts +3 -3
  48. package/dist/core/tool.schemas.d.ts.map +1 -1
  49. package/dist/core/tool.schemas.js +1 -1
  50. package/dist/core/tool.schemas.js.map +1 -1
  51. package/dist/dependency-graph.js +1 -1
  52. package/dist/dependency-graph.js.map +1 -1
  53. package/dist/dependency-guard.js +1 -1
  54. package/dist/dependency-guard.js.map +1 -1
  55. package/dist/domain/context.schemas.d.ts +3 -3
  56. package/dist/domain/orchestration.constants.d.ts.map +1 -1
  57. package/dist/domain/orchestration.constants.js +7 -6
  58. package/dist/domain/orchestration.constants.js.map +1 -1
  59. package/dist/domain/validation.schemas.d.ts +1 -1
  60. package/dist/error-handler.d.ts +26 -2
  61. package/dist/error-handler.d.ts.map +1 -1
  62. package/dist/error-handler.js +36 -3
  63. package/dist/error-handler.js.map +1 -1
  64. package/dist/force-bypass-audit.d.ts.map +1 -1
  65. package/dist/force-bypass-audit.js +2 -0
  66. package/dist/force-bypass-audit.js.map +1 -1
  67. package/dist/git-context-extractor.d.ts.map +1 -1
  68. package/dist/git-context-extractor.js +1 -0
  69. package/dist/git-context-extractor.js.map +1 -1
  70. package/dist/index.d.ts +5 -1
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +3 -1
  73. package/dist/index.js.map +1 -1
  74. package/dist/invariants/check-automated-tests.js +2 -2
  75. package/dist/invariants/check-automated-tests.js.map +1 -1
  76. package/dist/invariants-runner.d.ts.map +1 -1
  77. package/dist/invariants-runner.js +3 -0
  78. package/dist/invariants-runner.js.map +1 -1
  79. package/dist/lumenflow-config-schema.d.ts.map +1 -1
  80. package/dist/lumenflow-config-schema.js +2 -1
  81. package/dist/lumenflow-config-schema.js.map +1 -1
  82. package/dist/migration-deployer.d.ts +1 -1
  83. package/dist/migration-deployer.d.ts.map +1 -1
  84. package/dist/migration-deployer.js +1 -1
  85. package/dist/migration-deployer.js.map +1 -1
  86. package/dist/patrol-loop.d.ts.map +1 -1
  87. package/dist/patrol-loop.js +9 -1
  88. package/dist/patrol-loop.js.map +1 -1
  89. package/dist/piped-command-detector.d.ts.map +1 -1
  90. package/dist/piped-command-detector.js +1 -0
  91. package/dist/piped-command-detector.js.map +1 -1
  92. package/dist/ports/core-tools.ports.d.ts +32 -17
  93. package/dist/ports/core-tools.ports.d.ts.map +1 -1
  94. package/dist/ports/wu-helpers.ports.d.ts +2 -0
  95. package/dist/ports/wu-helpers.ports.d.ts.map +1 -1
  96. package/dist/prompt-linter.d.ts +5 -0
  97. package/dist/prompt-linter.d.ts.map +1 -1
  98. package/dist/prompt-linter.js +8 -2
  99. package/dist/prompt-linter.js.map +1 -1
  100. package/dist/prompt-monitor.d.ts +5 -1
  101. package/dist/prompt-monitor.d.ts.map +1 -1
  102. package/dist/prompt-monitor.js +16 -8
  103. package/dist/prompt-monitor.js.map +1 -1
  104. package/dist/rebase-artifact-cleanup.d.ts.map +1 -1
  105. package/dist/rebase-artifact-cleanup.js +1 -1
  106. package/dist/rebase-artifact-cleanup.js.map +1 -1
  107. package/dist/rollback-utils.d.ts.map +1 -1
  108. package/dist/rollback-utils.js +0 -1
  109. package/dist/rollback-utils.js.map +1 -1
  110. package/dist/schemas/initiative-arg-validators.d.ts +1 -1
  111. package/dist/schemas/initiative-schemas.d.ts +3 -3
  112. package/dist/spawn-recovery.js +1 -1
  113. package/dist/spawn-recovery.js.map +1 -1
  114. package/dist/stamp-status-validator.d.ts.map +1 -1
  115. package/dist/stamp-status-validator.js +2 -1
  116. package/dist/stamp-status-validator.js.map +1 -1
  117. package/dist/stamp-tracking.d.ts +12 -0
  118. package/dist/stamp-tracking.d.ts.map +1 -0
  119. package/dist/stamp-tracking.js +41 -0
  120. package/dist/stamp-tracking.js.map +1 -0
  121. package/dist/stamp-utils.d.ts.map +1 -1
  122. package/dist/stamp-utils.js +0 -1
  123. package/dist/stamp-utils.js.map +1 -1
  124. package/dist/state-doctor-core.d.ts.map +1 -1
  125. package/dist/state-doctor-core.js +10 -9
  126. package/dist/state-doctor-core.js.map +1 -1
  127. package/dist/system-map-validator.d.ts.map +1 -1
  128. package/dist/system-map-validator.js +7 -3
  129. package/dist/system-map-validator.js.map +1 -1
  130. package/dist/telemetry.d.ts.map +1 -1
  131. package/dist/telemetry.js +3 -1
  132. package/dist/telemetry.js.map +1 -1
  133. package/dist/template-loader.d.ts.map +1 -1
  134. package/dist/template-loader.js +1 -0
  135. package/dist/template-loader.js.map +1 -1
  136. package/dist/token-counter.js +2 -6
  137. package/dist/token-counter.js.map +1 -1
  138. package/dist/usecases/compute-context.usecase.d.ts.map +1 -1
  139. package/dist/usecases/compute-context.usecase.js +2 -1
  140. package/dist/usecases/compute-context.usecase.js.map +1 -1
  141. package/dist/validators/wu-tasks.js +2 -2
  142. package/dist/validators/wu-tasks.js.map +1 -1
  143. package/dist/wu-backlog-updater.d.ts +1 -1
  144. package/dist/wu-backlog-updater.d.ts.map +1 -1
  145. package/dist/wu-backlog-updater.js +1 -1
  146. package/dist/wu-backlog-updater.js.map +1 -1
  147. package/dist/wu-claim-resume.d.ts.map +1 -1
  148. package/dist/wu-claim-resume.js +0 -1
  149. package/dist/wu-claim-resume.js.map +1 -1
  150. package/dist/wu-cli-constants.d.ts +426 -0
  151. package/dist/wu-cli-constants.d.ts.map +1 -0
  152. package/dist/wu-cli-constants.js +429 -0
  153. package/dist/wu-cli-constants.js.map +1 -0
  154. package/dist/wu-consistency-checker.d.ts +5 -1
  155. package/dist/wu-consistency-checker.d.ts.map +1 -1
  156. package/dist/wu-consistency-checker.js +133 -25
  157. package/dist/wu-consistency-checker.js.map +1 -1
  158. package/dist/wu-constants.d.ts +21 -1834
  159. package/dist/wu-constants.d.ts.map +1 -1
  160. package/dist/wu-constants.js +28 -1951
  161. package/dist/wu-constants.js.map +1 -1
  162. package/dist/wu-context-constants.d.ts +264 -0
  163. package/dist/wu-context-constants.d.ts.map +1 -0
  164. package/dist/wu-context-constants.js +259 -0
  165. package/dist/wu-context-constants.js.map +1 -0
  166. package/dist/wu-domain-constants.d.ts +305 -0
  167. package/dist/wu-domain-constants.d.ts.map +1 -0
  168. package/dist/wu-domain-constants.js +401 -0
  169. package/dist/wu-domain-constants.js.map +1 -0
  170. package/dist/wu-done-branch-only.d.ts.map +1 -1
  171. package/dist/wu-done-branch-only.js +2 -2
  172. package/dist/wu-done-branch-only.js.map +1 -1
  173. package/dist/wu-done-concurrent-merge.d.ts.map +1 -1
  174. package/dist/wu-done-concurrent-merge.js +12 -12
  175. package/dist/wu-done-concurrent-merge.js.map +1 -1
  176. package/dist/wu-done-docs-generate.d.ts.map +1 -1
  177. package/dist/wu-done-docs-generate.js +1 -0
  178. package/dist/wu-done-docs-generate.js.map +1 -1
  179. package/dist/wu-done-initiative-sync.d.ts +13 -0
  180. package/dist/wu-done-initiative-sync.d.ts.map +1 -0
  181. package/dist/wu-done-initiative-sync.js +218 -0
  182. package/dist/wu-done-initiative-sync.js.map +1 -0
  183. package/dist/wu-done-inputs.d.ts.map +1 -1
  184. package/dist/wu-done-inputs.js +2 -2
  185. package/dist/wu-done-inputs.js.map +1 -1
  186. package/dist/wu-done-messages.d.ts +1 -1
  187. package/dist/wu-done-messages.d.ts.map +1 -1
  188. package/dist/wu-done-messages.js +2 -2
  189. package/dist/wu-done-messages.js.map +1 -1
  190. package/dist/wu-done-metadata.d.ts +6 -2
  191. package/dist/wu-done-metadata.d.ts.map +1 -1
  192. package/dist/wu-done-metadata.js +31 -7
  193. package/dist/wu-done-metadata.js.map +1 -1
  194. package/dist/wu-done-pr.d.ts.map +1 -1
  195. package/dist/wu-done-pr.js +2 -1
  196. package/dist/wu-done-pr.js.map +1 -1
  197. package/dist/wu-done-validation.d.ts +3 -1
  198. package/dist/wu-done-validation.d.ts.map +1 -1
  199. package/dist/wu-done-validation.js +81 -13
  200. package/dist/wu-done-validation.js.map +1 -1
  201. package/dist/wu-done-worktree.d.ts +54 -0
  202. package/dist/wu-done-worktree.d.ts.map +1 -1
  203. package/dist/wu-done-worktree.js +166 -44
  204. package/dist/wu-done-worktree.js.map +1 -1
  205. package/dist/wu-events-cleanup.d.ts.map +1 -1
  206. package/dist/wu-events-cleanup.js +3 -2
  207. package/dist/wu-events-cleanup.js.map +1 -1
  208. package/dist/wu-git-constants.d.ts +172 -0
  209. package/dist/wu-git-constants.d.ts.map +1 -0
  210. package/dist/wu-git-constants.js +172 -0
  211. package/dist/wu-git-constants.js.map +1 -0
  212. package/dist/wu-helpers.js +1 -1
  213. package/dist/wu-helpers.js.map +1 -1
  214. package/dist/wu-lint.d.ts.map +1 -1
  215. package/dist/wu-lint.js +8 -1
  216. package/dist/wu-lint.js.map +1 -1
  217. package/dist/wu-list.d.ts.map +1 -1
  218. package/dist/wu-list.js +3 -2
  219. package/dist/wu-list.js.map +1 -1
  220. package/dist/wu-paths-constants.d.ts +311 -0
  221. package/dist/wu-paths-constants.d.ts.map +1 -0
  222. package/dist/wu-paths-constants.js +308 -0
  223. package/dist/wu-paths-constants.js.map +1 -0
  224. package/dist/wu-paths.d.ts +12 -0
  225. package/dist/wu-paths.d.ts.map +1 -1
  226. package/dist/wu-paths.js +7 -1
  227. package/dist/wu-paths.js.map +1 -1
  228. package/dist/wu-recovery.d.ts.map +1 -1
  229. package/dist/wu-recovery.js +2 -2
  230. package/dist/wu-recovery.js.map +1 -1
  231. package/dist/wu-repair-core.d.ts +1 -0
  232. package/dist/wu-repair-core.d.ts.map +1 -1
  233. package/dist/wu-repair-core.js +7 -3
  234. package/dist/wu-repair-core.js.map +1 -1
  235. package/dist/wu-schema.d.ts.map +1 -1
  236. package/dist/wu-schema.js +2 -2
  237. package/dist/wu-schema.js.map +1 -1
  238. package/dist/wu-spawn-helpers.d.ts.map +1 -1
  239. package/dist/wu-spawn-helpers.js +3 -2
  240. package/dist/wu-spawn-helpers.js.map +1 -1
  241. package/dist/wu-spawn.js +5 -5
  242. package/dist/wu-spawn.js.map +1 -1
  243. package/dist/wu-state-store.d.ts.map +1 -1
  244. package/dist/wu-state-store.js +20 -19
  245. package/dist/wu-state-store.js.map +1 -1
  246. package/dist/wu-status-transition.d.ts.map +1 -1
  247. package/dist/wu-status-transition.js +3 -26
  248. package/dist/wu-status-transition.js.map +1 -1
  249. package/dist/wu-status-updater.js +1 -1
  250. package/dist/wu-status-updater.js.map +1 -1
  251. package/dist/wu-statuses.d.ts +134 -0
  252. package/dist/wu-statuses.d.ts.map +1 -0
  253. package/dist/wu-statuses.js +149 -0
  254. package/dist/wu-statuses.js.map +1 -0
  255. package/dist/wu-transaction-collectors.d.ts.map +1 -1
  256. package/dist/wu-transaction-collectors.js +6 -3
  257. package/dist/wu-transaction-collectors.js.map +1 -1
  258. package/dist/wu-transaction.d.ts.map +1 -1
  259. package/dist/wu-transaction.js +1 -1
  260. package/dist/wu-transaction.js.map +1 -1
  261. package/dist/wu-ui-constants.d.ts +235 -0
  262. package/dist/wu-ui-constants.d.ts.map +1 -0
  263. package/dist/wu-ui-constants.js +235 -0
  264. package/dist/wu-ui-constants.js.map +1 -0
  265. package/dist/wu-validator.d.ts.map +1 -1
  266. package/dist/wu-validator.js +2 -1
  267. package/dist/wu-validator.js.map +1 -1
  268. package/dist/wu-yaml.js +1 -1
  269. package/dist/wu-yaml.js.map +1 -1
  270. package/package.json +80 -4
@@ -6,11 +6,13 @@ import { existsSync, readFileSync } from 'node:fs';
6
6
  import { getGitForCwd } from './git-adapter.js';
7
7
  import { parseYAML } from './wu-yaml.js';
8
8
  import { die } from './error-handler.js';
9
- import { BRANCHES, EMOJI, FILE_SYSTEM, GIT_COMMANDS, LOG_PREFIX, STRING_LITERALS, TEST_TYPES, VALIDATION, WU_TYPES, } from './wu-constants.js';
9
+ import { BRANCHES, DIRECTORIES, EMOJI, FILE_SYSTEM, GIT_COMMANDS, LUMENFLOW_PATHS, LOG_PREFIX, STRING_LITERALS, TEST_TYPES, VALIDATION, WU_TYPES, WU_STATUS, } from './wu-constants.js';
10
+ import { WU_PATHS } from './wu-paths.js';
10
11
  import { PLACEHOLDER_SENTINEL } from './wu-schema.js';
11
12
  import { resolveExposureDefault } from './wu-validation.js';
12
13
  import { validateAutomatedTestRequirement } from './manual-test-validator.js';
13
14
  import { isDocumentationPath } from './file-classifiers.js';
15
+ import { normalizeToDateString } from './date-utils.js';
14
16
  export function applyExposureDefaults(doc) {
15
17
  if (!doc || typeof doc !== 'object') {
16
18
  return { applied: false };
@@ -154,6 +156,40 @@ export function validateSpecCompleteness(doc, _id) {
154
156
  }
155
157
  return { valid: errors.length === 0, errors };
156
158
  }
159
+ function deriveStatusFromEventsContent(eventsContent, wuId) {
160
+ let status;
161
+ for (const line of eventsContent.split('\n')) {
162
+ if (!line.trim())
163
+ continue;
164
+ try {
165
+ const event = JSON.parse(line);
166
+ if (event.wuId !== wuId || !event.type)
167
+ continue;
168
+ switch (event.type) {
169
+ case 'claim':
170
+ case 'create':
171
+ status = WU_STATUS.IN_PROGRESS;
172
+ break;
173
+ case 'release':
174
+ status = WU_STATUS.READY;
175
+ break;
176
+ case 'complete':
177
+ status = WU_STATUS.DONE;
178
+ break;
179
+ case 'block':
180
+ status = WU_STATUS.BLOCKED;
181
+ break;
182
+ case 'unblock':
183
+ status = WU_STATUS.IN_PROGRESS;
184
+ break;
185
+ }
186
+ }
187
+ catch {
188
+ // Ignore malformed lines; other guards handle structural integrity.
189
+ }
190
+ }
191
+ return status;
192
+ }
157
193
  /**
158
194
  * WU-1617: Post-mutation validation for wu:done
159
195
  *
@@ -161,8 +197,9 @@ export function validateSpecCompleteness(doc, _id) {
161
197
  * 1. WU YAML has completed_at field with valid ISO datetime
162
198
  * 2. WU YAML has locked: true
163
199
  * 3. Stamp file exists
200
+ * 4. State store derives to done (when eventsPath is provided)
164
201
  */
165
- export function validatePostMutation({ id, wuPath, stampPath }) {
202
+ export function validatePostMutation({ id, wuPath, stampPath, eventsPath = null }) {
166
203
  const errors = [];
167
204
  // Check stamp file exists
168
205
  if (!existsSync(stampPath)) {
@@ -187,18 +224,50 @@ export function validatePostMutation({ id, wuPath, stampPath }) {
187
224
  errors.push(`Invalid completed_at timestamp: ${doc.completed_at}`);
188
225
  }
189
226
  }
227
+ // Keep legacy completion date normalized for downstream tools.
228
+ if (!doc.completed) {
229
+ errors.push(`Missing required field 'completed' in ${id}.yaml`);
230
+ }
231
+ else {
232
+ const normalizedCompleted = normalizeToDateString(doc.completed);
233
+ if (!normalizedCompleted) {
234
+ errors.push(`Invalid completed date: ${doc.completed}`);
235
+ }
236
+ else if (normalizedCompleted !== doc.completed) {
237
+ errors.push(`Non-normalized completed date: ${doc.completed}`);
238
+ }
239
+ }
190
240
  // Verify locked is true
191
241
  if (doc.locked !== true) {
192
242
  errors.push(`Missing or invalid 'locked' field in ${id}.yaml (expected: true, got: ${doc.locked})`);
193
243
  }
194
244
  // Verify status is done
195
- if (doc.status !== 'done') {
196
- errors.push(`Invalid status in ${id}.yaml (expected: 'done', got: '${doc.status}')`);
245
+ if (doc.status !== WU_STATUS.DONE) {
246
+ errors.push(`Invalid status in ${id}.yaml (expected: '${WU_STATUS.DONE}', got: '${doc.status}')`);
197
247
  }
198
248
  }
199
249
  catch (err) {
200
250
  errors.push(`Failed to parse WU YAML after mutation: ${err.message}`);
201
251
  }
252
+ if (eventsPath) {
253
+ if (!existsSync(eventsPath)) {
254
+ errors.push(`State store file not found after mutation: ${eventsPath}`);
255
+ }
256
+ else {
257
+ try {
258
+ const eventsContent = readFileSync(eventsPath, {
259
+ encoding: FILE_SYSTEM.ENCODING,
260
+ });
261
+ const derivedStatus = deriveStatusFromEventsContent(eventsContent, id);
262
+ if (derivedStatus !== WU_STATUS.DONE) {
263
+ errors.push(`WU ${id} state store is '${derivedStatus ?? 'missing'}' after mutation (expected: '${WU_STATUS.DONE}')`);
264
+ }
265
+ }
266
+ catch (err) {
267
+ errors.push(`Failed to parse state store after mutation: ${err.message}`);
268
+ }
269
+ }
270
+ }
202
271
  return { valid: errors.length === 0, errors };
203
272
  }
204
273
  /**
@@ -451,12 +520,12 @@ Context: WU-1153 prevents lost work from metadata rollbacks
451
520
  * itself may create or modify during the completion workflow.
452
521
  */
453
522
  export const METADATA_ALLOWLIST_PATTERNS = [
454
- 'docs/04-operations/tasks/status.md',
455
- 'docs/04-operations/tasks/backlog.md',
456
- '.lumenflow/state/wu-events.jsonl',
457
- '.lumenflow/flow.log',
458
- '.lumenflow/skip-gates-audit.log',
459
- '.lumenflow/skip-cos-gates-audit.log',
523
+ DIRECTORIES.STATUS_PATH,
524
+ DIRECTORIES.BACKLOG_PATH,
525
+ LUMENFLOW_PATHS.WU_EVENTS,
526
+ LUMENFLOW_PATHS.FLOW_LOG,
527
+ LUMENFLOW_PATHS.SKIP_GATES_AUDIT,
528
+ LUMENFLOW_PATHS.SKIP_COS_GATES_AUDIT,
460
529
  // WU YAML and stamps are matched dynamically by WU ID (see isMetadataAllowlisted)
461
530
  ];
462
531
  /**
@@ -476,12 +545,11 @@ function isMetadataAllowlisted(filePath, wuId) {
476
545
  return true;
477
546
  }
478
547
  // Dynamic WU-specific patterns
479
- const wuYamlPattern = `docs/04-operations/tasks/wu/${wuId}.yaml`;
480
- if (filePath === wuYamlPattern) {
548
+ if (filePath === WU_PATHS.WU(wuId)) {
481
549
  return true;
482
550
  }
483
551
  // Stamps directory (any stamp file is allowed during wu:done)
484
- if (filePath.startsWith('.lumenflow/stamps/')) {
552
+ if (filePath.startsWith(`${LUMENFLOW_PATHS.STAMPS_DIR}/`)) {
485
553
  return true;
486
554
  }
487
555
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"wu-done-validation.js","sourceRoot":"","sources":["../src/wu-done-validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wu-done-validation.js","sourceRoot":"","sources":["../src/wu-done-validation.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,21 @@
40
40
  * @property {boolean} [recovered] - Whether zombie state was recovered
41
41
  * @property {boolean} [cleanupSafe] - WU-1811: Whether worktree cleanup is safe (all steps succeeded)
42
42
  */
43
+ interface WorktreeMetadataPaths {
44
+ wuPath: string;
45
+ statusPath: string;
46
+ backlogPath: string;
47
+ stampsDir: string;
48
+ stampPath: string;
49
+ eventsPath: string;
50
+ }
51
+ /**
52
+ * Resolve all metadata/state paths as absolute worktree-local paths.
53
+ *
54
+ * WU-1563: Prevents wu:done from writing lifecycle metadata into main checkout
55
+ * when worktree mode is active.
56
+ */
57
+ export declare function resolveWorktreeMetadataPaths(worktreePath: string, id: string): WorktreeMetadataPaths;
43
58
  /**
44
59
  * Execute worktree mode completion
45
60
  *
@@ -178,5 +193,44 @@ export declare function rollbackBranchOnMergeFailure(gitAdapter: any, preCommitS
178
193
  success: boolean;
179
194
  error: any;
180
195
  }>;
196
+ /**
197
+ * WU-1577: Validate that local main is not behind origin/main before transaction.
198
+ *
199
+ * Defense-in-depth check inside the core layer. The CLI layer already has
200
+ * `ensureMainUpToDate()`, but this adds a guard directly before the
201
+ * transaction starts in `executeWorktreeCompletion()`. This prevents
202
+ * metadata leaks when the merge succeeds but the subsequent push fails
203
+ * because main was behind.
204
+ *
205
+ * Fail-open: if the fetch or comparison fails (network issue), returns valid=true
206
+ * to avoid blocking legitimate work when there's no remote.
207
+ *
208
+ * @param gitAdapter - Git adapter instance (must be in main checkout context)
209
+ * @returns Validation result with commitsBehind count
210
+ */
211
+ export declare function validateMainNotBehindOrigin(gitAdapter: any): Promise<{
212
+ valid: boolean;
213
+ commitsBehind: number;
214
+ failOpen?: boolean;
215
+ }>;
216
+ /**
217
+ * WU-1577: Rollback main checkout to pre-merge SHA after merge/push failure.
218
+ *
219
+ * When executeWorktreeCompletion() merges the lane branch into local main
220
+ * (ff-only) but the subsequent pull --rebase or push fails, main is left
221
+ * with leaked metadata (wu-events.jsonl complete event, backlog, status).
222
+ * This function resets main to its pre-merge state so no metadata leaks.
223
+ *
224
+ * Best-effort: never throws. Returns success/failure status for logging.
225
+ *
226
+ * @param gitAdapter - Git adapter instance (must be in main checkout context)
227
+ * @param preMainMergeSha - SHA to reset to (captured before merge)
228
+ * @param wuId - WU ID for logging
229
+ * @returns Rollback result
230
+ */
231
+ export declare function rollbackMainAfterMergeFailure(gitAdapter: any, preMainMergeSha: string, wuId: string): Promise<{
232
+ success: boolean;
233
+ error?: string;
234
+ }>;
181
235
  export {};
182
236
  //# sourceMappingURL=wu-done-worktree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wu-done-worktree.d.ts","sourceRoot":"","sources":["../src/wu-done-worktree.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;GAkBG;AA6EH;;;;;;;;;;;GAWG;AAEH;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,KAAA;;;;;;;GA0kBtD;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,KAAA,mBA6B5C;AAwID;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,KAAA,EAAE,YAAY,KAAA,EAAE,IAAI,KAAA;;;;;;GAgGhE;AAED;;;;;;;;GAQG;AACH,UAAU,kBAAkB;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAsB,qBAAqB,CAAC,MAAM,KAAA,EAAE,OAAO,GAAE,kBAAuB,iBAgDnF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,KAAA,EAAE,OAAO,GAAE,kBAAuB,iBAyD/E;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,KAAA,iBAkB/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CAAC,MAAM,KAAA,EAAE,GAAG,MAAO,iBAwDvD;AAWD;;;;;;;;;;GAUG;AACH,UAAU,sBAAuB,SAAQ,kBAAkB;IACzD,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,eAAe,CAAC,MAAM,KAAA,EAAE,OAAO,GAAE,sBAA2B,iBA6FjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,WAMhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,4BAA4B,CAAC,UAAU,KAAA,EAAE,YAAY,KAAA,EAAE,IAAI,KAAA;;;;;;GAsBhF"}
1
+ {"version":3,"file":"wu-done-worktree.d.ts","sourceRoot":"","sources":["../src/wu-done-worktree.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAwEH;;;;;;;;;;;GAWG;AAEH;;;;;;;;;GASG;AAEH,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,GACT,qBAAqB,CASvB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,KAAA;;;;;;;GA2mBtD;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,KAAA,mBA6B5C;AAwID;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,KAAA,EAAE,YAAY,KAAA,EAAE,IAAI,KAAA;;;;;;GAgGhE;AAED;;;;;;;;GAQG;AACH,UAAU,kBAAkB;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAsB,qBAAqB,CAAC,MAAM,KAAA,EAAE,OAAO,GAAE,kBAAuB,iBAgDnF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,KAAA,EAAE,OAAO,GAAE,kBAAuB,iBAyD/E;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,KAAA,iBAkB/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CAAC,MAAM,KAAA,EAAE,GAAG,MAAO,iBAwDvD;AAWD;;;;;;;;;;GAUG;AACH,UAAU,sBAAuB,SAAQ,kBAAkB;IACzD,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,eAAe,CAAC,MAAM,KAAA,EAAE,OAAO,GAAE,sBAA2B,iBA6FjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,WAMhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,4BAA4B,CAAC,UAAU,KAAA,EAAE,YAAY,KAAA,EAAE,IAAI,KAAA;;;;;;GAsBhF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,KAAA,GACT,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BxE;AAwCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,6BAA6B,CACjD,UAAU,KAAA,EACV,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB/C"}
@@ -23,7 +23,7 @@ import { writeFile } from 'node:fs/promises';
23
23
  import { generateCommitMessage, collectMetadataToTransaction, stageAndFormatMetadata, defaultBranchFrom, branchExists, validatePostMutation, } from './wu-done-validators.js';
24
24
  import { getGitForCwd, createGitForPath } from './git-adapter.js';
25
25
  import { readWU, writeWU } from './wu-yaml.js';
26
- import { WU_PATHS, createWuPaths } from './wu-paths.js';
26
+ import { WU_PATHS } from './wu-paths.js';
27
27
  import { BRANCHES, REMOTES, THRESHOLDS, LOG_PREFIX, EMOJI, COMMIT_FORMATS, BOX, STRING_LITERALS, WU_STATUS, GIT_COMMANDS, GIT_FLAGS, LUMENFLOW_PATHS, } from './wu-constants.js';
28
28
  import { RECOVERY, REBASE, PREFLIGHT, MERGE } from './wu-done-messages.js';
29
29
  import { getDriftLevel, DRIFT_LEVELS } from './branch-drift.js';
@@ -49,34 +49,28 @@ import { WUTransaction, createTransactionSnapshot, restoreFromSnapshot } from '.
49
49
  // WU-1749: Added prepareRecoveryWithSquash for zombie recovery flow
50
50
  import { countPreviousCompletionAttempts, squashPreviousCompletionAttempts, prepareRecoveryWithSquash, } from './wu-done-retry-helpers.js';
51
51
  // WU-1747: Import retry, lock, and checkpoint modules for concurrent load resilience
52
- import { withRetry, createRetryConfig, RETRYABLE_ERROR_PATTERNS } from './retry-strategy.js';
52
+ import { withRetry, createRetryConfig } from './retry-strategy.js';
53
53
  import { withMergeLock } from './merge-lock.js';
54
- import { createPreGatesCheckpoint, markGatesPassed, canSkipGates, clearCheckpoint, } from './wu-checkpoint.js';
54
+ import {} from './wu-checkpoint.js';
55
55
  // WU-1749: Import state store constant for append-only file path
56
56
  import { WU_EVENTS_FILE_NAME } from './wu-state-store.js';
57
57
  import { validateWUEvent } from './wu-state-schema.js';
58
58
  /**
59
- * @typedef {Object} WorktreeContext
60
- * @property {string} id - WU ID (e.g., "WU-1215")
61
- * @property {Object} args - Parsed CLI arguments
62
- * @property {Object} docMain - WU YAML document from main checkout
63
- * @property {string} title - WU title for commit message
64
- * @property {boolean} isDocsOnly - Whether this is a docs-only WU
65
- * @property {string} worktreePath - Path to worktree
66
- * @property {number} maxCommitLength - Max commit header length from commitlint
67
- * @property {function} validateStagedFiles - Staged files validator
68
- * NOTE: recordTransactionState/rollbackTransaction removed in WU-1369 (atomic pattern)
69
- */
70
- /**
71
- * @typedef {Object} WorktreeResult
72
- * @property {boolean} success - Whether completion succeeded
73
- * @property {boolean} committed - Whether changes were committed
74
- * @property {boolean} pushed - Whether changes were pushed
75
- * @property {boolean} merged - Whether lane branch was merged (vs PR created)
76
- * @property {string|null} prUrl - PR URL if PR mode was used
77
- * @property {boolean} [recovered] - Whether zombie state was recovered
78
- * @property {boolean} [cleanupSafe] - WU-1811: Whether worktree cleanup is safe (all steps succeeded)
59
+ * Resolve all metadata/state paths as absolute worktree-local paths.
60
+ *
61
+ * WU-1563: Prevents wu:done from writing lifecycle metadata into main checkout
62
+ * when worktree mode is active.
79
63
  */
64
+ export function resolveWorktreeMetadataPaths(worktreePath, id) {
65
+ return {
66
+ wuPath: path.join(worktreePath, WU_PATHS.WU(id)),
67
+ statusPath: path.join(worktreePath, WU_PATHS.STATUS()),
68
+ backlogPath: path.join(worktreePath, WU_PATHS.BACKLOG()),
69
+ stampsDir: path.join(worktreePath, WU_PATHS.STAMPS_DIR()),
70
+ stampPath: path.join(worktreePath, WU_PATHS.STAMP(id)),
71
+ eventsPath: path.join(worktreePath, LUMENFLOW_PATHS.STATE_DIR, WU_EVENTS_FILE_NAME),
72
+ };
73
+ }
80
74
  /**
81
75
  * Execute worktree mode completion
82
76
  *
@@ -91,9 +85,8 @@ export async function executeWorktreeCompletion(context) {
91
85
  const { id, args, docMain, title, isDocsOnly, worktreePath, maxCommitLength, validateStagedFiles,
92
86
  // NOTE: recordTransactionState/rollbackTransaction removed in WU-1369 (atomic pattern)
93
87
  } = context;
94
- // Calculate WU path relative to repo root (before chdir)
95
- // Other paths are recalculated inside the worktree using WU_PATHS
96
- const metadataWUPath = path.join(worktreePath, 'docs', '04-operations', 'tasks', 'wu', `${id}.yaml`);
88
+ const worktreeMetadataPaths = resolveWorktreeMetadataPaths(worktreePath, id);
89
+ const metadataWUPath = worktreeMetadataPaths.wuPath;
97
90
  // Read WU YAML and validate current state
98
91
  const docForUpdate = readWU(metadataWUPath, id);
99
92
  // Check for zombie state (recovery mode)
@@ -153,6 +146,11 @@ export async function executeWorktreeCompletion(context) {
153
146
  const currentStatus = docForUpdate.status || WU_STATUS.IN_PROGRESS;
154
147
  // Validate state transition
155
148
  assertTransition(currentStatus, WU_STATUS.DONE, id);
149
+ // WU-1577: Abort early if local main is behind origin/main.
150
+ // This prevents metadata leaks: if merge succeeds but push fails because
151
+ // main is behind, wu-events.jsonl/backlog/status would leak onto local main.
152
+ // Must run BEFORE transaction to guarantee no files are modified.
153
+ await ensureMainNotBehindOrigin(originalCwd, id);
156
154
  // WU-1369: Create atomic transaction for metadata updates
157
155
  // This ensures NO files are modified if any validation fails
158
156
  const transaction = new WUTransaction(id);
@@ -163,20 +161,24 @@ export async function executeWorktreeCompletion(context) {
163
161
  // WU-1943: Track pre-commit SHA and git commit state for rollback on merge failure
164
162
  let preCommitSha = null;
165
163
  let gitCommitMade = false;
164
+ // WU-1577: Track pre-merge main SHA for rollback on push failure
165
+ let preMainMergeSha = null;
166
+ let mainMerged = false;
166
167
  // WU-2310: Track snapshot for file rollback on git commit failure
167
168
  /** @type {Map<string, string|null>|null} */
168
169
  let transactionSnapshot = null;
170
+ let stagedMetadataAllowlist = [];
171
+ let initiativeMetadataPath = null;
169
172
  try {
170
173
  // WU-1541: Use explicit worktree paths and git adapter instead of process.chdir
171
174
  console.log(`\n${LOG_PREFIX.DONE} Updating metadata in worktree: ${worktreePath}`);
172
175
  const worktreeGit = createGitForPath(worktreePath);
173
- const worktreePaths = createWuPaths({ projectRoot: worktreePath });
174
- // Calculate absolute paths within the worktree
175
- const workingWUPath = worktreePaths.WU(id);
176
- const workingStatusPath = worktreePaths.STATUS();
177
- const workingBacklogPath = worktreePaths.BACKLOG();
178
- const workingStampsDir = worktreePaths.STAMPS_DIR();
179
- const workingStampPath = path.join(workingStampsDir, `${id}.done`);
176
+ // WU-1563: Use absolute metadata paths rooted in worktreePath.
177
+ const workingWUPath = worktreeMetadataPaths.wuPath;
178
+ const workingStatusPath = worktreeMetadataPaths.statusPath;
179
+ const workingBacklogPath = worktreeMetadataPaths.backlogPath;
180
+ const workingStampsDir = worktreeMetadataPaths.stampsDir;
181
+ const workingStampPath = worktreeMetadataPaths.stampPath;
180
182
  // ======================================================================
181
183
  // PHASE 1: RUN ALL VALIDATIONS FIRST (before any file writes)
182
184
  // WU-1369: This ensures no partial state on validation failure
@@ -226,7 +228,14 @@ export async function executeWorktreeCompletion(context) {
226
228
  backlogPath: workingBacklogPath,
227
229
  stampPath: workingStampPath,
228
230
  transaction,
231
+ projectRoot: worktreePath,
229
232
  });
233
+ const pendingWrites = transaction.getPendingWrites();
234
+ stagedMetadataAllowlist = pendingWrites
235
+ .map((write) => path.relative(worktreePath, write.path).split(path.sep).join('/'))
236
+ .filter((relativePath) => Boolean(relativePath) && !relativePath.startsWith('..') && !path.isAbsolute(relativePath));
237
+ const initiativeMetadataWrite = pendingWrites.find((write) => write.description === 'initiative YAML');
238
+ initiativeMetadataPath = initiativeMetadataWrite?.path ?? null;
230
239
  // Validate the transaction itself
231
240
  const txValidation = transaction.validate();
232
241
  if (!txValidation.valid) {
@@ -239,15 +248,9 @@ export async function executeWorktreeCompletion(context) {
239
248
  // ======================================================================
240
249
  // WU-2310: Capture file state before transaction commit
241
250
  // This allows rollback if git commit fails AFTER files are written
242
- // WU-1541: Use absolute path via worktreePaths instead of relative path after chdir
243
- const workingEventsPath = path.join(worktreePath, LUMENFLOW_PATHS.STATE_DIR, WU_EVENTS_FILE_NAME);
244
- const pathsToSnapshot = [
245
- workingWUPath,
246
- workingStatusPath,
247
- workingBacklogPath,
248
- workingStampPath,
249
- workingEventsPath,
250
- ];
251
+ // WU-1541: Use absolute path via worktree metadata paths instead of relative path after chdir
252
+ const workingEventsPath = worktreeMetadataPaths.eventsPath;
253
+ const pathsToSnapshot = Array.from(new Set(transaction.getPendingWrites().map((write) => write.path)));
251
254
  transactionSnapshot = createTransactionSnapshot(pathsToSnapshot);
252
255
  console.log(`${LOG_PREFIX.DONE} ${EMOJI.INFO} WU-2310: Snapshot captured for rollback`);
253
256
  const commitResult = transaction.commit();
@@ -262,6 +265,7 @@ export async function executeWorktreeCompletion(context) {
262
265
  id,
263
266
  wuPath: workingWUPath,
264
267
  stampPath: workingStampPath,
268
+ eventsPath: workingEventsPath,
265
269
  });
266
270
  if (!postMutationResult.valid) {
267
271
  throw createValidationError(`Post-mutation validation failed:\n ${postMutationResult.errors.join('\n ')}`, { wuId: id, errors: postMutationResult.errors });
@@ -289,11 +293,12 @@ export async function executeWorktreeCompletion(context) {
289
293
  statusPath: workingStatusPath,
290
294
  backlogPath: workingBacklogPath,
291
295
  stampsDir: workingStampsDir,
296
+ initiativePath: initiativeMetadataPath,
292
297
  gitAdapter: worktreeGit,
293
298
  repoRoot: worktreePath,
294
299
  });
295
300
  // Validate staged files
296
- await validateStagedFiles(id, isDocsOnly);
301
+ await validateStagedFiles(id, isDocsOnly, { metadataAllowlist: stagedMetadataAllowlist });
297
302
  // ======================================================================
298
303
  // WU-1584 Fix #1: Squash previous completion attempts before new commit
299
304
  // This prevents N duplicate commits when wu:done is retried N times
@@ -388,6 +393,24 @@ export async function executeWorktreeCompletion(context) {
388
393
  // WU-1574: Backlog repair removed - state store architecture eliminates duplicates
389
394
  // Backlog.md is always regenerated from wu-events.jsonl, not parsed/modified
390
395
  console.log(MERGE.STARTING(laneBranch));
396
+ // WU-1554: Restore any dirty tracked files on main before ff-only merge.
397
+ // wu:done's preflight checks (state merge, config reads) may leave metadata
398
+ // files dirty on main, which causes git merge --ff-only to abort.
399
+ {
400
+ const gitMainForClean = createGitForPath(originalCwd);
401
+ try {
402
+ const mainStatus = await gitMainForClean.raw(['status', '--porcelain']);
403
+ if (mainStatus && mainStatus.trim()) {
404
+ await gitMainForClean.raw(['checkout', '--', '.']);
405
+ console.log(`${LOG_PREFIX.DONE} ${EMOJI.INFO} WU-1554: Restored dirty files on main for clean merge`);
406
+ }
407
+ }
408
+ catch {
409
+ // Non-fatal: if restore fails, the merge will catch it
410
+ }
411
+ }
412
+ // WU-1577: Capture main SHA before merge for rollback on push failure
413
+ preMainMergeSha = await createGitForPath(originalCwd).getCommitHash('HEAD');
391
414
  // WU-1747: Wrap merge with lock for atomic operation under concurrent load
392
415
  // WU-1749 Bug 2: Pass worktreePath and wuId for auto-rebase on retry
393
416
  await withMergeLock(id, async () => {
@@ -395,6 +418,7 @@ export async function executeWorktreeCompletion(context) {
395
418
  });
396
419
  console.log(MERGE.ATOMIC_SUCCESS);
397
420
  merged = true;
421
+ mainMerged = true;
398
422
  }
399
423
  // Sync/rebase before push (handles concurrent main advancement)
400
424
  // WU-1541: Use createGitForPath(originalCwd) for main checkout operations
@@ -510,6 +534,9 @@ export async function executeWorktreeCompletion(context) {
510
534
  console.log(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} Rollback error: ${rollbackErr.message}`);
511
535
  }
512
536
  }
537
+ // WU-1577: If merge to main succeeded but push/rebase failed, rollback main
538
+ // This prevents wu-events.jsonl/backlog/status leaking onto local main
539
+ await maybeRollbackMain(mainMerged, preMainMergeSha, originalCwd, id);
513
540
  console.log(`\n${BOX.TOP}`);
514
541
  if (fileRollbackSuccess) {
515
542
  console.log(`${BOX.SIDE} WU:DONE FAILED - FILES ROLLED BACK (WU-2310)`);
@@ -982,7 +1009,7 @@ export async function mergeLaneBranch(branch, options = {}) {
982
1009
  // WU-1749 Bug 2: Now rebases lane branch on retry instead of just pulling main
983
1010
  const retryConfig = createRetryConfig('wu_done', {
984
1011
  maxAttempts: options.maxAttempts,
985
- onRetry: async (attempt, error, delay) => {
1012
+ onRetry: async (attempt, error, _delay) => {
986
1013
  console.log(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} Merge attempt ${attempt} failed: ${error.message}`);
987
1014
  // WU-1749 Bug 2: Rebase lane branch onto new main instead of just pulling
988
1015
  // This is required because ff-only merge will always fail if the lane branch
@@ -1097,4 +1124,99 @@ export async function rollbackBranchOnMergeFailure(gitAdapter, preCommitSha, wuI
1097
1124
  return { success: false, error: error.message };
1098
1125
  }
1099
1126
  }
1127
+ /**
1128
+ * WU-1577: Validate that local main is not behind origin/main before transaction.
1129
+ *
1130
+ * Defense-in-depth check inside the core layer. The CLI layer already has
1131
+ * `ensureMainUpToDate()`, but this adds a guard directly before the
1132
+ * transaction starts in `executeWorktreeCompletion()`. This prevents
1133
+ * metadata leaks when the merge succeeds but the subsequent push fails
1134
+ * because main was behind.
1135
+ *
1136
+ * Fail-open: if the fetch or comparison fails (network issue), returns valid=true
1137
+ * to avoid blocking legitimate work when there's no remote.
1138
+ *
1139
+ * @param gitAdapter - Git adapter instance (must be in main checkout context)
1140
+ * @returns Validation result with commitsBehind count
1141
+ */
1142
+ export async function validateMainNotBehindOrigin(gitAdapter) {
1143
+ try {
1144
+ await gitAdapter.fetch(REMOTES.ORIGIN, BRANCHES.MAIN);
1145
+ const localSha = await gitAdapter.getCommitHash(BRANCHES.MAIN);
1146
+ const remoteSha = await gitAdapter.getCommitHash(`${REMOTES.ORIGIN}/${BRANCHES.MAIN}`);
1147
+ if (localSha === remoteSha) {
1148
+ return { valid: true, commitsBehind: 0 };
1149
+ }
1150
+ const behindRaw = await gitAdapter.revList([
1151
+ '--count',
1152
+ `${BRANCHES.MAIN}..${REMOTES.ORIGIN}/${BRANCHES.MAIN}`,
1153
+ ]);
1154
+ const commitsBehind = Number(behindRaw.trim()) || 0;
1155
+ if (commitsBehind > 0) {
1156
+ return { valid: false, commitsBehind };
1157
+ }
1158
+ // Local is ahead of remote (not behind) — valid
1159
+ return { valid: true, commitsBehind: 0 };
1160
+ }
1161
+ catch {
1162
+ // Fail-open: network error or no remote — allow wu:done to proceed
1163
+ return { valid: true, commitsBehind: 0, failOpen: true };
1164
+ }
1165
+ }
1166
+ /**
1167
+ * WU-1577: Helper that throws if local main is behind origin.
1168
+ * Extracted from executeWorktreeCompletion to keep cognitive complexity in check.
1169
+ */
1170
+ async function ensureMainNotBehindOrigin(mainCheckoutPath, wuId) {
1171
+ const gitMainPreCheck = createGitForPath(mainCheckoutPath);
1172
+ const result = await validateMainNotBehindOrigin(gitMainPreCheck);
1173
+ if (!result.valid) {
1174
+ throw createError(ErrorCodes.GIT_ERROR, `Local main is ${result.commitsBehind} commit(s) behind origin/main.\n\n` +
1175
+ `wu:done aborted BEFORE any writes to prevent metadata leaks (WU-1577).\n\n` +
1176
+ `Fix: git pull origin main\n` +
1177
+ `Then retry: pnpm wu:done --id ${wuId}`, { wuId, commitsBehind: result.commitsBehind });
1178
+ }
1179
+ }
1180
+ /**
1181
+ * WU-1577: Conditionally rollback main if merge was done but push failed.
1182
+ * Extracted from the catch block to keep cognitive complexity low.
1183
+ */
1184
+ async function maybeRollbackMain(mainMerged, preMainMergeSha, mainCheckoutPath, wuId) {
1185
+ if (!mainMerged || !preMainMergeSha)
1186
+ return;
1187
+ try {
1188
+ const gitMainForRollback = createGitForPath(mainCheckoutPath);
1189
+ await rollbackMainAfterMergeFailure(gitMainForRollback, preMainMergeSha, wuId);
1190
+ }
1191
+ catch (err) {
1192
+ console.log(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} WU-1577: Main rollback error: ${err.message}`);
1193
+ }
1194
+ }
1195
+ /**
1196
+ * WU-1577: Rollback main checkout to pre-merge SHA after merge/push failure.
1197
+ *
1198
+ * When executeWorktreeCompletion() merges the lane branch into local main
1199
+ * (ff-only) but the subsequent pull --rebase or push fails, main is left
1200
+ * with leaked metadata (wu-events.jsonl complete event, backlog, status).
1201
+ * This function resets main to its pre-merge state so no metadata leaks.
1202
+ *
1203
+ * Best-effort: never throws. Returns success/failure status for logging.
1204
+ *
1205
+ * @param gitAdapter - Git adapter instance (must be in main checkout context)
1206
+ * @param preMainMergeSha - SHA to reset to (captured before merge)
1207
+ * @param wuId - WU ID for logging
1208
+ * @returns Rollback result
1209
+ */
1210
+ export async function rollbackMainAfterMergeFailure(gitAdapter, preMainMergeSha, wuId) {
1211
+ try {
1212
+ console.log(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} WU-1577: Rolling back main to pre-merge state for ${wuId}...`);
1213
+ await gitAdapter.reset(preMainMergeSha, { hard: true });
1214
+ console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} WU-1577: Main rollback complete — no metadata leaked`);
1215
+ return { success: true };
1216
+ }
1217
+ catch (error) {
1218
+ console.log(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} WU-1577: Could not rollback main for ${wuId}: ${error.message}`);
1219
+ return { success: false, error: error.message };
1220
+ }
1221
+ }
1100
1222
  //# sourceMappingURL=wu-done-worktree.js.map