@hominis/fireforge 0.45.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 (662) hide show
  1. package/CHANGELOG.md +409 -446
  2. package/dist/bin/fireforge.d.ts +1 -1
  3. package/dist/bin/fireforge.js +21 -15
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/cli-usage-error.d.ts +46 -0
  6. package/dist/src/cli-usage-error.js +81 -0
  7. package/dist/src/cli.d.ts +7 -2
  8. package/dist/src/cli.js +47 -47
  9. package/dist/src/commands/bootstrap-checks.js +2 -1
  10. package/dist/src/commands/bootstrap.js +3 -4
  11. package/dist/src/commands/build.js +27 -17
  12. package/dist/src/commands/config.js +9 -9
  13. package/dist/src/commands/destructive-decision.d.ts +19 -0
  14. package/dist/src/commands/destructive-decision.js +31 -0
  15. package/dist/src/commands/discard.js +5 -5
  16. package/dist/src/commands/doctor-check-core.d.ts +4 -10
  17. package/dist/src/commands/doctor-check-core.js +0 -8
  18. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  19. package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
  20. package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
  21. package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
  22. package/dist/src/commands/doctor-furnace-jar.js +1 -1
  23. package/dist/src/commands/doctor-furnace.js +22 -22
  24. package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -17
  25. package/dist/src/commands/doctor-orphaned-harness.js +14 -23
  26. package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
  27. package/dist/src/commands/doctor-patch-manifest.js +7 -6
  28. package/dist/src/commands/doctor-post-rebase-audit.js +3 -3
  29. package/dist/src/commands/doctor-source-pin.d.ts +12 -12
  30. package/dist/src/commands/doctor-source-pin.js +14 -14
  31. package/dist/src/commands/doctor-working-tree.d.ts +3 -3
  32. package/dist/src/commands/doctor-working-tree.js +3 -3
  33. package/dist/src/commands/doctor.d.ts +3 -1
  34. package/dist/src/commands/doctor.js +15 -16
  35. package/dist/src/commands/download.js +50 -37
  36. package/dist/src/commands/export-all.js +29 -12
  37. package/dist/src/commands/export-flow.d.ts +5 -5
  38. package/dist/src/commands/export-flow.js +29 -59
  39. package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
  40. package/dist/src/commands/export-placement-conflicts.js +12 -12
  41. package/dist/src/commands/export-placement-gate.d.ts +2 -2
  42. package/dist/src/commands/export-placement-gate.js +7 -13
  43. package/dist/src/commands/export-placement-policy.d.ts +1 -1
  44. package/dist/src/commands/export-placement-policy.js +4 -6
  45. package/dist/src/commands/export-shared.d.ts +51 -32
  46. package/dist/src/commands/export-shared.js +17 -32
  47. package/dist/src/commands/export.js +14 -5
  48. package/dist/src/commands/furnace/apply.js +16 -16
  49. package/dist/src/commands/furnace/authoring-config.d.ts +13 -0
  50. package/dist/src/commands/furnace/authoring-config.js +19 -0
  51. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
  52. package/dist/src/commands/furnace/chrome-doc-remove.js +2 -2
  53. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
  54. package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
  55. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
  56. package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
  57. package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
  58. package/dist/src/commands/furnace/chrome-doc.js +18 -18
  59. package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
  60. package/dist/src/commands/furnace/create-browser-test.js +7 -12
  61. package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
  62. package/dist/src/commands/furnace/create-dry-run.js +6 -9
  63. package/dist/src/commands/furnace/create-features.d.ts +2 -2
  64. package/dist/src/commands/furnace/create-features.js +2 -2
  65. package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
  66. package/dist/src/commands/furnace/create-mochikit.js +7 -7
  67. package/dist/src/commands/furnace/create-templates.d.ts +31 -15
  68. package/dist/src/commands/furnace/create-templates.js +20 -19
  69. package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
  70. package/dist/src/commands/furnace/create-xpcshell.js +8 -8
  71. package/dist/src/commands/furnace/create.d.ts +1 -1
  72. package/dist/src/commands/furnace/create.js +35 -29
  73. package/dist/src/commands/furnace/deploy.js +15 -6
  74. package/dist/src/commands/furnace/diff.js +7 -7
  75. package/dist/src/commands/furnace/index.js +1 -1
  76. package/dist/src/commands/furnace/init.js +17 -16
  77. package/dist/src/commands/furnace/list.js +2 -2
  78. package/dist/src/commands/furnace/override.d.ts +1 -1
  79. package/dist/src/commands/furnace/override.js +43 -34
  80. package/dist/src/commands/furnace/preview.js +17 -17
  81. package/dist/src/commands/furnace/refresh.js +15 -7
  82. package/dist/src/commands/furnace/remove-mutations.d.ts +9 -10
  83. package/dist/src/commands/furnace/remove-mutations.js +19 -19
  84. package/dist/src/commands/furnace/remove-state.d.ts +1 -1
  85. package/dist/src/commands/furnace/remove-state.js +1 -1
  86. package/dist/src/commands/furnace/remove.js +4 -8
  87. package/dist/src/commands/furnace/rename-browser-test.js +10 -15
  88. package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
  89. package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
  90. package/dist/src/commands/furnace/rename.js +36 -36
  91. package/dist/src/commands/furnace/scan.js +3 -3
  92. package/dist/src/commands/furnace/status.js +19 -16
  93. package/dist/src/commands/furnace/sync.js +6 -6
  94. package/dist/src/commands/furnace/test-file-name.d.ts +28 -0
  95. package/dist/src/commands/furnace/test-file-name.js +39 -0
  96. package/dist/src/commands/furnace/validate.js +11 -12
  97. package/dist/src/commands/furnace/validation-output.d.ts +21 -9
  98. package/dist/src/commands/furnace/validation-output.js +3 -8
  99. package/dist/src/commands/import.js +22 -29
  100. package/dist/src/commands/lint-per-patch.d.ts +2 -2
  101. package/dist/src/commands/lint-per-patch.js +27 -12
  102. package/dist/src/commands/lint-per-run-checkjs.d.ts +14 -15
  103. package/dist/src/commands/lint-per-run-checkjs.js +14 -15
  104. package/dist/src/commands/lint-report.d.ts +3 -3
  105. package/dist/src/commands/lint-report.js +4 -4
  106. package/dist/src/commands/lint.d.ts +5 -4
  107. package/dist/src/commands/lint.js +36 -36
  108. package/dist/src/commands/manifest.d.ts +4 -4
  109. package/dist/src/commands/manifest.js +1 -1
  110. package/dist/src/commands/package.js +4 -6
  111. package/dist/src/commands/patch/compact.d.ts +2 -2
  112. package/dist/src/commands/patch/compact.js +19 -20
  113. package/dist/src/commands/patch/delete.d.ts +1 -1
  114. package/dist/src/commands/patch/delete.js +23 -33
  115. package/dist/src/commands/patch/entry-projection.d.ts +13 -0
  116. package/dist/src/commands/patch/entry-projection.js +24 -0
  117. package/dist/src/commands/patch/lint-ignore.d.ts +3 -12
  118. package/dist/src/commands/patch/lint-ignore.js +33 -44
  119. package/dist/src/commands/patch/move-files-create.d.ts +2 -2
  120. package/dist/src/commands/patch/move-files-create.js +29 -15
  121. package/dist/src/commands/patch/move-files-into.d.ts +2 -2
  122. package/dist/src/commands/patch/move-files-into.js +41 -37
  123. package/dist/src/commands/patch/move-files.js +5 -14
  124. package/dist/src/commands/patch/patch-context.d.ts +1 -1
  125. package/dist/src/commands/patch/rename.d.ts +4 -4
  126. package/dist/src/commands/patch/rename.js +35 -49
  127. package/dist/src/commands/patch/reorder.js +35 -48
  128. package/dist/src/commands/patch/split-plan.d.ts +7 -8
  129. package/dist/src/commands/patch/split-plan.js +10 -13
  130. package/dist/src/commands/patch/split.d.ts +2 -2
  131. package/dist/src/commands/patch/split.js +50 -48
  132. package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
  133. package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
  134. package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
  135. package/dist/src/commands/patch/staged-dependency.js +22 -28
  136. package/dist/src/commands/patch/tier.d.ts +2 -2
  137. package/dist/src/commands/patch/tier.js +20 -30
  138. package/dist/src/commands/patch-rename-map.d.ts +19 -0
  139. package/dist/src/commands/patch-rename-map.js +36 -0
  140. package/dist/src/commands/pending-resolution.d.ts +15 -0
  141. package/dist/src/commands/pending-resolution.js +25 -0
  142. package/dist/src/commands/re-export-adjacent.d.ts +25 -3
  143. package/dist/src/commands/re-export-adjacent.js +40 -24
  144. package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
  145. package/dist/src/commands/re-export-bulk-scan.js +23 -27
  146. package/dist/src/commands/re-export-drift.d.ts +10 -10
  147. package/dist/src/commands/re-export-drift.js +33 -33
  148. package/dist/src/commands/re-export-files.d.ts +2 -3
  149. package/dist/src/commands/re-export-files.js +52 -44
  150. package/dist/src/commands/re-export-lint.d.ts +29 -30
  151. package/dist/src/commands/re-export-lint.js +36 -29
  152. package/dist/src/commands/re-export-options.d.ts +1 -1
  153. package/dist/src/commands/re-export-options.js +1 -1
  154. package/dist/src/commands/re-export-register.d.ts +1 -1
  155. package/dist/src/commands/re-export-register.js +1 -1
  156. package/dist/src/commands/re-export-scan.d.ts +1 -1
  157. package/dist/src/commands/re-export-scan.js +12 -9
  158. package/dist/src/commands/re-export-single.d.ts +23 -4
  159. package/dist/src/commands/re-export-single.js +39 -31
  160. package/dist/src/commands/re-export.js +35 -17
  161. package/dist/src/commands/rebase/abort.js +9 -14
  162. package/dist/src/commands/rebase/continue.js +20 -19
  163. package/dist/src/commands/rebase/index.d.ts +1 -1
  164. package/dist/src/commands/rebase/index.js +5 -5
  165. package/dist/src/commands/rebase/patch-loop.d.ts +2 -2
  166. package/dist/src/commands/rebase/patch-loop.js +20 -24
  167. package/dist/src/commands/register.js +5 -5
  168. package/dist/src/commands/reset.js +1 -1
  169. package/dist/src/commands/resolve.d.ts +2 -2
  170. package/dist/src/commands/resolve.js +21 -13
  171. package/dist/src/commands/run.d.ts +0 -13
  172. package/dist/src/commands/run.js +38 -51
  173. package/dist/src/commands/setup-support.d.ts +16 -4
  174. package/dist/src/commands/setup-support.js +20 -20
  175. package/dist/src/commands/setup.js +4 -10
  176. package/dist/src/commands/source.js +9 -2
  177. package/dist/src/commands/status-check.d.ts +3 -3
  178. package/dist/src/commands/status-check.js +6 -6
  179. package/dist/src/commands/status-json.d.ts +14 -13
  180. package/dist/src/commands/status-json.js +9 -8
  181. package/dist/src/commands/status-output.d.ts +3 -3
  182. package/dist/src/commands/status-output.js +5 -5
  183. package/dist/src/commands/status-ownership.d.ts +3 -3
  184. package/dist/src/commands/status-ownership.js +3 -3
  185. package/dist/src/commands/status.js +25 -26
  186. package/dist/src/commands/test-build-phase.d.ts +3 -3
  187. package/dist/src/commands/test-build-phase.js +48 -24
  188. package/dist/src/commands/test-diagnose.d.ts +1 -1
  189. package/dist/src/commands/test-diagnose.js +20 -20
  190. package/dist/src/commands/test-modes.d.ts +4 -4
  191. package/dist/src/commands/test-modes.js +4 -5
  192. package/dist/src/commands/test-register.js +5 -3
  193. package/dist/src/commands/test-run.d.ts +11 -11
  194. package/dist/src/commands/test-run.js +40 -33
  195. package/dist/src/commands/test-stale-gate.d.ts +12 -12
  196. package/dist/src/commands/test-stale-gate.js +17 -17
  197. package/dist/src/commands/test-verdict.d.ts +19 -5
  198. package/dist/src/commands/test-verdict.js +26 -11
  199. package/dist/src/commands/test.d.ts +3 -3
  200. package/dist/src/commands/test.js +73 -36
  201. package/dist/src/commands/token-coverage.js +3 -3
  202. package/dist/src/commands/token-list.d.ts +26 -0
  203. package/dist/src/commands/token-list.js +153 -0
  204. package/dist/src/commands/token.js +26 -10
  205. package/dist/src/commands/tree.js +26 -21
  206. package/dist/src/commands/typecheck.d.ts +6 -6
  207. package/dist/src/commands/typecheck.js +16 -16
  208. package/dist/src/commands/verify.d.ts +3 -3
  209. package/dist/src/commands/verify.js +10 -10
  210. package/dist/src/commands/watch.js +11 -11
  211. package/dist/src/commands/wire.js +17 -16
  212. package/dist/src/core/ast-utils.d.ts +7 -7
  213. package/dist/src/core/ast-utils.js +8 -8
  214. package/dist/src/core/branding.d.ts +5 -12
  215. package/dist/src/core/branding.js +6 -5
  216. package/dist/src/core/browser-wire.d.ts +1 -1
  217. package/dist/src/core/browser-wire.js +10 -7
  218. package/dist/src/core/build-audit-platform.d.ts +32 -3
  219. package/dist/src/core/build-audit-platform.js +153 -13
  220. package/dist/src/core/build-audit-registration.d.ts +5 -5
  221. package/dist/src/core/build-audit-registration.js +10 -9
  222. package/dist/src/core/build-audit-resolve.d.ts +5 -5
  223. package/dist/src/core/build-audit-resolve.js +6 -6
  224. package/dist/src/core/build-audit-skip.d.ts +57 -0
  225. package/dist/src/core/build-audit-skip.js +112 -0
  226. package/dist/src/core/build-audit-transforms.d.ts +2 -2
  227. package/dist/src/core/build-audit-transforms.js +3 -3
  228. package/dist/src/core/build-audit.d.ts +21 -8
  229. package/dist/src/core/build-audit.js +142 -40
  230. package/dist/src/core/build-baseline-types.d.ts +19 -18
  231. package/dist/src/core/build-baseline-types.js +1 -1
  232. package/dist/src/core/build-baseline.d.ts +48 -31
  233. package/dist/src/core/build-baseline.js +20 -43
  234. package/dist/src/core/build-jar-escalation.d.ts +8 -8
  235. package/dist/src/core/build-jar-escalation.js +18 -17
  236. package/dist/src/core/build-overwrite-guard.d.ts +4 -4
  237. package/dist/src/core/build-overwrite-guard.js +14 -14
  238. package/dist/src/core/build-prepare.d.ts +4 -12
  239. package/dist/src/core/build-prepare.js +22 -26
  240. package/dist/src/core/config-mutate.js +4 -4
  241. package/dist/src/core/config-paths.d.ts +2 -6
  242. package/dist/src/core/config-paths.js +4 -2
  243. package/dist/src/core/config-state.d.ts +0 -6
  244. package/dist/src/core/config-state.js +3 -21
  245. package/dist/src/core/config-validate-build-audit.d.ts +8 -0
  246. package/dist/src/core/config-validate-build-audit.js +80 -0
  247. package/dist/src/core/config-validate-file-size.d.ts +1 -1
  248. package/dist/src/core/config-validate-file-size.js +3 -3
  249. package/dist/src/core/config-validate-patch-policy.d.ts +2 -2
  250. package/dist/src/core/config-validate-patch-policy.js +3 -3
  251. package/dist/src/core/config-validate-test-toolchains.d.ts +2 -2
  252. package/dist/src/core/config-validate-test-toolchains.js +4 -5
  253. package/dist/src/core/config-validate.js +22 -12
  254. package/dist/src/core/config.d.ts +12 -12
  255. package/dist/src/core/config.js +21 -25
  256. package/dist/src/core/coverage-extend.d.ts +16 -16
  257. package/dist/src/core/coverage-extend.js +20 -20
  258. package/dist/src/core/destructive.d.ts +14 -14
  259. package/dist/src/core/destructive.js +9 -9
  260. package/dist/src/core/diff-hunks.d.ts +2 -2
  261. package/dist/src/core/diff-hunks.js +7 -7
  262. package/dist/src/core/discard-baseline.d.ts +10 -10
  263. package/dist/src/core/discard-baseline.js +22 -23
  264. package/dist/src/core/display-state.d.ts +11 -11
  265. package/dist/src/core/display-state.js +12 -12
  266. package/dist/src/core/engine-changes.d.ts +2 -2
  267. package/dist/src/core/engine-changes.js +2 -2
  268. package/dist/src/core/engine-precondition.d.ts +5 -13
  269. package/dist/src/core/engine-precondition.js +5 -10
  270. package/dist/src/core/engine-session-lock.d.ts +18 -18
  271. package/dist/src/core/engine-session-lock.js +50 -54
  272. package/dist/src/core/export-moved-code-shape.d.ts +7 -7
  273. package/dist/src/core/export-moved-code-shape.js +10 -10
  274. package/dist/src/core/file-lock-owner.d.ts +103 -0
  275. package/dist/src/core/file-lock-owner.js +259 -0
  276. package/dist/src/core/file-lock.d.ts +14 -19
  277. package/dist/src/core/file-lock.js +90 -128
  278. package/dist/src/core/firefox-cache.d.ts +13 -1
  279. package/dist/src/core/firefox-cache.js +61 -36
  280. package/dist/src/core/firefox-download.d.ts +15 -0
  281. package/dist/src/core/firefox-download.js +38 -22
  282. package/dist/src/core/firefox-extract.d.ts +8 -7
  283. package/dist/src/core/firefox-extract.js +45 -27
  284. package/dist/src/core/firefox.d.ts +34 -36
  285. package/dist/src/core/firefox.js +13 -44
  286. package/dist/src/core/furnace-apply-dry-run.d.ts +1 -6
  287. package/dist/src/core/furnace-apply-dry-run.js +2 -8
  288. package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
  289. package/dist/src/core/furnace-apply-ftl.js +8 -8
  290. package/dist/src/core/furnace-apply-helpers.d.ts +9 -20
  291. package/dist/src/core/furnace-apply-helpers.js +28 -39
  292. package/dist/src/core/furnace-apply-output.js +1 -1
  293. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
  294. package/dist/src/core/furnace-apply-overwrite-warn.js +13 -11
  295. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
  296. package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
  297. package/dist/src/core/furnace-apply.d.ts +4 -4
  298. package/dist/src/core/furnace-apply.js +50 -29
  299. package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
  300. package/dist/src/core/furnace-checksum-utils.js +5 -5
  301. package/dist/src/core/furnace-config-custom.d.ts +1 -1
  302. package/dist/src/core/furnace-config-custom.js +2 -2
  303. package/dist/src/core/furnace-config-order.js +1 -1
  304. package/dist/src/core/furnace-config-tokens.d.ts +3 -3
  305. package/dist/src/core/furnace-config-tokens.js +3 -3
  306. package/dist/src/core/furnace-config-validate.js +2 -2
  307. package/dist/src/core/furnace-config.d.ts +5 -5
  308. package/dist/src/core/furnace-config.js +40 -53
  309. package/dist/src/core/furnace-constants.d.ts +6 -6
  310. package/dist/src/core/furnace-constants.js +9 -8
  311. package/dist/src/core/furnace-css-fragments.d.ts +6 -6
  312. package/dist/src/core/furnace-css-fragments.js +11 -11
  313. package/dist/src/core/furnace-dir-entry.d.ts +20 -0
  314. package/dist/src/core/furnace-dir-entry.js +21 -0
  315. package/dist/src/core/furnace-jsconfig.d.ts +7 -7
  316. package/dist/src/core/furnace-jsconfig.js +22 -20
  317. package/dist/src/core/furnace-operation.d.ts +22 -19
  318. package/dist/src/core/furnace-operation.js +38 -34
  319. package/dist/src/core/furnace-precondition.d.ts +10 -10
  320. package/dist/src/core/furnace-precondition.js +8 -8
  321. package/dist/src/core/furnace-refresh.d.ts +18 -6
  322. package/dist/src/core/furnace-refresh.js +5 -8
  323. package/dist/src/core/furnace-registration-ast.d.ts +2 -3
  324. package/dist/src/core/furnace-registration-ast.js +9 -12
  325. package/dist/src/core/furnace-registration-remove.d.ts +4 -4
  326. package/dist/src/core/furnace-registration-remove.js +6 -6
  327. package/dist/src/core/furnace-registration-validate.d.ts +2 -2
  328. package/dist/src/core/furnace-registration-validate.js +2 -2
  329. package/dist/src/core/furnace-registration.d.ts +7 -6
  330. package/dist/src/core/furnace-registration.js +29 -36
  331. package/dist/src/core/furnace-rollback.d.ts +1 -1
  332. package/dist/src/core/furnace-rollback.js +5 -5
  333. package/dist/src/core/furnace-scanner.js +3 -6
  334. package/dist/src/core/furnace-stale-export.d.ts +17 -16
  335. package/dist/src/core/furnace-stale-export.js +16 -15
  336. package/dist/src/core/furnace-staleness.d.ts +2 -2
  337. package/dist/src/core/furnace-staleness.js +2 -2
  338. package/dist/src/core/furnace-state-persist.d.ts +12 -12
  339. package/dist/src/core/furnace-state-persist.js +10 -10
  340. package/dist/src/core/furnace-step-errors.d.ts +6 -6
  341. package/dist/src/core/furnace-step-errors.js +6 -6
  342. package/dist/src/core/furnace-validate-accessibility.js +14 -14
  343. package/dist/src/core/furnace-validate-compatibility.js +9 -9
  344. package/dist/src/core/furnace-validate-registration.d.ts +2 -2
  345. package/dist/src/core/furnace-validate-registration.js +18 -20
  346. package/dist/src/core/furnace-validate-structure.d.ts +1 -1
  347. package/dist/src/core/furnace-validate-structure.js +4 -4
  348. package/dist/src/core/furnace-validate.js +9 -9
  349. package/dist/src/core/furnace-version-drift.d.ts +5 -5
  350. package/dist/src/core/furnace-version-drift.js +5 -5
  351. package/dist/src/core/git-base.d.ts +6 -4
  352. package/dist/src/core/git-base.js +29 -7
  353. package/dist/src/core/git-diff-new-file.d.ts +40 -0
  354. package/dist/src/core/git-diff-new-file.js +119 -0
  355. package/dist/src/core/git-diff.d.ts +13 -13
  356. package/dist/src/core/git-diff.js +121 -189
  357. package/dist/src/core/git-file-ops.d.ts +6 -13
  358. package/dist/src/core/git-file-ops.js +11 -35
  359. package/dist/src/core/git-readonly-index.d.ts +12 -14
  360. package/dist/src/core/git-readonly-index.js +12 -16
  361. package/dist/src/core/git-status.d.ts +9 -2
  362. package/dist/src/core/git-status.js +23 -11
  363. package/dist/src/core/git.d.ts +3 -9
  364. package/dist/src/core/git.js +28 -57
  365. package/dist/src/core/harness-orphans.d.ts +17 -17
  366. package/dist/src/core/harness-orphans.js +28 -27
  367. package/dist/src/core/history-log.d.ts +19 -0
  368. package/dist/src/core/history-log.js +29 -0
  369. package/dist/src/core/license-headers.d.ts +19 -18
  370. package/dist/src/core/license-headers.js +29 -28
  371. package/dist/src/core/mach-build-artifacts.d.ts +21 -21
  372. package/dist/src/core/mach-build-artifacts.js +23 -23
  373. package/dist/src/core/mach-error-hints.d.ts +5 -10
  374. package/dist/src/core/mach-error-hints.js +14 -14
  375. package/dist/src/core/mach-known-noise-filter.d.ts +42 -38
  376. package/dist/src/core/mach-known-noise-filter.js +57 -56
  377. package/dist/src/core/mach-mozconfig.d.ts +6 -6
  378. package/dist/src/core/mach-mozconfig.js +17 -16
  379. package/dist/src/core/mach-python.d.ts +3 -0
  380. package/dist/src/core/mach-python.js +13 -7
  381. package/dist/src/core/mach-resource-shim.d.ts +24 -12
  382. package/dist/src/core/mach-resource-shim.js +124 -21
  383. package/dist/src/core/mach.d.ts +59 -73
  384. package/dist/src/core/mach.js +47 -115
  385. package/dist/src/core/marionette-port.d.ts +15 -30
  386. package/dist/src/core/marionette-port.js +46 -89
  387. package/dist/src/core/marionette-preflight.d.ts +6 -6
  388. package/dist/src/core/marionette-preflight.js +32 -50
  389. package/dist/src/core/markdown-table.d.ts +9 -9
  390. package/dist/src/core/markdown-table.js +14 -14
  391. package/dist/src/core/mochitest-server-port.d.ts +8 -8
  392. package/dist/src/core/mochitest-server-port.js +17 -17
  393. package/dist/src/core/module-resolution-preflight.d.ts +8 -8
  394. package/dist/src/core/module-resolution-preflight.js +11 -11
  395. package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
  396. package/dist/src/core/moz-manifest-helpers.js +7 -7
  397. package/dist/src/core/moz-manifest-register.d.ts +1 -1
  398. package/dist/src/core/moz-manifest-register.js +2 -2
  399. package/dist/src/core/moz-manifest-rules.js +46 -42
  400. package/dist/src/core/moz-manifest-tokenizers.js +1 -1
  401. package/dist/src/core/ownership-table.d.ts +5 -5
  402. package/dist/src/core/ownership-table.js +7 -7
  403. package/dist/src/core/parser-fallback.d.ts +3 -3
  404. package/dist/src/core/parser-fallback.js +3 -3
  405. package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
  406. package/dist/src/core/patch-apply-fuzz.js +13 -13
  407. package/dist/src/core/patch-apply.d.ts +13 -14
  408. package/dist/src/core/patch-apply.js +36 -42
  409. package/dist/src/core/patch-export-coverage.d.ts +0 -9
  410. package/dist/src/core/patch-export-coverage.js +1 -30
  411. package/dist/src/core/patch-export-update.d.ts +21 -4
  412. package/dist/src/core/patch-export-update.js +7 -6
  413. package/dist/src/core/patch-export.d.ts +20 -30
  414. package/dist/src/core/patch-export.js +55 -77
  415. package/dist/src/core/patch-files.d.ts +0 -4
  416. package/dist/src/core/patch-files.js +0 -11
  417. package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
  418. package/dist/src/core/patch-identifier-suggest.js +4 -4
  419. package/dist/src/core/patch-lint-binary.d.ts +12 -18
  420. package/dist/src/core/patch-lint-cache.d.ts +18 -2
  421. package/dist/src/core/patch-lint-cache.js +16 -19
  422. package/dist/src/core/patch-lint-checkjs.d.ts +55 -38
  423. package/dist/src/core/patch-lint-checkjs.js +78 -64
  424. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
  425. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
  426. package/dist/src/core/patch-lint-creators.d.ts +5 -9
  427. package/dist/src/core/patch-lint-creators.js +3 -3
  428. package/dist/src/core/patch-lint-cross.d.ts +27 -19
  429. package/dist/src/core/patch-lint-cross.js +67 -110
  430. package/dist/src/core/patch-lint-css.d.ts +1 -1
  431. package/dist/src/core/patch-lint-css.js +15 -11
  432. package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
  433. package/dist/src/core/patch-lint-diff-tag.js +5 -5
  434. package/dist/src/core/patch-lint-diff.d.ts +4 -4
  435. package/dist/src/core/patch-lint-diff.js +4 -4
  436. package/dist/src/core/patch-lint-file-size.d.ts +3 -3
  437. package/dist/src/core/patch-lint-file-size.js +6 -6
  438. package/dist/src/core/patch-lint-forward-registration.d.ts +58 -0
  439. package/dist/src/core/patch-lint-forward-registration.js +210 -0
  440. package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
  441. package/dist/src/core/patch-lint-jsdoc.js +46 -46
  442. package/dist/src/core/patch-lint-module-registration.d.ts +3 -9
  443. package/dist/src/core/patch-lint-module-registration.js +1 -1
  444. package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
  445. package/dist/src/core/patch-lint-mozbuild.js +10 -10
  446. package/dist/src/core/patch-lint-observer.d.ts +3 -3
  447. package/dist/src/core/patch-lint-observer.js +7 -7
  448. package/dist/src/core/patch-lint-ownership.d.ts +6 -6
  449. package/dist/src/core/patch-lint-ownership.js +6 -6
  450. package/dist/src/core/patch-lint-prettier.d.ts +6 -6
  451. package/dist/src/core/patch-lint-prettier.js +7 -7
  452. package/dist/src/core/patch-lint-queue-types.d.ts +60 -0
  453. package/dist/src/core/patch-lint-queue-types.js +12 -0
  454. package/dist/src/core/patch-lint-staged-registration.d.ts +61 -0
  455. package/dist/src/core/patch-lint-staged-registration.js +90 -0
  456. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
  457. package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
  458. package/dist/src/core/patch-lint.d.ts +41 -35
  459. package/dist/src/core/patch-lint.js +52 -49
  460. package/dist/src/core/patch-lock.d.ts +1 -1
  461. package/dist/src/core/patch-lock.js +11 -11
  462. package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
  463. package/dist/src/core/patch-manifest-consistency.js +16 -17
  464. package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
  465. package/dist/src/core/patch-manifest-files-affected.js +3 -3
  466. package/dist/src/core/patch-manifest-io.d.ts +14 -14
  467. package/dist/src/core/patch-manifest-io.js +35 -34
  468. package/dist/src/core/patch-manifest-query.d.ts +1 -1
  469. package/dist/src/core/patch-manifest-query.js +4 -4
  470. package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
  471. package/dist/src/core/patch-manifest-resolve.js +7 -7
  472. package/dist/src/core/patch-manifest-validate.js +3 -3
  473. package/dist/src/core/patch-manifest.d.ts +2 -2
  474. package/dist/src/core/patch-manifest.js +2 -2
  475. package/dist/src/core/patch-parse.d.ts +32 -21
  476. package/dist/src/core/patch-parse.js +40 -15
  477. package/dist/src/core/patch-policy.js +15 -27
  478. package/dist/src/core/patch-registration-refs.d.ts +4 -4
  479. package/dist/src/core/patch-registration-refs.js +7 -7
  480. package/dist/src/core/patch-source-metadata.d.ts +1 -3
  481. package/dist/src/core/patch-source-metadata.js +0 -4
  482. package/dist/src/core/patch-transform.d.ts +8 -16
  483. package/dist/src/core/patch-transform.js +13 -23
  484. package/dist/src/core/process-cpu-time.d.ts +1 -1
  485. package/dist/src/core/process-cpu-time.js +6 -6
  486. package/dist/src/core/rebase-session.d.ts +9 -15
  487. package/dist/src/core/rebase-session.js +13 -25
  488. package/dist/src/core/register-browser-content.js +3 -2
  489. package/dist/src/core/register-browser-test.js +2 -1
  490. package/dist/src/core/register-module.js +2 -1
  491. package/dist/src/core/register-result.d.ts +1 -1
  492. package/dist/src/core/register-result.js +1 -1
  493. package/dist/src/core/register-scaffold.d.ts +2 -2
  494. package/dist/src/core/register-scaffold.js +8 -7
  495. package/dist/src/core/register-shared-css.d.ts +3 -3
  496. package/dist/src/core/register-shared-css.js +6 -5
  497. package/dist/src/core/register-xpcshell-test.d.ts +2 -2
  498. package/dist/src/core/register-xpcshell-test.js +2 -2
  499. package/dist/src/core/run-log-redact.d.ts +38 -0
  500. package/dist/src/core/run-log-redact.js +69 -0
  501. package/dist/src/core/run-log.d.ts +21 -10
  502. package/dist/src/core/run-log.js +76 -27
  503. package/dist/src/core/shared-ftl.d.ts +2 -2
  504. package/dist/src/core/shared-ftl.js +6 -6
  505. package/dist/src/core/signal-critical.d.ts +2 -2
  506. package/dist/src/core/signal-critical.js +4 -6
  507. package/dist/src/core/smoke-patterns.d.ts +5 -6
  508. package/dist/src/core/smoke-patterns.js +15 -20
  509. package/dist/src/core/state-file.d.ts +15 -4
  510. package/dist/src/core/state-file.js +14 -1
  511. package/dist/src/core/status-binary.d.ts +8 -8
  512. package/dist/src/core/status-binary.js +12 -12
  513. package/dist/src/core/status-classify.d.ts +17 -17
  514. package/dist/src/core/status-classify.js +13 -12
  515. package/dist/src/core/test-changed-prefs.d.ts +12 -12
  516. package/dist/src/core/test-changed-prefs.js +40 -25
  517. package/dist/src/core/test-harness-crash.d.ts +39 -39
  518. package/dist/src/core/test-harness-crash.js +69 -69
  519. package/dist/src/core/test-harness-output.d.ts +7 -7
  520. package/dist/src/core/test-harness-output.js +7 -7
  521. package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
  522. package/dist/src/core/test-harness-verdict-notes.js +4 -4
  523. package/dist/src/core/test-path-scope.d.ts +8 -8
  524. package/dist/src/core/test-path-scope.js +11 -11
  525. package/dist/src/core/test-stale-check.d.ts +22 -23
  526. package/dist/src/core/test-stale-check.js +31 -30
  527. package/dist/src/core/test-stale-symlink.d.ts +1 -1
  528. package/dist/src/core/test-stale-symlink.js +1 -1
  529. package/dist/src/core/test-stall-triage.d.ts +9 -9
  530. package/dist/src/core/test-stall-triage.js +22 -22
  531. package/dist/src/core/test-xpcshell-retry.d.ts +26 -7
  532. package/dist/src/core/test-xpcshell-retry.js +14 -11
  533. package/dist/src/core/token-category.d.ts +35 -2
  534. package/dist/src/core/token-category.js +67 -58
  535. package/dist/src/core/token-coverage.js +4 -5
  536. package/dist/src/core/token-dark-mode.d.ts +9 -9
  537. package/dist/src/core/token-dark-mode.js +13 -25
  538. package/dist/src/core/token-docs.d.ts +1 -1
  539. package/dist/src/core/token-inventory.d.ts +56 -0
  540. package/dist/src/core/token-inventory.js +109 -0
  541. package/dist/src/core/token-manager.d.ts +4 -4
  542. package/dist/src/core/token-manager.js +22 -22
  543. package/dist/src/core/token-scaffold.d.ts +4 -4
  544. package/dist/src/core/token-scaffold.js +4 -4
  545. package/dist/src/core/token-variant.d.ts +14 -14
  546. package/dist/src/core/token-variant.js +52 -53
  547. package/dist/src/core/toolchain-preflight.d.ts +15 -15
  548. package/dist/src/core/toolchain-preflight.js +23 -23
  549. package/dist/src/core/tree-cow.d.ts +3 -5
  550. package/dist/src/core/tree-cow.js +8 -8
  551. package/dist/src/core/tree-guard.d.ts +3 -3
  552. package/dist/src/core/tree-guard.js +23 -23
  553. package/dist/src/core/tree-store.d.ts +15 -15
  554. package/dist/src/core/tree-store.js +39 -38
  555. package/dist/src/core/typecheck-shim.d.ts +16 -15
  556. package/dist/src/core/typecheck-shim.js +26 -25
  557. package/dist/src/core/typecheck.d.ts +12 -12
  558. package/dist/src/core/typecheck.js +33 -33
  559. package/dist/src/core/wire-destroy.d.ts +2 -2
  560. package/dist/src/core/wire-destroy.js +5 -5
  561. package/dist/src/core/wire-dom-fragment.d.ts +3 -3
  562. package/dist/src/core/wire-dom-fragment.js +12 -23
  563. package/dist/src/core/wire-init.d.ts +2 -2
  564. package/dist/src/core/wire-init.js +7 -7
  565. package/dist/src/core/wire-subscript.d.ts +1 -1
  566. package/dist/src/core/wire-subscript.js +3 -3
  567. package/dist/src/core/wire-utils.d.ts +9 -9
  568. package/dist/src/core/wire-utils.js +16 -28
  569. package/dist/src/core/xpcshell-appdir.d.ts +20 -20
  570. package/dist/src/core/xpcshell-appdir.js +28 -30
  571. package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
  572. package/dist/src/core/xpcshell-profile-dir.js +7 -7
  573. package/dist/src/errors/base.d.ts +69 -16
  574. package/dist/src/errors/base.js +95 -26
  575. package/dist/src/errors/build.d.ts +6 -6
  576. package/dist/src/errors/build.js +26 -34
  577. package/dist/src/errors/codes.d.ts +10 -10
  578. package/dist/src/errors/codes.js +10 -10
  579. package/dist/src/errors/config.d.ts +0 -14
  580. package/dist/src/errors/config.js +13 -34
  581. package/dist/src/errors/download.d.ts +13 -0
  582. package/dist/src/errors/download.js +53 -24
  583. package/dist/src/errors/furnace.d.ts +2 -2
  584. package/dist/src/errors/furnace.js +8 -9
  585. package/dist/src/errors/git.d.ts +9 -9
  586. package/dist/src/errors/git.js +21 -31
  587. package/dist/src/errors/patch.d.ts +3 -3
  588. package/dist/src/errors/patch.js +11 -13
  589. package/dist/src/errors/rebase.d.ts +1 -1
  590. package/dist/src/errors/rebase.js +8 -8
  591. package/dist/src/errors/run.d.ts +1 -1
  592. package/dist/src/errors/run.js +1 -1
  593. package/dist/src/index.d.ts +4 -4
  594. package/dist/src/index.js +4 -4
  595. package/dist/src/types/commands/options.d.ts +155 -200
  596. package/dist/src/types/commands/patches.d.ts +19 -19
  597. package/dist/src/types/commands/project.d.ts +3 -3
  598. package/dist/src/types/config.d.ts +52 -19
  599. package/dist/src/types/furnace.d.ts +17 -17
  600. package/dist/src/types/index.d.ts +0 -1
  601. package/dist/src/types/json.d.ts +3 -3
  602. package/dist/src/types/json.js +2 -2
  603. package/dist/src/types/typecheck.d.ts +3 -3
  604. package/dist/src/utils/assert.d.ts +4 -16
  605. package/dist/src/utils/assert.js +7 -24
  606. package/dist/src/utils/build-info.d.ts +6 -6
  607. package/dist/src/utils/build-info.js +6 -6
  608. package/dist/src/utils/child-env.d.ts +7 -6
  609. package/dist/src/utils/child-env.js +5 -5
  610. package/dist/src/utils/concurrency.d.ts +2 -2
  611. package/dist/src/utils/concurrency.js +2 -2
  612. package/dist/src/utils/elapsed.js +10 -1
  613. package/dist/src/utils/errors.d.ts +8 -8
  614. package/dist/src/utils/errors.js +8 -8
  615. package/dist/src/utils/fs.d.ts +1 -1
  616. package/dist/src/utils/fs.js +15 -20
  617. package/dist/src/utils/hash.d.ts +12 -0
  618. package/dist/src/utils/hash.js +16 -0
  619. package/dist/src/utils/line-dispatch.d.ts +15 -0
  620. package/dist/src/utils/line-dispatch.js +48 -0
  621. package/dist/src/utils/logger.d.ts +4 -4
  622. package/dist/src/utils/logger.js +11 -11
  623. package/dist/src/utils/machine-output.js +2 -2
  624. package/dist/src/utils/options.d.ts +14 -20
  625. package/dist/src/utils/options.js +26 -27
  626. package/dist/src/utils/package-root.js +5 -14
  627. package/dist/src/utils/paths.d.ts +4 -4
  628. package/dist/src/utils/paths.js +4 -4
  629. package/dist/src/utils/platform.d.ts +0 -4
  630. package/dist/src/utils/process-group.d.ts +10 -9
  631. package/dist/src/utils/process-group.js +37 -36
  632. package/dist/src/utils/process.d.ts +70 -55
  633. package/dist/src/utils/process.js +129 -179
  634. package/dist/src/utils/ps-duration.d.ts +4 -4
  635. package/dist/src/utils/ps-duration.js +9 -9
  636. package/dist/src/utils/regex.d.ts +4 -4
  637. package/dist/src/utils/regex.js +7 -7
  638. package/dist/src/utils/sleep.d.ts +26 -0
  639. package/dist/src/utils/sleep.js +31 -0
  640. package/dist/src/utils/stdio-drain.d.ts +7 -7
  641. package/dist/src/utils/stdio-drain.js +8 -8
  642. package/dist/src/utils/validation.d.ts +12 -49
  643. package/dist/src/utils/validation.js +26 -36
  644. package/docs/README.md +2 -2
  645. package/docs/configuration.md +163 -69
  646. package/docs/exit-codes.md +66 -49
  647. package/docs/furnace.md +20 -19
  648. package/docs/lifecycle-invariants.md +414 -247
  649. package/docs/machine-output.md +58 -34
  650. package/docs/patch-workflow.md +48 -44
  651. package/docs/run-logs.md +72 -28
  652. package/docs/testing.md +105 -98
  653. package/docs/verification-trees.md +23 -22
  654. package/package.json +7 -6
  655. package/dist/src/commands/rebase.d.ts +0 -4
  656. package/dist/src/commands/rebase.js +0 -5
  657. package/dist/src/core/patch-artifact-normalize.d.ts +0 -21
  658. package/dist/src/core/patch-artifact-normalize.js +0 -24
  659. package/dist/src/core/patch-lint-reexports.d.ts +0 -7
  660. package/dist/src/core/patch-lint-reexports.js +0 -8
  661. package/dist/src/core/wire-targets.d.ts +0 -7
  662. package/dist/src/core/wire-targets.js +0 -8
