@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
@@ -10,7 +10,7 @@ import { parseStringArray } from './furnace-config-array-utils.js';
10
10
  /**
11
11
  * Validates a `tokenHostDocuments` raw value. Each entry must be a non-empty
12
12
  * relative path contained in the engine tree. Throws `FurnaceError` on
13
- * violation; does nothing for `undefined` (field is optional).
13
+ * violation. Does nothing for `undefined` (field is optional).
14
14
  */
15
15
  export function validateTokenHostDocuments(raw) {
16
16
  if (raw === undefined)
@@ -27,8 +27,8 @@ export function validateTokenHostDocuments(raw) {
27
27
  }
28
28
  /**
29
29
  * Validates a `runtimeVariables` raw value. Each entry must start with `--`
30
- * (it is a CSS custom property name). Throws `FurnaceError` on violation;
31
- * does nothing for `undefined` (field is optional).
30
+ * (it is a CSS custom property name). Throws `FurnaceError` on violation.
31
+ * Does nothing for `undefined` (field is optional).
32
32
  */
33
33
  export function validateRuntimeVariables(raw) {
34
34
  if (raw === undefined)
@@ -110,8 +110,8 @@ export function applyOptionalFurnaceFields(migrated, config) {
110
110
  }
111
111
  config.ftlBasePath = migrated['ftlBasePath'];
112
112
  }
113
- // Validate optional typecheckJsconfig — consumer-owned jsconfig whose
114
- // chrome-elements `paths` entries Furnace maintains on deploy.
113
+ // Validate optional typecheckJsconfig. This is a consumer-owned jsconfig
114
+ // whose chrome-elements `paths` entries Furnace maintains on deploy.
115
115
  if (migrated['typecheckJsconfig'] !== undefined) {
116
116
  const jsconfigPath = migrated['typecheckJsconfig'];
117
117
  if (!isString(jsconfigPath) || jsconfigPath.includes('..')) {
@@ -70,8 +70,8 @@ export declare function writeFurnaceConfig(root: string, config: FurnaceConfig):
70
70
  * matching override stamp `doctor` fails Furnace component validation on
71
71
  * every override.
72
72
  *
73
- * The stamp is deliberately unconditional — `fireforge furnace validate` is
74
- * the right tool for "does this override still apply", and rebase has
73
+ * The stamp is unconditional: `fireforge furnace validate` is the right
74
+ * tool for "does this override still apply", and rebase has
75
75
  * already attested that the patch layer re-validated against the new ESR.
76
76
  *
77
77
  * @param root - Root directory of the project
@@ -92,11 +92,11 @@ export declare function stampFurnaceOverrideBaseVersions(root: string, version:
92
92
  * declarations.
93
93
  *
94
94
  * `validateFurnaceConfig` treats `tokenPrefix` as optional, so callers on
95
- * the no-arg call shape still get a valid config without a prefix; the CLI
95
+ * the no-arg call shape still get a valid config without a prefix. The CLI
96
96
  * init path always has a `binaryName` from `fireforge.json` and always sets
97
97
  * one.
98
98
  *
99
- * @param options - Optional init context; pass `{ binaryName }` to derive
99
+ * @param options - Optional init context. Pass `{ binaryName }` to derive
100
100
  * the token prefix.
101
101
  * @returns A valid FurnaceConfig
102
102
  */
@@ -61,7 +61,7 @@ function hasEntries(record) {
61
61
  const CURRENT_CONFIG_VERSION = 1;
62
62
  /**
63
63
  * Rejects a config whose `version` field is not the single schema version that
64
- * exists. A non-integer or sub-1 value is a malformed document; a value above
64
+ * exists. A non-integer or sub-1 value is a malformed document. A value above
65
65
  * the current version was written by a newer FireForge and cannot be read here.
66
66
  */
67
67
  function validateConfigVersion(version) {
@@ -100,10 +100,10 @@ export function validateFurnaceConfig(data) {
100
100
  if (raw['tokenAllowlist'] !== undefined) {
101
101
  parseStringArray(raw['tokenAllowlist'], 'tokenAllowlist');
102
102
  }
103
- // Validate optional runtimeVariables — CSS runtime state channels
103
+ // Validate optional runtimeVariables: CSS runtime state channels
104
104
  // (e.g. `--cam-x`) that are exempt from `token-prefix-violation`.
105
105
  validateRuntimeVariables(raw['runtimeVariables']);
106
- // Validate optional tokenHostDocuments — list of chrome XHTMLs that the
106
+ // Validate optional tokenHostDocuments: list of chrome XHTMLs that the
107
107
  // `missing-token-link` validator scans for the tokens CSS link.
108
108
  validateTokenHostDocuments(raw['tokenHostDocuments']);
109
109
  const stock = parseStockList(raw['stock']);
@@ -115,8 +115,8 @@ export function validateFurnaceConfig(data) {
115
115
  validateComposesReferences(stock, overrides, custom);
116
116
  // Warn when two custom components share a targetPath. Nothing technically
117
117
  // prevents co-location, but per-component removal and orphan detection
118
- // both reason about "files this component deployed into its directory" —
119
- // shared directories make those judgements ambiguous, and can lead to
118
+ // both reason about "files this component deployed into its directory".
119
+ // Shared directories make those judgements ambiguous, and can lead to
120
120
  // `furnace remove` of one component deleting the other's deployed files.
121
121
  const targetPathOwners = new Map();
122
122
  for (const [name, custom_] of Object.entries(custom)) {
@@ -154,8 +154,8 @@ function validateFurnaceState(data) {
154
154
  return result.state;
155
155
  }
156
156
  // Single source of truth: the list the union is derived from. The copy
157
- // this replaced was annotated, not linked — it caught a member REMOVED
158
- // from the union but never one ADDED to it, and listed them in a
157
+ // this replaced was annotated rather than linked, so it caught a member
158
+ // removed from the union but never one added to it, and listed them in a
159
159
  // different order.
160
160
  const PENDING_REPAIR_OPERATIONS = FURNACE_PENDING_REPAIR_OPERATIONS;
161
161
  function parsePendingRepair(data) {
@@ -338,14 +338,14 @@ export async function writeFurnaceConfig(root, config) {
338
338
  if (await pathExists(paths.furnaceConfig)) {
339
339
  try {
340
340
  const raw = await readJson(paths.furnaceConfig);
341
- // JSON.parse output is JSON data by construction, so the object
342
- // check is the only invariant left for the JsonObject contract.
341
+ // JSON.parse only produces JSON data, so the object check is the
342
+ // only invariant left for the JsonObject contract.
343
343
  if (isObject(raw))
344
344
  existing = raw;
345
345
  }
346
346
  catch {
347
347
  // A missing or corrupt furnace.json means there is no prior document to
348
- // preserve key order from; the writer falls back to canonical ordering.
348
+ // preserve key order from. The writer falls back to canonical ordering.
349
349
  existing = undefined;
350
350
  }
351
351
  }
@@ -359,8 +359,8 @@ export async function writeFurnaceConfig(root, config) {
359
359
  * matching override stamp `doctor` fails Furnace component validation on
360
360
  * every override.
361
361
  *
362
- * The stamp is deliberately unconditional — `fireforge furnace validate` is
363
- * the right tool for "does this override still apply", and rebase has
362
+ * The stamp is unconditional: `fireforge furnace validate` is the right
363
+ * tool for "does this override still apply", and rebase has
364
364
  * already attested that the patch layer re-validated against the new ESR.
365
365
  *
366
366
  * @param root - Root directory of the project
@@ -396,11 +396,11 @@ export async function stampFurnaceOverrideBaseVersions(root, version) {
396
396
  * declarations.
397
397
  *
398
398
  * `validateFurnaceConfig` treats `tokenPrefix` as optional, so callers on
399
- * the no-arg call shape still get a valid config without a prefix; the CLI
399
+ * the no-arg call shape still get a valid config without a prefix. The CLI
400
400
  * init path always has a `binaryName` from `fireforge.json` and always sets
401
401
  * one.
402
402
  *
403
- * @param options - Optional init context; pass `{ binaryName }` to derive
403
+ * @param options - Optional init context. Pass `{ binaryName }` to derive
404
404
  * the token prefix.
405
405
  * @returns A valid FurnaceConfig
406
406
  */
@@ -468,8 +468,8 @@ export async function updateFurnaceState(root, updates) {
468
468
  * Engine-relative path of the directory `furnace preview` writes its
469
469
  * generated Storybook story files into. Treated as Furnace-managed so
470
470
  * `status` does not flag them as unmanaged and `lint` does not fail on their
471
- * (intentionally bare) license headers — they are tool output, not files an
472
- * operator commits or hand-edits.
471
+ * (intentionally bare) license headers. They are tool output rather than
472
+ * files an operator commits or hand-edits.
473
473
  */
474
474
  const FURNACE_STORYBOOK_STORIES_PREFIX = 'browser/components/storybook/stories/furnace/';
475
475
  /**
@@ -504,8 +504,8 @@ export async function collectFurnaceManagedPrefixes(root) {
504
504
  }
505
505
  // Always include the preview-generated stories prefix when furnace is
506
506
  // initialised. The directory may not exist yet (no preview ever ran),
507
- // but classifying it as furnace-managed is safe even when empty —
508
- // status simply has nothing to bucket.
507
+ // but classifying it as furnace-managed is safe even when empty. Status
508
+ // simply has nothing to bucket.
509
509
  prefixes.add(FURNACE_STORYBOOK_STORIES_PREFIX);
510
510
  return prefixes;
511
511
  }
@@ -5,7 +5,7 @@ export declare const JAR_MN = "toolkit/content/jar.mn";
5
5
  /**
6
6
  * Upstream home of the MozLitElement widget sources.
7
7
  *
8
- * The trailing slash is NOT included: `build-audit-transforms.ts` needs
8
+ * The trailing slash is not included: `build-audit-transforms.ts` needs
9
9
  * `${WIDGETS_DIR}/` and its ordered prefix table depends on that slash, so
10
10
  * appending it at the one site that wants it keeps the others correct.
11
11
  */
@@ -27,15 +27,15 @@ export declare function xpcshellTestParentDir(binaryName: string): string;
27
27
  /**
28
28
  * Resolves the engine-relative directory a browser-chrome scaffold is
29
29
  * written to: the `--test-dir` override when given, else
30
- * `browser/base/content/test/<binaryName>`. The scaffolder AND the
30
+ * `browser/base/content/test/<binaryName>`. The scaffolder and the
31
31
  * dry-run / success formatters resolve through this one function, so the
32
32
  * printed plan cannot disagree with the files that land on disk.
33
33
  */
34
34
  export declare function resolveBrowserChromeTestDir(binaryName: string, override?: string): string;
35
35
  /**
36
36
  * Resolves the engine-relative directory an xpcshell scaffold is written
37
- * to. A `--test-dir` override names the FINAL directory (no per-component
38
- * segment is appended); the default is
37
+ * to. A `--test-dir` override names the final directory (no per-component
38
+ * segment is appended). The default is
39
39
  * `browser/base/content/test/<binaryName>-xpcshell/<componentName>`.
40
40
  */
41
41
  export declare function resolveXpcshellTestDir(binaryName: string, componentName: string, override?: string): string;
@@ -62,8 +62,8 @@ export declare function resolveFtlChromeSubPath(ftlBasePath?: string): string |
62
62
  * given `ftlBasePath`. For the default toolkit tree this yields
63
63
  * `toolkit/locales/jar.mn`.
64
64
  *
65
- * Returns `undefined` when the path does not contain a `locales/` segment —
66
- * callers must treat that as "cannot locate" and degrade gracefully.
65
+ * Returns `undefined` when the path does not contain a `locales/` segment.
66
+ * Callers must treat that as "cannot locate" and degrade gracefully.
67
67
  */
68
68
  export declare function resolveFtlLocaleJarMnPath(ftlBasePath?: string): string | undefined;
69
69
  /**
@@ -7,7 +7,7 @@ export const JAR_MN = 'toolkit/content/jar.mn';
7
7
  /**
8
8
  * Upstream home of the MozLitElement widget sources.
9
9
  *
10
- * The trailing slash is NOT included: `build-audit-transforms.ts` needs
10
+ * The trailing slash is not included: `build-audit-transforms.ts` needs
11
11
  * `${WIDGETS_DIR}/` and its ordered prefix table depends on that slash, so
12
12
  * appending it at the one site that wants it keeps the others correct.
13
13
  */
@@ -39,7 +39,7 @@ export function xpcshellTestParentDir(binaryName) {
39
39
  /**
40
40
  * Resolves the engine-relative directory a browser-chrome scaffold is
41
41
  * written to: the `--test-dir` override when given, else
42
- * `browser/base/content/test/<binaryName>`. The scaffolder AND the
42
+ * `browser/base/content/test/<binaryName>`. The scaffolder and the
43
43
  * dry-run / success formatters resolve through this one function, so the
44
44
  * printed plan cannot disagree with the files that land on disk.
45
45
  */
@@ -48,8 +48,8 @@ export function resolveBrowserChromeTestDir(binaryName, override) {
48
48
  }
49
49
  /**
50
50
  * Resolves the engine-relative directory an xpcshell scaffold is written
51
- * to. A `--test-dir` override names the FINAL directory (no per-component
52
- * segment is appended); the default is
51
+ * to. A `--test-dir` override names the final directory (no per-component
52
+ * segment is appended). The default is
53
53
  * `browser/base/content/test/<binaryName>-xpcshell/<componentName>`.
54
54
  */
55
55
  export function resolveXpcshellTestDir(binaryName, componentName, override) {
@@ -90,8 +90,8 @@ export function resolveFtlChromeSubPath(ftlBasePath) {
90
90
  * given `ftlBasePath`. For the default toolkit tree this yields
91
91
  * `toolkit/locales/jar.mn`.
92
92
  *
93
- * Returns `undefined` when the path does not contain a `locales/` segment —
94
- * callers must treat that as "cannot locate" and degrade gracefully.
93
+ * Returns `undefined` when the path does not contain a `locales/` segment.
94
+ * Callers must treat that as "cannot locate" and degrade gracefully.
95
95
  */
96
96
  export function resolveFtlLocaleJarMnPath(ftlBasePath) {
97
97
  const path = normalizePathSlashes(ftlBasePath ?? FTL_DIR);
@@ -9,8 +9,8 @@
9
9
  * @fireforge-include shared-anims.css
10
10
  *
11
11
  * naming a fragment file in `components/shared/`. `furnace deploy` expands
12
- * the fragment into the *deployed* copy only — the workspace source stays
13
- * DRY — fencing the expansion between the directive line and a matching
12
+ * the fragment into the *deployed* copy only (the workspace source stays
13
+ * DRY), fencing the expansion between the directive line and a matching
14
14
  * `@fireforge-end-include` marker so re-deploys can refresh it idempotently.
15
15
  *
16
16
  * Drift contract: the apply fast-path and `furnace validate` compare the
@@ -24,7 +24,7 @@ export { SHARED_FRAGMENTS_DIR } from './furnace-config.js';
24
24
  export declare function listFragmentIncludes(css: string): string[];
25
25
  /**
26
26
  * Collapses fenced fragment expansions back to their bare directives.
27
- * Inverse of {@link expandCssFragments}; used to compare a deployed file
27
+ * Inverse of {@link expandCssFragments}. Used to compare a deployed file
28
28
  * against its workspace source and to re-expand idempotently.
29
29
  */
30
30
  export declare function stripExpandedFragments(css: string): string;
@@ -52,7 +52,7 @@ export declare function expandCssFragments(css: string, sharedDir: string): Prom
52
52
  export declare function extractExpandedFragmentBodies(css: string): Map<string, string>;
53
53
  /**
54
54
  * Deploys one component file: CSS sources carrying include directives are
55
- * written as their fragment-expanded form; everything else is a plain
55
+ * written as their fragment-expanded form. Everything else is a plain
56
56
  * copy. Extracted here so `applyCustomComponent` stays inside the
57
57
  * per-file line budget.
58
58
  *
@@ -73,7 +73,7 @@ export declare function describeFragmentExpansion(src: string): Promise<string>;
73
73
  * @param componentDir - Workspace directory of the component
74
74
  * @param tagName - Component tag name for issue attribution
75
75
  * @param sharedDir - Shared fragments directory
76
- * @param engineTargetDir - Deployed directory in the engine (optional —
77
- * pre-deploy validation skips the staleness check)
76
+ * @param engineTargetDir - Deployed directory in the engine. Optional, and
77
+ * pre-deploy validation skips the staleness check.
78
78
  */
79
79
  export declare function validateCssFragments(componentDir: string, tagName: string, sharedDir: string, engineTargetDir?: string): Promise<ValidationIssue[]>;
@@ -10,8 +10,8 @@
10
10
  * @fireforge-include shared-anims.css
11
11
  *
12
12
  * naming a fragment file in `components/shared/`. `furnace deploy` expands
13
- * the fragment into the *deployed* copy only — the workspace source stays
14
- * DRY — fencing the expansion between the directive line and a matching
13
+ * the fragment into the *deployed* copy only (the workspace source stays
14
+ * DRY), fencing the expansion between the directive line and a matching
15
15
  * `@fireforge-end-include` marker so re-deploys can refresh it idempotently.
16
16
  *
17
17
  * Drift contract: the apply fast-path and `furnace validate` compare the
@@ -24,7 +24,7 @@ import { join } from 'node:path';
24
24
  import { FurnaceError } from '../errors/furnace.js';
25
25
  import { copyFile, pathExists, readText, writeText } from '../utils/fs.js';
26
26
  export { SHARED_FRAGMENTS_DIR } from './furnace-config.js';
27
- // Local copy of the directory name for message text — importing the
27
+ // Local copy of the directory name for message text. Importing the
28
28
  // binding for value use keeps a single source of truth.
29
29
  import { SHARED_FRAGMENTS_DIR } from './furnace-config.js';
30
30
  const INCLUDE_PATTERN = /^\s*\/\*\s*@fireforge-include\s+([\w./-]+)\s*\*\/\s*$/;
@@ -41,7 +41,7 @@ export function listFragmentIncludes(css) {
41
41
  }
42
42
  /**
43
43
  * Collapses fenced fragment expansions back to their bare directives.
44
- * Inverse of {@link expandCssFragments}; used to compare a deployed file
44
+ * Inverse of {@link expandCssFragments}. Used to compare a deployed file
45
45
  * against its workspace source and to re-expand idempotently.
46
46
  */
47
47
  export function stripExpandedFragments(css) {
@@ -54,8 +54,8 @@ export function stripExpandedFragments(css) {
54
54
  if (!inc?.[1])
55
55
  continue;
56
56
  // A bare directive (workspace file) has no fence to strip. Only skip
57
- // the expansion body when a matching end marker actually follows —
58
- // otherwise an unterminated fence would silently eat the rest of the
57
+ // the expansion body when a matching end marker actually follows.
58
+ // Otherwise an unterminated fence would silently eat the rest of the
59
59
  // file.
60
60
  let endIndex = -1;
61
61
  for (let j = i + 1; j < lines.length; j++) {
@@ -141,7 +141,7 @@ export function extractExpandedFragmentBodies(css) {
141
141
  }
142
142
  /**
143
143
  * Deploys one component file: CSS sources carrying include directives are
144
- * written as their fragment-expanded form; everything else is a plain
144
+ * written as their fragment-expanded form. Everything else is a plain
145
145
  * copy. Extracted here so `applyCustomComponent` stays inside the
146
146
  * per-file line budget.
147
147
  *
@@ -180,8 +180,8 @@ export async function describeFragmentExpansion(src) {
180
180
  * @param componentDir - Workspace directory of the component
181
181
  * @param tagName - Component tag name for issue attribution
182
182
  * @param sharedDir - Shared fragments directory
183
- * @param engineTargetDir - Deployed directory in the engine (optional —
184
- * pre-deploy validation skips the staleness check)
183
+ * @param engineTargetDir - Deployed directory in the engine. Optional, and
184
+ * pre-deploy validation skips the staleness check.
185
185
  */
186
186
  export async function validateCssFragments(componentDir, tagName, sharedDir, engineTargetDir) {
187
187
  const issues = [];
@@ -194,8 +194,8 @@ export async function validateCssFragments(componentDir, tagName, sharedDir, eng
194
194
  entries = await readdir(componentDir);
195
195
  }
196
196
  catch {
197
- // An unreadable component directory contributes no fragment issues; return
198
- // what has been collected so far rather than failing validation.
197
+ // An unreadable component directory contributes no fragment issues.
198
+ // Return what has been collected so far rather than failing validation.
199
199
  return issues;
200
200
  }
201
201
  for (const fileName of entries) {
@@ -11,7 +11,7 @@ export interface DirectoryEntry {
11
11
  name: string;
12
12
  }
13
13
  /**
14
- * True for a plain-file directory entry — symlinks and directories are
14
+ * True for a plain-file directory entry. Symlinks and directories are
15
15
  * never copy candidates.
16
16
  *
17
17
  * @param entry - Directory entry to classify
@@ -6,7 +6,7 @@
6
6
  * and its dry-run mirror can share one definition without importing each other.
7
7
  */
8
8
  /**
9
- * True for a plain-file directory entry — symlinks and directories are
9
+ * True for a plain-file directory entry. Symlinks and directories are
10
10
  * never copy candidates.
11
11
  *
12
12
  * @param entry - Directory entry to classify
@@ -11,10 +11,10 @@
11
11
  * automatically on every deploy.
12
12
  *
13
13
  * Ownership contract: only entries whose key starts with
14
- * `chrome://global/content/elements/` AND whose mapped path resolves into
14
+ * `chrome://global/content/elements/` and whose mapped path resolves into
15
15
  * the Furnace custom-components workspace are managed (added, updated,
16
- * pruned). Everything else in the jsconfig — including hand-written `paths`
17
- * entries pointing elsewhere — is preserved verbatim. No `baseUrl` is
16
+ * pruned). Everything else in the jsconfig, including hand-written `paths`
17
+ * entries pointing elsewhere, is preserved verbatim. No `baseUrl` is
18
18
  * required or written: relative `paths` resolve against the config file's
19
19
  * directory.
20
20
  */
@@ -32,13 +32,13 @@ export interface JsconfigSyncResult {
32
32
  }
33
33
  /**
34
34
  * Reconciles the managed `compilerOptions.paths` entries of the configured
35
- * jsconfig against the current Furnace workspace. Idempotent; writes only
36
- * when something actually changes; dry-run returns the diff without
35
+ * jsconfig against the current Furnace workspace. Idempotent, and writes
36
+ * only when something actually changes. Dry-run returns the diff without
37
37
  * writing.
38
38
  *
39
39
  * The consumer owns the jsconfig file: a missing file is an error with
40
40
  * guidance rather than a silent scaffold. JSONC comments and trailing commas
41
- * are preserved; Furnace edits only `compilerOptions.paths`.
41
+ * are preserved. Furnace edits only `compilerOptions.paths`.
42
42
  *
43
43
  * @param root - Project root directory
44
44
  * @param config - Loaded Furnace configuration (must carry `typecheckJsconfig`)
@@ -49,7 +49,7 @@ export declare function syncFurnaceJsconfigPaths(root: string, config: FurnaceCo
49
49
  }): Promise<JsconfigSyncResult>;
50
50
  /**
51
51
  * Computes jsconfig `paths` drift for `furnace validate`: managed entries
52
- * that are missing or stale relative to the current workspace. Read-only —
52
+ * that are missing or stale relative to the current workspace. Read-only:
53
53
  * delegates to {@link syncFurnaceJsconfigPaths} in dry-run mode.
54
54
  */
55
55
  export declare function findJsconfigPathsDrift(root: string, config: FurnaceConfig): Promise<JsconfigSyncResult>;
@@ -12,10 +12,10 @@
12
12
  * automatically on every deploy.
13
13
  *
14
14
  * Ownership contract: only entries whose key starts with
15
- * `chrome://global/content/elements/` AND whose mapped path resolves into
15
+ * `chrome://global/content/elements/` and whose mapped path resolves into
16
16
  * the Furnace custom-components workspace are managed (added, updated,
17
- * pruned). Everything else in the jsconfig — including hand-written `paths`
18
- * entries pointing elsewhere — is preserved verbatim. No `baseUrl` is
17
+ * pruned). Everything else in the jsconfig, including hand-written `paths`
18
+ * entries pointing elsewhere, is preserved verbatim. No `baseUrl` is
19
19
  * required or written: relative `paths` resolve against the config file's
20
20
  * directory.
21
21
  */
@@ -32,18 +32,18 @@ import { getFurnacePaths } from './furnace-config.js';
32
32
  const CHROME_ELEMENTS_URL_PREFIX = 'chrome://global/content/elements/';
33
33
  /**
34
34
  * Computes the desired managed `paths` entries: one per `.mjs` file of
35
- * every custom component — registered or not — keyed by its deployed
35
+ * every custom component, registered or not, keyed by its deployed
36
36
  * chrome URL and mapped to the workspace source relative to the jsconfig
37
37
  * directory. `register: false` components (notably `kind: "library"`
38
- * base-class modules, which REQUIRE register: false) are included because
38
+ * base-class modules, which require register: false) are included because
39
39
  * deploy copies their files and writes jar.mn entries under
40
- * `content/global/elements/` unconditionally — only the customElements.js
41
- * registration is gated on `register` — so their chrome URLs are just as
40
+ * `content/global/elements/` unconditionally. Only the customElements.js
41
+ * registration is gated on `register`, so their chrome URLs are just as
42
42
  * real as a registered component's.
43
43
  *
44
- * Workspace sources (not deployed engine copies) are the mapping target —
45
- * they are the files developers edit, and they exist even when the engine
46
- * has not been deployed yet.
44
+ * The mapping target is the workspace source, not the deployed engine
45
+ * copy. Those are the files developers edit, and they exist even when the
46
+ * engine has not been deployed yet.
47
47
  */
48
48
  async function computeDesiredChromePathEntries(config, customDir, jsconfigAbsPath) {
49
49
  const jsconfigDir = dirname(jsconfigAbsPath);
@@ -58,7 +58,7 @@ async function computeDesiredChromePathEntries(config, customDir, jsconfigAbsPat
58
58
  continue;
59
59
  // Emit a `./`-prefixed relative value. TypeScript treats a bare
60
60
  // `paths` value (`moz-widget/moz-widget.mjs`) as non-relative and
61
- // rejects it without `baseUrl` (TS5090); a `./`-prefixed value
61
+ // rejects it without `baseUrl` (TS5090). A `./`-prefixed value
62
62
  // resolves against the jsconfig directory with no `baseUrl` (which
63
63
  // TS6 deprecates, TS5101). `../`-prefixed paths are already relative
64
64
  // and left untouched.
@@ -86,18 +86,19 @@ function isManagedEntry(key, value, jsconfigDir, customDir) {
86
86
  return false;
87
87
  // Containment via `relative`, not a string prefix: a hard-coded `'/'`
88
88
  // separator never matches the backslashes `resolve` emits on Windows, which
89
- // demoted every managed entry to "unmanaged" there — no pruning, no updates.
89
+ // demoted every managed entry to "unmanaged" there, so no pruning and no
90
+ // updates.
90
91
  return isPathInsideRoot(customDir, resolve(jsconfigDir, value[0]));
91
92
  }
92
93
  /**
93
94
  * Reconciles the managed `compilerOptions.paths` entries of the configured
94
- * jsconfig against the current Furnace workspace. Idempotent; writes only
95
- * when something actually changes; dry-run returns the diff without
95
+ * jsconfig against the current Furnace workspace. Idempotent, and writes
96
+ * only when something actually changes. Dry-run returns the diff without
96
97
  * writing.
97
98
  *
98
99
  * The consumer owns the jsconfig file: a missing file is an error with
99
100
  * guidance rather than a silent scaffold. JSONC comments and trailing commas
100
- * are preserved; Furnace edits only `compilerOptions.paths`.
101
+ * are preserved. Furnace edits only `compilerOptions.paths`.
101
102
  *
102
103
  * @param root - Project root directory
103
104
  * @param config - Loaded Furnace configuration (must carry `typecheckJsconfig`)
@@ -143,8 +144,8 @@ export async function syncFurnaceJsconfigPaths(root, config, options) {
143
144
  ...(jsconfigObject.compilerOptions?.paths ?? {}),
144
145
  };
145
146
  const nextPaths = {};
146
- // Preserve every unmanaged entry verbatim; prune managed entries that are
147
- // no longer desired; update managed entries whose target moved.
147
+ // Preserve every unmanaged entry verbatim. Prune managed entries that are
148
+ // no longer desired. Update managed entries whose target moved.
148
149
  for (const [key, value] of Object.entries(currentPaths)) {
149
150
  if (!isManagedEntry(key, value, jsconfigDir, furnacePaths.customDir)) {
150
151
  nextPaths[key] = value;
@@ -157,8 +158,9 @@ export async function syncFurnaceJsconfigPaths(root, config, options) {
157
158
  }
158
159
  // Treat `./x` and bare `x` as equal so a previously-synced bare value (or
159
160
  // a hand-written `./` prefix) is not rewritten as "stale" on every run.
160
- // The existing value is kept verbatim when equivalent — no churn either
161
- // way; only a genuinely different target updates (to the `./` form).
161
+ // The existing value is kept verbatim when equivalent, so there is no
162
+ // churn either way. Only a genuinely different target updates (to the
163
+ // `./` form).
162
164
  if (!samePathValue(value[0], want[0] ?? '')) {
163
165
  result.updated.push(key);
164
166
  nextPaths[key] = want;
@@ -184,7 +186,7 @@ export async function syncFurnaceJsconfigPaths(root, config, options) {
184
186
  }
185
187
  /**
186
188
  * Computes jsconfig `paths` drift for `furnace validate`: managed entries
187
- * that are missing or stale relative to the current workspace. Read-only —
189
+ * that are missing or stale relative to the current workspace. Read-only:
188
190
  * delegates to {@link syncFurnaceJsconfigPaths} in dry-run mode.
189
191
  */
190
192
  export async function findJsconfigPathsDrift(root, config) {