@hominis/fireforge 0.46.0 → 0.46.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/CHANGELOG.md +381 -498
  2. package/dist/bin/fireforge.d.ts +1 -1
  3. package/dist/bin/fireforge.js +17 -17
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/cli-usage-error.d.ts +9 -9
  6. package/dist/src/cli-usage-error.js +12 -12
  7. package/dist/src/cli.d.ts +3 -2
  8. package/dist/src/cli.js +29 -28
  9. package/dist/src/commands/bootstrap-checks.js +2 -1
  10. package/dist/src/commands/bootstrap.js +2 -2
  11. package/dist/src/commands/build.js +12 -11
  12. package/dist/src/commands/config.js +9 -9
  13. package/dist/src/commands/destructive-decision.d.ts +4 -4
  14. package/dist/src/commands/destructive-decision.js +4 -4
  15. package/dist/src/commands/discard.js +5 -5
  16. package/dist/src/commands/doctor-check-core.d.ts +4 -4
  17. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  18. package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
  19. package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
  20. package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
  21. package/dist/src/commands/doctor-furnace-jar.js +1 -1
  22. package/dist/src/commands/doctor-furnace.js +22 -22
  23. package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -11
  24. package/dist/src/commands/doctor-orphaned-harness.js +10 -11
  25. package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
  26. package/dist/src/commands/doctor-patch-manifest.js +7 -6
  27. package/dist/src/commands/doctor-post-rebase-audit.js +2 -2
  28. package/dist/src/commands/doctor-source-pin.d.ts +12 -12
  29. package/dist/src/commands/doctor-source-pin.js +14 -14
  30. package/dist/src/commands/doctor-working-tree.d.ts +3 -3
  31. package/dist/src/commands/doctor-working-tree.js +3 -3
  32. package/dist/src/commands/doctor.d.ts +2 -2
  33. package/dist/src/commands/doctor.js +9 -9
  34. package/dist/src/commands/download.js +15 -13
  35. package/dist/src/commands/export-all.js +8 -8
  36. package/dist/src/commands/export-flow.d.ts +5 -5
  37. package/dist/src/commands/export-flow.js +14 -14
  38. package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
  39. package/dist/src/commands/export-placement-conflicts.js +9 -9
  40. package/dist/src/commands/export-placement-gate.d.ts +2 -2
  41. package/dist/src/commands/export-placement-gate.js +5 -5
  42. package/dist/src/commands/export-placement-policy.d.ts +1 -1
  43. package/dist/src/commands/export-placement-policy.js +1 -1
  44. package/dist/src/commands/export-shared.d.ts +10 -10
  45. package/dist/src/commands/export-shared.js +13 -13
  46. package/dist/src/commands/export.js +4 -4
  47. package/dist/src/commands/furnace/apply.js +16 -16
  48. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
  49. package/dist/src/commands/furnace/chrome-doc-remove.js +1 -1
  50. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
  51. package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
  52. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
  53. package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
  54. package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
  55. package/dist/src/commands/furnace/chrome-doc.js +18 -18
  56. package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
  57. package/dist/src/commands/furnace/create-browser-test.js +4 -4
  58. package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
  59. package/dist/src/commands/furnace/create-dry-run.js +4 -4
  60. package/dist/src/commands/furnace/create-features.d.ts +2 -2
  61. package/dist/src/commands/furnace/create-features.js +2 -2
  62. package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
  63. package/dist/src/commands/furnace/create-mochikit.js +7 -7
  64. package/dist/src/commands/furnace/create-templates.d.ts +14 -14
  65. package/dist/src/commands/furnace/create-templates.js +18 -18
  66. package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
  67. package/dist/src/commands/furnace/create-xpcshell.js +8 -8
  68. package/dist/src/commands/furnace/create.d.ts +1 -1
  69. package/dist/src/commands/furnace/create.js +10 -10
  70. package/dist/src/commands/furnace/deploy.js +4 -4
  71. package/dist/src/commands/furnace/diff.js +7 -7
  72. package/dist/src/commands/furnace/index.js +1 -1
  73. package/dist/src/commands/furnace/init.js +15 -15
  74. package/dist/src/commands/furnace/list.js +2 -2
  75. package/dist/src/commands/furnace/override.d.ts +1 -1
  76. package/dist/src/commands/furnace/override.js +15 -15
  77. package/dist/src/commands/furnace/preview.js +17 -17
  78. package/dist/src/commands/furnace/refresh.js +6 -6
  79. package/dist/src/commands/furnace/remove-mutations.d.ts +3 -3
  80. package/dist/src/commands/furnace/remove-mutations.js +19 -18
  81. package/dist/src/commands/furnace/remove-state.d.ts +1 -1
  82. package/dist/src/commands/furnace/remove-state.js +1 -1
  83. package/dist/src/commands/furnace/remove.js +2 -2
  84. package/dist/src/commands/furnace/rename-browser-test.js +9 -8
  85. package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
  86. package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
  87. package/dist/src/commands/furnace/rename.js +9 -9
  88. package/dist/src/commands/furnace/scan.js +3 -3
  89. package/dist/src/commands/furnace/status.js +7 -7
  90. package/dist/src/commands/furnace/sync.js +6 -6
  91. package/dist/src/commands/furnace/test-file-name.d.ts +2 -2
  92. package/dist/src/commands/furnace/test-file-name.js +2 -2
  93. package/dist/src/commands/furnace/validate.js +11 -12
  94. package/dist/src/commands/import.js +20 -20
  95. package/dist/src/commands/lint-per-patch.js +8 -8
  96. package/dist/src/commands/lint-per-run-checkjs.d.ts +12 -13
  97. package/dist/src/commands/lint-per-run-checkjs.js +14 -15
  98. package/dist/src/commands/lint-report.d.ts +3 -3
  99. package/dist/src/commands/lint-report.js +4 -4
  100. package/dist/src/commands/lint.d.ts +3 -3
  101. package/dist/src/commands/lint.js +35 -35
  102. package/dist/src/commands/manifest.d.ts +4 -4
  103. package/dist/src/commands/package.js +2 -2
  104. package/dist/src/commands/patch/compact.d.ts +2 -2
  105. package/dist/src/commands/patch/compact.js +8 -8
  106. package/dist/src/commands/patch/delete.d.ts +1 -1
  107. package/dist/src/commands/patch/delete.js +8 -8
  108. package/dist/src/commands/patch/lint-ignore.d.ts +3 -4
  109. package/dist/src/commands/patch/lint-ignore.js +14 -15
  110. package/dist/src/commands/patch/move-files-create.d.ts +2 -2
  111. package/dist/src/commands/patch/move-files-create.js +5 -5
  112. package/dist/src/commands/patch/move-files-into.d.ts +2 -2
  113. package/dist/src/commands/patch/move-files-into.js +3 -3
  114. package/dist/src/commands/patch/move-files.js +1 -1
  115. package/dist/src/commands/patch/patch-context.d.ts +1 -1
  116. package/dist/src/commands/patch/rename.d.ts +4 -4
  117. package/dist/src/commands/patch/rename.js +8 -8
  118. package/dist/src/commands/patch/reorder.js +10 -10
  119. package/dist/src/commands/patch/split-plan.d.ts +3 -3
  120. package/dist/src/commands/patch/split-plan.js +6 -5
  121. package/dist/src/commands/patch/split.d.ts +2 -2
  122. package/dist/src/commands/patch/split.js +5 -5
  123. package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
  124. package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
  125. package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
  126. package/dist/src/commands/patch/staged-dependency.js +6 -6
  127. package/dist/src/commands/patch/tier.d.ts +2 -2
  128. package/dist/src/commands/patch/tier.js +5 -5
  129. package/dist/src/commands/patch-rename-map.d.ts +1 -1
  130. package/dist/src/commands/patch-rename-map.js +1 -1
  131. package/dist/src/commands/pending-resolution.d.ts +5 -5
  132. package/dist/src/commands/pending-resolution.js +5 -5
  133. package/dist/src/commands/re-export-adjacent.d.ts +3 -3
  134. package/dist/src/commands/re-export-adjacent.js +8 -8
  135. package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
  136. package/dist/src/commands/re-export-bulk-scan.js +17 -17
  137. package/dist/src/commands/re-export-drift.d.ts +10 -10
  138. package/dist/src/commands/re-export-drift.js +29 -29
  139. package/dist/src/commands/re-export-files.js +14 -15
  140. package/dist/src/commands/re-export-lint.d.ts +26 -26
  141. package/dist/src/commands/re-export-lint.js +27 -27
  142. package/dist/src/commands/re-export-options.d.ts +1 -1
  143. package/dist/src/commands/re-export-options.js +1 -1
  144. package/dist/src/commands/re-export-register.d.ts +1 -1
  145. package/dist/src/commands/re-export-register.js +1 -1
  146. package/dist/src/commands/re-export-scan.d.ts +1 -1
  147. package/dist/src/commands/re-export-scan.js +7 -7
  148. package/dist/src/commands/re-export-single.d.ts +1 -1
  149. package/dist/src/commands/re-export-single.js +20 -20
  150. package/dist/src/commands/re-export.js +7 -6
  151. package/dist/src/commands/rebase/abort.js +6 -6
  152. package/dist/src/commands/rebase/continue.js +8 -7
  153. package/dist/src/commands/rebase/index.d.ts +1 -1
  154. package/dist/src/commands/rebase/index.js +3 -3
  155. package/dist/src/commands/rebase/patch-loop.js +18 -17
  156. package/dist/src/commands/register.js +5 -5
  157. package/dist/src/commands/reset.js +1 -1
  158. package/dist/src/commands/resolve.d.ts +2 -2
  159. package/dist/src/commands/resolve.js +3 -3
  160. package/dist/src/commands/run.js +26 -26
  161. package/dist/src/commands/setup-support.js +4 -4
  162. package/dist/src/commands/setup.js +1 -1
  163. package/dist/src/commands/source.js +1 -1
  164. package/dist/src/commands/status-check.d.ts +3 -3
  165. package/dist/src/commands/status-check.js +4 -4
  166. package/dist/src/commands/status-json.d.ts +14 -13
  167. package/dist/src/commands/status-json.js +9 -8
  168. package/dist/src/commands/status-output.d.ts +3 -3
  169. package/dist/src/commands/status-output.js +3 -3
  170. package/dist/src/commands/status-ownership.d.ts +3 -3
  171. package/dist/src/commands/status-ownership.js +3 -3
  172. package/dist/src/commands/status.js +22 -22
  173. package/dist/src/commands/test-build-phase.d.ts +1 -1
  174. package/dist/src/commands/test-build-phase.js +17 -17
  175. package/dist/src/commands/test-diagnose.d.ts +1 -1
  176. package/dist/src/commands/test-diagnose.js +20 -20
  177. package/dist/src/commands/test-modes.d.ts +2 -2
  178. package/dist/src/commands/test-modes.js +4 -4
  179. package/dist/src/commands/test-run.d.ts +11 -11
  180. package/dist/src/commands/test-run.js +15 -15
  181. package/dist/src/commands/test-stale-gate.d.ts +12 -12
  182. package/dist/src/commands/test-stale-gate.js +13 -13
  183. package/dist/src/commands/test-verdict.d.ts +6 -6
  184. package/dist/src/commands/test-verdict.js +11 -11
  185. package/dist/src/commands/test.d.ts +3 -3
  186. package/dist/src/commands/test.js +36 -36
  187. package/dist/src/commands/token-coverage.js +3 -3
  188. package/dist/src/commands/token-list.js +5 -5
  189. package/dist/src/commands/token.js +9 -9
  190. package/dist/src/commands/tree.js +19 -19
  191. package/dist/src/commands/typecheck.d.ts +6 -6
  192. package/dist/src/commands/typecheck.js +7 -7
  193. package/dist/src/commands/verify.d.ts +3 -3
  194. package/dist/src/commands/verify.js +10 -10
  195. package/dist/src/commands/watch.js +11 -11
  196. package/dist/src/commands/wire.js +13 -13
  197. package/dist/src/core/ast-utils.d.ts +7 -7
  198. package/dist/src/core/ast-utils.js +8 -8
  199. package/dist/src/core/branding.d.ts +5 -5
  200. package/dist/src/core/branding.js +3 -3
  201. package/dist/src/core/browser-wire.d.ts +1 -1
  202. package/dist/src/core/browser-wire.js +4 -4
  203. package/dist/src/core/build-audit-platform.d.ts +6 -6
  204. package/dist/src/core/build-audit-platform.js +26 -26
  205. package/dist/src/core/build-audit-registration.d.ts +5 -5
  206. package/dist/src/core/build-audit-registration.js +7 -7
  207. package/dist/src/core/build-audit-resolve.d.ts +5 -5
  208. package/dist/src/core/build-audit-resolve.js +6 -6
  209. package/dist/src/core/build-audit-skip.d.ts +8 -8
  210. package/dist/src/core/build-audit-skip.js +12 -12
  211. package/dist/src/core/build-audit-transforms.d.ts +2 -2
  212. package/dist/src/core/build-audit-transforms.js +3 -3
  213. package/dist/src/core/build-audit.d.ts +8 -8
  214. package/dist/src/core/build-audit.js +39 -37
  215. package/dist/src/core/build-baseline-types.d.ts +19 -18
  216. package/dist/src/core/build-baseline-types.js +1 -1
  217. package/dist/src/core/build-baseline.d.ts +8 -8
  218. package/dist/src/core/build-baseline.js +14 -14
  219. package/dist/src/core/build-jar-escalation.d.ts +8 -8
  220. package/dist/src/core/build-jar-escalation.js +15 -15
  221. package/dist/src/core/build-overwrite-guard.d.ts +4 -4
  222. package/dist/src/core/build-overwrite-guard.js +13 -13
  223. package/dist/src/core/build-prepare.d.ts +4 -4
  224. package/dist/src/core/build-prepare.js +16 -15
  225. package/dist/src/core/config-mutate.js +4 -4
  226. package/dist/src/core/config-state.js +2 -2
  227. package/dist/src/core/config-validate-build-audit.js +3 -3
  228. package/dist/src/core/config-validate-file-size.d.ts +1 -1
  229. package/dist/src/core/config-validate-file-size.js +2 -2
  230. package/dist/src/core/config-validate.js +8 -9
  231. package/dist/src/core/config.d.ts +10 -10
  232. package/dist/src/core/config.js +10 -10
  233. package/dist/src/core/coverage-extend.d.ts +16 -16
  234. package/dist/src/core/coverage-extend.js +16 -16
  235. package/dist/src/core/destructive.d.ts +14 -14
  236. package/dist/src/core/destructive.js +9 -9
  237. package/dist/src/core/diff-hunks.d.ts +2 -2
  238. package/dist/src/core/diff-hunks.js +7 -7
  239. package/dist/src/core/discard-baseline.d.ts +10 -10
  240. package/dist/src/core/discard-baseline.js +15 -16
  241. package/dist/src/core/display-state.d.ts +11 -11
  242. package/dist/src/core/display-state.js +12 -12
  243. package/dist/src/core/engine-changes.d.ts +2 -2
  244. package/dist/src/core/engine-changes.js +2 -2
  245. package/dist/src/core/engine-precondition.d.ts +4 -4
  246. package/dist/src/core/engine-precondition.js +2 -2
  247. package/dist/src/core/engine-session-lock.d.ts +18 -18
  248. package/dist/src/core/engine-session-lock.js +37 -37
  249. package/dist/src/core/export-moved-code-shape.d.ts +7 -7
  250. package/dist/src/core/export-moved-code-shape.js +8 -8
  251. package/dist/src/core/file-lock-owner.d.ts +11 -11
  252. package/dist/src/core/file-lock-owner.js +18 -18
  253. package/dist/src/core/file-lock.d.ts +12 -12
  254. package/dist/src/core/file-lock.js +52 -39
  255. package/dist/src/core/firefox-cache.d.ts +1 -1
  256. package/dist/src/core/firefox-cache.js +10 -10
  257. package/dist/src/core/firefox-download.d.ts +3 -3
  258. package/dist/src/core/firefox-download.js +6 -6
  259. package/dist/src/core/firefox-extract.d.ts +2 -2
  260. package/dist/src/core/firefox-extract.js +13 -13
  261. package/dist/src/core/firefox.d.ts +5 -5
  262. package/dist/src/core/firefox.js +8 -8
  263. package/dist/src/core/furnace-apply-dry-run.js +1 -1
  264. package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
  265. package/dist/src/core/furnace-apply-ftl.js +8 -8
  266. package/dist/src/core/furnace-apply-helpers.d.ts +9 -9
  267. package/dist/src/core/furnace-apply-helpers.js +21 -21
  268. package/dist/src/core/furnace-apply-output.js +1 -1
  269. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
  270. package/dist/src/core/furnace-apply-overwrite-warn.js +9 -9
  271. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
  272. package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
  273. package/dist/src/core/furnace-apply.d.ts +3 -3
  274. package/dist/src/core/furnace-apply.js +22 -21
  275. package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
  276. package/dist/src/core/furnace-checksum-utils.js +5 -5
  277. package/dist/src/core/furnace-config-custom.d.ts +1 -1
  278. package/dist/src/core/furnace-config-custom.js +2 -2
  279. package/dist/src/core/furnace-config-order.js +1 -1
  280. package/dist/src/core/furnace-config-tokens.d.ts +3 -3
  281. package/dist/src/core/furnace-config-tokens.js +3 -3
  282. package/dist/src/core/furnace-config-validate.js +2 -2
  283. package/dist/src/core/furnace-config.d.ts +4 -4
  284. package/dist/src/core/furnace-config.js +18 -18
  285. package/dist/src/core/furnace-constants.d.ts +6 -6
  286. package/dist/src/core/furnace-constants.js +6 -6
  287. package/dist/src/core/furnace-css-fragments.d.ts +6 -6
  288. package/dist/src/core/furnace-css-fragments.js +11 -11
  289. package/dist/src/core/furnace-dir-entry.d.ts +1 -1
  290. package/dist/src/core/furnace-dir-entry.js +1 -1
  291. package/dist/src/core/furnace-jsconfig.d.ts +7 -7
  292. package/dist/src/core/furnace-jsconfig.js +22 -20
  293. package/dist/src/core/furnace-operation.d.ts +21 -20
  294. package/dist/src/core/furnace-operation.js +36 -34
  295. package/dist/src/core/furnace-precondition.d.ts +10 -10
  296. package/dist/src/core/furnace-precondition.js +8 -8
  297. package/dist/src/core/furnace-refresh.js +2 -2
  298. package/dist/src/core/furnace-registration-ast.d.ts +2 -2
  299. package/dist/src/core/furnace-registration-ast.js +9 -9
  300. package/dist/src/core/furnace-registration-remove.d.ts +4 -4
  301. package/dist/src/core/furnace-registration-remove.js +6 -6
  302. package/dist/src/core/furnace-registration-validate.d.ts +2 -2
  303. package/dist/src/core/furnace-registration-validate.js +2 -2
  304. package/dist/src/core/furnace-registration.d.ts +5 -5
  305. package/dist/src/core/furnace-registration.js +7 -7
  306. package/dist/src/core/furnace-rollback.d.ts +1 -1
  307. package/dist/src/core/furnace-rollback.js +5 -5
  308. package/dist/src/core/furnace-stale-export.d.ts +17 -16
  309. package/dist/src/core/furnace-stale-export.js +16 -15
  310. package/dist/src/core/furnace-staleness.d.ts +2 -2
  311. package/dist/src/core/furnace-staleness.js +2 -2
  312. package/dist/src/core/furnace-state-persist.d.ts +10 -10
  313. package/dist/src/core/furnace-state-persist.js +10 -10
  314. package/dist/src/core/furnace-step-errors.d.ts +6 -6
  315. package/dist/src/core/furnace-step-errors.js +6 -6
  316. package/dist/src/core/furnace-validate-accessibility.js +14 -14
  317. package/dist/src/core/furnace-validate-compatibility.js +9 -9
  318. package/dist/src/core/furnace-validate-registration.d.ts +2 -2
  319. package/dist/src/core/furnace-validate-registration.js +13 -13
  320. package/dist/src/core/furnace-validate-structure.d.ts +1 -1
  321. package/dist/src/core/furnace-validate-structure.js +4 -4
  322. package/dist/src/core/furnace-validate.js +9 -9
  323. package/dist/src/core/furnace-version-drift.d.ts +5 -5
  324. package/dist/src/core/furnace-version-drift.js +5 -5
  325. package/dist/src/core/git-base.d.ts +4 -4
  326. package/dist/src/core/git-base.js +9 -9
  327. package/dist/src/core/git-diff-new-file.d.ts +4 -4
  328. package/dist/src/core/git-diff-new-file.js +8 -8
  329. package/dist/src/core/git-diff.d.ts +4 -4
  330. package/dist/src/core/git-diff.js +35 -34
  331. package/dist/src/core/git-file-ops.d.ts +6 -6
  332. package/dist/src/core/git-file-ops.js +7 -7
  333. package/dist/src/core/git-readonly-index.d.ts +12 -12
  334. package/dist/src/core/git-readonly-index.js +12 -12
  335. package/dist/src/core/git-status.d.ts +4 -4
  336. package/dist/src/core/git-status.js +4 -4
  337. package/dist/src/core/git.d.ts +3 -3
  338. package/dist/src/core/git.js +14 -14
  339. package/dist/src/core/harness-orphans.d.ts +17 -17
  340. package/dist/src/core/harness-orphans.js +20 -20
  341. package/dist/src/core/history-log.d.ts +3 -3
  342. package/dist/src/core/history-log.js +3 -3
  343. package/dist/src/core/license-headers.d.ts +19 -18
  344. package/dist/src/core/license-headers.js +29 -28
  345. package/dist/src/core/mach-build-artifacts.d.ts +21 -21
  346. package/dist/src/core/mach-build-artifacts.js +23 -23
  347. package/dist/src/core/mach-error-hints.d.ts +5 -5
  348. package/dist/src/core/mach-error-hints.js +13 -13
  349. package/dist/src/core/mach-known-noise-filter.d.ts +41 -38
  350. package/dist/src/core/mach-known-noise-filter.js +53 -50
  351. package/dist/src/core/mach-mozconfig.d.ts +6 -6
  352. package/dist/src/core/mach-mozconfig.js +15 -15
  353. package/dist/src/core/mach-python.d.ts +2 -1
  354. package/dist/src/core/mach-python.js +4 -3
  355. package/dist/src/core/mach-resource-shim.d.ts +12 -12
  356. package/dist/src/core/mach-resource-shim.js +20 -20
  357. package/dist/src/core/mach.d.ts +23 -23
  358. package/dist/src/core/mach.js +36 -36
  359. package/dist/src/core/marionette-port.d.ts +15 -13
  360. package/dist/src/core/marionette-port.js +34 -31
  361. package/dist/src/core/marionette-preflight.d.ts +6 -6
  362. package/dist/src/core/marionette-preflight.js +23 -23
  363. package/dist/src/core/markdown-table.d.ts +9 -9
  364. package/dist/src/core/markdown-table.js +14 -14
  365. package/dist/src/core/mochitest-server-port.d.ts +8 -8
  366. package/dist/src/core/mochitest-server-port.js +14 -14
  367. package/dist/src/core/module-resolution-preflight.d.ts +8 -8
  368. package/dist/src/core/module-resolution-preflight.js +11 -11
  369. package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
  370. package/dist/src/core/moz-manifest-helpers.js +7 -7
  371. package/dist/src/core/moz-manifest-register.d.ts +1 -1
  372. package/dist/src/core/moz-manifest-register.js +2 -2
  373. package/dist/src/core/moz-manifest-rules.js +11 -11
  374. package/dist/src/core/moz-manifest-tokenizers.js +1 -1
  375. package/dist/src/core/ownership-table.d.ts +5 -5
  376. package/dist/src/core/ownership-table.js +7 -7
  377. package/dist/src/core/parser-fallback.d.ts +3 -3
  378. package/dist/src/core/parser-fallback.js +3 -3
  379. package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
  380. package/dist/src/core/patch-apply-fuzz.js +9 -9
  381. package/dist/src/core/patch-apply.d.ts +9 -9
  382. package/dist/src/core/patch-apply.js +30 -30
  383. package/dist/src/core/patch-export-update.d.ts +4 -4
  384. package/dist/src/core/patch-export-update.js +3 -3
  385. package/dist/src/core/patch-export.d.ts +10 -10
  386. package/dist/src/core/patch-export.js +13 -13
  387. package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
  388. package/dist/src/core/patch-identifier-suggest.js +4 -4
  389. package/dist/src/core/patch-lint-binary.d.ts +7 -7
  390. package/dist/src/core/patch-lint-cache.d.ts +2 -2
  391. package/dist/src/core/patch-lint-cache.js +13 -13
  392. package/dist/src/core/patch-lint-checkjs.d.ts +26 -26
  393. package/dist/src/core/patch-lint-checkjs.js +42 -41
  394. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
  395. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
  396. package/dist/src/core/patch-lint-creators.d.ts +3 -3
  397. package/dist/src/core/patch-lint-creators.js +3 -3
  398. package/dist/src/core/patch-lint-cross.d.ts +13 -13
  399. package/dist/src/core/patch-lint-cross.js +21 -21
  400. package/dist/src/core/patch-lint-css.d.ts +1 -1
  401. package/dist/src/core/patch-lint-css.js +5 -5
  402. package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
  403. package/dist/src/core/patch-lint-diff-tag.js +5 -5
  404. package/dist/src/core/patch-lint-diff.d.ts +4 -4
  405. package/dist/src/core/patch-lint-diff.js +4 -4
  406. package/dist/src/core/patch-lint-file-size.d.ts +3 -3
  407. package/dist/src/core/patch-lint-file-size.js +3 -3
  408. package/dist/src/core/patch-lint-forward-registration.d.ts +4 -4
  409. package/dist/src/core/patch-lint-forward-registration.js +12 -12
  410. package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
  411. package/dist/src/core/patch-lint-jsdoc.js +11 -11
  412. package/dist/src/core/patch-lint-module-registration.d.ts +1 -1
  413. package/dist/src/core/patch-lint-module-registration.js +1 -1
  414. package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
  415. package/dist/src/core/patch-lint-mozbuild.js +10 -10
  416. package/dist/src/core/patch-lint-observer.d.ts +3 -3
  417. package/dist/src/core/patch-lint-observer.js +7 -7
  418. package/dist/src/core/patch-lint-ownership.d.ts +6 -6
  419. package/dist/src/core/patch-lint-ownership.js +6 -6
  420. package/dist/src/core/patch-lint-prettier.d.ts +6 -6
  421. package/dist/src/core/patch-lint-prettier.js +6 -6
  422. package/dist/src/core/patch-lint-queue-types.d.ts +1 -1
  423. package/dist/src/core/patch-lint-queue-types.js +1 -1
  424. package/dist/src/core/patch-lint-staged-registration.d.ts +2 -2
  425. package/dist/src/core/patch-lint-staged-registration.js +6 -6
  426. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
  427. package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
  428. package/dist/src/core/patch-lint.d.ts +27 -26
  429. package/dist/src/core/patch-lint.js +48 -46
  430. package/dist/src/core/patch-lock.d.ts +1 -1
  431. package/dist/src/core/patch-lock.js +8 -8
  432. package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
  433. package/dist/src/core/patch-manifest-consistency.js +16 -17
  434. package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
  435. package/dist/src/core/patch-manifest-files-affected.js +3 -3
  436. package/dist/src/core/patch-manifest-io.d.ts +14 -14
  437. package/dist/src/core/patch-manifest-io.js +27 -27
  438. package/dist/src/core/patch-manifest-query.d.ts +1 -1
  439. package/dist/src/core/patch-manifest-query.js +4 -4
  440. package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
  441. package/dist/src/core/patch-manifest-resolve.js +7 -7
  442. package/dist/src/core/patch-manifest-validate.js +3 -3
  443. package/dist/src/core/patch-manifest.d.ts +2 -2
  444. package/dist/src/core/patch-manifest.js +2 -2
  445. package/dist/src/core/patch-parse.d.ts +14 -14
  446. package/dist/src/core/patch-parse.js +16 -16
  447. package/dist/src/core/patch-registration-refs.d.ts +4 -4
  448. package/dist/src/core/patch-registration-refs.js +7 -7
  449. package/dist/src/core/patch-transform.d.ts +8 -8
  450. package/dist/src/core/patch-transform.js +13 -13
  451. package/dist/src/core/process-cpu-time.d.ts +1 -1
  452. package/dist/src/core/process-cpu-time.js +5 -5
  453. package/dist/src/core/rebase-session.d.ts +7 -7
  454. package/dist/src/core/rebase-session.js +8 -8
  455. package/dist/src/core/register-result.d.ts +1 -1
  456. package/dist/src/core/register-result.js +1 -1
  457. package/dist/src/core/register-scaffold.d.ts +2 -2
  458. package/dist/src/core/register-scaffold.js +3 -3
  459. package/dist/src/core/register-shared-css.d.ts +3 -3
  460. package/dist/src/core/register-shared-css.js +4 -4
  461. package/dist/src/core/register-xpcshell-test.d.ts +2 -2
  462. package/dist/src/core/register-xpcshell-test.js +2 -2
  463. package/dist/src/core/run-log-redact.d.ts +12 -12
  464. package/dist/src/core/run-log-redact.js +16 -16
  465. package/dist/src/core/run-log.d.ts +9 -9
  466. package/dist/src/core/run-log.js +14 -14
  467. package/dist/src/core/shared-ftl.d.ts +2 -2
  468. package/dist/src/core/shared-ftl.js +6 -6
  469. package/dist/src/core/signal-critical.d.ts +2 -2
  470. package/dist/src/core/signal-critical.js +2 -2
  471. package/dist/src/core/smoke-patterns.d.ts +5 -5
  472. package/dist/src/core/smoke-patterns.js +9 -9
  473. package/dist/src/core/state-file.d.ts +3 -3
  474. package/dist/src/core/status-binary.d.ts +8 -8
  475. package/dist/src/core/status-binary.js +12 -12
  476. package/dist/src/core/status-classify.d.ts +17 -17
  477. package/dist/src/core/status-classify.js +11 -11
  478. package/dist/src/core/test-changed-prefs.d.ts +12 -12
  479. package/dist/src/core/test-changed-prefs.js +15 -15
  480. package/dist/src/core/test-harness-crash.d.ts +39 -39
  481. package/dist/src/core/test-harness-crash.js +67 -67
  482. package/dist/src/core/test-harness-output.d.ts +7 -7
  483. package/dist/src/core/test-harness-output.js +7 -7
  484. package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
  485. package/dist/src/core/test-harness-verdict-notes.js +4 -4
  486. package/dist/src/core/test-path-scope.d.ts +8 -8
  487. package/dist/src/core/test-path-scope.js +11 -11
  488. package/dist/src/core/test-stale-check.d.ts +22 -21
  489. package/dist/src/core/test-stale-check.js +29 -28
  490. package/dist/src/core/test-stale-symlink.d.ts +1 -1
  491. package/dist/src/core/test-stale-symlink.js +1 -1
  492. package/dist/src/core/test-stall-triage.d.ts +9 -9
  493. package/dist/src/core/test-stall-triage.js +22 -22
  494. package/dist/src/core/token-category.d.ts +4 -4
  495. package/dist/src/core/token-category.js +13 -12
  496. package/dist/src/core/token-coverage.js +4 -5
  497. package/dist/src/core/token-dark-mode.d.ts +17 -9
  498. package/dist/src/core/token-dark-mode.js +41 -28
  499. package/dist/src/core/token-docs.d.ts +1 -1
  500. package/dist/src/core/token-inventory.d.ts +6 -6
  501. package/dist/src/core/token-inventory.js +7 -7
  502. package/dist/src/core/token-manager.d.ts +3 -3
  503. package/dist/src/core/token-manager.js +21 -21
  504. package/dist/src/core/token-scaffold.d.ts +4 -4
  505. package/dist/src/core/token-scaffold.js +4 -4
  506. package/dist/src/core/token-variant.d.ts +14 -14
  507. package/dist/src/core/token-variant.js +32 -32
  508. package/dist/src/core/toolchain-preflight.d.ts +15 -15
  509. package/dist/src/core/toolchain-preflight.js +22 -22
  510. package/dist/src/core/tree-cow.d.ts +3 -3
  511. package/dist/src/core/tree-cow.js +6 -6
  512. package/dist/src/core/tree-guard.d.ts +3 -3
  513. package/dist/src/core/tree-guard.js +23 -23
  514. package/dist/src/core/tree-store.d.ts +15 -15
  515. package/dist/src/core/tree-store.js +35 -33
  516. package/dist/src/core/typecheck-shim.d.ts +16 -15
  517. package/dist/src/core/typecheck-shim.js +26 -25
  518. package/dist/src/core/typecheck.d.ts +12 -12
  519. package/dist/src/core/typecheck.js +31 -31
  520. package/dist/src/core/wire-destroy.d.ts +2 -2
  521. package/dist/src/core/wire-destroy.js +5 -5
  522. package/dist/src/core/wire-dom-fragment.d.ts +3 -3
  523. package/dist/src/core/wire-dom-fragment.js +6 -6
  524. package/dist/src/core/wire-init.d.ts +2 -2
  525. package/dist/src/core/wire-init.js +7 -7
  526. package/dist/src/core/wire-subscript.d.ts +1 -1
  527. package/dist/src/core/wire-subscript.js +3 -3
  528. package/dist/src/core/wire-utils.d.ts +9 -9
  529. package/dist/src/core/wire-utils.js +11 -11
  530. package/dist/src/core/xpcshell-appdir.d.ts +20 -20
  531. package/dist/src/core/xpcshell-appdir.js +26 -26
  532. package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
  533. package/dist/src/core/xpcshell-profile-dir.js +7 -7
  534. package/dist/src/errors/base.d.ts +22 -21
  535. package/dist/src/errors/base.js +22 -21
  536. package/dist/src/errors/build.d.ts +6 -6
  537. package/dist/src/errors/build.js +6 -6
  538. package/dist/src/errors/codes.d.ts +10 -10
  539. package/dist/src/errors/codes.js +10 -10
  540. package/dist/src/errors/furnace.d.ts +2 -2
  541. package/dist/src/errors/git.d.ts +1 -1
  542. package/dist/src/errors/git.js +1 -1
  543. package/dist/src/errors/patch.d.ts +3 -3
  544. package/dist/src/errors/patch.js +3 -3
  545. package/dist/src/errors/rebase.d.ts +1 -1
  546. package/dist/src/errors/rebase.js +1 -1
  547. package/dist/src/errors/run.d.ts +1 -1
  548. package/dist/src/errors/run.js +1 -1
  549. package/dist/src/index.d.ts +4 -4
  550. package/dist/src/index.js +4 -4
  551. package/dist/src/types/commands/options.d.ts +86 -85
  552. package/dist/src/types/commands/patches.d.ts +19 -19
  553. package/dist/src/types/commands/project.d.ts +3 -3
  554. package/dist/src/types/config.d.ts +24 -23
  555. package/dist/src/types/furnace.d.ts +17 -17
  556. package/dist/src/types/json.d.ts +3 -3
  557. package/dist/src/types/json.js +2 -2
  558. package/dist/src/types/typecheck.d.ts +3 -3
  559. package/dist/src/utils/assert.d.ts +1 -1
  560. package/dist/src/utils/assert.js +6 -6
  561. package/dist/src/utils/build-info.d.ts +5 -5
  562. package/dist/src/utils/build-info.js +6 -6
  563. package/dist/src/utils/child-env.d.ts +5 -5
  564. package/dist/src/utils/child-env.js +5 -5
  565. package/dist/src/utils/concurrency.d.ts +2 -2
  566. package/dist/src/utils/concurrency.js +2 -2
  567. package/dist/src/utils/elapsed.js +1 -1
  568. package/dist/src/utils/errors.d.ts +8 -8
  569. package/dist/src/utils/errors.js +8 -8
  570. package/dist/src/utils/fs.d.ts +1 -1
  571. package/dist/src/utils/fs.js +8 -8
  572. package/dist/src/utils/line-dispatch.d.ts +3 -3
  573. package/dist/src/utils/line-dispatch.js +5 -5
  574. package/dist/src/utils/logger.d.ts +4 -4
  575. package/dist/src/utils/logger.js +11 -11
  576. package/dist/src/utils/machine-output.js +2 -2
  577. package/dist/src/utils/options.d.ts +13 -13
  578. package/dist/src/utils/options.js +20 -20
  579. package/dist/src/utils/package-root.js +2 -2
  580. package/dist/src/utils/paths.d.ts +4 -4
  581. package/dist/src/utils/paths.js +4 -4
  582. package/dist/src/utils/process-group.d.ts +8 -8
  583. package/dist/src/utils/process-group.js +19 -19
  584. package/dist/src/utils/process.d.ts +34 -33
  585. package/dist/src/utils/process.js +20 -19
  586. package/dist/src/utils/ps-duration.d.ts +4 -4
  587. package/dist/src/utils/ps-duration.js +6 -6
  588. package/dist/src/utils/regex.d.ts +4 -4
  589. package/dist/src/utils/regex.js +7 -7
  590. package/dist/src/utils/sleep.d.ts +7 -7
  591. package/dist/src/utils/sleep.js +7 -7
  592. package/dist/src/utils/stdio-drain.d.ts +7 -7
  593. package/dist/src/utils/stdio-drain.js +8 -8
  594. package/dist/src/utils/validation.d.ts +11 -12
  595. package/dist/src/utils/validation.js +20 -21
  596. package/docs/README.md +2 -2
  597. package/docs/configuration.md +120 -114
  598. package/docs/exit-codes.md +63 -58
  599. package/docs/furnace.md +20 -19
  600. package/docs/lifecycle-invariants.md +412 -251
  601. package/docs/machine-output.md +33 -32
  602. package/docs/patch-workflow.md +48 -45
  603. package/docs/run-logs.md +62 -58
  604. package/docs/testing.md +101 -101
  605. package/docs/verification-trees.md +23 -22
  606. package/package.json +2 -2
