@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
@@ -6,7 +6,7 @@ export interface StaleBuildResult {
6
6
  /**
7
7
  * Engine-relative paths that would have been packaged but appear to have
8
8
  * changed since the baseline. Sorted and deduplicated. Truncated at
9
- * {@link STALE_PATHS_LIMIT} entries for rendering; consult
9
+ * {@link STALE_PATHS_LIMIT} entries for rendering. Consult
10
10
  * {@link StaleBuildResult.truncated} to know when to append a `(+N more)`
11
11
  * tail to the warning.
12
12
  */
@@ -18,16 +18,16 @@ export interface StaleBuildResult {
18
18
  truncated: number;
19
19
  /**
20
20
  * The baseline that anchored the diff, or undefined when no previous
21
- * successful build exists. A missing baseline is treated as "not stale"
22
- * — we have nothing to compare against and a warning would mislead.
21
+ * successful build exists. A missing baseline is treated as "not stale":
22
+ * we have nothing to compare against and a warning would mislead.
23
23
  */
24
24
  baseline: BuildBaseline | undefined;
25
25
  }
26
26
  /**
27
27
  * Probes the engine tree for packageable changes since the last successful
28
28
  * `fireforge build`. Returns a summary the `fireforge test` handler renders
29
- * as an up-front warning when `--build` was NOT passed. The probe never
30
- * throws; git failures and a missing baseline both degrade to `stale: false`
29
+ * as an up-front warning when `--build` was not passed. The probe never
30
+ * throws. Git failures and a missing baseline both degrade to `stale: false`
31
31
  * so a broken probe cannot block a test run.
32
32
  *
33
33
  * @param projectRoot Root directory of the project.
@@ -48,25 +48,26 @@ export declare const FULL_SUITE_REQUEST = "(entire suite)";
48
48
  /**
49
49
  * Compares the requested test paths against the packaged runtime's coverage
50
50
  * claim recorded in the baseline. Returns the requested paths the recorded
51
- * packaging does NOT cover — the runs that would dispatch against missing
51
+ * packaging does not cover: the runs that would dispatch against missing
52
52
  * `_tests/` support fixtures and hang rather than fail.
53
53
  *
54
54
  * Coverage semantics: an absent claim and `'full'` cover everything. A
55
55
  * scoped list covers a request path when the request equals a covered entry,
56
56
  * sits beneath a covered directory entry, or shares a manifest granule with
57
- * a covered entry ({@link toManifestGranule} — a scoped `test --build`
57
+ * a covered entry (see {@link toManifestGranule}: a scoped `test --build`
58
58
  * packages the whole manifest directory, so a same-manifest sibling of a
59
59
  * covered file is packaged too). Both sides are normalized to forward
60
60
  * slashes so Windows-style CLI input cannot defeat the prefix rule (baseline
61
61
  * paths are POSIX by convention). A request with no paths is a full-suite
62
- * run and is never covered by a scoped list — the {@link FULL_SUITE_REQUEST}
63
- * sentinel is returned so the refusal can name it.
62
+ * run and is never covered by a scoped list, so the
63
+ * {@link FULL_SUITE_REQUEST} sentinel is returned and the refusal can name
64
+ * it.
64
65
  */
65
66
  export declare function findUncoveredRequestPaths(coverage: TestPackagingCoverage | undefined, requestedPaths: readonly string[]): string[];
66
67
  /**
67
68
  * Test manifests changed since the recorded build that sit in (or above)
68
- * the directory of an uncovered request path — i.e. the manifests that
69
- * EXPLAIN why this run needs coverage the build never claimed.
69
+ * the directory of an uncovered request path, i.e. the manifests that
70
+ * explain why this run needs coverage the build never claimed.
70
71
  *
71
72
  * Best-effort: a probe failure returns an empty list, so the refusal
72
73
  * degrades to exactly its previous text rather than failing differently.
@@ -84,7 +85,7 @@ export declare function findChangedTestManifestsForPaths(engineDir: string, base
84
85
  * @param coverage - The recorded scoped coverage claim
85
86
  * @param changedManifests - Test manifests changed since the recorded
86
87
  * build that explain an uncovered path (from
87
- * {@link findChangedTestManifestsForPaths}); omitted or empty renders
88
+ * {@link findChangedTestManifestsForPaths}). Omitted or empty renders
88
89
  * nothing
89
90
  */
90
91
  export declare function formatTestCoverageRefusal(uncovered: string[], coverage: string[], changedManifests?: readonly string[]): string;
@@ -93,25 +94,25 @@ export interface StaticComponentsStaleResult {
93
94
  /** True when at least one `components.conf` genuinely diverged from the anchor. */
94
95
  stale: boolean;
95
96
  /**
96
- * Engine-relative `components.conf` paths changed since the last FULL
97
- * build. Sorted; NOT capped — {@link formatStaticComponentsRefusal}
97
+ * Engine-relative `components.conf` paths changed since the last full
98
+ * build. Sorted, and not capped. {@link formatStaticComponentsRefusal}
98
99
  * applies the render cap.
99
100
  */
100
101
  changedManifests: string[];
101
102
  }
102
103
  /**
103
- * Probes whether any `components.conf` changed since the last FULL
104
- * `fireforge build` — i.e. since the compiled StaticComponents table was
105
- * last regenerated. `components.conf` entries bake into compiled code; a
104
+ * Probes whether any `components.conf` changed since the last full
105
+ * `fireforge build`, i.e. since the compiled StaticComponents table was
106
+ * last regenerated. `components.conf` entries bake into compiled code. A
106
107
  * scoped `test --build` packages the file but the child process resolves the
107
- * OLD table and fails with `NS_ERROR_MALFORMED_URI` that reads as a test
108
+ * old table and fails with `NS_ERROR_MALFORMED_URI` that reads as a test
108
109
  * bug.
109
110
  *
110
111
  * The diff anchors to the baseline's `staticComponentsBaseline` (the last
111
- * full build's engine HEAD SHA), NOT the baseline's own `engineHeadSha`,
112
+ * full build's engine HEAD SHA), not the baseline's own `engineHeadSha`,
112
113
  * which a scoped `test --build` advances. Dirty candidates are hash-checked
113
114
  * against the anchor's fingerprints so only genuine content divergence
114
- * counts. No baseline or no anchor means fresh. Never throws — the probes it
115
+ * counts. No baseline or no anchor means fresh. Never throws: the probes it
115
116
  * composes degrade to verbose lines and empty results on git failure,
116
117
  * matching {@link checkStaleBuildForTest}.
117
118
  */
@@ -128,7 +129,7 @@ export declare function formatStaticComponentsRefusal(changedManifests: string[]
128
129
  * `fireforge import` when `components.conf` diverged from the last full
129
130
  * build. Same probe as {@link formatStaticComponentsRefusal},
130
131
  * different moment: this fires at mutation time so the operator learns a
131
- * full build is needed BEFORE the next gate run refuses.
132
+ * full build is needed before the next gate run refuses.
132
133
  */
133
134
  export declare function formatPostMutationStaticComponentsWarning(changedManifests: string[]): string;
134
135
  /**
@@ -5,9 +5,9 @@
5
5
  * Without this preflight, an operator who edits engine chrome / packaged
6
6
  * resources (`jar.mn` entries, `.xhtml`/`.mjs`/`.css` under chrome trees,
7
7
  * pref files) and then runs `fireforge test <path>` only discovers the build
8
- * is stale AFTER xpcshell / mach test starts and errors out with
9
- * `NS_ERROR_FILE_NOT_FOUND` against a `chrome://browser/content/…` URI —
10
- * which reads as a test bug, not a rebuild prompt. Scaffolding a new
8
+ * is stale after xpcshell / mach test starts and errors out with
9
+ * `NS_ERROR_FILE_NOT_FOUND` against a `chrome://browser/content/…` URI,
10
+ * which reads as a test bug rather than a rebuild prompt. Scaffolding a new
11
11
  * top-level chrome document plus an xpcshell test is the canonical case: the
12
12
  * test file exists, the manifests are registered, but `dist/` still holds
13
13
  * the pre-edit bundle and chrome URIs resolve to nothing.
@@ -16,7 +16,7 @@
16
16
  * baseline (`.fireforge/last-build.json`), filters to paths that imply
17
17
  * packaging, and returns a compact summary. `fireforge test` prints a
18
18
  * warning up-front so the operator sees "you edited X, Y, Z since the last
19
- * build — rerun with `--build` to refresh" BEFORE mach test launches.
19
+ * build, rerun with `--build` to refresh" before mach test launches.
20
20
  * Detection stays advisory (warn-only) because a fork that rebuilds
21
21
  * out-of-band (a separate `./mach build` invocation, an IDE plugin) can
22
22
  * legitimately have a fresh `dist/` with no FireForge-recorded baseline
@@ -34,8 +34,8 @@ const STALE_PATHS_LIMIT = 10;
34
34
  /**
35
35
  * Probes the engine tree for packageable changes since the last successful
36
36
  * `fireforge build`. Returns a summary the `fireforge test` handler renders
37
- * as an up-front warning when `--build` was NOT passed. The probe never
38
- * throws; git failures and a missing baseline both degrade to `stale: false`
37
+ * as an up-front warning when `--build` was not passed. The probe never
38
+ * throws. Git failures and a missing baseline both degrade to `stale: false`
39
39
  * so a broken probe cannot block a test run.
40
40
  *
41
41
  * @param projectRoot Root directory of the project.
@@ -58,8 +58,8 @@ export async function checkStaleBuildForTest(projectRoot, engineDir) {
58
58
  // Furnace-applied components always has a persistent workdir diff against
59
59
  // HEAD, so `git diff --name-only HEAD` returns that diff on every build
60
60
  // and the stale check fires immediately after a successful one. The
61
- // fingerprints capture "these files had this content when the build ran";
62
- // a path stays stale only when its live hash diverges.
61
+ // fingerprints capture "these files had this content when the build ran".
62
+ // A path stays stale only when its live hash diverges.
63
63
  packageable = await dropPathsMatchingFingerprints(engineDir, packageable, baseline.packageableFingerprints);
64
64
  if (packageable.length === 0) {
65
65
  return { stale: false, changedPaths: [], truncated: 0, baseline };
@@ -89,19 +89,20 @@ export const FULL_SUITE_REQUEST = '(entire suite)';
89
89
  /**
90
90
  * Compares the requested test paths against the packaged runtime's coverage
91
91
  * claim recorded in the baseline. Returns the requested paths the recorded
92
- * packaging does NOT cover — the runs that would dispatch against missing
92
+ * packaging does not cover: the runs that would dispatch against missing
93
93
  * `_tests/` support fixtures and hang rather than fail.
94
94
  *
95
95
  * Coverage semantics: an absent claim and `'full'` cover everything. A
96
96
  * scoped list covers a request path when the request equals a covered entry,
97
97
  * sits beneath a covered directory entry, or shares a manifest granule with
98
- * a covered entry ({@link toManifestGranule} — a scoped `test --build`
98
+ * a covered entry (see {@link toManifestGranule}: a scoped `test --build`
99
99
  * packages the whole manifest directory, so a same-manifest sibling of a
100
100
  * covered file is packaged too). Both sides are normalized to forward
101
101
  * slashes so Windows-style CLI input cannot defeat the prefix rule (baseline
102
102
  * paths are POSIX by convention). A request with no paths is a full-suite
103
- * run and is never covered by a scoped list — the {@link FULL_SUITE_REQUEST}
104
- * sentinel is returned so the refusal can name it.
103
+ * run and is never covered by a scoped list, so the
104
+ * {@link FULL_SUITE_REQUEST} sentinel is returned and the refusal can name
105
+ * it.
105
106
  */
106
107
  export function findUncoveredRequestPaths(coverage, requestedPaths) {
107
108
  if (coverage === undefined || coverage === 'full') {
@@ -121,10 +122,10 @@ export function findUncoveredRequestPaths(coverage, requestedPaths) {
121
122
  * Maps a normalized request/coverage path to the "manifest granule" the
122
123
  * packaged runtime actually staged: an extension-bearing basename (a test
123
124
  * FILE) maps to its containing directory, a directory (no dot in the
124
- * basename) maps to itself. Purely lexical — the directory-as-manifest
125
+ * basename) maps to itself. Purely lexical: the directory-as-manifest
125
126
  * approximation holds because xpcshell/mochitest manifests live next to
126
127
  * their test files and a scoped `test --build` stages the whole manifest
127
- * directory into `obj-*`/`_tests/`, not single files. Caveat: a DIRECTORY
128
+ * directory into `obj-*`/`_tests/`, not single files. Caveat: a directory
128
129
  * whose basename contains a dot is misread as a file and mapped to its
129
130
  * parent, which widens (never narrows) the covered granule.
130
131
  */
@@ -142,7 +143,7 @@ function normalizeCoveragePath(path) {
142
143
  }
143
144
  /**
144
145
  * Formats the refusal shown when a non-`--build` run requests paths the
145
- * packaged runtime's scoped `test --build` coverage does not include —
146
+ * packaged runtime's scoped `test --build` coverage does not include. It is
146
147
  * enforced on every such run, with or without `--allow-stale-build`. Kept
147
148
  * separate from the matcher so tests can pin structure and copy
148
149
  * independently (same split as {@link formatStaleBuildWarning}).
@@ -150,7 +151,7 @@ function normalizeCoveragePath(path) {
150
151
  /**
151
152
  * Basenames of the test manifests whose entries decide what a packaged test
152
153
  * runtime stages. A manifest that gained an entry is the single most common
153
- * reason a run needs coverage the last build never claimed — and it is a
154
+ * reason a run needs coverage the last build never claimed, and it is a
154
155
  * fact FireForge already holds but never said, leaving the operator to
155
156
  * rediscover it after a correct refusal.
156
157
  */
@@ -173,8 +174,8 @@ function isTestManifestPath(path) {
173
174
  }
174
175
  /**
175
176
  * Test manifests changed since the recorded build that sit in (or above)
176
- * the directory of an uncovered request path — i.e. the manifests that
177
- * EXPLAIN why this run needs coverage the build never claimed.
177
+ * the directory of an uncovered request path, i.e. the manifests that
178
+ * explain why this run needs coverage the build never claimed.
178
179
  *
179
180
  * Best-effort: a probe failure returns an empty list, so the refusal
180
181
  * degrades to exactly its previous text rather than failing differently.
@@ -211,7 +212,7 @@ export async function findChangedTestManifestsForPaths(engineDir, baseline, unco
211
212
  * @param coverage - The recorded scoped coverage claim
212
213
  * @param changedManifests - Test manifests changed since the recorded
213
214
  * build that explain an uncovered path (from
214
- * {@link findChangedTestManifestsForPaths}); omitted or empty renders
215
+ * {@link findChangedTestManifestsForPaths}). Omitted or empty renders
215
216
  * nothing
216
217
  */
217
218
  export function formatTestCoverageRefusal(uncovered, coverage, changedManifests = []) {
@@ -222,7 +223,7 @@ export function formatTestCoverageRefusal(uncovered, coverage, changedManifests
222
223
  };
223
224
  const rebuildTargets = uncovered.filter((p) => p !== FULL_SUITE_REQUEST);
224
225
  // Name --extend-coverage here or it is undiscoverable: a scoped build
225
- // REPLACES the claim, so under several concurrent sessions a peer's build
226
+ // replaces the claim, so under several concurrent sessions a peer's build
226
227
  // for an unrelated path erases coverage you legitimately still hold, and
227
228
  // the union that fixes it is a flag the operator has no reason to know
228
229
  // exists at the moment they need it. The anchor conditions are stated
@@ -233,7 +234,7 @@ export function formatTestCoverageRefusal(uncovered, coverage, changedManifests
233
234
  const rebuildHint = rebuildTargets.length > 0
234
235
  ? `Rerun "fireforge test --build ${rebuildTargets.slice(0, STALE_PATHS_LIMIT).join(' ')}" to package them, or run "fireforge build" for full coverage.${extendHint}`
235
236
  : 'Run "fireforge build" (or a path-less "fireforge test --build") for full coverage first.';
236
- // Why THIS run needs new coverage, when a changed manifest explains it: a
237
+ // Why this run needs new coverage, when a changed manifest explains it: a
237
238
  // manifest that gained an entry is not covered by a build claim recorded
238
239
  // for other paths, and a browser-chrome claim never covers xpcshell.
239
240
  const manifestLine = changedManifests.length > 0
@@ -246,18 +247,18 @@ export function formatTestCoverageRefusal(uncovered, coverage, changedManifests
246
247
  '(--allow-stale-build does not bypass this check — it accepts stale content, not missing coverage.)');
247
248
  }
248
249
  /**
249
- * Probes whether any `components.conf` changed since the last FULL
250
- * `fireforge build` — i.e. since the compiled StaticComponents table was
251
- * last regenerated. `components.conf` entries bake into compiled code; a
250
+ * Probes whether any `components.conf` changed since the last full
251
+ * `fireforge build`, i.e. since the compiled StaticComponents table was
252
+ * last regenerated. `components.conf` entries bake into compiled code. A
252
253
  * scoped `test --build` packages the file but the child process resolves the
253
- * OLD table and fails with `NS_ERROR_MALFORMED_URI` that reads as a test
254
+ * old table and fails with `NS_ERROR_MALFORMED_URI` that reads as a test
254
255
  * bug.
255
256
  *
256
257
  * The diff anchors to the baseline's `staticComponentsBaseline` (the last
257
- * full build's engine HEAD SHA), NOT the baseline's own `engineHeadSha`,
258
+ * full build's engine HEAD SHA), not the baseline's own `engineHeadSha`,
258
259
  * which a scoped `test --build` advances. Dirty candidates are hash-checked
259
260
  * against the anchor's fingerprints so only genuine content divergence
260
- * counts. No baseline or no anchor means fresh. Never throws — the probes it
261
+ * counts. No baseline or no anchor means fresh. Never throws: the probes it
261
262
  * composes degrade to verbose lines and empty results on git failure,
262
263
  * matching {@link checkStaleBuildForTest}.
263
264
  */
@@ -300,7 +301,7 @@ export function formatStaticComponentsRefusal(changedManifests) {
300
301
  * `fireforge import` when `components.conf` diverged from the last full
301
302
  * build. Same probe as {@link formatStaticComponentsRefusal},
302
303
  * different moment: this fires at mutation time so the operator learns a
303
- * full build is needed BEFORE the next gate run refuses.
304
+ * full build is needed before the next gate run refuses.
304
305
  */
305
306
  export function formatPostMutationStaticComponentsWarning(changedManifests) {
306
307
  const head = changedManifests.slice(0, STALE_PATHS_LIMIT);
@@ -5,7 +5,7 @@
5
5
  * Removes one stale xpcshell `_tests` symlink when mach reports a
6
6
  * FileExistsError during test installation.
7
7
  *
8
- * The guard rails are deliberately narrow: only quoted FileExistsError
8
+ * The guard rails are narrow: only quoted FileExistsError
9
9
  * destinations inside the active objdir's `_tests` tree are considered, and
10
10
  * only when lstat confirms the destination itself is a symlink.
11
11
  */
@@ -17,7 +17,7 @@ function isInsideDirectory(parent, candidate) {
17
17
  * Removes one stale xpcshell `_tests` symlink when mach reports a
18
18
  * FileExistsError during test installation.
19
19
  *
20
- * The guard rails are deliberately narrow: only quoted FileExistsError
20
+ * The guard rails are narrow: only quoted FileExistsError
21
21
  * destinations inside the active objdir's `_tests` tree are considered, and
22
22
  * only when lstat confirms the destination itself is a symlink.
23
23
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Operator-facing triage for the `timed out … with no output` / `Ran 0
3
- * checks` stall — the shape where the harness dies before ANY test output.
3
+ * checks` stall: the shape where the harness dies before any test output.
4
4
  *
5
- * Split out of `test-harness-crash.ts`, which CLASSIFIES runs; this module
5
+ * Split out of `test-harness-crash.ts`, which classifies runs. This module
6
6
  * only renders advice about one already-classified shape. Keeping the two
7
7
  * apart matters because the census below carries claims of unequal
8
8
  * evidential strength, and the rules for editing it are not the rules for
@@ -10,23 +10,23 @@
10
10
  * the output or not, while a cause in the census is an assertion about the
11
11
  * world that an operator will act on.
12
12
  *
13
- * Everything here is pure — the platform and the probed display state are
13
+ * Everything here is pure. The platform and the probed display state are
14
14
  * injected, so unit tests need no mocking.
15
15
  */
16
16
  import type { DisplaySleepState } from './display-state.js';
17
17
  import type { HarnessCrashSignature } from './test-harness-signature.js';
18
18
  /**
19
- * Optional hint appended to the harness-crash message when a HEADED run on
19
+ * Optional hint appended to the harness-crash message when a headed run on
20
20
  * macOS died at the no-output timeout.
21
21
  *
22
- * When `displayState` names a MEASURED display state, the hint states it as
23
- * fact rather than as one of three possibilities — that is the point of
24
- * probing: an operator staring at a bare test failure should not have to
22
+ * When `displayState` names a measured display state, the hint states it as
23
+ * fact rather than as one of three possibilities, which is what probing is
24
+ * for: an operator staring at a bare test failure should not have to
25
25
  * rediscover that their machine dimmed. `caffeinate` is described accurately
26
- * (it prevents sleep; it cannot wake an already-sleeping display), so
26
+ * (it prevents sleep, and cannot wake an already-sleeping display), so
27
27
  * operators are not sent to a command that could not have helped them.
28
28
  *
29
- * Pure — the platform and the probed state are injected so unit tests need
29
+ * Pure. The platform and the probed state are injected so unit tests need
30
30
  * no mocking.
31
31
  *
32
32
  * @param signature - The recognized crash shape
@@ -1,9 +1,9 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
3
  * Operator-facing triage for the `timed out … with no output` / `Ran 0
4
- * checks` stall — the shape where the harness dies before ANY test output.
4
+ * checks` stall: the shape where the harness dies before any test output.
5
5
  *
6
- * Split out of `test-harness-crash.ts`, which CLASSIFIES runs; this module
6
+ * Split out of `test-harness-crash.ts`, which classifies runs. This module
7
7
  * only renders advice about one already-classified shape. Keeping the two
8
8
  * apart matters because the census below carries claims of unequal
9
9
  * evidential strength, and the rules for editing it are not the rules for
@@ -11,14 +11,14 @@
11
11
  * the output or not, while a cause in the census is an assertion about the
12
12
  * world that an operator will act on.
13
13
  *
14
- * Everything here is pure — the platform and the probed display state are
14
+ * Everything here is pure. The platform and the probed display state are
15
15
  * injected, so unit tests need no mocking.
16
16
  */
17
17
  /**
18
18
  * First step for the `timed out … with no output` / `Ran 0 checks`
19
- * signature, printed ABOVE the cause list. Running a known-good control
19
+ * signature, printed above the cause list. Running a known-good control
20
20
  * separates "this test" from "this build" and is the correct opening move
21
- * for EVERY cause below — it is not specific to any one of them, so
21
+ * for every cause below. It is not specific to any one of them, so
22
22
  * attaching it to a single entry made reaching that entry informationally
23
23
  * empty.
24
24
  */
@@ -26,23 +26,23 @@ const NO_OUTPUT_STALL_CONTROL_STEP = 'First, run a known-good control test. If t
26
26
  'under investigation, and the list below applies to the build or the host.';
27
27
  /**
28
28
  * Recorded causes of the `timed out … with no output` / `Ran 0 checks`
29
- * signature, each paired with the probe that DISCRIMINATES it from the
29
+ * signature, each paired with the probe that discriminates it from the
30
30
  * others. Printed verbatim under the hint.
31
31
  *
32
- * Evidence per entry is deliberately unequal, and the text says so:
32
+ * Evidence per entry is unequal, and the text says so:
33
33
  *
34
- * - (1) is MEASURED — `probeDisplaySleepState` reads the display's power
34
+ * - (1) is measured: `probeDisplaySleepState` reads the display's power
35
35
  * state, so the hint states it as fact rather than as a possibility.
36
36
  * - (2) is discriminated by `--headless`.
37
- * - (4) is MECHANICAL and was root-caused downstream: the harness serves
37
+ * - (4) is mechanical and was root-caused downstream: the harness serves
38
38
  * its manifest from `server.js` on 8888, and a survivor of an
39
39
  * interrupted run keeps the port. Its probe is exact, and the preflight
40
40
  * in `mochitest-server-port.ts` now refuses it before a run starts.
41
- * - (3) is now MECHANICAL and root-caused, replacing the correlation an
41
+ * - (3) is now mechanical and root-caused, replacing the correlation an
42
42
  * earlier revision recorded. A `chrome://` (or `resource://`) URL that
43
43
  * resolves to nothing reaches `CheckForBrokenChromeURL`
44
44
  * (netwerk/base/nsNetUtil.cpp), which outside automation only
45
- * `printf_stderr`s `Missing chrome or resource URL: <uri>` — but under
45
+ * `printf_stderr`s `Missing chrome or resource URL: <uri>`, but under
46
46
  * `xpc::IsInAutomation()` the same condition is
47
47
  * `MOZ_CRASH_UNSAFE_PRINTF("Missing chrome or resource URLs: %s")`. A
48
48
  * downstream reproduction symbolicated the faulting frame as
@@ -52,13 +52,13 @@ const NO_OUTPUT_STALL_CONTROL_STEP = 'First, run a known-good control test. If t
52
52
  * failed image load in Gecko fires `error` and does not gate the
53
53
  * document load event.
54
54
  *
55
- * Detection by log line is deliberately NOT specified for (3), and the
56
- * reason is the mechanism itself: in the reproduction the crash landed in a
57
- * CONTENT process (`plugin-container`, a child of the browser) with the
55
+ * Detection by log line is not specified for (3), because of the mechanism
56
+ * itself: in the reproduction the crash landed in a content
57
+ * process (`plugin-container`, a child of the browser) with the
58
58
  * crash reporter compiled out, so the harness log carried neither the crash
59
- * message nor a crash line — only the no-output timeout, `Ran 0 checks`,
59
+ * message nor a crash line, only the no-output timeout, `Ran 0 checks`,
60
60
  * and mochitest's "Can't trigger Breakpad, just killing process". Under
61
- * automation the message is in the process that DIED, not in the log, so
61
+ * automation the message is in the process that died, not in the log, so
62
62
  * the census points at the two artefacts that do carry it: the OS crash
63
63
  * report (whose faulting frame names `CheckForBrokenChromeURL`) and the
64
64
  * out-of-automation smoke probe (which prints the non-crashing spelling
@@ -90,17 +90,17 @@ const NO_OUTPUT_STALL_TRIAGE = [
90
90
  'reach a stall only on a host where the port could not be probed.',
91
91
  ];
92
92
  /**
93
- * Optional hint appended to the harness-crash message when a HEADED run on
93
+ * Optional hint appended to the harness-crash message when a headed run on
94
94
  * macOS died at the no-output timeout.
95
95
  *
96
- * When `displayState` names a MEASURED display state, the hint states it as
97
- * fact rather than as one of three possibilities — that is the point of
98
- * probing: an operator staring at a bare test failure should not have to
96
+ * When `displayState` names a measured display state, the hint states it as
97
+ * fact rather than as one of three possibilities, which is what probing is
98
+ * for: an operator staring at a bare test failure should not have to
99
99
  * rediscover that their machine dimmed. `caffeinate` is described accurately
100
- * (it prevents sleep; it cannot wake an already-sleeping display), so
100
+ * (it prevents sleep, and cannot wake an already-sleeping display), so
101
101
  * operators are not sent to a command that could not have helped them.
102
102
  *
103
- * Pure — the platform and the probed state are injected so unit tests need
103
+ * Pure. The platform and the probed state are injected so unit tests need
104
104
  * no mocking.
105
105
  *
106
106
  * @param signature - The recognized crash shape
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * True when `lines` contain a category header (single-line or multi-line
3
- * banner shape) whose name EQUALS `category`. Shared by the pre-add
3
+ * banner shape) whose name equals `category`. Shared by the pre-add
4
4
  * assertion, the banner creation path, and the section finder so all
5
5
  * agree on what "exists" means.
6
6
  */
@@ -15,11 +15,11 @@ export declare function categoryHeaderExists(lines: string[], category: string):
15
15
  * - Multi-line: `/* =====` opening, `Foo` on any of the next ~5 lines,
16
16
  * closing `*\/`.
17
17
  *
18
- * This helper exists as a pure inspector; it never throws on malformed
18
+ * This helper exists as a pure inspector. It never throws on malformed
19
19
  * headers and silently skips shapes it cannot parse.
20
20
  */
21
21
  /**
22
- * Category name declared by the banner STARTING at `index`, or `undefined`
22
+ * Category name declared by the banner starting at `index`, or `undefined`
23
23
  * when that line opens no banner.
24
24
  *
25
25
  * The single reader for both banner shapes, so the inventory walk, the
@@ -66,7 +66,7 @@ export interface TokenDeclarationLocation {
66
66
  /**
67
67
  * Finds an existing declaration of `tokenName` inside the base `:root`
68
68
  * block. Dark `@media` and `:root[variant]` companion blocks are
69
- * deliberately excluded — they mirror the base declaration, they do not
69
+ * excluded: they mirror the base declaration, they do not
70
70
  * own the token. Comment content never matches, and the name match is
71
71
  * exact (`--foo-bar` does not match `--x-foo-bar`).
72
72
  */
@@ -3,11 +3,12 @@
3
3
  * Category banner and token-declaration helpers for the tokens CSS file.
4
4
  * Split out of `token-manager.ts` to stay inside the per-file line budget.
5
5
  *
6
- * Banner matching is EXACT: the text between the `=` runs (single-line
6
+ * Banner matching is exact: the text between the `=` runs (single-line
7
7
  * shape) or on the block line (multi-line shape) must equal the category
8
- * after trimming. A substring match lets a TOC comment or a longer banner
9
- * (`Colors — Canvas` for `Colors`) satisfy the lookup, so `token add` writes
10
- * into the wrong section — or no-ops — with exit 0.
8
+ * after trimming. With a substring match, a TOC comment or a longer banner
9
+ * whose name merely starts with the category (a canvas colors banner
10
+ * satisfying a lookup for `Colors`) would also match, and `token add` would
11
+ * then write into the wrong section, or no-op, with exit 0.
11
12
  */
12
13
  import { join } from 'node:path';
13
14
  import { GeneralError } from '../errors/base.js';
@@ -23,7 +24,7 @@ function multiLineBlockNameMatches(blockLine, category) {
23
24
  * Body of the first `/* … *\/` comment on `line`, or `undefined` when the
24
25
  * line carries no closed block comment.
25
26
  *
26
- * Deliberately index arithmetic rather than a regex: every regex spelling of
27
+ * This uses index arithmetic rather than a regex: every regex spelling of
27
28
  * "banner comment" this module used to carry was super-linear on a line that
28
29
  * repeats the opening shape (CodeQL `js/polynomial-redos`), and `tokens.css`
29
30
  * is a file FireForge reads out of a consumer's engine tree, so a
@@ -39,7 +40,7 @@ function blockCommentBody(line) {
39
40
  return line.slice(open + 2, close);
40
41
  }
41
42
  /**
42
- * True when `line` carries a single-line banner comment — a closed block
43
+ * True when `line` carries a single-line banner comment: a closed block
43
44
  * comment whose body both opens and closes with `=`. Recognises the decorative
44
45
  * all-`=` rule as well as a named `= Foo =` banner, which is what the section
45
46
  * scan wants: either shape ends the preceding section.
@@ -51,7 +52,7 @@ function isSingleLineBannerLine(line) {
51
52
  /**
52
53
  * Name declared by a single-line banner (`/* = Foo = *\/` → `Foo`), or
53
54
  * `undefined` when the line is not a named banner. The `=` runs on both sides
54
- * are required; a decorative all-`=` rule carries no name and yields
55
+ * are required. A decorative all-`=` rule carries no name and yields
55
56
  * `undefined`.
56
57
  */
57
58
  function singleLineBannerName(line) {
@@ -79,7 +80,7 @@ function singleLineBannerName(line) {
79
80
  }
80
81
  /**
81
82
  * True when `lines` contain a category header (single-line or multi-line
82
- * banner shape) whose name EQUALS `category`. Shared by the pre-add
83
+ * banner shape) whose name equals `category`. Shared by the pre-add
83
84
  * assertion, the banner creation path, and the section finder so all
84
85
  * agree on what "exists" means.
85
86
  */
@@ -112,11 +113,11 @@ export function categoryHeaderExists(lines, category) {
112
113
  * - Multi-line: `/* =====` opening, `Foo` on any of the next ~5 lines,
113
114
  * closing `*\/`.
114
115
  *
115
- * This helper exists as a pure inspector; it never throws on malformed
116
+ * This helper exists as a pure inspector. It never throws on malformed
116
117
  * headers and silently skips shapes it cannot parse.
117
118
  */
118
119
  /**
119
- * Category name declared by the banner STARTING at `index`, or `undefined`
120
+ * Category name declared by the banner starting at `index`, or `undefined`
120
121
  * when that line opens no banner.
121
122
  *
122
123
  * The single reader for both banner shapes, so the inventory walk, the
@@ -211,7 +212,7 @@ export function findCategorySection(lines, category, tokensCssPath) {
211
212
  categoryLine = i;
212
213
  break;
213
214
  }
214
- // Check multi-line format: line opens a block comment with === but does NOT close it
215
+ // Check multi-line format: line opens a block comment with === but does not close it
215
216
  if (/^\s*\/\*\s*=+/.test(line) && !/\*\//.test(line)) {
216
217
  for (let j = i + 1; j < Math.min(i + 6, lines.length); j++) {
217
218
  const blockLine = lines[j] ?? '';
@@ -278,7 +279,7 @@ export function maskCommentLines(lines) {
278
279
  /**
279
280
  * Finds an existing declaration of `tokenName` inside the base `:root`
280
281
  * block. Dark `@media` and `:root[variant]` companion blocks are
281
- * deliberately excluded — they mirror the base declaration, they do not
282
+ * excluded: they mirror the base declaration, they do not
282
283
  * own the token. Comment content never matches, and the name match is
283
284
  * exact (`--foo-bar` does not match `--x-foo-bar`).
284
285
  */
@@ -8,16 +8,15 @@ import { loadFurnaceConfig } from './furnace-config.js';
8
8
  /**
9
9
  * Default platform prefixes treated as allowlisted upstream vars. Any
10
10
  * `var(--moz-*)` usage in a fork's CSS is a Firefox platform variable the
11
- * fork does not own and must not count as an unknown — otherwise a
11
+ * fork does not own and must not count as an unknown. Otherwise a
12
12
  * `furnace override moz-button -t css-only` plus one fork token reports 1%
13
13
  * coverage, because the ~84 upstream `--moz-*` vars in the copied baseline
14
14
  * all count against it.
15
15
  *
16
16
  * Forks that want to opt out can override this via
17
- * `furnace.json.platformPrefixes = []`; forks that want more can extend it
18
- * (e.g. `['--moz-', '--in-content-']`). The config is additive — nothing is
19
- * removed from the defaults unless the operator explicitly writes a shorter
20
- * list.
17
+ * `furnace.json.platformPrefixes = []`. Forks that want more can extend it
18
+ * (e.g. `['--moz-', '--in-content-']`). The config is additive: nothing is
19
+ * removed from the defaults unless the operator writes a shorter list.
21
20
  */
22
21
  const DEFAULT_PLATFORM_PREFIXES = ['--moz-'];
23
22
  /**
@@ -2,8 +2,8 @@
2
2
  * Dark-mode insertion helpers for the tokens CSS scaffold.
3
3
  *
4
4
  * `fireforge token add --mode override --dark-value ...` must land the dark
5
- * declaration INSIDE the nested `:root { }` of the
6
- * `@media (prefers-color-scheme: dark)` block; landing after that block has
5
+ * declaration inside the nested `:root { }` of the
6
+ * `@media (prefers-color-scheme: dark)` block. Landing after that block has
7
7
  * closed produces a declaration outside any rule. The helpers here scan the
8
8
  * comment-stripped source lines to find the *inner* `:root` block's closing
9
9
  * `}` and return a line index the caller can splice into. When the inner
@@ -19,28 +19,28 @@
19
19
  * into the original array at the same index.
20
20
  *
21
21
  * We blank the comment body with spaces (rather than removing it) so
22
- * any downstream consumer that indexes by column — or derives an
23
- * insertion index as a line number in the original array — still
22
+ * any downstream consumer that indexes by column (or derives an
23
+ * insertion index as a line number in the original array) still
24
24
  * agrees on line numbers.
25
25
  */
26
26
  export declare function stripBlockCommentsInLines(lines: string[]): string[];
27
27
  /**
28
28
  * Finds the closing `}` line of the nested `:root { ... }` block inside
29
29
  * a `@media (prefers-color-scheme: dark)` block. Returns `-1` when the
30
- * media block exists but the nested `:root` block is missing; returns
30
+ * media block exists but the nested `:root` block is missing. Returns
31
31
  * `null` when the `@media` block itself is absent.
32
32
  *
33
33
  * Runs the scan over a comment-stripped mirror of the source lines so
34
34
  * braces inside CSS comments (`/* before { after *\/`) do not offset
35
- * the depth counter. The scan is deliberately line-indexed so callers
35
+ * the depth counter. The scan is line-indexed so callers
36
36
  * can splice into the original `lines` array at the returned index.
37
37
  */
38
38
  export declare function findDarkRootInsertionIndex(lines: string[]): number | null;
39
39
  /**
40
40
  * Depth-counts braces from `startLine` (whose lines must already have
41
41
  * block comments stripped), returning the index of the line on which the
42
- * block opened there returns to its entry depth — i.e. the line carrying
43
- * the block's closing `}` — or -1 when the block never closes. The first
42
+ * block opened there returns to its entry depth, i.e. the line carrying
43
+ * the block's closing `}`, or -1 when the block never closes. The first
44
44
  * `{` encountered sets the entry depth, so the scan may start on the
45
45
  * selector/at-rule line itself rather than on the opener.
46
46
  */
@@ -48,7 +48,7 @@ export declare function findBlockCloseIndex(stripped: string[], startLine: numbe
48
48
  /**
49
49
  * Finds the closing `}` of the outermost
50
50
  * `@media (prefers-color-scheme: dark)` block. Used as the fallback
51
- * landing site when the scaffold has no nested `:root { }` — the
51
+ * landing site when the scaffold has no nested `:root { }`. The
52
52
  * insertion helper uses this index to splice a brand-new `:root`
53
53
  * wrapper containing the dark declaration, rather than dropping the
54
54
  * value.