@hominis/fireforge 0.46.0 → 0.46.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/CHANGELOG.md +381 -498
  2. package/dist/bin/fireforge.d.ts +1 -1
  3. package/dist/bin/fireforge.js +17 -17
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/cli-usage-error.d.ts +9 -9
  6. package/dist/src/cli-usage-error.js +12 -12
  7. package/dist/src/cli.d.ts +3 -2
  8. package/dist/src/cli.js +29 -28
  9. package/dist/src/commands/bootstrap-checks.js +2 -1
  10. package/dist/src/commands/bootstrap.js +2 -2
  11. package/dist/src/commands/build.js +12 -11
  12. package/dist/src/commands/config.js +9 -9
  13. package/dist/src/commands/destructive-decision.d.ts +4 -4
  14. package/dist/src/commands/destructive-decision.js +4 -4
  15. package/dist/src/commands/discard.js +5 -5
  16. package/dist/src/commands/doctor-check-core.d.ts +4 -4
  17. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  18. package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
  19. package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
  20. package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
  21. package/dist/src/commands/doctor-furnace-jar.js +1 -1
  22. package/dist/src/commands/doctor-furnace.js +22 -22
  23. package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -11
  24. package/dist/src/commands/doctor-orphaned-harness.js +10 -11
  25. package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
  26. package/dist/src/commands/doctor-patch-manifest.js +7 -6
  27. package/dist/src/commands/doctor-post-rebase-audit.js +2 -2
  28. package/dist/src/commands/doctor-source-pin.d.ts +12 -12
  29. package/dist/src/commands/doctor-source-pin.js +14 -14
  30. package/dist/src/commands/doctor-working-tree.d.ts +3 -3
  31. package/dist/src/commands/doctor-working-tree.js +3 -3
  32. package/dist/src/commands/doctor.d.ts +2 -2
  33. package/dist/src/commands/doctor.js +9 -9
  34. package/dist/src/commands/download.js +15 -13
  35. package/dist/src/commands/export-all.js +8 -8
  36. package/dist/src/commands/export-flow.d.ts +5 -5
  37. package/dist/src/commands/export-flow.js +14 -14
  38. package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
  39. package/dist/src/commands/export-placement-conflicts.js +9 -9
  40. package/dist/src/commands/export-placement-gate.d.ts +2 -2
  41. package/dist/src/commands/export-placement-gate.js +5 -5
  42. package/dist/src/commands/export-placement-policy.d.ts +1 -1
  43. package/dist/src/commands/export-placement-policy.js +1 -1
  44. package/dist/src/commands/export-shared.d.ts +10 -10
  45. package/dist/src/commands/export-shared.js +13 -13
  46. package/dist/src/commands/export.js +4 -4
  47. package/dist/src/commands/furnace/apply.js +16 -16
  48. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
  49. package/dist/src/commands/furnace/chrome-doc-remove.js +1 -1
  50. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
  51. package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
  52. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
  53. package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
  54. package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
  55. package/dist/src/commands/furnace/chrome-doc.js +18 -18
  56. package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
  57. package/dist/src/commands/furnace/create-browser-test.js +4 -4
  58. package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
  59. package/dist/src/commands/furnace/create-dry-run.js +4 -4
  60. package/dist/src/commands/furnace/create-features.d.ts +2 -2
  61. package/dist/src/commands/furnace/create-features.js +2 -2
  62. package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
  63. package/dist/src/commands/furnace/create-mochikit.js +7 -7
  64. package/dist/src/commands/furnace/create-templates.d.ts +14 -14
  65. package/dist/src/commands/furnace/create-templates.js +18 -18
  66. package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
  67. package/dist/src/commands/furnace/create-xpcshell.js +8 -8
  68. package/dist/src/commands/furnace/create.d.ts +1 -1
  69. package/dist/src/commands/furnace/create.js +10 -10
  70. package/dist/src/commands/furnace/deploy.js +4 -4
  71. package/dist/src/commands/furnace/diff.js +7 -7
  72. package/dist/src/commands/furnace/index.js +1 -1
  73. package/dist/src/commands/furnace/init.js +15 -15
  74. package/dist/src/commands/furnace/list.js +2 -2
  75. package/dist/src/commands/furnace/override.d.ts +1 -1
  76. package/dist/src/commands/furnace/override.js +15 -15
  77. package/dist/src/commands/furnace/preview.js +17 -17
  78. package/dist/src/commands/furnace/refresh.js +6 -6
  79. package/dist/src/commands/furnace/remove-mutations.d.ts +3 -3
  80. package/dist/src/commands/furnace/remove-mutations.js +19 -18
  81. package/dist/src/commands/furnace/remove-state.d.ts +1 -1
  82. package/dist/src/commands/furnace/remove-state.js +1 -1
  83. package/dist/src/commands/furnace/remove.js +2 -2
  84. package/dist/src/commands/furnace/rename-browser-test.js +9 -8
  85. package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
  86. package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
  87. package/dist/src/commands/furnace/rename.js +9 -9
  88. package/dist/src/commands/furnace/scan.js +3 -3
  89. package/dist/src/commands/furnace/status.js +7 -7
  90. package/dist/src/commands/furnace/sync.js +6 -6
  91. package/dist/src/commands/furnace/test-file-name.d.ts +2 -2
  92. package/dist/src/commands/furnace/test-file-name.js +2 -2
  93. package/dist/src/commands/furnace/validate.js +11 -12
  94. package/dist/src/commands/import.js +20 -20
  95. package/dist/src/commands/lint-per-patch.js +8 -8
  96. package/dist/src/commands/lint-per-run-checkjs.d.ts +12 -13
  97. package/dist/src/commands/lint-per-run-checkjs.js +14 -15
  98. package/dist/src/commands/lint-report.d.ts +3 -3
  99. package/dist/src/commands/lint-report.js +4 -4
  100. package/dist/src/commands/lint.d.ts +3 -3
  101. package/dist/src/commands/lint.js +35 -35
  102. package/dist/src/commands/manifest.d.ts +4 -4
  103. package/dist/src/commands/package.js +2 -2
  104. package/dist/src/commands/patch/compact.d.ts +2 -2
  105. package/dist/src/commands/patch/compact.js +8 -8
  106. package/dist/src/commands/patch/delete.d.ts +1 -1
  107. package/dist/src/commands/patch/delete.js +8 -8
  108. package/dist/src/commands/patch/lint-ignore.d.ts +3 -4
  109. package/dist/src/commands/patch/lint-ignore.js +14 -15
  110. package/dist/src/commands/patch/move-files-create.d.ts +2 -2
  111. package/dist/src/commands/patch/move-files-create.js +5 -5
  112. package/dist/src/commands/patch/move-files-into.d.ts +2 -2
  113. package/dist/src/commands/patch/move-files-into.js +3 -3
  114. package/dist/src/commands/patch/move-files.js +1 -1
  115. package/dist/src/commands/patch/patch-context.d.ts +1 -1
  116. package/dist/src/commands/patch/rename.d.ts +4 -4
  117. package/dist/src/commands/patch/rename.js +8 -8
  118. package/dist/src/commands/patch/reorder.js +10 -10
  119. package/dist/src/commands/patch/split-plan.d.ts +3 -3
  120. package/dist/src/commands/patch/split-plan.js +6 -5
  121. package/dist/src/commands/patch/split.d.ts +2 -2
  122. package/dist/src/commands/patch/split.js +5 -5
  123. package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
  124. package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
  125. package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
  126. package/dist/src/commands/patch/staged-dependency.js +6 -6
  127. package/dist/src/commands/patch/tier.d.ts +2 -2
  128. package/dist/src/commands/patch/tier.js +5 -5
  129. package/dist/src/commands/patch-rename-map.d.ts +1 -1
  130. package/dist/src/commands/patch-rename-map.js +1 -1
  131. package/dist/src/commands/pending-resolution.d.ts +5 -5
  132. package/dist/src/commands/pending-resolution.js +5 -5
  133. package/dist/src/commands/re-export-adjacent.d.ts +3 -3
  134. package/dist/src/commands/re-export-adjacent.js +8 -8
  135. package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
  136. package/dist/src/commands/re-export-bulk-scan.js +17 -17
  137. package/dist/src/commands/re-export-drift.d.ts +10 -10
  138. package/dist/src/commands/re-export-drift.js +29 -29
  139. package/dist/src/commands/re-export-files.js +14 -15
  140. package/dist/src/commands/re-export-lint.d.ts +26 -26
  141. package/dist/src/commands/re-export-lint.js +27 -27
  142. package/dist/src/commands/re-export-options.d.ts +1 -1
  143. package/dist/src/commands/re-export-options.js +1 -1
  144. package/dist/src/commands/re-export-register.d.ts +1 -1
  145. package/dist/src/commands/re-export-register.js +1 -1
  146. package/dist/src/commands/re-export-scan.d.ts +1 -1
  147. package/dist/src/commands/re-export-scan.js +7 -7
  148. package/dist/src/commands/re-export-single.d.ts +1 -1
  149. package/dist/src/commands/re-export-single.js +20 -20
  150. package/dist/src/commands/re-export.js +7 -6
  151. package/dist/src/commands/rebase/abort.js +6 -6
  152. package/dist/src/commands/rebase/continue.js +8 -7
  153. package/dist/src/commands/rebase/index.d.ts +1 -1
  154. package/dist/src/commands/rebase/index.js +3 -3
  155. package/dist/src/commands/rebase/patch-loop.js +18 -17
  156. package/dist/src/commands/register.js +5 -5
  157. package/dist/src/commands/reset.js +1 -1
  158. package/dist/src/commands/resolve.d.ts +2 -2
  159. package/dist/src/commands/resolve.js +3 -3
  160. package/dist/src/commands/run.js +26 -26
  161. package/dist/src/commands/setup-support.js +4 -4
  162. package/dist/src/commands/setup.js +1 -1
  163. package/dist/src/commands/source.js +1 -1
  164. package/dist/src/commands/status-check.d.ts +3 -3
  165. package/dist/src/commands/status-check.js +4 -4
  166. package/dist/src/commands/status-json.d.ts +14 -13
  167. package/dist/src/commands/status-json.js +9 -8
  168. package/dist/src/commands/status-output.d.ts +3 -3
  169. package/dist/src/commands/status-output.js +3 -3
  170. package/dist/src/commands/status-ownership.d.ts +3 -3
  171. package/dist/src/commands/status-ownership.js +3 -3
  172. package/dist/src/commands/status.js +22 -22
  173. package/dist/src/commands/test-build-phase.d.ts +1 -1
  174. package/dist/src/commands/test-build-phase.js +17 -17
  175. package/dist/src/commands/test-diagnose.d.ts +1 -1
  176. package/dist/src/commands/test-diagnose.js +20 -20
  177. package/dist/src/commands/test-modes.d.ts +2 -2
  178. package/dist/src/commands/test-modes.js +4 -4
  179. package/dist/src/commands/test-run.d.ts +11 -11
  180. package/dist/src/commands/test-run.js +15 -15
  181. package/dist/src/commands/test-stale-gate.d.ts +12 -12
  182. package/dist/src/commands/test-stale-gate.js +13 -13
  183. package/dist/src/commands/test-verdict.d.ts +6 -6
  184. package/dist/src/commands/test-verdict.js +11 -11
  185. package/dist/src/commands/test.d.ts +3 -3
  186. package/dist/src/commands/test.js +36 -36
  187. package/dist/src/commands/token-coverage.js +3 -3
  188. package/dist/src/commands/token-list.js +5 -5
  189. package/dist/src/commands/token.js +9 -9
  190. package/dist/src/commands/tree.js +19 -19
  191. package/dist/src/commands/typecheck.d.ts +6 -6
  192. package/dist/src/commands/typecheck.js +7 -7
  193. package/dist/src/commands/verify.d.ts +3 -3
  194. package/dist/src/commands/verify.js +10 -10
  195. package/dist/src/commands/watch.js +11 -11
  196. package/dist/src/commands/wire.js +13 -13
  197. package/dist/src/core/ast-utils.d.ts +7 -7
  198. package/dist/src/core/ast-utils.js +8 -8
  199. package/dist/src/core/branding.d.ts +5 -5
  200. package/dist/src/core/branding.js +3 -3
  201. package/dist/src/core/browser-wire.d.ts +1 -1
  202. package/dist/src/core/browser-wire.js +4 -4
  203. package/dist/src/core/build-audit-platform.d.ts +6 -6
  204. package/dist/src/core/build-audit-platform.js +26 -26
  205. package/dist/src/core/build-audit-registration.d.ts +5 -5
  206. package/dist/src/core/build-audit-registration.js +7 -7
  207. package/dist/src/core/build-audit-resolve.d.ts +5 -5
  208. package/dist/src/core/build-audit-resolve.js +6 -6
  209. package/dist/src/core/build-audit-skip.d.ts +8 -8
  210. package/dist/src/core/build-audit-skip.js +12 -12
  211. package/dist/src/core/build-audit-transforms.d.ts +2 -2
  212. package/dist/src/core/build-audit-transforms.js +3 -3
  213. package/dist/src/core/build-audit.d.ts +8 -8
  214. package/dist/src/core/build-audit.js +39 -37
  215. package/dist/src/core/build-baseline-types.d.ts +19 -18
  216. package/dist/src/core/build-baseline-types.js +1 -1
  217. package/dist/src/core/build-baseline.d.ts +8 -8
  218. package/dist/src/core/build-baseline.js +14 -14
  219. package/dist/src/core/build-jar-escalation.d.ts +8 -8
  220. package/dist/src/core/build-jar-escalation.js +15 -15
  221. package/dist/src/core/build-overwrite-guard.d.ts +4 -4
  222. package/dist/src/core/build-overwrite-guard.js +13 -13
  223. package/dist/src/core/build-prepare.d.ts +4 -4
  224. package/dist/src/core/build-prepare.js +16 -15
  225. package/dist/src/core/config-mutate.js +4 -4
  226. package/dist/src/core/config-state.js +2 -2
  227. package/dist/src/core/config-validate-build-audit.js +3 -3
  228. package/dist/src/core/config-validate-file-size.d.ts +1 -1
  229. package/dist/src/core/config-validate-file-size.js +2 -2
  230. package/dist/src/core/config-validate.js +8 -9
  231. package/dist/src/core/config.d.ts +10 -10
  232. package/dist/src/core/config.js +10 -10
  233. package/dist/src/core/coverage-extend.d.ts +16 -16
  234. package/dist/src/core/coverage-extend.js +16 -16
  235. package/dist/src/core/destructive.d.ts +14 -14
  236. package/dist/src/core/destructive.js +9 -9
  237. package/dist/src/core/diff-hunks.d.ts +2 -2
  238. package/dist/src/core/diff-hunks.js +7 -7
  239. package/dist/src/core/discard-baseline.d.ts +10 -10
  240. package/dist/src/core/discard-baseline.js +15 -16
  241. package/dist/src/core/display-state.d.ts +11 -11
  242. package/dist/src/core/display-state.js +12 -12
  243. package/dist/src/core/engine-changes.d.ts +2 -2
  244. package/dist/src/core/engine-changes.js +2 -2
  245. package/dist/src/core/engine-precondition.d.ts +4 -4
  246. package/dist/src/core/engine-precondition.js +2 -2
  247. package/dist/src/core/engine-session-lock.d.ts +18 -18
  248. package/dist/src/core/engine-session-lock.js +37 -37
  249. package/dist/src/core/export-moved-code-shape.d.ts +7 -7
  250. package/dist/src/core/export-moved-code-shape.js +8 -8
  251. package/dist/src/core/file-lock-owner.d.ts +11 -11
  252. package/dist/src/core/file-lock-owner.js +18 -18
  253. package/dist/src/core/file-lock.d.ts +12 -12
  254. package/dist/src/core/file-lock.js +52 -39
  255. package/dist/src/core/firefox-cache.d.ts +1 -1
  256. package/dist/src/core/firefox-cache.js +10 -10
  257. package/dist/src/core/firefox-download.d.ts +3 -3
  258. package/dist/src/core/firefox-download.js +6 -6
  259. package/dist/src/core/firefox-extract.d.ts +2 -2
  260. package/dist/src/core/firefox-extract.js +13 -13
  261. package/dist/src/core/firefox.d.ts +5 -5
  262. package/dist/src/core/firefox.js +8 -8
  263. package/dist/src/core/furnace-apply-dry-run.js +1 -1
  264. package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
  265. package/dist/src/core/furnace-apply-ftl.js +8 -8
  266. package/dist/src/core/furnace-apply-helpers.d.ts +9 -9
  267. package/dist/src/core/furnace-apply-helpers.js +21 -21
  268. package/dist/src/core/furnace-apply-output.js +1 -1
  269. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
  270. package/dist/src/core/furnace-apply-overwrite-warn.js +9 -9
  271. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
  272. package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
  273. package/dist/src/core/furnace-apply.d.ts +3 -3
  274. package/dist/src/core/furnace-apply.js +22 -21
  275. package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
  276. package/dist/src/core/furnace-checksum-utils.js +5 -5
  277. package/dist/src/core/furnace-config-custom.d.ts +1 -1
  278. package/dist/src/core/furnace-config-custom.js +2 -2
  279. package/dist/src/core/furnace-config-order.js +1 -1
  280. package/dist/src/core/furnace-config-tokens.d.ts +3 -3
  281. package/dist/src/core/furnace-config-tokens.js +3 -3
  282. package/dist/src/core/furnace-config-validate.js +2 -2
  283. package/dist/src/core/furnace-config.d.ts +4 -4
  284. package/dist/src/core/furnace-config.js +18 -18
  285. package/dist/src/core/furnace-constants.d.ts +6 -6
  286. package/dist/src/core/furnace-constants.js +6 -6
  287. package/dist/src/core/furnace-css-fragments.d.ts +6 -6
  288. package/dist/src/core/furnace-css-fragments.js +11 -11
  289. package/dist/src/core/furnace-dir-entry.d.ts +1 -1
  290. package/dist/src/core/furnace-dir-entry.js +1 -1
  291. package/dist/src/core/furnace-jsconfig.d.ts +7 -7
  292. package/dist/src/core/furnace-jsconfig.js +22 -20
  293. package/dist/src/core/furnace-operation.d.ts +21 -20
  294. package/dist/src/core/furnace-operation.js +36 -34
  295. package/dist/src/core/furnace-precondition.d.ts +10 -10
  296. package/dist/src/core/furnace-precondition.js +8 -8
  297. package/dist/src/core/furnace-refresh.js +2 -2
  298. package/dist/src/core/furnace-registration-ast.d.ts +2 -2
  299. package/dist/src/core/furnace-registration-ast.js +9 -9
  300. package/dist/src/core/furnace-registration-remove.d.ts +4 -4
  301. package/dist/src/core/furnace-registration-remove.js +6 -6
  302. package/dist/src/core/furnace-registration-validate.d.ts +2 -2
  303. package/dist/src/core/furnace-registration-validate.js +2 -2
  304. package/dist/src/core/furnace-registration.d.ts +5 -5
  305. package/dist/src/core/furnace-registration.js +7 -7
  306. package/dist/src/core/furnace-rollback.d.ts +1 -1
  307. package/dist/src/core/furnace-rollback.js +5 -5
  308. package/dist/src/core/furnace-stale-export.d.ts +17 -16
  309. package/dist/src/core/furnace-stale-export.js +16 -15
  310. package/dist/src/core/furnace-staleness.d.ts +2 -2
  311. package/dist/src/core/furnace-staleness.js +2 -2
  312. package/dist/src/core/furnace-state-persist.d.ts +10 -10
  313. package/dist/src/core/furnace-state-persist.js +10 -10
  314. package/dist/src/core/furnace-step-errors.d.ts +6 -6
  315. package/dist/src/core/furnace-step-errors.js +6 -6
  316. package/dist/src/core/furnace-validate-accessibility.js +14 -14
  317. package/dist/src/core/furnace-validate-compatibility.js +9 -9
  318. package/dist/src/core/furnace-validate-registration.d.ts +2 -2
  319. package/dist/src/core/furnace-validate-registration.js +13 -13
  320. package/dist/src/core/furnace-validate-structure.d.ts +1 -1
  321. package/dist/src/core/furnace-validate-structure.js +4 -4
  322. package/dist/src/core/furnace-validate.js +9 -9
  323. package/dist/src/core/furnace-version-drift.d.ts +5 -5
  324. package/dist/src/core/furnace-version-drift.js +5 -5
  325. package/dist/src/core/git-base.d.ts +4 -4
  326. package/dist/src/core/git-base.js +9 -9
  327. package/dist/src/core/git-diff-new-file.d.ts +4 -4
  328. package/dist/src/core/git-diff-new-file.js +8 -8
  329. package/dist/src/core/git-diff.d.ts +4 -4
  330. package/dist/src/core/git-diff.js +35 -34
  331. package/dist/src/core/git-file-ops.d.ts +6 -6
  332. package/dist/src/core/git-file-ops.js +7 -7
  333. package/dist/src/core/git-readonly-index.d.ts +12 -12
  334. package/dist/src/core/git-readonly-index.js +12 -12
  335. package/dist/src/core/git-status.d.ts +4 -4
  336. package/dist/src/core/git-status.js +4 -4
  337. package/dist/src/core/git.d.ts +3 -3
  338. package/dist/src/core/git.js +14 -14
  339. package/dist/src/core/harness-orphans.d.ts +17 -17
  340. package/dist/src/core/harness-orphans.js +20 -20
  341. package/dist/src/core/history-log.d.ts +3 -3
  342. package/dist/src/core/history-log.js +3 -3
  343. package/dist/src/core/license-headers.d.ts +19 -18
  344. package/dist/src/core/license-headers.js +29 -28
  345. package/dist/src/core/mach-build-artifacts.d.ts +21 -21
  346. package/dist/src/core/mach-build-artifacts.js +23 -23
  347. package/dist/src/core/mach-error-hints.d.ts +5 -5
  348. package/dist/src/core/mach-error-hints.js +13 -13
  349. package/dist/src/core/mach-known-noise-filter.d.ts +41 -38
  350. package/dist/src/core/mach-known-noise-filter.js +53 -50
  351. package/dist/src/core/mach-mozconfig.d.ts +6 -6
  352. package/dist/src/core/mach-mozconfig.js +15 -15
  353. package/dist/src/core/mach-python.d.ts +2 -1
  354. package/dist/src/core/mach-python.js +4 -3
  355. package/dist/src/core/mach-resource-shim.d.ts +12 -12
  356. package/dist/src/core/mach-resource-shim.js +20 -20
  357. package/dist/src/core/mach.d.ts +23 -23
  358. package/dist/src/core/mach.js +36 -36
  359. package/dist/src/core/marionette-port.d.ts +15 -13
  360. package/dist/src/core/marionette-port.js +34 -31
  361. package/dist/src/core/marionette-preflight.d.ts +6 -6
  362. package/dist/src/core/marionette-preflight.js +23 -23
  363. package/dist/src/core/markdown-table.d.ts +9 -9
  364. package/dist/src/core/markdown-table.js +14 -14
  365. package/dist/src/core/mochitest-server-port.d.ts +8 -8
  366. package/dist/src/core/mochitest-server-port.js +14 -14
  367. package/dist/src/core/module-resolution-preflight.d.ts +8 -8
  368. package/dist/src/core/module-resolution-preflight.js +11 -11
  369. package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
  370. package/dist/src/core/moz-manifest-helpers.js +7 -7
  371. package/dist/src/core/moz-manifest-register.d.ts +1 -1
  372. package/dist/src/core/moz-manifest-register.js +2 -2
  373. package/dist/src/core/moz-manifest-rules.js +11 -11
  374. package/dist/src/core/moz-manifest-tokenizers.js +1 -1
  375. package/dist/src/core/ownership-table.d.ts +5 -5
  376. package/dist/src/core/ownership-table.js +7 -7
  377. package/dist/src/core/parser-fallback.d.ts +3 -3
  378. package/dist/src/core/parser-fallback.js +3 -3
  379. package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
  380. package/dist/src/core/patch-apply-fuzz.js +9 -9
  381. package/dist/src/core/patch-apply.d.ts +9 -9
  382. package/dist/src/core/patch-apply.js +30 -30
  383. package/dist/src/core/patch-export-update.d.ts +4 -4
  384. package/dist/src/core/patch-export-update.js +3 -3
  385. package/dist/src/core/patch-export.d.ts +10 -10
  386. package/dist/src/core/patch-export.js +13 -13
  387. package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
  388. package/dist/src/core/patch-identifier-suggest.js +4 -4
  389. package/dist/src/core/patch-lint-binary.d.ts +7 -7
  390. package/dist/src/core/patch-lint-cache.d.ts +2 -2
  391. package/dist/src/core/patch-lint-cache.js +13 -13
  392. package/dist/src/core/patch-lint-checkjs.d.ts +26 -26
  393. package/dist/src/core/patch-lint-checkjs.js +42 -41
  394. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
  395. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
  396. package/dist/src/core/patch-lint-creators.d.ts +3 -3
  397. package/dist/src/core/patch-lint-creators.js +3 -3
  398. package/dist/src/core/patch-lint-cross.d.ts +13 -13
  399. package/dist/src/core/patch-lint-cross.js +21 -21
  400. package/dist/src/core/patch-lint-css.d.ts +1 -1
  401. package/dist/src/core/patch-lint-css.js +5 -5
  402. package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
  403. package/dist/src/core/patch-lint-diff-tag.js +5 -5
  404. package/dist/src/core/patch-lint-diff.d.ts +4 -4
  405. package/dist/src/core/patch-lint-diff.js +4 -4
  406. package/dist/src/core/patch-lint-file-size.d.ts +3 -3
  407. package/dist/src/core/patch-lint-file-size.js +3 -3
  408. package/dist/src/core/patch-lint-forward-registration.d.ts +4 -4
  409. package/dist/src/core/patch-lint-forward-registration.js +12 -12
  410. package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
  411. package/dist/src/core/patch-lint-jsdoc.js +11 -11
  412. package/dist/src/core/patch-lint-module-registration.d.ts +1 -1
  413. package/dist/src/core/patch-lint-module-registration.js +1 -1
  414. package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
  415. package/dist/src/core/patch-lint-mozbuild.js +10 -10
  416. package/dist/src/core/patch-lint-observer.d.ts +3 -3
  417. package/dist/src/core/patch-lint-observer.js +7 -7
  418. package/dist/src/core/patch-lint-ownership.d.ts +6 -6
  419. package/dist/src/core/patch-lint-ownership.js +6 -6
  420. package/dist/src/core/patch-lint-prettier.d.ts +6 -6
  421. package/dist/src/core/patch-lint-prettier.js +6 -6
  422. package/dist/src/core/patch-lint-queue-types.d.ts +1 -1
  423. package/dist/src/core/patch-lint-queue-types.js +1 -1
  424. package/dist/src/core/patch-lint-staged-registration.d.ts +2 -2
  425. package/dist/src/core/patch-lint-staged-registration.js +6 -6
  426. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
  427. package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
  428. package/dist/src/core/patch-lint.d.ts +27 -26
  429. package/dist/src/core/patch-lint.js +48 -46
  430. package/dist/src/core/patch-lock.d.ts +1 -1
  431. package/dist/src/core/patch-lock.js +8 -8
  432. package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
  433. package/dist/src/core/patch-manifest-consistency.js +16 -17
  434. package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
  435. package/dist/src/core/patch-manifest-files-affected.js +3 -3
  436. package/dist/src/core/patch-manifest-io.d.ts +14 -14
  437. package/dist/src/core/patch-manifest-io.js +27 -27
  438. package/dist/src/core/patch-manifest-query.d.ts +1 -1
  439. package/dist/src/core/patch-manifest-query.js +4 -4
  440. package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
  441. package/dist/src/core/patch-manifest-resolve.js +7 -7
  442. package/dist/src/core/patch-manifest-validate.js +3 -3
  443. package/dist/src/core/patch-manifest.d.ts +2 -2
  444. package/dist/src/core/patch-manifest.js +2 -2
  445. package/dist/src/core/patch-parse.d.ts +14 -14
  446. package/dist/src/core/patch-parse.js +16 -16
  447. package/dist/src/core/patch-registration-refs.d.ts +4 -4
  448. package/dist/src/core/patch-registration-refs.js +7 -7
  449. package/dist/src/core/patch-transform.d.ts +8 -8
  450. package/dist/src/core/patch-transform.js +13 -13
  451. package/dist/src/core/process-cpu-time.d.ts +1 -1
  452. package/dist/src/core/process-cpu-time.js +5 -5
  453. package/dist/src/core/rebase-session.d.ts +7 -7
  454. package/dist/src/core/rebase-session.js +8 -8
  455. package/dist/src/core/register-result.d.ts +1 -1
  456. package/dist/src/core/register-result.js +1 -1
  457. package/dist/src/core/register-scaffold.d.ts +2 -2
  458. package/dist/src/core/register-scaffold.js +3 -3
  459. package/dist/src/core/register-shared-css.d.ts +3 -3
  460. package/dist/src/core/register-shared-css.js +4 -4
  461. package/dist/src/core/register-xpcshell-test.d.ts +2 -2
  462. package/dist/src/core/register-xpcshell-test.js +2 -2
  463. package/dist/src/core/run-log-redact.d.ts +12 -12
  464. package/dist/src/core/run-log-redact.js +16 -16
  465. package/dist/src/core/run-log.d.ts +9 -9
  466. package/dist/src/core/run-log.js +14 -14
  467. package/dist/src/core/shared-ftl.d.ts +2 -2
  468. package/dist/src/core/shared-ftl.js +6 -6
  469. package/dist/src/core/signal-critical.d.ts +2 -2
  470. package/dist/src/core/signal-critical.js +2 -2
  471. package/dist/src/core/smoke-patterns.d.ts +5 -5
  472. package/dist/src/core/smoke-patterns.js +9 -9
  473. package/dist/src/core/state-file.d.ts +3 -3
  474. package/dist/src/core/status-binary.d.ts +8 -8
  475. package/dist/src/core/status-binary.js +12 -12
  476. package/dist/src/core/status-classify.d.ts +17 -17
  477. package/dist/src/core/status-classify.js +11 -11
  478. package/dist/src/core/test-changed-prefs.d.ts +12 -12
  479. package/dist/src/core/test-changed-prefs.js +15 -15
  480. package/dist/src/core/test-harness-crash.d.ts +39 -39
  481. package/dist/src/core/test-harness-crash.js +67 -67
  482. package/dist/src/core/test-harness-output.d.ts +7 -7
  483. package/dist/src/core/test-harness-output.js +7 -7
  484. package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
  485. package/dist/src/core/test-harness-verdict-notes.js +4 -4
  486. package/dist/src/core/test-path-scope.d.ts +8 -8
  487. package/dist/src/core/test-path-scope.js +11 -11
  488. package/dist/src/core/test-stale-check.d.ts +22 -21
  489. package/dist/src/core/test-stale-check.js +29 -28
  490. package/dist/src/core/test-stale-symlink.d.ts +1 -1
  491. package/dist/src/core/test-stale-symlink.js +1 -1
  492. package/dist/src/core/test-stall-triage.d.ts +9 -9
  493. package/dist/src/core/test-stall-triage.js +22 -22
  494. package/dist/src/core/token-category.d.ts +4 -4
  495. package/dist/src/core/token-category.js +13 -12
  496. package/dist/src/core/token-coverage.js +4 -5
  497. package/dist/src/core/token-dark-mode.d.ts +9 -9
  498. package/dist/src/core/token-dark-mode.js +11 -11
  499. package/dist/src/core/token-docs.d.ts +1 -1
  500. package/dist/src/core/token-inventory.d.ts +6 -6
  501. package/dist/src/core/token-inventory.js +7 -7
  502. package/dist/src/core/token-manager.d.ts +3 -3
  503. package/dist/src/core/token-manager.js +21 -21
  504. package/dist/src/core/token-scaffold.d.ts +4 -4
  505. package/dist/src/core/token-scaffold.js +4 -4
  506. package/dist/src/core/token-variant.d.ts +14 -14
  507. package/dist/src/core/token-variant.js +32 -32
  508. package/dist/src/core/toolchain-preflight.d.ts +15 -15
  509. package/dist/src/core/toolchain-preflight.js +22 -22
  510. package/dist/src/core/tree-cow.d.ts +3 -3
  511. package/dist/src/core/tree-cow.js +6 -6
  512. package/dist/src/core/tree-guard.d.ts +3 -3
  513. package/dist/src/core/tree-guard.js +23 -23
  514. package/dist/src/core/tree-store.d.ts +15 -15
  515. package/dist/src/core/tree-store.js +35 -33
  516. package/dist/src/core/typecheck-shim.d.ts +16 -15
  517. package/dist/src/core/typecheck-shim.js +26 -25
  518. package/dist/src/core/typecheck.d.ts +12 -12
  519. package/dist/src/core/typecheck.js +31 -31
  520. package/dist/src/core/wire-destroy.d.ts +2 -2
  521. package/dist/src/core/wire-destroy.js +5 -5
  522. package/dist/src/core/wire-dom-fragment.d.ts +3 -3
  523. package/dist/src/core/wire-dom-fragment.js +6 -6
  524. package/dist/src/core/wire-init.d.ts +2 -2
  525. package/dist/src/core/wire-init.js +7 -7
  526. package/dist/src/core/wire-subscript.d.ts +1 -1
  527. package/dist/src/core/wire-subscript.js +3 -3
  528. package/dist/src/core/wire-utils.d.ts +9 -9
  529. package/dist/src/core/wire-utils.js +11 -11
  530. package/dist/src/core/xpcshell-appdir.d.ts +20 -20
  531. package/dist/src/core/xpcshell-appdir.js +26 -26
  532. package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
  533. package/dist/src/core/xpcshell-profile-dir.js +7 -7
  534. package/dist/src/errors/base.d.ts +22 -21
  535. package/dist/src/errors/base.js +22 -21
  536. package/dist/src/errors/build.d.ts +6 -6
  537. package/dist/src/errors/build.js +6 -6
  538. package/dist/src/errors/codes.d.ts +10 -10
  539. package/dist/src/errors/codes.js +10 -10
  540. package/dist/src/errors/furnace.d.ts +2 -2
  541. package/dist/src/errors/git.d.ts +1 -1
  542. package/dist/src/errors/git.js +1 -1
  543. package/dist/src/errors/patch.d.ts +3 -3
  544. package/dist/src/errors/patch.js +3 -3
  545. package/dist/src/errors/rebase.d.ts +1 -1
  546. package/dist/src/errors/rebase.js +1 -1
  547. package/dist/src/errors/run.d.ts +1 -1
  548. package/dist/src/errors/run.js +1 -1
  549. package/dist/src/index.d.ts +4 -4
  550. package/dist/src/index.js +4 -4
  551. package/dist/src/types/commands/options.d.ts +86 -85
  552. package/dist/src/types/commands/patches.d.ts +19 -19
  553. package/dist/src/types/commands/project.d.ts +3 -3
  554. package/dist/src/types/config.d.ts +24 -23
  555. package/dist/src/types/furnace.d.ts +17 -17
  556. package/dist/src/types/json.d.ts +3 -3
  557. package/dist/src/types/json.js +2 -2
  558. package/dist/src/types/typecheck.d.ts +3 -3
  559. package/dist/src/utils/assert.d.ts +1 -1
  560. package/dist/src/utils/assert.js +6 -6
  561. package/dist/src/utils/build-info.d.ts +5 -5
  562. package/dist/src/utils/build-info.js +6 -6
  563. package/dist/src/utils/child-env.d.ts +5 -5
  564. package/dist/src/utils/child-env.js +5 -5
  565. package/dist/src/utils/concurrency.d.ts +2 -2
  566. package/dist/src/utils/concurrency.js +2 -2
  567. package/dist/src/utils/elapsed.js +1 -1
  568. package/dist/src/utils/errors.d.ts +8 -8
  569. package/dist/src/utils/errors.js +8 -8
  570. package/dist/src/utils/fs.d.ts +1 -1
  571. package/dist/src/utils/fs.js +8 -8
  572. package/dist/src/utils/line-dispatch.d.ts +3 -3
  573. package/dist/src/utils/line-dispatch.js +5 -5
  574. package/dist/src/utils/logger.d.ts +4 -4
  575. package/dist/src/utils/logger.js +11 -11
  576. package/dist/src/utils/machine-output.js +2 -2
  577. package/dist/src/utils/options.d.ts +13 -13
  578. package/dist/src/utils/options.js +20 -20
  579. package/dist/src/utils/package-root.js +2 -2
  580. package/dist/src/utils/paths.d.ts +4 -4
  581. package/dist/src/utils/paths.js +4 -4
  582. package/dist/src/utils/process-group.d.ts +8 -8
  583. package/dist/src/utils/process-group.js +19 -19
  584. package/dist/src/utils/process.d.ts +34 -33
  585. package/dist/src/utils/process.js +20 -19
  586. package/dist/src/utils/ps-duration.d.ts +4 -4
  587. package/dist/src/utils/ps-duration.js +6 -6
  588. package/dist/src/utils/regex.d.ts +4 -4
  589. package/dist/src/utils/regex.js +7 -7
  590. package/dist/src/utils/sleep.d.ts +7 -7
  591. package/dist/src/utils/sleep.js +7 -7
  592. package/dist/src/utils/stdio-drain.d.ts +7 -7
  593. package/dist/src/utils/stdio-drain.js +8 -8
  594. package/dist/src/utils/validation.d.ts +11 -12
  595. package/dist/src/utils/validation.js +20 -21
  596. package/docs/README.md +2 -2
  597. package/docs/configuration.md +120 -114
  598. package/docs/exit-codes.md +63 -58
  599. package/docs/furnace.md +20 -19
  600. package/docs/lifecycle-invariants.md +412 -251
  601. package/docs/machine-output.md +33 -32
  602. package/docs/patch-workflow.md +48 -45
  603. package/docs/run-logs.md +62 -58
  604. package/docs/testing.md +101 -101
  605. package/docs/verification-trees.md +23 -22
  606. package/package.json +2 -2