@@ -7,34 +7,34 @@
7
7
  */
8
8
  /**
9
9
  * Classification buckets for engine file changes:
10
- * - `patch-backed`: content matches the expected post-patch state — normal
10
+ * - `patch-backed`: content matches the expected post-patch state. Normal
11
11
  * after `fireforge import`.
12
12
  * - `patch-owned-drift`: the file is claimed by exactly one patch, but the
13
13
  * live engine content no longer matches that patch's expected post-apply
14
14
  * content. This includes furnace-prefixed paths: a path can be both
15
15
  * Furnace-managed and patch-claimed (export a deployed component, then
16
- * edit the workspace source and `furnace deploy` again — the deployed copy
17
- * now has content the patch body lacks). Checking the furnace prefix first
18
- * would bucket such files as `furnace` and report the stale patch as
19
- * owned.
20
- * - `unmanaged`: edits not explained by any patch or tool — local drift to
16
+ * edit the workspace source and `furnace deploy` again, and the deployed
17
+ * copy now has content the patch body lacks). Checking the furnace
18
+ * prefix first would bucket such files as `furnace` and report the stale
19
+ * patch as owned.
20
+ * - `unmanaged`: edits not explained by any patch or tool. Local drift to
21
21
  * export or discard.
22
22
  * - `branding`: files under tool-managed branding paths, written by
23
23
  * FireForge's branding pipeline.
24
24
  * - `furnace`: files under Furnace-managed component prefixes. When exactly
25
25
  * one patch also claims the path, this bucket asserts the live content
26
- * matches that patch's expected post-apply content — a mismatch is
26
+ * matches that patch's expected post-apply content. A mismatch is
27
27
  * reported as `patch-owned-drift` instead (see above).
28
28
  * - `conflict`: the file is claimed by two or more patches in
29
29
  * `patches.json`. The human `--ownership` mode surfaces this bucket as
30
- * `CONFLICT`; carrying the classification through the JSON pipeline lets
30
+ * `CONFLICT`. Carrying the classification through the JSON pipeline lets
31
31
  * machine consumers detect the same ownership breakage rather than seeing
32
32
  * it rolled into `unmanaged` as routine local drift.
33
33
  * - `binary-unsupported`: the file's comparison is binary and the owning
34
- * patch body records no usable blob hash to compare against — an honest
35
- * "binary — comparison unsupported" instead of a permanent false
36
- * `patch-owned-drift`. Deliberately NOT in the default `--check` fail set;
37
- * opt in with `--fail-on binary-unsupported`.
34
+ * patch body records no usable blob hash to compare against. It reports an
35
+ * honest "binary, comparison unsupported" instead of a permanent false
36
+ * `patch-owned-drift`. Not in the default `--check` fail set. Opt in
37
+ * with `--fail-on binary-unsupported`.
38
38
  */
