@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
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Browser-chrome test scaffolding for `furnace create --with-tests`,
4
4
  * including the `--test-dir` redirect and collision safety (existing
5
- * manifests are appended to; head.js and test implementations are never
5
+ * manifests are appended to, and head.js and test implementations are never
6
6
  * overwritten). Split out of `create.ts` to keep that command file within
7
7
  * the per-file line budget.
8
8
  */
@@ -83,12 +83,12 @@ export async function scaffoldTestFiles(componentName, license, forgeConfig, pat
83
83
  const jsHeader = getLicenseHeader(license, 'js');
84
84
  const hashHeader = getLicenseHeader(license, 'hash');
85
85
  const testFiles = [];
86
- // browser.toml — create if missing, append entry if existing
86
+ // browser.toml: create if missing, append entry if existing.
87
87
  const tomlPath = join(testDir, 'browser.toml');
88
88
  if (await pathExists(tomlPath)) {
89
89
  // Defensive guard: only append if the entry is not already present.
90
90
  // With a fresh journal per create, the same test file name cannot be
91
- // appended twice in a single run — but retaining the check protects
91
+ // appended twice in a single run, but retaining the check protects
92
92
  // against accidental re-entrance or a future refactor that reuses the
93
93
  // helper with a stale test directory.
94
94
  const existingToml = await readText(tomlPath);
@@ -113,7 +113,7 @@ support-files = ["head.js"]
113
113
  await writeText(tomlPath, browserToml);
114
114
  }
115
115
  testFiles.push('browser.toml');
116
- // head.js — only create if it doesn't exist (shared across components)
116
+ // head.js: only create if it doesn't exist (shared across components).
117
117
  const headPath = join(testDir, 'head.js');
118
118
  if (!(await pathExists(headPath))) {
119
119
  if (journal)
@@ -8,7 +8,7 @@ export interface DryRunPlanInput {
8
8
  /**
9
9
  * Feature-scoped Fluent bundle the component participates in (the same
10
10
  * value that will be written to `furnace.json`'s `sharedFtl`). When set,
11
- * the component's own `.ftl` is NOT scaffolded and the plan preview
11
+ * the component's own `.ftl` is not scaffolded and the plan preview
12
12
  * reflects that. Omit the key for the default per-component scaffold.
13
13
  */
14
14
  sharedFtl?: string;
@@ -18,8 +18,8 @@ export interface DryRunPlanInput {
18
18
  /**
19
19
  * Resolved `--test-dir` override (engine-relative, already validated by
20
20
  * `resolveValidatedTestDir`). Omit for the default `<binaryName>`-derived
21
- * scaffold directory. The formatters MUST receive the same value the
22
- * scaffolders get — the plan used to recompute the default from
21
+ * scaffold directory. The formatters must receive the same value the
22
+ * scaffolders get. The plan used to recompute the default from
23
23
  * `binaryName` and named a directory the real run never wrote to.
24
24
  */
25
25
  testDir?: string;
@@ -35,7 +35,7 @@ export declare function formatSuccessNote(args: {
35
35
  testFiles: string[];
36
36
  testStyle: ResolvedTestStyle;
37
37
  binaryName: string;
38
- /** Resolved `--test-dir` override; see {@link DryRunPlanInput.testDir}. */
38
+ /** Resolved `--test-dir` override. See {@link DryRunPlanInput.testDir}. */
39
39
  testDir?: string | undefined;
40
40
  }): string;
41
41
  /**
@@ -3,8 +3,8 @@
3
3
  * Dry-run plan formatter for `furnace create`.
4
4
  *
5
5
  * Lives outside `create.ts` so the authoring command stays under the
6
- * per-file LOC budget. The formatter is pure — all inputs are already
7
- * resolved by the command's validation phase — so it can be exercised
6
+ * per-file LOC budget. The formatter is pure (all inputs are already
7
+ * resolved by the command's validation phase), so it can be exercised
8
8
  * independently of the mutation plumbing.
9
9
  */
10
10
  import { BROWSER_TEST_SCAFFOLD_ROOT, resolveBrowserChromeTestDir, resolveXpcshellTestDir, } from '../../core/furnace-constants.js';
@@ -23,7 +23,7 @@ function formatTestSection(args) {
23
23
  if (testStyle === 'browser-chrome') {
24
24
  // Same resolver as scaffoldTestFiles: the registration name is the
25
25
  // path below browser/base/content/test/, which under --test-dir is
26
- // NOT the binary name.
26
+ // not the binary name.
27
27
  const testDirRel = resolveBrowserChromeTestDir(binaryName, testDir);
28
28
  const manifestName = testDirRel.slice(BROWSER_TEST_SCAFFOLD_ROOT.length);
29
29
  return (`\n\nWould create test files in engine/${testDirRel}/:\n` +
@@ -79,7 +79,7 @@ export function formatSuccessNote(args) {
79
79
  export function formatDryRunPlan(args) {
80
80
  const { componentName, localized, register, composes, stockAdditions, sharedFtl, testStyle, description, binaryName, testDir, } = args;
81
81
  const componentFiles = [`${componentName}.mjs`, `${componentName}.css`];
82
- // A per-component .ftl is scaffolded only when the component does NOT
82
+ // A per-component .ftl is scaffolded only when the component does not
83
83
  // opt into a shared feature-scoped bundle. Mirrors writeComponentFiles.
84
84
  if (localized && !sharedFtl)
85
85
  componentFiles.push(`${componentName}.ftl`);
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Feature-flag resolution for `furnace create`. Extracted from
3
3
  * `create.ts` so the authoring command stays under the per-file LOC
4
- * budget — the flag resolver has grown with each new opt-in (`--xpcshell`,
4
+ * budget. The flag resolver has grown with each new opt-in (`--xpcshell`,
5
5
  * `--test-style`, `--shared-ftl`).
6
6
  */
7
7
  import type { FurnaceCreateOptions } from '../../types/commands/index.js';
@@ -11,7 +11,7 @@ import type { FurnaceCreateOptions } from '../../types/commands/index.js';
11
11
  * `--shared-ftl` implies `localized` and short-circuits the interactive
12
12
  * prompt so the operator is not asked to flip a flag we are about to
13
13
  * enforce. `--no-localized` combined with `--shared-ftl` is rejected
14
- * fast-fail; the cross-field check in furnace-config would catch it
14
+ * fast-fail. The cross-field check in furnace-config would catch it
15
15
  * too, but later and without a clear command-line message.
16
16
  *
17
17
  * @param isInteractive - Whether interactive prompts are available
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Feature-flag resolution for `furnace create`. Extracted from
4
4
  * `create.ts` so the authoring command stays under the per-file LOC
5
- * budget — the flag resolver has grown with each new opt-in (`--xpcshell`,
5
+ * budget. The flag resolver has grown with each new opt-in (`--xpcshell`,
6
6
  * `--test-style`, `--shared-ftl`).
7
7
  */
8
8
  import { multiselect } from '@clack/prompts';
@@ -14,7 +14,7 @@ import { cancel, isCancel } from '../../utils/logger.js';
14
14
  * `--shared-ftl` implies `localized` and short-circuits the interactive
15
15
  * prompt so the operator is not asked to flip a flag we are about to
16
16
  * enforce. `--no-localized` combined with `--shared-ftl` is rejected
17
- * fast-fail; the cross-field check in furnace-config would catch it
17
+ * fast-fail. The cross-field check in furnace-config would catch it
18
18
  * too, but later and without a clear command-line message.
19
19
  *
20
20
  * @param isInteractive - Whether interactive prompts are available
@@ -3,10 +3,10 @@
3
3
  * `fireforge furnace create --test-style=mochikit`.
4
4
  *
5
5
  * Browser-chrome mochitests require a `tabbrowser` in the top-level chrome
6
- * document, so forks with a bespoke chrome document that deliberately omits
7
- * one cannot run them. MochiKit tests load the component module directly via
6
+ * document, so forks with a bespoke chrome document that omits one cannot
7
+ * run them. MochiKit tests load the component module directly via
8
8
  * `chrome://global/` and assert against `customElements`, so they work
9
- * against any fork that registers the upstream toolkit test manifest tree —
9
+ * against any fork that registers the upstream toolkit test manifest tree,
10
10
  * including those without a tabbrowser.
11
11
  */
12
12
  import { type RollbackJournal } from '../../core/furnace-rollback.js';
@@ -21,7 +21,7 @@ import type { ProjectLicense } from '../../types/config.js';
21
21
  * Appends a per-test entry to the existing `chrome.toml` when present,
22
22
  * writes a fresh `[DEFAULT]`-headed one otherwise. The caller is still
23
23
  * responsible for ensuring the `toolkit/content/tests/widgets/chrome.toml`
24
- * path is registered somewhere in the moz.build tree; most forks inherit
24
+ * path is registered somewhere in the moz.build tree. Most forks inherit
25
25
  * this from upstream via `TEST_HARNESS_FILES += [...]`.
26
26
  */
27
27
  export declare function scaffoldMochikitTestFiles(componentName: string, license: ProjectLicense, paths: {
@@ -4,10 +4,10 @@
4
4
  * `fireforge furnace create --test-style=mochikit`.
5
5
  *
6
6
  * Browser-chrome mochitests require a `tabbrowser` in the top-level chrome
7
- * document, so forks with a bespoke chrome document that deliberately omits
8
- * one cannot run them. MochiKit tests load the component module directly via
7
+ * document, so forks with a bespoke chrome document that omits one cannot
8
+ * run them. MochiKit tests load the component module directly via
9
9
  * `chrome://global/` and assert against `customElements`, so they work
10
- * against any fork that registers the upstream toolkit test manifest tree —
10
+ * against any fork that registers the upstream toolkit test manifest tree,
11
11
  * including those without a tabbrowser.
12
12
  */
13
13
  import { join } from 'node:path';
@@ -26,7 +26,7 @@ import { generateMochikitChromeTomlEntry, generateMochikitChromeTomlSkeleton, ge
26
26
  * Appends a per-test entry to the existing `chrome.toml` when present,
27
27
  * writes a fresh `[DEFAULT]`-headed one otherwise. The caller is still
28
28
  * responsible for ensuring the `toolkit/content/tests/widgets/chrome.toml`
29
- * path is registered somewhere in the moz.build tree; most forks inherit
29
+ * path is registered somewhere in the moz.build tree. Most forks inherit
30
30
  * this from upstream via `TEST_HARNESS_FILES += [...]`.
31
31
  */
32
32
  export async function scaffoldMochikitTestFiles(componentName, license, paths, journal) {
@@ -50,9 +50,9 @@ export async function scaffoldMochikitTestFiles(componentName, license, paths, j
50
50
  await writeText(testFilePath, generateMochikitTestContent(componentName));
51
51
  writtenFiles.push(testFileName);
52
52
  }
53
- // chrome.toml — append entry if the file already exists, otherwise write
54
- // a fresh skeleton + entry. Idempotency: if the entry is already present
55
- // the manifest is left untouched so re-runs don't double-register.
53
+ // chrome.toml: append an entry if the file already exists, otherwise
54
+ // write a fresh skeleton + entry. Idempotency: if the entry is already
55
+ // present the manifest is left untouched so re-runs don't double-register.
56
56
  const manifestPath = join(testDir, 'chrome.toml');
57
57
  const entry = generateMochikitChromeTomlEntry(componentName);
58
58
  if (await pathExists(manifestPath)) {
@@ -22,7 +22,7 @@ export interface GenerateMjsContentOptions {
22
22
  /**
23
23
  * Generates the .mjs file content for a custom component.
24
24
  *
25
- * `MozLitElement` does NOT expose `insertFTLIfNeeded` — that method lives on
25
+ * `MozLitElement` does not expose `insertFTLIfNeeded`. That method lives on
26
26
  * `MozXULElement`. Calling it from `connectedCallback` on a Lit-based
27
27
  * component throws `TypeError: this.insertFTLIfNeeded is not a function` at
28
28
  * every connect. Upstream Firefox components (e.g. `moz-input-folder.mjs`)
@@ -31,13 +31,13 @@ export interface GenerateMjsContentOptions {
31
31
  * that pattern here so `--localized` produces functional code.
32
32
  *
33
33
  * Path resolution precedence (when `localized` is true):
34
- * 1. `sharedFtl` — used verbatim. The caller has resolved it from
35
- * `--shared-ftl` / `furnace.json`; this template does no rewriting.
34
+ * 1. `sharedFtl`: used verbatim. The caller has resolved it from
35
+ * `--shared-ftl` / `furnace.json`. This template does no rewriting.
36
36
  * Use this when the component participates in a feature-scoped
37
37
  * bundle that another component owns.
38
- * 2. `<ftlChromeSubPath>/<name>.ftl` — the default per-component path,
38
+ * 2. `<ftlChromeSubPath>/<name>.ftl`: the default per-component path,
39
39
  * matching the locale jar.mn entry that `furnace apply` writes.
40
- * 3. `<name>.ftl` — fallback when no chrome sub-path was resolvable.
40
+ * 3. `<name>.ftl`: fallback when no chrome sub-path was resolvable.
41
41
  */
42
42
  export declare function generateMjsContent(options: GenerateMjsContentOptions): string;
43
43
  /** Generates the .css file content for a custom component. */
@@ -50,7 +50,7 @@ export declare function xpcshellTestFileName(name: string): string;
50
50
  * Generates an xpcshell test file for a custom component.
51
51
  *
52
52
  * xpcshell cannot execute a component module that imports
53
- * `chrome://global/content/vendor/lit.all.mjs` — the Lit bundle touches
53
+ * `chrome://global/content/vendor/lit.all.mjs`: the Lit bundle touches
54
54
  * `window` at module-load time and the xpcshell harness has no `window`
55
55
  * global. A scaffold that calls `ChromeUtils.importESModule` on the
56
56
  * component's MJS therefore fails with `ReferenceError: window is not
@@ -61,15 +61,15 @@ export declare function xpcshellTestFileName(name: string): string;
61
61
  * This template mirrors the chrome-doc packaging test instead: XCurProcD is
62
62
  * probed at a pair of candidate layouts (dist/bin/browser and the macOS
63
63
  * .app-bundle / ESR layout) to confirm the `.mjs` and `.css` files landed
64
- * where jar.mn promised. That is the assertion xpcshell CAN make. Functional
64
+ * where jar.mn promised. That is the assertion xpcshell can make. Functional
65
65
  * tests that need DOM/shadow-root/keyboard behaviour belong in a
66
- * browser-chrome mochitest — scaffolded via
66
+ * browser-chrome mochitest, scaffolded via
67
67
  * `fireforge furnace create --test-style browser-chrome`.
68
68
  */
69
69
  export declare function generateXpcshellTestContent(name: string, header: string): string;
70
70
  /**
71
71
  * Generates an `xpcshell.toml` manifest for a custom component's test
72
- * directory. Kept minimal — adding prefs, head.js, and support-files is
72
+ * directory. Kept minimal: adding prefs, head.js, and support-files is
73
73
  * left to the operator because those decisions depend on what the
74
74
  * component actually touches (Services.storage, observer topics, etc.).
75
75
  */
@@ -84,17 +84,17 @@ export declare function mochikitTestFileName(name: string): string;
84
84
  * They run on forks whose top-level chrome document lacks a `tabbrowser`
85
85
  * because they do not traverse `URILoadingHelper.openLinkIn`.
86
86
  *
87
- * The scaffold is a smoke test — the component is defined and the
87
+ * The scaffold is a smoke test: the component is defined and the
88
88
  * constructor is a function. Real UI assertions (render output, l10n wiring,
89
89
  * keyboard interactions) are left out because they depend on the
90
- * component's shape; operators can extend the test using the same SimpleTest
90
+ * component's shape. Operators can extend the test using the same SimpleTest
91
91
  * APIs upstream toolkit widgets rely on.
92
92
  *
93
- * The template deliberately omits `SimpleTest.waitForExplicitFinish()`.
93
+ * The template omits `SimpleTest.waitForExplicitFinish()` on purpose.
94
94
  * `add_task` owns the test lifecycle: when every queued task resolves, the
95
95
  * task harness calls `SimpleTest.finish()` itself. Combining
96
96
  * `waitForExplicitFinish()` with `add_task` and no explicit
97
- * `SimpleTest.finish()` in the task body makes the harness wait forever —
97
+ * `SimpleTest.finish()` in the task body makes the harness wait forever,
98
98
  * an indefinite hang on `fireforge test --headless`. Omitting it matches the
99
99
  * convention upstream toolkit widget tests use.
100
100
  */
@@ -102,7 +102,7 @@ export declare function generateMochikitTestContent(name: string): string;
102
102
  /**
103
103
  * Generates the `chrome.toml` entry block to append for a newly scaffolded
104
104
  * mochikit test. When the manifest already exists the caller appends this
105
- * snippet; when absent, the caller writes a file that starts with a
105
+ * snippet. When it is absent, the caller writes a file that starts with a
106
106
  * `[DEFAULT]` stanza followed by this block.
107
107
  */
108
108
  export declare function generateMochikitChromeTomlEntry(name: string): string;
@@ -7,7 +7,7 @@
7
7
  /**
8
8
  * Generates the .mjs file content for a custom component.
9
9
  *
10
- * `MozLitElement` does NOT expose `insertFTLIfNeeded` — that method lives on
10
+ * `MozLitElement` does not expose `insertFTLIfNeeded`. That method lives on
11
11
  * `MozXULElement`. Calling it from `connectedCallback` on a Lit-based
12
12
  * component throws `TypeError: this.insertFTLIfNeeded is not a function` at
13
13
  * every connect. Upstream Firefox components (e.g. `moz-input-folder.mjs`)
@@ -16,13 +16,13 @@
16
16
  * that pattern here so `--localized` produces functional code.
17
17
  *
18
18
  * Path resolution precedence (when `localized` is true):
19
- * 1. `sharedFtl` — used verbatim. The caller has resolved it from
20
- * `--shared-ftl` / `furnace.json`; this template does no rewriting.
19
+ * 1. `sharedFtl`: used verbatim. The caller has resolved it from
20
+ * `--shared-ftl` / `furnace.json`. This template does no rewriting.
21
21
  * Use this when the component participates in a feature-scoped
22
22
  * bundle that another component owns.
23
- * 2. `<ftlChromeSubPath>/<name>.ftl` — the default per-component path,
23
+ * 2. `<ftlChromeSubPath>/<name>.ftl`: the default per-component path,
24
24
  * matching the locale jar.mn entry that `furnace apply` writes.
25
- * 3. `<name>.ftl` — fallback when no chrome sub-path was resolvable.
25
+ * 3. `<name>.ftl`: fallback when no chrome sub-path was resolvable.
26
26
  */
27
27
  export function generateMjsContent(options) {
28
28
  const { name, className, description, localized, header, ftlChromeSubPath, sharedFtl } = options;
@@ -36,10 +36,10 @@ export function generateMjsContent(options) {
36
36
  : ftlChromeSubPath !== undefined
37
37
  ? `${ftlChromeSubPath}/${name}.ftl`
38
38
  : `${name}.ftl`;
39
- // Escape at the SINK, not at the validator. `ftlPath` reaches here from
40
- // three sources — the `--shared-ftl` flag, the furnace.json `ftlBasePath`,
41
- // and a derived `<name>.ftl` — and only the first passes through
42
- // `validateSharedFtl`. `JSON.stringify` produces a correctly-escaped JS
39
+ // Escaping happens at the sink rather than at the validator. `ftlPath`
40
+ // reaches here from three sources (the `--shared-ftl` flag, the
41
+ // furnace.json `ftlBasePath`, and a derived `<name>.ftl`), and only the
42
+ // first passes through `validateSharedFtl`. `JSON.stringify` produces a correctly-escaped JS
43
43
  // string literal for all of them, including the `"` and raw-newline cases
44
44
  // that would otherwise break the generated module into a syntax error.
45
45
  const ftlModulePreamble = localized
@@ -118,7 +118,7 @@ export function xpcshellTestFileName(name) {
118
118
  * Generates an xpcshell test file for a custom component.
119
119
  *
120
120
  * xpcshell cannot execute a component module that imports
121
- * `chrome://global/content/vendor/lit.all.mjs` — the Lit bundle touches
121
+ * `chrome://global/content/vendor/lit.all.mjs`: the Lit bundle touches
122
122
  * `window` at module-load time and the xpcshell harness has no `window`
123
123
  * global. A scaffold that calls `ChromeUtils.importESModule` on the
124
124
  * component's MJS therefore fails with `ReferenceError: window is not
@@ -129,9 +129,9 @@ export function xpcshellTestFileName(name) {
129
129
  * This template mirrors the chrome-doc packaging test instead: XCurProcD is
130
130
  * probed at a pair of candidate layouts (dist/bin/browser and the macOS
131
131
  * .app-bundle / ESR layout) to confirm the `.mjs` and `.css` files landed
132
- * where jar.mn promised. That is the assertion xpcshell CAN make. Functional
132
+ * where jar.mn promised. That is the assertion xpcshell can make. Functional
133
133
  * tests that need DOM/shadow-root/keyboard behaviour belong in a
134
- * browser-chrome mochitest — scaffolded via
134
+ * browser-chrome mochitest, scaffolded via
135
135
  * `fireforge furnace create --test-style browser-chrome`.
136
136
  */
137
137
  export function generateXpcshellTestContent(name, header) {
@@ -213,7 +213,7 @@ add_task(async function test_${taskSuffix}_files_packaged() {
213
213
  }
214
214
  /**
215
215
  * Generates an `xpcshell.toml` manifest for a custom component's test
216
- * directory. Kept minimal — adding prefs, head.js, and support-files is
216
+ * directory. Kept minimal: adding prefs, head.js, and support-files is
217
217
  * left to the operator because those decisions depend on what the
218
218
  * component actually touches (Services.storage, observer topics, etc.).
219
219
  */
@@ -238,17 +238,17 @@ export function mochikitTestFileName(name) {
238
238
  * They run on forks whose top-level chrome document lacks a `tabbrowser`
239
239
  * because they do not traverse `URILoadingHelper.openLinkIn`.
240
240
  *
241
- * The scaffold is a smoke test — the component is defined and the
241
+ * The scaffold is a smoke test: the component is defined and the
242
242
  * constructor is a function. Real UI assertions (render output, l10n wiring,
243
243
  * keyboard interactions) are left out because they depend on the
244
- * component's shape; operators can extend the test using the same SimpleTest
244
+ * component's shape. Operators can extend the test using the same SimpleTest
245
245
  * APIs upstream toolkit widgets rely on.
246
246
  *
247
- * The template deliberately omits `SimpleTest.waitForExplicitFinish()`.
247
+ * The template omits `SimpleTest.waitForExplicitFinish()` on purpose.
248
248
  * `add_task` owns the test lifecycle: when every queued task resolves, the
249
249
  * task harness calls `SimpleTest.finish()` itself. Combining
250
250
  * `waitForExplicitFinish()` with `add_task` and no explicit
251
- * `SimpleTest.finish()` in the task body makes the harness wait forever —
251
+ * `SimpleTest.finish()` in the task body makes the harness wait forever,
252
252
  * an indefinite hang on `fireforge test --headless`. Omitting it matches the
253
253
  * convention upstream toolkit widget tests use.
254
254
  */
@@ -281,7 +281,7 @@ export function generateMochikitTestContent(name) {
281
281
  /**
282
282
  * Generates the `chrome.toml` entry block to append for a newly scaffolded
283
283
  * mochikit test. When the manifest already exists the caller appends this
284
- * snippet; when absent, the caller writes a file that starts with a
284
+ * snippet. When it is absent, the caller writes a file that starts with a
285
285
  * `[DEFAULT]` stanza followed by this block.
286
286
  */
287
287
  export function generateMochikitChromeTomlEntry(name) {
@@ -10,15 +10,15 @@ import type { ProjectLicense } from '../../types/config.js';
10
10
  *
11
11
  * xpcshell is the appropriate harness for storage-layer code on forks
12
12
  * without a `tabbrowser` (no `openLinkIn` → `URILoadingHelper`). Browser
13
- * chrome mochitests require tabbrowser; xpcshell does not, so storage,
13
+ * chrome mochitests require tabbrowser, but xpcshell does not, so storage,
14
14
  * observers, and ESM-loading logic can be covered headless.
15
15
  *
16
16
  * Writes `test_<name>_packaged.js` and an `xpcshell.toml` manifest
17
17
  * into `engine/browser/base/content/test/<binary-name>-xpcshell/
18
- * <component-name>/`. moz.build registration is intentionally left to the
19
- * operator — wiring an `XPCSHELL_TESTS_MANIFESTS` entry requires a
20
- * deliberate choice about which moz.build should own it, and an
21
- * auto-insertion that guessed wrong would be worse than a note.
18
+ * <component-name>/`. moz.build registration is left to the operator:
19
+ * wiring an `XPCSHELL_TESTS_MANIFESTS` entry requires a choice about which
20
+ * moz.build should own it, and an auto-insertion that guessed wrong would
21
+ * be worse than a note.
22
22
  */
23
23
  export declare function scaffoldXpcshellTestFiles(componentName: string, license: ProjectLicense, forgeConfig: {
24
24
  binaryName: string;
@@ -16,20 +16,20 @@ import { generateXpcshellManifestContent, generateXpcshellTestContent, xpcshellT
16
16
  *
17
17
  * xpcshell is the appropriate harness for storage-layer code on forks
18
18
  * without a `tabbrowser` (no `openLinkIn` → `URILoadingHelper`). Browser
19
- * chrome mochitests require tabbrowser; xpcshell does not, so storage,
19
+ * chrome mochitests require tabbrowser, but xpcshell does not, so storage,
20
20
  * observers, and ESM-loading logic can be covered headless.
21
21
  *
22
22
  * Writes `test_<name>_packaged.js` and an `xpcshell.toml` manifest
23
23
  * into `engine/browser/base/content/test/<binary-name>-xpcshell/
24
- * <component-name>/`. moz.build registration is intentionally left to the
25
- * operator — wiring an `XPCSHELL_TESTS_MANIFESTS` entry requires a
26
- * deliberate choice about which moz.build should own it, and an
27
- * auto-insertion that guessed wrong would be worse than a note.
24
+ * <component-name>/`. moz.build registration is left to the operator:
25
+ * wiring an `XPCSHELL_TESTS_MANIFESTS` entry requires a choice about which
26
+ * moz.build should own it, and an auto-insertion that guessed wrong would
27
+ * be worse than a note.
28
28
  */
29
29
  export async function scaffoldXpcshellTestFiles(componentName, license, forgeConfig, paths, journal, testDirOverride) {
30
30
  const parentRelDir = xpcshellTestParentDir(forgeConfig.binaryName);
31
31
  const parentDirName = parentRelDir.split('/').slice(-1)[0] ?? `${forgeConfig.binaryName}-xpcshell`;
32
- // --test-dir names the FINAL directory (no per-component segment is
32
+ // --test-dir names the final directory (no per-component segment is
33
33
  // appended) so the operator controls the exact scaffold target.
34
34
  const testDirRel = resolveXpcshellTestDir(forgeConfig.binaryName, componentName, testDirOverride);
35
35
  const testDir = join(paths.engine, testDirRel);
@@ -53,8 +53,8 @@ export async function scaffoldXpcshellTestFiles(componentName, license, forgeCon
53
53
  await writeText(testFilePath, generateXpcshellTestContent(componentName, jsHeader));
54
54
  testFiles.push(testFileName);
55
55
  }
56
- // xpcshell.toml — append the test entry to an existing manifest instead
57
- // of scaffolding over it; write a fresh one only when absent.
56
+ // xpcshell.toml: append the test entry to an existing manifest instead
57
+ // of scaffolding over it. Write a fresh one only when absent.
58
58
  const manifestPath = join(testDir, 'xpcshell.toml');
59
59
  if (await pathExists(manifestPath)) {
60
60
  const existing = await readText(manifestPath);
@@ -7,7 +7,7 @@ import type { ResolvedTestStyle } from '../../types/furnace.js';
7
7
  * Invariants:
8
8
  * - `--xpcshell` alone is equivalent to `--test-style=xpcshell`.
9
9
  * - `--with-tests` alone (no `--test-style`) defaults to `browser-chrome`
10
- * (multi-process mochitest; reliable on macOS for interactive chrome).
10
+ * (multi-process mochitest, reliable on macOS for interactive chrome).
11
11
  * Forks whose chrome document has no `tabbrowser` should pass
12
12
  * `--test-style=mochikit` explicitly.
13
13
  * - When both `--xpcshell` and `--with-tests` are set, `--xpcshell` wins
@@ -86,7 +86,7 @@ async function writeComponentFiles(options) {
86
86
  await writeText(cssPath, cssContent);
87
87
  // Skip the per-component .ftl stub when the component participates in a
88
88
  // pre-existing feature-scoped bundle. The shared bundle is owned
89
- // elsewhere; dropping a stub here would clutter the workspace with
89
+ // elsewhere. Dropping a stub here would clutter the workspace with
90
90
  // empty files that never get packaged (furnace apply also skips copying
91
91
  // them in this mode).
92
92
  if (localized && !sharedFtl) {
@@ -106,7 +106,7 @@ async function writeComponentFiles(options) {
106
106
  * Invariants:
107
107
  * - `--xpcshell` alone is equivalent to `--test-style=xpcshell`.
108
108
  * - `--with-tests` alone (no `--test-style`) defaults to `browser-chrome`
109
- * (multi-process mochitest; reliable on macOS for interactive chrome).
109
+ * (multi-process mochitest, reliable on macOS for interactive chrome).
110
110
  * Forks whose chrome document has no `tabbrowser` should pass
111
111
  * `--test-style=mochikit` explicitly.
112
112
  * - When both `--xpcshell` and `--with-tests` are set, `--xpcshell` wins
@@ -135,8 +135,8 @@ export function resolveTestStyle(options) {
135
135
  * state.
136
136
  */
137
137
  async function performCreateMutations(args) {
138
- // Invariant: the journal MUST be registered with the operation context
139
- // BEFORE any filesystem mutation (including recordCreatedDir, whose entries
138
+ // Invariant: the journal must be registered with the operation context
139
+ // before any filesystem mutation (including recordCreatedDir, whose entries
140
140
  // are consulted by SIGINT rollback). The try/catch below assumes signal
141
141
  // handlers can find the journal for any partial write that follows.
142
142
  const journal = createRollbackJournal();
@@ -269,7 +269,7 @@ export async function furnaceCreateCommand(projectRoot, name, options = {}) {
269
269
  const license = forgeConfig.license ?? DEFAULT_LICENSE;
270
270
  const furnacePaths = getFurnacePaths(projectRoot);
271
271
  if (!componentName) {
272
- // Interactive prompt path; non-interactive missing-name was rejected above.
272
+ // Interactive prompt path. Non-interactive missing-name was rejected above.
273
273
  const nameResult = await text({
274
274
  message: 'Component tag name:',
275
275
  placeholder: 'moz-my-widget',
@@ -315,7 +315,7 @@ export async function furnaceCreateCommand(projectRoot, name, options = {}) {
315
315
  // partial mutation behind.
316
316
  const testStyle = resolveTestStyle(options);
317
317
  const testDir = resolveValidatedTestDir(options.testDir, testStyle);
318
- // Not routed through assertFurnaceEngineReady: this rung is CONDITIONAL on
318
+ // Not routed through assertFurnaceEngineReady: this rung is conditional on
319
319
  // a test style being requested, and it names the component so the refusal
320
320
  // identifies which create failed. Both are outside the shared helper's
321
321
  // shape, and a scaffold without --with-tests must keep working with no
@@ -334,7 +334,7 @@ export async function furnaceCreateCommand(projectRoot, name, options = {}) {
334
334
  // structural rules with furnace-config.ts so the command and the on-disk
335
335
  // schema cannot diverge. Pass the resolved `localized` rather than a `true`
336
336
  // literal so the validator's cross-field check stays anchored to the real
337
- // feature selection — `resolveCreateFeatures` promotes localized upstream,
337
+ // feature selection. `resolveCreateFeatures` promotes localized upstream,
338
338
  // and hard-coding `true` here would hide a regression if that promotion
339
339
  // ever moved or dropped.
340
340
  let sharedFtl;
@@ -345,10 +345,10 @@ export async function furnaceCreateCommand(projectRoot, name, options = {}) {
345
345
  }
346
346
  sharedFtl = result.value;
347
347
  }
348
- // Dry-run exits here — every validation that does not need a write has
348
+ // Dry-run exits here. Every validation that does not need a write has
349
349
  // already run, so the plan we render reflects exactly what the real
350
350
  // command would do. The mutation phase and its rollback journal are
351
- // intentionally skipped so no furnace.json/engine state is touched.
351
+ // skipped so no furnace.json/engine state is touched.
352
352
  if (isDryRun) {
353
353
  const plan = formatDryRunPlan({
354
354
  componentName,
@@ -357,7 +357,7 @@ export async function furnaceCreateCommand(projectRoot, name, options = {}) {
357
357
  composes,
358
358
  stockAdditions,
359
359
  // Spread rather than assign so the key is absent when sharedFtl is
360
- // undefined — the DryRunPlanInput type uses strict-optional shape.
360
+ // undefined. The DryRunPlanInput type uses a strict-optional shape.
361
361
  ...(sharedFtl !== undefined ? { sharedFtl } : {}),
362
362
  testStyle,
363
363
  description,
@@ -43,18 +43,18 @@ function getFailedComponentNames(result) {
43
43
  * mode.
44
44
  *
45
45
  * Delegates to {@link applyAllComponents} with a `componentName` filter so
46
- * targeted deploys run the exact same pipeline as deploy-all — including
46
+ * targeted deploys run the exact same pipeline as deploy-all, including
47
47
  * workspace-deletion detection, engine orphan undeploy, and jar.mn /
48
48
  * customElements.js re-sync. Calling the per-component apply helpers
49
49
  * directly never prunes: renaming a helper file in the workspace then leaves
50
50
  * the old deployed file and its stale jar.mn line in the engine.
51
51
  *
52
- * `persistState: false` is load-bearing: the batch persist path *replaces*
52
+ * `persistState: false` matters here: the batch persist path replaces
53
53
  * `appliedChecksums` wholesale with only this run's entries, which for a
54
54
  * named deploy would wipe every other component's state. Named deploy keeps
55
55
  * its per-component state merge ({@link persistSingleComponentState}) and
56
56
  * its atomicity gate ({@link shouldPersistSingleComponentState}) at the call
57
- * site. Rollback on failure happens inside `applyAllComponents`; the journal
57
+ * site. Rollback on failure happens inside `applyAllComponents`. The journal
58
58
  * returned on success is ignored (the deploy keeps its files).
59
59
  *
60
60
  * @param name - Component name to apply
@@ -188,7 +188,7 @@ export async function furnaceDeployCommand(projectRoot, name, options = {}) {
188
188
  applySpinner.stop(isDryRun ? 'Planned actions calculated' : 'Components applied');
189
189
  logApplyResult(result, isDryRun);
190
190
  // Keep the consumer jsconfig's chrome-module `paths` in step with the
191
- // deployed module set. Only after a clean apply — a rolled-back deploy
191
+ // deployed module set. Only after a clean apply: a rolled-back deploy
192
192
  // must not advance the typecheck mapping either.
193
193
  if (result.errors.length === 0 && getStepFailureCount(result) === 0) {
194
194
  await reportJsconfigPathsSync(projectRoot, config, isDryRun);
@@ -15,9 +15,9 @@ import { normalizePathSlashes } from '../../utils/paths.js';
15
15
  /**
16
16
  * Renders a multi-hunk unified diff between the two strings and returns a
17
17
  * flat list of display-ready lines. Each line has already had its marker
18
- * prefix and color applied by this function; the caller just emits them.
18
+ * prefix and color applied by this function. The caller just emits them.
19
19
  *
20
- * Pure delegation to the `diff-hunks` module — kept here as a thin wrapper
20
+ * Pure delegation to the `diff-hunks` module, kept here as a thin wrapper
21
21
  * so the command file does not need to care about the hunk data shape.
22
22
  */
23
23
  function formatUnifiedDiff(original, modified) {
@@ -48,7 +48,7 @@ async function diffOverride(name, projectRoot, config) {
48
48
  if (!(await pathExists(overrideDir))) {
49
49
  throw new FurnaceError(`Override directory not found: components/overrides/${name}`, name);
50
50
  }
51
- // Prefer the per-override baseCommit (survives download --force); fall back
51
+ // Prefer the per-override baseCommit (survives download --force). Fall back
52
52
  // to the project-wide value for overrides created before this field existed.
53
53
  const state = await loadState(projectRoot);
54
54
  const baseCommit = overrideConfig.baseCommit ?? state.baseCommit;
@@ -64,9 +64,9 @@ async function diffOverride(name, projectRoot, config) {
64
64
  continue;
65
65
  if (!isComponentSourceFile(entry.name))
66
66
  continue;
67
- // git show takes a repo-relative path. paths.engine IS the repo root.
67
+ // git show takes a repo-relative path. paths.engine is the repo root.
68
68
  // The slice leaves the host's separators behind, and `git show <ref>:<path>`
69
- // only understands forward slashes — on Windows the unnormalized form makes
69
+ // only understands forward slashes. On Windows the unnormalized form makes
70
70
  // every baseline read miss, so every overridden file is reported as a new
71
71
  // file and `furnace diff` shows nothing.
72
72
  const enginePath = normalizePathSlashes(getOverrideEngineTargetPath(paths.engine, overrideConfig, entry.name, ftlDir).slice(paths.engine.length + 1));
@@ -109,7 +109,7 @@ async function diffOverride(name, projectRoot, config) {
109
109
  * `furnace apply`.
110
110
  *
111
111
  * `.ftl` files deploy to `engine/<ftlDir>/<name>.ftl` via
112
- * `applyCustomFtlFile` — NOT to `customConfig.targetPath` — so the
112
+ * `applyCustomFtlFile`, not to `customConfig.targetPath`, so the
113
113
  * deployment-target lookup has to branch on extension. Without the branch, a
114
114
  * component's localization file always reports "not yet deployed to engine
115
115
  * (new file)" after a successful apply, because diff looks for it under the
@@ -138,7 +138,7 @@ async function diffCustom(name, projectRoot, config) {
138
138
  const workspacePath = join(customDir, entry.name);
139
139
  const workspaceContent = await readText(workspacePath);
140
140
  // `.ftl` files deploy to the locale tree, not the component's
141
- // targetPath; mirror `applyCustomFtlFile`'s target computation so the
141
+ // targetPath. Mirror `applyCustomFtlFile`'s target computation so the
142
142
  // diff header and the existence probe name the same path apply
143
143
  // writes to. Any change here must stay in lock-step with
144
144
  // `src/core/furnace-apply-ftl.ts`.
@@ -35,7 +35,7 @@ function registerFurnaceApplyCommand(furnace, context) {
35
35
  .option('-w, --watch', 'Watch component directories and re-apply on changes');
36
36
  addWaitLockOption(apply).action(withErrorHandling(async (name, options) => {
37
37
  const { waitLock, ...rest } = options ?? {};
38
- // Resolved ONCE and used twice: the engine session lock below, and
38
+ // Resolved once and used twice: the engine session lock below, and
39
39
  // the furnace lock the mutation takes inside it. Resolving twice
40
40
  // would be the same value today and a drift risk tomorrow.
41
41
  const waitLockSeconds = resolveWaitLockSeconds(waitLock);