@hominis/fireforge 0.46.0 → 0.46.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/CHANGELOG.md +381 -498
  2. package/dist/bin/fireforge.d.ts +1 -1
  3. package/dist/bin/fireforge.js +17 -17
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/cli-usage-error.d.ts +9 -9
  6. package/dist/src/cli-usage-error.js +12 -12
  7. package/dist/src/cli.d.ts +3 -2
  8. package/dist/src/cli.js +29 -28
  9. package/dist/src/commands/bootstrap-checks.js +2 -1
  10. package/dist/src/commands/bootstrap.js +2 -2
  11. package/dist/src/commands/build.js +12 -11
  12. package/dist/src/commands/config.js +9 -9
  13. package/dist/src/commands/destructive-decision.d.ts +4 -4
  14. package/dist/src/commands/destructive-decision.js +4 -4
  15. package/dist/src/commands/discard.js +5 -5
  16. package/dist/src/commands/doctor-check-core.d.ts +4 -4
  17. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  18. package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
  19. package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
  20. package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
  21. package/dist/src/commands/doctor-furnace-jar.js +1 -1
  22. package/dist/src/commands/doctor-furnace.js +22 -22
  23. package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -11
  24. package/dist/src/commands/doctor-orphaned-harness.js +10 -11
  25. package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
  26. package/dist/src/commands/doctor-patch-manifest.js +7 -6
  27. package/dist/src/commands/doctor-post-rebase-audit.js +2 -2
  28. package/dist/src/commands/doctor-source-pin.d.ts +12 -12
  29. package/dist/src/commands/doctor-source-pin.js +14 -14
  30. package/dist/src/commands/doctor-working-tree.d.ts +3 -3
  31. package/dist/src/commands/doctor-working-tree.js +3 -3
  32. package/dist/src/commands/doctor.d.ts +2 -2
  33. package/dist/src/commands/doctor.js +9 -9
  34. package/dist/src/commands/download.js +15 -13
  35. package/dist/src/commands/export-all.js +8 -8
  36. package/dist/src/commands/export-flow.d.ts +5 -5
  37. package/dist/src/commands/export-flow.js +14 -14
  38. package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
  39. package/dist/src/commands/export-placement-conflicts.js +9 -9
  40. package/dist/src/commands/export-placement-gate.d.ts +2 -2
  41. package/dist/src/commands/export-placement-gate.js +5 -5
  42. package/dist/src/commands/export-placement-policy.d.ts +1 -1
  43. package/dist/src/commands/export-placement-policy.js +1 -1
  44. package/dist/src/commands/export-shared.d.ts +10 -10
  45. package/dist/src/commands/export-shared.js +13 -13
  46. package/dist/src/commands/export.js +4 -4
  47. package/dist/src/commands/furnace/apply.js +16 -16
  48. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
  49. package/dist/src/commands/furnace/chrome-doc-remove.js +1 -1
  50. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
  51. package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
  52. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
  53. package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
  54. package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
  55. package/dist/src/commands/furnace/chrome-doc.js +18 -18
  56. package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
  57. package/dist/src/commands/furnace/create-browser-test.js +4 -4
  58. package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
  59. package/dist/src/commands/furnace/create-dry-run.js +4 -4
  60. package/dist/src/commands/furnace/create-features.d.ts +2 -2
  61. package/dist/src/commands/furnace/create-features.js +2 -2
  62. package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
  63. package/dist/src/commands/furnace/create-mochikit.js +7 -7
  64. package/dist/src/commands/furnace/create-templates.d.ts +14 -14
  65. package/dist/src/commands/furnace/create-templates.js +18 -18
  66. package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
  67. package/dist/src/commands/furnace/create-xpcshell.js +8 -8
  68. package/dist/src/commands/furnace/create.d.ts +1 -1
  69. package/dist/src/commands/furnace/create.js +10 -10
  70. package/dist/src/commands/furnace/deploy.js +4 -4
  71. package/dist/src/commands/furnace/diff.js +7 -7
  72. package/dist/src/commands/furnace/index.js +1 -1
  73. package/dist/src/commands/furnace/init.js +15 -15
  74. package/dist/src/commands/furnace/list.js +2 -2
  75. package/dist/src/commands/furnace/override.d.ts +1 -1
  76. package/dist/src/commands/furnace/override.js +15 -15
  77. package/dist/src/commands/furnace/preview.js +17 -17
  78. package/dist/src/commands/furnace/refresh.js +6 -6
  79. package/dist/src/commands/furnace/remove-mutations.d.ts +3 -3
  80. package/dist/src/commands/furnace/remove-mutations.js +19 -18
  81. package/dist/src/commands/furnace/remove-state.d.ts +1 -1
  82. package/dist/src/commands/furnace/remove-state.js +1 -1
  83. package/dist/src/commands/furnace/remove.js +2 -2
  84. package/dist/src/commands/furnace/rename-browser-test.js +9 -8
  85. package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
  86. package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
  87. package/dist/src/commands/furnace/rename.js +9 -9
  88. package/dist/src/commands/furnace/scan.js +3 -3
  89. package/dist/src/commands/furnace/status.js +7 -7
  90. package/dist/src/commands/furnace/sync.js +6 -6
  91. package/dist/src/commands/furnace/test-file-name.d.ts +2 -2
  92. package/dist/src/commands/furnace/test-file-name.js +2 -2
  93. package/dist/src/commands/furnace/validate.js +11 -12
  94. package/dist/src/commands/import.js +20 -20
  95. package/dist/src/commands/lint-per-patch.js +8 -8
  96. package/dist/src/commands/lint-per-run-checkjs.d.ts +12 -13
  97. package/dist/src/commands/lint-per-run-checkjs.js +14 -15
  98. package/dist/src/commands/lint-report.d.ts +3 -3
  99. package/dist/src/commands/lint-report.js +4 -4
  100. package/dist/src/commands/lint.d.ts +3 -3
  101. package/dist/src/commands/lint.js +35 -35
  102. package/dist/src/commands/manifest.d.ts +4 -4
  103. package/dist/src/commands/package.js +2 -2
  104. package/dist/src/commands/patch/compact.d.ts +2 -2
  105. package/dist/src/commands/patch/compact.js +8 -8
  106. package/dist/src/commands/patch/delete.d.ts +1 -1
  107. package/dist/src/commands/patch/delete.js +8 -8
  108. package/dist/src/commands/patch/lint-ignore.d.ts +3 -4
  109. package/dist/src/commands/patch/lint-ignore.js +14 -15
  110. package/dist/src/commands/patch/move-files-create.d.ts +2 -2
  111. package/dist/src/commands/patch/move-files-create.js +5 -5
  112. package/dist/src/commands/patch/move-files-into.d.ts +2 -2
  113. package/dist/src/commands/patch/move-files-into.js +3 -3
  114. package/dist/src/commands/patch/move-files.js +1 -1
  115. package/dist/src/commands/patch/patch-context.d.ts +1 -1
  116. package/dist/src/commands/patch/rename.d.ts +4 -4
  117. package/dist/src/commands/patch/rename.js +8 -8
  118. package/dist/src/commands/patch/reorder.js +10 -10
  119. package/dist/src/commands/patch/split-plan.d.ts +3 -3
  120. package/dist/src/commands/patch/split-plan.js +6 -5
  121. package/dist/src/commands/patch/split.d.ts +2 -2
  122. package/dist/src/commands/patch/split.js +5 -5
  123. package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
  124. package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
  125. package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
  126. package/dist/src/commands/patch/staged-dependency.js +6 -6
  127. package/dist/src/commands/patch/tier.d.ts +2 -2
  128. package/dist/src/commands/patch/tier.js +5 -5
  129. package/dist/src/commands/patch-rename-map.d.ts +1 -1
  130. package/dist/src/commands/patch-rename-map.js +1 -1
  131. package/dist/src/commands/pending-resolution.d.ts +5 -5
  132. package/dist/src/commands/pending-resolution.js +5 -5
  133. package/dist/src/commands/re-export-adjacent.d.ts +3 -3
  134. package/dist/src/commands/re-export-adjacent.js +8 -8
  135. package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
  136. package/dist/src/commands/re-export-bulk-scan.js +17 -17
  137. package/dist/src/commands/re-export-drift.d.ts +10 -10
  138. package/dist/src/commands/re-export-drift.js +29 -29
  139. package/dist/src/commands/re-export-files.js +14 -15
  140. package/dist/src/commands/re-export-lint.d.ts +26 -26
  141. package/dist/src/commands/re-export-lint.js +27 -27
  142. package/dist/src/commands/re-export-options.d.ts +1 -1
  143. package/dist/src/commands/re-export-options.js +1 -1
  144. package/dist/src/commands/re-export-register.d.ts +1 -1
  145. package/dist/src/commands/re-export-register.js +1 -1
  146. package/dist/src/commands/re-export-scan.d.ts +1 -1
  147. package/dist/src/commands/re-export-scan.js +7 -7
  148. package/dist/src/commands/re-export-single.d.ts +1 -1
  149. package/dist/src/commands/re-export-single.js +20 -20
  150. package/dist/src/commands/re-export.js +7 -6
  151. package/dist/src/commands/rebase/abort.js +6 -6
  152. package/dist/src/commands/rebase/continue.js +8 -7
  153. package/dist/src/commands/rebase/index.d.ts +1 -1
  154. package/dist/src/commands/rebase/index.js +3 -3
  155. package/dist/src/commands/rebase/patch-loop.js +18 -17
  156. package/dist/src/commands/register.js +5 -5
  157. package/dist/src/commands/reset.js +1 -1
  158. package/dist/src/commands/resolve.d.ts +2 -2
  159. package/dist/src/commands/resolve.js +3 -3
  160. package/dist/src/commands/run.js +26 -26
  161. package/dist/src/commands/setup-support.js +4 -4
  162. package/dist/src/commands/setup.js +1 -1
  163. package/dist/src/commands/source.js +1 -1
  164. package/dist/src/commands/status-check.d.ts +3 -3
  165. package/dist/src/commands/status-check.js +4 -4
  166. package/dist/src/commands/status-json.d.ts +14 -13
  167. package/dist/src/commands/status-json.js +9 -8
  168. package/dist/src/commands/status-output.d.ts +3 -3
  169. package/dist/src/commands/status-output.js +3 -3
  170. package/dist/src/commands/status-ownership.d.ts +3 -3
  171. package/dist/src/commands/status-ownership.js +3 -3
  172. package/dist/src/commands/status.js +22 -22
  173. package/dist/src/commands/test-build-phase.d.ts +1 -1
  174. package/dist/src/commands/test-build-phase.js +17 -17
  175. package/dist/src/commands/test-diagnose.d.ts +1 -1
  176. package/dist/src/commands/test-diagnose.js +20 -20
  177. package/dist/src/commands/test-modes.d.ts +2 -2
  178. package/dist/src/commands/test-modes.js +4 -4
  179. package/dist/src/commands/test-run.d.ts +11 -11
  180. package/dist/src/commands/test-run.js +15 -15
  181. package/dist/src/commands/test-stale-gate.d.ts +12 -12
  182. package/dist/src/commands/test-stale-gate.js +13 -13
  183. package/dist/src/commands/test-verdict.d.ts +6 -6
  184. package/dist/src/commands/test-verdict.js +11 -11
  185. package/dist/src/commands/test.d.ts +3 -3
  186. package/dist/src/commands/test.js +36 -36
  187. package/dist/src/commands/token-coverage.js +3 -3
  188. package/dist/src/commands/token-list.js +5 -5
  189. package/dist/src/commands/token.js +9 -9
  190. package/dist/src/commands/tree.js +19 -19
  191. package/dist/src/commands/typecheck.d.ts +6 -6
  192. package/dist/src/commands/typecheck.js +7 -7
  193. package/dist/src/commands/verify.d.ts +3 -3
  194. package/dist/src/commands/verify.js +10 -10
  195. package/dist/src/commands/watch.js +11 -11
  196. package/dist/src/commands/wire.js +13 -13
  197. package/dist/src/core/ast-utils.d.ts +7 -7
  198. package/dist/src/core/ast-utils.js +8 -8
  199. package/dist/src/core/branding.d.ts +5 -5
  200. package/dist/src/core/branding.js +3 -3
  201. package/dist/src/core/browser-wire.d.ts +1 -1
  202. package/dist/src/core/browser-wire.js +4 -4
  203. package/dist/src/core/build-audit-platform.d.ts +6 -6
  204. package/dist/src/core/build-audit-platform.js +26 -26
  205. package/dist/src/core/build-audit-registration.d.ts +5 -5
  206. package/dist/src/core/build-audit-registration.js +7 -7
  207. package/dist/src/core/build-audit-resolve.d.ts +5 -5
  208. package/dist/src/core/build-audit-resolve.js +6 -6
  209. package/dist/src/core/build-audit-skip.d.ts +8 -8
  210. package/dist/src/core/build-audit-skip.js +12 -12
  211. package/dist/src/core/build-audit-transforms.d.ts +2 -2
  212. package/dist/src/core/build-audit-transforms.js +3 -3
  213. package/dist/src/core/build-audit.d.ts +8 -8
  214. package/dist/src/core/build-audit.js +39 -37
  215. package/dist/src/core/build-baseline-types.d.ts +19 -18
  216. package/dist/src/core/build-baseline-types.js +1 -1
  217. package/dist/src/core/build-baseline.d.ts +8 -8
  218. package/dist/src/core/build-baseline.js +14 -14
  219. package/dist/src/core/build-jar-escalation.d.ts +8 -8
  220. package/dist/src/core/build-jar-escalation.js +15 -15
  221. package/dist/src/core/build-overwrite-guard.d.ts +4 -4
  222. package/dist/src/core/build-overwrite-guard.js +13 -13
  223. package/dist/src/core/build-prepare.d.ts +4 -4
  224. package/dist/src/core/build-prepare.js +16 -15
  225. package/dist/src/core/config-mutate.js +4 -4
  226. package/dist/src/core/config-state.js +2 -2
  227. package/dist/src/core/config-validate-build-audit.js +3 -3
  228. package/dist/src/core/config-validate-file-size.d.ts +1 -1
  229. package/dist/src/core/config-validate-file-size.js +2 -2
  230. package/dist/src/core/config-validate.js +8 -9
  231. package/dist/src/core/config.d.ts +10 -10
  232. package/dist/src/core/config.js +10 -10
  233. package/dist/src/core/coverage-extend.d.ts +16 -16
  234. package/dist/src/core/coverage-extend.js +16 -16
  235. package/dist/src/core/destructive.d.ts +14 -14
  236. package/dist/src/core/destructive.js +9 -9
  237. package/dist/src/core/diff-hunks.d.ts +2 -2
  238. package/dist/src/core/diff-hunks.js +7 -7
  239. package/dist/src/core/discard-baseline.d.ts +10 -10
  240. package/dist/src/core/discard-baseline.js +15 -16
  241. package/dist/src/core/display-state.d.ts +11 -11
  242. package/dist/src/core/display-state.js +12 -12
  243. package/dist/src/core/engine-changes.d.ts +2 -2
  244. package/dist/src/core/engine-changes.js +2 -2
  245. package/dist/src/core/engine-precondition.d.ts +4 -4
  246. package/dist/src/core/engine-precondition.js +2 -2
  247. package/dist/src/core/engine-session-lock.d.ts +18 -18
  248. package/dist/src/core/engine-session-lock.js +37 -37
  249. package/dist/src/core/export-moved-code-shape.d.ts +7 -7
  250. package/dist/src/core/export-moved-code-shape.js +8 -8
  251. package/dist/src/core/file-lock-owner.d.ts +11 -11
  252. package/dist/src/core/file-lock-owner.js +18 -18
  253. package/dist/src/core/file-lock.d.ts +12 -12
  254. package/dist/src/core/file-lock.js +52 -39
  255. package/dist/src/core/firefox-cache.d.ts +1 -1
  256. package/dist/src/core/firefox-cache.js +10 -10
  257. package/dist/src/core/firefox-download.d.ts +3 -3
  258. package/dist/src/core/firefox-download.js +6 -6
  259. package/dist/src/core/firefox-extract.d.ts +2 -2
  260. package/dist/src/core/firefox-extract.js +13 -13
  261. package/dist/src/core/firefox.d.ts +5 -5
  262. package/dist/src/core/firefox.js +8 -8
  263. package/dist/src/core/furnace-apply-dry-run.js +1 -1
  264. package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
  265. package/dist/src/core/furnace-apply-ftl.js +8 -8
  266. package/dist/src/core/furnace-apply-helpers.d.ts +9 -9
  267. package/dist/src/core/furnace-apply-helpers.js +21 -21
  268. package/dist/src/core/furnace-apply-output.js +1 -1
  269. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
  270. package/dist/src/core/furnace-apply-overwrite-warn.js +9 -9
  271. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
  272. package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
  273. package/dist/src/core/furnace-apply.d.ts +3 -3
  274. package/dist/src/core/furnace-apply.js +22 -21
  275. package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
  276. package/dist/src/core/furnace-checksum-utils.js +5 -5
  277. package/dist/src/core/furnace-config-custom.d.ts +1 -1
  278. package/dist/src/core/furnace-config-custom.js +2 -2
  279. package/dist/src/core/furnace-config-order.js +1 -1
  280. package/dist/src/core/furnace-config-tokens.d.ts +3 -3
  281. package/dist/src/core/furnace-config-tokens.js +3 -3
  282. package/dist/src/core/furnace-config-validate.js +2 -2
  283. package/dist/src/core/furnace-config.d.ts +4 -4
  284. package/dist/src/core/furnace-config.js +18 -18
  285. package/dist/src/core/furnace-constants.d.ts +6 -6
  286. package/dist/src/core/furnace-constants.js +6 -6
  287. package/dist/src/core/furnace-css-fragments.d.ts +6 -6
  288. package/dist/src/core/furnace-css-fragments.js +11 -11
  289. package/dist/src/core/furnace-dir-entry.d.ts +1 -1
  290. package/dist/src/core/furnace-dir-entry.js +1 -1
  291. package/dist/src/core/furnace-jsconfig.d.ts +7 -7
  292. package/dist/src/core/furnace-jsconfig.js +22 -20
  293. package/dist/src/core/furnace-operation.d.ts +21 -20
  294. package/dist/src/core/furnace-operation.js +36 -34
  295. package/dist/src/core/furnace-precondition.d.ts +10 -10
  296. package/dist/src/core/furnace-precondition.js +8 -8
  297. package/dist/src/core/furnace-refresh.js +2 -2
  298. package/dist/src/core/furnace-registration-ast.d.ts +2 -2
  299. package/dist/src/core/furnace-registration-ast.js +9 -9
  300. package/dist/src/core/furnace-registration-remove.d.ts +4 -4
  301. package/dist/src/core/furnace-registration-remove.js +6 -6
  302. package/dist/src/core/furnace-registration-validate.d.ts +2 -2
  303. package/dist/src/core/furnace-registration-validate.js +2 -2
  304. package/dist/src/core/furnace-registration.d.ts +5 -5
  305. package/dist/src/core/furnace-registration.js +7 -7
  306. package/dist/src/core/furnace-rollback.d.ts +1 -1
  307. package/dist/src/core/furnace-rollback.js +5 -5
  308. package/dist/src/core/furnace-stale-export.d.ts +17 -16
  309. package/dist/src/core/furnace-stale-export.js +16 -15
  310. package/dist/src/core/furnace-staleness.d.ts +2 -2
  311. package/dist/src/core/furnace-staleness.js +2 -2
  312. package/dist/src/core/furnace-state-persist.d.ts +10 -10
  313. package/dist/src/core/furnace-state-persist.js +10 -10
  314. package/dist/src/core/furnace-step-errors.d.ts +6 -6
  315. package/dist/src/core/furnace-step-errors.js +6 -6
  316. package/dist/src/core/furnace-validate-accessibility.js +14 -14
  317. package/dist/src/core/furnace-validate-compatibility.js +9 -9
  318. package/dist/src/core/furnace-validate-registration.d.ts +2 -2
  319. package/dist/src/core/furnace-validate-registration.js +13 -13
  320. package/dist/src/core/furnace-validate-structure.d.ts +1 -1
  321. package/dist/src/core/furnace-validate-structure.js +4 -4
  322. package/dist/src/core/furnace-validate.js +9 -9
  323. package/dist/src/core/furnace-version-drift.d.ts +5 -5
  324. package/dist/src/core/furnace-version-drift.js +5 -5
  325. package/dist/src/core/git-base.d.ts +4 -4
  326. package/dist/src/core/git-base.js +9 -9
  327. package/dist/src/core/git-diff-new-file.d.ts +4 -4
  328. package/dist/src/core/git-diff-new-file.js +8 -8
  329. package/dist/src/core/git-diff.d.ts +4 -4
  330. package/dist/src/core/git-diff.js +35 -34
  331. package/dist/src/core/git-file-ops.d.ts +6 -6
  332. package/dist/src/core/git-file-ops.js +7 -7
  333. package/dist/src/core/git-readonly-index.d.ts +12 -12
  334. package/dist/src/core/git-readonly-index.js +12 -12
  335. package/dist/src/core/git-status.d.ts +4 -4
  336. package/dist/src/core/git-status.js +4 -4
  337. package/dist/src/core/git.d.ts +3 -3
  338. package/dist/src/core/git.js +14 -14
  339. package/dist/src/core/harness-orphans.d.ts +17 -17
  340. package/dist/src/core/harness-orphans.js +20 -20
  341. package/dist/src/core/history-log.d.ts +3 -3
  342. package/dist/src/core/history-log.js +3 -3
  343. package/dist/src/core/license-headers.d.ts +19 -18
  344. package/dist/src/core/license-headers.js +29 -28
  345. package/dist/src/core/mach-build-artifacts.d.ts +21 -21
  346. package/dist/src/core/mach-build-artifacts.js +23 -23
  347. package/dist/src/core/mach-error-hints.d.ts +5 -5
  348. package/dist/src/core/mach-error-hints.js +13 -13
  349. package/dist/src/core/mach-known-noise-filter.d.ts +41 -38
  350. package/dist/src/core/mach-known-noise-filter.js +53 -50
  351. package/dist/src/core/mach-mozconfig.d.ts +6 -6
  352. package/dist/src/core/mach-mozconfig.js +15 -15
  353. package/dist/src/core/mach-python.d.ts +2 -1
  354. package/dist/src/core/mach-python.js +4 -3
  355. package/dist/src/core/mach-resource-shim.d.ts +12 -12
  356. package/dist/src/core/mach-resource-shim.js +20 -20
  357. package/dist/src/core/mach.d.ts +23 -23
  358. package/dist/src/core/mach.js +36 -36
  359. package/dist/src/core/marionette-port.d.ts +15 -13
  360. package/dist/src/core/marionette-port.js +34 -31
  361. package/dist/src/core/marionette-preflight.d.ts +6 -6
  362. package/dist/src/core/marionette-preflight.js +23 -23
  363. package/dist/src/core/markdown-table.d.ts +9 -9
  364. package/dist/src/core/markdown-table.js +14 -14
  365. package/dist/src/core/mochitest-server-port.d.ts +8 -8
  366. package/dist/src/core/mochitest-server-port.js +14 -14
  367. package/dist/src/core/module-resolution-preflight.d.ts +8 -8
  368. package/dist/src/core/module-resolution-preflight.js +11 -11
  369. package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
  370. package/dist/src/core/moz-manifest-helpers.js +7 -7
  371. package/dist/src/core/moz-manifest-register.d.ts +1 -1
  372. package/dist/src/core/moz-manifest-register.js +2 -2
  373. package/dist/src/core/moz-manifest-rules.js +11 -11
  374. package/dist/src/core/moz-manifest-tokenizers.js +1 -1
  375. package/dist/src/core/ownership-table.d.ts +5 -5
  376. package/dist/src/core/ownership-table.js +7 -7
  377. package/dist/src/core/parser-fallback.d.ts +3 -3
  378. package/dist/src/core/parser-fallback.js +3 -3
  379. package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
  380. package/dist/src/core/patch-apply-fuzz.js +9 -9
  381. package/dist/src/core/patch-apply.d.ts +9 -9
  382. package/dist/src/core/patch-apply.js +30 -30
  383. package/dist/src/core/patch-export-update.d.ts +4 -4
  384. package/dist/src/core/patch-export-update.js +3 -3
  385. package/dist/src/core/patch-export.d.ts +10 -10
  386. package/dist/src/core/patch-export.js +13 -13
  387. package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
  388. package/dist/src/core/patch-identifier-suggest.js +4 -4
  389. package/dist/src/core/patch-lint-binary.d.ts +7 -7
  390. package/dist/src/core/patch-lint-cache.d.ts +2 -2
  391. package/dist/src/core/patch-lint-cache.js +13 -13
  392. package/dist/src/core/patch-lint-checkjs.d.ts +26 -26
  393. package/dist/src/core/patch-lint-checkjs.js +42 -41
  394. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
  395. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
  396. package/dist/src/core/patch-lint-creators.d.ts +3 -3
  397. package/dist/src/core/patch-lint-creators.js +3 -3
  398. package/dist/src/core/patch-lint-cross.d.ts +13 -13
  399. package/dist/src/core/patch-lint-cross.js +21 -21
  400. package/dist/src/core/patch-lint-css.d.ts +1 -1
  401. package/dist/src/core/patch-lint-css.js +5 -5
  402. package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
  403. package/dist/src/core/patch-lint-diff-tag.js +5 -5
  404. package/dist/src/core/patch-lint-diff.d.ts +4 -4
  405. package/dist/src/core/patch-lint-diff.js +4 -4
  406. package/dist/src/core/patch-lint-file-size.d.ts +3 -3
  407. package/dist/src/core/patch-lint-file-size.js +3 -3
  408. package/dist/src/core/patch-lint-forward-registration.d.ts +4 -4
  409. package/dist/src/core/patch-lint-forward-registration.js +12 -12
  410. package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
  411. package/dist/src/core/patch-lint-jsdoc.js +11 -11
  412. package/dist/src/core/patch-lint-module-registration.d.ts +1 -1
  413. package/dist/src/core/patch-lint-module-registration.js +1 -1
  414. package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
  415. package/dist/src/core/patch-lint-mozbuild.js +10 -10
  416. package/dist/src/core/patch-lint-observer.d.ts +3 -3
  417. package/dist/src/core/patch-lint-observer.js +7 -7
  418. package/dist/src/core/patch-lint-ownership.d.ts +6 -6
  419. package/dist/src/core/patch-lint-ownership.js +6 -6
  420. package/dist/src/core/patch-lint-prettier.d.ts +6 -6
  421. package/dist/src/core/patch-lint-prettier.js +6 -6
  422. package/dist/src/core/patch-lint-queue-types.d.ts +1 -1
  423. package/dist/src/core/patch-lint-queue-types.js +1 -1
  424. package/dist/src/core/patch-lint-staged-registration.d.ts +2 -2
  425. package/dist/src/core/patch-lint-staged-registration.js +6 -6
  426. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
  427. package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
  428. package/dist/src/core/patch-lint.d.ts +27 -26
  429. package/dist/src/core/patch-lint.js +48 -46
  430. package/dist/src/core/patch-lock.d.ts +1 -1
  431. package/dist/src/core/patch-lock.js +8 -8
  432. package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
  433. package/dist/src/core/patch-manifest-consistency.js +16 -17
  434. package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
  435. package/dist/src/core/patch-manifest-files-affected.js +3 -3
  436. package/dist/src/core/patch-manifest-io.d.ts +14 -14
  437. package/dist/src/core/patch-manifest-io.js +27 -27
  438. package/dist/src/core/patch-manifest-query.d.ts +1 -1
  439. package/dist/src/core/patch-manifest-query.js +4 -4
  440. package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
  441. package/dist/src/core/patch-manifest-resolve.js +7 -7
  442. package/dist/src/core/patch-manifest-validate.js +3 -3
  443. package/dist/src/core/patch-manifest.d.ts +2 -2
  444. package/dist/src/core/patch-manifest.js +2 -2
  445. package/dist/src/core/patch-parse.d.ts +14 -14
  446. package/dist/src/core/patch-parse.js +16 -16
  447. package/dist/src/core/patch-registration-refs.d.ts +4 -4
  448. package/dist/src/core/patch-registration-refs.js +7 -7
  449. package/dist/src/core/patch-transform.d.ts +8 -8
  450. package/dist/src/core/patch-transform.js +13 -13
  451. package/dist/src/core/process-cpu-time.d.ts +1 -1
  452. package/dist/src/core/process-cpu-time.js +5 -5
  453. package/dist/src/core/rebase-session.d.ts +7 -7
  454. package/dist/src/core/rebase-session.js +8 -8
  455. package/dist/src/core/register-result.d.ts +1 -1
  456. package/dist/src/core/register-result.js +1 -1
  457. package/dist/src/core/register-scaffold.d.ts +2 -2
  458. package/dist/src/core/register-scaffold.js +3 -3
  459. package/dist/src/core/register-shared-css.d.ts +3 -3
  460. package/dist/src/core/register-shared-css.js +4 -4
  461. package/dist/src/core/register-xpcshell-test.d.ts +2 -2
  462. package/dist/src/core/register-xpcshell-test.js +2 -2
  463. package/dist/src/core/run-log-redact.d.ts +12 -12
  464. package/dist/src/core/run-log-redact.js +16 -16
  465. package/dist/src/core/run-log.d.ts +9 -9
  466. package/dist/src/core/run-log.js +14 -14
  467. package/dist/src/core/shared-ftl.d.ts +2 -2
  468. package/dist/src/core/shared-ftl.js +6 -6
  469. package/dist/src/core/signal-critical.d.ts +2 -2
  470. package/dist/src/core/signal-critical.js +2 -2
  471. package/dist/src/core/smoke-patterns.d.ts +5 -5
  472. package/dist/src/core/smoke-patterns.js +9 -9
  473. package/dist/src/core/state-file.d.ts +3 -3
  474. package/dist/src/core/status-binary.d.ts +8 -8
  475. package/dist/src/core/status-binary.js +12 -12
  476. package/dist/src/core/status-classify.d.ts +17 -17
  477. package/dist/src/core/status-classify.js +11 -11
  478. package/dist/src/core/test-changed-prefs.d.ts +12 -12
  479. package/dist/src/core/test-changed-prefs.js +15 -15
  480. package/dist/src/core/test-harness-crash.d.ts +39 -39
  481. package/dist/src/core/test-harness-crash.js +67 -67
  482. package/dist/src/core/test-harness-output.d.ts +7 -7
  483. package/dist/src/core/test-harness-output.js +7 -7
  484. package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
  485. package/dist/src/core/test-harness-verdict-notes.js +4 -4
  486. package/dist/src/core/test-path-scope.d.ts +8 -8
  487. package/dist/src/core/test-path-scope.js +11 -11
  488. package/dist/src/core/test-stale-check.d.ts +22 -21
  489. package/dist/src/core/test-stale-check.js +29 -28
  490. package/dist/src/core/test-stale-symlink.d.ts +1 -1
  491. package/dist/src/core/test-stale-symlink.js +1 -1
  492. package/dist/src/core/test-stall-triage.d.ts +9 -9
  493. package/dist/src/core/test-stall-triage.js +22 -22
  494. package/dist/src/core/token-category.d.ts +4 -4
  495. package/dist/src/core/token-category.js +13 -12
  496. package/dist/src/core/token-coverage.js +4 -5
  497. package/dist/src/core/token-dark-mode.d.ts +17 -9
  498. package/dist/src/core/token-dark-mode.js +41 -28
  499. package/dist/src/core/token-docs.d.ts +1 -1
  500. package/dist/src/core/token-inventory.d.ts +6 -6
  501. package/dist/src/core/token-inventory.js +7 -7
  502. package/dist/src/core/token-manager.d.ts +3 -3
  503. package/dist/src/core/token-manager.js +21 -21
  504. package/dist/src/core/token-scaffold.d.ts +4 -4
  505. package/dist/src/core/token-scaffold.js +4 -4
  506. package/dist/src/core/token-variant.d.ts +14 -14
  507. package/dist/src/core/token-variant.js +32 -32
  508. package/dist/src/core/toolchain-preflight.d.ts +15 -15
  509. package/dist/src/core/toolchain-preflight.js +22 -22
  510. package/dist/src/core/tree-cow.d.ts +3 -3
  511. package/dist/src/core/tree-cow.js +6 -6
  512. package/dist/src/core/tree-guard.d.ts +3 -3
  513. package/dist/src/core/tree-guard.js +23 -23
  514. package/dist/src/core/tree-store.d.ts +15 -15
  515. package/dist/src/core/tree-store.js +35 -33
  516. package/dist/src/core/typecheck-shim.d.ts +16 -15
  517. package/dist/src/core/typecheck-shim.js +26 -25
  518. package/dist/src/core/typecheck.d.ts +12 -12
  519. package/dist/src/core/typecheck.js +31 -31
  520. package/dist/src/core/wire-destroy.d.ts +2 -2
  521. package/dist/src/core/wire-destroy.js +5 -5
  522. package/dist/src/core/wire-dom-fragment.d.ts +3 -3
  523. package/dist/src/core/wire-dom-fragment.js +6 -6
  524. package/dist/src/core/wire-init.d.ts +2 -2
  525. package/dist/src/core/wire-init.js +7 -7
  526. package/dist/src/core/wire-subscript.d.ts +1 -1
  527. package/dist/src/core/wire-subscript.js +3 -3
  528. package/dist/src/core/wire-utils.d.ts +9 -9
  529. package/dist/src/core/wire-utils.js +11 -11
  530. package/dist/src/core/xpcshell-appdir.d.ts +20 -20
  531. package/dist/src/core/xpcshell-appdir.js +26 -26
  532. package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
  533. package/dist/src/core/xpcshell-profile-dir.js +7 -7
  534. package/dist/src/errors/base.d.ts +22 -21
  535. package/dist/src/errors/base.js +22 -21
  536. package/dist/src/errors/build.d.ts +6 -6
  537. package/dist/src/errors/build.js +6 -6
  538. package/dist/src/errors/codes.d.ts +10 -10
  539. package/dist/src/errors/codes.js +10 -10
  540. package/dist/src/errors/furnace.d.ts +2 -2
  541. package/dist/src/errors/git.d.ts +1 -1
  542. package/dist/src/errors/git.js +1 -1
  543. package/dist/src/errors/patch.d.ts +3 -3
  544. package/dist/src/errors/patch.js +3 -3
  545. package/dist/src/errors/rebase.d.ts +1 -1
  546. package/dist/src/errors/rebase.js +1 -1
  547. package/dist/src/errors/run.d.ts +1 -1
  548. package/dist/src/errors/run.js +1 -1
  549. package/dist/src/index.d.ts +4 -4
  550. package/dist/src/index.js +4 -4
  551. package/dist/src/types/commands/options.d.ts +86 -85
  552. package/dist/src/types/commands/patches.d.ts +19 -19
  553. package/dist/src/types/commands/project.d.ts +3 -3
  554. package/dist/src/types/config.d.ts +24 -23
  555. package/dist/src/types/furnace.d.ts +17 -17
  556. package/dist/src/types/json.d.ts +3 -3
  557. package/dist/src/types/json.js +2 -2
  558. package/dist/src/types/typecheck.d.ts +3 -3
  559. package/dist/src/utils/assert.d.ts +1 -1
  560. package/dist/src/utils/assert.js +6 -6
  561. package/dist/src/utils/build-info.d.ts +5 -5
  562. package/dist/src/utils/build-info.js +6 -6
  563. package/dist/src/utils/child-env.d.ts +5 -5
  564. package/dist/src/utils/child-env.js +5 -5
  565. package/dist/src/utils/concurrency.d.ts +2 -2
  566. package/dist/src/utils/concurrency.js +2 -2
  567. package/dist/src/utils/elapsed.js +1 -1
  568. package/dist/src/utils/errors.d.ts +8 -8
  569. package/dist/src/utils/errors.js +8 -8
  570. package/dist/src/utils/fs.d.ts +1 -1
  571. package/dist/src/utils/fs.js +8 -8
  572. package/dist/src/utils/line-dispatch.d.ts +3 -3
  573. package/dist/src/utils/line-dispatch.js +5 -5
  574. package/dist/src/utils/logger.d.ts +4 -4
  575. package/dist/src/utils/logger.js +11 -11
  576. package/dist/src/utils/machine-output.js +2 -2
  577. package/dist/src/utils/options.d.ts +13 -13
  578. package/dist/src/utils/options.js +20 -20
  579. package/dist/src/utils/package-root.js +2 -2
  580. package/dist/src/utils/paths.d.ts +4 -4
  581. package/dist/src/utils/paths.js +4 -4
  582. package/dist/src/utils/process-group.d.ts +8 -8
  583. package/dist/src/utils/process-group.js +19 -19
  584. package/dist/src/utils/process.d.ts +34 -33
  585. package/dist/src/utils/process.js +20 -19
  586. package/dist/src/utils/ps-duration.d.ts +4 -4
  587. package/dist/src/utils/ps-duration.js +6 -6
  588. package/dist/src/utils/regex.d.ts +4 -4
  589. package/dist/src/utils/regex.js +7 -7
  590. package/dist/src/utils/sleep.d.ts +7 -7
  591. package/dist/src/utils/sleep.js +7 -7
  592. package/dist/src/utils/stdio-drain.d.ts +7 -7
  593. package/dist/src/utils/stdio-drain.js +8 -8
  594. package/dist/src/utils/validation.d.ts +11 -12
  595. package/dist/src/utils/validation.js +20 -21
  596. package/docs/README.md +2 -2
  597. package/docs/configuration.md +120 -114
  598. package/docs/exit-codes.md +63 -58
  599. package/docs/furnace.md +20 -19
  600. package/docs/lifecycle-invariants.md +412 -251
  601. package/docs/machine-output.md +33 -32
  602. package/docs/patch-workflow.md +48 -45
  603. package/docs/run-logs.md +62 -58
  604. package/docs/testing.md +101 -101
  605. package/docs/verification-trees.md +23 -22
  606. package/package.json +2 -2
