@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
@@ -4,34 +4,34 @@
4
4
  * into the recorded `testPackagingCoverage` instead of replacing it, under
5
5
  * an anchor guard.
6
6
  *
7
- * Coverage REPLACES by default for a reason documented in
7
+ * Coverage replaces by default for a reason documented in
8
8
  * `build-baseline-types.ts`: every baseline write refreshes
9
- * `packageableFingerprints` for ALL dirty packageable paths, so a blind
9
+ * `packageableFingerprints` for all dirty packageable paths, so a blind
10
10
  * union would whitewash an earlier scope's edited fixtures while
11
11
  * `obj-*`/`_tests/` still holds that scope's stale staging. Extending is
12
- * honest only while everything the PREVIOUS record vouched for is still
12
+ * honest only while everything the previous record vouched for is still
13
13
  * true, which is what {@link checkExtendCoverageAnchor} and
14
14
  * {@link checkExtendMozconfigAnchor} verify:
15
15
  *
16
- * 1. engine HEAD is unchanged — every committed edit is excluded;
16
+ * 1. engine HEAD is unchanged, so every committed edit is excluded.
17
17
  * 2. every path the previous baseline fingerprinted still hashes to the
18
18
  * recorded digest, so the earlier scope's staging inputs are
19
- * byte-identical. Files that became dirty SINCE that build are fine:
19
+ * byte-identical. Files that became dirty since that build are fine:
20
20
  * the current whole-tree `mach build faster` repackages `dist/` and
21
- * vouches for them;
21
+ * vouches for them.
22
22
  * 3. the generated `engine/mozconfig` is unchanged. Engine HEAD does not
23
- * cover this — the mozconfig is regenerated from project-side
23
+ * cover this: the mozconfig is regenerated from project-side
24
24
  * `configs/*.mozconfig` templates plus `fireforge.json` on every build,
25
25
  * so two builds at the same engine SHA can configure differently.
26
26
  *
27
- * Every failure refuses fail-closed; the operator's remedy is always a plain
27
+ * Every failure refuses fail-closed. The operator's remedy is always a plain
28
28
  * scoped build, which resets the claim to the paths it actually vouches for.
29
29
  *
30
- * Known boundary, documented rather than closed: dirty NON-packageable
30
+ * Known boundary, documented rather than closed: dirty non-packageable
31
31
  * fixtures under previously covered paths (plain test files, manifests
32
32
  * `isPackageablePath` rejects) are invisible to check 2. Editing one
33
33
  * uncommitted between two builds leaves the earlier scope's `_tests/`
34
- * staging stale while extend still vouches for it. Plain REPLACE has no such
34
+ * staging stale while extend still vouches for it. Plain replacement has no such
35
35
  * window, because the earlier scope simply stops being covered.
36
36
  */
37
37
  import { readFile } from 'node:fs/promises';
@@ -88,10 +88,10 @@ export async function checkExtendCoverageAnchor(engineDir, previousBaseline) {
88
88
  }
89
89
  /**
90
90
  * Verifies the mozconfig half of the anchor. Split from
91
- * {@link checkExtendCoverageAnchor} because it can only run AFTER
92
- * `prepareBuildEnvironment` regenerates `engine/mozconfig` — that file is
93
- * the one this build will configure with — and must still run BEFORE mach,
94
- * so a refusal costs no build time.
91
+ * {@link checkExtendCoverageAnchor} because it can only run after
92
+ * `prepareBuildEnvironment` regenerates `engine/mozconfig` (the file this
93
+ * build will configure with), and must still run before mach, so a refusal
94
+ * costs no build time.
95
95
  * @param engineDir - Path to the engine directory
96
96
  * @param previousBaseline - Baseline recorded by the previous build
97
97
  */
@@ -108,7 +108,7 @@ export async function checkExtendMozconfigAnchor(engineDir, previousBaseline) {
108
108
  }
109
109
  /**
110
110
  * Unions the newly built paths onto the recorded claim. A `'full'` claim, or
111
- * an absent one (which means full), stays `'full'` — it already covers
111
+ * an absent one (which means full), stays `'full'`, since it already covers
112
112
  * everything.
113
113
  *
114
114
  * @param previous - Coverage recorded by the previous build
@@ -161,7 +161,7 @@ function formatDivergedPaths(paths) {
161
161
  /**
162
162
  * Hex-encoded SHA-256 of an engine-relative file, matching the digest the
163
163
  * baseline writer produces. `undefined` on any IO error, which every caller
164
- * treats as "cannot prove unchanged" — i.e. a refusal.
164
+ * treats as "cannot prove unchanged", i.e. a refusal.
165
165
  * @param engineDir - Path to the engine directory
166
166
  * @param relPath - Engine-relative POSIX path
167
167
  */
