@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
@@ -94,7 +94,7 @@ export async function checkRegistrationConsistency(root, name, config, ftlDir) {
94
94
  // Check target directory
95
95
  const targetDir = join(engineDir, config.targetPath);
96
96
  status.targetExists = await pathExists(targetDir);
97
- // Compare files (sourceExists is guaranteed true — we early-returned above)
97
+ // Compare files (sourceExists is guaranteed true, we early-returned above)
98
98
  if (status.targetExists) {
99
99
  const entries = await readdir(componentDir, { withFileTypes: true });
100
100
  for (const entry of entries) {
@@ -110,7 +110,7 @@ export async function checkRegistrationConsistency(root, name, config, ftlDir) {
110
110
  continue;
111
111
  }
112
112
  // Deploy writes CSS-with-include-directives in fragment-expanded form,
113
- // so the drift oracle must compare the *expanded* source — otherwise a
113
+ // so the drift oracle must compare the *expanded* source. Otherwise a
114
114
  // freshly deployed component would read as permanently drifted, and a
115
115
  // fragment edit would never read as drifted at all.
116
116
  let srcContent = await readText(srcPath);
@@ -119,8 +119,8 @@ export async function checkRegistrationConsistency(root, name, config, ftlDir) {
119
119
  srcContent = (await expandCssFragments(srcContent, furnacePaths.sharedDir)).expanded;
120
120
  }
121
121
  catch {
122
- // Missing fragment: validate reports it as `missing-fragment`;
123
- // for drift purposes fall back to the raw source so the compare
122
+ // Missing fragment: validate reports it as `missing-fragment`.
123
+ // For drift purposes fall back to the raw source so the compare
124
124
  // still happens deterministically.
125
125
  }
126
126
  }
@@ -175,7 +175,7 @@ export async function checkRegistrationConsistency(root, name, config, ftlDir) {
175
175
  const cePath = join(engineDir, CUSTOM_ELEMENTS_JS);
176
176
  if (await pathExists(cePath)) {
177
177
  const ceContent = await readText(cePath);
178
- // Structure-aware check shared with the ADD path — a bare substring
178
+ // Structure-aware check shared with the add path. A bare substring
179
179
  // test counted any mention of the tag (a leftover comment, an
180
180
  // unrelated string) as "registered", masking genuinely missing
181
181
  // registrations from both validate and the re-apply drift oracle.
@@ -267,7 +267,7 @@ const AUTO_DETECT_HOST_DIR = 'browser/base/content';
267
267
  * This catches a fork that mounts a custom element from its own top-level
268
268
  * chrome document (e.g. `mybrowser.xhtml`) without setting
269
269
  * `tokenHostDocuments`: scanning only the stock `browser.xhtml` would miss
270
- * the tokens CSS link in the ACTUAL host document and false-fire the
270
+ * the tokens CSS link in the actual host document and false-fire the
271
271
  * warning.
272
272
  *
273
273
  * @param engineDir Absolute engine root.
@@ -280,7 +280,7 @@ const AUTO_DETECT_HOST_DIR = 'browser/base/content';
280
280
  * `validateAllComponents` walks every component, and re-parsing
281
281
  * `fireforge.json` plus re-scanning every `.xhtml` under the chrome-document
282
282
  * directory per component is one config parse and one full directory read
283
- * PER COMPONENT, for work that depends only on the project and the engine.
283
+ * per component, for work that depends only on the project and the engine.
284
284
  *
285
285
  * Keyed by root/engine dir and cleared by
286
286
  * {@link resetRegistrationValidationCaches} at the start of each run, so a
@@ -291,9 +291,9 @@ const chromeDocumentCache = new Map();
291
291
  /**
292
292
  * Whether a batch validation is in flight.
293
293
  *
294
- * The caches are consulted ONLY while this is set. Outside a batch — a direct
294
+ * The caches are consulted only while this is set. Outside a batch (a direct
295
295
  * `validateComponent` call from `furnace status`, from apply's consistency
296
- * check, or from a test — every read goes to disk, so a caller that mutates
296
+ * check, or from a test) every read goes to disk, so a caller that mutates
297
297
  * the engine between calls can never be served a stale document.
298
298
  */
299
299
  let batchInFlight = false;
@@ -356,7 +356,7 @@ async function loadChromeDocuments(engineDir) {
356
356
  return documents;
357
357
  }
358
358
  async function autoDetectTokenHostDocuments(engineDir, tagName, already) {
359
- // Reads the directory ONCE per run rather than once per component: only the
359
+ // Reads the directory once per run rather than once per component: only the
360
360
  // tag being searched for differs between components.
361
361
  const documents = await loadChromeDocuments(engineDir);
362
362
  const alreadySet = new Set(already);
@@ -377,10 +377,10 @@ async function autoDetectTokenHostDocuments(engineDir, tagName, already) {
377
377
  *
378
378
  * Scan set is the union of (a) the configured `tokenHostDocuments` (or
379
379
  * the upstream default when unset) and (b) any `browser/base/content/*.xhtml`
380
- * document that references `tagName` — the auto-detection path catches
380
+ * document that references `tagName`. The auto-detection path catches
381
381
  * forks that mount components from a replacement chrome document without
382
382
  * having configured `tokenHostDocuments`. The warning fires only when
383
- * NONE of the documents in the final scan set link the tokens CSS.
383
+ * none of the documents in the final scan set link the tokens CSS.
384
384
  */
385
385
  export async function validateTokenLink(componentDir, tagName, root, tokenPrefix, tokenHostDocuments) {
386
386
  const issues = [];
@@ -481,7 +481,7 @@ export async function runPostApplyConsistencyChecks(root, config, result, ftlDir
481
481
  }
482
482
  }
483
483
  catch {
484
- // Consistency check is best-effort; failures here should not block apply
484
+ // Consistency check is best-effort. Failures here should not block apply
485
485
  }
486
486
  }
487
487
  }
@@ -2,7 +2,7 @@ import type { ComponentType, CustomComponentConfig, ValidationIssue } from '../t
2
2
  /**
3
3
  * Returns true when file content carries unresolved three-way-merge
4
4
  * conflict markers (as left behind by `furnace refresh`). Shared between
5
- * the structure validator and `furnace sync`'s pre-apply gate — both must
5
+ * the structure validator and `furnace sync`'s pre-apply gate. Both must
6
6
  * agree on what "conflicted" means so a file that validate flags can never
7
7
  * slip through sync into the engine.
8
8
  */
@@ -5,7 +5,7 @@ import { pathExists, readText } from '../utils/fs.js';
5
5
  /**
6
6
  * Returns true when file content carries unresolved three-way-merge
7
7
  * conflict markers (as left behind by `furnace refresh`). Shared between
8
- * the structure validator and `furnace sync`'s pre-apply gate — both must
8
+ * the structure validator and `furnace sync`'s pre-apply gate. Both must
9
9
  * agree on what "conflicted" means so a file that validate flags can never
10
10
  * slip through sync into the engine.
11
11
  */
@@ -37,7 +37,7 @@ export async function validateStructure(componentDir, tagName, type, customConfi
37
37
  message: `Required file ${tagName}.mjs not found.`,
38
38
  });
39
39
  }
40
- // .css should exist — except for library components (base class + helpers,
40
+ // .css should exist, except for library components (base class + helpers,
41
41
  // no element of their own), which render nothing and need no stylesheet.
42
42
  if (!(await pathExists(cssPath)) && customConfig?.kind !== 'library') {
43
43
  issues.push({
@@ -52,8 +52,8 @@ export async function validateStructure(componentDir, tagName, type, customConfi
52
52
  // localization payload is empty, which is hard to spot in review.
53
53
  //
54
54
  // Components that declare `sharedFtl` participate in a pre-existing
55
- // feature-scoped bundle, so there is no per-component .ftl to require —
56
- // the shared file is owned by whoever authored the feature bundle.
55
+ // feature-scoped bundle, so there is no per-component .ftl to require.
56
+ // The shared file is owned by whoever authored the feature bundle.
57
57
  if (type === 'custom' && customConfig?.localized && !customConfig.sharedFtl) {
58
58
  const ftlPath = join(componentDir, `${tagName}.ftl`);
59
59
  if (!(await pathExists(ftlPath))) {
@@ -61,8 +61,8 @@ export async function validateComponent(componentDir, tagName, type, config, roo
61
61
  if (root) {
62
62
  issues.push(...(await validateTokenLink(componentDir, tagName, root, config?.tokenPrefix, config?.tokenHostDocuments)));
63
63
  }
64
- // CSS fragment checks: missing fragment files are structural errors;
65
- // stale deployed expansions are drift the next deploy refreshes.
64
+ // CSS fragment checks: missing fragment files are structural errors.
65
+ // Stale deployed expansions are drift the next deploy refreshes.
66
66
  if (type === 'custom') {
67
67
  const furnacePaths = getFurnacePaths(root ?? join(componentDir, '..', '..', '..'));
68
68
  const engineTargetDir = root && config?.custom[tagName]
@@ -81,7 +81,7 @@ export async function validateComponent(componentDir, tagName, type, config, roo
81
81
  // When root is provided and this is a custom component with registration,
82
82
  // also run registration pattern and jar.mn validation for this component.
83
83
  // Skipped when an outer orchestrator (validateAllComponents) will run the
84
- // aggregate versions itself; otherwise the same issues are reported twice.
84
+ // aggregate versions itself. Otherwise the same issues are reported twice.
85
85
  if (root && config && type === 'custom' && !options?.skipAggregateChecks) {
86
86
  const customConfig = config.custom[tagName];
87
87
  if (customConfig?.register) {
@@ -183,7 +183,7 @@ export async function validateAllComponents(root) {
183
183
  continue;
184
184
  }
185
185
  // Pass root so that per-component token link validation runs.
186
- // Skip registration/jar.mn checks inside validateComponent — the aggregate
186
+ // Skip registration/jar.mn checks inside validateComponent. The aggregate
187
187
  // validators below run them exactly once across all components, which both
188
188
  // surfaces cross-component issues and avoids double-counting.
189
189
  const issues = await validateComponent(componentDir, name, 'custom', config, root, {
@@ -209,7 +209,7 @@ export async function validateAllComponents(root) {
209
209
  // `furnace create --with-tests --xpcshell` scaffolds a test directory at
210
210
  // `browser/base/content/test/<binary>-xpcshell/<name>/`. A leftover
211
211
  // scaffold whose `<name>` is not in furnace.json is almost always the
212
- // aftermath of an incomplete `furnace remove` or `rename`; flag it as an
212
+ // aftermath of an incomplete `furnace remove` or `rename`. Flag it as an
213
213
  // `orphan-xpcshell-scaffold` error so operators delete or re-create the
214
214
  // scaffold instead of discovering the mismatch at test run time. A
215
215
  // missing engine or scaffold parent directory degrades silently, so this
@@ -224,14 +224,14 @@ export async function validateAllComponents(root) {
224
224
  }
225
225
  }
226
226
  catch {
227
- // Validation degrades gracefully — the absence of an engine
227
+ // Validation degrades gracefully: the absence of an engine
228
228
  // directory, permission denial reading the scaffold tree, or any
229
229
  // other transient fs issue should never cascade into false
230
230
  // "orphan" reports.
231
231
  }
232
232
  // jsconfig chrome-module paths drift: when `typecheckJsconfig` is
233
- // configured, deploy maintains a paths mapping per deployed module file;
234
- // missing or stale entries mean typed cross-module imports are silently
233
+ // configured, deploy maintains a paths mapping per deployed module file.
234
+ // Missing or stale entries mean typed cross-module imports are silently
235
235
  // degrading to `any` in the consumer's typecheck.
236
236
  if (config.typecheckJsconfig) {
237
237
  try {
@@ -256,7 +256,7 @@ export async function validateAllComponents(root) {
256
256
  }
257
257
  catch {
258
258
  // Drift detection must not break validation when the jsconfig is
259
- // missing or unparsable — deploy reports those cases with guidance.
259
+ // missing or unparsable. Deploy reports those cases with guidance.
260
260
  }
261
261
  }
262
262
  return results;
@@ -5,19 +5,19 @@
5
5
  * Overrides are forks of Firefox source files taken at a specific point in
6
6
  * time. If Firefox moves forward and the override's `baseVersion` is not
7
7
  * refreshed, the override may apply against a file whose upstream shape has
8
- * changed — the single biggest silent failure mode for furnace.
8
+ * changed, which is the single biggest silent failure mode for furnace.
9
9
  *
10
10
  * Deliberately pure and string-only: no I/O, and no parsing of Firefox
11
11
  * version components. String equality is sufficient because `fireforge.json`
12
12
  * stores a canonical version string (e.g. `"140.9.0esr"`) and overrides are
13
13
  * created with exactly that string copied from
14
- * `forgeConfig.firefox.version`. Any mismatch is worth surfacing — even
14
+ * `forgeConfig.firefox.version`. Any mismatch is worth surfacing: even
15
15
  * "140.0" vs "140.9.0esr" is a real drift signal.
16
16
  *
17
- * The result GATES apply/deploy: both warn and then FAIL without --force
17
+ * The result gates apply/deploy: both warn and then fail without --force
18
18
  * (see furnaceApplyCommand / furnaceDeployCommand), and `furnace sync`
19
19
  * re-checks it after refresh before applying. Status reports drift alongside
20
- * the component overview. Keep this doc in sync with the gates — it is not
20
+ * the component overview. Keep this doc in sync with the gates. It is not
21
21
  * advisory.
22
22
  */
23
23
  import type { FurnaceConfig } from '../types/furnace.js';
@@ -35,7 +35,7 @@ export interface OverrideVersionDrift {
35
35
  /**
36
36
  * Classifies how severe a version drift is by comparing the numeric
37
37
  * components of the two version strings. Falls back to `'major'` when
38
- * either version is unparseable — this ensures that unusual version
38
+ * either version is unparseable. This ensures that unusual version
39
39
  * formats surface with the highest visibility rather than being silently
40
40
  * downgraded.
41
41
  */
@@ -6,19 +6,19 @@
6
6
  * Overrides are forks of Firefox source files taken at a specific point in
7
7
  * time. If Firefox moves forward and the override's `baseVersion` is not
8
8
  * refreshed, the override may apply against a file whose upstream shape has
9
- * changed — the single biggest silent failure mode for furnace.
9
+ * changed, which is the single biggest silent failure mode for furnace.
10
10
  *
11
11
  * Deliberately pure and string-only: no I/O, and no parsing of Firefox
12
12
  * version components. String equality is sufficient because `fireforge.json`
13
13
  * stores a canonical version string (e.g. `"140.9.0esr"`) and overrides are
14
14
  * created with exactly that string copied from
15
- * `forgeConfig.firefox.version`. Any mismatch is worth surfacing — even
15
+ * `forgeConfig.firefox.version`. Any mismatch is worth surfacing: even
16
16
  * "140.0" vs "140.9.0esr" is a real drift signal.
17
17
  *
18
- * The result GATES apply/deploy: both warn and then FAIL without --force
18
+ * The result gates apply/deploy: both warn and then fail without --force
19
19
  * (see furnaceApplyCommand / furnaceDeployCommand), and `furnace sync`
20
20
  * re-checks it after refresh before applying. Status reports drift alongside
21
- * the component overview. Keep this doc in sync with the gates — it is not
21
+ * the component overview. Keep this doc in sync with the gates. It is not
22
22
  * advisory.
23
23
  */
24
24
  /**
@@ -39,7 +39,7 @@ function parseVersionComponents(version) {
39
39
  /**
40
40
  * Classifies how severe a version drift is by comparing the numeric
41
41
  * components of the two version strings. Falls back to `'major'` when
42
- * either version is unparseable — this ensures that unusual version
42
+ * either version is unparseable. This ensures that unusual version
43
43
  * formats surface with the highest visibility rather than being silently
44
44
  * downgraded.
45
45
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Environment variable that overrides the monolithic `git add -A` timeout
3
3
  * (milliseconds). Operators on slow or loaded filesystems can legitimately
4
- * exceed the 10-minute default during a baseline indexing pass; making the
4
+ * exceed the 10-minute default during a baseline indexing pass. Making the
5
5
  * cap overridable lets them retry without recompiling.
6
6
  */
7
7
  export declare const GIT_ADD_TIMEOUT_ENV_VAR = "FIREFORGE_GIT_ADD_TIMEOUT_MS";
@@ -48,7 +48,7 @@ export interface GitStatusEntry {
48
48
  }
49
49
  /**
50
50
  * Ensures git is available in the system. Memoised after the first successful
51
- * probe; {@link git} calls it, so callers that go through that wrapper do not
51
+ * probe. {@link git} calls it, so callers that go through that wrapper do not
52
52
  * need to.
53
53
  * @throws GitNotFoundError if git is not installed
54
54
  */
@@ -67,7 +67,7 @@ export declare function git(args: string[], cwd: string, options?: {
67
67
  * Splits a pathspec list into chunks whose joined byte length stays well under
68
68
  * the OS `ARG_MAX` limit, so a single batched `git` invocation over hundreds of
69
69
  * Mozilla-length paths cannot fail with `E2BIG`. The 96 KB budget is
70
- * deliberately conservative — even the smallest historical `ARG_MAX` (256 KB)
70
+ * conservative on purpose: even the smallest historical `ARG_MAX` (256 KB)
71
71
  * leaves room for the fixed git arguments plus the inherited environment.
72
72
  *
73
73
  * Chunk boundaries are output-neutral for every batched caller here: each
@@ -93,7 +93,7 @@ export declare function configureGitPerformance(repoDir: string): Promise<void>;
93
93
  * rewrites LF to CRLF on checkout and back on staging. FireForge cannot
94
94
  * tolerate that: patch bodies are byte diffs of the working tree, and
95
95
  * `hashObjectBatch` deliberately delegates to git so `.gitattributes` and
96
- * `core.autocrlf` DO apply to the hashes `status` compares against. Under the
96
+ * `core.autocrlf` do apply to the hashes `status` compares against. Under the
97
97
  * global default the same tree hashes differently on Windows than everywhere
98
98
  * else, so exported patches and drift detection disagree across machines.
99
99
  * Setting it per-repository leaves the developer's global config alone.
@@ -5,7 +5,7 @@ import { readOnlyGitIndexEnv } from './git-readonly-index.js';
5
5
  /**
6
6
  * Environment variable that overrides the monolithic `git add -A` timeout
7
7
  * (milliseconds). Operators on slow or loaded filesystems can legitimately
8
- * exceed the 10-minute default during a baseline indexing pass; making the
8
+ * exceed the 10-minute default during a baseline indexing pass. Making the
9
9
  * cap overridable lets them retry without recompiling.
10
10
  */
11
11
  export const GIT_ADD_TIMEOUT_ENV_VAR = 'FIREFORGE_GIT_ADD_TIMEOUT_MS';
@@ -46,15 +46,15 @@ export const GIT_ADD_CHUNK_TIMEOUT_MS = resolveTimeoutFromEnv(GIT_ADD_CHUNK_TIME
46
46
  * In-flight or settled successful `git` availability probe.
47
47
  *
48
48
  * The probe spawns `which git` (or `where` on Windows), and every git wrapper
49
- * in this layer used to run it before each command — dozens of extra spawns
50
- * per `fireforge export`. Only SUCCESS is cached: a rejection clears the slot
51
- * so a run that installs git mid-flight (or a test that flips the probe) sees
52
- * the new answer instead of a sticky refusal.
49
+ * in this layer used to run it before each command, which meant dozens of
50
+ * extra spawns per `fireforge export`. Only success is cached: a rejection
51
+ * clears the slot so a run that installs git mid-flight (or a test that flips
52
+ * the probe) sees the new answer instead of a sticky refusal.
53
53
  */
54
54
  let gitAvailability;
55
55
  /**
56
56
  * Ensures git is available in the system. Memoised after the first successful
57
- * probe; {@link git} calls it, so callers that go through that wrapper do not
57
+ * probe. {@link git} calls it, so callers that go through that wrapper do not
58
58
  * need to.
59
59
  * @throws GitNotFoundError if git is not installed
60
60
  */
@@ -86,7 +86,7 @@ export async function git(args, cwd, options) {
86
86
  }
87
87
  // A read-only command's private-index scope overlays GIT_INDEX_FILE so
88
88
  // index refreshes never touch the primary checkout.
89
- // Merged UNDER the caller's own env so an explicit override still wins.
89
+ // Merged under the caller's own env so an explicit override still wins.
90
90
  const readOnlyIndexEnv = readOnlyGitIndexEnv(cwd);
91
91
  if (options?.env !== undefined || readOnlyIndexEnv !== undefined) {
92
92
  execOptions.env = { ...readOnlyIndexEnv, ...options?.env };
@@ -101,7 +101,7 @@ export async function git(args, cwd, options) {
101
101
  * Splits a pathspec list into chunks whose joined byte length stays well under
102
102
  * the OS `ARG_MAX` limit, so a single batched `git` invocation over hundreds of
103
103
  * Mozilla-length paths cannot fail with `E2BIG`. The 96 KB budget is
104
- * deliberately conservative — even the smallest historical `ARG_MAX` (256 KB)
104
+ * conservative on purpose: even the smallest historical `ARG_MAX` (256 KB)
105
105
  * leaves room for the fixed git arguments plus the inherited environment.
106
106
  *
107
107
  * Chunk boundaries are output-neutral for every batched caller here: each
@@ -150,7 +150,7 @@ export async function configureGitPerformance(repoDir) {
150
150
  * rewrites LF to CRLF on checkout and back on staging. FireForge cannot
151
151
  * tolerate that: patch bodies are byte diffs of the working tree, and
152
152
  * `hashObjectBatch` deliberately delegates to git so `.gitattributes` and
153
- * `core.autocrlf` DO apply to the hashes `status` compares against. Under the
153
+ * `core.autocrlf` do apply to the hashes `status` compares against. Under the
154
154
  * global default the same tree hashes differently on Windows than everywhere
155
155
  * else, so exported patches and drift detection disagree across machines.
156
156
  * Setting it per-repository leaves the developer's global config alone.
@@ -9,7 +9,7 @@ export type NewFileContent = {
9
9
  * Reads a new (untracked) file and classifies it for patch generation.
10
10
  *
11
11
  * A file is binary when git's NUL-byte heuristic says so
12
- * ({@link isBinaryFile}) OR when its bytes are not valid UTF-8 — see the
12
+ * ({@link isBinaryFile}) or when its bytes are not valid UTF-8. See the
13
13
  * module comment for why the second arm exists. Text files come back with
14
14
  * their exact decoded content so callers do not read the file twice.
15
15
  *
@@ -23,13 +23,13 @@ export declare function readNewFileContent(repoDir: string, filePath: string): P
23
23
  * as binary.
24
24
  *
25
25
  * `git diff --binary` only emits a `GIT binary patch` for a file git itself
26
- * classifies as binary, and git's classifier is the NUL heuristic — a
27
- * Latin-1 file passes it and comes out as a TEXT diff whose high bytes are
26
+ * classifies as binary, and git's classifier is the NUL heuristic, so a
27
+ * Latin-1 file passes it and comes out as a text diff whose high bytes are
28
28
  * then mangled by the UTF-8 decode every subprocess result goes through.
29
29
  * The `-diff` attribute is how git is told otherwise, and a throwaway
30
30
  * `core.attributesFile` naming just this path is the narrowest way to set it
31
31
  * without touching the tree's own `.gitattributes`. (An in-tree attribute
32
- * that explicitly sets `diff` for the path would still win; the tree's own
32
+ * that explicitly sets `diff` for the path would still win. The tree's own
33
33
  * attributes are its business.)
34
34
  *
35
35
  * @param filePath - File path (relative to repo root)
@@ -1,13 +1,13 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * Decides how a NEW (untracked) file travels inside a patch: as a synthesized
3
+ * Decides how a new (untracked) file travels inside a patch: as a synthesized
4
4
  * `+`-line text body, or as a `GIT binary patch`.
5
5
  *
6
6
  * The text body is built from a JavaScript string, and the `index` line next
7
7
  * to it comes from `git hash-object` over the file's real bytes. Those two
8
8
  * agree only when the bytes decode losslessly as UTF-8. A Latin-1
9
- * `.properties` or `.rc` file has no NUL byte — git's own binary heuristic
10
- * calls it text — but a UTF-8 decode turns every high byte into U+FFFD, so
9
+ * `.properties` or `.rc` file has no NUL byte, so git's own binary heuristic
10
+ * calls it text, but a UTF-8 decode turns every high byte into U+FFFD, so
11
11
  * the patch body and its blob hash disagree, `git apply` writes different
12
12
  * bytes than the tree holds, and every drift check flags the file forever.
13
13
  * A binary patch carries the bytes verbatim, so it is the faithful choice for
@@ -40,7 +40,7 @@ function decodeStrictUtf8(bytes) {
40
40
  * Reads a new (untracked) file and classifies it for patch generation.
41
41
  *
42
42
  * A file is binary when git's NUL-byte heuristic says so
43
- * ({@link isBinaryFile}) OR when its bytes are not valid UTF-8 — see the
43
+ * ({@link isBinaryFile}) or when its bytes are not valid UTF-8. See the
44
44
  * module comment for why the second arm exists. Text files come back with
45
45
  * their exact decoded content so callers do not read the file twice.
46
46
  *
@@ -67,7 +67,7 @@ export async function readNewFileContent(repoDir, filePath) {
67
67
  * Both escapes are applied in a single pass, keyed on the source character.
68
68
  * Escaping in two passes would re-escape the backslashes the first pass just
69
69
  * added, and a backslash that is part of the filename would have to be
70
- * escaped for the glob layer as well as the quoting layer — which a
70
+ * escaped for the glob layer as well as the quoting layer, which a
71
71
  * glob-only first pass cannot tell apart from one it emitted itself.
72
72
  *
73
73
  * @param filePath - File path (relative to repo root)
@@ -92,13 +92,13 @@ function toLiteralAttributePattern(filePath) {
92
92
  * as binary.
93
93
  *
94
94
  * `git diff --binary` only emits a `GIT binary patch` for a file git itself
95
- * classifies as binary, and git's classifier is the NUL heuristic — a
96
- * Latin-1 file passes it and comes out as a TEXT diff whose high bytes are
95
+ * classifies as binary, and git's classifier is the NUL heuristic, so a
96
+ * Latin-1 file passes it and comes out as a text diff whose high bytes are
97
97
  * then mangled by the UTF-8 decode every subprocess result goes through.
98
98
  * The `-diff` attribute is how git is told otherwise, and a throwaway
99
99
  * `core.attributesFile` naming just this path is the narrowest way to set it
100
100
  * without touching the tree's own `.gitattributes`. (An in-tree attribute
101
- * that explicitly sets `diff` for the path would still win; the tree's own
101
+ * that explicitly sets `diff` for the path would still win. The tree's own
102
102
  * attributes are its business.)
103
103
  *
104
104
  * @param filePath - File path (relative to repo root)
@@ -4,7 +4,7 @@
4
4
  * `--binary` is load-bearing: without it git degrades a binary file's section
5
5
  * to the informational `Binary files a/x and b/x differ`, which carries none
6
6
  * of the bytes and cannot be replayed by `git apply`. It only expands the
7
- * BINARY section's index line to full hashes (text sections keep their
7
+ * binary section's index line to full hashes (text sections keep their
8
8
  * abbreviated form), so text output stays byte-identical.
9
9
  * @param repoDir - Repository directory
10
10
  * @param filePath - Path to the file (relative to repo)
@@ -34,9 +34,9 @@ export declare function generateFullFilePatch(repoDir: string, filePath: string)
34
34
  /**
35
35
  * Gets the diff for all modified files, including untracked (new) files.
36
36
  *
37
- * Tracked binary files round-trip through `git diff --binary`; untracked ones
37
+ * Tracked binary files round-trip through `git diff --binary`. Untracked ones
38
38
  * go through {@link generateBinaryFilePatch} below. Both arms must stay
39
- * binary-aware — see {@link getFileDiff} for why.
39
+ * binary-aware. See {@link getFileDiff} for why.
40
40
  * @param repoDir - Repository directory
41
41
  * @returns Diff content
42
42
  */
@@ -44,7 +44,7 @@ export declare function getAllDiff(repoDir: string): Promise<string>;
44
44
  /**
45
45
  * Builds a combined diff against HEAD for the provided files without touching
46
46
  * the real git index. Tracked files use `git diff --binary HEAD` (binary
47
- * sections included); untracked files use synthesized new-file diffs, or
47
+ * sections included). Untracked files use synthesized new-file diffs, or
48
48
  * {@link generateBinaryFilePatch} when the file is binary.
49
49
  *
50
50
  * Performance: the work is batched into a handful of `git` invocations (one