@@ -38,7 +38,7 @@ function validateBuildMozinfo(data) {
38
38
  * Reads the objdir name the engine's mozconfig declares, or undefined when
39
39
  * there is no mozconfig, it cannot be read, or it declares nothing.
40
40
  *
41
- * Fail-open by construction: this only ever narrows an ambiguity that would
41
+ * Fail-open: this only ever narrows an ambiguity that would
42
42
  * otherwise refuse, so an unreadable mozconfig costs nothing beyond the
43
43
  * refusal the caller was already going to raise.
44
44
  */
@@ -57,8 +57,8 @@ async function readDeclaredObjDirName(engineDir) {
57
57
  /**
58
58
  * Checks if build artifacts exist in the engine directory.
59
59
  * Looks for obj-* directories with a dist subdirectory. Detection is
60
- * deliberately symlink-agnostic — building/running against a symlinked
61
- * objdir in place is the user's own arrangement; the clone path, where a
60
+ * symlink-agnostic on purpose: building/running against a symlinked
61
+ * objdir in place is the user's own arrangement. The clone path, where a
62
62
  * symlink would route writes into the original build, refuses separately
63
63
  * (`assertCloneSafeObjdir` in tree-store.ts).
64
64
  * @param engineDir - Path to the engine directory
@@ -86,7 +86,7 @@ export async function hasBuildArtifacts(engineDir) {
86
86
  let declaredObjDir;
87
87
  if (validObjDirs.length > 1) {
88
88
  // An ambiguous glob is a question the mozconfig may already answer.
89
- // Refusing when the active configuration NAMES the objdir sends the
89
+ // Refusing when the active configuration names the objdir sends the
90
90
  // operator to rename a directory to satisfy a scan, when the thing
91
91
  // that decides the build has said which one it is. The refusal is
92
92
  // kept for the genuinely ambiguous case: a declaration that does not
@@ -148,7 +148,7 @@ export async function hasBuildArtifacts(engineDir) {
148
148
  /**
149
149
  * Checks whether the built browser's launchable binary exists under
150
150
  * `<engineDir>/<objDir>/dist/...`. `hasBuildArtifacts` only confirms that
151
- * an obj tree with a `dist/` subdir exists; a partial or in-progress build
151
+ * an obj tree with a `dist/` subdir exists. A partial or in-progress build
152
152
  * can satisfy that check without ever writing the executable, which is the
153
153
  * failure mode that makes `fireforge run` throw `mach run` after having
154
154
  * reported the build as usable. Separating the probes lets `run` fail fast
@@ -158,19 +158,19 @@ export async function hasBuildArtifacts(engineDir) {
158
158
  *
159
159
  * Platform layout:
160
160
  * - macOS: `<objDir>/dist/*.app/Contents/MacOS/<binaryName>` (the `.app`
161
- * display casing can differ from `binaryName` — e.g. `MyBrowser.app` for
161
+ * display casing can differ from `binaryName`, e.g. `MyBrowser.app` for
162
162
  * binary `mybrowser`, so we enumerate the `*.app` bundles rather than
163
163
  * compute the name.
164
164
  * - Linux: `<objDir>/dist/bin/<binaryName>`.
165
165
  * - Windows: `<objDir>/dist/bin/<binaryName>.exe`.
166
166
  *
167
167
  * Returns `runnable: false` with no `expectedPath` when the `objDir`
168
- * itself cannot be scanned — same degraded contract as `hasBuildArtifacts`.
168
+ * itself cannot be scanned. Same degraded contract as `hasBuildArtifacts`.
169
169
  *
170
170
  * @param engineDir Path to the engine directory
171
171
  * @param binaryName Lowercase binary name from `fireforge.json`
172
172
  * @param objDir The single matching `obj-*` directory name (caller
173
- * resolves it; typically from `hasBuildArtifacts().objDir`)
173
+ * resolves it, typically from `hasBuildArtifacts().objDir`)
174
174
  * @returns Structured check result
175
175
  */
176
176
  export async function hasRunnableBundle(engineDir, binaryName, objDir) {
@@ -241,26 +241,26 @@ export function buildArtifactMismatchMessage(engineDir, buildCheck, commandName)
241
241
  * Safe-relocation rewriter for mozinfo.json under the active obj-* tree.
242
242
  *
243
243
  * Firefox build artefacts bake the topsrcdir into many generated files
244
- * (Makefiles, config.status, backend.mk, .deps dependency files — anything
244
+ * (Makefiles, config.status, backend.mk, .deps dependency files, anything
245
245
  * produced by `mach configure`). A fresh `mach configure` rebuilds those
246
246
  * from the top, so the rewriter only needs to patch the one file `mach`
247
247
  * reads to learn where its checkout actually lives. Once mozinfo.json
248
248
  * agrees with the on-disk layout, `mach configure` regenerates the rest.
249
249
  *
250
- * Safety rules — the rewrite is refused when any of them are violated:
250
+ * Safety rules. The rewrite is refused when any of them are violated:
251
251
  * - `topsrcdir` and `topobjdir` must both be present and non-empty.
252
- * - `topobjdir` must resolve to `<topsrcdir>/<objDir>`; a non-in-tree
252
+ * - `topobjdir` must resolve to `<topsrcdir>/<objDir>`. A non-in-tree
253
253
  * objdir means the previous workspace was configured differently,
254
254
  * so a blind prefix-rewrite could point mach at the wrong tree.
255
- * - The computed new `topobjdir` must be `<engineDir>/<objDir>`; if it
255
+ * - The computed new `topobjdir` must be `<engineDir>/<objDir>`. If it
256
256
  * is not, the objDir name itself changed and we cannot prove safety.
257
257
  *
258
258
  * When any rule trips, the caller should fall back to the clean-rebuild
259
- * instruction — that's always a correct (if expensive) recovery path.
259
+ * instruction, which is always a correct (if expensive) recovery path.
260
260
  *
261
261
  * @param engineDir Absolute path to the current engine checkout.
262
262
  * @param objDir Name of the obj-* directory to rewrite against.
263
- * @returns Result object; callers inspect `rewritten` and surface `reason`.
263
+ * @returns Result object. Callers inspect `rewritten` and surface `reason`.
264
264
  */
265
265
  export async function attemptMozinfoRewrite(engineDir, objDir) {
266
266
  const mozinfoPath = join(engineDir, objDir, 'mozinfo.json');
@@ -323,10 +323,10 @@ export async function attemptMozinfoRewrite(engineDir, objDir) {
323
323
  newMozconfig = resolve(newSrc, rel);
324
324
  patched['mozconfig'] = newMozconfig;
325
325
  }
326
- // A mozconfig living outside the old topsrcdir is left as-is — it
326
+ // A mozconfig living outside the old topsrcdir is left as-is. It
327
327
  // probably points at a shared configuration file the user kept in
328
328
  // place across the relocation. A relocated checkout that also moved
329
- // its mozconfig will still fail configure; operator can re-point
329
+ // its mozconfig will still fail configure. The operator can re-point
330
330
  // with `MOZCONFIG=…` or run a full clean rebuild.
331
331
  }
332
332
  await writeJson(mozinfoPath, patched);
@@ -340,7 +340,7 @@ export async function attemptMozinfoRewrite(engineDir, objDir) {
340
340
  /**
341
341
  * Shared build-artifact preflight: rejects ambiguous multi-objdir checkouts,
342
342
  * artifacts whose metadata points at another tree, and (when
343
- * `requireExisting`) missing or incomplete builds — each with the actionable
343
+ * `requireExisting`) missing or incomplete builds, each with the actionable
344
344
  * message for that case.
345
345
  *
346
346
  * Takes an already-probed {@link BuildArtifactCheck} rather than probing
@@ -369,13 +369,13 @@ export function assertBuildArtifacts(engineDir, buildCheck, options) {
369
369
  * the four configure-generated root files (`config.status`, `backend.mk`,
370
370
  * `Makefile`, `config/autoconf.mk`) still names `forbiddenDir` (the
371
371
  * primary engine a relocated clone must never consult). Exit code 0 alone
372
- * proves neither — a stray MOZCONFIG/MOZ_OBJDIR can steer configure at a
372
+ * proves neither: a stray MOZCONFIG/MOZ_OBJDIR can steer configure at a
373
373
  * different objdir entirely. Nested Makefiles are products of the verified
374
- * `config.status` and are not scanned; `.deps` files are build products a
375
- * configure cannot regenerate and are explicitly out of scope — any
374
+ * `config.status` and are not scanned. `.deps` files are build products a
375
+ * configure cannot regenerate and are explicitly out of scope, and any
376
376
  * primary-path strings they retain are read-only staleness corrected by
377
377
  * the first in-tree rebuild. Pure checker: returns a human-readable
378
- * violation, or `undefined` when clean; callers own the error type and
378
+ * violation, or `undefined` when clean. Callers own the error type and
379
379
  * remediation copy. Unreadable metadata is itself a violation (fail
380
380
  * closed).
381
381
  */
@@ -406,9 +406,9 @@ export async function findObjdirRelocationViolation(args) {
406
406
  // The canonical no-primary-paths assertion (mirrored by the opt-in
407
407
  // real-mach proof in scripts/run-full-firefox-integration.mjs): substring
408
408
  // search on the resolved primary engine dir is collision-safe against the
409
- // tree's own paths — `<primary>/.fireforge/trees/<name>/engine` never
409
+ // tree's own paths: `<primary>/.fireforge/trees/<name>/engine` never
410
410
  // contains the substring `<primary>/engine`. Scans exactly the
411
- // configure-generated root files; `config.status` is mandatory (checked
411
+ // configure-generated root files. `config.status` is mandatory (checked
412
412
  // above), the rest are optional-if-absent because not every configure
413
413
  // backend writes them.
414
414
  const forbidden = resolve(forbiddenDir);
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Pattern-based translator for cryptic mozbuild / mach errors.
3
3
  *
4
- * Each entry maps a stderr regex to an actionable hint. The goal is not to
5
- * parse every mach failure — it's to convert the handful of errors whose
6
- * message is non-obvious into a one-line "here's what to change". New
4
+ * Each entry maps a stderr regex to an actionable hint. The goal is narrow:
5
+ * convert the handful of errors whose message is non-obvious into a one-line
6
+ * "here's what to change", rather than parse every mach failure. New
7
7
  * entries should only be added when a concrete diagnosis of the cryptic
8
- * output has been established; low-confidence hints would train operators
8
+ * output has been established. Low-confidence hints would train operators
9
9
  * to ignore the translator.
10
10
  */
11
11
  /** A single translator entry. */
@@ -15,14 +15,9 @@ export interface MachErrorHint {
15
15
  /** Actionable, one-line hint to surface alongside the raw mach output. */
16
16
  hint: string;
17
17
  }
18
- /**
19
- * Registered hint patterns. Order-sensitive: the first match wins per
20
- * pattern, but multiple distinct patterns may fire for the same stderr.
21
- */
22
- export declare const MACH_ERROR_HINTS: MachErrorHint[];
23
18
  /**
24
19
  * Scans captured stderr for known mach errors and returns matching hints.
25
- * Pure function — safe to call on any string; never throws.
20
+ * Pure function. Safe to call on any string and never throws.
26
21
  * @param stderr Captured mach stderr.
27
22
  * @returns Ordered, de-duplicated list of hint strings. Empty when nothing matches.
28
23
  */
@@ -2,30 +2,30 @@
2
2
  /**
3
3
  * Pattern-based translator for cryptic mozbuild / mach errors.
4
4
  *
5
- * Each entry maps a stderr regex to an actionable hint. The goal is not to
6
- * parse every mach failure — it's to convert the handful of errors whose
7
- * message is non-obvious into a one-line "here's what to change". New
5
+ * Each entry maps a stderr regex to an actionable hint. The goal is narrow:
6
+ * convert the handful of errors whose message is non-obvious into a one-line
7
+ * "here's what to change", rather than parse every mach failure. New
8
8
  * entries should only be added when a concrete diagnosis of the cryptic
9
- * output has been established; low-confidence hints would train operators
9
+ * output has been established. Low-confidence hints would train operators
10
10
  * to ignore the translator.
11
11
  */
12
12
  /**
13
13
  * Registered hint patterns. Order-sensitive: the first match wins per
14
14
  * pattern, but multiple distinct patterns may fire for the same stderr.
15
15
  */
16
- export const MACH_ERROR_HINTS = [
16
+ const MACH_ERROR_HINTS = [
17
17
  {
18
18
  pattern: /mozbuild\.preprocessor\.Preprocessor\.Error[\s\S]*?no preprocessor directives found/,
19
19
  hint: 'A file registered under JS_PREFERENCE_PP_FILES contains no preprocessor directives. ' +
20
20
  'Use JS_PREFERENCE_FILES instead, or add at least one #filter / #expand directive to the file.',
21
21
  },
22
22
  {
23
- // mozbuild raises `UnsortedError` while READING a moz.build whose
23
+ // mozbuild raises `UnsortedError` while reading a moz.build whose
24
24
  // StrictOrderingOnAppendList entries are out of order, so `mach
25
25
  // configure` dies before anything compiles. The ordering rule is the
26
26
  // part operators get wrong: mozbuild sorts by `.lower()`
27
27
  // (`StrictOrderingOnAppendList.ensure_sorted`), so an uppercase letter
28
- // does NOT sort ahead of a lowercase one, and an entry that looks
28
+ // does not sort ahead of a lowercase one, and an entry that looks
29
29
  // correctly placed by byte order can be rejected. mozbuild's own
30
30
  // message names both entries ("We expected X but got Y") and survives
31
31
  // to the operator through `extractMachConfigureError`, so the hint
@@ -41,7 +41,7 @@ export const MACH_ERROR_HINTS = [
41
41
  },
42
42
  {
43
43
  // `mach package` inside `packager.py` dereferences a `None` sink when
44
- // the packaging input set cannot resolve an entry it expected — most
44
+ // the packaging input set cannot resolve an entry it expected, most
45
45
  // commonly running `fireforge package` before a full `fireforge build`
46
46
  // has finished, so `obj-*/dist/` is missing pieces the packager assumes
47
47
  // exist. The broader "build failed" path has already surfaced the raw
@@ -75,10 +75,10 @@ export const MACH_ERROR_HINTS = [
75
75
  },
76
76
  {
77
77
  // Firefox declares per-release toolchain minimums in-tree
78
- // (`build/moz.configure/bindgen.configure` for cbindgen; mozboot's
78
+ // (`build/moz.configure/bindgen.configure` for cbindgen, and mozboot's
79
79
  // MINIMUM_RUST_VERSION for rustc/cargo), and a source hop can move them.
80
- // The failure lands ~8s into `mach configure` — e.g. "ERROR: cbindgen
81
- // version 0.29.1 is too old. At least version 0.29.4 is required." —
80
+ // The failure lands ~8s into `mach configure` (e.g. "ERROR: cbindgen
81
+ // version 0.29.1 is too old. At least version 0.29.4 is required."),
82
82
  // and mach's own remediation text names "./mach bootstrap", the wrong
83
83
  // entry point for a FireForge-managed repo. Pattern matches configure's
84
84
  // cbindgen die() shape.
@@ -90,7 +90,7 @@ export const MACH_ERROR_HINTS = [
90
90
  },
91
91
  {
92
92
  // Same family, rust.configure's die() shapes: "Rust compiler {v} is
93
- // too old." / "Cargo package manager {v} is too old." — the minimum
93
+ // too old." / "Cargo package manager {v} is too old." The minimum
94
94
  // is only named further down that message, so the pattern keys on
95
95
  // the first line.
96
96
  pattern: /\b(?:Rust compiler|Cargo package manager) [\d.]+(?:[\w.-]*)? is too old/i,
@@ -103,7 +103,7 @@ export const MACH_ERROR_HINTS = [
103
103
  // When `mach build` fails mid-compile, mach's own shutdown pipeline
104
104
  // still runs its trailing "Config object not found by mach. / Configure
105
105
  // complete! / Be sure to run |mach build|..." summary on the way out.
106
- // Those three lines are plain upstream mach output, printed AFTER the
106
+ // Those three lines are plain upstream mach output, printed after the
107
107
  // non-zero exit code is established, and they read deceptively like a
108
108
  // success banner. Nudge the operator that they are cosmetic
109
109
  // post-failure output, not a mixed success/failure signal.
@@ -115,7 +115,7 @@ export const MACH_ERROR_HINTS = [
115
115
  ];
116
116
  /**
117
117
  * Scans captured stderr for known mach errors and returns matching hints.
118
- * Pure function — safe to call on any string; never throws.
118
+ * Pure function. Safe to call on any string and never throws.
119
119
  * @param stderr Captured mach stderr.
120
120
  * @returns Ordered, de-duplicated list of hint strings. Empty when nothing matches.
121
121
  */
@@ -4,72 +4,75 @@
4
4
  *
5
5
  * Headless test runs against recent engines can end with an
6
6
  * `AttributeError: 'SystemResourceMonitor' object has no attribute
7
- * 'stop_time'` traceback at harness teardown — upstream noise that sits
8
- * exactly where a reader looks for the failure summary. Real failure lines
9
- * already beat this traceback in CLASSIFICATION; this filter closes the
10
- * PRESENTATION gap by collapsing the echoed traceback to one labeled line.
7
+ * 'stop_time'` traceback at harness teardown. That is upstream noise, and
8
+ * it sits exactly where a reader looks for the failure summary. Real failure
9
+ * lines already beat this traceback in classification. This filter closes
10
+ * the presentation gap by collapsing the echoed traceback to one labeled
11
+ * line.
11
12
  *
12
- * Scope is deliberately narrow:
13
- * - Only the terminal ECHO is filtered. The captured stdout/stderr strings
14
- * stay raw — the classifier (`test-harness-crash.ts`) depends on the raw
15
- * traceback for its green-summary override and secondary-noise
13
+ * Scope is narrow on purpose:
14
+ * - Only the terminal echo is filtered. The captured stdout/stderr strings
15
+ * stay raw, because the classifier (`test-harness-crash.ts`) depends on
16
+ * the raw traceback for its green-summary override and secondary-noise
16
17
  * detection.
17
18
  * - Only the exact documented incident is collapsed, and every condition
18
19
  * must hold: an `AttributeError` on `SystemResourceMonitor` naming one
19
- * of the two known attributes (`stop_time`, `poll_interval`), AND a
20
- * `mozsystemmonitor/resourcemonitor.py` stack frame, AND a
20
+ * of the two known attributes (`stop_time`, `poll_interval`), and a
21
+ * `mozsystemmonitor/resourcemonitor.py` stack frame, and a
21
22
  * previously-seen SUITE_END shutdown marker (shared across the run's
22
- * stdout/stderr filter instances — the marker usually lands on stdout
23
- * while the traceback lands on stderr). A novel attribute, a novel
23
+ * stdout/stderr filter instances, where the marker usually lands on
24
+ * stdout while the traceback lands on stderr). A novel attribute, a novel
24
25
  * exception type in resourcemonitor.py, or a pre-shutdown occurrence is
25
26
  * echoed verbatim, always.
26
- * - The hold buffer is bounded; on overflow the block is flushed verbatim
27
+ * - The hold buffer is bounded. On overflow the block is flushed verbatim
27
28
  * and the filter returns to pass-through, so output is never lost.
28
29
  *
29
- * The COLLAPSE is test-only, deliberately, and not an oversight — the two
30
- * reasons are worth stating because from outside it reads like one:
30
+ * The collapse is test-only on purpose, not an oversight. Two reasons,
31
+ * since from outside they read like one:
31
32
  * 1. Recognition requires a previously-seen SUITE_END shutdown marker, and
32
33
  * `mach build` never prints one. Wiring the option into the build
33
34
  * dispatch would therefore be a silent no-op.
34
35
  * 2. Relaxing that gate for builds would be wrong on its own terms. The
35
36
  * marker is what separates teardown noise from a traceback raised while
36
- * work was still happening; a build has no equivalent boundary, so
37
+ * work was still happening. A build has no equivalent boundary, so
37
38
  * FireForge cannot tell the known-cosmetic case from a real build-time
38
39
  * failure and must not withhold the block.
39
- * The build path instead RECOGNIZES the signature and says so beside the
40
- * verbatim traceback — see {@link KNOWN_TEARDOWN_NOISE_BUILD_NOTE} and
40
+ * The build path instead recognizes the signature and says so beside the
41
+ * verbatim traceback. See {@link KNOWN_TEARDOWN_NOISE_BUILD_NOTE} and
41
42
  * `runProtectedMachBuild`.
42
43
  */
43
44
  /**
44
- * True when CAPTURED output carries the documented mozsystemmonitor
45
- * teardown traceback.
45
+ * Whole-block recognition. Every signal must hold (see module doc). True
46
+ * when captured output carries the documented mozsystemmonitor teardown
47
+ * traceback.
46
48
  *
47
- * The echo filter above only affects what a human sees. The CLASSIFIER
49
+ * The echo filter below only affects what a human sees. The classifier
48
50
  * reads the raw capture, and it needs the same recognition to tell "the
49
51
  * suite finished clean and then upstream fell over at shutdown" from "the
50
- * suite did not finish". Deliberately the same two-signal test the echo
51
- * filter applies — a novel attribute or a traceback from anywhere but
52
- * `resourcemonitor.py` is NOT this incident and must keep failing the run.
52
+ * suite did not finish". This is the same two-signal test the echo filter
53
+ * applies: a novel attribute or a traceback from anywhere but
54
+ * `resourcemonitor.py` is not this incident and must keep failing the run.
53
55
  *
54
56
  * The shutdown-marker precondition the echo filter adds is intentionally
55
- * omitted: the whole point at the classification layer is the case where
56
- * the teardown crash prevented the shutdown marker from printing.
57
+ * omitted: at the classification layer the case that matters is exactly
58
+ * the one where the teardown crash prevented the shutdown marker from
59
+ * printing.
57
60
  *
58
- * Pure; exported for the classifier and for direct unit testing.
61
+ * Pure. Exported for the classifier and for direct unit testing.
59
62
  *
60
63
  * @param output - Raw captured stdout/stderr
61
64
  * @returns True when the recognized teardown traceback is present
62
65
  */
63
66
  export declare function hasKnownTeardownNoise(output: string): boolean;
64
67
  /**
65
- * True when a SINGLE line is the documented teardown family's
68
+ * True when a single line is the documented teardown family's
66
69
  * `AttributeError`.
67
70
  *
68
- * The line-level half of {@link hasKnownTeardownNoise}: the traceback FRAME
71
+ * The line-level half of {@link hasKnownTeardownNoise}: the traceback frame
69
72
  * lives on a neighbouring line, so a per-line test cannot apply the
70
73
  * two-signal rule by itself. Callers pair this with
71
- * `hasKnownTeardownNoise(wholeOutput)` to recover the full recognition —
72
- * "this capture carries the incident, and THIS line is its header" — which
74
+ * `hasKnownTeardownNoise(wholeOutput)` to recover the full recognition
75
+ * ("this capture carries the incident, and this line is its header"), which
73
76
  * keeps the closed attribute allowlist (`stop_time`/`poll_interval`) doing
74
77
  * the same work it does everywhere else. A novel attribute is not this
75
78
  * incident and must stay a candidate failure.
@@ -79,20 +82,21 @@ export declare function hasKnownTeardownNoise(output: string): boolean;
79
82
  */
80
83
  export declare function isKnownTeardownNoiseLine(line: string): boolean;
81
84
  /**
82
- * Shared across the stdout and stderr filter instances of ONE mach run:
85
+ * Shared across the stdout and stderr filter instances of one mach run:
83
86
  * SUITE_END typically arrives on stdout while the teardown traceback lands
84
87
  * on stderr, so the shutdown-seen flag must be visible to both. The two
85
88
  * pipes are independent, so a traceback can theoretically beat the marker
86
- * through — the block then prints verbatim, the correct failure direction.
89
+ * through. The block then prints verbatim, which is the correct failure
90
+ * direction.
87
91
  */
88
92
  export interface TeardownNoiseContext {
89
93
  shutdownSeen: boolean;
90
94
  }
91
- /** Fresh per-run context — hand the same instance to both stream filters. */
95
+ /** Fresh per-run context. Hand the same instance to both stream filters. */
92
96
  export declare function createTeardownNoiseContext(): TeardownNoiseContext;
93
97
  /**
94
- * Build-phase note for the SAME recognized signature. The build path does
95
- * not COLLAPSE the traceback (see the module doc's "test-only" note) — it
98
+ * Build-phase note for the same recognized signature. The build path does
99
+ * not collapse the traceback (see the module doc's "test-only" note). It
96
100
  * prints verbatim and this line is added beside it, so one signature reads
97
101
  * the same in both phases without a build losing output it may need.
98
102
  */
@@ -101,7 +105,7 @@ export declare const KNOWN_TEARDOWN_NOISE_BUILD_NOTE: string;
101
105
  export declare const KNOWN_TEARDOWN_NOISE_ANNOTATION: string;
102
106
  /** Chunk-safe, line-buffered echo filter. See module doc. */
103
107
  export interface KnownTeardownNoiseFilter {
104
- /** Feed a raw chunk; returns the text to echo now (possibly empty). */
108
+ /** Feed a raw chunk. Returns the text to echo now (possibly empty). */
105
109
  transform(chunk: string): string;
106
110
  /** Flush any buffered residue verbatim (call after the stream closes). */
107
111
  flush(): string;
@@ -109,7 +113,7 @@ export interface KnownTeardownNoiseFilter {
109
113
  /**
110
114
  * Creates a stateful filter for one output stream. Complete lines outside a
111
115
  * traceback pass straight through (only the trailing partial line is held
112
- * back); a `Traceback (most recent call last)` header switches to hold mode
116
+ * back). A `Traceback (most recent call last)` header switches to hold mode
113
117
  * until the block ends, then either the one-line annotation (recognized
114
118
  * signature after a seen shutdown marker) or the verbatim block (anything
115
119
  * else) is emitted. Pass the run's shared {@link TeardownNoiseContext} so