@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
@@ -20,7 +20,7 @@ import { describePatchNameProblem, normalizePatchDisplayName, PATCH_CATEGORIES,
20
20
  export async function runPatchLint(options) {
21
21
  const { engineDir, filesAffected, diffContent, config, skipLint, patchQueueCtx, ignoreChecks, patchTier, } = options;
22
22
  // Compute the tier decision independently of the lint pipeline so it can
23
- // be surfaced even when the rule body emitted no issues — a branding patch
23
+ // be surfaced even when the rule body emitted no issues. A branding patch
24
24
  // under the soft threshold still benefits from operators knowing which
25
25
  // tier governed the run. The same helper is reused inside `lintPatchSize`,
26
26
  // so the surfaced tier and the tier that actually drove the thresholds
@@ -100,8 +100,8 @@ export function reportPatchLintOutcome(issues, skipLint) {
100
100
  */
101
101
  export async function promptExportPatchMetadata(options, isInteractive, commandName, config) {
102
102
  const categories = config !== undefined ? getPatchPolicyCategories(config) : [...PATCH_CATEGORIES];
103
- // A filename-shaped `--name foo.patch` must not die on the dot rule —
104
- // strip the extension before validation so the one-step flow works for
103
+ // A filename-shaped `--name foo.patch` must not die on the dot rule, so
104
+ // strip the extension before validation and the one-step flow works for
105
105
  // both name shapes.
106
106
  let patchName = options.name?.trim().replace(/\.patch$/i, '');
107
107
  if (patchName) {
@@ -158,7 +158,7 @@ export async function promptExportPatchMetadata(options, isInteractive, commandN
158
158
  description = descResult;
159
159
  }
160
160
  }
161
- // The filename slug pipeline strips redundant category prefixes; the
161
+ // The filename slug pipeline strips redundant category prefixes. The
162
162
  // manifest display name must agree, or every `export --name ui-foo`
163
163
  // needs a follow-up `patch rename` to satisfy bare-slug naming policy.
164
164
  const normalized = normalizePatchDisplayName(patchName, category);
@@ -208,14 +208,14 @@ export async function confirmSupersedePatches(patchesDir, filesAffected, superse
208
208
  * Detects new files missing license headers and offers to add them.
209
209
  *
210
210
  * In interactive mode the user is prompted before any files are modified. In
211
- * non-interactive mode the function is a no-op — the existing lint error
211
+ * non-interactive mode the function is a no-op. The existing lint error
212
212
  * blocks the export instead.
213
213
  *
214
214
  * @param engineDir - Absolute path to engine directory
215
215
  * @param diffContent - Current unified diff
216
216
  * @param config - Project configuration
217
217
  * @param isInteractive - Whether interactive prompts are available
218
- * @param dryRun - When true, only REPORT missing headers, never prompt or
218
+ * @param dryRun - When true, only report missing headers, never prompt or
219
219
  * write. Dry-run must stay read-only: without this flag an interactive
220
220
  * `export --dry-run` prompts (default Yes), writes license headers into
221
221
  * engine/ files, and then closes with "no changes made".
@@ -293,7 +293,7 @@ export async function autoFixLicenseHeaders(engineDir, diffContent, config, isIn
293
293
  *
294
294
  * Returns an empty map when no overlap exists. Used by the overlap gate in
295
295
  * `export` and `export-all` to refuse a default-mode export that would
296
- * silently create cross-patch ownership conflicts — the same class of
296
+ * silently create cross-patch ownership conflicts, the same class of
297
297
  * conflict `verify` immediately fails with.
298
298
  */
299
299
  export function findPartialOwnershipOverlap(manifest, filesAffected, excludeFilenames) {
@@ -315,16 +315,16 @@ export function findPartialOwnershipOverlap(manifest, filesAffected, excludeFile
315
315
  /**
316
316
  * Gate that refuses the default export path when the new patch would
317
317
  * silently claim files already tracked by other non-superseded patches.
318
- * `findAllPatchesForFiles` catches the full-coverage supersede case; this
319
- * fills the gap for PARTIAL overlap — two patches both claiming e.g.
318
+ * `findAllPatchesForFiles` catches the full-coverage supersede case. This
319
+ * fills the gap for partial overlap: two patches both claiming e.g.
320
320
  * `browser/themes/shared/jar.inc.mn` after a second export with `--before`.
321
321
  *
322
322
  * Proceeds silently when there is no overlap, or when the caller passed
323
323
  * `--allow-overlap`. In interactive mode the caller is prompted to
324
324
  * acknowledge the overlap (the proper fix path is `re-export --files` to
325
325
  * repartition ownership, so the prompt surfaces that pointer). In
326
- * non-interactive mode it throws — better to fail fast than let the queue
327
- * fall out of sync with verify.
326
+ * non-interactive mode it throws, since failing fast beats letting the
327
+ * queue fall out of sync with verify.
328
328
  */
329
329
  export async function guardOwnershipOverlap(args) {
330
330
  const { patchesDir, filesAffected, supersedingFilenames, allowOverlap, isInteractive, s } = args;
@@ -364,7 +364,7 @@ export async function guardOwnershipOverlap(args) {
364
364
  * order: the supersede confirmation, then the cross-patch ownership overlap
365
365
  * guard. The overlap guard receives the filenames of the patches the export
366
366
  * would fully supersede so it does not flag a file claimed by a patch that
367
- * is about to be removed. Catching only FULL-coverage supersedes leaves a
367
+ * is about to be removed. Catching only full-coverage supersedes leaves a
368
368
  * second export targeting a shared file creating a queue where two patches
369
369
  * both claim it and `verify` fails immediately.
370
370
  *
@@ -375,7 +375,7 @@ export async function guardOwnershipOverlap(args) {
375
375
  * @param args.allowOverlap - The command's `--allow-overlap` flag
376
376
  * @param args.isInteractive - Whether prompting the operator is possible
377
377
  * @param args.s - Active spinner, stopped before any prompt
378
- * @returns `true` when both gates passed; `false` when the operator declined
378
+ * @returns `true` when both gates passed, `false` when the operator declined
379
379
  * (the caller returns without committing)
380
380
  */
381
381
  export async function runSupersedeAndOverlapGates(args) {
@@ -88,11 +88,11 @@ async function collectExportFiles(paths, files) {
88
88
  return { files: [...collectedFiles].sort(), fromDirectory };
89
89
  }
90
90
  /**
91
- * Auto-excludes directory-derived files already owned by OTHER patches.
91
+ * Auto-excludes directory-derived files already owned by other patches.
92
92
  *
93
93
  * A directory export otherwise plans files owned by earlier patches into the
94
94
  * new patch, and the duplicate-new-file-creation refusal surfaces only at
95
- * placement lint, suggesting `--force-unsafe` — the wrong tool for "leave
95
+ * placement lint, suggesting `--force-unsafe`, the wrong tool for "leave
96
96
  * that file with its owner". Explicitly named files are never excluded (the
97
97
  * overlap gates still confront the operator with those). Prints one notice
98
98
  * per exclusion.
@@ -217,7 +217,7 @@ async function prepareExport(projectRoot, files, options) {
217
217
  }
218
218
  const config = await loadConfig(projectRoot);
219
219
  const isInteractive = stdioIsInteractive();
220
- // Auto-fix missing license headers on new files (interactive only;
220
+ // Auto-fix missing license headers on new files (interactive only, and
221
221
  // report-only under --dry-run so the preview never mutates engine/)
222
222
  const headersAdded = await autoFixLicenseHeaders(paths.engine, diff, config, isInteractive, options.dryRun ?? false);
223
223
  if (headersAdded) {
@@ -269,7 +269,7 @@ export async function exportCommand(projectRoot, files, options) {
269
269
  patchTier: options.tier,
270
270
  });
271
271
  // Resolve placement (if any flag was given). Placement is mutually
272
- // exclusive with supersede — the semantics overlap confusingly.
272
+ // exclusive with supersede, because the semantics overlap confusingly.
273
273
  let placementPlan = null;
274
274
  if (placementFlagCount > 0) {
275
275
  const gated = await gatePlacementPlan({
@@ -29,7 +29,7 @@ async function snapshotWatchedChecksums(watchDirs) {
29
29
  }
30
30
  }
31
31
  catch {
32
- // Directory may have been removed between iterations — ignore.
32
+ // Directory may have been removed between iterations, so ignore.
33
33
  }
34
34
  }
35
35
  return combined;
@@ -46,7 +46,7 @@ function checksumMapsEqual(a, b) {
46
46
  /**
47
47
  * Builds a watch-loop apply-failure message tailored to the error class so
48
48
  * transient filesystem errors (EACCES, ENOSPC, lock timeout) look different
49
- * from genuine apply-level failures; the previous generic "Apply failed: ..."
49
+ * from genuine apply-level failures. The previous generic "Apply failed: ..."
50
50
  * collapsed all causes into one string and made diagnosis difficult.
51
51
  */
52
52
  function classifyWatchApplyError(err) {
@@ -74,8 +74,8 @@ function classifyWatchApplyError(err) {
74
74
  }
75
75
  async function runWatchLoop(projectRoot) {
76
76
  const furnacePaths = getFurnacePaths(projectRoot);
77
- // Both categories are eligible targets. The set is fixed; only existence
78
- // varies over time — a component dir created AFTER watch started (the user
77
+ // Both categories are eligible targets. The set is fixed. Only existence
78
+ // varies over time: a component dir created after watch started (the user
79
79
  // running `furnace create` in another terminal) must be picked up without
80
80
  // restarting watch. A one-shot `pathExists` check at startup captures only
81
81
  // the dirs that existed then, leaving any later creation invisible.
@@ -115,8 +115,8 @@ async function runWatchLoop(projectRoot) {
115
115
  // for changes that are already reflected in the engine.
116
116
  lastChecksums = await snapshotWatchedChecksums(watchDirs);
117
117
  }
118
- // Another change arrived while we were applying — run again so the edit
119
- // is not silently absorbed into the post-apply checksum bump.
118
+ // Another change arrived while we were applying, so run again and the
119
+ // edit is not silently absorbed into the post-apply checksum bump.
120
120
  if (pendingChange) {
121
121
  pendingChange = false;
122
122
  await runApplyCycle();
@@ -124,7 +124,7 @@ async function runWatchLoop(projectRoot) {
124
124
  };
125
125
  const triggerApply = () => {
126
126
  if (applyInFlight) {
127
- // An apply is already running; record the change so runApplyCycle
127
+ // An apply is already running. Record the change so runApplyCycle
128
128
  // re-runs after it completes. Do not schedule a new debounce: the
129
129
  // in-flight apply will observe this flag when it finishes.
130
130
  pendingChange = true;
@@ -136,7 +136,7 @@ async function runWatchLoop(projectRoot) {
136
136
  debounceTimer = null;
137
137
  if (applyInFlight) {
138
138
  // Race with a change that started its own apply between the debounce
139
- // scheduling and the timer firing. Record the pending change; the
139
+ // scheduling and the timer firing. Record the pending change. The
140
140
  // in-flight apply will pick it up.
141
141
  pendingChange = true;
142
142
  return;
@@ -188,7 +188,7 @@ async function runWatchLoop(projectRoot) {
188
188
  }
189
189
  return added;
190
190
  };
191
- // Register signal-driven cleanup BEFORE creating watchers so there is no
191
+ // Register signal-driven cleanup before creating watchers so there is no
192
192
  // race window where a SIGINT could arrive after watchers exist but before
193
193
  // cleanup handlers are registered.
194
194
  const cleanup = () => {
@@ -229,7 +229,7 @@ async function runWatchLoop(projectRoot) {
229
229
  }
230
230
  }
231
231
  catch {
232
- // Best effort — errors here are transient filesystem issues.
232
+ // Best effort: errors here are transient filesystem issues.
233
233
  }
234
234
  })();
235
235
  }, WATCH_POLL_INTERVAL_MS);
@@ -277,14 +277,14 @@ export async function furnaceApplyCommand(projectRoot, name, options = {}) {
277
277
  }
278
278
  const applySpinner = dryRun ? undefined : spinner('Applying components to engine...');
279
279
  const result = await runFurnaceMutation(projectRoot, 'apply-rollback', async (ctx) => {
280
- // `persistState: false` for a NAMED apply is load-bearing: the batch
281
- // persist path replaces `appliedChecksums` wholesale with only this
282
- // run's entries, and the batch loops filter to the named component —
283
- // so routing a named apply through it persists a state file containing
284
- // ONLY that component, wiping every other component's checksums.
280
+ // `persistState: false` for a named apply matters: the batch persist
281
+ // path replaces `appliedChecksums` wholesale with only this run's
282
+ // entries, and the batch loops filter to the named component, so
283
+ // routing a named apply through it persists a state file containing
284
+ // only that component and wipes every other component's checksums.
285
285
  // Orphan detection and deleted-file undeploy both key on that state,
286
286
  // so the wiped components' stale engine files become invisible to
287
- // apply AND to `furnace validate`. Named apply merges per-component
287
+ // apply and to `furnace validate`. Named apply merges per-component
288
288
  // state below, exactly like `furnace deploy <name>`.
289
289
  const applyResult = await applyAllComponents(projectRoot, dryRun, {
290
290
  operationContext: ctx,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `fireforge furnace chrome-doc remove <name>` — removes the files and
2
+ * `fireforge furnace chrome-doc remove <name>` removes the files and
3
3
  * registrations created by `furnace chrome-doc create`.
4
4
  */
5
5
  /** Options for `furnace chrome-doc remove`. */
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * `fireforge furnace chrome-doc remove <name>` — removes the files and
3
+ * `fireforge furnace chrome-doc remove <name>` removes the files and
4
4
  * registrations created by `furnace chrome-doc create`.
5
5
  */
6
6
  import { readdir } from 'node:fs/promises';
@@ -41,21 +41,21 @@
41
41
  */
42
42
  export declare function generateChromeDocXhtml(name: string, withTitlebar: boolean, license: string): string;
43
43
  /**
44
- * browser.xhtml-like scaffold for the document that ships as the fork's MAIN
45
- * BROWSER WINDOW.
44
+ * browser.xhtml-like scaffold for the document that ships as the fork's main
45
+ * browser window.
46
46
  *
47
47
  * The generic dialog-shaped `<window>` scaffold is wrong for the
48
48
  * `tokenHostDocuments[0]` / BROWSER_CHROME_URL target: platform C++ reads
49
- * the root element BEFORE any script runs, and expects the `browser.xhtml`
49
+ * the root element before any script runs, and expects the `browser.xhtml`
50
50
  * shape:
51
51
  *
52
- * - `<html id="main-window">` root (not `<window id="<name>-window">`) —
52
+ * - `<html id="main-window">` root (not `<window id="<name>-window">`):
53
53
  * upstream code from nsXULWindow sizing to session restore looks up
54
- * `main-window` by id;
54
+ * `main-window` by id.
55
55
  * - `windowtype="navigator:browser"`, `chromehidden=""` and the geometry
56
- * `persist` allowlist declared as ROOT ATTRIBUTES so the platform's
56
+ * `persist` allowlist declared as root attributes so the platform's
57
57
  * pre-script pass (window tracking, XULStore geometry, chrome flags) sees
58
- * them;
58
+ * them.
59
59
  * - the same head/bootstrap wiring (customElements.js, per-doc subscript,
60
60
  * CSS + Fluent links) and `data-furnace-chrome-doc` sentinel as the
61
61
  * generic scaffold, so jar.mn registration and the platform-module guard
@@ -89,7 +89,7 @@ export declare function generateChromeDocJs(name: string, licenseHeader: string)
89
89
  * the platform window controls that `global.css` applies by default.
90
90
  */
91
91
  export declare function generateChromeDocCss(name: string, withTitlebar: boolean, licenseHeader: string): string;
92
- /** Fluent stub — one placeholder message keyed to the window title. */
92
+ /** Fluent stub with one placeholder message keyed to the window title. */
93
93
  export declare function generateChromeDocFtl(name: string, licenseHeader: string): string;
94
94
  /**
95
95
  * Single-line jar.mn entry that registers an xhtml + js pair under
@@ -110,7 +110,7 @@ export declare function jarMnEntriesForChromeDoc(name: string): string[];
110
110
  * The source path is `../shared/<name>-chrome.css` because `jar.inc.mn` is
111
111
  * included from each theme-specific manifest (`browser/themes/osx/jar.mn`,
112
112
  * `.../linux/`, `.../windows/`), and every existing entry in those manifests
113
- * resolves paths relative to the INCLUDING manifest's directory. A bare
113
+ * resolves paths relative to the including manifest's directory. A bare
114
114
  * `(shared/…)` path resolves to
115
115
  * `obj-.../browser/themes/osx/shared/<name>-chrome.css`, which does not
116
116
  * exist.
@@ -120,7 +120,7 @@ export declare function jarIncMnEntryForChromeDoc(name: string): string;
120
120
  * locales/jar.mn entry that registers the `.ftl` under the browser locale
121
121
  * bundle. The source path is resolved by mach-locale-jar relative to the
122
122
  * per-locale root (e.g. `engine/browser/locales/en-US/`), and the FTL file
123
- * is scaffolded at `browser/${name}.ftl` under that root — the `%` prefix
123
+ * is scaffolded at `browser/${name}.ftl` under that root. The `%` prefix
124
124
  * means "per-locale content" and the `browser/` subdirectory matches where
125
125
  * the scaffolder writes. A bare `(%${name}.ftl)` points at
126
126
  * `en-US/${name}.ftl` and breaks the first post-scaffold build with
@@ -132,11 +132,11 @@ export declare function localeJarMnEntryForChromeDoc(name: string): string;
132
132
  * wildcard rooted at `%browser/` whose pattern would already pick up a
133
133
  * scaffolded `browser/<name>.ftl` file. Recognises:
134
134
  *
135
- * - `(%browser/**\/*.ftl)` — recursive (the upstream shape).
136
- * - `(%browser/*.ftl)` — flat.
135
+ * - `(%browser/**\/*.ftl)`: recursive (the upstream shape).
136
+ * - `(%browser/*.ftl)`: flat.
137
137
  *
138
138
  * Forks that have migrated entirely to `[localization]` wildcards typically
139
- * keep no per-file `locale/...` entries for FTL at all; appending one
139
+ * keep no per-file `locale/...` entries for FTL at all. Appending one
140
140
  * there is dead weight at best, and an outright build break when the fork
141
141
  * has also dropped the `% locale browser …` registration. The chrome-doc
142
142
  * scaffolder consults this predicate before its locales/jar.mn append and
@@ -146,7 +146,7 @@ export declare function localeJarMnEntryForChromeDoc(name: string): string;
146
146
  * Conservative by design: only wildcards rooted at `%browser/` count, and
147
147
  * a `(%browser/foo.ftl)`-style explicit reference (no `*`) is not treated
148
148
  * as a capture. A fork with a narrower wildcard (e.g. `(%browser/about/*.ftl)`)
149
- * is correctly NOT captured by this predicate, because that wildcard would
149
+ * is correctly not captured by this predicate, because that wildcard would
150
150
  * not pick up the top-level `browser/<name>.ftl` the scaffold writes.
151
151
  */
152
152
  export declare function localesFtlWildcardCapturesScaffoldedName(jarMnContents: string): boolean;
@@ -12,7 +12,7 @@
12
12
  * Sentinel attribute emitted on every `furnace chrome-doc create`-scaffolded
13
13
  * root element. Platform modules (`DevToolsStartup`, `PageActions`,
14
14
  * `SessionStore`, `DownloadsButton`, …) that observe
15
- * `browser-delayed-startup-finished` and walk INTO the window assume the
15
+ * `browser-delayed-startup-finished` and walk into the window assume the
16
16
  * `browser.xhtml` DOM and throw on anything else. A fork-authored patch
17
17
  * to such a module can use `hasAttribute(...)` against this sentinel as
18
18
  * a cheap, fork-neutral guard to skip the walk on a custom chrome doc.
@@ -54,8 +54,8 @@ const FURNACE_CHROME_DOC_SENTINEL = 'data-furnace-chrome-doc';
54
54
  * the README "Platform module compatibility" section for the pattern.
55
55
  */
56
56
  export function generateChromeDocXhtml(name, withTitlebar, license) {
57
- // navigator:browser minimum set. Carrying every attribute together —
58
- // not just `windowtype` — lets a fork that uses the scaffold output
57
+ // navigator:browser minimum set. Carrying every attribute together, not
58
+ // just `windowtype`, lets a fork that uses the scaffold output
59
59
  // verbatim launch as a real main window: `customtitlebar` opts into the
60
60
  // platform-native title bar handling that pairs with the buttonbox
61
61
  // markup below, the explicit width/height avoid the OS-minimum first
@@ -99,21 +99,21 @@ export function generateChromeDocXhtml(name, withTitlebar, license) {
99
99
  `;
100
100
  }
101
101
  /**
102
- * browser.xhtml-like scaffold for the document that ships as the fork's MAIN
103
- * BROWSER WINDOW.
102
+ * browser.xhtml-like scaffold for the document that ships as the fork's main
103
+ * browser window.
104
104
  *
105
105
  * The generic dialog-shaped `<window>` scaffold is wrong for the
106
106
  * `tokenHostDocuments[0]` / BROWSER_CHROME_URL target: platform C++ reads
107
- * the root element BEFORE any script runs, and expects the `browser.xhtml`
107
+ * the root element before any script runs, and expects the `browser.xhtml`
108
108
  * shape:
109
109
  *
110
- * - `<html id="main-window">` root (not `<window id="<name>-window">`) —
110
+ * - `<html id="main-window">` root (not `<window id="<name>-window">`):
111
111
  * upstream code from nsXULWindow sizing to session restore looks up
112
- * `main-window` by id;
112
+ * `main-window` by id.
113
113
  * - `windowtype="navigator:browser"`, `chromehidden=""` and the geometry
114
- * `persist` allowlist declared as ROOT ATTRIBUTES so the platform's
114
+ * `persist` allowlist declared as root attributes so the platform's
115
115
  * pre-script pass (window tracking, XULStore geometry, chrome flags) sees
116
- * them;
116
+ * them.
117
117
  * - the same head/bootstrap wiring (customElements.js, per-doc subscript,
118
118
  * CSS + Fluent links) and `data-furnace-chrome-doc` sentinel as the
119
119
  * generic scaffold, so jar.mn registration and the platform-module guard
@@ -252,7 +252,7 @@ export function generateChromeDocCss(name, withTitlebar, licenseHeader) {
252
252
  }${titlebarOverrides}
253
253
  `;
254
254
  }
255
- /** Fluent stub — one placeholder message keyed to the window title. */
255
+ /** Fluent stub with one placeholder message keyed to the window title. */
256
256
  export function generateChromeDocFtl(name, licenseHeader) {
257
257
  return `${licenseHeader}
258
258
 
@@ -283,7 +283,7 @@ export function jarMnEntriesForChromeDoc(name) {
283
283
  * The source path is `../shared/<name>-chrome.css` because `jar.inc.mn` is
284
284
  * included from each theme-specific manifest (`browser/themes/osx/jar.mn`,
285
285
  * `.../linux/`, `.../windows/`), and every existing entry in those manifests
286
- * resolves paths relative to the INCLUDING manifest's directory. A bare
286
+ * resolves paths relative to the including manifest's directory. A bare
287
287
  * `(shared/…)` path resolves to
288
288
  * `obj-.../browser/themes/osx/shared/<name>-chrome.css`, which does not
289
289
  * exist.
@@ -295,7 +295,7 @@ export function jarIncMnEntryForChromeDoc(name) {
295
295
  * locales/jar.mn entry that registers the `.ftl` under the browser locale
296
296
  * bundle. The source path is resolved by mach-locale-jar relative to the
297
297
  * per-locale root (e.g. `engine/browser/locales/en-US/`), and the FTL file
298
- * is scaffolded at `browser/${name}.ftl` under that root — the `%` prefix
298
+ * is scaffolded at `browser/${name}.ftl` under that root. The `%` prefix
299
299
  * means "per-locale content" and the `browser/` subdirectory matches where
300
300
  * the scaffolder writes. A bare `(%${name}.ftl)` points at
301
301
  * `en-US/${name}.ftl` and breaks the first post-scaffold build with
@@ -309,11 +309,11 @@ export function localeJarMnEntryForChromeDoc(name) {
309
309
  * wildcard rooted at `%browser/` whose pattern would already pick up a
310
310
  * scaffolded `browser/<name>.ftl` file. Recognises:
311
311
  *
312
- * - `(%browser/**\/*.ftl)` — recursive (the upstream shape).
313
- * - `(%browser/*.ftl)` — flat.
312
+ * - `(%browser/**\/*.ftl)`: recursive (the upstream shape).
313
+ * - `(%browser/*.ftl)`: flat.
314
314
  *
315
315
  * Forks that have migrated entirely to `[localization]` wildcards typically
316
- * keep no per-file `locale/...` entries for FTL at all; appending one
316
+ * keep no per-file `locale/...` entries for FTL at all. Appending one
317
317
  * there is dead weight at best, and an outright build break when the fork
318
318
  * has also dropped the `% locale browser …` registration. The chrome-doc
319
319
  * scaffolder consults this predicate before its locales/jar.mn append and
@@ -323,7 +323,7 @@ export function localeJarMnEntryForChromeDoc(name) {
323
323
  * Conservative by design: only wildcards rooted at `%browser/` count, and
324
324
  * a `(%browser/foo.ftl)`-style explicit reference (no `*`) is not treated
325
325
  * as a capture. A fork with a narrower wildcard (e.g. `(%browser/about/*.ftl)`)
326
- * is correctly NOT captured by this predicate, because that wildcard would
326
+ * is correctly not captured by this predicate, because that wildcard would
327
327
  * not pick up the top-level `browser/<name>.ftl` the scaffold writes.
328
328
  */
329
329
  export function localesFtlWildcardCapturesScaffoldedName(jarMnContents) {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Returns the canonical xpcshell test basename for a chrome doc packaging
3
- * check (`test_<name>_packaging.js`). Hyphens in `<name>` are preserved —
3
+ * check (`test_<name>_packaging.js`). Hyphens in `<name>` are preserved:
4
4
  * xpcshell permits them in file basenames even though the derived task
5
5
  * function names replace them with underscores.
6
6
  */
@@ -16,7 +16,7 @@ export declare function generateChromeDocPackagingTest(name: string, header: str
16
16
  /**
17
17
  * Emits the `xpcshell.toml` manifest for the packaging test directory.
18
18
  * Sets `firefox-appdir = "browser"` so XCurProcD resolves to the browser
19
- * subdir rather than the generic gecko runtime dir — without that, the
19
+ * subdir rather than the generic gecko runtime dir. Without that, the
20
20
  * path probe walks the wrong tree on every fork whose app directory is
21
21
  * not the default.
22
22
  */
@@ -10,7 +10,7 @@
10
10
  * - xpcshell's `chrome://browser/*` URI registration lags what the real
11
11
  * browser loads even with `firefox-appdir = "browser"` set, so
12
12
  * `NetUtil.asyncFetch("chrome://browser/content/<name>.xhtml")` can fail
13
- * with `NS_ERROR_FILE_NOT_FOUND` against a file that IS correctly
13
+ * with `NS_ERROR_FILE_NOT_FOUND` against a file that is correctly
14
14
  * packaged.
15
15
  * - Browser-chrome mochitests require a `tabbrowser`, which a
16
16
  * fork-authored chrome doc that replaces `browser.xhtml` deliberately
@@ -23,13 +23,13 @@
23
23
  * is stable across platforms at
24
24
  * `<AppDir>/chrome/browser/content/browser/<name>.xhtml` on an unpacked tree
25
25
  * (the default for `mach build` without `MOZ_CHROME_MULTILOCALE` / omnijar).
26
- * A tree that packs omni.ja would need a different probe; the scaffold notes
26
+ * A tree that packs omni.ja would need a different probe. The scaffold notes
27
27
  * that out-of-scope case explicitly rather than silently producing a test
28
28
  * that fails on packed builds.
29
29
  */
30
30
  /**
31
31
  * Returns the canonical xpcshell test basename for a chrome doc packaging
32
- * check (`test_<name>_packaging.js`). Hyphens in `<name>` are preserved —
32
+ * check (`test_<name>_packaging.js`). Hyphens in `<name>` are preserved:
33
33
  * xpcshell permits them in file basenames even though the derived task
34
34
  * function names replace them with underscores.
35
35
  */
@@ -132,7 +132,7 @@ add_task(async function test_${taskSuffix}_files_packaged() {
132
132
  /**
133
133
  * Emits the `xpcshell.toml` manifest for the packaging test directory.
134
134
  * Sets `firefox-appdir = "browser"` so XCurProcD resolves to the browser
135
- * subdir rather than the generic gecko runtime dir — without that, the
135
+ * subdir rather than the generic gecko runtime dir. Without that, the
136
136
  * path probe walks the wrong tree on every fork whose app directory is
137
137
  * not the default.
138
138
  */
@@ -1,10 +1,10 @@
1
1
  /**
2
- * `fireforge furnace chrome-doc create <name>` — scaffolds a top-level
2
+ * `fireforge furnace chrome-doc create <name>` scaffolds a top-level
3
3
  * chrome document (xhtml + js + css + ftl + jar.mn registrations).
4
4
  *
5
5
  * `furnace create` covers custom elements under `toolkit/content/widgets/`,
6
- * but top-level chrome documents — the `mybrowser.xhtml`-class entry points
7
- * a fork adds alongside or instead of `browser.xhtml` — are otherwise
6
+ * but top-level chrome documents (the `mybrowser.xhtml`-class entry points
7
+ * a fork adds alongside or instead of `browser.xhtml`) are otherwise
8
8
  * hand-authored with error-prone jar.mn + jar.inc.mn + locales/jar.mn glue.
9
9
  * The `*` preprocessor flag, the macOS titlebar-button carve-out, the
10
10
  * startup-topic observer, and the Fluent linkage each have silent-break
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * This command writes the four source files and appends three jar.mn entries
14
14
  * under a rollback journal identical in shape to `furnace create`. A SIGINT
15
- * mid-scaffold restores every touched file; a successful run leaves the tree
15
+ * mid-scaffold restores every touched file. A successful run leaves the tree
16
16
  * ready for `fireforge build`.
17
17
  */
18
18
  /** Options for `furnace chrome-doc create`. */
@@ -28,16 +28,16 @@ export interface FurnaceChromeDocCreateOptions {
28
28
  * Scaffold an xpcshell packaging-verification test alongside the chrome
29
29
  * document. The generated test probes `XCurProcD/chrome/browser/...` on
30
30
  * disk rather than going through `chrome://` URI resolution, which
31
- * bypasses xpcshell's limited browser-chrome manifest set — where
31
+ * bypasses xpcshell's limited browser-chrome manifest set, where
32
32
  * `NetUtil.asyncFetch` returns `NS_ERROR_FILE_NOT_FOUND` against a file
33
- * that IS packaged. Registration in `XPCSHELL_TESTS_MANIFESTS` is left to
33
+ * that is packaged. Registration in `XPCSHELL_TESTS_MANIFESTS` is left to
34
34
  * the operator because the owning moz.build depends on the fork's layout.
35
35
  */
36
36
  withTests?: boolean;
37
37
  /** Print the scaffold plan without writing files. */
38
38
  dryRun?: boolean;
39
39
  /**
40
- * Emit the browser.xhtml-like MAIN-WINDOW skeleton (`<html
40
+ * Emit the browser.xhtml-like main-window skeleton (`<html
41
41
  * id="main-window">` with the `windowtype`/`chromehidden`/`persist`
42
42
  * root attributes platform C++ reads before scripts run) instead of
43
43
  * the generic dialog-shaped `<window>` document. Use for the document
@@ -49,7 +49,7 @@ export interface FurnaceChromeDocCreateOptions {
49
49
  }
50
50
  /**
51
51
  * Validates a chrome-doc name. Lowercase ASCII, optional hyphens, no
52
- * leading digit — the name is used verbatim in CSS selectors, jar.mn
52
+ * leading digit. The name is used verbatim in CSS selectors, jar.mn
53
53
  * entries, FTL keys, and file basenames, so anything outside that
54
54
  * character set would break at least one downstream consumer.
55
55
  * @param name Chrome-doc name (file basename without extension).
@@ -1,11 +1,11 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * `fireforge furnace chrome-doc create <name>` — scaffolds a top-level
3
+ * `fireforge furnace chrome-doc create <name>` scaffolds a top-level
4
4
  * chrome document (xhtml + js + css + ftl + jar.mn registrations).
5
5
  *
6
6
  * `furnace create` covers custom elements under `toolkit/content/widgets/`,
7
- * but top-level chrome documents — the `mybrowser.xhtml`-class entry points
8
- * a fork adds alongside or instead of `browser.xhtml` — are otherwise
7
+ * but top-level chrome documents (the `mybrowser.xhtml`-class entry points
8
+ * a fork adds alongside or instead of `browser.xhtml`) are otherwise
9
9
  * hand-authored with error-prone jar.mn + jar.inc.mn + locales/jar.mn glue.
10
10
  * The `*` preprocessor flag, the macOS titlebar-button carve-out, the
11
11
  * startup-topic observer, and the Fluent linkage each have silent-break
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * This command writes the four source files and appends three jar.mn entries
15
15
  * under a rollback journal identical in shape to `furnace create`. A SIGINT
16
- * mid-scaffold restores every touched file; a successful run leaves the tree
16
+ * mid-scaffold restores every touched file. A successful run leaves the tree
17
17
  * ready for `fireforge build`.
18
18
  */
19
19
  import { join } from 'node:path';
@@ -33,7 +33,7 @@ import { chromeDocPackagingTestFileName, generateChromeDocPackagingManifest, gen
33
33
  const CHROME_DOC_NAME_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
34
34
  /**
35
35
  * Validates a chrome-doc name. Lowercase ASCII, optional hyphens, no
36
- * leading digit — the name is used verbatim in CSS selectors, jar.mn
36
+ * leading digit. The name is used verbatim in CSS selectors, jar.mn
37
37
  * entries, FTL keys, and file basenames, so anything outside that
38
38
  * character set would break at least one downstream consumer.
39
39
  * @param name Chrome-doc name (file basename without extension).
@@ -154,8 +154,8 @@ function renderChromeDocCreateDryRun(name, plan) {
154
154
  */
155
155
  async function appendJarEntryIfAbsent(filePath, entry, journal) {
156
156
  if (!(await pathExists(filePath))) {
157
- // Target jar.mn doesn't exist in this tree layout. We do NOT create it
158
- // — a fork that moved the jar file needs the operator to choose a
157
+ // Target jar.mn doesn't exist in this tree layout. We do not create it:
158
+ // a fork that moved the jar file needs the operator to choose a
159
159
  // placement. The command surfaces this as a FurnaceError so the user
160
160
  // can investigate rather than silently writing to a non-canonical path.
161
161
  throw new FurnaceError(`Required jar file ${filePath} does not exist; cannot register chrome-doc entry. Check that the fork's engine layout matches the expected browser/ and locales/ tree.`);
@@ -177,7 +177,7 @@ async function performChromeDocMutations(args) {
177
177
  const journal = createRollbackJournal();
178
178
  args.operationContext.registerJournal(journal);
179
179
  // XHTML uses an inline XML comment since getLicenseHeader has no XML
180
- // style — the SPDX convention is a single-line comment at the top.
180
+ // style. The SPDX convention is a single-line comment at the top.
181
181
  const jsHeader = getLicenseHeader(args.license, 'js');
182
182
  const cssHeader = getLicenseHeader(args.license, 'css');
183
183
  const ftlHeader = getLicenseHeader(args.license, 'hash');
@@ -213,7 +213,7 @@ async function performChromeDocMutations(args) {
213
213
  await snapshotFile(journal, ftlPath);
214
214
  await writeText(ftlPath, generateChromeDocFtl(args.name, ftlHeader));
215
215
  written.push(`browser/locales/en-US/browser/${args.name}.ftl`);
216
- // jar.mn registrations — XHTML + JS go through the `*` preprocessor
216
+ // jar.mn registrations: XHTML + JS go through the `*` preprocessor
217
217
  // for brand substitution, CSS goes through jar.inc.mn, FTL through
218
218
  // the locale jar.
219
219
  const jarMnPath = join(args.engineDir, 'browser/base/jar.mn');
@@ -226,12 +226,12 @@ async function performChromeDocMutations(args) {
226
226
  written.push('browser/themes/shared/jar.inc.mn');
227
227
  const localeJarMnPath = join(args.engineDir, 'browser/locales/jar.mn');
228
228
  // Forks that have migrated to a `[localization] (%browser/**/*.ftl)`
229
- // wildcard already pick up the scaffolded FTL automatically — appending
230
- // a per-file `locale/...` entry on top is at best dead weight and at
231
- // worst a build error when the fork has dropped the `% locale browser`
232
- // registration the per-file entry depends on. The wildcard predicate is
233
- // intentionally narrow: only `%browser/`-rooted globs ending in `*.ftl`
234
- // count as a capture.
229
+ // wildcard already pick up the scaffolded FTL automatically, so
230
+ // appending a per-file `locale/...` entry on top is at best dead weight
231
+ // and at worst a build error when the fork has dropped the
232
+ // `% locale browser` registration the per-file entry depends on. The
233
+ // wildcard predicate is narrow on purpose: only `%browser/`-rooted globs
234
+ // ending in `*.ftl` count as a capture.
235
235
  if (await pathExists(localeJarMnPath)) {
236
236
  const existingLocaleJar = await readText(localeJarMnPath);
237
237
  if (localesFtlWildcardCapturesScaffoldedName(existingLocaleJar)) {
@@ -298,12 +298,12 @@ export async function furnaceChromeDocCreateCommand(projectRoot, name, options =
298
298
  });
299
299
  const browserWindow = options.browserWindow ?? false;
300
300
  // The browser-window skeleton always carries its own titlebar markup and
301
- // chrome attributes; --no-titlebar only applies to the generic scaffold.
301
+ // chrome attributes. --no-titlebar only applies to the generic scaffold.
302
302
  const withTitlebar = browserWindow ? true : (options.titlebar ?? true);
303
303
  const withTests = options.withTests ?? false;
304
304
  // Hint: when the scaffolded document is the configured token-host document
305
305
  // (the fork's main browser window), the generic dialog-shaped scaffold is
306
- // almost certainly wrong — correct jar.mn registrations, wrong document
306
+ // almost certainly wrong: correct jar.mn registrations, wrong document
307
307
  // body.
308
308
  if (!browserWindow && (await furnaceConfigExists(projectRoot))) {
309
309
  try {
@@ -317,7 +317,7 @@ export async function furnaceChromeDocCreateCommand(projectRoot, name, options =
317
317
  }
318
318
  }
319
319
  catch {
320
- // A broken furnace.json must not block chrome-doc scaffolding; the
320
+ // A broken furnace.json must not block chrome-doc scaffolding. The
321
321
  // hint is best-effort.
322
322
  }
323
323
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Browser-chrome test scaffolding for `furnace create --with-tests`,
3
3
  * including the `--test-dir` redirect and collision safety (existing
4
- * manifests are appended to; head.js and test implementations are never
4
+ * manifests are appended to, and head.js and test implementations are never
5
5
  * overwritten). Split out of `create.ts` to keep that command file within
6
6
  * the per-file line budget.
7
7
  */