@@ -17,7 +17,7 @@ export declare const HISTORY_LOG_FILENAME = ".fireforge-history.jsonl";
17
17
  * A structural conflict that must block the operation even under `--force`.
18
18
  *
19
19
  * Intended for cases like "reorder would introduce a forward-import" or
20
- * "delete would orphan a later patch's import" — situations where the
20
+ * "delete would orphan a later patch's import", situations where the
21
21
  * operator almost certainly wants a different fix (re-export --files, etc.)
22
22
  * rather than a bypass. `--force-unsafe` is the escape hatch when the
23
23
  * operator genuinely accepts the risk.
@@ -35,9 +35,9 @@ export interface DestructiveOpInput {
35
35
  /** Short one-line title shown in the prompt. */
36
36
  title: string;
37
37
  /**
38
- * Detailed change summary — every affected patch, file, or renumber row.
39
- * Generic "proceed? [y/N]" is insufficient per the destructive-op contract;
40
- * callers must list every concrete change here.
38
+ * Detailed change summary: every affected patch, file, or renumber row.
39
+ * Generic "proceed? [y/N]" is insufficient per the destructive-op
40
+ * contract. Callers must list every concrete change here.
41
41
  */
42
42
  summary: string[];
43
43
  /** Whether the caller passed `--yes`. */
@@ -52,9 +52,9 @@ export interface DestructiveOpInput {
52
52
  /**
53
53
  * Outcome of the destructive-operation contract.
54
54
  *
55
- * `'declined'` means the operator answered "no" — a successful run that
55
+ * `'declined'` means the operator answered "no", a successful run that
56
56
  * chose not to proceed, so callers return normally and the process exits 0.
57
- * An INTERRUPT (Esc / Ctrl+C) is not represented here: it throws
57
+ * An interrupt (Esc / Ctrl+C) is not represented here: it throws
58
58
  * {@link CancellationError} and exits 130. Collapsing the two would make an
59
59
  * interrupted prompt indistinguishable from a declined one.
60
60
  */
@@ -73,11 +73,11 @@ export interface HistoryEntry {
73
73
  yes?: boolean;
74
74
  /** True if `--force-unsafe` was used. */
75
75
  unsafeOverride?: boolean;
76
- /** Result: `'ok'` on success; other strings describe failure. */
76
+ /** Result: `'ok'` on success. Other strings describe failure. */
77
77
  result: string;
78
78
  }
79
79
  /**
80
- * True when BOTH standard handles are real TTYs, i.e. an interactive prompt
80
+ * True when both standard handles are real TTYs, i.e. an interactive prompt
81
81
  * can actually be answered.
82
82
  *
83
83
  * Named for the condition rather than for confirmation specifically: many
@@ -87,16 +87,16 @@ export interface HistoryEntry {
87
87
  * Node types `isTTY` as `boolean`, but at runtime it is `true | undefined`
88
88
  * (absent when the handle is not a TTY). Unusual harnesses (vitest stdio
89
89
  * capture, CI spawners, mocked pipes) can also leave it unset on only one
90
- * handle, so every falsy variant — false, undefined, a null-patched mock —
90
+ * handle, so every falsy variant (false, undefined, a null-patched mock)
91
91
  * must route to the non-interactive path.
92
92
  */
93
93
  export declare function stdioIsInteractive(): boolean;
94
94
  /**
95
- * UP-FRONT non-interactive refusal for a command that will end at
95
+ * Up-front non-interactive refusal for a command that will end at
96
96
  * {@link confirmDestructive}.
97
97
  *
98
98
  * `confirmDestructive` already refuses a prompt-less run rather than
99
- * proceeding silently — but it does so at the END, after the command has
99
+ * proceeding silently, but it does so at the end, after the command has
100
100
  * built diffs and run projected per-patch lint. On `patch move-files
101
101
  * --create` that is minutes of work before a scripted run learns it needed
102
102
  * `--yes`, and the failure reads as an obscure late error rather than a
@@ -117,7 +117,7 @@ export declare function assertConfirmationAvailable(operation: string, options:
117
117
  * Executes the destructive-operation contract: summary → conflict refusal →
118
118
  * dry-run / force / prompt / non-TTY refusal.
119
119
  *
120
- * Returns the decision for the caller to act on; callers must not execute
120
+ * Returns the decision for the caller to act on. Callers must not execute
121
121
  * the mutation when the result is `'dry-run'` or `'declined'`, and must call
122
122
  * {@link appendHistory} only after the mutation succeeds (never on dry-run
123
123
  * or decline).
@@ -132,8 +132,8 @@ export declare function confirmDestructive(input: DestructiveOpInput): Promise<D
132
132
  *
133
133
  * Call order matters: append only after the mutation succeeds, never
134
134
  * pre-emptively, so rolled-back failures do not leave ghost entries. The log
135
- * is append-only and advisory — no code path reads it back; it exists purely
136
- * so operators have a post-hoc audit trail when something goes wrong.
135
+ * is append-only and advisory: no code path reads it back. It exists so
136
+ * operators have a post-hoc audit trail when something goes wrong.
137
137
  *
138
138
  * @param patchesDir - Path to the patches directory
139
139
  * @param entry - Serializable history record
@@ -40,7 +40,7 @@ function printConflicts(conflicts) {
40
40
  }
41
41
  }
42
42
  /**
43
- * True when BOTH standard handles are real TTYs, i.e. an interactive prompt
43
+ * True when both standard handles are real TTYs, i.e. an interactive prompt
44
44
  * can actually be answered.
45
45
  *
46
46
  * Named for the condition rather than for confirmation specifically: many
@@ -50,7 +50,7 @@ function printConflicts(conflicts) {
50
50
  * Node types `isTTY` as `boolean`, but at runtime it is `true | undefined`
51
51
  * (absent when the handle is not a TTY). Unusual harnesses (vitest stdio
52
52
  * capture, CI spawners, mocked pipes) can also leave it unset on only one
53
- * handle, so every falsy variant — false, undefined, a null-patched mock —
53
+ * handle, so every falsy variant (false, undefined, a null-patched mock)
54
54
  * must route to the non-interactive path.
55
55
  */
56
56
  export function stdioIsInteractive() {
@@ -59,11 +59,11 @@ export function stdioIsInteractive() {
59
59
  return stdinIsTTY === true && stdoutIsTTY === true;
60
60
  }
61
61
  /**
62
- * UP-FRONT non-interactive refusal for a command that will end at
62
+ * Up-front non-interactive refusal for a command that will end at
63
63
  * {@link confirmDestructive}.
64
64
  *
65
65
  * `confirmDestructive` already refuses a prompt-less run rather than
66
- * proceeding silently — but it does so at the END, after the command has
66
+ * proceeding silently, but it does so at the end, after the command has
67
67
  * built diffs and run projected per-patch lint. On `patch move-files
68
68
  * --create` that is minutes of work before a scripted run learns it needed
69
69
  * `--yes`, and the failure reads as an obscure late error rather than a
@@ -90,7 +90,7 @@ export function assertConfirmationAvailable(operation, options) {
90
90
  * Executes the destructive-operation contract: summary → conflict refusal →
91
91
  * dry-run / force / prompt / non-TTY refusal.
92
92
  *
93
- * Returns the decision for the caller to act on; callers must not execute
93
+ * Returns the decision for the caller to act on. Callers must not execute
94
94
  * the mutation when the result is `'dry-run'` or `'declined'`, and must call
95
95
  * {@link appendHistory} only after the mutation succeeds (never on dry-run
96
96
  * or decline).
@@ -146,8 +146,8 @@ export async function confirmDestructive(input) {
146
146
  message: `${title} — proceed?`,
147
147
  initialValue: false,
148
148
  });
149
- // An INTERRUPT and a "no" are different outcomes and must not share an
150
- // exit code. Esc / Ctrl+C is a real interrupt — 130 is 128+SIGINT and is
149
+ // An interrupt and a "no" are different outcomes and must not share an
150
+ // exit code. Esc / Ctrl+C is a real interrupt. 130 is 128+SIGINT and is
151
151
  // what a script needs to tell "the operator aborted" from "the operator
152
152
  // considered it and declined". Answering "no" is a successful run.
153
153
  //
@@ -165,8 +165,8 @@ export async function confirmDestructive(input) {
165
165
  *
166
166
  * Call order matters: append only after the mutation succeeds, never
167
167
  * pre-emptively, so rolled-back failures do not leave ghost entries. The log
168
- * is append-only and advisory — no code path reads it back; it exists purely
169
- * so operators have a post-hoc audit trail when something goes wrong.
168
+ * is append-only and advisory: no code path reads it back. It exists so
169
+ * operators have a post-hoc audit trail when something goes wrong.
170
170
  *
171
171
  * @param patchesDir - Path to the patches directory
172
172
  * @param entry - Serializable history record
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * An edit op produced by {@link computeLineDiff}. Indices are 0-based into the
3
- * source line arrays; `line` holds the verbatim text so callers do not have to
3
+ * source line arrays. `line` holds the verbatim text so callers do not have to
4
4
  * keep the input arrays around while rendering.
5
5
  */
6
6
  export interface LineDiffOp {
@@ -60,7 +60,7 @@ export declare function buildHunks(ops: readonly LineDiffOp[], context: number):
60
60
  /**
61
61
  * Computes a multi-hunk line diff between two strings. This is the public
62
62
  * entry point that {@link furnaceDiffCommand} uses. On normal inputs this
63
- * runs the exact LCS path and returns a proper multi-hunk diff; on inputs
63
+ * runs the exact LCS path and returns a proper multi-hunk diff. On inputs
64
64
  * that exceed {@link LCS_LINE_LIMIT} it falls back to a single coalesced
65
65
  * hunk so the command stays useful instead of OOMing.
66
66
  */
@@ -5,7 +5,7 @@ import { assert, expectDefined } from '../utils/assert.js';
5
5
  * O(m·n) diff and falling back to the simpler single-region coalesce. Chosen
6
6
  * so the worst-case Int32Array allocation stays under ~16 MB. Typical
7
7
  * Firefox widget files are a few hundred lines, so the fast path handles the
8
- * everyday case; the fallback keeps the command usable on a very large file.
8
+ * everyday case. The fallback keeps the command usable on a very large file.
9
9
  */
10
10
  const LCS_LINE_LIMIT = 2000;
11
11
  /** Splits a string on `\n`, discarding a single trailing empty line from a terminal newline. */
@@ -31,7 +31,7 @@ export function computeLineDiff(oldLines, newLines) {
31
31
  // The DP below indexes `dp`, `oldLines`, and `newLines` about 4·m·n times
32
32
  // for a worst-case pair, so its bounds are established once here rather
33
33
  // than re-checked per access. Callers gate on LCS_LINE_LIMIT before
34
- // reaching this function; if that gate is ever moved or removed, this is
34
+ // reaching this function. If that gate is ever moved or removed, this is
35
35
  // where the resulting allocation blow-up surfaces as a named failure
36
36
  // instead of an out-of-memory crash.
37
37
  assert(m <= LCS_LINE_LIMIT && n <= LCS_LINE_LIMIT, () => `line diff inputs are within LCS_LINE_LIMIT (got ${m}x${n}, limit ${LCS_LINE_LIMIT})`);
@@ -48,7 +48,7 @@ export function computeLineDiff(oldLines, newLines) {
48
48
  * above, so the non-null assertions encode a property already checked
49
49
  * once per call rather than one that is never checked at all. The
50
50
  * rendering loops further down, which run O(ops), use `expectDefined`
51
- * instead — this exemption is for the quadratic block only.
51
+ * instead. This exemption is for the quadratic block only.
52
52
  */
53
53
  for (let i = 1; i <= m; i++) {
54
54
  const oldLine = oldLines[i - 1];
@@ -184,8 +184,8 @@ export function buildHunks(ops, context) {
184
184
  * Fallback for inputs that exceed {@link LCS_LINE_LIMIT}. Reproduces the
185
185
  * original single-region coalesce: match the common prefix and suffix, then
186
186
  * emit one hunk containing the middle region plus `context` lines on each
187
- * side. Intentionally dumb — the fast path handles normal files, and this
188
- * only keeps the command usable on pathologically large inputs without
187
+ * side. Kept simple on purpose: the fast path handles normal files, and
188
+ * this only keeps the command usable on pathologically large inputs without
189
189
  * allocating a huge DP table.
190
190
  */
191
191
  function coalescedHunk(oldLines, newLines, context) {
@@ -218,7 +218,7 @@ function coalescedHunk(oldLines, newLines, context) {
218
218
  for (let k = firstDiff; k <= lastNewDiff; k++) {
219
219
  hunkLines.push({ marker: '+', content: expectDefined(newLines[k], () => `new line ${k}`) });
220
220
  }
221
- // Trailing context comes from the common suffix, which lives at DIFFERENT
221
+ // Trailing context comes from the common suffix, which lives at different
222
222
  // indices on each side (lastOldDiff+1… vs lastNewDiff+1…). Mixing the two
223
223
  // coordinate spaces emits wrong context on asymmetric edits and drops the
224
224
  // trailing lines from the @@ header lengths, so the rendered header
@@ -245,7 +245,7 @@ function coalescedHunk(oldLines, newLines, context) {
245
245
  /**
246
246
  * Computes a multi-hunk line diff between two strings. This is the public
247
247
  * entry point that {@link furnaceDiffCommand} uses. On normal inputs this
248
- * runs the exact LCS path and returns a proper multi-hunk diff; on inputs
248
+ * runs the exact LCS path and returns a proper multi-hunk diff. On inputs
249
249
  * that exceed {@link LCS_LINE_LIMIT} it falls back to a single coalesced
250
250
  * hunk so the command stays useful instead of OOMing.
251
251
  */
@@ -2,15 +2,15 @@
2
2
  * Patch-aware restore planning for `fireforge discard`.
3
3
  *
4
4
  * The engine convention is: HEAD = pristine upstream Firefox, and the
5
- * applied patch queue lives as UNCOMMITTED worktree changes on top of it
5
+ * applied patch queue lives as uncommitted worktree changes on top of it
6
6
  * (`git apply` without `--index` → patch-edited tracked files are unstaged
7
7
  * modifications, patch-created files are untracked). A purely git-mechanical
8
- * discard — restore to HEAD, delete untracked files — therefore reverts
9
- * patch-backed files PAST their owning patch and deletes patch-created files
8
+ * discard (restore to HEAD, delete untracked files) therefore reverts
9
+ * patch-backed files past their owning patch and deletes patch-created files
10
10
  * outright.
11
11
  *
12
12
  * This module classifies each status entry against the patch manifest's
13
- * ownership claims and plans the correct restore target: the PATCH-APPLIED
13
+ * ownership claims and plans the correct restore target: the patch-applied
14
14
  * baseline (HEAD content folded through every affecting patch in order) for
15
15
  * claimed files, and the plain git mechanics for unmanaged ones.
16
16
  */
@@ -25,22 +25,22 @@ export interface DiscardBaselinePlan {
25
25
  owners: string[];
26
26
  /** True when more than one patch claims the path (ownership conflict). */
27
27
  conflicted: boolean;
28
- /** Baseline content for `entry.file`; null = absent at baseline. Unset for 'unmanaged'. */
28
+ /** Baseline content for `entry.file` (null = absent at baseline). Unset for 'unmanaged'. */
29
29
  expectedContent?: string | null;
30
30
  /** Rename/copy only: baseline content for `originalPath` when that side is claimed. */
31
31
  expectedOriginalContent?: string | null;
32
32
  }
33
- /** Builds an all-unmanaged plan set — the `--to-upstream` (legacy) shape. */
33
+ /** Builds an all-unmanaged plan set, the `--to-upstream` (legacy) shape. */
34
34
  export declare function planUpstreamDiscards(entries: readonly GitStatusEntry[]): DiscardBaselinePlan[];
35
35
  /**
36
36
  * Plans the restore target for each status entry. Entries claimed by the
37
- * patch manifest restore to the patch-applied baseline; unclaimed entries
37
+ * patch manifest restore to the patch-applied baseline. Unclaimed entries
38
38
  * keep the plain git mechanics. A missing patches dir or empty manifest
39
39
  * degrades every plan to `unmanaged`.
40
40
  *
41
- * A corrupt manifest or an unreconstructible patch baseline REFUSES with a
42
- * GeneralError naming `--to-upstream` — silently falling back to pristine
43
- * HEAD is exactly the data-loss path this module exists to close.
41
+ * A corrupt manifest or an unreconstructible patch baseline refuses with a
42
+ * GeneralError naming `--to-upstream`. Silently falling back to pristine
43
+ * HEAD is the data-loss path this module exists to close.
44
44
  */
45
45
  export declare function planDiscardBaselines(patchesDir: string, engineDir: string, entries: readonly GitStatusEntry[]): Promise<DiscardBaselinePlan[]>;
46
46
  /**
@@ -3,15 +3,15 @@
3
3
  * Patch-aware restore planning for `fireforge discard`.
4
4
  *
5
5
  * The engine convention is: HEAD = pristine upstream Firefox, and the
6
- * applied patch queue lives as UNCOMMITTED worktree changes on top of it
6
+ * applied patch queue lives as uncommitted worktree changes on top of it
7
7
  * (`git apply` without `--index` → patch-edited tracked files are unstaged
8
8
  * modifications, patch-created files are untracked). A purely git-mechanical
9
- * discard — restore to HEAD, delete untracked files — therefore reverts
10
- * patch-backed files PAST their owning patch and deletes patch-created files
9
+ * discard (restore to HEAD, delete untracked files) therefore reverts
10
+ * patch-backed files past their owning patch and deletes patch-created files
11
11
  * outright.
12
12
  *
13
13
  * This module classifies each status entry against the patch manifest's
14
- * ownership claims and plans the correct restore target: the PATCH-APPLIED
14
+ * ownership claims and plans the correct restore target: the patch-applied
15
15
  * baseline (HEAD content folded through every affecting patch in order) for
16
16
  * claimed files, and the plain git mechanics for unmanaged ones.
17
17
  */
@@ -24,19 +24,19 @@ import { createPatchedContentContext } from './patch-apply.js';
24
24
  import { loadPatchesManifestState } from './patch-manifest-io.js';
25
25
  import { parseDiffSections } from './patch-parse.js';
26
26
  import { buildPatchClaims } from './status-classify.js';
27
- /** Builds an all-unmanaged plan set — the `--to-upstream` (legacy) shape. */
27
+ /** Builds an all-unmanaged plan set, the `--to-upstream` (legacy) shape. */
28
28
  export function planUpstreamDiscards(entries) {
29
29
  return entries.map((entry) => ({ entry, kind: 'unmanaged', owners: [], conflicted: false }));
30
30
  }
31
31
  /**
32
32
  * Plans the restore target for each status entry. Entries claimed by the
33
- * patch manifest restore to the patch-applied baseline; unclaimed entries
33
+ * patch manifest restore to the patch-applied baseline. Unclaimed entries
34
34
  * keep the plain git mechanics. A missing patches dir or empty manifest
35
35
  * degrades every plan to `unmanaged`.
36
36
  *
37
- * A corrupt manifest or an unreconstructible patch baseline REFUSES with a
38
- * GeneralError naming `--to-upstream` — silently falling back to pristine
39
- * HEAD is exactly the data-loss path this module exists to close.
37
+ * A corrupt manifest or an unreconstructible patch baseline refuses with a
38
+ * GeneralError naming `--to-upstream`. Silently falling back to pristine
39
+ * HEAD is the data-loss path this module exists to close.
40
40
  */
41
41
  export async function planDiscardBaselines(patchesDir, engineDir, entries) {
42
42
  const state = await loadPatchesManifestState(patchesDir);
@@ -71,7 +71,7 @@ export async function planDiscardBaselines(patchesDir, engineDir, entries) {
71
71
  // `computePatchedContent` folds a deletion into an empty string (an
72
72
  // apply-to-content limitation), which is indistinguishable from a
73
73
  // legitimately empty file. Consult the owning patches' diff sections
74
- // directly: the LAST section (highest-ordered owner) naming the path
74
+ // directly: the last section (highest-ordered owner) naming the path
75
75
  // decides whether the baseline is "absent".
76
76
  const sectionCache = new Map();
77
77
  const isDeletedAtBaseline = async (path, owners) => {
@@ -86,11 +86,10 @@ export async function planDiscardBaselines(patchesDir, engineDir, entries) {
86
86
  }
87
87
  catch (error) {
88
88
  // Fail closed. Swallowing this yields no sections, which falls
89
- // through to `return false` — "not deleted at baseline" — so a path
90
- // the owning patch DELETES would be restored as present, i.e.
89
+ // through to `return false` ("not deleted at baseline"), so a
90
+ // path the owning patch deletes would be restored as present, i.e.
91
91
  // rewritten instead of removed: silent data loss on the command
92
- // whose header promises a refusal for exactly this class of
93
- // failure.
92
+ // whose header promises a refusal for this class of failure.
94
93
  //
95
94
  // `computeExpected` above reads the same patch first and refuses,
96
95
  // so this is defence-in-depth against a TOCTOU (the patch file
@@ -160,7 +159,7 @@ export async function applyDiscardBaseline(engineDir, plan) {
160
159
  }
161
160
  const { entry } = plan;
162
161
  // Drop any staged edits/adds/renames first so the rewritten content is a
163
- // plain worktree state (harmless when nothing is staged; skipped for
162
+ // plain worktree state (harmless when nothing is staged, and skipped for
164
163
  // purely-untracked entries which have no index footprint).
165
164
  if (!entry.isUntracked) {
166
165
  const indexPaths = entry.originalPath !== undefined ? [entry.file, entry.originalPath] : [entry.file];
@@ -172,7 +171,7 @@ export async function applyDiscardBaseline(engineDir, plan) {
172
171
  else {
173
172
  await writeText(join(engineDir, entry.file), plan.expectedContent);
174
173
  }
175
- // A rename/copy's original side restores to ITS baseline too: the patch
174
+ // A rename/copy's original side restores to its baseline too: the patch
176
175
  // baseline when claimed, else the legacy HEAD restore (matching what
177
176
  // discardStatusEntry does for that side).
178
177
  if (entry.originalPath !== undefined) {
@@ -3,15 +3,15 @@
3
3
  *
4
4
  * `TIMEOUT … application timed out after N seconds with no output` /
5
5
  * `Ran 0 checks` has three known causes, one of them purely environmental:
6
- * a HEADED run on an unattended machine whose display is asleep or locked.
6
+ * a headed run on an unattended machine whose display is asleep or locked.
7
7
  * A headed Firefox on a sleeping display never paints, never reaches its
8
- * first test, and dies at the no-output timeout — indistinguishable, from
9
- * the log alone, from a product hang.
8
+ * first test, and dies at the no-output timeout, which from the log alone
9
+ * is indistinguishable from a product hang.
10
10
  *
11
- * `caffeinate -disu` does not cure it. It PREVENTS sleep; it cannot WAKE a
12
- * display that is already asleep, so wrapping the run changes nothing once
13
- * the machine has dimmed. `fireforge test` defaults to headed, so an
14
- * unattended run walks straight into this.
11
+ * `caffeinate -disu` does not cure it. It prevents sleep, but it cannot
12
+ * wake a display that is already asleep, so wrapping the run changes
13
+ * nothing once the machine has dimmed. `fireforge test` defaults to
14
+ * headed, so an unattended run walks straight into this.
15
15
  *
16
16
  * The probe is advisory and fail-open: anything unexpected reports
17
17
  * `'unknown'` and the caller degrades to the generic triage list rather than
@@ -30,10 +30,10 @@ export type DisplaySleepState = 'asleep' | 'awake' | 'unknown';
30
30
  * ```
31
31
  *
32
32
  * Only the `IODisplayWrangler` row matters, and only its first numeric
33
- * column (the current power state). Any other shape — no such row, a
34
- * non-numeric column, an error message — is `'unknown'`, never a guess.
33
+ * column (the current power state). Any other shape (no such row, a
34
+ * non-numeric column, an error message) is `'unknown'`, never a guess.
35
35
  *
36
- * Pure; exported for direct unit testing.
36
+ * Pure. Exported for direct unit testing.
37
37
  *
38
38
  * @param stdout - Raw `pmset -g powerstate IODisplayWrangler` output
39
39
  * @returns The measured state, or `'unknown'`
@@ -41,7 +41,7 @@ export type DisplaySleepState = 'asleep' | 'awake' | 'unknown';
41
41
  export declare function parseDisplayPowerState(stdout: string): DisplaySleepState;
42
42
  /**
43
43
  * Probes the display's power state. Non-darwin platforms report `'unknown'`
44
- * without spawning anything — the stall shape this serves is macOS-specific
44
+ * without spawning anything: the stall shape this serves is macOS-specific
45
45
  * and no equivalent single-command probe is wired for other platforms.
46
46
  *
47
47
  * @param platform - `process.platform`-style id (injected for testability)
@@ -4,15 +4,15 @@
4
4
  *
5
5
  * `TIMEOUT … application timed out after N seconds with no output` /
6
6
  * `Ran 0 checks` has three known causes, one of them purely environmental:
7
- * a HEADED run on an unattended machine whose display is asleep or locked.
7
+ * a headed run on an unattended machine whose display is asleep or locked.
8
8
  * A headed Firefox on a sleeping display never paints, never reaches its
9
- * first test, and dies at the no-output timeout — indistinguishable, from
10
- * the log alone, from a product hang.
9
+ * first test, and dies at the no-output timeout, which from the log alone
10
+ * is indistinguishable from a product hang.
11
11
  *
12
- * `caffeinate -disu` does not cure it. It PREVENTS sleep; it cannot WAKE a
13
- * display that is already asleep, so wrapping the run changes nothing once
14
- * the machine has dimmed. `fireforge test` defaults to headed, so an
15
- * unattended run walks straight into this.
12
+ * `caffeinate -disu` does not cure it. It prevents sleep, but it cannot
13
+ * wake a display that is already asleep, so wrapping the run changes
14
+ * nothing once the machine has dimmed. `fireforge test` defaults to
15
+ * headed, so an unattended run walks straight into this.
16
16
  *
17
17
  * The probe is advisory and fail-open: anything unexpected reports
18
18
  * `'unknown'` and the caller degrades to the generic triage list rather than
@@ -25,7 +25,7 @@ import { exec } from '../utils/process.js';
25
25
  const DISPLAY_PROBE_TIMEOUT_MS = 5_000;
26
26
  /**
27
27
  * IOKit power state at which `IODisplayWrangler` is fully lit. Lower
28
- * states are dimmed or off; macOS reports 4 for a live display.
28
+ * states are dimmed or off. macOS reports 4 for a live display.
29
29
  */
30
30
  const DISPLAY_AWAKE_POWER_STATE = 4;
31
31
  /**
@@ -39,10 +39,10 @@ const DISPLAY_AWAKE_POWER_STATE = 4;
39
39
  * ```
40
40
  *
41
41
  * Only the `IODisplayWrangler` row matters, and only its first numeric
42
- * column (the current power state). Any other shape — no such row, a
43
- * non-numeric column, an error message — is `'unknown'`, never a guess.
42
+ * column (the current power state). Any other shape (no such row, a
43
+ * non-numeric column, an error message) is `'unknown'`, never a guess.
44
44
  *
45
- * Pure; exported for direct unit testing.
45
+ * Pure. Exported for direct unit testing.
46
46
  *
47
47
  * @param stdout - Raw `pmset -g powerstate IODisplayWrangler` output
48
48
  * @returns The measured state, or `'unknown'`
@@ -61,7 +61,7 @@ export function parseDisplayPowerState(stdout) {
61
61
  }
62
62
  /**
63
63
  * Probes the display's power state. Non-darwin platforms report `'unknown'`
64
- * without spawning anything — the stall shape this serves is macOS-specific
64
+ * without spawning anything: the stall shape this serves is macOS-specific
65
65
  * and no equivalent single-command probe is wired for other platforms.
66
66
  *
67
67
  * @param platform - `process.platform`-style id (injected for testability)
@@ -6,7 +6,7 @@
6
6
  import type { BuildBaseline } from './build-baseline-types.js';
7
7
  /**
8
8
  * Collects engine-relative paths changed since the baseline's HEAD SHA,
9
- * plus any workdir modifications (tracked and untracked). Defensive — git
9
+ * plus any workdir modifications (tracked and untracked). Defensive: git
10
10
  * failures surface as verbose lines and return the files collected so far,
11
11
  * so an empty result means "no drift we can prove" rather than "no drift
12
12
  * occurred". When the baseline is missing or the engine has no HEAD yet,
@@ -27,7 +27,7 @@ export declare function collectChangedEnginePaths(engineDir: string, baseline: B
27
27
  * full-build escalation in `build-prepare` (`buildInputFingerprints`).
28
28
  *
29
29
  * A path with no recorded entry, an unreadable file, or a differing hash
30
- * is kept — "cannot prove unchanged" must never turn into "unchanged".
30
+ * is kept, since "cannot prove unchanged" must never turn into "unchanged".
31
31
  * With no fingerprint set at all (a baseline written before the field
32
32
  * existed) every path is kept, which is the path-only comparison the
33
33
  * fingerprints refine.
@@ -12,7 +12,7 @@ import { git } from './git-base.js';
12
12
  import { getUntrackedFiles } from './git-status.js';
13
13
  /**
14
14
  * Collects engine-relative paths changed since the baseline's HEAD SHA,
15
- * plus any workdir modifications (tracked and untracked). Defensive — git
15
+ * plus any workdir modifications (tracked and untracked). Defensive: git
16
16
  * failures surface as verbose lines and return the files collected so far,
17
17
  * so an empty result means "no drift we can prove" rather than "no drift
18
18
  * occurred". When the baseline is missing or the engine has no HEAD yet,
@@ -67,7 +67,7 @@ export async function collectChangedEnginePaths(engineDir, baseline, contextLabe
67
67
  * full-build escalation in `build-prepare` (`buildInputFingerprints`).
68
68
  *
69
69
  * A path with no recorded entry, an unreadable file, or a differing hash
70
- * is kept — "cannot prove unchanged" must never turn into "unchanged".
70
+ * is kept, since "cannot prove unchanged" must never turn into "unchanged".
71
71
  * With no fingerprint set at all (a baseline written before the field
72
72
  * existed) every path is kept, which is the path-only comparison the
73
73
  * fingerprints refine.
@@ -14,13 +14,13 @@
14
14
  export interface EngineGitReadyOptions {
15
15
  /**
16
16
  * Appended to the unborn-HEAD remediation, e.g. `', then retry the rebase.'`
17
- * The base message deliberately ends WITHOUT punctuation so the suffix
18
- * reads as one sentence; callers that pass nothing get a plain full stop.
17
+ * The base message ends without punctuation on purpose so the suffix
18
+ * reads as one sentence. Callers that pass nothing get a plain full stop.
19
19
  */
20
20
  unbornHeadSuffix?: string;
21
21
  }
22
22
  /**
23
- * Asserts only that the engine checkout EXISTS.
23
+ * Asserts only that the engine checkout exists.
24
24
  *
25
25
  * The first rung of {@link assertEngineGitReady}. Most callers want exactly
26
26
  * this rung and no more: `build`, `run`, `test`, `package`, `watch`,
@@ -33,7 +33,7 @@ export interface EngineGitReadyOptions {
33
33
  export declare function assertEngineExists(engineDir: string): Promise<void>;
34
34
  /**
35
35
  * Asserts that `engineDir` exists, is a git repository, and has a baseline
36
- * commit — in that order, so the operator gets the most specific applicable
36
+ * commit, in that order, so the operator gets the most specific applicable
37
37
  * remediation rather than a downstream git error.
38
38
  *
39
39
  * @param engineDir - Absolute path to the engine checkout
@@ -21,7 +21,7 @@ const UNBORN_HEAD_REMEDIATION = 'Engine repository has no baseline commit yet
21
21
  // hardcoding one here rendered as "…cleanly., then retry the rebase."
22
22
  'Re-run "fireforge download --force" to recreate the baseline repository cleanly';
23
23
  /**
24
- * Asserts only that the engine checkout EXISTS.
24
+ * Asserts only that the engine checkout exists.
25
25
  *
26
26
  * The first rung of {@link assertEngineGitReady}. Most callers want exactly
27
27
  * this rung and no more: `build`, `run`, `test`, `package`, `watch`,
@@ -38,7 +38,7 @@ export async function assertEngineExists(engineDir) {
38
38
  }
39
39
  /**
40
40
  * Asserts that `engineDir` exists, is a git repository, and has a baseline
41
- * commit — in that order, so the operator gets the most specific applicable
41
+ * commit, in that order, so the operator gets the most specific applicable
42
42
  * remediation rather than a downstream git error.
43
43
  *
44
44
  * @param engineDir - Absolute path to the engine checkout