@@ -1,27 +1,27 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
3
  * Recognizes the one shape where the undefined-identifier hint sends the
4
- * operator at the wrong remedy — and where taking that remedy would MASK a
4
+ * operator at the wrong remedy, and where taking that remedy would mask a
5
5
  * real bug.
6
6
  *
7
7
  * The shape: helpers are hoisted out of duplicated test files into a new
8
8
  * `head_settings.js` that a managed `head.js` pulls in with
9
9
  * `loadSubScript`. Until that companion is exported it belongs to no patch,
10
- * so the per-patch checkJs program — which only ever loads patch-owned
11
- * roots — cannot see any of its declarations. Every use of every hoisted
10
+ * so the per-patch checkJs program, which only ever loads patch-owned
11
+ * roots, cannot see any of its declarations. Every use of every hoisted
12
12
  * helper is then reported as `Cannot find name`, and the generic hint
13
13
  * offers three remedies of which the shim is the easiest: adding the
14
- * globals to `extraShim` makes all of the warnings disappear AND makes a
14
+ * globals to `extraShim` makes all of the warnings disappear and makes a
15
15
  * genuinely missing helper undetectable forever after.
16
16
  *
17
- * The warnings themselves are correct — the per-patch program's honest view
18
- * of a file that is in no patch. Only the advice is wrong. FireForge
19
- * already knows ownership, so when every undefined name in a file is
20
- * declared at the top level of an UNMANAGED file that a managed head loads,
21
- * it can name that file and the adoption command instead.
17
+ * The warnings themselves are correct: they are the per-patch program's
18
+ * honest view of a file that is in no patch. Only the advice is wrong.
19
+ * FireForge already knows ownership, so when every undefined name in a file
20
+ * is declared at the top level of an unmanaged file that a managed head
21
+ * loads, it can name that file and the adoption command instead.
22
22
  *