@@ -202,9 +202,9 @@ export async function writeFileAtomic(path, content) {
202
202
  /**
203
203
  * Renames the temp file over its destination, retrying transient sharing
204
204
  * violations. On Windows, a rename onto a target that another writer is
205
- * concurrently replacing — or that an antivirus/indexer briefly holds open —
205
+ * concurrently replacing (or that an antivirus/indexer briefly holds open)
206
206
  * fails with EPERM/EACCES/EBUSY even though the same rename succeeds a moment
207
- * later; POSIX renames never hit this. Non-retriable codes and exhausted
207
+ * later. POSIX renames never hit this. Non-retriable codes and exhausted
208
208
  * budgets rethrow, so a genuine permission problem still surfaces.
209
209
  */
210
210
  async function renameWithRetries(from, to) {
@@ -237,7 +237,7 @@ async function syncParentDir(path) {
237
237
  await directoryHandle?.close();
238
238
  }
239
239
  catch {
240
- // Nothing left to do — the handle is being discarded either way.
240
+ // Nothing left to do. The handle is being discarded either way.
241
241
  }
242
242
  }
243
243
  }
@@ -272,7 +272,7 @@ export async function copyDir(src, dest) {
272
272
  * artefacts out of their listings without racing the rename.
273
273
  *
274
274
  * Intentionally anchored so a legitimately-named backup file like
275
- * `.notes.fireforge-tmp-backup` (no PID+UUID continuation) is NOT treated
275
+ * `.notes.fireforge-tmp-backup` (no PID+UUID continuation) is not treated
276
276
  * as one of our temps. The full shape is `.<filename>.fireforge-tmp-<pid>-<uuid>`.
277
277
  */
278
278
  export const FIREFORGE_TMP_PATH_PATTERN = /(^|\/)\.[^/]+\.fireforge-tmp-\d+-[0-9a-f-]{36}$/i;
@@ -281,8 +281,8 @@ export const FIREFORGE_TMP_PATH_PATTERN = /(^|\/)\.[^/]+\.fireforge-tmp-\d+-[0-9
281
281
  *
282
282
  * Each invocation gets its own path via PID + UUID, so concurrent writers
283
283
  * targeting the same destination never interfere with each other. Cleanup of
284
- * the temp file is the caller's responsibility on error; we intentionally do
285
- * NOT glob-delete peer temp files here to avoid racing with other writers.
284
+ * the temp file is the caller's responsibility on error. We intentionally do
285
+ * not glob-delete peer temp files here to avoid racing with other writers.
286
286
  */
287
287
  function createAtomicTempPath(path) {
288
288
  const directory = dirname(path);
@@ -306,7 +306,7 @@ function createAtomicTempPath(path) {
306
306
  export async function checkDiskSpace(path, minBytes, onLowSpace) {
307
307
  try {
308
308
  const stats = await statfs(path);
309
- // bavail = blocks available to UNPRIVILEGED users; bfree includes the
309
+ // bavail = blocks available to UNPRIVILEGED users. bfree includes the
310
310
  // root-reserved blocks (typically 5% on ext4), so it over-reported free
311
311
  // space and silently suppressed the low-space warning exactly when it
312
312
  // mattered.
@@ -321,7 +321,7 @@ export async function checkDiskSpace(path, minBytes, onLowSpace) {
321
321
  }
322
322
  catch {
323
323
  // statfs may not be available on all platforms or the path may
324
- // not exist yet — silently degrade rather than blocking the operation.
324
+ // not exist yet, so silently degrade rather than blocking the operation.
325
325
  return undefined;
326
326
  }
327
327
  }
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * Line splitting for the smoke-run stream dispatch in `process.ts`. Kept as
3
- * a sibling so the exec module stays within its size budget; the contract
3
+ * a sibling so the exec module stays within its size budget. The contract
4
4
  * (terminators, partial-line cap) is documented on the function.
5
5
  */
6
6
  /**
7
7
  * Drains complete lines from `buffer`, dispatching each to `cb`. Treats
8
- * `\n`, `\r\n`, and lone `\r` as line terminators — the lone-`\r` case
8
+ * `\n`, `\r\n`, and lone `\r` as line terminators. The lone-`\r` case
9
9
  * matters for progress-bar style output (mach, cargo) that repaints a line
10
10
  * with carriage returns and never sends a newline, which otherwise
11
11
  * accumulates indefinitely. A single trailing `\r` is held back since it may
12
12
  * be the first half of a `\r\n` pair split across chunks. Returns the
13
- * remaining partial line — callers keep accumulating into it.
13
+ * remaining partial line. Callers keep accumulating into it.
14
14
  */
15
15
  export declare function dispatchCompleteLines(buffer: string, cb: ((line: string) => void) | undefined): string;
@@ -1,13 +1,13 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
3
  * Line splitting for the smoke-run stream dispatch in `process.ts`. Kept as
4
- * a sibling so the exec module stays within its size budget; the contract
4
+ * a sibling so the exec module stays within its size budget. The contract
5
5
  * (terminators, partial-line cap) is documented on the function.
6
6
  */
7
7
  /**
8
8
  * Cap on the partial-line tail kept between chunks. A child emitting one
9
9
  * enormous line with no terminator (minified JS dumped to stderr, a raw
10
- * binary blob) would otherwise grow the buffer without bound — the 50 MB cap
10
+ * binary blob) would otherwise grow the buffer without bound: the 50 MB cap
11
11
  * guards the collector, not these line buffers. When the tail exceeds the
12
12
  * cap it is dispatched as a synthetic (oversized) line so the matchers still
13
13
  * see its content, then the buffer resets.
@@ -15,12 +15,12 @@
15
15
  const MAX_PARTIAL_LINE_SIZE = 1024 * 1024;
16
16
  /**
17
17
  * Drains complete lines from `buffer`, dispatching each to `cb`. Treats
18
- * `\n`, `\r\n`, and lone `\r` as line terminators — the lone-`\r` case
18
+ * `\n`, `\r\n`, and lone `\r` as line terminators. The lone-`\r` case
19
19
  * matters for progress-bar style output (mach, cargo) that repaints a line
20
20
  * with carriage returns and never sends a newline, which otherwise
21
21
  * accumulates indefinitely. A single trailing `\r` is held back since it may
22
22
  * be the first half of a `\r\n` pair split across chunks. Returns the
23
- * remaining partial line — callers keep accumulating into it.
23
+ * remaining partial line. Callers keep accumulating into it.
24
24
  */
25
25
  export function dispatchCompleteLines(buffer, cb) {
26
26
  let searchFrom = 0;
@@ -31,7 +31,7 @@ export function dispatchCompleteLines(buffer, cb) {
31
31
  if (idx === -1)
32
32
  break;
33
33
  if (buffer[idx] === '\r' && idx === buffer.length - 1) {
34
- // Possible first half of a chunk-split \r\n — wait for the next chunk.
34
+ // Possible first half of a chunk-split \r\n, so wait for the next chunk.
35
35
  break;
36
36
  }
37
37
  const line = buffer.slice(0, idx);
@@ -64,9 +64,9 @@ export declare function warn(message: string): void;
64
64
  export declare const NOTICE_PREFIX = "[FireForge] NOTICE:";
65
65
  /**
66
66
  * Logs one of FireForge's own "why this is happening / why this is slow"
67
- * explanations at WARNING severity.
67
+ * explanations at warning severity.
68
68
  *
69
- * These lines are not warnings about the operator's code — they explain a
69
+ * These lines are not warnings about the operator's code. They explain a
70
70
  * decision FireForge just made (escalating an incremental build to a full
71
71
  * one, sharding a run, skipping a step). Emitted through `info` they are
72
72
  * silently dropped by agent-facing output filters that keep only warnings
@@ -98,10 +98,10 @@ export declare function cancel(message: string): void;
98
98
  /**
99
99
  * Checks whether a prompt result represents a user cancellation.
100
100
  *
101
- * Narrows to `symbol` — clack returns its cancel sentinel as a symbol and
101
+ * Narrows to `symbol`: clack returns its cancel sentinel as a symbol and
102
102
  * `p.isCancel` is itself a type predicate. Returning plain `boolean` erases
103
103
  * that narrowing and forces `as string` / `as PatchCategory` casts across
104
- * the command modules on the *non*-cancelled branch, where the value is
104
+ * the command modules on the non-cancelled branch, where the value is
105
105
  * already known not to be the sentinel. Keep the predicate form.
106
106
  */
107
107
  export declare function isCancel(value: unknown): value is symbol;
@@ -6,11 +6,11 @@ let verboseMode = false;
6
6
  /**
7
7
  * Whether machine-output mode is active (`--json` / `--raw`).
8
8
  *
9
- * In machine mode, stdout belongs EXCLUSIVELY to the machine-readable
9
+ * In machine mode, stdout belongs exclusively to the machine-readable
10
10
  * payload: all human-facing diagnostics (intro/outro banners, info, warn,
11
11
  * error, steps, notes) are routed to stderr as plain unstyled lines.
12
- * Otherwise clack's log helpers write styled warnings to stdout *before* the
13
- * JSON body — a truncated-directory warning during `status --json` breaks
12
+ * Otherwise clack's log helpers write styled warnings to stdout before the
13
+ * JSON body, and a truncated-directory warning during `status --json` breaks
14
14
  * every `JSON.parse(stdout)` consumer.
15
15
  */
16
16
  let machineOutputMode = false;
@@ -35,11 +35,11 @@ export function isMachineOutputMode() {
35
35
  /**
36
36
  * Whether stdout is sealed behind a machine-readable final line.
37
37
  *
38
- * The `FIREFORGE-VERDICT:` contract promises that line as the run's LAST
39
- * stdout write — but emit-then-throw failure paths rethrow into
38
+ * The `FIREFORGE-VERDICT:` contract promises that line as the run's last
39
+ * stdout write, but emit-then-throw failure paths rethrow into
40
40
  * `withErrorHandling`, whose clack error/cancel rendering lands on stdout
41
41
  * in non-machine mode, displacing the verdict from the final line. The
42
- * verdict sink seals stdout the moment it writes; every later logger call
42
+ * verdict sink seals stdout the moment it writes. Every later logger call
43
43
  * routes to stderr through the same diagnostic channel machine mode uses.
44
44
  * `withErrorHandling`'s finally clears the seal (alongside machine mode).
45
45
  */
@@ -138,9 +138,9 @@ export function warn(message) {
138
138
  export const NOTICE_PREFIX = '[FireForge] NOTICE:';
139
139
  /**
140
140
  * Logs one of FireForge's own "why this is happening / why this is slow"
141
- * explanations at WARNING severity.
141
+ * explanations at warning severity.
142
142
  *
143
- * These lines are not warnings about the operator's code — they explain a
143
+ * These lines are not warnings about the operator's code. They explain a
144
144
  * decision FireForge just made (escalating an incremental build to a full
145
145
  * one, sharding a run, skipping a step). Emitted through `info` they are
146
146
  * silently dropped by agent-facing output filters that keep only warnings
@@ -196,7 +196,7 @@ export function formatErrorText(message) {
196
196
  */
197
197
  export function spinner(initialMessage) {
198
198
  if (routeToStderr()) {
199
- // Spinner progress is diagnostics; keep stdout clean for the payload.
199
+ // Spinner progress is diagnostics. Keep stdout clean for the payload.
200
200
  return {
201
201
  message: (msg) => {
202
202
  writeDiagnostic('', msg);
@@ -251,10 +251,10 @@ export function cancel(message) {
251
251
  /**
252
252
  * Checks whether a prompt result represents a user cancellation.
253
253
  *
254
- * Narrows to `symbol` — clack returns its cancel sentinel as a symbol and
254
+ * Narrows to `symbol`: clack returns its cancel sentinel as a symbol and
255
255
  * `p.isCancel` is itself a type predicate. Returning plain `boolean` erases
256
256
  * that narrowing and forces `as string` / `as PatchCategory` casts across
257
- * the command modules on the *non*-cancelled branch, where the value is
257
+ * the command modules on the non-cancelled branch, where the value is
258
258
  * already known not to be the sentinel. Keep the predicate form.
259
259
  */
260
260
  export function isCancel(value) {
@@ -11,8 +11,8 @@
11
11
  * 1. Success writes exactly one JSON document to stdout.
12
12
  * 2. Failure writes exactly one `{ schemaVersion, error, code }` document
13
13
  * to stdout, then exits non-zero.
14
- * 3. Machine mode is engaged BEFORE any output, so every diagnostic —
15
- * including one rendered later by `withErrorHandling` — routes to
14
+ * 3. Machine mode is engaged before any output, so every diagnostic,
15
+ * including one rendered later by `withErrorHandling`, routes to
16
16
  * stderr and cannot corrupt the payload.
17
17
  */
18
18
  import { CommandError } from '../errors/base.js';
@@ -1,14 +1,14 @@
1
1
  import type { Command } from 'commander';
2
2
  /**
3
3
  * Filters an object to only include keys whose values are not undefined.
4
- * Designed for use with exactOptionalPropertyTypes — the result can be
4
+ * Designed for use with exactOptionalPropertyTypes: the result can be
5
5
  * spread into typed option objects without assigning undefined to optional
6
6
  * properties.
7
7
  *
8
8
  * Constrained to `object`, not `Record<string, unknown>`: a named interface
9
9
  * has no index signature, so the narrower constraint rejects exactly the
10
10
  * annotations this helper is most useful with. Nothing in the body needs the
11
- * index signature — the key walk goes through `Object.keys`.
11
+ * index signature, since the key walk goes through `Object.keys`.
12
12
  *
13
13
  * @param obj - Object to filter
14
14
  * @returns The same object with every `undefined`-valued key removed
@@ -21,7 +21,7 @@ export declare function pickDefined<T extends object>(obj: T): {
21
21
  * commander's own invalid-argument channel.
22
22
  *
23
23
  * Commander only treats errors whose `code` is `'commander.invalidArgument'`
24
- * as argument-validation failures; anything else re-throws out of
24
+ * as argument-validation failures. Anything else re-throws out of
25
25
  * `parseAsync`, BYPASSING `withErrorHandling` entirely and landing in the
26
26
  * bin's `main().catch` as an unformatted `Fatal error: …` dump with exit 1.
27
27
  * That covers a plain Error, a `GeneralError`, and even a FireForge
@@ -62,25 +62,25 @@ export declare const WAIT_LOCK_ENV_VAR = "FIREFORGE_WAIT_LOCK";
62
62
  * Accepts the raw string too, so it doubles as the option's arg parser (wrap
63
63
  * with {@link commanderArgParser} so failures surface through commander's
64
64
  * invalid-argument channel). In that role the value is never `undefined`, so
65
- * the environment fallback cannot leak into flag PARSING — only into flag
66
- * ABSENCE, which is where it belongs.
65
+ * the environment fallback cannot leak into flag parsing, only into flag
66
+ * absence, which is where it belongs.
67
67
  */
68
68
  export declare function resolveWaitLockSeconds(value: string | number | boolean | undefined): number | undefined;
69
69
  /**
70
- * The session-wide wait budget in MILLISECONDS, or undefined when none is
70
+ * The session-wide wait budget in milliseconds, or undefined when none is
71
71
  * set. Sourced from {@link WAIT_LOCK_ENV_VAR} only.
72
72
  *
73
- * Exists for the SECONDARY locks a command takes after the one its
73
+ * Exists for the secondary locks a command takes after the one its
74
74
  * `--wait-lock` flag was threaded to. A furnace mutation takes the engine
75
- * session lock and then `.fireforge/furnace.lock`; only the first had a
75
+ * session lock and then `.fireforge/furnace.lock`. Only the first had a
76
76
  * budget, so a contended deploy died on the file lock's fixed 30 s while
77
77
  * its operator believed a much larger budget was in force. Threading the
78
- * flag reaches the three furnace commands that declare it — this reaches
78
+ * flag reaches the three furnace commands that declare it. This reaches
79
79
  * the twelve that do not (`create`, `remove`, `rename`, `refresh`, `scan`,
80
80
  * `override`, `chrome-doc`, …), which have no flag to thread but are just
81
81
  * as contended.
82
82
  *
83
- * Deliberately env-only: a flag belongs to one invocation and is passed
83
+ * Env-only: a flag belongs to one invocation and is passed
84
84
  * explicitly where it applies, while the environment is exactly the place a
85
85
  * session-wide default is expressed. An explicit budget at a call site
86
86
  * always wins over this.
@@ -98,12 +98,12 @@ export declare function ensureWaitLockOptionEverywhere(command: Command): void;
98
98
  * Registers the shared `--wait-lock [seconds]` flag on a lock-taking
99
99
  * command (the engine session lock for engine-mutating commands, the patch
100
100
  * directory lock for queue-mutating ones). The parsed option value is `true`
101
- * for the bare flag or a validated integer; feed it through
101
+ * for the bare flag or a validated integer. Feed it through
102
102
  * {@link resolveWaitLockSeconds} at the call site to obtain the
103
103
  * `waitLockSeconds` for `withEngineSessionLock`/`withPatchDirectoryLock`.
104
104
  *
105
- * A command can take MORE than one lock — a furnace mutation takes the
106
- * engine session lock and then `.fireforge/furnace.lock` — and the budget
105
+ * A command can take more than one lock (a furnace mutation takes the
106
+ * engine session lock and then `.fireforge/furnace.lock`) and the budget
107
107
  * has to reach all of them or the flag is a half-truth. The secondary locks
108
108
  * read the session budget through {@link sessionWaitLockMs} rather than
109
109
  * having it threaded to every call site.
@@ -3,14 +3,14 @@ import { GeneralError, InvalidArgumentError } from '../errors/base.js';
3
3
  import { toError } from './errors.js';
4
4
  /**
5
5
  * Filters an object to only include keys whose values are not undefined.
6
- * Designed for use with exactOptionalPropertyTypes — the result can be
6
+ * Designed for use with exactOptionalPropertyTypes: the result can be
7
7
  * spread into typed option objects without assigning undefined to optional
8
8
  * properties.
9
9
  *
10
10
  * Constrained to `object`, not `Record<string, unknown>`: a named interface
11
11
  * has no index signature, so the narrower constraint rejects exactly the
12
12
  * annotations this helper is most useful with. Nothing in the body needs the
13
- * index signature — the key walk goes through `Object.keys`.
13
+ * index signature, since the key walk goes through `Object.keys`.
14
14
  *
15
15
  * @param obj - Object to filter
16
16
  * @returns The same object with every `undefined`-valued key removed
@@ -29,7 +29,7 @@ export function pickDefined(obj) {
29
29
  * commander's own invalid-argument channel.
30
30
  *
31
31
  * Commander only treats errors whose `code` is `'commander.invalidArgument'`
32
- * as argument-validation failures; anything else re-throws out of
32
+ * as argument-validation failures. Anything else re-throws out of
33
33
  * `parseAsync`, BYPASSING `withErrorHandling` entirely and landing in the
34
34
  * bin's `main().catch` as an unformatted `Fatal error: …` dump with exit 1.
35
35
  * That covers a plain Error, a `GeneralError`, and even a FireForge
@@ -87,12 +87,12 @@ function parseWaitLockSeconds(raw) {
87
87
  * The standing wait budget from {@link WAIT_LOCK_ENV_VAR}, or undefined when
88
88
  * it is unset or empty.
89
89
  *
90
- * Exists because a wait budget is a property of the SESSION, not of the
90
+ * Exists because a wait budget is a property of the session, not of the
91
91
  * invocation: a checkout worked by several concurrent agent sessions has a
92
92
  * held lock as its normal state, and an unattended loop would otherwise have
93
- * to thread `--wait-lock` through every command it issues — the one place
94
- * it is easiest to forget, and the failure only shows up once the loop has
95
- * already produced a tail of refusals.
93
+ * to thread `--wait-lock` through every command it issues. That is the one
94
+ * place it is easiest to forget, and the failure only shows up once the loop
95
+ * has already produced a tail of refusals.
96
96
  *
97
97
  * An unusable value is a usage error rather than a silent fall-back to
98
98
  * fail-fast: the operator set it precisely because they did not want to
@@ -124,8 +124,8 @@ function waitLockSecondsFromEnv() {
124
124
  * Accepts the raw string too, so it doubles as the option's arg parser (wrap
125
125
  * with {@link commanderArgParser} so failures surface through commander's
126
126
  * invalid-argument channel). In that role the value is never `undefined`, so
127
- * the environment fallback cannot leak into flag PARSING — only into flag
128
- * ABSENCE, which is where it belongs.
127
+ * the environment fallback cannot leak into flag parsing, only into flag
128
+ * absence, which is where it belongs.
129
129
  */
130
130
  export function resolveWaitLockSeconds(value) {
131
131
  if (value === undefined || value === false) {
@@ -144,20 +144,20 @@ export function resolveWaitLockSeconds(value) {
144
144
  return parsed;
145
145
  }
146
146
  /**
147
- * The session-wide wait budget in MILLISECONDS, or undefined when none is
147
+ * The session-wide wait budget in milliseconds, or undefined when none is
148
148
  * set. Sourced from {@link WAIT_LOCK_ENV_VAR} only.
149
149
  *
150
- * Exists for the SECONDARY locks a command takes after the one its
150
+ * Exists for the secondary locks a command takes after the one its
151
151
  * `--wait-lock` flag was threaded to. A furnace mutation takes the engine
152
- * session lock and then `.fireforge/furnace.lock`; only the first had a
152
+ * session lock and then `.fireforge/furnace.lock`. Only the first had a
153
153
  * budget, so a contended deploy died on the file lock's fixed 30 s while
154
154
  * its operator believed a much larger budget was in force. Threading the
155
- * flag reaches the three furnace commands that declare it — this reaches
155
+ * flag reaches the three furnace commands that declare it. This reaches
156
156
  * the twelve that do not (`create`, `remove`, `rename`, `refresh`, `scan`,
157
157
  * `override`, `chrome-doc`, …), which have no flag to thread but are just
158
158
  * as contended.
159
159
  *
160
- * Deliberately env-only: a flag belongs to one invocation and is passed
160
+ * Env-only: a flag belongs to one invocation and is passed
161
161
  * explicitly where it applies, while the environment is exactly the place a
162
162
  * session-wide default is expressed. An explicit budget at a call site
163
163
  * always wins over this.
@@ -169,12 +169,12 @@ export function sessionWaitLockMs() {
169
169
  return seconds === undefined ? undefined : seconds * 1000;
170
170
  }
171
171
  /**
172
- * Registers `--wait-lock [seconds]` on a command that takes NO lock, so a
172
+ * Registers `--wait-lock [seconds]` on a command that takes no lock, so a
173
173
  * scripted sequence can blanket-append the flag without hitting a usage
174
- * error — a command that rejects it with "unknown option" kills the whole
174
+ * error. A command that rejects it with "unknown option" kills the whole
175
175
  * sequence with a usage error instead of a lock message.
176
176
  *
177
- * The flag is accepted and ignored here — never silently repurposed — and
177
+ * The flag is accepted and ignored here, never silently repurposed, and
178
178
  * the help text says so, so nobody reads its presence as evidence that this
179
179
  * command waits for anything.
180
180
  *
@@ -209,12 +209,12 @@ export function ensureWaitLockOptionEverywhere(command) {
209
209
  * Registers the shared `--wait-lock [seconds]` flag on a lock-taking
210
210
  * command (the engine session lock for engine-mutating commands, the patch
211
211
  * directory lock for queue-mutating ones). The parsed option value is `true`
212
- * for the bare flag or a validated integer; feed it through
212
+ * for the bare flag or a validated integer. Feed it through
213
213
  * {@link resolveWaitLockSeconds} at the call site to obtain the
214
214
  * `waitLockSeconds` for `withEngineSessionLock`/`withPatchDirectoryLock`.
215
215
  *
216
- * A command can take MORE than one lock — a furnace mutation takes the
217
- * engine session lock and then `.fireforge/furnace.lock` — and the budget
216
+ * A command can take more than one lock (a furnace mutation takes the
217
+ * engine session lock and then `.fireforge/furnace.lock`) and the budget
218
218
  * has to reach all of them or the flag is a half-truth. The secondary locks
219
219
  * read the session budget through {@link sessionWaitLockMs} rather than
220
220
  * having it threaded to every call site.
@@ -36,8 +36,8 @@ export function getPackageRoot() {
36
36
  }
37
37
  }
38
38
  catch (error) {
39
- // Absent package.json: keep walking. A package.json that EXISTS but
40
- // fails to parse is a different animal — walking past it could bind
39
+ // Absent package.json: keep walking. A package.json that exists but
40
+ // fails to parse is a different case: walking past it could bind
41
41
  // to a wrong ancestor package (any parent exposing bin.fireforge) or
42
42
  // end in the unhelpful generic "could not locate" error, hiding the
43
43
  // actual syntax problem.
@@ -7,13 +7,13 @@ export declare function normalizePathSlashes(path: string): string;
7
7
  * (`browser/base/content/foo.js`).
8
8
  *
9
9
  * The match is case-insensitive because default macOS and Windows
10
- * filesystems treat `Engine/` and `engine/` as the same directory; a literal
11
- * lowercase-only check leaves `mach` and the manifest writers resolving
12
- * against a wrongly-cased prefix. Leading whitespace is ignored so
10
+ * filesystems treat `Engine/` and `engine/` as the same directory. A
11
+ * literal lowercase-only check leaves `mach` and the manifest writers
12
+ * resolving against a wrongly-cased prefix. Leading whitespace is ignored so
13
13
  * tab-completed inputs do not slip past the strip.
14
14
  *
15
15
  * The return value is trimmed of that leading whitespace when the prefix
16
- * matched, and otherwise passed through verbatim — callers that care about
16
+ * matched, and otherwise passed through verbatim. Callers that care about
17
17
  * internal whitespace can trim on their side.
18
18
  *
19
19
  * @param filePath Path as provided by the user
@@ -21,13 +21,13 @@ export function normalizePathSlashes(path) {
21
21
  * (`browser/base/content/foo.js`).
22
22
  *
23
23
  * The match is case-insensitive because default macOS and Windows
24
- * filesystems treat `Engine/` and `engine/` as the same directory; a literal
25
- * lowercase-only check leaves `mach` and the manifest writers resolving
26
- * against a wrongly-cased prefix. Leading whitespace is ignored so
24
+ * filesystems treat `Engine/` and `engine/` as the same directory. A
25
+ * literal lowercase-only check leaves `mach` and the manifest writers
26
+ * resolving against a wrongly-cased prefix. Leading whitespace is ignored so
27
27
  * tab-completed inputs do not slip past the strip.
28
28
  *
29
29
  * The return value is trimmed of that leading whitespace when the prefix
30
- * matched, and otherwise passed through verbatim — callers that care about
30
+ * matched, and otherwise passed through verbatim. Callers that care about
31
31
  * internal whitespace can trim on their side.
32
32
  *
33
33
  * @param filePath Path as provided by the user
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * Process-group kill and post-run sweep helpers for the exec layer. Split
3
- * out of `process.ts` to keep that file within the per-file line budget;
4
- * deliberately spawn-based (not `exec`-based) so the two modules do not
5
- * import each other cyclically.
3
+ * out of `process.ts` to keep that file within the per-file line budget.
4
+ * Spawn-based rather than `exec`-based so the two modules do not import
5
+ * each other cyclically.
6
6
  */
7
7
  import { type ChildProcess } from 'node:child_process';
8
8
  /**
9
- * Sends `signal` to the child's whole tree: the process GROUP on POSIX
10
- * (negative-PID kill — reaches mach → python → firefox → content-process
11
- * chains), or a `taskkill /T /F` tree kill plus a direct `child.kill`
12
- * fallback on Windows. No-ops once the direct child has exited (group
9
+ * Sends `signal` to the child's whole tree: the process group on POSIX
10
+ * (negative-PID kill, which reaches mach → python → firefox →
11
+ * content-process chains), or a `taskkill /T /F` tree kill plus a direct
12
+ * `child.kill` fallback on Windows. No-ops once the direct child has exited (group
13
13
  * survivors after exit are the post-run sweep's job, not this function's).
14
14
  *
15
15
  * A failed group kill falls through to a direct `child.kill` on POSIX too:
@@ -30,7 +30,7 @@ interface ProcessGroupSurvivor {
30
30
  * the PID of a child started with `detached: true`): lists survivors,
31
31
  * SIGTERMs the group, waits a short grace, escalates to SIGKILL, and warns
32
32
  * about anything that still refuses to die. POSIX only (no-op on win32).
33
- * The only kill target is `-pgid` — never anything outside the group.
33
+ * The only kill target is `-pgid`, never anything outside the group.
34
34
  * A healthy run costs exactly one `pgrep`.
35
35
  */
36
36
  export declare function sweepProcessGroup(pgid: number, graceMs?: number): Promise<{
@@ -1,19 +1,19 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
3
  * Process-group kill and post-run sweep helpers for the exec layer. Split
4
- * out of `process.ts` to keep that file within the per-file line budget;
5
- * deliberately spawn-based (not `exec`-based) so the two modules do not
6
- * import each other cyclically.
4
+ * out of `process.ts` to keep that file within the per-file line budget.
5
+ * Spawn-based rather than `exec`-based so the two modules do not import
6
+ * each other cyclically.
7
7
  */
8
8
  import { spawn } from 'node:child_process';
9
9
  import { getNodeErrorCode } from './errors.js';
10
10
  import { verbose, warn } from './logger.js';
11
11
  import { sleep } from './sleep.js';
12
12
  /**
13
- * Sends `signal` to the child's whole tree: the process GROUP on POSIX
14
- * (negative-PID kill — reaches mach → python → firefox → content-process
15
- * chains), or a `taskkill /T /F` tree kill plus a direct `child.kill`
16
- * fallback on Windows. No-ops once the direct child has exited (group
13
+ * Sends `signal` to the child's whole tree: the process group on POSIX
14
+ * (negative-PID kill, which reaches mach → python → firefox →
15
+ * content-process chains), or a `taskkill /T /F` tree kill plus a direct
16
+ * `child.kill` fallback on Windows. No-ops once the direct child has exited (group
17
17
  * survivors after exit are the post-run sweep's job, not this function's).
18
18
  *
19
19
  * A failed group kill falls through to a direct `child.kill` on POSIX too:
@@ -38,19 +38,19 @@ export function killProcessTree(child, signal, usesProcessGroup) {
38
38
  catch {
39
39
  // ESRCH/EPERM: the group is gone, or was never created because the
40
40
  // platform ignored `detached`. Signal the direct child rather than
41
- // doing nothing — it may well still be alive. Without this
41
+ // doing nothing, since it may well still be alive. Without this
42
42
  // fall-through a failed group kill left the child running.
43
43
  child.kill(signal);
44
44
  }
45
45
  }
46
46
  else {
47
- // No process group on Windows — taskkill /T walks the descendant
47
+ // No process group on Windows, so taskkill /T walks the descendant
48
48
  // tree instead. Always forced (/F): there is no SIGTERM analogue,
49
49
  // so the grace window only exists on POSIX.
50
50
  spawn('taskkill', ['/pid', String(targetPid), '/T', '/F'], {
51
51
  stdio: 'ignore',
52
52
  }).on('error', () => {
53
- // taskkill unavailable — nothing more we can do beyond the
53
+ // taskkill unavailable, so nothing more we can do beyond the
54
54
  // direct-child kill below.
55
55
  });
56
56
  child.kill(signal);
@@ -104,10 +104,10 @@ async function listGroupSurvivors(pgid) {
104
104
  return [{ pid: -1, command: 'unknown (pgrep unavailable; group still has live members)' }];
105
105
  }
106
106
  catch (error) {
107
- // Same errno semantics as `isProcessAlive` (which cannot be called here —
108
- // it probes a single positive pid): only ESRCH proves the group is gone.
109
- // EPERM means it exists under another uid, and an unrecognized failure is
110
- // not evidence of absence — report survivors in both cases.
107
+ // Same errno semantics as `isProcessAlive` (which cannot be called here,
108
+ // since it probes a single positive pid): only ESRCH proves the group is
109
+ // gone. EPERM means it exists under another uid, and an unrecognized
110
+ // failure is not evidence of absence, so report survivors in both cases.
111
111
  if (getNodeErrorCode(error) === 'ESRCH')
112
112
  return [];
113
113
  return [{ pid: -1, command: 'unknown (pgrep unavailable; group liveness probe denied)' }];
@@ -128,7 +128,7 @@ function describeSurvivors(list) {
128
128
  * the PID of a child started with `detached: true`): lists survivors,
129
129
  * SIGTERMs the group, waits a short grace, escalates to SIGKILL, and warns
130
130
  * about anything that still refuses to die. POSIX only (no-op on win32).
131
- * The only kill target is `-pgid` — never anything outside the group.
131
+ * The only kill target is `-pgid`, never anything outside the group.
132
132
  * A healthy run costs exactly one `pgrep`.
133
133
  */
134
134
  export async function sweepProcessGroup(pgid, graceMs = SWEEP_GRACE_MS) {
@@ -143,11 +143,11 @@ export async function sweepProcessGroup(pgid, graceMs = SWEEP_GRACE_MS) {
143
143
  process.kill(-pgid, 'SIGTERM');
144
144
  }
145
145
  catch {
146
- // The group vanished between the listing and the signal — nothing left to
147
- // escalate against, so report the survivors collected so far.
146
+ // The group vanished between the listing and the signal, so there is
147
+ // nothing left to escalate against. Report the survivors collected so far.
148
148
  return { survivors };
149
149
  }
150
- // Deliberately ref'd (sleep's default): this wait sits between the group
150
+ // Ref'd (sleep's default): this wait sits between the group
151
151
  // SIGTERM and the post-grace re-list/SIGKILL escalation, awaited from a
152
152
  // child 'close' handler after the signal forwarder is disposed. With an
153
153
  // unref'd timer nothing keeps the event loop alive, so Node could exit
@@ -164,7 +164,7 @@ export async function sweepProcessGroup(pgid, graceMs = SWEEP_GRACE_MS) {
164
164
  // nothing to signal.
165
165
  return { survivors };
166
166
  }
167
- // Deliberately ref'd (sleep's default): this wait sits between the group
167
+ // Ref'd (sleep's default): this wait sits between the group
168
168
  // SIGTERM and the post-grace re-list/SIGKILL escalation, awaited from a
169
169
  // child 'close' handler after the signal forwarder is disposed. With an
170
170
  // unref'd timer nothing keeps the event loop alive, so Node could exit