@hominis/fireforge 0.46.0 → 0.46.1

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 +9 -9
  498. package/dist/src/core/token-dark-mode.js +11 -11
  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
@@ -5,9 +5,9 @@
5
5
  * per-file LOC budget.
6
6
  *
7
7
  * Every helper here degrades gracefully: if the locale jar.mn is missing or
8
- * the FTL tree is non-standard, apply logs an ADVISORY `stepError`
8
+ * the FTL tree is non-standard, apply logs an advisory `stepError`
9
9
  * (`advisory: true`) rather than aborting the whole command. Advisory step
10
- * errors are reported as warnings and never trigger rollback — a missing
10
+ * errors are reported as warnings and never trigger rollback: a missing
11
11
  * jar.mn on a fork without a locale package must not block a working
12
12
  * `.mjs`/`.css` from shipping.
13
13
  */
@@ -44,12 +44,12 @@ function resolveSharedFtlPruneTarget(name, ftlDir) {
44
44
  *
45
45
  * A `localized: true` widget that opts into a feature-scoped `sharedFtl`
46
46
  * bundle (its strings live under `browser/...` and load via
47
- * `insertFTLIfNeeded`) must NOT carry a per-widget
47
+ * `insertFTLIfNeeded`) must not carry a per-widget
48
48
  * `locale/@AB_CD@/<chromeSubPath>/<name>.ftl` line. Such a line points at a
49
49
  * `.ftl` that does not exist, so `mach build` fails hard (`Cannot find
50
50
  * <chromeSubPath>/<name>.ftl`) and blocks every build.
51
51
  *
52
- * The pruned line is the per-widget toolkit entry only; the shared bundle's
52
+ * The pruned line is the per-widget toolkit entry only. The shared bundle's
53
53
  * own line (a different chrome sub-path / base name) is never matched, so
54
54
  * pruning one widget cannot orphan the shared bundle. Idempotent: when no
55
55
  * dangling entry exists the file is left untouched (no journal churn).
