gsd-pi 2.44.0-dev.848dd4c → 2.44.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 (298) hide show
  1. package/README.md +12 -30
  2. package/dist/resources/extensions/gsd/auto-start.js +0 -10
  3. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +0 -5
  4. package/dist/web/standalone/.next/BUILD_ID +1 -1
  5. package/dist/web/standalone/.next/app-path-routes-manifest.json +14 -14
  6. package/dist/web/standalone/.next/build-manifest.json +3 -3
  7. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  8. package/dist/web/standalone/.next/required-server-files.json +3 -3
  9. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  10. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  12. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  13. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  15. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  16. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  17. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  18. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  19. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  20. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  22. package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
  23. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  24. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  25. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  26. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  27. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  28. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  29. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  30. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  31. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  32. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  33. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  34. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  35. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  36. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  37. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  38. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  39. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  40. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  41. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  42. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  43. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  44. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  45. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  46. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  47. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  48. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  49. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  50. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  51. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  52. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  53. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  54. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  55. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  56. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  57. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  58. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  59. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  60. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  61. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  62. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  63. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  64. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  65. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  66. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  67. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  68. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  69. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  70. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  71. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  72. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  73. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +5 -5
  74. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  75. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  76. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  77. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  78. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  79. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  80. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  81. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  82. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  83. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  84. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  85. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  86. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  87. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  88. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  89. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  90. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  91. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  92. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  93. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  94. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  95. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  96. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  97. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  98. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  99. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  100. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  101. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  103. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  104. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  105. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  106. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  107. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  109. package/dist/web/standalone/.next/server/app/index.html +1 -1
  110. package/dist/web/standalone/.next/server/app/index.rsc +4 -4
  111. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  112. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  113. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  114. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  115. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  116. package/dist/web/standalone/.next/server/app/page.js +2 -2
  117. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  118. package/dist/web/standalone/.next/server/app-paths-manifest.json +14 -14
  119. package/dist/web/standalone/.next/server/chunks/229.js +1 -1
  120. package/dist/web/standalone/.next/server/chunks/471.js +3 -3
  121. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  122. package/dist/web/standalone/.next/server/middleware.js +2 -2
  123. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  124. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  125. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  126. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  127. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  128. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-f2a7482d42a5614b.js → page-2f24283c162b6ab3.js} +1 -1
  129. package/dist/web/standalone/.next/static/chunks/app/{layout-a16c7a7ecdf0c2cf.js → layout-9ecfd95f343793f0.js} +1 -1
  130. package/dist/web/standalone/.next/static/chunks/app/page-7e9530a7122506c5.js +1 -0
  131. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +1 -0
  132. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +1 -0
  133. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  134. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  135. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  136. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  137. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  138. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  139. package/dist/web/standalone/server.js +1 -1
  140. package/package.json +1 -1
  141. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +8 -6
  142. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  143. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +26 -24
  144. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -1
  145. package/packages/pi-coding-agent/dist/core/fs-utils.test.js +48 -29
  146. package/packages/pi-coding-agent/dist/core/fs-utils.test.js.map +1 -1
  147. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js +44 -34
  148. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js.map +1 -1
  149. package/packages/pi-coding-agent/dist/core/session-manager.test.js +34 -30
  150. package/packages/pi-coding-agent/dist/core/session-manager.test.js.map +1 -1
  151. package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js +12 -10
  152. package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js.map +1 -1
  153. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.test.js +47 -43
  154. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.test.js.map +1 -1
  155. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +7 -7
  156. package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +26 -26
  157. package/packages/pi-coding-agent/src/core/fs-utils.test.ts +43 -31
  158. package/packages/pi-coding-agent/src/core/resolve-config-value.test.ts +45 -40
  159. package/packages/pi-coding-agent/src/core/session-manager.test.ts +33 -33
  160. package/packages/pi-coding-agent/src/core/tools/edit-diff.test.ts +17 -17
  161. package/packages/pi-coding-agent/src/resources/extensions/memory/storage.test.ts +74 -74
  162. package/src/resources/extensions/gsd/auto-start.ts +0 -14
  163. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +0 -8
  164. package/src/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +99 -99
  165. package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +16 -14
  166. package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +57 -43
  167. package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +13 -11
  168. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +523 -465
  169. package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +75 -73
  170. package/src/resources/extensions/gsd/tests/auto-start-needs-discussion.test.ts +56 -34
  171. package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +656 -533
  172. package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +143 -165
  173. package/src/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +52 -29
  174. package/src/resources/extensions/gsd/tests/captures.test.ts +176 -148
  175. package/src/resources/extensions/gsd/tests/claude-import-tui.test.ts +33 -32
  176. package/src/resources/extensions/gsd/tests/collect-from-manifest.test.ts +143 -141
  177. package/src/resources/extensions/gsd/tests/commands-inspect-open-db.test.ts +25 -25
  178. package/src/resources/extensions/gsd/tests/commands-logs.test.ts +81 -81
  179. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +59 -38
  180. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +263 -228
  181. package/src/resources/extensions/gsd/tests/complete-task.test.ts +302 -250
  182. package/src/resources/extensions/gsd/tests/context-store.test.ts +367 -354
  183. package/src/resources/extensions/gsd/tests/continue-here.test.ts +72 -68
  184. package/src/resources/extensions/gsd/tests/cost-projection.test.ts +106 -92
  185. package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +35 -27
  186. package/src/resources/extensions/gsd/tests/dashboard-budget.test.ts +237 -220
  187. package/src/resources/extensions/gsd/tests/db-writer.test.ts +420 -390
  188. package/src/resources/extensions/gsd/tests/definition-loader.test.ts +92 -76
  189. package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +83 -68
  190. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +183 -152
  191. package/src/resources/extensions/gsd/tests/derive-state-deps.test.ts +101 -78
  192. package/src/resources/extensions/gsd/tests/derive-state.test.ts +227 -192
  193. package/src/resources/extensions/gsd/tests/detection.test.ts +278 -232
  194. package/src/resources/extensions/gsd/tests/dev-engine-wrapper.test.ts +34 -30
  195. package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +180 -164
  196. package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +49 -43
  197. package/src/resources/extensions/gsd/tests/dispatch-uat-last-completed.test.ts +32 -28
  198. package/src/resources/extensions/gsd/tests/doctor-completion-deferral.test.ts +29 -27
  199. package/src/resources/extensions/gsd/tests/doctor-delimiter-fix.test.ts +38 -34
  200. package/src/resources/extensions/gsd/tests/doctor-enhancements.test.ts +75 -54
  201. package/src/resources/extensions/gsd/tests/doctor-environment-worktree.test.ts +32 -21
  202. package/src/resources/extensions/gsd/tests/doctor-environment.test.ts +97 -72
  203. package/src/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +44 -38
  204. package/src/resources/extensions/gsd/tests/doctor-git.test.ts +145 -104
  205. package/src/resources/extensions/gsd/tests/doctor-proactive.test.ts +106 -84
  206. package/src/resources/extensions/gsd/tests/doctor-roadmap-summary-atomicity.test.ts +60 -54
  207. package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +93 -72
  208. package/src/resources/extensions/gsd/tests/doctor.test.ts +134 -104
  209. package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +131 -123
  210. package/src/resources/extensions/gsd/tests/exit-command.test.ts +24 -20
  211. package/src/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +57 -48
  212. package/src/resources/extensions/gsd/tests/files-loadfile-eisdir.test.ts +7 -5
  213. package/src/resources/extensions/gsd/tests/flag-file-db.test.ts +42 -30
  214. package/src/resources/extensions/gsd/tests/freeform-decisions.test.ts +206 -198
  215. package/src/resources/extensions/gsd/tests/git-locale.test.ts +27 -13
  216. package/src/resources/extensions/gsd/tests/git-service.test.ts +388 -285
  217. package/src/resources/extensions/gsd/tests/gitignore-tracked-gsd.test.ts +39 -31
  218. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +69 -63
  219. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +264 -255
  220. package/src/resources/extensions/gsd/tests/gsd-inspect.test.ts +119 -108
  221. package/src/resources/extensions/gsd/tests/gsd-recover.test.ts +103 -81
  222. package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +262 -229
  223. package/src/resources/extensions/gsd/tests/headless-answers.test.ts +13 -13
  224. package/src/resources/extensions/gsd/tests/health-widget.test.ts +37 -29
  225. package/src/resources/extensions/gsd/tests/idle-recovery.test.ts +102 -81
  226. package/src/resources/extensions/gsd/tests/init-wizard.test.ts +18 -16
  227. package/src/resources/extensions/gsd/tests/integration-edge.test.ts +46 -41
  228. package/src/resources/extensions/gsd/tests/integration-lifecycle.test.ts +53 -42
  229. package/src/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +91 -75
  230. package/src/resources/extensions/gsd/tests/integration-proof.test.ts +18 -18
  231. package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +194 -150
  232. package/src/resources/extensions/gsd/tests/md-importer.test.ts +125 -101
  233. package/src/resources/extensions/gsd/tests/memory-extractor.test.ts +54 -45
  234. package/src/resources/extensions/gsd/tests/memory-store.test.ts +93 -80
  235. package/src/resources/extensions/gsd/tests/migrate-command.test.ts +66 -57
  236. package/src/resources/extensions/gsd/tests/migrate-hierarchy.test.ts +93 -83
  237. package/src/resources/extensions/gsd/tests/migrate-parser.test.ts +170 -161
  238. package/src/resources/extensions/gsd/tests/migrate-transformer.test.ts +141 -125
  239. package/src/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +131 -107
  240. package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +96 -87
  241. package/src/resources/extensions/gsd/tests/migrate-writer.test.ts +164 -125
  242. package/src/resources/extensions/gsd/tests/must-have-parser.test.ts +94 -81
  243. package/src/resources/extensions/gsd/tests/none-mode-gates.test.ts +36 -35
  244. package/src/resources/extensions/gsd/tests/overrides.test.ts +106 -99
  245. package/src/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +47 -40
  246. package/src/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +28 -25
  247. package/src/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +83 -66
  248. package/src/resources/extensions/gsd/tests/park-edge-cases.test.ts +77 -54
  249. package/src/resources/extensions/gsd/tests/park-milestone.test.ts +115 -68
  250. package/src/resources/extensions/gsd/tests/parsers.test.ts +611 -546
  251. package/src/resources/extensions/gsd/tests/paths.test.ts +87 -72
  252. package/src/resources/extensions/gsd/tests/post-unit-hooks.test.ts +117 -77
  253. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +56 -56
  254. package/src/resources/extensions/gsd/tests/queue-draft-detection.test.ts +119 -93
  255. package/src/resources/extensions/gsd/tests/queue-order.test.ts +82 -70
  256. package/src/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +55 -42
  257. package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +73 -45
  258. package/src/resources/extensions/gsd/tests/reassess-prompt.test.ts +38 -28
  259. package/src/resources/extensions/gsd/tests/replan-slice.test.ts +80 -73
  260. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +74 -71
  261. package/src/resources/extensions/gsd/tests/requirements.test.ts +75 -70
  262. package/src/resources/extensions/gsd/tests/retry-state-reset.test.ts +66 -44
  263. package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +181 -114
  264. package/src/resources/extensions/gsd/tests/rule-registry.test.ts +65 -63
  265. package/src/resources/extensions/gsd/tests/run-uat.test.ts +128 -66
  266. package/src/resources/extensions/gsd/tests/session-lock-multipath.test.ts +25 -18
  267. package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +44 -37
  268. package/src/resources/extensions/gsd/tests/shared-wal.test.ts +26 -19
  269. package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +8 -6
  270. package/src/resources/extensions/gsd/tests/symlink-numbered-variants.test.ts +28 -22
  271. package/src/resources/extensions/gsd/tests/token-savings.test.ts +56 -54
  272. package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +25 -23
  273. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +11 -9
  274. package/src/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +82 -66
  275. package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +47 -46
  276. package/src/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +22 -20
  277. package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +86 -84
  278. package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +43 -41
  279. package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +96 -94
  280. package/src/resources/extensions/gsd/tests/windows-path-normalization.test.ts +13 -11
  281. package/src/resources/extensions/gsd/tests/worker-registry.test.ts +29 -27
  282. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +52 -50
  283. package/src/resources/extensions/gsd/tests/worktree-bugfix.test.ts +13 -10
  284. package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +18 -14
  285. package/src/resources/extensions/gsd/tests/worktree-db.test.ts +39 -38
  286. package/src/resources/extensions/gsd/tests/worktree-e2e.test.ts +21 -17
  287. package/src/resources/extensions/gsd/tests/worktree-health.test.ts +30 -25
  288. package/src/resources/extensions/gsd/tests/worktree-integration.test.ts +37 -30
  289. package/src/resources/extensions/gsd/tests/worktree-symlink-removal.test.ts +22 -15
  290. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +66 -59
  291. package/src/resources/extensions/gsd/tests/worktree.test.ts +50 -44
  292. package/dist/web/standalone/.next/static/chunks/app/page-b9367c5ae13b99c6.js +0 -1
  293. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +0 -1
  294. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +0 -1
  295. package/src/resources/extensions/gsd/tests/quick-auto-guard.test.ts +0 -100
  296. package/src/resources/extensions/gsd/tests/sqlite-unavailable-gate.test.ts +0 -63
  297. /package/dist/web/standalone/.next/static/{-zps1Q9mQmioAKLcQiCr8 → mgkxN0mGP6gSUmGPEzbk_}/_buildManifest.js +0 -0
  298. /package/dist/web/standalone/.next/static/{-zps1Q9mQmioAKLcQiCr8 → mgkxN0mGP6gSUmGPEzbk_}/_ssgManifest.js +0 -0