23
- * Detection is deliberately conservative on both halves: a companion must
24
- * be reachable from an actual `loadSubScript` call, and EVERY undefined
23
+ * Detection is conservative on both halves: a companion must
24
+ * be reachable from an actual `loadSubScript` call, and every undefined
25
25
  * name must resolve inside it. One unresolved name means the file may
26
26
  * genuinely be missing a helper, and the generic hint stays.
27
27
  */
@@ -34,13 +34,13 @@ import { UNDEFINED_IDENTIFIER_HINT } from './typecheck-shim.js';
34
34
  * The mochitest idiom is
35
35
  * `Services.scriptloader.loadSubScript(getRootDirectory(gTestPath) + "head_settings.js", this)`,
36
36
  * so the useful signal is the `.js` literal inside the call, not a
37
- * resolvable URL — the path half is computed at runtime.
37
+ * resolvable URL. The path half is computed at runtime.
38
38
  */
39
39
  export function findLoadSubScriptTargets(source) {
40
40
  const targets = [];
41
41
  // Scanned to the statement terminator rather than to a closing paren:
42
42
  // the idiomatic argument is itself a call (`getRootDirectory(gTestPath) +
43
- // "head_settings.js"`), so a non-greedy `\)` stops on the INNER paren and
43
+ // "head_settings.js"`), so a non-greedy `\)` stops on the inner paren and
44
44
  // never reaches the literal.
45
45
  for (const call of source.matchAll(/loadSubScript\s*\(/g)) {
46
46
  const from = call.index + call[0].length;
@@ -60,7 +60,7 @@ const CALL_SCAN_LIMIT = 400;
60
60
  * Top-level declaration names in a script-scope file.
61
61
  *
62
62
  * Regex rather than a TS program on purpose: this runs only to decide the
63
- * WORDING of a hint, the file is by definition outside every program the
63
+ * wording of a hint, the file is outside every program the
64
64
  * pass built, and a missed declaration degrades to the generic hint rather
65
65
  * than to a wrong answer. Matching is anchored at column zero so a nested
66
66
  * declaration inside a function body is not mistaken for a global.
@@ -93,8 +93,8 @@ function extractUndefinedIdentifier(message) {
93
93
  * Resolves the unmanaged companions reachable from a set of managed head
94
94
  * files, given a reader for repo-relative file content.
95
95
  *
96
- * A candidate qualifies only when it is NOT in `ownedFiles` and its content
97
- * can be read — an unreadable or absent target is simply not a companion,
96
+ * A candidate qualifies only when it is not in `ownedFiles` and its content
97
+ * can be read. An unreadable or absent target is simply not a companion,
98
98
  * and the generic hint applies.
99
99
  *
100
100
  * @param heads - Repo-relative managed head files, with their sources
@@ -129,10 +129,10 @@ export async function resolveUnmanagedCompanions(heads, ownedFiles, readFile) {
129
129
  * The replacement hint, when every undefined name resolves in one
130
130
  * unmanaged companion.
131
131
  *
132
- * States the ownership fact first (that is the diagnosis), then the
133
- * adoption command, and explicitly rules the shim OUT — the shim is what an
134
- * operator reaches for by default here, and it is the one remedy that
135
- * permanently hides a genuinely missing helper.
132
+ * States the ownership fact first (the diagnosis), then the adoption
133
+ * command, and explicitly rules the shim out. The shim is what an operator
134
+ * reaches for by default here, and it is the one remedy that permanently
135
+ * hides a genuinely missing helper.
136
136
  */
137
137
  export function formatUnmanagedCompanionHint(companion) {
138
138
  return (`(undefined identifier — every one of them is declared in ${companion.file}, which ` +
@@ -143,7 +143,7 @@ export function formatUnmanagedCompanionHint(companion) {
143
143
  `missing helper with them.)`);
144
144
  }
145
145
  /**
146
- * Picks the companion that explains EVERY undefined identifier in
146
+ * Picks the companion that explains every undefined identifier in
147
147
  * `messages`, or undefined when none does.
148
148
  *
149
149
  * @param messages - Diagnostic messages reported for one file
@@ -155,16 +155,16 @@ export function explainUndefinedIdentifiers(messages, companions) {
155
155
  .filter((name) => name !== undefined);
156
156
  if (names.length === 0)
157
157
  return undefined;
158
- // Only the undefined-identifier diagnostics are explained here; a file
159
- // carrying OTHER type errors still gets those reported untouched.
158
+ // Only the undefined-identifier diagnostics are explained here. A file
159
+ // carrying other type errors still gets those reported untouched.
160
160
  return companions.find((companion) => names.every((name) => companion.declarations.has(name)));
161
161
  }
162
162
  /**
163
- * Reads the head files in the owned test set and resolves the UNMANAGED
163
+ * Reads the head files in the owned test set and resolves the unmanaged
164
164
  * companions they pull in with `loadSubScript`. Hoisting shared helpers
165
165
  * into such a companion leaves it unowned until export, and every use of
166
166
  * every helper then reports `Cannot find name` from an honest per-patch
167
- * program — see `patch-lint-unmanaged-companion.ts` for why the generic
167
+ * program. See `patch-lint-unmanaged-companion.ts` for why the generic
168
168
  * hint is actively harmful there.
169
169
  *
170
170
  * Best-effort: an unreadable head simply contributes no companions.
@@ -195,7 +195,7 @@ export async function collectUnmanagedCompanions(repoDir, files, ownedFiles) {
195
195
  }
196
196
  /**
197
197
  * Swaps the generic undefined-identifier hint for the ownership hint when
198
- * one unmanaged companion explains EVERY undefined name in the file. Any
198
+ * one unmanaged companion explains every undefined name in the file. Any
199
199
  * other issue in the list is returned untouched.
200
200
  */
201
201
  export function retargetUnmanagedCompanionHints(issues, companions) {
@@ -6,8 +6,8 @@ export * from './patch-lint-cross.js';
6
6
  export { buildModifiedFileAdditionsFromDiff, detectNewFilesInDiff } from './patch-lint-diff.js';
7
7
  export { lintPatchedCss };
8
8
  /**
9
- * Canonical `[check] file: message` rendering of a patch-lint issue — the
10
- * one string shape every reporter and refusal message uses, so operators
9
+ * Canonical `[check] file: message` rendering of a patch-lint issue. It is
10
+ * the one string shape every reporter and refusal message uses, so operators
11
11
  * can grep one format across lint output and refusal details.
12
12
  */
13
13
  export declare function formatPatchLintIssue(issue: Pick<PatchLintIssue, 'check' | 'file' | 'message'>): string;
@@ -38,27 +38,28 @@ export declare function hasBrowserChromeAssertion(strippedContent: string): bool
38
38
  */
39
39
  export declare function commentStyleForFile(file: string): CommentStyle | null;
40
40
  /**
41
- * Decides whether a NEW file's leading header satisfies the
42
- * `missing-license-header` rule. Single owner of the acceptance policy —
43
- * `lintNewFileHeaders` (the rule) and `autoFixLicenseHeaders` (the
41
+ * Decides whether a new file's leading header satisfies the
42
+ * `missing-license-header` rule. It is the single owner of the acceptance
43
+ * policy: `lintNewFileHeaders` (the rule) and `autoFixLicenseHeaders` (the
44
44
  * interactive export fixer) must agree, or the fixer offers to stack a
45
45
  * second header onto a file the lint already accepts.
46
46
  *
47
47
  * Accepted shapes, in order:
48
- * - the project's own header for the file's comment style;
49
- * - under `browser/branding/`, ANY recognised license header in the
48
+ * - the project's own header for the file's comment style.
49
+ * - under `browser/branding/`, any recognised license header in the
50
50
  * matching style: the setup-generated branding directory is copied from
51
51
  * Firefox's `unofficial` template and arrives with Mozilla MPL-2.0
52
- * headers — legitimate for copyright purposes (the assets are Mozilla's)
53
- * even when the fork's own code is 0BSD / EUPL-1.2 / GPL-2.0-or-later;
54
- * - on an MPL-2.0 project, any recognised header in the matching style;
52
+ * headers, legitimate for copyright purposes (the assets are Mozilla's)
53
+ * even when the fork's own code is 0BSD / EUPL-1.2 / GPL-2.0-or-later.
54
+ * - on an MPL-2.0 project, any recognised header in the matching style.
55
55
  * - the verbatim upstream MPL-2.0 block header (`/* … *\/`, optionally
56
- * behind a leading editor-directive comment) REGARDLESS of the project
56
+ * behind a leading editor-directive comment) regardless of the project
57
57
  * license, on any file whose comment syntax is the block form (JS and
58
58
  * CSS): a file copied from the Firefox tree legitimately keeps Mozilla's
59
59
  * header for provenance in an EUPL/GPL/0BSD project too. Only the block
60
- * form is accepted — the `// `-style MPL header is FireForge-generated,
61
- * not upstream provenance — and `hash`-style files (FTL) stay excluded
60
+ * form is accepted, because the `// `-style MPL header is
61
+ * FireForge-generated rather than upstream provenance, and `hash`-style
62
+ * files (FTL) stay excluded
62
63
  * because `/* … *\/` is not a comment there.
63
64
  *
64
65
  * @param file - Engine-relative path of the new file
@@ -88,7 +89,7 @@ export declare function lintNewFileHeaders(repoDir: string, newFiles: string[],
88
89
  * @param patchOwnedFiles - Optional set of patch-owned `.sys.mjs` paths for scoped JSDoc enforcement
89
90
  * @param patchOwnedChromeScripts - Optional set of patch-owned chrome
90
91
  * subscripts (`.js` non-`.sys.mjs`) for scoped chrome-script JSDoc
91
- * enforcement. Built by {@link resolvePatchOwnedChromeScripts}; passed
92
+ * enforcement. Built by {@link resolvePatchOwnedChromeScripts}. Passed
92
93
  * separately from `patchOwnedFiles` so the `runCheckJs` consumer (which
93
94
  * only accepts `.sys.mjs`) is not silently broadened.
94
95
  * @returns Array of lint issues
@@ -121,7 +122,7 @@ export type PatchSizeTierDecision = {
121
122
  * Decides which `large-patch-lines` threshold tier applies to a patch.
122
123
  * Exported so `runPatchLint` and the per-patch `lint` command can
123
124
  * surface the tier choice to the operator *without* depending on
124
- * `lintPatchSize`'s internal return shape — the rule itself stays a
125
+ * `lintPatchSize`'s internal return shape. The rule itself stays a
125
126
  * pure issues-array API, and the decision is computed separately for
126
127
  * the sole purpose of reporting.
127
128
  *
@@ -129,7 +130,7 @@ export type PatchSizeTierDecision = {
129
130
  * The test tier beats branding because a table-driven regression test
130
131
  * is legitimately large independent of whether the patch also claims
131
132
  * branding shape, and the test-tier thresholds are already more
132
- * permissive than branding — so "tests beat branding" is the
133
+ * permissive than branding, so "tests beat branding" is the
133
134
  * defensive-for-tests choice.
134
135
  */
135
136
  export declare function resolvePatchSizeTier(filesAffected: ReadonlyArray<string>, patchTier?: 'branding'): PatchSizeTierDecision;
@@ -148,7 +149,7 @@ export interface PatchSizeThresholds {
148
149
  * Read-only view of the size thresholds a tier enforces.
149
150
  * Public-API companion to {@link resolvePatchSizeTier} /
150
151
  * {@link countNonBinaryDiffLines} so consumers can build waiver-freshness
151
- * checks against the SAME numbers `large-patch-lines` /
152
+ * checks against the same numbers `large-patch-lines` /
152
153
  * `large-patch-files` fire on instead of mirroring them.
153
154
  */
154
155
  export declare function getPatchSizeThresholds(tier: 'general' | 'test' | 'branding'): PatchSizeThresholds;
@@ -181,7 +182,7 @@ export declare function lintModifiedFileHeaders(repoDir: string, affectedFiles:
181
182
  export interface LintExportedPatchOptions {
182
183
  /**
183
184
  * Cross-patch context for ownership resolution. Present whenever the
184
- * caller has a loaded patch queue; absent for the ad-hoc single-diff
185
+ * caller has a loaded patch queue. Absent for the ad-hoc single-diff
185
186
  * paths that have no queue to resolve against.
186
187
  */
187
188
  patchQueueCtx?: import('./patch-lint-cross.js').PatchQueueContext;
@@ -197,7 +198,7 @@ export interface LintExportedPatchOptions {
197
198
  * Explicit tier override, threaded from `PatchMetadata.tier`. When
198
199
  * `"branding"` forces the branding thresholds on the
199
200
  * `large-patch-lines` rule. Callers with a per-patch manifest context
200
- * (re-export, per-patch lint) should pass this; aggregate-mode callers
201
+ * (re-export, per-patch lint) should pass this. Aggregate-mode callers
201
202
  * without a specific patch context omit it and fall through to
202
203
  * auto-detection.
203
204
  */
@@ -207,12 +208,12 @@ export interface LintExportedPatchOptions {
207
208
  * The ad-hoc `fireforge lint <files>` path passes a cross-patch file
208
209
  * list that does not correspond to a single patch, so it suppresses the
209
210
  * synthetic combined-list size check here and re-evaluates the size
210
- * rules per owning patch instead — never synthesising a phantom
211
+ * rules per owning patch instead, never synthesising a phantom
211
212
  * oversized patch from the operator's file selection.
212
213
  */
213
214
  skipPatchSize?: boolean;
214
215
  /**
215
- * Restrict checkJs diagnostics to these repo-relative files; module
216
+ * Restrict checkJs diagnostics to these repo-relative files. Module
216
217
  * resolution still spans every owned file in `patchQueueCtx`. Export and
217
218
  * re-export pass the patch under export so cross-patch `resource:///`
218
219
  * imports resolve against the whole queue while only that patch's
@@ -221,15 +222,15 @@ export interface LintExportedPatchOptions {
221
222
  checkJsReportScope?: ReadonlySet<string>;
222
223
  /**
223
224
  * Pre-computed checkJs issues for this patch. When provided, the internal
224
- * checkJs invocation is skipped and these are appended verbatim — the
225
+ * checkJs invocation is skipped and these are appended verbatim: the
225
226
  * per-patch lint path builds one queue-wide checkJs program and
226
227
  * attributes findings per patch instead of rebuilding per patch.
227
228
  */
228
229
  precomputedCheckJs?: readonly PatchLintIssue[];
229
230
  /**
230
- * Invoked with the issues DROPPED by the `ignoreChecks` waiver filter,
231
- * when any were. Suppression semantics are unchanged — the
232
- * returned issue list still excludes them — but the caller can report
231
+ * Invoked with the issues dropped by the `ignoreChecks` waiver filter,
232
+ * when any were. Suppression semantics are unchanged (the returned issue
233
+ * list still excludes them), but the caller can report
233
234
  * the measurement a waived size finding carried (per-patch NOTICE lines
234
235
  * and the `--report` JSON) instead of losing it entirely.
235
236
  */
@@ -242,7 +243,7 @@ export interface LintExportedPatchOptions {
242
243
  * @param affectedFiles - File paths (relative to repoDir) affected by the patch
243
244
  * @param diffContent - Raw unified diff string
244
245
  * @param config - Project configuration
245
- * @param options - Optional context and behaviour switches; see
246
+ * @param options - Optional context and behaviour switches. See
246
247
  * {@link LintExportedPatchOptions}. Every optional input lives here
247
248
  * rather than in a positional tail: four of the five call sites had to
248
249
  * pass `undefined` placeholders to reach the one member they wanted.
@@ -27,7 +27,7 @@ import { invokePatchLintPrettier } from './patch-lint-prettier.js';
27
27
  export * from './patch-lint-cross.js';
28
28
  export { buildModifiedFileAdditionsFromDiff, detectNewFilesInDiff } from './patch-lint-diff.js';
29
29
  // The CSS rule bodies live in `patch-lint-css.ts` (same per-file-budget
30
- // split as the other rule families); re-export the imported binding so
30
+ // split as the other rule families). Re-export the imported binding so
31
31
  // callers and tests keep importing `lintPatchedCss` from this module.
32
32
  export { lintPatchedCss };
33
33
  // ---------------------------------------------------------------------------
@@ -48,8 +48,8 @@ function countContentLines(content) {
48
48
  return lines.length;
49
49
  }
50
50
  /**
51
- * Canonical `[check] file: message` rendering of a patch-lint issue — the
52
- * one string shape every reporter and refusal message uses, so operators
51
+ * Canonical `[check] file: message` rendering of a patch-lint issue. It is
52
+ * the one string shape every reporter and refusal message uses, so operators
53
53
  * can grep one format across lint output and refusal details.
54
54
  */
55
55
  export function formatPatchLintIssue(issue) {
@@ -95,8 +95,8 @@ const PATCH_LINE_THRESHOLDS = {
95
95
  * `browser/branding/<name>/` subtree.
96
96
  *
97
97
  * Calibrated against a fresh-fork branding export, which lands around
98
- * 15–16k lines (localized brand.ftl across many locales + SVG path data +
99
- * copied upstream CSS). That is the MINIMUM branding diff, so it must
98
+ * 15-16k lines (localized brand.ftl across many locales + SVG path data +
99
+ * copied upstream CSS). That is the minimum branding diff, so it must
100
100
  * surface as a soft `notice` rather than a `warning`: the warning band
101
101
  * sits above it with ~13% headroom, and the error band at roughly 2× the
102
102
  * baseline, where non-branding work is probably bundled in.
@@ -111,7 +111,7 @@ const PATCH_LINE_THRESHOLDS = {
111
111
  /**
112
112
  * File-count thresholds for the `large-patch-files` rule, mirroring the tier
113
113
  * shape of {@link PATCH_LINE_THRESHOLDS}. A single warning-only threshold
114
- * per tier is intentional — file count expresses scope, not blast radius,
114
+ * per tier is intentional: file count expresses scope, not blast radius,
115
115
  * and there is no error band that would block export.
116
116
  *
117
117
  * The branding tier sits well above the typical floor because branding
@@ -122,7 +122,7 @@ const PATCH_LINE_THRESHOLDS = {
122
122
  * genuinely bloated patch.
123
123
  *
124
124
  * Test tier matches general because a test-only patch rarely touches many
125
- * files (a single regression test usually adds 1–3 fixtures); the elevation
125
+ * files (a single regression test usually adds 1-3 fixtures). The elevation
126
126
  * in {@link PATCH_LINE_THRESHOLDS.test} addresses big table-driven test
127
127
  * bodies, not file fan-out.
128
128
  */
@@ -145,10 +145,10 @@ const SPLIT_HINT = 'Consider splitting into smaller, focused patches — ' +
145
145
  * branding patches legitimately need to touch to register the new branding
146
146
  * flavor with the top-level configure. A predicate requiring every file to
147
147
  * live under `browser/branding/` drops a branding patch that also touches
148
- * `browser/moz.configure` — the canonical registration point — into the
148
+ * `browser/moz.configure` (the canonical registration point) into the
149
149
  * general lint tier.
150
150
  *
151
- * Intentionally narrow: add entries only when a genuine branding patch
151
+ * Narrow on purpose: add entries only when a genuine branding patch
152
152
  * cannot be expressed without a specific registration sibling. Pinned
153
153
  * against ESR 140.x conventions at time of writing.
154
154
  */
@@ -159,7 +159,7 @@ const BRANDING_REGISTRATION_FILES = new Set([
159
159
  /**
160
160
  * Returns true when a patch qualifies for the branding threshold tier:
161
161
  * every file lives either under `browser/branding/` or in the narrow
162
- * registration allowlist, AND the patch contains at least one file
162
+ * registration allowlist, and the patch contains at least one file
163
163
  * under `browser/branding/` (guard against a config-only patch
164
164
  * accidentally qualifying as branding).
165
165
  *
@@ -201,7 +201,7 @@ export function isTestFile(file) {
201
201
  return /^(?:browser_|test_|xpcshell_).*\.js$/.test(basename);
202
202
  }
203
203
  /**
204
- * Narrower scope than `isTestFile` — only browser-chrome test files
204
+ * Narrower scope than `isTestFile`: only browser-chrome test files
205
205
  * (`browser_*.js` under a `/test/` or `/tests/` directory). Excludes
206
206
  * `head.js` and `head_*.js` test helpers.
207
207
  */
@@ -221,28 +221,29 @@ function isBrowserChromeTestFile(file) {
221
221
  * Each alternative must sit at a call boundary: preceded by something that
222
222
  * is not an identifier character, `.`, `#`, or `-`. A plain
223
223
  * `strippedContent.includes(tok)` over `Assert.`, `ok(`, `is(`, `isnot(`,
224
- * `isDeeply(` lets any identifier merely *ending* in one satisfy the gate —
225
- * `this.axis(3)` contains `is(`, `book(` contains `ok(`,
226
- * `promiseIsDeeply(` contains `isDeeply(` — so an assertion-free smoke test
224
+ * `isDeeply(` lets any identifier merely *ending* in one satisfy the gate:
225
+ * `this.axis(3)` contains `is(`, `book(` contains `ok(`, and
226
+ * `promiseIsDeeply(` contains `isDeeply(`, so an assertion-free smoke test
227
227
  * using any such call clears the floor.
228
228
  *
229
- * The namespaced arm must name a member AND a call. Matching the namespace
229
+ * The namespaced arm must name a member and a call. Matching the namespace
230
230
  * and its dot alone re-opens the same hole from the other side:
231
231
  * `SimpleTest` is mostly *harness* API, so `SimpleTest.finish()`,
232
232
  * `SimpleTest.waitForExplicitFinish()` and `SimpleTest.requestCompleteLog()`
233
- * would each clear the floor on their own — the exact calls an
233
+ * would each clear the floor on their own, which are the exact calls an
234
234
  * assertion-free smoke test contains. The enumeration below is the
235
235
  * mochitest/xpcshell assertion surface both namespaces share, and it is what
236
236
  * the user-facing message names.
237
237
  *
238
238
  * Two qualified spellings of the bare four also count: `window.ok(...)` (the
239
- * globals ARE window properties) and an optional-chained `win?.ok(...)`;
240
- * blocking those flags tests whose only assertions are real as
241
- * assertion-free. `SpecialPowers.ok(` stays excluded — that is API surface,
239
+ * globals are window properties) and an optional-chained `win?.ok(...)`.
240
+ * Blocking those flags tests whose only assertions are real as
241
+ * assertion-free. `SpecialPowers.ok(` stays excluded: that is API surface,
242
242
  * not an assertion.
243
243
  *
244
- * Deliberately textual, not AST-based: this runs over patch bodies rather
245
- * than resolvable sources, and the surrounding rule is a floor, not a proof.
244
+ * Textual rather than AST-based, on purpose: this runs over patch bodies
245
+ * rather than resolvable sources, and the surrounding rule is a floor, not
246
+ * a proof.
246
247
  */
247
248
  const ASSERTION_MEMBERS = [
248
249
  'ok',
@@ -263,7 +264,7 @@ const ASSERTION_MEMBERS = [
263
264
  'stringContains',
264
265
  'throws',
265
266
  'rejects',
266
- // `todo`, `todo_is`, `todo_isnot`, `info`-free — todo* record an expected
267
+ // `todo`, `todo_is`, `todo_isnot`, `info`-free: todo* record an expected
267
268
  // failure, which is still a recorded assertion outcome.
268
269
  'todo',
269
270
  'todo_is',
@@ -290,27 +291,28 @@ export function commentStyleForFile(file) {
290
291
  // License header lint
291
292
  // ---------------------------------------------------------------------------
292
293
  /**
293
- * Decides whether a NEW file's leading header satisfies the
294
- * `missing-license-header` rule. Single owner of the acceptance policy —
295
- * `lintNewFileHeaders` (the rule) and `autoFixLicenseHeaders` (the
294
+ * Decides whether a new file's leading header satisfies the
295
+ * `missing-license-header` rule. It is the single owner of the acceptance
296
+ * policy: `lintNewFileHeaders` (the rule) and `autoFixLicenseHeaders` (the
296
297
  * interactive export fixer) must agree, or the fixer offers to stack a
297
298
  * second header onto a file the lint already accepts.
298
299
  *
299
300
  * Accepted shapes, in order:
300
- * - the project's own header for the file's comment style;
301
- * - under `browser/branding/`, ANY recognised license header in the
301
+ * - the project's own header for the file's comment style.
302
+ * - under `browser/branding/`, any recognised license header in the
302
303
  * matching style: the setup-generated branding directory is copied from
303
304
  * Firefox's `unofficial` template and arrives with Mozilla MPL-2.0
304
- * headers — legitimate for copyright purposes (the assets are Mozilla's)
305
- * even when the fork's own code is 0BSD / EUPL-1.2 / GPL-2.0-or-later;
306
- * - on an MPL-2.0 project, any recognised header in the matching style;
305
+ * headers, legitimate for copyright purposes (the assets are Mozilla's)
306
+ * even when the fork's own code is 0BSD / EUPL-1.2 / GPL-2.0-or-later.
307
+ * - on an MPL-2.0 project, any recognised header in the matching style.
307
308
  * - the verbatim upstream MPL-2.0 block header (`/* … *\/`, optionally
308
- * behind a leading editor-directive comment) REGARDLESS of the project
309
+ * behind a leading editor-directive comment) regardless of the project
309
310
  * license, on any file whose comment syntax is the block form (JS and
310
311
  * CSS): a file copied from the Firefox tree legitimately keeps Mozilla's
311
312
  * header for provenance in an EUPL/GPL/0BSD project too. Only the block
312
- * form is accepted — the `// `-style MPL header is FireForge-generated,
313
- * not upstream provenance — and `hash`-style files (FTL) stay excluded
313
+ * form is accepted, because the `// `-style MPL header is
314
+ * FireForge-generated rather than upstream provenance, and `hash`-style
315
+ * files (FTL) stay excluded
314
316
  * because `/* … *\/` is not a comment there.
315
317
  *
316
318
  * @param file - Engine-relative path of the new file
@@ -374,7 +376,7 @@ export async function lintNewFileHeaders(repoDir, newFiles, config) {
374
376
  * @param patchOwnedFiles - Optional set of patch-owned `.sys.mjs` paths for scoped JSDoc enforcement
375
377
  * @param patchOwnedChromeScripts - Optional set of patch-owned chrome
376
378
  * subscripts (`.js` non-`.sys.mjs`) for scoped chrome-script JSDoc
377
- * enforcement. Built by {@link resolvePatchOwnedChromeScripts}; passed
379
+ * enforcement. Built by {@link resolvePatchOwnedChromeScripts}. Passed
378
380
  * separately from `patchOwnedFiles` so the `runCheckJs` consumer (which
379
381
  * only accepts `.sys.mjs`) is not silently broadened.
380
382
  * @returns Array of lint issues
@@ -448,7 +450,7 @@ export async function lintPatchedJs(repoDir, affectedFiles, newFiles, config, pa
448
450
  const chromeMode = config.patchLint?.chromeScriptJsDoc;
449
451
  issues.push(...lintChromeScriptJsDocForFile(file, content, isChromeOwned, chromeMode));
450
452
  // 3b. Assertion floor for browser-chrome tests touched by this patch
451
- // (covers both newly introduced files and modified upstream tests —
453
+ // (covers both newly introduced files and modified upstream tests:
452
454
  // a patch that strips the last `Assert.equal` from an existing
453
455
  // browser_*.js silently passed under the old `isNew` gate).
454
456
  const assertionFloor = config.patchLint?.testAssertionFloor;
@@ -506,7 +508,7 @@ export function lintModificationComments(diffContent, config) {
506
508
  * Decides which `large-patch-lines` threshold tier applies to a patch.
507
509
  * Exported so `runPatchLint` and the per-patch `lint` command can
508
510
  * surface the tier choice to the operator *without* depending on
509
- * `lintPatchSize`'s internal return shape — the rule itself stays a
511
+ * `lintPatchSize`'s internal return shape. The rule itself stays a
510
512
  * pure issues-array API, and the decision is computed separately for
511
513
  * the sole purpose of reporting.
512
514
  *
@@ -514,7 +516,7 @@ export function lintModificationComments(diffContent, config) {
514
516
  * The test tier beats branding because a table-driven regression test
515
517
  * is legitimately large independent of whether the patch also claims
516
518
  * branding shape, and the test-tier thresholds are already more
517
- * permissive than branding — so "tests beat branding" is the
519
+ * permissive than branding, so "tests beat branding" is the
518
520
  * defensive-for-tests choice.
519
521
  */
520
522
  export function resolvePatchSizeTier(filesAffected, patchTier) {
@@ -531,7 +533,7 @@ export function resolvePatchSizeTier(filesAffected, patchTier) {
531
533
  * Read-only view of the size thresholds a tier enforces.
532
534
  * Public-API companion to {@link resolvePatchSizeTier} /
533
535
  * {@link countNonBinaryDiffLines} so consumers can build waiver-freshness
534
- * checks against the SAME numbers `large-patch-lines` /
536
+ * checks against the same numbers `large-patch-lines` /
535
537
  * `large-patch-files` fire on instead of mirroring them.
536
538
  */
537
539
  export function getPatchSizeThresholds(tier) {
@@ -558,7 +560,7 @@ export function lintPatchSize(filesAffected, lineCount, patchTier) {
558
560
  // thresholds because a big regression test is legitimate (table-driven
559
561
  // harnesses run into the thousands of lines). Branding patches get their
560
562
  // own tier so a first export of setup-generated branding does not fire the
561
- // general hard limit — see `PATCH_LINE_THRESHOLDS.branding` and
563
+ // general hard limit. See `PATCH_LINE_THRESHOLDS.branding` and
562
564
  // `PATCH_FILES_THRESHOLDS.branding` above. An explicit `patchTier` opt-in
563
565
  // forces branding even when `isBrandingOnlyPatch` cannot reach the patch's
564
566
  // actual shape (a branding patch that also touches a non-allowlisted
@@ -654,7 +656,7 @@ export async function lintModifiedFileHeaders(repoDir, affectedFiles, newFiles)
654
656
  * @param affectedFiles - File paths (relative to repoDir) affected by the patch
655
657
  * @param diffContent - Raw unified diff string
656
658
  * @param config - Project configuration
657
- * @param options - Optional context and behaviour switches; see
659
+ * @param options - Optional context and behaviour switches. See
658
660
  * {@link LintExportedPatchOptions}. Every optional input lives here
659
661
  * rather than in a positional tail: four of the five call sites had to
660
662
  * pass `undefined` placeholders to reach the one member they wanted.
@@ -688,7 +690,7 @@ export async function lintExportedPatch(repoDir, affectedFiles, diffContent, con
688
690
  ];
689
691
  if (options?.precomputedCheckJs) {
690
692
  // Per-patch lint built one queue-wide program and already attributed
691
- // this patch's findings — append them instead of rebuilding the program.
693
+ // this patch's findings, so append them instead of rebuilding the program.
692
694
  issues.push(...options.precomputedCheckJs);
693
695
  }
694
696
  else if (config.patchLint?.checkJs) {
@@ -705,10 +707,10 @@ export async function lintExportedPatch(repoDir, affectedFiles, diffContent, con
705
707
  }
706
708
  }
707
709
  }
708
- // Prettier over patch-owned .sys.mjs. Deliberately NOT part of the
709
- // precomputedCheckJs short-circuit: it is a separate tool with its own
710
- // gate, and a queue-wide program has no equivalent to share. Scoped to
711
- // the files THIS patch owns, run from engine/ so the engine's own config
710
+ // Prettier over patch-owned .sys.mjs. Kept out of the
711
+ // precomputedCheckJs short-circuit on purpose: it is a separate tool with
712
+ // its own gate, and a queue-wide program has no equivalent to share.
713
+ // Scoped to the files this patch owns, run from engine/ so its own config
712
714
  // and ignore file decide (see `patch-lint-prettier.ts`).
713
715
  const prettierGate = config.patchLint?.prettier ?? 'off';
714
716
  if (prettierGate !== 'off' && patchOwnedFiles.size > 0) {
@@ -717,7 +719,7 @@ export async function lintExportedPatch(repoDir, affectedFiles, diffContent, con
717
719
  }
718
720
  // Filter out ignored checks last so every rule still runs (keeps the
719
721
  // implementation uniform) but suppressed rules do not surface. We do not
720
- // reclassify severities — an ignored error simply drops, mirroring how
722
+ // reclassify severities: an ignored error simply drops, mirroring how
721
723
  // inline `fireforge-ignore: <check>` markers work in the CSS and
722
724
  // forward-import rules.
723
725
  if (ignoreChecks && ignoreChecks.size > 0) {
@@ -23,7 +23,7 @@ export interface PatchDirectoryLockOptions {
23
23
  * is held, so an unlocked caller silently reintroduces the interleaving the
24
24
  * lock exists to prevent.
25
25
  *
26
- * Fail-open on an unreadable owner record, deliberately: `withFileLock`
26
+ * Fail-open on an unreadable owner record, on purpose: `withFileLock`
27
27
  * treats writing that record as non-fatal, so a live holder can legitimately
28
28
  * have no readable PID and asserting on its presence would fire on a lock we
29
29
  * really do hold.
@@ -34,7 +34,7 @@ function formatWaitProgressLine(waitedMs, timeoutMs, holder) {
34
34
  * is held, so an unlocked caller silently reintroduces the interleaving the
35
35
  * lock exists to prevent.
36
36
  *
37
- * Fail-open on an unreadable owner record, deliberately: `withFileLock`
37
+ * Fail-open on an unreadable owner record, on purpose: `withFileLock`
38
38
  * treats writing that record as non-fatal, so a live holder can legitimately
39
39
  * have no readable PID and asserting on its presence would fire on a lock we
40
40
  * really do hold.
@@ -56,7 +56,7 @@ export async function assertPatchDirectoryLockHeld(patchesDir, context) {
56
56
  export async function withPatchDirectoryLock(patchesDir, operation, options = {}) {
57
57
  const lockDir = join(patchesDir, PATCH_DIRECTORY_LOCK);
58
58
  const { waitLockSeconds, command } = options;
59
- // Tag whatever the BODY throws so the catch below can tell it apart from a
59
+ // Tag whatever the body throws so the catch below can tell it apart from a
60
60
  // lock-acquire/release failure. Narrowing by origin rather than by error
61
61
  // shape is what "the rewrap is for lock I/O" actually means: an errno test
62
62
  // would still reclassify an EACCES raised while the body writes a .patch
@@ -90,10 +90,10 @@ export async function withPatchDirectoryLock(patchesDir, operation, options = {}
90
90
  : {}),
91
91
  // Reason first, remedy second. The remedy is waiting, not deleting: bulk
92
92
  // exports/re-exports legitimately hold this lock for minutes, and
93
- // FireForge reaps genuinely stale locks on its own — advice to `rm -rf`
94
- // while a holder is alive destroys a live lock. The leading sentence is
95
- // a message contract; extend, do not reword. withFileLock appends the
96
- // holder identification.
93
+ // FireForge reaps genuinely stale locks on its own, and advice to
94
+ // `rm -rf` while a holder is alive destroys a live lock. The leading
95
+ // sentence is a message contract. Extend, do not reword. withFileLock
96
+ // appends the holder identification.
97
97
  onTimeoutMessage: `Timed out waiting for another FireForge command mutating ${patchesDir}.\n` +
98
98
  `Pass --wait-lock [seconds] to wait longer (bare --wait-lock waits up to 60 seconds). ` +
99
99
  `FireForge removes genuinely stale locks automatically; only if no other fireforge ` +
@@ -105,7 +105,7 @@ export async function withPatchDirectoryLock(patchesDir, operation, options = {}
105
105
  // reports an EACCES writing patches.json, a postcondition failure from
106
106
  // renumberPatchesInManifest, or a plain TypeError from a FireForge bug
107
107
  // as a "Patch Error" carrying three fixed remedies about Firefox-version
108
- // compatibility and `fireforge reset` — none of which apply. Worse,
108
+ // compatibility and `fireforge reset`, none of which apply. Worse,
109
109
  // src/cli.ts prints a stack only for non-FireForgeError throwables, so
110
110
  // the rewrap moves real bugs into the branch that discards their stack.
111
111
  if (bodyThrew && error === bodyFailure) {
@@ -114,7 +114,7 @@ export async function withPatchDirectoryLock(patchesDir, operation, options = {}
114
114
  if (error instanceof FireForgeError) {
115
115
  throw error;
116
116
  }
117
- // CommandError is the one class in src/errors/ that does NOT extend
117
+ // CommandError is the one class in src/errors/ that does not extend
118
118
  // FireForgeError: it is the sentinel carrying an already-rendered exit
119
119
  // code to the entrypoint. The `instanceof FireForgeError` guard above
120
120
  // misses it, so without this the exit code was replaced by PATCH_ERROR.