@@ -120,8 +120,8 @@ export async function describeSharedFtlPrune(ctx, config) {
120
120
  * in the locale jar.mn.
121
121
  *
122
122
  * Failure modes (missing jar.mn, regex write error) are captured as
123
- * stepErrors rather than thrown — a well-formed `.mjs`/`.css` must never be
124
- * blocked by a broken locale path.
123
+ * stepErrors rather than thrown, since a well-formed `.mjs`/`.css` must
124
+ * never be blocked by a broken locale path.
125
125
  */
126
126
  export async function applyCustomFtlFile(ctx, affectedPaths, stepErrors, rollbackJournal) {
127
127
  const { engineDir, name, componentDir, ftlDir } = ctx;
@@ -134,7 +134,7 @@ export async function applyCustomFtlFile(ctx, affectedPaths, stepErrors, rollbac
134
134
  await snapshotFile(rollbackJournal, ftlDest);
135
135
  }
136
136
  await copyFile(ftlSrc, ftlDest);
137
- // Sibling pushes on this list are POSIX literals (`localeJarRel`); keep
137
+ // Sibling pushes on this list are POSIX literals (`localeJarRel`). Keep
138
138
  // the computed one in the same spelling.
139
139
  affectedPaths.push(normalizePathSlashes(relative(engineDir, ftlDest)));
140
140
  const chromeSubPath = resolveFtlChromeSubPath(ftlDir);
@@ -185,7 +185,7 @@ export function describeLocaleFtlJarMnRegistration(name, ftlDir, ftlFile) {
185
185
  }
186
186
  /**
187
187
  * Drops the locale jar.mn entry for `fileName` when it's a `.ftl` whose
188
- * source workspace file has been deleted. Idempotent — absent entries are a
188
+ * source workspace file has been deleted. Idempotent: absent entries are a
189
189
  * no-op. Early-returns for `sharedFtl` components: the shared bundle is
190
190
  * owned elsewhere, and dropping its jar.mn line on our component's delete
191
191
  * would orphan every other participant.
@@ -3,7 +3,7 @@ import { type RollbackJournal } from './furnace-rollback.js';
3
3
  /**
4
4
  * Filter deciding which files in an override workspace directory are candidates
5
5
  * for copying into the engine. Exported so `furnace remove` can invert apply
6
- * using the exact same file set — the "files to restore" set is defined as the
6
+ * using the same file set: the "files to restore" set is defined as the
7
7
  * inverse of the "files apply would have written" set.
8
8
  */
9
9
  export declare function isOverrideCopyCandidate(entryName: string, type: OverrideComponentConfig['type']): boolean;
@@ -16,14 +16,14 @@ export declare function getOverrideEngineTargetPath(engineDir: string, config: O
16
16
  * Behaviour matches the per-file branch of `restoreOverrideEngineFiles` in
17
17
  * `furnace remove`: snapshot first, then either `git restore` (if the file
18
18
  * exists in HEAD) or hard-delete (if the override introduced the file). The
19
- * caller MUST guarantee `engineDir` is a git repository — this helper does
19
+ * caller must guarantee `engineDir` is a git repository. This helper does
20
20
  * not re-check, because both `furnace remove` and `furnace apply` already
21
21
  * own the precondition check at their entry points and re-checking on every
22
22
  * file would balloon git invocations.
23
23
  *
24
24
  * Returns the action taken so the caller can produce accurate user-facing
25
25
  * counts (`restored` vs `removed`). `noop` means the file was neither in HEAD
26
- * nor on disk, which can happen when the engine was reset out-of-band — the
26
+ * nor on disk, which can happen when the engine was reset out-of-band. The
27
27
  * caller should treat that as a successful no-op rather than an error.
28
28
  */
29
29
  export declare function restoreOverrideFileToBaseline(engineDir: string, enginePath: string, journal: RollbackJournal): Promise<'restored' | 'removed' | 'noop'>;
@@ -32,14 +32,14 @@ export declare function computeComponentChecksums(componentDir: string): Promise
32
32
  /**
33
33
  * Removes engine copies of files that the developer has deleted from a custom
34
34
  * component's workspace since the last apply. `.ftl` files live under the
35
- * shared Fluent tree (`engine/${FTL_DIR}`); everything else lives under
35
+ * shared Fluent tree (`engine/${FTL_DIR}`). Everything else lives under
36
36
  * `engine/${config.targetPath}`. Snapshots each removal into the journal so a
37
37
  * mid-apply failure can roll the engine back to its pre-undeploy state. Files
38
38
  * that are already missing from the engine are silently no-op (the engine
39
- * may have been reset out-of-band — refusing here would surface a confusing
40
- * error in a recovery path).
39
+ * may have been reset out-of-band, and refusing here would surface a
40
+ * confusing error in a recovery path).
41
41
  *
42
- * Does **not** touch jar.mn or customElements.js: registration churn is the
42
+ * Does not touch jar.mn or customElements.js: registration churn is the
43
43
  * caller's responsibility, since it must coordinate with the new file list
44
44
  * computed by the regular apply step that follows.
45
45
  */
@@ -51,9 +51,9 @@ export declare function undeployCustomFiles(engineDir: string, config: CustomCom
51
51
  * HEAD if it was a Firefox baseline file or hard-deletes it if the override
52
52
  * had introduced it.
53
53
  *
54
- * Requires `engineDir` to be a git repository — overrides cannot be inverted
54
+ * Requires `engineDir` to be a git repository: overrides cannot be inverted
55
55
  * without git HEAD as the source of truth. The caller is expected to have
56
- * already validated this precondition for the apply path; we re-check here
56
+ * already validated this precondition for the apply path. We re-check here
57
57
  * so unit tests that exercise this helper directly cannot accidentally
58
58
  * silent-fail on a non-git fixture.
59
59
  */
@@ -21,7 +21,7 @@ import { fileExistsInHead, restoreTrackedPath } from './git-file-ops.js';
21
21
  /**
22
22
  * Filter deciding which files in an override workspace directory are candidates
23
23
  * for copying into the engine. Exported so `furnace remove` can invert apply
24
- * using the exact same file set — the "files to restore" set is defined as the
24
+ * using the same file set: the "files to restore" set is defined as the
25
25
  * inverse of the "files apply would have written" set.
26
26
  */
27
27
  export function isOverrideCopyCandidate(entryName, type) {
@@ -46,18 +46,18 @@ export function getOverrideEngineTargetPath(engineDir, config, fileName, ftlDir)
46
46
  * Behaviour matches the per-file branch of `restoreOverrideEngineFiles` in
47
47
  * `furnace remove`: snapshot first, then either `git restore` (if the file
48
48
  * exists in HEAD) or hard-delete (if the override introduced the file). The
49
- * caller MUST guarantee `engineDir` is a git repository — this helper does
49
+ * caller must guarantee `engineDir` is a git repository. This helper does
50
50
  * not re-check, because both `furnace remove` and `furnace apply` already
51
51
  * own the precondition check at their entry points and re-checking on every
52
52
  * file would balloon git invocations.
53
53
  *
54
54
  * Returns the action taken so the caller can produce accurate user-facing
55
55
  * counts (`restored` vs `removed`). `noop` means the file was neither in HEAD
56
- * nor on disk, which can happen when the engine was reset out-of-band — the
56
+ * nor on disk, which can happen when the engine was reset out-of-band. The
57
57
  * caller should treat that as a successful no-op rather than an error.
58
58
  */
59
59
  export async function restoreOverrideFileToBaseline(engineDir, enginePath, journal) {
60
- // Engine-relative paths are IDENTIFIERS here, not filesystem arguments:
60
+ // Engine-relative paths are identifiers here, not filesystem arguments:
61
61
  // they are handed to git, recorded in furnace state, and compared against
62
62
  // the POSIX paths furnace.json and jar.mn already carry. `relative()`
63
63
  // returns backslashes on Windows, so without this the same file has two
@@ -66,8 +66,8 @@ export async function restoreOverrideFileToBaseline(engineDir, enginePath, journ
66
66
  // Snapshot before mutation so a later rollback can undo both restoration
67
67
  // (writes whatever content we removed back) and deletion (recreates the
68
68
  // file). Snapshotting a missing path records `{ existed: false }`, which
69
- // restoreFile turns into a delete — exactly the inverse of "we just
70
- // wrote a file here", which is correct for the noop case too.
69
+ // restoreFile turns into a delete, the inverse of "we just wrote a file
70
+ // here", which is correct for the noop case too.
71
71
  await snapshotFile(journal, enginePath);
72
72
  if (await fileExistsInHead(engineDir, relPath)) {
73
73
  await restoreTrackedPath(engineDir, relPath);
@@ -88,7 +88,7 @@ export async function computeComponentChecksums(componentDir) {
88
88
  continue;
89
89
  if (entry.name === 'override.json')
90
90
  continue;
91
- // The three extensions a component can deploy; anything else in the
91
+ // The three extensions a component can deploy. Anything else in the
92
92
  // workspace directory is not part of the component's checksum identity.
93
93
  const { name: entryName } = entry;
94
94
  if (!entryName.endsWith('.mjs') && !entryName.endsWith('.css') && !entryName.endsWith('.ftl'))
@@ -102,14 +102,14 @@ export async function computeComponentChecksums(componentDir) {
102
102
  /**
103
103
  * Removes engine copies of files that the developer has deleted from a custom
104
104
  * component's workspace since the last apply. `.ftl` files live under the
105
- * shared Fluent tree (`engine/${FTL_DIR}`); everything else lives under
105
+ * shared Fluent tree (`engine/${FTL_DIR}`). Everything else lives under
106
106
  * `engine/${config.targetPath}`. Snapshots each removal into the journal so a
107
107
  * mid-apply failure can roll the engine back to its pre-undeploy state. Files
108
108
  * that are already missing from the engine are silently no-op (the engine
109
- * may have been reset out-of-band — refusing here would surface a confusing
110
- * error in a recovery path).
109
+ * may have been reset out-of-band, and refusing here would surface a
110
+ * confusing error in a recovery path).
111
111
  *
112
- * Does **not** touch jar.mn or customElements.js: registration churn is the
112
+ * Does not touch jar.mn or customElements.js: registration churn is the
113
113
  * caller's responsibility, since it must coordinate with the new file list
114
114
  * computed by the regular apply step that follows.
115
115
  */
@@ -127,7 +127,7 @@ export async function undeployCustomFiles(engineDir, config, deletedFiles, ftlDi
127
127
  removed.push(normalizePathSlashes(relative(engineDir, enginePath)));
128
128
  }
129
129
  // When an `.ftl` is deleted from the workspace the corresponding locale
130
- // jar.mn entry must also be dropped — otherwise the chrome URI points at
130
+ // jar.mn entry must also be dropped. Otherwise the chrome URI points at
131
131
  // a missing file and runtime Fluent resolution breaks silently.
132
132
  // `removeCustomFtlJarMnEntry` early-returns for `sharedFtl` components
133
133
  // (the shared bundle is owned elsewhere).
@@ -142,9 +142,9 @@ export async function undeployCustomFiles(engineDir, config, deletedFiles, ftlDi
142
142
  * HEAD if it was a Firefox baseline file or hard-deletes it if the override
143
143
  * had introduced it.
144
144
  *
145
- * Requires `engineDir` to be a git repository — overrides cannot be inverted
145
+ * Requires `engineDir` to be a git repository: overrides cannot be inverted
146
146
  * without git HEAD as the source of truth. The caller is expected to have
147
- * already validated this precondition for the apply path; we re-check here
147
+ * already validated this precondition for the apply path. We re-check here
148
148
  * so unit tests that exercise this helper directly cannot accidentally
149
149
  * silent-fail on a non-git fixture.
150
150
  */
@@ -158,11 +158,11 @@ export async function undeployOverrideFiles(engineDir, config, deletedFiles, ftl
158
158
  if (!(await isGitRepository(engineDir))) {
159
159
  throw new FurnaceError('Cannot undeploy override files: engine is not a git repository. Run "fireforge download" to initialise it.');
160
160
  }
161
- // Note: we deliberately do not re-filter `deletedFiles` through
161
+ // Note: we do not re-filter `deletedFiles` through
162
162
  // `isOverrideCopyCandidate(fileName, config.type)`. A file recorded in
163
163
  // `previous` was already a valid copy candidate when it was deployed, and
164
164
  // re-filtering would block cleanup if the override type later flipped
165
- // from `full` to `css-only` — exactly the case we need cleanup for.
165
+ // from `full` to `css-only`, which is the case we need cleanup for.
166
166
  const restored = [];
167
167
  const removed = [];
168
168
  for (const fileName of deletedFiles) {
@@ -228,7 +228,7 @@ export async function hasOverrideEngineDrift(ctx, config, cachedEngineChecksums)
228
228
  return true;
229
229
  }
230
230
  if (cachedHash)
231
- continue; // Hash match — skip full source comparison
231
+ continue; // Hash match, skip full source comparison
232
232
  }
233
233
  // Slow path: byte-compare engine content against workspace source
234
234
  const srcContent = normalizeForChecksum(await readText(join(componentDir, entry.name)));
@@ -259,7 +259,7 @@ export async function hasCustomEngineDrift(ctx, config) {
259
259
  // Registration drift: only check jar.mn entries for the file types that
260
260
  // actually exist in source. jarMn{Mjs,Css} are substring checks, so a
261
261
  // component with only .mjs (no .css) should not be flagged when jarMnCss
262
- // is false — that is the expected post-apply state, not drift.
262
+ // is false. That is the expected post-apply state, not drift.
263
263
  const entries = await readdir(componentDir, { withFileTypes: true, encoding: 'utf8' });
264
264
  let hasMjs = false;
265
265
  let hasCss = false;
@@ -311,16 +311,16 @@ export async function applyCustomComponent(ctx, config, dryRun = false, rollback
311
311
  // must complete before any copy (they read the original content), but
312
312
  // independent files can be processed concurrently.
313
313
  const filesToCopy = entries.filter((entry) => isRegularFile(entry) && (entry.name.endsWith('.mjs') || entry.name.endsWith('.css')));
314
- // Snapshot phase (serial — journal is not concurrent-safe for the same path)
314
+ // Snapshot phase (serial: journal is not concurrent-safe for the same path)
315
315
  for (const entry of filesToCopy) {
316
316
  const dest = join(targetDir, entry.name);
317
317
  if (rollbackJournal) {
318
318
  await snapshotFile(rollbackJournal, dest);
319
319
  }
320
320
  }
321
- // Copy phase (parallel — independent file writes to different paths).
321
+ // Copy phase (parallel: independent file writes to different paths).
322
322
  // CSS files carrying @fireforge-include directives are written as their
323
- // fragment-expanded form; the workspace source keeps only the directive,
323
+ // fragment-expanded form. The workspace source keeps only the directive,
324
324
  // so shared CSS stays single-sourced.
325
325
  const sharedDir = join(componentDir, '..', '..', SHARED_FRAGMENTS_DIR);
326
326
  await Promise.all(filesToCopy.map(async (entry) => {
@@ -52,7 +52,7 @@ export function logApplyResult(result, isDryRun) {
52
52
  }
53
53
  }
54
54
  // Patch-owned overwrite warnings print on every non-dry-run
55
- // outcome — including the rolled-back branch, where the overwrite
55
+ // outcome, including the rolled-back branch, where the overwrite
56
56
  // happened before the rollback restored it and the operator still needs
57
57
  // to know the deployed copy was momentarily replaced.
58
58
  if (!isDryRun && result.warnings !== undefined) {
@@ -1,18 +1,18 @@
1
1
  /**
2
2
  * Patch-owned overwrite warnings for `furnace apply`.
3
3
  *
4
- * For Furnace-managed components, apply OVERWRITES the deployed engine
4
+ * For Furnace-managed components, apply overwrites the deployed engine
5
5
  * copies with the `components/` sources. A fix made directly in `engine/` and
6
- * exported into a patch — but never back-ported to the component source — is
6
+ * exported into a patch (but never back-ported to the component source) is
7
7
  * silently undone by the next apply, and a plain drift line reads like
8
- * "someone's uncommitted work". This module detects that exact case BEFORE
9
- * the copy (deployed bytes differ from the component source AND the file is
8
+ * "someone's uncommitted work". This module detects that case before
9
+ * the copy (deployed bytes differ from the component source and the file is
10
10
  * patch-owned) and produces a per-file warning naming the file, the owning
11
11
  * patch, and the consequence.
12
12
  *
13
- * The per-file byte comparison already exists —
13
+ * The per-file byte comparison already exists:
14
14
  * `checkRegistrationConsistency` for custom components (fragment- and
15
- * ftl-aware) and the copy-candidate walk for overrides — so this module only
15
+ * ftl-aware) and the copy-candidate walk for overrides. This module only
16
16
  * surfaces what was previously computed and thrown away.
17
17
  */
18
18
  import type { CustomComponentConfig, OverrideComponentConfig } from '../types/furnace.js';
@@ -26,7 +26,7 @@ export interface PatchOwnedOverwriteWarning {
26
26
  }
27
27
  /**
28
28
  * Loads the file → owning-patch map for the overwrite warning.
29
- * A missing or unreadable patches manifest degrades to an empty map — the
29
+ * A missing or unreadable patches manifest degrades to an empty map. The
30
30
  * warning is advisory and must never block an apply.
31
31
  */
32
32
  export declare function loadPatchClaimsForApply(root: string): Promise<ReadonlyMap<string, readonly string[]>>;
@@ -55,8 +55,8 @@ export type PatchOwnedOverwriteProbe = {
55
55
  };
56
56
  /**
57
57
  * Finds deployed files this component's apply is about to overwrite whose
58
- * engine bytes differ from the component source AND that are patch-owned.
59
- * Probe failures degrade to a verbose line and an empty list — the apply
58
+ * engine bytes differ from the component source and that are patch-owned.
59
+ * Probe failures degrade to a verbose line and an empty list. The apply
60
60
  * itself must not fail because the warning probe could not run.
61
61
  */
62
62
  export declare function findPatchOwnedOverwrites(args: PatchOwnedOverwriteProbe): Promise<PatchOwnedOverwriteWarning[]>;
@@ -2,18 +2,18 @@
2
2
  /**
3
3
  * Patch-owned overwrite warnings for `furnace apply`.
4
4
  *
5
- * For Furnace-managed components, apply OVERWRITES the deployed engine
5
+ * For Furnace-managed components, apply overwrites the deployed engine
6
6
  * copies with the `components/` sources. A fix made directly in `engine/` and
7
- * exported into a patch — but never back-ported to the component source — is
7
+ * exported into a patch (but never back-ported to the component source) is
8
8
  * silently undone by the next apply, and a plain drift line reads like
9
- * "someone's uncommitted work". This module detects that exact case BEFORE
10
- * the copy (deployed bytes differ from the component source AND the file is
9
+ * "someone's uncommitted work". This module detects that case before
10
+ * the copy (deployed bytes differ from the component source and the file is
11
11
  * patch-owned) and produces a per-file warning naming the file, the owning
12
12
  * patch, and the consequence.
13
13
  *
14
- * The per-file byte comparison already exists —
14
+ * The per-file byte comparison already exists:
15
15
  * `checkRegistrationConsistency` for custom components (fragment- and
16
- * ftl-aware) and the copy-candidate walk for overrides — so this module only
16
+ * ftl-aware) and the copy-candidate walk for overrides. This module only
17
17
  * surfaces what was previously computed and thrown away.
18
18
  */
19
19
  import { readdir } from 'node:fs/promises';
@@ -31,7 +31,7 @@ import { loadPatchesManifest } from './patch-manifest.js';
31
31
  import { buildPatchClaims } from './status-classify.js';
32
32
  /**
33
33
  * Loads the file → owning-patch map for the overwrite warning.
34
- * A missing or unreadable patches manifest degrades to an empty map — the
34
+ * A missing or unreadable patches manifest degrades to an empty map. The
35
35
  * warning is advisory and must never block an apply.
36
36
  */
37
37
  export async function loadPatchClaimsForApply(root) {
@@ -104,8 +104,8 @@ async function findOverrideOverwrites(args) {
104
104
  }
105
105
  /**
106
106
  * Finds deployed files this component's apply is about to overwrite whose
107
- * engine bytes differ from the component source AND that are patch-owned.
108
- * Probe failures degrade to a verbose line and an empty list — the apply
107
+ * engine bytes differ from the component source and that are patch-owned.
108
+ * Probe failures degrade to a verbose line and an empty list. The apply
109
109
  * itself must not fail because the warning probe could not run.
110
110
  */
111
111
  export async function findPatchOwnedOverwrites(args) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Dry-run action builders for files deleted from a component workspace since
3
3
  * the last apply. Split out of `furnace-apply.ts` to stay under the per-file
4
- * line budget; the real undeploy paths stay in `furnace-apply-helpers.ts`.
4
+ * line budget. The real undeploy paths stay in `furnace-apply-helpers.ts`.
5
5
  */
6
6
  import type { CustomComponentConfig, DryRunAction, OverrideComponentConfig } from '../types/furnace.js';
7
7
  /** Plans the engine-restore actions for deleted override workspace files. */
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Dry-run action builders for files deleted from a component workspace since
4
4
  * the last apply. Split out of `furnace-apply.ts` to stay under the per-file
5
- * line budget; the real undeploy paths stay in `furnace-apply-helpers.ts`.
5
+ * line budget. The real undeploy paths stay in `furnace-apply-helpers.ts`.
6
6
  */
7
7
  import { join } from 'node:path';
8
8
  import { getOverrideEngineTargetPath } from './furnace-apply-helpers.js';
@@ -8,8 +8,8 @@ export { computeComponentChecksums, prefixChecksums } from './furnace-apply-help
8
8
  * Named so consumers can refer to the shape directly instead of going
9
9
  * through `Awaited<ReturnType<typeof applyAllComponents>>`.
10
10
  *
11
- * `actions` is populated only on a dry run; `rollbackJournal` only when
12
- * `persistState: false` hands journal ownership back to the caller.
11
+ * `actions` is populated only on a dry run. `rollbackJournal` is set only
12
+ * when `persistState: false` hands journal ownership back to the caller.
13
13
  */
14
14
  export type ApplyAllComponentsResult = ApplyResult & {
15
15
  actions?: DryRunAction[];
@@ -44,6 +44,6 @@ export declare function applyAllComponents(root: string, dryRun?: boolean, optio
44
44
  }): Promise<ApplyAllComponentsResult>; /**
45
45
  * Shared context threaded through the batch apply loops. Bundles the state
46
46
  * both loops mutate (result/actions/checksums) with the immutable run
47
- * parameters; the 12–13 positional parameters this replaced let call sites
47
+ * parameters. The 12-13 positional parameters this replaced let call sites
48
48
  * drift and made every new parameter a two-signature change.
49
49
  */
@@ -23,8 +23,8 @@ export { computeComponentChecksums, prefixChecksums } from './furnace-apply-help
23
23
  /**
24
24
  * Records one component's checksums into the run-wide accumulator, under the
25
25
  * flattened `type/name/file` keys the state file stores. A Map keeps the
26
- * accumulation explicit — the previous `Object.assign` merges read as if they
27
- * replaced the accumulator rather than adding to it.
26
+ * accumulation explicit. The previous `Object.assign` merges read as if
27
+ * they replaced the accumulator rather than adding to it.
28
28
  */
29
29
  function recordComponentChecksums(accumulator, checksums, type, name) {
30
30
  for (const [key, value] of Object.entries(prefixChecksums(checksums, type, name))) {
@@ -59,8 +59,8 @@ async function applyOverrideBatch(ctx) {
59
59
  const changed = await hasComponentChanged(componentDir, previous, currentChecksums);
60
60
  if (!changed) {
61
61
  // Fast path holds only if the engine still reflects what we deployed.
62
- // reset/download/manual edits can silently erase engine files; the
63
- // checksum record alone cannot detect that.
62
+ // reset/download/manual edits can silently erase engine files, and
63
+ // the checksum record alone cannot detect that.
64
64
  const cachedEngine = extractComponentChecksums(state.engineChecksums, 'override', name);
65
65
  const drifted = await hasOverrideEngineDrift({ engineDir, componentDir, ftlDir }, overrideConfig, cachedEngine);
66
66
  if (!drifted) {
@@ -86,9 +86,9 @@ async function applyOverrideBatch(ctx) {
86
86
  filesAffectedTotal.push(...restored, ...removed);
87
87
  }
88
88
  if (!dryRun) {
89
- // Runs unconditionally — including when the component source
90
- // changed — because the lost-work case is precisely a deployed
91
- // engine edit that the incoming copy is about to replace.
89
+ // Runs unconditionally, including when the component source
90
+ // changed, because the lost-work case is a deployed engine edit
91
+ // that the incoming copy is about to replace.
92
92
  recordOverwriteWarnings(result, await findPatchOwnedOverwrites({
93
93
  type: 'override',
94
94
  engineDir,
@@ -121,7 +121,7 @@ async function applyOverrideBatch(ctx) {
121
121
  * After undeploying deleted files, the in-engine jar.mn and
122
122
  * customElements.js still carry entries for the removed files. Re-sync them
123
123
  * by removing all of `name`'s jar.mn entries and re-adding only those that
124
- * still exist in the workspace; if the .mjs itself was deleted, also drop
124
+ * still exist in the workspace. If the .mjs itself was deleted, also drop
125
125
  * the customElements.js registration. Snapshots are taken under the same
126
126
  * journal so the undo path is symmetric with apply.
127
127
  */
@@ -141,13 +141,14 @@ async function reconcileCustomRegistrationAfterUndeploy(args) {
141
141
  await removeJarMnEntries(engineDir, name);
142
142
  const liveJarFiles = Object.keys(currentChecksums).filter((f) => f.endsWith('.mjs') || f.endsWith('.css'));
143
143
  if (liveJarFiles.length > 0) {
144
- // applyCustomComponent has already added live entries; the remove above
145
- // dropped them too, so re-add now to leave jar.mn in the correct state.
144
+ // applyCustomComponent has already added live entries, and the remove
145
+ // above dropped them too, so re-add now to leave jar.mn in the correct
146
+ // state.
146
147
  await addJarMnEntries(engineDir, name, liveJarFiles);
147
148
  }
148
149
  filesAffected.push(JAR_MN);
149
150
  // If the .mjs file itself was deleted, the customElements registration
150
- // must go too — otherwise we leave a dangling import in the Pattern B
151
+ // must go too. Otherwise we leave a dangling import in the Pattern B
151
152
  // block that fails at runtime.
152
153
  if (deletedFiles.includes(`${name}.mjs`)) {
153
154
  if (rollbackJournal) {
@@ -245,9 +246,9 @@ async function applyCustomBatch(ctx, root, markerComment) {
245
246
  filesAffectedTotal.push(...removed);
246
247
  }
247
248
  if (!dryRun) {
248
- // Runs unconditionally — the `changed === true` path used to skip
249
- // drift detection entirely, which is exactly when a deployed
250
- // engine-only fix gets silently replaced (J6).
249
+ // Runs unconditionally. The `changed === true` path used to skip
250
+ // drift detection entirely, which is when a deployed engine-only
251
+ // fix gets silently replaced (J6).
251
252
  recordOverwriteWarnings(result, await findPatchOwnedOverwrites({
252
253
  type: 'custom',
253
254
  root,
@@ -279,9 +280,9 @@ async function applyCustomBatch(ctx, root, markerComment) {
279
280
  filesAffected: filesAffectedTotal,
280
281
  ...(stepErrors.length > 0 ? { stepErrors } : {}),
281
282
  });
282
- // Only store checksums when the component applied without BLOCKING
283
+ // Only store checksums when the component applied without blocking
283
284
  // step errors, so that partially failed components are re-applied on
284
- // the next run. Advisory errors (FTL degradation) still persist —
285
+ // the next run. Advisory errors (FTL degradation) still persist, since
285
286
  // re-applying cannot fix a fork that has no locale jar.mn.
286
287
  if (!dryRun && blockingStepErrors(stepErrors).length === 0) {
287
288
  recordComponentChecksums(newChecksums, currentChecksums, 'custom', name);
@@ -328,7 +329,7 @@ export async function applyAllComponents(root, dryRun = false, options) {
328
329
  // When `markerComment` is unset in fireforge.json, default it to
329
330
  // `binaryName.toUpperCase()` so the furnace-emitted edits to upstream
330
331
  // files (e.g. customElements.js) carry a marker that satisfies
331
- // `lintModificationComments` — that rule keys on
332
+ // `lintModificationComments`. That rule keys on
332
333
  // `${binaryName.toUpperCase()}:`. An explicit `markerComment` still wins.
333
334
  const forgeConfig = await loadConfig(root).catch(() => undefined);
334
335
  const markerComment = resolveFurnaceMarkerComment(forgeConfig);
@@ -338,7 +339,7 @@ export async function applyAllComponents(root, dryRun = false, options) {
338
339
  operationContext.registerJournal(rollbackJournal);
339
340
  }
340
341
  // Everything below this line can write to the engine. A real apply that
341
- // reached it without a journal would have no way back — neither the
342
+ // reached it without a journal would have no way back: neither the
342
343
  // lifecycle wrapper's throw path nor the signal handler can restore what
343
344
  // was never captured. `operationContext` is legitimately absent for the
344
345
  // few callers that drive apply outside the wrapper, so the invariant is on
@@ -361,7 +362,7 @@ export async function applyAllComponents(root, dryRun = false, options) {
361
362
  }
362
363
  }
363
364
  // Patch-claim map for the overwrite warning: loaded once per
364
- // apply. A missing/unreadable manifest degrades to an empty map — the
365
+ // apply. A missing/unreadable manifest degrades to an empty map. The
365
366
  // warning is advisory and must never block the apply.
366
367
  const patchClaims = await loadPatchClaimsForApply(root);
367
368
  const batchContext = {
@@ -390,7 +391,7 @@ export async function applyAllComponents(root, dryRun = false, options) {
390
391
  if (!dryRun && !hasApplyStepErrors && result.errors.length === 0) {
391
392
  await runPostApplyConsistencyChecks(root, config, result, ftlDir);
392
393
  }
393
- // Recompute AFTER the consistency checks: they MUTATE entry.stepErrors
394
+ // Recompute after the consistency checks: they mutate entry.stepErrors
394
395
  // when the applied output is inconsistent (e.g. a jar.mn entry that
395
396
  // silently mis-landed). Reading the pre-check snapshot lets those failures
396
397
  // skip rollback and persist checksums for a component known to be
@@ -442,6 +443,6 @@ export async function applyAllComponents(root, dryRun = false, options) {
442
443
  } /**
443
444
  * Shared context threaded through the batch apply loops. Bundles the state
444
445
  * both loops mutate (result/actions/checksums) with the immutable run
445
- * parameters; the 12–13 positional parameters this replaced let call sites
446
+ * parameters. The 12-13 positional parameters this replaced let call sites
446
447
  * drift and made every new parameter a two-signature change.
447
448
  */
@@ -3,10 +3,10 @@ export declare function extractComponentChecksums(allChecksums: Record<string, s
3
3
  /** Prefixes component checksums so they can be stored in the flattened state format. */
4
4
  export declare function prefixChecksums(checksums: Record<string, string>, type: string, name: string): Record<string, string>;
5
5
  /**
6
- * Returns the filenames present in `previous` that are absent from `current`
7
- * — i.e. files we know we deployed last time but the workspace has since
8
- * deleted. The order of returned names is intentionally stable
9
- * (sorted alphabetically) so test snapshots and CLI output are deterministic.
6
+ * Returns the filenames present in `previous` that are absent from
7
+ * `current`, i.e. files we know we deployed last time but the workspace has
8
+ * since deleted. The order of returned names is stable (sorted
9
+ * alphabetically) so test snapshots and CLI output are deterministic.
10
10
  */
11
11
  export declare function diffDeletedFiles(previous: Record<string, string>, current: Record<string, string>): string[];
12
12
  /**
@@ -15,7 +15,7 @@ export declare function diffDeletedFiles(previous: Record<string, string>, curre
15
15
  * Strips a leading BOM and folds CRLF to LF, so a file that differs from its
16
16
  * deployed copy only by line endings or a byte-order mark is not reported as
17
17
  * drift. Every comparison that decides "has this component changed?" must
18
- * use it — otherwise `furnace status` and `furnace validate` can disagree
18
+ * use it. Otherwise `furnace status` and `furnace validate` can disagree
19
19
  * with `apply`'s skip fast-path about the same pair of files on a CRLF
20
20
  * checkout.
21
21
  *
@@ -22,10 +22,10 @@ export function prefixChecksums(checksums, type, name) {
22
22
  return result;
23
23
  }
24
24
  /**
25
- * Returns the filenames present in `previous` that are absent from `current`
26
- * — i.e. files we know we deployed last time but the workspace has since
27
- * deleted. The order of returned names is intentionally stable
28
- * (sorted alphabetically) so test snapshots and CLI output are deterministic.
25
+ * Returns the filenames present in `previous` that are absent from
26
+ * `current`, i.e. files we know we deployed last time but the workspace has
27
+ * since deleted. The order of returned names is stable (sorted
28
+ * alphabetically) so test snapshots and CLI output are deterministic.
29
29
  */
30
30
  export function diffDeletedFiles(previous, current) {
31
31
  const deleted = [];
@@ -42,7 +42,7 @@ export function diffDeletedFiles(previous, current) {
42
42
  * Strips a leading BOM and folds CRLF to LF, so a file that differs from its
43
43
  * deployed copy only by line endings or a byte-order mark is not reported as
44
44
  * drift. Every comparison that decides "has this component changed?" must
45
- * use it — otherwise `furnace status` and `furnace validate` can disagree
45
+ * use it. Otherwise `furnace status` and `furnace validate` can disagree
46
46
  * with `apply`'s skip fast-path about the same pair of files on a CRLF
47
47
  * checkout.
48
48
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Parser for the `custom` entries in furnace.json. Extracted from
3
3
  * `furnace-config.ts` so the main config module stays under the
4
- * per-file LOC budget — the custom-component schema has grown to
4
+ * per-file LOC budget. The custom-component schema has grown to
5
5
  * carry opt-in fields (`composes`, `keyboardCovered`, `sharedFtl`) that
6
6
  * each add their own validation branch.
7
7
  */
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Parser for the `custom` entries in furnace.json. Extracted from
4
4
  * `furnace-config.ts` so the main config module stays under the
5
- * per-file LOC budget — the custom-component schema has grown to
5
+ * per-file LOC budget. The custom-component schema has grown to
6
6
  * carry opt-in fields (`composes`, `keyboardCovered`, `sharedFtl`) that
7
7
  * each add their own validation branch.
8
8
  */
@@ -65,7 +65,7 @@ export function parseCustomConfig(data, name) {
65
65
  ? { composes: parseStringArray(data['composes'], `${name}.composes`) }
66
66
  : {}),
67
67
  ...(data['keyboardCovered'] === true ? { keyboardCovered: true } : {}),
68
- // Explicit `kind: "element"` is the default; normalize it away so the
68
+ // Explicit `kind: "element"` is the default. Normalize it away so the
69
69
  // stored config carries the field only when it changes behavior.
70
70
  ...(data['kind'] === 'library' ? { kind: 'library' } : {}),
71
71
  ...(sharedFtl !== undefined ? { sharedFtl } : {}),
@@ -60,7 +60,7 @@ function orderComponentMapLikeExisting(existing, next) {
60
60
  export function orderFurnaceConfigForWrite(existing, config) {
61
61
  // FurnaceConfig is plain parsed-JSON data, but as an interface it carries
62
62
  // no index signature, so the compiler cannot verify the JsonObject
63
- // contract structurally — hence the double assertion. This is the one
63
+ // contract structurally, hence the double assertion. This is the one
64
64
  // place a typed furnace config re-enters the raw-document world.
65
65
  // eslint-disable-next-line no-restricted-syntax -- see above
66
66
  const next = config;
@@ -6,12 +6,12 @@
6
6
  /**
7
7
  * Validates a `tokenHostDocuments` raw value. Each entry must be a non-empty
8
8
  * relative path contained in the engine tree. Throws `FurnaceError` on
9
- * violation; does nothing for `undefined` (field is optional).
9
+ * violation. Does nothing for `undefined` (field is optional).
10
10
  */
11
11
  export declare function validateTokenHostDocuments(raw: unknown): void;
12
12
  /**
13
13
  * Validates a `runtimeVariables` raw value. Each entry must start with `--`
14
- * (it is a CSS custom property name). Throws `FurnaceError` on violation;
15
- * does nothing for `undefined` (field is optional).
14
+ * (it is a CSS custom property name). Throws `FurnaceError` on violation.
15
+ * Does nothing for `undefined` (field is optional).
16
16
  */
17
17
  export declare function validateRuntimeVariables(raw: unknown): void;