39
39
  export type FileClassification = 'patch-backed' | 'patch-owned-drift' | 'unmanaged' | 'branding' | 'furnace' | 'conflict' | 'binary-unsupported';
40
40
  export interface StatusFile {
@@ -45,7 +45,7 @@ export interface ClassifiedFile extends StatusFile {
45
45
  classification: FileClassification;
46
46
  /**
47
47
  * Names of patch files that claim this path in `patches.json`.
48
- * Populated only when `classification === 'conflict'` — single-claim
48
+ * Populated only when `classification === 'conflict'`. Single-claim
49
49
  * patch-backed entries don't need to expose their owner because the
50
50
  * single claim is fully captured by the classification itself.
51
51
  */
@@ -54,14 +54,14 @@ export interface ClassifiedFile extends StatusFile {
54
54
  * Owning patch filename when exactly one patch claims this path
55
55
  * (patch-backed, patch-owned-drift, and single-owner furnace entries).
56
56
  * Unset for unowned, branding-generated, unowned-furnace, and conflict
57
- * entries — conflicts carry `claimedBy` instead. Exposed through
57
+ * entries. Conflicts carry `claimedBy` instead. Exposed through
58
58
  * `status --json` as the `patch` field.
59
59
  */
60
60
  owner?: string;
61
61
  }
62
62
  /**
63
63
  * Builds the file → owning-patch-filenames multimap from manifest rows.
64
- * Single source of truth for cross-patch claim detection — status
64
+ * Single source of truth for cross-patch claim detection: status
65
65
  * classification, verify's cross-claim check, and the ownership table all
66
66
  * consume this builder (they used to each rebuild it, one drift away from
67
67
  * disagreeing about what "claimed" means).
@@ -72,14 +72,14 @@ export declare function buildPatchClaims(manifestPatches: ReadonlyArray<{
72
72
  }>): Map<string, string[]>;
73
73
  /**
74
74
  * Reduces a two-character porcelain XY status to its primary code.
75
- * Single source of truth — status-output.ts renders from the same logic.
75
+ * Single source of truth, and status-output.ts renders from the same logic.
76
76
  */
77
77
  export declare function getPrimaryStatusCode(status: string): string;
78
78
  /**
79
79
  * True for the branding paths whose content FireForge generates itself
80
80
  * (configure.sh, brand.properties/ftl, browser/moz.configure). Unlike the
81
81
  * broader branding-root test, a brand-new unowned file under the branding
82
- * directory is NOT generated — it is a patch candidate and must stay
82
+ * directory is not generated: it is a patch candidate and must stay
83
83
  * visible as unmanaged (the Assets.car precedent).
84
84
  */
85
85
  export declare function isGeneratedBrandingPath(file: string, binaryName: string): boolean;
@@ -17,7 +17,7 @@ import { createPatchedContentContext } from './patch-apply.js';
17
17
  import { classifyBinaryOwnedFile } from './status-binary.js';
18
18
  /**
19
19
  * Builds the file → owning-patch-filenames multimap from manifest rows.
20
- * Single source of truth for cross-patch claim detection — status
20
+ * Single source of truth for cross-patch claim detection: status
21
21
  * classification, verify's cross-claim check, and the ownership table all
22
22
  * consume this builder (they used to each rebuild it, one drift away from
23
23
  * disagreeing about what "claimed" means).
@@ -35,7 +35,7 @@ export function buildPatchClaims(manifestPatches) {
35
35
  }
36
36
  /**
37
37
  * Reduces a two-character porcelain XY status to its primary code.
38
- * Single source of truth — status-output.ts renders from the same logic.
38
+ * Single source of truth, and status-output.ts renders from the same logic.
39
39
  */
40
40
  export function getPrimaryStatusCode(status) {
41
41
  if (status.includes('?'))
@@ -53,7 +53,7 @@ export function getPrimaryStatusCode(status) {
53
53
  * True for the branding paths whose content FireForge generates itself
54
54
  * (configure.sh, brand.properties/ftl, browser/moz.configure). Unlike the
55
55
  * broader branding-root test, a brand-new unowned file under the branding
56
- * directory is NOT generated — it is a patch candidate and must stay
56
+ * directory is not generated: it is a patch candidate and must stay
57
57
  * visible as unmanaged (the Assets.car precedent).
58
58
  */
59
59
  export function isGeneratedBrandingPath(file, binaryName) {
@@ -67,15 +67,15 @@ export function isGeneratedBrandingPath(file, binaryName) {
67
67
  /**
68
68
  * Compares a single-owner file's live engine content against its owning
69
69
  * patch's expected post-apply content. `matchClassification` is what a
70
- * clean match reports — `patch-backed` for ordinary patch-claimed paths,
70
+ * clean match reports: `patch-backed` for ordinary patch-claimed paths,
71
71
  * `furnace` for furnace-prefixed paths so healthy deployed components
72
72
  * keep landing in the pinned furnace bucket. Any mismatch (including a
73
73
  * deletion the patch does not expect, or a failed comparison) reports
74
74
  * `patch-owned-drift`.
75
75
  */
76
76
  async function classifySingleOwnerFile(entry, engineDir, patchesDir, matchClassification, owner, ctx) {
77
- // Binary comparisons cannot go through the utf-8 content path below —
78
- // binary patch bodies parse to zero hunks, so the patched-content
77
+ // Binary comparisons cannot go through the utf-8 content path below.
78
+ // Binary patch bodies parse to zero hunks, so the patched-content
79
79
  // computation returned HEAD content unchanged and the comparison
80
80
  // reported `patch-owned-drift` forever. Settle by blob hash,
81
81
  // or classify explicitly as `binary-unsupported` when no hash exists.
@@ -100,7 +100,7 @@ async function classifySingleOwnerFile(entry, engineDir, patchesDir, matchClassi
100
100
  owner,
101
101
  };
102
102
  }
103
- // File exists on disk — compare actual vs expected
103
+ // File exists on disk: compare actual vs expected
104
104
  try {
105
105
  const [expected, actual] = await Promise.all([
106
106
  ctx.computePatched(entry.file),
@@ -130,7 +130,7 @@ async function classifySingleOwnerFile(entry, engineDir, patchesDir, matchClassi
130
130
  */
131
131
  export async function classifyFiles(files, engineDir, patchesDir, binaryName, furnacePrefixes) {
132
132
  // One manifest load + patch discovery + memoized body reads for the
133
- // whole batch — the previous per-file computation re-ran all three for
133
+ // whole batch. The previous per-file computation re-ran all three for
134
134
  // every dirty file (O(dirtyFiles × patches) redundant IO on a broad
135
135
  // engine edit session).
136
136
  const ctx = await createPatchedContentContext(patchesDir, engineDir);
@@ -150,14 +150,14 @@ export async function classifyFiles(files, engineDir, patchesDir, binaryName, fu
150
150
  ctx,
151
151
  };
152
152
  // Bounded pool over per-file classification (each single-owner file
153
- // spawns git); order preserved by the mapper. Per-file failures settle
153
+ // spawns git). Order preserved by the mapper. Per-file failures settle
154
154
  // inside classifySingleOwnerFile's catch, so one bad file never rejects
155
155
  // the batch.
156
156
  return mapWithConcurrency(files, CLASSIFY_CONCURRENCY, (entry) => classifyEntry(entry, deps));
157
157
  }
158
158
  /** Concurrency bound for per-file classification (matches import's guard). */
159
159
  const CLASSIFY_CONCURRENCY = 8;
160
- /** Classifies one status entry; extracted so the pool worker stays flat. */
160
+ /** Classifies one status entry. Extracted so the pool worker stays flat. */
161
161
  async function classifyEntry(entry, deps) {
162
162
  const { engineDir, patchesDir, binaryName, furnacePrefixes, patchClaims, ctx } = deps;
163
163
  const owners = patchClaims.get(entry.file);
@@ -209,7 +209,7 @@ async function classifyEntry(entry, deps) {
209
209
  if (!owners) {
210
210
  return { ...entry, classification: 'unmanaged' };
211
211
  }
212
- // File is claimed by exactly one patch — compare content.
212
+ // File is claimed by exactly one patch: compare content.
213
213
  const owner = owners[0];
214
214
  if (owner === undefined) {
215
215
  return { ...entry, classification: 'unmanaged' };
@@ -1,26 +1,26 @@
1
1
  /**
2
2
  * Recognizer for the one mochitest failure shape that is a function of run
3
- * LENGTH rather than of the code under test: the time-driven
3
+ * length rather than of the code under test: the time-driven
4
4
  * changed-preference checks.
5
5
  *
6
6
  * Separate from `test-harness-crash.ts` because it is not a crash
7
- * classification — the run failed, and the classifier's verdict is correct.
8
- * What this adds is which KIND of failure it was, which is a different
7
+ * classification. The run failed, and the classifier's verdict is correct.
8
+ * What this adds is which kind of failure it was, which is a different
9
9
  * question and one that only grows as more such shapes are recorded.
10
10
  */
11
11
  /**
12
- * Describes a failure set that consists ENTIRELY of changed-preference
12
+ * Describes a failure set that consists entirely of changed-preference
13
13
  * checks on {@link TIME_DRIVEN_PREF_NAMES}.
14
14
  *
15
- * Deliberately keyed on the pref NAMES rather than on the harness's phrasing
16
- * of its changed-preference report: the phrasing is upstream copy that has
17
- * no stable contract with us, and the names are the part that identifies the
18
- * shape. A single block that names anything else — a real assertion, a
19
- * different pref — disqualifies the whole set, because the point is to
20
- * describe a run whose every failure is this noise, never to explain away
21
- * one real failure sitting beside it.
15
+ * Keyed on the pref names rather than on the harness's phrasing of its
16
+ * changed-preference report: the phrasing is upstream copy that has no
17
+ * stable contract with us, and the names are the part that identifies the
18
+ * shape. A single block that names anything else (a real assertion, a
19
+ * different pref) disqualifies the whole set, so that this describes a run
20
+ * whose every failure is this noise, and never explains away one real
21
+ * failure sitting beside it.
22
22
  *
23
- * Pure; returns undefined when the shape does not apply.
23
+ * Pure. Returns undefined when the shape does not apply.
24
24
  *
25
25
  * @param output - Combined harness stdout+stderr
26
26
  * @returns Operator-facing explanation, or undefined
@@ -1,23 +1,23 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
3
  * Recognizer for the one mochitest failure shape that is a function of run
4
- * LENGTH rather than of the code under test: the time-driven
4
+ * length rather than of the code under test: the time-driven
5
5
  * changed-preference checks.
6
6
  *
7
7
  * Separate from `test-harness-crash.ts` because it is not a crash
8
- * classification — the run failed, and the classifier's verdict is correct.
9
- * What this adds is which KIND of failure it was, which is a different
8
+ * classification. The run failed, and the classifier's verdict is correct.
9
+ * What this adds is which kind of failure it was, which is a different
10
10
  * question and one that only grows as more such shapes are recorded.
11
11
  */
12
12
  import { collectUnexpectedFailureBlocks } from './test-harness-crash.js';
13
13
  /**
14
- * Preferences that move on their own as a function of how LONG a run takes,
14
+ * Preferences that move on their own as a function of how long a run takes,
15
15
  * not of what it tested.
16
16
  *
17
17
  * Both are time-driven: a long run crosses the cold-startup check interval
18
18
  * and the pref moves under the harness. The observable consequence is that
19
19
  * chunk length, not the change under test, decides whether the suite is
20
- * red — the same work at a smaller `--chunk` passes. FireForge cannot
20
+ * red. The same work at a smaller `--chunk` passes. FireForge cannot
21
21
  * suppress the check (it is the harness's, not ours) but it can stop the
22
22
  * pair being indistinguishable from two real assertion failures, which is
23
23
  * the whole cost of the shape.
@@ -29,18 +29,18 @@ const TIME_DRIVEN_PREF_NAMES = ['lastColdStartupCheck', 'globalprivacycontrol'];
29
29
  /** A failure block that is a changed-preference report rather than an assertion. */
30
30
  const CHANGED_PREF_BLOCK_PATTERN = /pref(?:erence)?s?\b/i;
31
31
  /**
32
- * Describes a failure set that consists ENTIRELY of changed-preference
32
+ * Describes a failure set that consists entirely of changed-preference
33
33
  * checks on {@link TIME_DRIVEN_PREF_NAMES}.
34
34
  *
35
- * Deliberately keyed on the pref NAMES rather than on the harness's phrasing
36
- * of its changed-preference report: the phrasing is upstream copy that has
37
- * no stable contract with us, and the names are the part that identifies the
38
- * shape. A single block that names anything else — a real assertion, a
39
- * different pref — disqualifies the whole set, because the point is to
40
- * describe a run whose every failure is this noise, never to explain away
41
- * one real failure sitting beside it.
35
+ * Keyed on the pref names rather than on the harness's phrasing of its
36
+ * changed-preference report: the phrasing is upstream copy that has no
37
+ * stable contract with us, and the names are the part that identifies the
38
+ * shape. A single block that names anything else (a real assertion, a
39
+ * different pref) disqualifies the whole set, so that this describes a run
40
+ * whose every failure is this noise, and never explains away one real
41
+ * failure sitting beside it.
42
42
  *
43
- * Pure; returns undefined when the shape does not apply.
43
+ * Pure. Returns undefined when the shape does not apply.
44
44
  *
45
45
  * @param output - Combined harness stdout+stderr
46
46
  * @returns Operator-facing explanation, or undefined
@@ -61,7 +61,7 @@ export function describeChangedPrefNoise(output) {
61
61
  /** Failure blocks inspected before the changed-pref shape is abandoned. */
62
62
  const CHANGED_PREF_BLOCK_LIMIT = 20;
63
63
  /**
64
- * The RECOGNIZER half of the shape, split from the formatting so a caller
64
+ * The recognizer half of the shape, split from the formatting so a caller
65
65
  * that only needs the yes/no answer does not build the ~500-character
66
66
  * explanation to throw it away.
67
67
  *
@@ -8,16 +8,16 @@
8
8
  * - startup crashes from the mozlog resource monitor on macOS
9
9
  * (`AttributeError: 'SystemResourceMonitor' object has no attribute
10
10
  * 'poll_interval'`, `host_statistics64(HOST_VM_INFO64) syscall failed`,
11
- * `(ipc/mig) array not large enough` — a psutil/macOS mismatch) which
12
- * abort the run before any test executes;
11
+ * `(ipc/mig) array not large enough`, a psutil/macOS mismatch) which
12
+ * abort the run before any test executes.
13
13
  * - hangs after browser startup that die at the no-output timeout yet still
14
- * emit a `Passed: 0` summary;
14
+ * emit a `Passed: 0` summary.
15
15
  * - post-green shutdown re-entry, where a fully green run stalls on "must
16
16
  * wait for focus" and records "Application shut down (without crashing)
17
17
  * in the middle of a test!" as the only unexpected failure.
18
18
  *
19
- * Classification therefore keys on `TEST-START` presence — summary lines
20
- * never count as proof that tests ran — and recognizes the crash shapes
19
+ * Classification therefore keys on `TEST-START` presence, so summary lines
20
+ * never count as proof that tests ran, and recognizes the crash shapes
21
21
  * above so the command layer can retry them with a bounded budget instead of
22
22
  * reporting phantom test failures (or phantom passes).
23
23
  */
@@ -51,14 +51,14 @@ export interface HarnessRunVerdict extends HarnessSummaryCounts {
51
51
  secondaryHarnessSignature?: HarnessCrashSignature;
52
52
  /**
53
53
  * Set when a non-zero mach exit code was overridden because the output
54
- * embeds a completed green summary — the exit code followed harness
54
+ * embeds a completed green summary, so the exit code followed harness
55
55
  * noise, not a test result. Callers should surface a note.
56
56
  */
57
57
  greenSummaryOverride?: boolean;
58
58
  /**
59
- * Set when the output embeds a green-LOOKING summary that was REJECTED:
59
+ * Set when the output embeds a green-looking summary that was rejected:
60
60
  * crash or truncation evidence proves the suite never completed, so the
61
- * "green" counts only cover the files that ran before the run died — a
61
+ * "green" counts only cover the files that ran before the run died. A
62
62
  * SIGSEGV at the second of eight files leaves a `Passed: 2 / Failed: 0`
63
63
  * summary that reads as a pass. Callers must fail the run and surface the
64
64
  * evidence.
@@ -66,9 +66,9 @@ export interface HarnessRunVerdict extends HarnessSummaryCounts {
66
66
  greenSummaryRejected?: GreenSummaryRejection;
67
67
  /**
68
68
  * Short parenthetical appended to the `FIREFORGE-VERDICT:` line when the
69
- * bare status would under-describe the run — currently "harness teardown
69
+ * bare status would under-describe the run: currently "harness teardown
70
70
  * noise ignored" and the headed display-asleep stall. Advisory text
71
- * only; the status and reason keys are unaffected.
71
+ * only. The status and reason keys are unaffected.
72
72
  */
73
73
  note?: string;
74
74
  }
@@ -85,8 +85,8 @@ export interface GreenSummaryRejection {
85
85
  * Strips non-signal noise from captured output before crash-signature
86
86
  * matching: resource-monitor degradation warnings, and traceback blocks
87
87
  * that mach caught itself (telemetry submission tracebacks are printed but
88
- * never abort the run). The stripped text is used ONLY as crash evidence —
89
- * classification of test results still reads the full output.
88
+ * never abort the run). The stripped text is used only as crash evidence.
89
+ * Classification of test results still reads the full output.
90
90
  */
91
91
  export declare function stripNonSignalNoise(output: string): string;
92
92
  /**
@@ -96,15 +96,15 @@ export declare function stripNonSignalNoise(output: string): string;
96
96
  */
97
97
  export declare function findCrashMarkerLine(output: string): string | undefined;
98
98
  /**
99
- * True when the output embeds a COMPLETED, GREEN suite summary: an execution
99
+ * True when the output embeds a completed, green suite summary: an execution
100
100
  * signal, `Unexpected results: 0` (and no non-zero unexpected count), a
101
- * `SUITE_END` marker, no real `TEST-UNEXPECTED-*` lines — and NO crash
101
+ * `SUITE_END` marker, no real `TEST-UNEXPECTED-*` lines, and no crash
102
102
  * marker. Such a run finished its suite, so any startup-traceback-shaped
103
- * noise in the same output is by definition non-fatal and this vetoes
104
- * signature-based crash classification; without the veto, fully green
103
+ * noise in the same output is non-fatal and this vetoes
104
+ * signature-based crash classification. Without the veto, fully green
105
105
  * sharded runs report `CRASH (N attempts)` because degradation warnings
106
- * match the psutil signals. A summary printed after a crash marker is NOT
107
- * "completed" — it only covers the files that ran before the crash.
106
+ * match the psutil signals. A summary printed after a crash marker is not
107
+ * "completed": it only covers the files that ran before the crash.
108
108
  * Exported for direct unit testing.
109
109
  */
110
110
  export declare function hasCompletedGreenSummary(output: string): boolean;
@@ -113,11 +113,11 @@ export declare function hasCompletedGreenSummary(output: string): boolean;
113
113
  * requested file must produce a start marker, and every started test must
114
114
  * produce an end marker (the harness emits both even for failing files).
115
115
  *
116
- * Ends are paired with starts POSITIONALLY (last open start is closed by
117
- * the next end), not by filename — the xpcshell dialect's `TEST_END: Test
116
+ * Ends are paired with starts positionally (last open start is closed by
117
+ * the next end), not by filename: the xpcshell dialect's `TEST_END: Test
118
118
  * PASS` lines do not name the file. Requested paths that are not
119
119
  * test-file-shaped (directories, manifests) are skipped for the
120
- * never-started check; the start/end pairing scan covers them regardless.
120
+ * never-started check. The start/end pairing scan covers them regardless.
121
121
  * Exported for direct unit testing.
122
122
  */
123
123
  export declare function analyzeTestCompleteness(output: string, requestedPaths: readonly string[]): {
@@ -129,7 +129,7 @@ export declare function analyzeTestCompleteness(output: string, requestedPaths:
129
129
  * assertion/diff context, one string per block. The shutdown-reentry
130
130
  * artifact is excluded (it is harness noise, not a test result). When more
131
131
  * than `limit` blocks exist, a final `…(+N more …)` note is appended so the
132
- * operator knows the echo was truncated. Pure; exported for unit tests.
132
+ * operator knows the echo was truncated. Pure. Exported for unit tests.
133
133
  */
134
134
  export declare function collectUnexpectedFailureBlocks(output: string, limit?: number): string[];
135
135
  /**
@@ -141,36 +141,36 @@ export declare function detectHarnessCrashSignature(output: string): HarnessCras
141
141
  * Classifies a completed harness run. The decision tree, in order:
142
142
  *
143
143
  * 1. A recognized crash signature wins regardless of exit code (the
144
- * shutdown re-entry shape exits non-zero on an otherwise green run;
145
- * the hang shape can even exit zero with a `Passed: 0` summary).
146
- * 2. No execution signal with explicit paths requested means no test ran —
144
+ * shutdown re-entry shape exits non-zero on an otherwise green run,
145
+ * and the hang shape can even exit zero with a `Passed: 0` summary).
146
+ * 2. No execution signal with explicit paths requested means no test ran:
147
147
  * `no-tests`, even when the exit code is zero. The execution signal is
148
148
  * a `TEST-START` line (generic `mach test` / browser-chrome dispatch)
149
- * OR the suite-specific xpcshell result-summary block (the xpcshell
149
+ * or the suite-specific xpcshell result-summary block (the xpcshell
150
150
  * dispatch prints no `TEST-START`). Bare `Passed:`/`Failed:` summary
151
151
  * lines are still not trusted as evidence of execution.
152
- * 3. Exit code zero with tests started is a pass; anything else is a
153
- * test failure for the regular diagnosis chain — except a non-zero
154
- * exit whose embedded summary completed green AND shows no crash
152
+ * 3. Exit code zero with tests started is a pass. Anything else is a
153
+ * test failure for the regular diagnosis chain, except a non-zero
154
+ * exit whose embedded summary completed green and shows no crash
155
155
  * marker and no truncated/never-started requested file, which is a
156
156
  * pass with a `greenSummaryOverride` note (harness noise owns the
157
- * exit code). A green-shaped summary WITH such evidence is rejected
157
+ * exit code). A green-shaped summary with such evidence is rejected
158
158
  * (`greenSummaryRejected`) and fails.
159
159
  */
160
160
  export declare function classifyHarnessRun(exitCode: number, output: string, requestedPaths: readonly string[]): HarnessRunVerdict;
161
161
  /**
162
162
  * Parses the numeric counts from the harness's embedded result summary
163
- * (`Ran N checks` / `Unexpected results: N`). The LAST occurrence of each
164
- * wins — a multi-suite run prints one summary per suite and the final one
163
+ * (`Ran N checks` / `Unexpected results: N`). The last occurrence of each
164
+ * wins: a multi-suite run prints one summary per suite and the final one
165
165
  * covers the aggregate the operator sees. Absent counts are omitted (the
166
166
  * `FIREFORGE-VERDICT:` contract: an absent key means "summary did not
167
167
  * print it", never zero).
168
168
  */
169
169
  export declare function extractSummaryCounts(output: string): HarnessSummaryCounts;
170
170
  /**
171
- * Formats the machine-readable `FIREFORGE-VERDICT:` line — the stable,
171
+ * Formats the machine-readable `FIREFORGE-VERDICT:` line: the stable,
172
172
  * greppable last line every `fireforge test` run prints so harness-verdict
173
- * consumers stop regexing mach internals. The status follows THIS
173
+ * consumers stop regexing mach internals. The status follows this
174
174
  * classifier, never the raw exit code: a crash-classified run says
175
175
  * `FAIL reason=crash` even at exit 0, and a green-summary-override pass
176
176
  * says `PASS` despite a non-zero mach exit. Count keys are omitted when
@@ -197,18 +197,18 @@ export declare function buildHarnessCrashMessage(signature: HarnessCrashSignatur
197
197
  * `xpcshell return code: -11` with zero output is the signature of an
198
198
  * `.sys.mjs` that a packaged module imports but whose `EXTRA_JS_MODULES`
199
199
  * registration never landed: the module loader faults before any logging
200
- * exists, so there is no import error, no stack, no test output — just a
200
+ * exists, so there is no import error, no stack, no test output, just a
201
201
  * dead process. It is indistinguishable from a genuine product crash
202
202
  * unless someone names the cause.
203
203
  *
204
- * "Produced no evidence" is deliberately semantic rather than a byte
204
+ * "Produced no evidence" is semantic rather than a byte
205
205
  * budget: no execution signal, no real failure line, and no mozcrash
206
206
  * marker. A run that got far enough to start a test, report a failure, or
207
207
  * leave a crash dump has evidence of its own, and the regular diagnosis
208
- * chain reads it — this branch is only for the case where there is
208
+ * chain reads it. This branch is only for the case where there is
209
209
  * nothing else to say.
210
210
  *
211
- * Pure; exported for direct unit testing.
211
+ * Pure. Exported for direct unit testing.
212
212
  *
213
213
  * @param exitCode - The harness process exit code
214
214
  * @param output - Combined stdout/stderr from the run
@@ -225,7 +225,7 @@ export declare function isSilentSegfault(exitCode: number, output: string): bool
225
225
  export declare function buildSilentSegfaultMessage(exitCode: number, requestedPaths: readonly string[]): string;
226
226
  /**
227
227
  * Builds the message for a run that produced no `TEST-START` despite
228
- * requesting paths — including exit-code-zero runs whose `Passed: 0`
228
+ * requesting paths, including exit-code-zero runs whose `Passed: 0`
229
229
  * summary would otherwise read as a silent false green.
230
230
  */
231
231
  export declare function buildNoTestsRanMessage(exitCode: number, requestedPaths: readonly string[]): string;