@@ -53,37 +53,43 @@ function cleanup(dir: string): void {
53
53
 
54
54
  // ─── hasGitTrackedGsdFiles ───────────────────────────────────────────
55
55
 
56
- test("hasGitTrackedGsdFiles returns false when .gsd/ does not exist", (t) => {
56
+ test("hasGitTrackedGsdFiles returns false when .gsd/ does not exist", () => {
57
57
  const dir = makeTempRepo();
58
- t.after(() => { cleanup(dir); });
59
-
60
- assert.equal(hasGitTrackedGsdFiles(dir), false);
58
+ try {
59
+ assert.equal(hasGitTrackedGsdFiles(dir), false);
60
+ } finally {
61
+ cleanup(dir);
62
+ }
61
63
  });
62
64
 
63
- test("hasGitTrackedGsdFiles returns true when .gsd/ has tracked files", (t) => {
65
+ test("hasGitTrackedGsdFiles returns true when .gsd/ has tracked files", () => {
64
66
  const dir = makeTempRepo();
65
- t.after(() => { cleanup(dir); });
66
-
67
- mkdirSync(join(dir, ".gsd", "milestones"), { recursive: true });
68
- writeFileSync(join(dir, ".gsd", "PROJECT.md"), "# Test Project\n");
69
- git(dir, "add", ".gsd/PROJECT.md");
70
- git(dir, "commit", "-m", "add gsd");
71
- assert.equal(hasGitTrackedGsdFiles(dir), true);
67
+ try {
68
+ mkdirSync(join(dir, ".gsd", "milestones"), { recursive: true });
69
+ writeFileSync(join(dir, ".gsd", "PROJECT.md"), "# Test Project\n");
70
+ git(dir, "add", ".gsd/PROJECT.md");
71
+ git(dir, "commit", "-m", "add gsd");
72
+ assert.equal(hasGitTrackedGsdFiles(dir), true);
73
+ } finally {
74
+ cleanup(dir);
75
+ }
72
76
  });
73
77
 
74
- test("hasGitTrackedGsdFiles returns false when .gsd/ exists but is untracked", (t) => {
78
+ test("hasGitTrackedGsdFiles returns false when .gsd/ exists but is untracked", () => {
75
79
  const dir = makeTempRepo();
76
- t.after(() => { cleanup(dir); });
77
-
78
- mkdirSync(join(dir, ".gsd"), { recursive: true });
79
- writeFileSync(join(dir, ".gsd", "STATE.md"), "state\n");
80
- // Not git-added — should return false
81
- assert.equal(hasGitTrackedGsdFiles(dir), false);
80
+ try {
81
+ mkdirSync(join(dir, ".gsd"), { recursive: true });
82
+ writeFileSync(join(dir, ".gsd", "STATE.md"), "state\n");
83
+ // Not git-added — should return false
84
+ assert.equal(hasGitTrackedGsdFiles(dir), false);
85
+ } finally {
86
+ cleanup(dir);
87
+ }
82
88
  });
83
89
 
84
90
  // ─── ensureGitignore — tracked .gsd/ protection ─────────────────────
85
91
 
86
- test("ensureGitignore does NOT add .gsd when .gsd/ has tracked files (#1364)", (t) => {
92
+ test("ensureGitignore does NOT add .gsd when .gsd/ has tracked files (#1364)", () => {
87
93
  const dir = makeTempRepo();
88
94
  try {
89
95
  // Set up .gsd/ with tracked files
@@ -112,7 +118,7 @@ test("ensureGitignore does NOT add .gsd when .gsd/ has tracked files (#1364)", (
112
118
  }
113
119
  });
114
120
 
115
- test("ensureGitignore adds .gsd when .gsd/ has NO tracked files", (t) => {
121
+ test("ensureGitignore adds .gsd when .gsd/ has NO tracked files", () => {
116
122
  const dir = makeTempRepo();
117
123
  try {
118
124
  // Run ensureGitignore (no .gsd/ at all)
@@ -130,18 +136,20 @@ test("ensureGitignore adds .gsd when .gsd/ has NO tracked files", (t) => {
130
136
  }
131
137
  });
132
138
 
133
- test("ensureGitignore respects manageGitignore: false", (t) => {
139
+ test("ensureGitignore respects manageGitignore: false", () => {
134
140
  const dir = makeTempRepo();
135
- t.after(() => { cleanup(dir); });
136
-
137
- const result = ensureGitignore(dir, { manageGitignore: false });
138
- assert.equal(result, false);
139
- assert.ok(!existsSync(join(dir, ".gitignore")), "Should not create .gitignore");
141
+ try {
142
+ const result = ensureGitignore(dir, { manageGitignore: false });
143
+ assert.equal(result, false);
144
+ assert.ok(!existsSync(join(dir, ".gitignore")), "Should not create .gitignore");
145
+ } finally {
146
+ cleanup(dir);
147
+ }
140
148
  });
141
149
 
142
150
  // ─── ensureGitignore — verify no tracked files become invisible ─────
143
151
 
144
- test("ensureGitignore with tracked .gsd/ does not cause git to see files as deleted", (t) => {
152
+ test("ensureGitignore with tracked .gsd/ does not cause git to see files as deleted", () => {
145
153
  const dir = makeTempRepo();
146
154
  try {
147
155
  // Create tracked .gsd/ files
@@ -175,7 +183,7 @@ test("ensureGitignore with tracked .gsd/ does not cause git to see files as dele
175
183
  }
176
184
  });
177
185
 
178
- test("hasGitTrackedGsdFiles returns true (fail-safe) when git is not available", (t) => {
186
+ test("hasGitTrackedGsdFiles returns true (fail-safe) when git is not available", () => {
179
187
  const dir = makeTempRepo();
180
188
  try {
181
189
  // Create and track .gsd/ files
@@ -199,7 +207,7 @@ test("hasGitTrackedGsdFiles returns true (fail-safe) when git is not available",
199
207
 
200
208
  // ─── migrateToExternalState — tracked .gsd/ protection ──────────────
201
209
 
202
- test("migrateToExternalState aborts when .gsd/ has tracked files (#1364)", (t) => {
210
+ test("migrateToExternalState aborts when .gsd/ has tracked files (#1364)", () => {
203
211
  const dir = makeTempRepo();
204
212
  try {
205
213
  // Create tracked .gsd/ files
@@ -227,7 +235,7 @@ test("migrateToExternalState aborts when .gsd/ has tracked files (#1364)", (t) =
227
235
  }
228
236
  });
229
237
 
230
- test("migrateToExternalState cleans git index so tracked files don't show as deleted (#1364 path 2)", (t) => {
238
+ test("migrateToExternalState cleans git index so tracked files don't show as deleted (#1364 path 2)", () => {
231
239
  const dir = makeTempRepo();
232
240
  try {
233
241
  // Track .gsd/ files, then untrack them so migration proceeds
@@ -56,7 +56,7 @@ function makeStep(overrides: Partial<GraphStep> & { id: string }): GraphStep {
56
56
  // ─── writeGraph + readGraph round-trip ───────────────────────────────────
57
57
 
58
58
  describe("writeGraph + readGraph round-trip", () => {
59
- it("preserves all fields including parentStepId and dependsOn", (t) => {
59
+ it("preserves all fields including parentStepId and dependsOn", () => {
60
60
  const dir = makeTmpDir();
61
61
  try {
62
62
  const graph = makeGraph([
@@ -89,7 +89,7 @@ describe("writeGraph + readGraph round-trip", () => {
89
89
  }
90
90
  });
91
91
 
92
- it("preserves startedAt and finishedAt fields", (t) => {
92
+ it("preserves startedAt and finishedAt fields", () => {
93
93
  const dir = makeTmpDir();
94
94
  try {
95
95
  const graph = makeGraph([
@@ -110,7 +110,7 @@ describe("writeGraph + readGraph round-trip", () => {
110
110
  }
111
111
  });
112
112
 
113
- it("creates directory if it does not exist", (t) => {
113
+ it("creates directory if it does not exist", () => {
114
114
  const base = makeTmpDir();
115
115
  const nested = join(base, "sub", "dir");
116
116
  try {
@@ -129,53 +129,59 @@ describe("writeGraph + readGraph round-trip", () => {
129
129
  // ─── readGraph error paths ───────────────────────────────────────────────
130
130
 
131
131
  describe("readGraph error paths", () => {
132
- it("throws with descriptive error when file is missing", (t) => {
132
+ it("throws with descriptive error when file is missing", () => {
133
133
  const dir = makeTmpDir();
134
- t.after(() => { cleanupDir(dir); });
135
-
136
- assert.throws(
137
- () => readGraph(dir),
138
- (err: Error) => {
139
- assert.ok(err.message.includes("GRAPH.yaml not found"));
140
- assert.ok(err.message.includes(dir));
141
- return true;
142
- },
143
- );
134
+ try {
135
+ assert.throws(
136
+ () => readGraph(dir),
137
+ (err: Error) => {
138
+ assert.ok(err.message.includes("GRAPH.yaml not found"));
139
+ assert.ok(err.message.includes(dir));
140
+ return true;
141
+ },
142
+ );
143
+ } finally {
144
+ cleanupDir(dir);
145
+ }
144
146
  });
145
147
 
146
- it("throws with descriptive error when YAML is malformed (missing steps)", (t) => {
148
+ it("throws with descriptive error when YAML is malformed (missing steps)", () => {
147
149
  const dir = makeTmpDir();
148
- t.after(() => { cleanupDir(dir); });
149
-
150
- writeFileSync(join(dir, "GRAPH.yaml"), "metadata:\n name: bad\n", "utf-8");
151
- assert.throws(
152
- () => readGraph(dir),
153
- (err: Error) => {
154
- assert.ok(err.message.includes("missing or invalid 'steps' array"));
155
- return true;
156
- },
157
- );
150
+ try {
151
+ writeFileSync(join(dir, "GRAPH.yaml"), "metadata:\n name: bad\n", "utf-8");
152
+ assert.throws(
153
+ () => readGraph(dir),
154
+ (err: Error) => {
155
+ assert.ok(err.message.includes("missing or invalid 'steps' array"));
156
+ return true;
157
+ },
158
+ );
159
+ } finally {
160
+ cleanupDir(dir);
161
+ }
158
162
  });
159
163
 
160
- it("throws when steps is not an array", (t) => {
164
+ it("throws when steps is not an array", () => {
161
165
  const dir = makeTmpDir();
162
- t.after(() => { cleanupDir(dir); });
163
-
164
- writeFileSync(join(dir, "GRAPH.yaml"), "steps: not-an-array\nmetadata:\n name: bad\n", "utf-8");
165
- assert.throws(
166
- () => readGraph(dir),
167
- (err: Error) => {
168
- assert.ok(err.message.includes("missing or invalid 'steps' array"));
169
- return true;
170
- },
171
- );
166
+ try {
167
+ writeFileSync(join(dir, "GRAPH.yaml"), "steps: not-an-array\nmetadata:\n name: bad\n", "utf-8");
168
+ assert.throws(
169
+ () => readGraph(dir),
170
+ (err: Error) => {
171
+ assert.ok(err.message.includes("missing or invalid 'steps' array"));
172
+ return true;
173
+ },
174
+ );
175
+ } finally {
176
+ cleanupDir(dir);
177
+ }
172
178
  });
173
179
  });
174
180
 
175
181
  // ─── getNextPendingStep ──────────────────────────────────────────────────
176
182
 
177
183
  describe("getNextPendingStep", () => {
178
- it("returns first step with all deps complete", (t) => {
184
+ it("returns first step with all deps complete", () => {
179
185
  const graph = makeGraph([
180
186
  makeStep({ id: "a", status: "complete" }),
181
187
  makeStep({ id: "b", dependsOn: ["a"] }),
@@ -186,7 +192,7 @@ describe("getNextPendingStep", () => {
186
192
  assert.equal(next?.id, "b");
187
193
  });
188
194
 
189
- it("skips steps with incomplete deps", (t) => {
195
+ it("skips steps with incomplete deps", () => {
190
196
  const graph = makeGraph([
191
197
  makeStep({ id: "a" }),
192
198
  makeStep({ id: "b", dependsOn: ["a"] }),
@@ -197,7 +203,7 @@ describe("getNextPendingStep", () => {
197
203
  assert.equal(next?.id, "a");
198
204
  });
199
205
 
200
- it("returns null when all steps are complete", (t) => {
206
+ it("returns null when all steps are complete", () => {
201
207
  const graph = makeGraph([
202
208
  makeStep({ id: "a", status: "complete" }),
203
209
  makeStep({ id: "b", status: "complete" }),
@@ -206,7 +212,7 @@ describe("getNextPendingStep", () => {
206
212
  assert.equal(getNextPendingStep(graph), null);
207
213
  });
208
214
 
209
- it("returns null when all pending steps are blocked", (t) => {
215
+ it("returns null when all pending steps are blocked", () => {
210
216
  const graph = makeGraph([
211
217
  makeStep({ id: "a", status: "active" }), // not complete
212
218
  makeStep({ id: "b", dependsOn: ["a"] }), // blocked
@@ -215,7 +221,7 @@ describe("getNextPendingStep", () => {
215
221
  assert.equal(getNextPendingStep(graph), null);
216
222
  });
217
223
 
218
- it("returns first pending step with no deps when root steps exist", (t) => {
224
+ it("returns first pending step with no deps when root steps exist", () => {
219
225
  const graph = makeGraph([
220
226
  makeStep({ id: "a" }),
221
227
  makeStep({ id: "b" }),
@@ -225,7 +231,7 @@ describe("getNextPendingStep", () => {
225
231
  assert.equal(next?.id, "a");
226
232
  });
227
233
 
228
- it("skips expanded steps", (t) => {
234
+ it("skips expanded steps", () => {
229
235
  const graph = makeGraph([
230
236
  makeStep({ id: "a", status: "expanded" }),
231
237
  makeStep({ id: "b" }),
@@ -239,7 +245,7 @@ describe("getNextPendingStep", () => {
239
245
  // ─── markStepComplete ────────────────────────────────────────────────────
240
246
 
241
247
  describe("markStepComplete", () => {
242
- it("returns new graph with step status 'complete' (original unchanged)", (t) => {
248
+ it("returns new graph with step status 'complete' (original unchanged)", () => {
243
249
  const original = makeGraph([
244
250
  makeStep({ id: "a" }),
245
251
  makeStep({ id: "b" }),
@@ -258,7 +264,7 @@ describe("markStepComplete", () => {
258
264
  assert.equal(updated.steps[1].status, "pending");
259
265
  });
260
266
 
261
- it("sets finishedAt timestamp", (t) => {
267
+ it("sets finishedAt timestamp", () => {
262
268
  const graph = makeGraph([makeStep({ id: "a" })]);
263
269
  const updated = markStepComplete(graph, "a");
264
270
  assert.ok(updated.steps[0].finishedAt);
@@ -266,7 +272,7 @@ describe("markStepComplete", () => {
266
272
  assert.ok(!isNaN(Date.parse(updated.steps[0].finishedAt!)));
267
273
  });
268
274
 
269
- it("throws for unknown step ID", (t) => {
275
+ it("throws for unknown step ID", () => {
270
276
  const graph = makeGraph([makeStep({ id: "a" })]);
271
277
  assert.throws(
272
278
  () => markStepComplete(graph, "nonexistent"),
@@ -278,7 +284,7 @@ describe("markStepComplete", () => {
278
284
  );
279
285
  });
280
286
 
281
- it("preserves metadata in returned graph", (t) => {
287
+ it("preserves metadata in returned graph", () => {
282
288
  const graph = makeGraph([makeStep({ id: "a" })], "my-workflow");
283
289
  const updated = markStepComplete(graph, "a");
284
290
  assert.equal(updated.metadata.name, "my-workflow");
@@ -289,7 +295,7 @@ describe("markStepComplete", () => {
289
295
  // ─── expandIteration ─────────────────────────────────────────────────────
290
296
 
291
297
  describe("expandIteration", () => {
292
- it("creates instance steps with correct IDs (stepId--001, stepId--002)", (t) => {
298
+ it("creates instance steps with correct IDs (stepId--001, stepId--002)", () => {
293
299
  const graph = makeGraph([
294
300
  makeStep({ id: "iter-step", title: "Process items" }),
295
301
  makeStep({ id: "final", dependsOn: ["iter-step"] }),
@@ -311,7 +317,7 @@ describe("expandIteration", () => {
311
317
  assert.equal(expanded.steps[3].id, "iter-step--003");
312
318
  });
313
319
 
314
- it("marks parent step as 'expanded'", (t) => {
320
+ it("marks parent step as 'expanded'", () => {
315
321
  const graph = makeGraph([
316
322
  makeStep({ id: "iter", title: "Iterate" }),
317
323
  ]);
@@ -320,7 +326,7 @@ describe("expandIteration", () => {
320
326
  assert.equal(expanded.steps[0].status, "expanded");
321
327
  });
322
328
 
323
- it("instance steps have correct titles, prompts, parentStepId, and deps", (t) => {
329
+ it("instance steps have correct titles, prompts, parentStepId, and deps", () => {
324
330
  const graph = makeGraph([
325
331
  makeStep({ id: "pre", status: "complete" }),
326
332
  makeStep({ id: "iter", title: "Process", dependsOn: ["pre"] }),
@@ -346,7 +352,7 @@ describe("expandIteration", () => {
346
352
  assert.equal(inst2.parentStepId, "iter");
347
353
  });
348
354
 
349
- it("rewrites downstream deps from parent ID to all instance IDs", (t) => {
355
+ it("rewrites downstream deps from parent ID to all instance IDs", () => {
350
356
  const graph = makeGraph([
351
357
  makeStep({ id: "iter", title: "Iterate" }),
352
358
  makeStep({ id: "after", dependsOn: ["iter"] }),
@@ -364,7 +370,7 @@ describe("expandIteration", () => {
364
370
  assert.deepStrictEqual(afterStep.dependsOn, ["iter--001", "iter--002"]);
365
371
  });
366
372
 
367
- it("preserves steps that don't depend on the parent", (t) => {
373
+ it("preserves steps that don't depend on the parent", () => {
368
374
  const graph = makeGraph([
369
375
  makeStep({ id: "unrelated" }),
370
376
  makeStep({ id: "iter", title: "Iterate" }),
@@ -376,7 +382,7 @@ describe("expandIteration", () => {
376
382
  assert.deepStrictEqual(unrelated.dependsOn, []);
377
383
  });
378
384
 
379
- it("throws for non-pending parent step", (t) => {
385
+ it("throws for non-pending parent step", () => {
380
386
  const graph = makeGraph([
381
387
  makeStep({ id: "iter", status: "complete" }),
382
388
  ]);
@@ -391,7 +397,7 @@ describe("expandIteration", () => {
391
397
  );
392
398
  });
393
399
 
394
- it("throws for unknown step ID", (t) => {
400
+ it("throws for unknown step ID", () => {
395
401
  const graph = makeGraph([makeStep({ id: "a" })]);
396
402
  assert.throws(
397
403
  () => expandIteration(graph, "nonexistent", ["a"], "{{item}}"),
@@ -403,7 +409,7 @@ describe("expandIteration", () => {
403
409
  );
404
410
  });
405
411
 
406
- it("does not mutate the input graph", (t) => {
412
+ it("does not mutate the input graph", () => {
407
413
  const graph = makeGraph([
408
414
  makeStep({ id: "iter", title: "Iterate" }),
409
415
  makeStep({ id: "after", dependsOn: ["iter"] }),
@@ -424,7 +430,7 @@ describe("expandIteration", () => {
424
430
  // ─── initializeGraph ─────────────────────────────────────────────────────
425
431
 
426
432
  describe("initializeGraph", () => {
427
- it("converts a valid 3-step definition to graph with all pending steps", (t) => {
433
+ it("converts a valid 3-step definition to graph with all pending steps", () => {
428
434
  const def: WorkflowDefinition = {
429
435
  version: 1,
430
436
  name: "test-workflow",
@@ -459,7 +465,7 @@ describe("initializeGraph", () => {
459
465
  assert.deepStrictEqual(graph.steps[2].dependsOn, ["s1", "s2"]);
460
466
  });
461
467
 
462
- it("is also exported as graphFromDefinition (backward compat)", (t) => {
468
+ it("is also exported as graphFromDefinition (backward compat)", () => {
463
469
  assert.equal(graphFromDefinition, initializeGraph);
464
470
  });
465
471
  });
@@ -467,7 +473,7 @@ describe("initializeGraph", () => {
467
473
  // ─── Atomic write safety ─────────────────────────────────────────────────
468
474
 
469
475
  describe("atomic write safety", () => {
470
- it("final file exists and .tmp file does not exist after write", (t) => {
476
+ it("final file exists and .tmp file does not exist after write", () => {
471
477
  const dir = makeTmpDir();
472
478
  try {
473
479
  const graph = makeGraph([makeStep({ id: "s1" })]);
@@ -480,7 +486,7 @@ describe("atomic write safety", () => {
480
486
  }
481
487
  });
482
488
 
483
- it("YAML content is valid and parseable", (t) => {
489
+ it("YAML content is valid and parseable", () => {
484
490
  const dir = makeTmpDir();
485
491
  try {
486
492
  const graph = makeGraph([makeStep({ id: "s1" })]);
@@ -501,7 +507,7 @@ describe("atomic write safety", () => {
501
507
  // ─── YAML snake_case / camelCase boundary ────────────────────────────────
502
508
 
503
509
  describe("YAML snake_case / camelCase boundary", () => {
504
- it("writes snake_case to disk and reads back as camelCase", (t) => {
510
+ it("writes snake_case to disk and reads back as camelCase", () => {
505
511
  const dir = makeTmpDir();
506
512
  try {
507
513
  const graph = makeGraph([
@@ -535,7 +541,7 @@ describe("YAML snake_case / camelCase boundary", () => {
535
541
  }
536
542
  });
537
543
 
538
- it("omits optional fields from YAML when undefined", (t) => {
544
+ it("omits optional fields from YAML when undefined", () => {
539
545
  const dir = makeTmpDir();
540
546
  try {
541
547
  const graph = makeGraph([
@@ -559,7 +565,7 @@ describe("YAML snake_case / camelCase boundary", () => {
559
565
  // ─── Edge cases ──────────────────────────────────────────────────────────
560
566
 
561
567
  describe("edge cases", () => {
562
- it("handles empty items array in expandIteration", (t) => {
568
+ it("handles empty items array in expandIteration", () => {
563
569
  const graph = makeGraph([
564
570
  makeStep({ id: "iter" }),
565
571
  ]);
@@ -570,7 +576,7 @@ describe("edge cases", () => {
570
576
  assert.equal(expanded.steps[0].status, "expanded");
571
577
  });
572
578
 
573
- it("handles graph with single step", (t) => {
579
+ it("handles graph with single step", () => {
574
580
  const graph = makeGraph([makeStep({ id: "only" })]);
575
581
  const next = getNextPendingStep(graph);
576
582
  assert.equal(next?.id, "only");
@@ -579,7 +585,7 @@ describe("edge cases", () => {
579
585
  assert.equal(getNextPendingStep(completed), null);
580
586
  });
581
587
 
582
- it("initializeGraph handles steps with empty requires", (t) => {
588
+ it("initializeGraph handles steps with empty requires", () => {
583
589
  const def: WorkflowDefinition = {
584
590
  version: 1,
585
591
  name: "empty-requires",