@hominis/fireforge 0.46.0 → 0.46.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/CHANGELOG.md +381 -498
  2. package/dist/bin/fireforge.d.ts +1 -1
  3. package/dist/bin/fireforge.js +17 -17
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/cli-usage-error.d.ts +9 -9
  6. package/dist/src/cli-usage-error.js +12 -12
  7. package/dist/src/cli.d.ts +3 -2
  8. package/dist/src/cli.js +29 -28
  9. package/dist/src/commands/bootstrap-checks.js +2 -1
  10. package/dist/src/commands/bootstrap.js +2 -2
  11. package/dist/src/commands/build.js +12 -11
  12. package/dist/src/commands/config.js +9 -9
  13. package/dist/src/commands/destructive-decision.d.ts +4 -4
  14. package/dist/src/commands/destructive-decision.js +4 -4
  15. package/dist/src/commands/discard.js +5 -5
  16. package/dist/src/commands/doctor-check-core.d.ts +4 -4
  17. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  18. package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
  19. package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
  20. package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
  21. package/dist/src/commands/doctor-furnace-jar.js +1 -1
  22. package/dist/src/commands/doctor-furnace.js +22 -22
  23. package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -11
  24. package/dist/src/commands/doctor-orphaned-harness.js +10 -11
  25. package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
  26. package/dist/src/commands/doctor-patch-manifest.js +7 -6
  27. package/dist/src/commands/doctor-post-rebase-audit.js +2 -2
  28. package/dist/src/commands/doctor-source-pin.d.ts +12 -12
  29. package/dist/src/commands/doctor-source-pin.js +14 -14
  30. package/dist/src/commands/doctor-working-tree.d.ts +3 -3
  31. package/dist/src/commands/doctor-working-tree.js +3 -3
  32. package/dist/src/commands/doctor.d.ts +2 -2
  33. package/dist/src/commands/doctor.js +9 -9
  34. package/dist/src/commands/download.js +15 -13
  35. package/dist/src/commands/export-all.js +8 -8
  36. package/dist/src/commands/export-flow.d.ts +5 -5
  37. package/dist/src/commands/export-flow.js +14 -14
  38. package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
  39. package/dist/src/commands/export-placement-conflicts.js +9 -9
  40. package/dist/src/commands/export-placement-gate.d.ts +2 -2
  41. package/dist/src/commands/export-placement-gate.js +5 -5
  42. package/dist/src/commands/export-placement-policy.d.ts +1 -1
  43. package/dist/src/commands/export-placement-policy.js +1 -1
  44. package/dist/src/commands/export-shared.d.ts +10 -10
  45. package/dist/src/commands/export-shared.js +13 -13
  46. package/dist/src/commands/export.js +4 -4
  47. package/dist/src/commands/furnace/apply.js +16 -16
  48. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
  49. package/dist/src/commands/furnace/chrome-doc-remove.js +1 -1
  50. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
  51. package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
  52. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
  53. package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
  54. package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
  55. package/dist/src/commands/furnace/chrome-doc.js +18 -18
  56. package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
  57. package/dist/src/commands/furnace/create-browser-test.js +4 -4
  58. package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
  59. package/dist/src/commands/furnace/create-dry-run.js +4 -4
  60. package/dist/src/commands/furnace/create-features.d.ts +2 -2
  61. package/dist/src/commands/furnace/create-features.js +2 -2
  62. package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
  63. package/dist/src/commands/furnace/create-mochikit.js +7 -7
  64. package/dist/src/commands/furnace/create-templates.d.ts +14 -14
  65. package/dist/src/commands/furnace/create-templates.js +18 -18
  66. package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
  67. package/dist/src/commands/furnace/create-xpcshell.js +8 -8
  68. package/dist/src/commands/furnace/create.d.ts +1 -1
  69. package/dist/src/commands/furnace/create.js +10 -10
  70. package/dist/src/commands/furnace/deploy.js +4 -4
  71. package/dist/src/commands/furnace/diff.js +7 -7
  72. package/dist/src/commands/furnace/index.js +1 -1
  73. package/dist/src/commands/furnace/init.js +15 -15
  74. package/dist/src/commands/furnace/list.js +2 -2
  75. package/dist/src/commands/furnace/override.d.ts +1 -1
  76. package/dist/src/commands/furnace/override.js +15 -15
  77. package/dist/src/commands/furnace/preview.js +17 -17
  78. package/dist/src/commands/furnace/refresh.js +6 -6
  79. package/dist/src/commands/furnace/remove-mutations.d.ts +3 -3
  80. package/dist/src/commands/furnace/remove-mutations.js +19 -18
  81. package/dist/src/commands/furnace/remove-state.d.ts +1 -1
  82. package/dist/src/commands/furnace/remove-state.js +1 -1
  83. package/dist/src/commands/furnace/remove.js +2 -2
  84. package/dist/src/commands/furnace/rename-browser-test.js +9 -8
  85. package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
  86. package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
  87. package/dist/src/commands/furnace/rename.js +9 -9
  88. package/dist/src/commands/furnace/scan.js +3 -3
  89. package/dist/src/commands/furnace/status.js +7 -7
  90. package/dist/src/commands/furnace/sync.js +6 -6
  91. package/dist/src/commands/furnace/test-file-name.d.ts +2 -2
  92. package/dist/src/commands/furnace/test-file-name.js +2 -2
  93. package/dist/src/commands/furnace/validate.js +11 -12
  94. package/dist/src/commands/import.js +20 -20
  95. package/dist/src/commands/lint-per-patch.js +8 -8
  96. package/dist/src/commands/lint-per-run-checkjs.d.ts +12 -13
  97. package/dist/src/commands/lint-per-run-checkjs.js +14 -15
  98. package/dist/src/commands/lint-report.d.ts +3 -3
  99. package/dist/src/commands/lint-report.js +4 -4
  100. package/dist/src/commands/lint.d.ts +3 -3
  101. package/dist/src/commands/lint.js +35 -35
  102. package/dist/src/commands/manifest.d.ts +4 -4
  103. package/dist/src/commands/package.js +2 -2
  104. package/dist/src/commands/patch/compact.d.ts +2 -2
  105. package/dist/src/commands/patch/compact.js +8 -8
  106. package/dist/src/commands/patch/delete.d.ts +1 -1
  107. package/dist/src/commands/patch/delete.js +8 -8
  108. package/dist/src/commands/patch/lint-ignore.d.ts +3 -4
  109. package/dist/src/commands/patch/lint-ignore.js +14 -15
  110. package/dist/src/commands/patch/move-files-create.d.ts +2 -2
  111. package/dist/src/commands/patch/move-files-create.js +5 -5
  112. package/dist/src/commands/patch/move-files-into.d.ts +2 -2
  113. package/dist/src/commands/patch/move-files-into.js +3 -3
  114. package/dist/src/commands/patch/move-files.js +1 -1
  115. package/dist/src/commands/patch/patch-context.d.ts +1 -1
  116. package/dist/src/commands/patch/rename.d.ts +4 -4
  117. package/dist/src/commands/patch/rename.js +8 -8
  118. package/dist/src/commands/patch/reorder.js +10 -10
  119. package/dist/src/commands/patch/split-plan.d.ts +3 -3
  120. package/dist/src/commands/patch/split-plan.js +6 -5
  121. package/dist/src/commands/patch/split.d.ts +2 -2
  122. package/dist/src/commands/patch/split.js +5 -5
  123. package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
  124. package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
  125. package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
  126. package/dist/src/commands/patch/staged-dependency.js +6 -6
  127. package/dist/src/commands/patch/tier.d.ts +2 -2
  128. package/dist/src/commands/patch/tier.js +5 -5
  129. package/dist/src/commands/patch-rename-map.d.ts +1 -1
  130. package/dist/src/commands/patch-rename-map.js +1 -1
  131. package/dist/src/commands/pending-resolution.d.ts +5 -5
  132. package/dist/src/commands/pending-resolution.js +5 -5
  133. package/dist/src/commands/re-export-adjacent.d.ts +3 -3
  134. package/dist/src/commands/re-export-adjacent.js +8 -8
  135. package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
  136. package/dist/src/commands/re-export-bulk-scan.js +17 -17
  137. package/dist/src/commands/re-export-drift.d.ts +10 -10
  138. package/dist/src/commands/re-export-drift.js +29 -29
  139. package/dist/src/commands/re-export-files.js +14 -15
  140. package/dist/src/commands/re-export-lint.d.ts +26 -26
  141. package/dist/src/commands/re-export-lint.js +27 -27
  142. package/dist/src/commands/re-export-options.d.ts +1 -1
  143. package/dist/src/commands/re-export-options.js +1 -1
  144. package/dist/src/commands/re-export-register.d.ts +1 -1
  145. package/dist/src/commands/re-export-register.js +1 -1
  146. package/dist/src/commands/re-export-scan.d.ts +1 -1
  147. package/dist/src/commands/re-export-scan.js +7 -7
  148. package/dist/src/commands/re-export-single.d.ts +1 -1
  149. package/dist/src/commands/re-export-single.js +20 -20
  150. package/dist/src/commands/re-export.js +7 -6
  151. package/dist/src/commands/rebase/abort.js +6 -6
  152. package/dist/src/commands/rebase/continue.js +8 -7
  153. package/dist/src/commands/rebase/index.d.ts +1 -1
  154. package/dist/src/commands/rebase/index.js +3 -3
  155. package/dist/src/commands/rebase/patch-loop.js +18 -17
  156. package/dist/src/commands/register.js +5 -5
  157. package/dist/src/commands/reset.js +1 -1
  158. package/dist/src/commands/resolve.d.ts +2 -2
  159. package/dist/src/commands/resolve.js +3 -3
  160. package/dist/src/commands/run.js +26 -26
  161. package/dist/src/commands/setup-support.js +4 -4
  162. package/dist/src/commands/setup.js +1 -1
  163. package/dist/src/commands/source.js +1 -1
  164. package/dist/src/commands/status-check.d.ts +3 -3
  165. package/dist/src/commands/status-check.js +4 -4
  166. package/dist/src/commands/status-json.d.ts +14 -13
  167. package/dist/src/commands/status-json.js +9 -8
  168. package/dist/src/commands/status-output.d.ts +3 -3
  169. package/dist/src/commands/status-output.js +3 -3
  170. package/dist/src/commands/status-ownership.d.ts +3 -3
  171. package/dist/src/commands/status-ownership.js +3 -3
  172. package/dist/src/commands/status.js +22 -22
  173. package/dist/src/commands/test-build-phase.d.ts +1 -1
  174. package/dist/src/commands/test-build-phase.js +17 -17
  175. package/dist/src/commands/test-diagnose.d.ts +1 -1
  176. package/dist/src/commands/test-diagnose.js +20 -20
  177. package/dist/src/commands/test-modes.d.ts +2 -2
  178. package/dist/src/commands/test-modes.js +4 -4
  179. package/dist/src/commands/test-run.d.ts +11 -11
  180. package/dist/src/commands/test-run.js +15 -15
  181. package/dist/src/commands/test-stale-gate.d.ts +12 -12
  182. package/dist/src/commands/test-stale-gate.js +13 -13
  183. package/dist/src/commands/test-verdict.d.ts +6 -6
  184. package/dist/src/commands/test-verdict.js +11 -11
  185. package/dist/src/commands/test.d.ts +3 -3
  186. package/dist/src/commands/test.js +36 -36
  187. package/dist/src/commands/token-coverage.js +3 -3
  188. package/dist/src/commands/token-list.js +5 -5
  189. package/dist/src/commands/token.js +9 -9
  190. package/dist/src/commands/tree.js +19 -19
  191. package/dist/src/commands/typecheck.d.ts +6 -6
  192. package/dist/src/commands/typecheck.js +7 -7
  193. package/dist/src/commands/verify.d.ts +3 -3
  194. package/dist/src/commands/verify.js +10 -10
  195. package/dist/src/commands/watch.js +11 -11
  196. package/dist/src/commands/wire.js +13 -13
  197. package/dist/src/core/ast-utils.d.ts +7 -7
  198. package/dist/src/core/ast-utils.js +8 -8
  199. package/dist/src/core/branding.d.ts +5 -5
  200. package/dist/src/core/branding.js +3 -3
  201. package/dist/src/core/browser-wire.d.ts +1 -1
  202. package/dist/src/core/browser-wire.js +4 -4
  203. package/dist/src/core/build-audit-platform.d.ts +6 -6
  204. package/dist/src/core/build-audit-platform.js +26 -26
  205. package/dist/src/core/build-audit-registration.d.ts +5 -5
  206. package/dist/src/core/build-audit-registration.js +7 -7
  207. package/dist/src/core/build-audit-resolve.d.ts +5 -5
  208. package/dist/src/core/build-audit-resolve.js +6 -6
  209. package/dist/src/core/build-audit-skip.d.ts +8 -8
  210. package/dist/src/core/build-audit-skip.js +12 -12
  211. package/dist/src/core/build-audit-transforms.d.ts +2 -2
  212. package/dist/src/core/build-audit-transforms.js +3 -3
  213. package/dist/src/core/build-audit.d.ts +8 -8
  214. package/dist/src/core/build-audit.js +39 -37
  215. package/dist/src/core/build-baseline-types.d.ts +19 -18
  216. package/dist/src/core/build-baseline-types.js +1 -1
  217. package/dist/src/core/build-baseline.d.ts +8 -8
  218. package/dist/src/core/build-baseline.js +14 -14
  219. package/dist/src/core/build-jar-escalation.d.ts +8 -8
  220. package/dist/src/core/build-jar-escalation.js +15 -15
  221. package/dist/src/core/build-overwrite-guard.d.ts +4 -4
  222. package/dist/src/core/build-overwrite-guard.js +13 -13
  223. package/dist/src/core/build-prepare.d.ts +4 -4
  224. package/dist/src/core/build-prepare.js +16 -15
  225. package/dist/src/core/config-mutate.js +4 -4
  226. package/dist/src/core/config-state.js +2 -2
  227. package/dist/src/core/config-validate-build-audit.js +3 -3
  228. package/dist/src/core/config-validate-file-size.d.ts +1 -1
  229. package/dist/src/core/config-validate-file-size.js +2 -2
  230. package/dist/src/core/config-validate.js +8 -9
  231. package/dist/src/core/config.d.ts +10 -10
  232. package/dist/src/core/config.js +10 -10
  233. package/dist/src/core/coverage-extend.d.ts +16 -16
  234. package/dist/src/core/coverage-extend.js +16 -16
  235. package/dist/src/core/destructive.d.ts +14 -14
  236. package/dist/src/core/destructive.js +9 -9
  237. package/dist/src/core/diff-hunks.d.ts +2 -2
  238. package/dist/src/core/diff-hunks.js +7 -7
  239. package/dist/src/core/discard-baseline.d.ts +10 -10
  240. package/dist/src/core/discard-baseline.js +15 -16
  241. package/dist/src/core/display-state.d.ts +11 -11
  242. package/dist/src/core/display-state.js +12 -12
  243. package/dist/src/core/engine-changes.d.ts +2 -2
  244. package/dist/src/core/engine-changes.js +2 -2
  245. package/dist/src/core/engine-precondition.d.ts +4 -4
  246. package/dist/src/core/engine-precondition.js +2 -2
  247. package/dist/src/core/engine-session-lock.d.ts +18 -18
  248. package/dist/src/core/engine-session-lock.js +37 -37
  249. package/dist/src/core/export-moved-code-shape.d.ts +7 -7
  250. package/dist/src/core/export-moved-code-shape.js +8 -8
  251. package/dist/src/core/file-lock-owner.d.ts +11 -11
  252. package/dist/src/core/file-lock-owner.js +18 -18
  253. package/dist/src/core/file-lock.d.ts +12 -12
  254. package/dist/src/core/file-lock.js +52 -39
  255. package/dist/src/core/firefox-cache.d.ts +1 -1
  256. package/dist/src/core/firefox-cache.js +10 -10
  257. package/dist/src/core/firefox-download.d.ts +3 -3
  258. package/dist/src/core/firefox-download.js +6 -6
  259. package/dist/src/core/firefox-extract.d.ts +2 -2
  260. package/dist/src/core/firefox-extract.js +13 -13
  261. package/dist/src/core/firefox.d.ts +5 -5
  262. package/dist/src/core/firefox.js +8 -8
  263. package/dist/src/core/furnace-apply-dry-run.js +1 -1
  264. package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
  265. package/dist/src/core/furnace-apply-ftl.js +8 -8
  266. package/dist/src/core/furnace-apply-helpers.d.ts +9 -9
  267. package/dist/src/core/furnace-apply-helpers.js +21 -21
  268. package/dist/src/core/furnace-apply-output.js +1 -1
  269. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
  270. package/dist/src/core/furnace-apply-overwrite-warn.js +9 -9
  271. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
  272. package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
  273. package/dist/src/core/furnace-apply.d.ts +3 -3
  274. package/dist/src/core/furnace-apply.js +22 -21
  275. package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
  276. package/dist/src/core/furnace-checksum-utils.js +5 -5
  277. package/dist/src/core/furnace-config-custom.d.ts +1 -1
  278. package/dist/src/core/furnace-config-custom.js +2 -2
  279. package/dist/src/core/furnace-config-order.js +1 -1
  280. package/dist/src/core/furnace-config-tokens.d.ts +3 -3
  281. package/dist/src/core/furnace-config-tokens.js +3 -3
  282. package/dist/src/core/furnace-config-validate.js +2 -2
  283. package/dist/src/core/furnace-config.d.ts +4 -4
  284. package/dist/src/core/furnace-config.js +18 -18
  285. package/dist/src/core/furnace-constants.d.ts +6 -6
  286. package/dist/src/core/furnace-constants.js +6 -6
  287. package/dist/src/core/furnace-css-fragments.d.ts +6 -6
  288. package/dist/src/core/furnace-css-fragments.js +11 -11
  289. package/dist/src/core/furnace-dir-entry.d.ts +1 -1
  290. package/dist/src/core/furnace-dir-entry.js +1 -1
  291. package/dist/src/core/furnace-jsconfig.d.ts +7 -7
  292. package/dist/src/core/furnace-jsconfig.js +22 -20
  293. package/dist/src/core/furnace-operation.d.ts +21 -20
  294. package/dist/src/core/furnace-operation.js +36 -34
  295. package/dist/src/core/furnace-precondition.d.ts +10 -10
  296. package/dist/src/core/furnace-precondition.js +8 -8
  297. package/dist/src/core/furnace-refresh.js +2 -2
  298. package/dist/src/core/furnace-registration-ast.d.ts +2 -2
  299. package/dist/src/core/furnace-registration-ast.js +9 -9
  300. package/dist/src/core/furnace-registration-remove.d.ts +4 -4
  301. package/dist/src/core/furnace-registration-remove.js +6 -6
  302. package/dist/src/core/furnace-registration-validate.d.ts +2 -2
  303. package/dist/src/core/furnace-registration-validate.js +2 -2
  304. package/dist/src/core/furnace-registration.d.ts +5 -5
  305. package/dist/src/core/furnace-registration.js +7 -7
  306. package/dist/src/core/furnace-rollback.d.ts +1 -1
  307. package/dist/src/core/furnace-rollback.js +5 -5
  308. package/dist/src/core/furnace-stale-export.d.ts +17 -16
  309. package/dist/src/core/furnace-stale-export.js +16 -15
  310. package/dist/src/core/furnace-staleness.d.ts +2 -2
  311. package/dist/src/core/furnace-staleness.js +2 -2
  312. package/dist/src/core/furnace-state-persist.d.ts +10 -10
  313. package/dist/src/core/furnace-state-persist.js +10 -10
  314. package/dist/src/core/furnace-step-errors.d.ts +6 -6
  315. package/dist/src/core/furnace-step-errors.js +6 -6
  316. package/dist/src/core/furnace-validate-accessibility.js +14 -14
  317. package/dist/src/core/furnace-validate-compatibility.js +9 -9
  318. package/dist/src/core/furnace-validate-registration.d.ts +2 -2
  319. package/dist/src/core/furnace-validate-registration.js +13 -13
  320. package/dist/src/core/furnace-validate-structure.d.ts +1 -1
  321. package/dist/src/core/furnace-validate-structure.js +4 -4
  322. package/dist/src/core/furnace-validate.js +9 -9
  323. package/dist/src/core/furnace-version-drift.d.ts +5 -5
  324. package/dist/src/core/furnace-version-drift.js +5 -5
  325. package/dist/src/core/git-base.d.ts +4 -4
  326. package/dist/src/core/git-base.js +9 -9
  327. package/dist/src/core/git-diff-new-file.d.ts +4 -4
  328. package/dist/src/core/git-diff-new-file.js +8 -8
  329. package/dist/src/core/git-diff.d.ts +4 -4
  330. package/dist/src/core/git-diff.js +35 -34
  331. package/dist/src/core/git-file-ops.d.ts +6 -6
  332. package/dist/src/core/git-file-ops.js +7 -7
  333. package/dist/src/core/git-readonly-index.d.ts +12 -12
  334. package/dist/src/core/git-readonly-index.js +12 -12
  335. package/dist/src/core/git-status.d.ts +4 -4
  336. package/dist/src/core/git-status.js +4 -4
  337. package/dist/src/core/git.d.ts +3 -3
  338. package/dist/src/core/git.js +14 -14
  339. package/dist/src/core/harness-orphans.d.ts +17 -17
  340. package/dist/src/core/harness-orphans.js +20 -20
  341. package/dist/src/core/history-log.d.ts +3 -3
  342. package/dist/src/core/history-log.js +3 -3
  343. package/dist/src/core/license-headers.d.ts +19 -18
  344. package/dist/src/core/license-headers.js +29 -28
  345. package/dist/src/core/mach-build-artifacts.d.ts +21 -21
  346. package/dist/src/core/mach-build-artifacts.js +23 -23
  347. package/dist/src/core/mach-error-hints.d.ts +5 -5
  348. package/dist/src/core/mach-error-hints.js +13 -13
  349. package/dist/src/core/mach-known-noise-filter.d.ts +41 -38
  350. package/dist/src/core/mach-known-noise-filter.js +53 -50
  351. package/dist/src/core/mach-mozconfig.d.ts +6 -6
  352. package/dist/src/core/mach-mozconfig.js +15 -15
  353. package/dist/src/core/mach-python.d.ts +2 -1
  354. package/dist/src/core/mach-python.js +4 -3
  355. package/dist/src/core/mach-resource-shim.d.ts +12 -12
  356. package/dist/src/core/mach-resource-shim.js +20 -20
  357. package/dist/src/core/mach.d.ts +23 -23
  358. package/dist/src/core/mach.js +36 -36
  359. package/dist/src/core/marionette-port.d.ts +15 -13
  360. package/dist/src/core/marionette-port.js +34 -31
  361. package/dist/src/core/marionette-preflight.d.ts +6 -6
  362. package/dist/src/core/marionette-preflight.js +23 -23
  363. package/dist/src/core/markdown-table.d.ts +9 -9
  364. package/dist/src/core/markdown-table.js +14 -14
  365. package/dist/src/core/mochitest-server-port.d.ts +8 -8
  366. package/dist/src/core/mochitest-server-port.js +14 -14
  367. package/dist/src/core/module-resolution-preflight.d.ts +8 -8
  368. package/dist/src/core/module-resolution-preflight.js +11 -11
  369. package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
  370. package/dist/src/core/moz-manifest-helpers.js +7 -7
  371. package/dist/src/core/moz-manifest-register.d.ts +1 -1
  372. package/dist/src/core/moz-manifest-register.js +2 -2
  373. package/dist/src/core/moz-manifest-rules.js +11 -11
  374. package/dist/src/core/moz-manifest-tokenizers.js +1 -1
  375. package/dist/src/core/ownership-table.d.ts +5 -5
  376. package/dist/src/core/ownership-table.js +7 -7
  377. package/dist/src/core/parser-fallback.d.ts +3 -3
  378. package/dist/src/core/parser-fallback.js +3 -3
  379. package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
  380. package/dist/src/core/patch-apply-fuzz.js +9 -9
  381. package/dist/src/core/patch-apply.d.ts +9 -9
  382. package/dist/src/core/patch-apply.js +30 -30
  383. package/dist/src/core/patch-export-update.d.ts +4 -4
  384. package/dist/src/core/patch-export-update.js +3 -3
  385. package/dist/src/core/patch-export.d.ts +10 -10
  386. package/dist/src/core/patch-export.js +13 -13
  387. package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
  388. package/dist/src/core/patch-identifier-suggest.js +4 -4
  389. package/dist/src/core/patch-lint-binary.d.ts +7 -7
  390. package/dist/src/core/patch-lint-cache.d.ts +2 -2
  391. package/dist/src/core/patch-lint-cache.js +13 -13
  392. package/dist/src/core/patch-lint-checkjs.d.ts +26 -26
  393. package/dist/src/core/patch-lint-checkjs.js +42 -41
  394. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
  395. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
  396. package/dist/src/core/patch-lint-creators.d.ts +3 -3
  397. package/dist/src/core/patch-lint-creators.js +3 -3
  398. package/dist/src/core/patch-lint-cross.d.ts +13 -13
  399. package/dist/src/core/patch-lint-cross.js +21 -21
  400. package/dist/src/core/patch-lint-css.d.ts +1 -1
  401. package/dist/src/core/patch-lint-css.js +5 -5
  402. package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
  403. package/dist/src/core/patch-lint-diff-tag.js +5 -5
  404. package/dist/src/core/patch-lint-diff.d.ts +4 -4
  405. package/dist/src/core/patch-lint-diff.js +4 -4
  406. package/dist/src/core/patch-lint-file-size.d.ts +3 -3
  407. package/dist/src/core/patch-lint-file-size.js +3 -3
  408. package/dist/src/core/patch-lint-forward-registration.d.ts +4 -4
  409. package/dist/src/core/patch-lint-forward-registration.js +12 -12
  410. package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
  411. package/dist/src/core/patch-lint-jsdoc.js +11 -11
  412. package/dist/src/core/patch-lint-module-registration.d.ts +1 -1
  413. package/dist/src/core/patch-lint-module-registration.js +1 -1
  414. package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
  415. package/dist/src/core/patch-lint-mozbuild.js +10 -10
  416. package/dist/src/core/patch-lint-observer.d.ts +3 -3
  417. package/dist/src/core/patch-lint-observer.js +7 -7
  418. package/dist/src/core/patch-lint-ownership.d.ts +6 -6
  419. package/dist/src/core/patch-lint-ownership.js +6 -6
  420. package/dist/src/core/patch-lint-prettier.d.ts +6 -6
  421. package/dist/src/core/patch-lint-prettier.js +6 -6
  422. package/dist/src/core/patch-lint-queue-types.d.ts +1 -1
  423. package/dist/src/core/patch-lint-queue-types.js +1 -1
  424. package/dist/src/core/patch-lint-staged-registration.d.ts +2 -2
  425. package/dist/src/core/patch-lint-staged-registration.js +6 -6
  426. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
  427. package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
  428. package/dist/src/core/patch-lint.d.ts +27 -26
  429. package/dist/src/core/patch-lint.js +48 -46
  430. package/dist/src/core/patch-lock.d.ts +1 -1
  431. package/dist/src/core/patch-lock.js +8 -8
  432. package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
  433. package/dist/src/core/patch-manifest-consistency.js +16 -17
  434. package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
  435. package/dist/src/core/patch-manifest-files-affected.js +3 -3
  436. package/dist/src/core/patch-manifest-io.d.ts +14 -14
  437. package/dist/src/core/patch-manifest-io.js +27 -27
  438. package/dist/src/core/patch-manifest-query.d.ts +1 -1
  439. package/dist/src/core/patch-manifest-query.js +4 -4
  440. package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
  441. package/dist/src/core/patch-manifest-resolve.js +7 -7
  442. package/dist/src/core/patch-manifest-validate.js +3 -3
  443. package/dist/src/core/patch-manifest.d.ts +2 -2
  444. package/dist/src/core/patch-manifest.js +2 -2
  445. package/dist/src/core/patch-parse.d.ts +14 -14
  446. package/dist/src/core/patch-parse.js +16 -16
  447. package/dist/src/core/patch-registration-refs.d.ts +4 -4
  448. package/dist/src/core/patch-registration-refs.js +7 -7
  449. package/dist/src/core/patch-transform.d.ts +8 -8
  450. package/dist/src/core/patch-transform.js +13 -13
  451. package/dist/src/core/process-cpu-time.d.ts +1 -1
  452. package/dist/src/core/process-cpu-time.js +5 -5
  453. package/dist/src/core/rebase-session.d.ts +7 -7
  454. package/dist/src/core/rebase-session.js +8 -8
  455. package/dist/src/core/register-result.d.ts +1 -1
  456. package/dist/src/core/register-result.js +1 -1
  457. package/dist/src/core/register-scaffold.d.ts +2 -2
  458. package/dist/src/core/register-scaffold.js +3 -3
  459. package/dist/src/core/register-shared-css.d.ts +3 -3
  460. package/dist/src/core/register-shared-css.js +4 -4
  461. package/dist/src/core/register-xpcshell-test.d.ts +2 -2
  462. package/dist/src/core/register-xpcshell-test.js +2 -2
  463. package/dist/src/core/run-log-redact.d.ts +12 -12
  464. package/dist/src/core/run-log-redact.js +16 -16
  465. package/dist/src/core/run-log.d.ts +9 -9
  466. package/dist/src/core/run-log.js +14 -14
  467. package/dist/src/core/shared-ftl.d.ts +2 -2
  468. package/dist/src/core/shared-ftl.js +6 -6
  469. package/dist/src/core/signal-critical.d.ts +2 -2
  470. package/dist/src/core/signal-critical.js +2 -2
  471. package/dist/src/core/smoke-patterns.d.ts +5 -5
  472. package/dist/src/core/smoke-patterns.js +9 -9
  473. package/dist/src/core/state-file.d.ts +3 -3
  474. package/dist/src/core/status-binary.d.ts +8 -8
  475. package/dist/src/core/status-binary.js +12 -12
  476. package/dist/src/core/status-classify.d.ts +17 -17
  477. package/dist/src/core/status-classify.js +11 -11
  478. package/dist/src/core/test-changed-prefs.d.ts +12 -12
  479. package/dist/src/core/test-changed-prefs.js +15 -15
  480. package/dist/src/core/test-harness-crash.d.ts +39 -39
  481. package/dist/src/core/test-harness-crash.js +67 -67
  482. package/dist/src/core/test-harness-output.d.ts +7 -7
  483. package/dist/src/core/test-harness-output.js +7 -7
  484. package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
  485. package/dist/src/core/test-harness-verdict-notes.js +4 -4
  486. package/dist/src/core/test-path-scope.d.ts +8 -8
  487. package/dist/src/core/test-path-scope.js +11 -11
  488. package/dist/src/core/test-stale-check.d.ts +22 -21
  489. package/dist/src/core/test-stale-check.js +29 -28
  490. package/dist/src/core/test-stale-symlink.d.ts +1 -1
  491. package/dist/src/core/test-stale-symlink.js +1 -1
  492. package/dist/src/core/test-stall-triage.d.ts +9 -9
  493. package/dist/src/core/test-stall-triage.js +22 -22
  494. package/dist/src/core/token-category.d.ts +4 -4
  495. package/dist/src/core/token-category.js +13 -12
  496. package/dist/src/core/token-coverage.js +4 -5
  497. package/dist/src/core/token-dark-mode.d.ts +17 -9
  498. package/dist/src/core/token-dark-mode.js +41 -28
  499. package/dist/src/core/token-docs.d.ts +1 -1
  500. package/dist/src/core/token-inventory.d.ts +6 -6
  501. package/dist/src/core/token-inventory.js +7 -7
  502. package/dist/src/core/token-manager.d.ts +3 -3
  503. package/dist/src/core/token-manager.js +21 -21
  504. package/dist/src/core/token-scaffold.d.ts +4 -4
  505. package/dist/src/core/token-scaffold.js +4 -4
  506. package/dist/src/core/token-variant.d.ts +14 -14
  507. package/dist/src/core/token-variant.js +32 -32
  508. package/dist/src/core/toolchain-preflight.d.ts +15 -15
  509. package/dist/src/core/toolchain-preflight.js +22 -22
  510. package/dist/src/core/tree-cow.d.ts +3 -3
  511. package/dist/src/core/tree-cow.js +6 -6
  512. package/dist/src/core/tree-guard.d.ts +3 -3
  513. package/dist/src/core/tree-guard.js +23 -23
  514. package/dist/src/core/tree-store.d.ts +15 -15
  515. package/dist/src/core/tree-store.js +35 -33
  516. package/dist/src/core/typecheck-shim.d.ts +16 -15
  517. package/dist/src/core/typecheck-shim.js +26 -25
  518. package/dist/src/core/typecheck.d.ts +12 -12
  519. package/dist/src/core/typecheck.js +31 -31
  520. package/dist/src/core/wire-destroy.d.ts +2 -2
  521. package/dist/src/core/wire-destroy.js +5 -5
  522. package/dist/src/core/wire-dom-fragment.d.ts +3 -3
  523. package/dist/src/core/wire-dom-fragment.js +6 -6
  524. package/dist/src/core/wire-init.d.ts +2 -2
  525. package/dist/src/core/wire-init.js +7 -7
  526. package/dist/src/core/wire-subscript.d.ts +1 -1
  527. package/dist/src/core/wire-subscript.js +3 -3
  528. package/dist/src/core/wire-utils.d.ts +9 -9
  529. package/dist/src/core/wire-utils.js +11 -11
  530. package/dist/src/core/xpcshell-appdir.d.ts +20 -20
  531. package/dist/src/core/xpcshell-appdir.js +26 -26
  532. package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
  533. package/dist/src/core/xpcshell-profile-dir.js +7 -7
  534. package/dist/src/errors/base.d.ts +22 -21
  535. package/dist/src/errors/base.js +22 -21
  536. package/dist/src/errors/build.d.ts +6 -6
  537. package/dist/src/errors/build.js +6 -6
  538. package/dist/src/errors/codes.d.ts +10 -10
  539. package/dist/src/errors/codes.js +10 -10
  540. package/dist/src/errors/furnace.d.ts +2 -2
  541. package/dist/src/errors/git.d.ts +1 -1
  542. package/dist/src/errors/git.js +1 -1
  543. package/dist/src/errors/patch.d.ts +3 -3
  544. package/dist/src/errors/patch.js +3 -3
  545. package/dist/src/errors/rebase.d.ts +1 -1
  546. package/dist/src/errors/rebase.js +1 -1
  547. package/dist/src/errors/run.d.ts +1 -1
  548. package/dist/src/errors/run.js +1 -1
  549. package/dist/src/index.d.ts +4 -4
  550. package/dist/src/index.js +4 -4
  551. package/dist/src/types/commands/options.d.ts +86 -85
  552. package/dist/src/types/commands/patches.d.ts +19 -19
  553. package/dist/src/types/commands/project.d.ts +3 -3
  554. package/dist/src/types/config.d.ts +24 -23
  555. package/dist/src/types/furnace.d.ts +17 -17
  556. package/dist/src/types/json.d.ts +3 -3
  557. package/dist/src/types/json.js +2 -2
  558. package/dist/src/types/typecheck.d.ts +3 -3
  559. package/dist/src/utils/assert.d.ts +1 -1
  560. package/dist/src/utils/assert.js +6 -6
  561. package/dist/src/utils/build-info.d.ts +5 -5
  562. package/dist/src/utils/build-info.js +6 -6
  563. package/dist/src/utils/child-env.d.ts +5 -5
  564. package/dist/src/utils/child-env.js +5 -5
  565. package/dist/src/utils/concurrency.d.ts +2 -2
  566. package/dist/src/utils/concurrency.js +2 -2
  567. package/dist/src/utils/elapsed.js +1 -1
  568. package/dist/src/utils/errors.d.ts +8 -8
  569. package/dist/src/utils/errors.js +8 -8
  570. package/dist/src/utils/fs.d.ts +1 -1
  571. package/dist/src/utils/fs.js +8 -8
  572. package/dist/src/utils/line-dispatch.d.ts +3 -3
  573. package/dist/src/utils/line-dispatch.js +5 -5
  574. package/dist/src/utils/logger.d.ts +4 -4
  575. package/dist/src/utils/logger.js +11 -11
  576. package/dist/src/utils/machine-output.js +2 -2
  577. package/dist/src/utils/options.d.ts +13 -13
  578. package/dist/src/utils/options.js +20 -20
  579. package/dist/src/utils/package-root.js +2 -2
  580. package/dist/src/utils/paths.d.ts +4 -4
  581. package/dist/src/utils/paths.js +4 -4
  582. package/dist/src/utils/process-group.d.ts +8 -8
  583. package/dist/src/utils/process-group.js +19 -19
  584. package/dist/src/utils/process.d.ts +34 -33
  585. package/dist/src/utils/process.js +20 -19
  586. package/dist/src/utils/ps-duration.d.ts +4 -4
  587. package/dist/src/utils/ps-duration.js +6 -6
  588. package/dist/src/utils/regex.d.ts +4 -4
  589. package/dist/src/utils/regex.js +7 -7
  590. package/dist/src/utils/sleep.d.ts +7 -7
  591. package/dist/src/utils/sleep.js +7 -7
  592. package/dist/src/utils/stdio-drain.d.ts +7 -7
  593. package/dist/src/utils/stdio-drain.js +8 -8
  594. package/dist/src/utils/validation.d.ts +11 -12
  595. package/dist/src/utils/validation.js +20 -21
  596. package/docs/README.md +2 -2
  597. package/docs/configuration.md +120 -114
  598. package/docs/exit-codes.md +63 -58
  599. package/docs/furnace.md +20 -19
  600. package/docs/lifecycle-invariants.md +412 -251
  601. package/docs/machine-output.md +33 -32
  602. package/docs/patch-workflow.md +48 -45
  603. package/docs/run-logs.md +62 -58
  604. package/docs/testing.md +101 -101
  605. package/docs/verification-trees.md +23 -22
  606. package/package.json +2 -2
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import { findBlockCloseIndex, stripBlockCommentsInLines } from './token-dark-mode.js';
14
14
  /**
15
- * ONE attribute selector fragment: `[data-private]` (boolean attribute) or
15
+ * One attribute selector fragment: `[data-private]` (boolean attribute) or
16
16
  * `[data-skin=precision]` / `[data-skin="precision"]` (attribute with
17
17
  * value). The name and value halves are restricted to identifier-safe
18
18
  * characters so the fragment can be spliced into CSS verbatim without
@@ -26,15 +26,15 @@ import { findBlockCloseIndex, stripBlockCommentsInLines } from './token-dark-mod
26
26
  const ATTRIBUTE_FRAGMENT_PATTERN = /^\[[a-zA-Z][a-zA-Z0-9_-]*(?:=(?:"[a-zA-Z0-9_-]+"|'[a-zA-Z0-9_-]+'|[a-zA-Z0-9_-]+))?\]$/;
27
27
  /**
28
28
  * A pseudo-class tail: `:not(…)`, `:hover`, and friends. The parenthesised
29
- * argument is captured rather than validated here — it is a fragment run of
29
+ * argument is captured rather than validated here. It is a fragment run of
30
30
  * its own and goes through the same per-group check.
31
31
  */
32
32
  const QUALIFIER_PATTERN = /^:[a-zA-Z][a-zA-Z0-9-]*(?:\(([^()]*)\))?$/;
33
33
  /**
34
34
  * Splits a run of consecutive attribute fragments into its groups, or
35
- * returns `undefined` when the run is not exactly that — a group that does not
36
- * open with `[`, an unclosed group, an empty run, or a group whose name or
37
- * value is not identifier-safe.
35
+ * returns `undefined` when the run is not exactly that: a group that does
36
+ * not open with `[`, an unclosed group, an empty run, or a group whose name
37
+ * or value is not identifier-safe.
38
38
  *
39
39
  * @param run - The `[…][…]` text with no `:root` prefix
40
40
  * @returns The individual fragments, or undefined when the run is not valid
@@ -67,12 +67,12 @@ function normalizeAttributeFragment(group) {
67
67
  * form to the double-quoted `="value"` shape (Mozilla convention).
68
68
  * Boolean-attribute fragments are returned unchanged.
69
69
  *
70
- * Structure is decided by {@link rootAttributeSelector} — the matcher's own
71
- * parse — rather than by a second regex. That is the point: 0.44.2 widened
70
+ * Structure is decided by {@link rootAttributeSelector}, the matcher's own
71
+ * parse, rather than by a second regex. 0.44.2 widened
72
72
  * the matcher to consume consecutive `[…]` groups and stop at a pseudo-class
73
73
  * tail, and the validator did not move with it, so
74
74
  * `:root[data-skin="humanist"]:not([data-private])` was a block the tool
75
- * could FIND but would not let you NAME. Running both halves off one parse
75
+ * could find but would not let you name. Running both halves off one parse
76
76
  * is what stops them drifting apart again. Character-level safety stays a
77
77
  * separate, per-group check, because the matcher finds bracket boundaries
78
78
  * and validates no characters at all.
@@ -93,7 +93,7 @@ export function validateVariantSelector(raw) {
93
93
  if (value === '')
94
94
  return reject;
95
95
  const parts = rootAttributeSelector(`:root${value} {`);
96
- // The parse must have consumed the WHOLE fragment: anything it declined to
96
+ // The parse must have consumed the whole fragment: anything it declined to
97
97
  // read (a stray space, a trailing combinator) is text the matcher would
98
98
  // not see either, so accepting it would author a block nothing can find.
99
99
  if (parts === undefined || `${parts.attributes}${parts.qualifier}` !== `:root${value}`)
@@ -138,19 +138,19 @@ function canonicalSelector(selector) {
138
138
  * (CodeQL `js/polynomial-redos`). This walk is linear and allocation-free
139
139
  * per group.
140
140
  *
141
- * It consumes CONSECUTIVE `[…]` groups and stops at the first character that
142
- * is not `[`. The previous implementation instead sliced to the LAST `]`
141
+ * It consumes consecutive `[…]` groups and stops at the first character that
142
+ * is not `[`. The previous implementation instead sliced to the last `]`
143
143
  * before the brace, which kept multi-attribute selectors comparing as a
144
- * whole — that property is preserved here, since consecutive groups are all
145
- * consumed — but it also swallowed a pseudo-class tail. On
144
+ * whole (that property is preserved here, since consecutive groups are all
145
+ * consumed) but it also swallowed a pseudo-class tail. On
146
146
  * `:root[data-theme="light"]:not([data-private]) {` the last `]` is the one
147
147
  * inside `:not(…)`, so the computed fragment was
148
148
  * `:root[data-theme="light"]:not([data-private]` and the canonical
149
149
  * comparison could never match. The unqualified
150
150
  * `:root[data-theme="dark"] { }` beside it matched fine, and that asymmetry
151
- * WAS the bug: an override add mirrored itself into the dark block and
152
- * silently skipped the light one, which is precisely the half-finished
153
- * themed edit `THEME_ATTRIBUTE_VARIANTS` exists to prevent.
151
+ * was the bug: an override add mirrored itself into the dark block and
152
+ * silently skipped the light one, the half-finished themed edit
153
+ * `THEME_ATTRIBUTE_VARIANTS` exists to prevent.
154
154
  */
155
155
  function rootAttributeSelector(line) {
156
156
  const start = line.indexOf(':root[');
@@ -177,14 +177,14 @@ function rootAttributeSelector(line) {
177
177
  * closing-brace line indices, or `undefined` when no such block exists.
178
178
  *
179
179
  * Scans a comment-stripped mirror of `lines` so braces inside comments do
180
- * not offset the depth counter; the returned indices line up with the
180
+ * not offset the depth counter. The returned indices line up with the
181
181
  * original array.
182
182
  */
183
183
  function findVariantBlock(lines, variant) {
184
184
  const stripped = stripBlockCommentsInLines(lines);
185
185
  // The request goes through the same parse as the candidate lines, so a
186
186
  // variant carrying its own `:not(…)` tail is compared tail-to-tail rather
187
- // than being folded into the attribute run — where it would match nothing
187
+ // than being folded into the attribute run, where it would match nothing
188
188
  // and every add would splice a fresh duplicate block.
189
189
  const requested = rootAttributeSelector(`:root${variant} {`);
190
190
  const want = canonicalSelector(requested?.attributes ?? `:root${variant}`);
@@ -193,10 +193,10 @@ function findVariantBlock(lines, variant) {
193
193
  const selector = rootAttributeSelector(line);
194
194
  if (selector === undefined || canonicalSelector(selector.attributes) !== want)
195
195
  continue;
196
- // An UNqualified request still matches a qualified block: that is the
196
+ // An unqualified request still matches a qualified block: that is the
197
197
  // 0.44.2 behaviour `variantBlockQualifier` exists to report, since
198
198
  // silently skipping the block is the worse failure. A request that names
199
- // a qualifier, though, means it — so it must match.
199
+ // a qualifier, though, means it, so it must match.
200
200
  if (wantQualifier !== '' && canonicalSelector(selector.qualifier) !== wantQualifier)
201
201
  continue;
202
202
  let openLine = /\{/.test(line) ? i : -1;
@@ -240,7 +240,7 @@ function findVariantBlockInsertionPoint(lines) {
240
240
  /**
241
241
  * True when a top-level `:root<variant>` block exists in `lines`. Used by
242
242
  * the override path to write theme-attribute blocks only when the scaffold
243
- * already declares them — `insertVariantDeclaration` would otherwise create
243
+ * already declares them. `insertVariantDeclaration` would otherwise create
244
244
  * the block, which is only wanted for the explicit `--variant` flow.
245
245
  */
246
246
  export function variantBlockExists(lines, variant) {
@@ -250,13 +250,13 @@ export function variantBlockExists(lines, variant) {
250
250
  * The pseudo-class qualifier on the matched `:root<variant>` block, or
251
251
  * `undefined` when no block matched. `''` for an unqualified block.
252
252
  *
253
- * A qualifier such as `:not([data-private])` is semantically LOAD-BEARING:
254
- * writing into that block scopes the declaration to the qualified case, and
255
- * that may not be what the operator meant. Matching it is still the right
256
- * call — silently skipping it is the worse failure, and the one that
257
- * shipped — but the override path uses this to say out loud which selector
258
- * it wrote through, so the narrowing is a visible decision rather than a
259
- * theme bug discovered later.
253
+ * A qualifier such as `:not([data-private])` is load-bearing: writing into
254
+ * that block scopes the declaration to the qualified case, and that may not
255
+ * be what the operator meant. Matching it is still the right call, since
256
+ * silently skipping it is the worse failure and the one that shipped, but
257
+ * the override path uses this to say out loud which selector it wrote
258
+ * through, so the narrowing is a visible decision rather than a theme bug
259
+ * discovered later.
260
260
  *
261
261
  * @param lines - Tokens CSS split into lines
262
262
  * @param variant - Attribute selector fragment, e.g. `[data-theme="light"]`
@@ -275,8 +275,8 @@ export function variantBlockHasToken(lines, variant, tokenName) {
275
275
  * not exist).
276
276
  *
277
277
  * The located form of {@link variantBlockHasToken}: the variant add path
278
- * reports a skip the way the base path does — naming the block and the
279
- * line — instead of returning a bare boolean that leaves a no-op re-run
278
+ * reports a skip the way the base path does, naming the block and the
279
+ * line, instead of returning a bare boolean that leaves a no-op re-run
280
280
  * indistinguishable from a write.
281
281
  *
282
282
  * @param lines - Tokens CSS split into lines
@@ -288,11 +288,11 @@ export function findVariantBlockDeclaration(lines, variant, tokenName) {
288
288
  const block = findVariantBlock(lines, variant);
289
289
  if (!block)
290
290
  return undefined;
291
- // Comments are stripped across the WHOLE block before scanning, matching
291
+ // Comments are stripped across the whole block before scanning, matching
292
292
  // what the boolean form always did: a `/* … */` spanning several lines
293
293
  // must not leave its tail looking like a declaration.
294
294
  const blockLines = lines.slice(block.open, block.close + 1);
295
- // Blank the comment's CHARACTERS rather than deleting it: removing a
295
+ // Blank the comment's characters rather than deleting it: removing a
296
296
  // multi-line comment outright collapses its lines and shifts every line
297
297
  // number after it, which is the one thing this function exists to report.
298
298
  const stripped = blockLines
@@ -1,27 +1,27 @@
1
1
  /**
2
2
  * Toolchain-minimum awareness for Firefox source hops.
3
3
  *
4
- * When `fireforge download --force` moves the engine to a new Firefox MAJOR
4
+ * When `fireforge download --force` moves the engine to a new Firefox major
5
5
  * version, the tree's declared toolchain minimums (cbindgen, Rust)
6
- * frequently move with it — and the first `fireforge build` then dies a few
6
+ * frequently move with it, and the first `fireforge build` then dies a few
7
7
  * seconds into `mach configure` with a message whose remediation text names
8
8
  * `./mach bootstrap`, the wrong tool for a FireForge-managed repo (e.g.
9
9
  * `ERROR: cbindgen version 0.29.1 is too old. At least version 0.29.4 is
10
10
  * required.`).
11
11
  *
12
12
  * Two layers:
13
- * 1. {@link formatMajorVersionHopNotice} — a post-download nudge when the
13
+ * 1. {@link formatMajorVersionHopNotice}, a post-download nudge when the
14
14
  * downloaded major differs from the previously downloaded one.
15
- * 2. {@link runToolchainPreflight} — a cheap pre-build probe comparing the
15
+ * 2. {@link runToolchainPreflight}, a cheap pre-build probe comparing the
16
16
  * minimums the tree itself declares against the host binaries
17
17
  * `mach configure` will resolve, probing configure's own candidate
18
18
  * order: env override first, then the `~/.mozbuild` state-directory copy
19
19
  * bootstrap installs, then PATH. Probing env-or-PATH alone blocks builds
20
20
  * whose current tool lives in the state dir behind a stale PATH copy.
21
- * Deliberately FAIL-SOFT: it reports a mismatch only when a minimum was
22
- * positively parsed AND at least one candidate resolved AND every
23
- * resolved candidate is definitively lower. Any uncertainty (file moved
24
- * upstream, unparseable output, no candidate found) skips silently — the
21
+ * Fail-soft: it reports a mismatch only when a minimum was positively
22
+ * parsed, at least one candidate resolved, and every resolved candidate
23
+ * is definitively lower. Any uncertainty (file moved upstream,
24
+ * unparseable output, no candidate found) skips silently. The
25
25
  * mach-error-hints translator still catches the real configure failure
26
26
  * downstream.
27
27
  */
@@ -41,16 +41,16 @@ export interface ToolchainMismatch {
41
41
  /** Engine-relative file the minimum was parsed from. */
42
42
  declaredIn: string;
43
43
  /**
44
- * Every candidate that resolved — all of them below the minimum
44
+ * Every candidate that resolved, all of them below the minimum
45
45
  * (mach-resolution order: env override, mozbuild state dir, PATH).
46
46
  */
47
47
  candidates: ToolchainCandidate[];
48
48
  }
49
49
  /**
50
50
  * Returns the one-line notice to print after a download that hopped the
51
- * Firefox MAJOR version, or undefined when no notice is warranted (first
52
- * download, same major, or unparseable versions — an unparseable version
53
- * must not spam every download with a false hint).
51
+ * Firefox major version, or undefined when no notice is warranted (first
52
+ * download, same major, or unparseable versions, since an unparseable
53
+ * version must not spam every download with a false hint).
54
54
  *
55
55
  * @param previousVersion - `downloadedVersion` recorded in state before this download
56
56
  * @param newVersion - Version that was just downloaded
@@ -59,14 +59,14 @@ export declare function formatMajorVersionHopNotice(previousVersion: string | un
59
59
  /**
60
60
  * Reads the toolchain minimums the engine tree itself declares. Any file
61
61
  * that is missing or no longer matches the expected declaration shape
62
- * yields undefined for that tool — never an error.
62
+ * yields undefined for that tool, never an error.
63
63
  */
64
64
  export declare function readDeclaredToolchainMinimums(engineDir: string): Promise<Partial<Record<ToolchainTool, string>>>;
65
65
  /**
66
66
  * Compares the tree-declared toolchain minimums against the host binaries
67
67
  * `mach configure` will resolve, in configure's own candidate order (env
68
- * override, mozbuild state dir, PATH). A tool fails ONLY when at least
69
- * one candidate resolved and none of them meets the minimum; any single
68
+ * override, mozbuild state dir, PATH). A tool fails only when at least
69
+ * one candidate resolved and none of them meets the minimum. Any single
70
70
  * passing candidate passes the tool (configure will find it), and a tool
71
71
  * with no resolvable candidate skips silently (see module header for the
72
72
  * fail-soft rationale).
@@ -2,27 +2,27 @@
2
2
  /**
3
3
  * Toolchain-minimum awareness for Firefox source hops.
4
4
  *
5
- * When `fireforge download --force` moves the engine to a new Firefox MAJOR
5
+ * When `fireforge download --force` moves the engine to a new Firefox major
6
6
  * version, the tree's declared toolchain minimums (cbindgen, Rust)
7
- * frequently move with it — and the first `fireforge build` then dies a few
7
+ * frequently move with it, and the first `fireforge build` then dies a few
8
8
  * seconds into `mach configure` with a message whose remediation text names
9
9
  * `./mach bootstrap`, the wrong tool for a FireForge-managed repo (e.g.
10
10
  * `ERROR: cbindgen version 0.29.1 is too old. At least version 0.29.4 is
11
11
  * required.`).
12
12
  *
13
13
  * Two layers:
14
- * 1. {@link formatMajorVersionHopNotice} — a post-download nudge when the
14
+ * 1. {@link formatMajorVersionHopNotice}, a post-download nudge when the
15
15
  * downloaded major differs from the previously downloaded one.
16
- * 2. {@link runToolchainPreflight} — a cheap pre-build probe comparing the
16
+ * 2. {@link runToolchainPreflight}, a cheap pre-build probe comparing the
17
17
  * minimums the tree itself declares against the host binaries
18
18
  * `mach configure` will resolve, probing configure's own candidate
19
19
  * order: env override first, then the `~/.mozbuild` state-directory copy
20
20
  * bootstrap installs, then PATH. Probing env-or-PATH alone blocks builds
21
21
  * whose current tool lives in the state dir behind a stale PATH copy.
22
- * Deliberately FAIL-SOFT: it reports a mismatch only when a minimum was
23
- * positively parsed AND at least one candidate resolved AND every
24
- * resolved candidate is definitively lower. Any uncertainty (file moved
25
- * upstream, unparseable output, no candidate found) skips silently — the
22
+ * Fail-soft: it reports a mismatch only when a minimum was positively
23
+ * parsed, at least one candidate resolved, and every resolved candidate
24
+ * is definitively lower. Any uncertainty (file moved upstream,
25
+ * unparseable output, no candidate found) skips silently. The
26
26
  * mach-error-hints translator still catches the real configure failure
27
27
  * downstream.
28
28
  */
@@ -62,16 +62,16 @@ const MINIMUM_DECLARATIONS = {
62
62
  *
63
63
  * `stateDirRelPaths` are the mach-state-directory locations
64
64
  * `fireforge bootstrap` (via mozboot) installs the tool to. mach's configure
65
- * tries the state directory BEFORE the PATH candidates —
66
- * bindgen.configure's toolchain search path lists `~/.mozbuild/cbindgen/
67
- * cbindgen` first — so the probe must too. Probing only env-or-PATH fails a
65
+ * tries the state directory before the PATH candidates (bindgen.configure's
66
+ * toolchain search path lists `~/.mozbuild/cbindgen/cbindgen` first), so the
67
+ * probe must too. Probing only env-or-PATH fails a
68
68
  * build configure would have accepted whenever an old `~/.cargo/bin/
69
69
  * cbindgen` shadows a current bootstrap-installed copy. Rust has no
70
- * state-dir install — rustup owns it — so its list is empty.
70
+ * state-dir install, since rustup owns it, so its list is empty.
71
71
  */
72
72
  const HOST_PROBES = {
73
73
  // `mach configure` honours the CBINDGEN env option (bindgen.configure's
74
- // `option(env="CBINDGEN", ...)`), so the probe must too — otherwise the
74
+ // `option(env="CBINDGEN", ...)`), so the probe must too. Otherwise the
75
75
  // preflight could veto a build configure would have accepted.
76
76
  cbindgen: {
77
77
  envVar: 'CBINDGEN',
@@ -82,7 +82,7 @@ const HOST_PROBES = {
82
82
  };
83
83
  /**
84
84
  * Parses a dotted version string into numeric components. Trailing
85
- * non-numeric suffixes are ignored; returns undefined when the string
85
+ * non-numeric suffixes are ignored. Returns undefined when the string
86
86
  * does not start with a number. (Same posture as the furnace version
87
87
  * drift classifier, kept local so the two modules stay decoupled.)
88
88
  */
@@ -92,7 +92,7 @@ function parseVersionComponents(version) {
92
92
  return undefined;
93
93
  return match[1].split('.').map(Number);
94
94
  }
95
- /** Component-wise comparison; missing components count as 0. */
95
+ /** Component-wise comparison. Missing components count as 0. */
96
96
  function isVersionLower(candidate, minimum) {
97
97
  const length = Math.max(candidate.length, minimum.length);
98
98
  for (let i = 0; i < length; i += 1) {
@@ -105,9 +105,9 @@ function isVersionLower(candidate, minimum) {
105
105
  }
106
106
  /**
107
107
  * Returns the one-line notice to print after a download that hopped the
108
- * Firefox MAJOR version, or undefined when no notice is warranted (first
109
- * download, same major, or unparseable versions — an unparseable version
110
- * must not spam every download with a false hint).
108
+ * Firefox major version, or undefined when no notice is warranted (first
109
+ * download, same major, or unparseable versions, since an unparseable
110
+ * version must not spam every download with a false hint).
111
111
  *
112
112
  * @param previousVersion - `downloadedVersion` recorded in state before this download
113
113
  * @param newVersion - Version that was just downloaded
@@ -128,7 +128,7 @@ export function formatMajorVersionHopNotice(previousVersion, newVersion) {
128
128
  /**
129
129
  * Reads the toolchain minimums the engine tree itself declares. Any file
130
130
  * that is missing or no longer matches the expected declaration shape
131
- * yields undefined for that tool — never an error.
131
+ * yields undefined for that tool, never an error.
132
132
  */
133
133
  export async function readDeclaredToolchainMinimums(engineDir) {
134
134
  const entries = Object.entries(MINIMUM_DECLARATIONS);
@@ -173,7 +173,7 @@ async function probeBinaryVersion(binary, versionPattern) {
173
173
  }
174
174
  /**
175
175
  * Probes every candidate binary for a tool in mach's resolution order:
176
- * the env override (which, when set, is the ONLY candidate — configure
176
+ * the env override (which, when set, is the only candidate, since configure
177
177
  * uses it even when a better binary exists elsewhere), then the mozbuild
178
178
  * state-directory copy bootstrap installs, then PATH. Candidates that
179
179
  * fail to run or to parse are dropped silently.
@@ -196,8 +196,8 @@ async function probeHostToolCandidates(tool) {
196
196
  /**
197
197
  * Compares the tree-declared toolchain minimums against the host binaries
198
198
  * `mach configure` will resolve, in configure's own candidate order (env
199
- * override, mozbuild state dir, PATH). A tool fails ONLY when at least
200
- * one candidate resolved and none of them meets the minimum; any single
199
+ * override, mozbuild state dir, PATH). A tool fails only when at least
200
+ * one candidate resolved and none of them meets the minimum. Any single
201
201
  * passing candidate passes the tool (configure will find it), and a tool
202
202
  * with no resolvable candidate skips silently (see module header for the
203
203
  * fail-soft rationale).
@@ -1,4 +1,4 @@
1
- /** Runs a clone command; throws on non-zero exit. */
1
+ /** Runs a clone command. Throws on non-zero exit. */
2
2
  export type CloneExecutor = (command: string, args: string[]) => Promise<void>;
3
3
  /** How this host can materialise a tree. */
4
4
  export type CowCapability = 'clonefile' | 'reflink' | 'none';
@@ -9,8 +9,8 @@ export type CowCapability = 'clonefile' | 'reflink' | 'none';
9
9
  export declare function detectCowSupport(dir: string, platform?: NodeJS.Platform, executor?: CloneExecutor): Promise<CowCapability>;
10
10
  /**
11
11
  * Copies one directory entry (file or directory, recursively) from
12
- * `sourcePath` to `destinationPath` using the given capability —
12
+ * `sourcePath` to `destinationPath` using the given capability:
13
13
  * clonefile/reflink when available, a plain physical copy under
14
- * 'none' (the `--force-copy` path; the CALLER gates on the flag).
14
+ * 'none' (the `--force-copy` path, and the caller gates on the flag).
15
15
  */
16
16
  export declare function cloneEntry(capability: CowCapability, sourcePath: string, destinationPath: string, platform?: NodeJS.Platform, executor?: CloneExecutor): Promise<void>;
@@ -2,10 +2,10 @@
2
2
  /**
3
3
  * Copy-on-write cloning for `fireforge tree`.
4
4
  *
5
- * Capability is probed BY DOING — a tiny `cp -c` (APFS clonefile) or
6
- * `cp --reflink=always` (btrfs/XFS) in the actual destination directory —
7
- * so the verdict is truthful for the volume the trees will live on. A
8
- * filesystem without CoW support REFUSES honestly; `--force-copy` opts
5
+ * Capability is probed by doing it: a tiny `cp -c` (APFS clonefile) or
6
+ * `cp --reflink=always` (btrfs/XFS) runs in the actual destination
7
+ * directory, so the verdict is truthful for the volume the trees will live
8
+ * on. A filesystem without CoW support refuses honestly. `--force-copy` opts
9
9
  * into a full physical copy but is never implied (a Firefox tree can be
10
10
  * tens of gigabytes).
11
11
  *
@@ -57,9 +57,9 @@ export async function detectCowSupport(dir, platform = process.platform, executo
57
57
  }
58
58
  /**
59
59
  * Copies one directory entry (file or directory, recursively) from
60
- * `sourcePath` to `destinationPath` using the given capability —
60
+ * `sourcePath` to `destinationPath` using the given capability:
61
61
  * clonefile/reflink when available, a plain physical copy under
62
- * 'none' (the `--force-copy` path; the CALLER gates on the flag).
62
+ * 'none' (the `--force-copy` path, and the caller gates on the flag).
63
63
  */
64
64
  export async function cloneEntry(capability, sourcePath, destinationPath, platform = process.platform, executor = defaultExecutor) {
65
65
  const args = capability === 'none'
@@ -1,14 +1,14 @@
1
1
  import { type TreeMarker } from './tree-store.js';
2
2
  /**
3
- * Per-command verdicts. `allowed` runs unconditionally; `refused` never
4
- * runs in a tree; `conditional` consults `TREE_CONDITIONAL_CHECKS` with
3
+ * Per-command verdicts. `allowed` runs unconditionally. `refused` never
4
+ * runs in a tree. `conditional` consults `TREE_CONDITIONAL_CHECKS` with
5
5
  * the invoked subcommand chain, parsed options, and the tree marker.
6
6
  */
7
7
  export declare const TREE_COMMAND_VERDICTS: Readonly<Record<string, 'allowed' | 'refused' | 'conditional'>>;
8
8
  interface ConditionalInput {
9
9
  /** Subcommand chain below the top-level command (e.g. ['staged-dependency']). */
10
10
  subcommands: readonly string[];
11
- /** Merged options of the ACTION command (leaf). */
11
+ /** Merged options of the action command (leaf). */
12
12
  options: Readonly<Record<string, unknown>>;
13
13
  /** Positional args of the action command. */
14
14
  args: readonly unknown[];
@@ -4,10 +4,10 @@
4
4
  *
5
5
  * A tree is a snapshot: its `patches/` and `components/` are copies with
6
6
  * no merge-back model, so any command that mutates project or engine
7
- * state must run in the primary tree. Enforcement is DEFAULT-DENY via an
8
- * explicit verdict table over every top-level command — a newly added
7
+ * state must run in the primary tree. Enforcement is default-deny via an
8
+ * explicit verdict table over every top-level command, so a newly added
9
9
  * command is refused inside trees until its author classifies it (the
10
- * drift test in `tree-guard.test.ts` fails otherwise) — and lives in ONE
10
+ * drift test in `tree-guard.test.ts` fails otherwise). It lives in one
11
11
  * commander `preAction` hook installed by `createProgram()`, so the
12
12
  * guard fires no matter how the cwd ended up inside a tree (`tree exec`
13
13
  * or a plain `cd`).
@@ -17,8 +17,8 @@ import { dirname, join, resolve } from 'node:path';
17
17
  import { GeneralError } from '../errors/base.js';
18
18
  import { getTreeMarkerPath, readTreeMarker, } from './tree-store.js';
19
19
  /**
20
- * Per-command verdicts. `allowed` runs unconditionally; `refused` never
21
- * runs in a tree; `conditional` consults `TREE_CONDITIONAL_CHECKS` with
20
+ * Per-command verdicts. `allowed` runs unconditionally. `refused` never
21
+ * runs in a tree. `conditional` consults `TREE_CONDITIONAL_CHECKS` with
22
22
  * the invoked subcommand chain, parsed options, and the tree marker.
23
23
  */
24
24
  export const TREE_COMMAND_VERDICTS = {
@@ -41,7 +41,7 @@ export const TREE_COMMAND_VERDICTS = {
41
41
  package: 'refused',
42
42
  watch: 'refused',
43
43
  // Build-less runs only, and only in trees whose marker records a cloned
44
- // (mozinfo-rewritten) objdir — see the conditional check below.
44
+ // (mozinfo-rewritten) objdir. See the conditional check below.
45
45
  test: 'conditional',
46
46
  config: 'conditional',
47
47
  doctor: 'conditional',
@@ -52,8 +52,8 @@ export const TREE_COMMAND_VERDICTS = {
52
52
  typecheck: 'allowed',
53
53
  verify: 'allowed',
54
54
  furnace: 'refused',
55
- // No nesting; `tree list` inside a tree is pointless but harmless — the
56
- // subcommand check below allows only `list`.
55
+ // No nesting. `tree list` inside a tree is pointless but harmless, and
56
+ // the subcommand check below allows only `list`.
57
57
  tree: 'conditional',
58
58
  };
59
59
  /** The command set named in refusal messages. */
@@ -61,29 +61,29 @@ const ALLOWED_SUMMARY = 'Verification trees support: status, lint, typecheck, ve
61
61
  'config (read), export --dry-run, export-all --dry-run, re-export --dry-run, and — ' +
62
62
  'in trees created with --with-objdir — build-less test.';
63
63
  const TREE_CONDITIONAL_CHECKS = {
64
- // Exports write patches/ + patches.json; only the dry-run preview is a read.
64
+ // Exports write patches/ + patches.json. Only the dry-run preview is a read.
65
65
  export: ({ options }) => options['dryRun'] === true,
66
66
  'export-all': ({ options }) => options['dryRun'] === true,
67
67
  // Same rule for refreshing existing patches: the dry-run projection is a
68
68
  // read (proven side-effect free and runtime-enforced by
69
- // withDryRunPurityGuard); a real re-export writes patches/.
69
+ // withDryRunPurityGuard). A real re-export writes patches/.
70
70
  're-export': ({ options }) => options['dryRun'] === true,
71
- // `config` with no positional value prints; with a value it writes.
71
+ // `config` with no positional value prints. With a value it writes.
72
72
  config: ({ args }) => args.filter((a) => typeof a === 'string').length <= 1,
73
73
  // Doctor reads unless a repair flag is set.
74
74
  doctor: ({ options }) => options['repairFurnace'] !== true && options['fix'] !== true,
75
75
  // Build-less test needs the objdir the marker records as cloned,
76
- // mozinfo-rewritten AND reconfigured in-tree; `test --build` rebuilds
76
+ // mozinfo-rewritten and reconfigured in-tree. `test --build` rebuilds
77
77
  // the engine and stays primary-only (a tree is a snapshot with no
78
78
  // merge-back model, so build outputs mutated in-tree go nowhere).
79
79
  test: ({ options }, marker) => marker.clonedObjdir !== undefined && options['build'] !== true,
80
- // No tree lifecycle inside a tree; `tree list` is the only read.
80
+ // No tree lifecycle inside a tree. `tree list` is the only read.
81
81
  tree: ({ subcommands }) => subcommands[0] === 'list',
82
82
  };
83
83
  /**
84
- * Command-specific refusal hints appended after the generic sentence —
85
- * for verdicts where "mutates project or engine state" alone would
86
- * misdiagnose the actual reason.
84
+ * Command-specific refusal hints appended after the generic sentence, for
85
+ * verdicts where "mutates project or engine state" alone would misdiagnose
86
+ * the actual reason.
87
87
  */
88
88
  const TREE_REFUSAL_HINTS = {
89
89
  test: ({ options }, marker) => {
@@ -149,13 +149,13 @@ export async function runTreeGuardHook(rootCommandName, actionCommand) {
149
149
  const state = located.state;
150
150
  if (state.kind === 'absent')
151
151
  return;
152
- // A marker we cannot read is not evidence that this is not a tree — it is
152
+ // A marker we cannot read is not evidence that this is not a tree. It is
153
153
  // evidence that we cannot tell. Treating it as "not a tree" would grant the
154
154
  // full mutating command set to a snapshot on the strength of a file that
155
- // failed to parse, which is exactly backwards for a default-deny guard.
156
- // A marker from a NEWER FireForge is not damaged, so the corrupt branch's
157
- // remedies — recreate the tree, delete the stray marker — are actively
158
- // wrong for it. Refuse with the upgrade instruction instead, and do NOT
155
+ // failed to parse, which is backwards for a default-deny guard.
156
+ // A marker from a newer FireForge is not damaged, so the corrupt branch's
157
+ // remedies (recreate the tree, delete the stray marker) are actively
158
+ // wrong for it. Refuse with the upgrade instruction instead, and do not
159
159
  // offer --ignore-corrupt-tree-marker: proceeding would mean acting on a
160
160
  // marker whose fields this build does not understand.
161
161
  if (state.kind === 'unsupported') {
@@ -166,8 +166,8 @@ export async function runTreeGuardHook(rootCommandName, actionCommand) {
166
166
  if (state.kind === 'corrupt') {
167
167
  if (options['ignoreCorruptTreeMarker'] === true)
168
168
  return;
169
- // Unconditionally-allowed commands never consult marker fields — their
170
- // verdict is the same in every tree — so an unreadable marker cannot
169
+ // Unconditionally-allowed commands never consult marker fields, and
170
+ // their verdict is the same in every tree, so an unreadable marker cannot
171
171
  // change their answer. Letting them through keeps read-only diagnostics
172
172
  // (status, lint) usable on the very tree the operator needs to inspect.
173
173
  // 'conditional' verdicts stay refused: their predicates can write.
@@ -1,5 +1,5 @@
1
1
  import { type CowCapability } from './tree-cow.js';
2
- /** `.fireforge/tree.json` — identifies a directory as a verification tree. */
2
+ /** `.fireforge/tree.json`, which identifies a directory as a verification tree. */
3
3
  export interface TreeMarker {
4
4
  schemaVersion: 1;
5
5
  name: string;
@@ -11,10 +11,10 @@ export interface TreeMarker {
11
11
  patchesFingerprint: string | null;
12
12
  /**
13
13
  * Name of the obj-* directory cloned into this tree, written only after
14
- * its mozinfo.json was successfully rewritten to the tree's paths AND the
14
+ * its mozinfo.json was successfully rewritten to the tree's paths and the
15
15
  * caller's in-tree reconfigure regenerated the remaining configure output.
16
16
  * Its presence is what lets the guard admit build-less `test` in-tree
17
- * (`tree-guard.ts`); absent on trees created without `--with-objdir`.
17
+ * (`tree-guard.ts`). Absent on trees created without `--with-objdir`.
18
18
  */
19
19
  clonedObjdir?: string;
20
20
  }
@@ -35,7 +35,7 @@ export declare function withTreeLifecycleLock<T>(primaryRoot: string, operation:
35
35
  * The three states must stay distinct because they carry opposite safety
36
36
  * meanings. `absent` means "this directory is not a tree", which is what
37
37
  * lets every mutating command run. `corrupt` means "this directory claims to
38
- * be a tree but we cannot read the claim" — collapsing it into `absent` (as
38
+ * be a tree but we cannot read the claim". Collapsing it into `absent` (as
39
39
  * a bare `undefined` return does) hands a snapshot the full mutating command
40
40
  * set on the strength of a file we failed to parse, inverting
41
41
  * `tree-guard.ts`'s default-deny design. Deleting one field from a marker is
@@ -51,7 +51,7 @@ export type TreeMarkerRead = {
51
51
  reason: string;
52
52
  }
53
53
  /**
54
- * Written by a NEWER FireForge. Distinct from `corrupt` because the remedy
54
+ * Written by a newer FireForge. Distinct from `corrupt` because the remedy
55
55
  * is the opposite: upgrade, do not delete.
56
56
  */
57
57
  | {
@@ -68,20 +68,20 @@ export declare function getTreeMarkerPath(root: string): string;
68
68
  *
69
69
  * Only ENOENT/ENOTDIR mean `absent`: any other probe failure (EACCES on the
70
70
  * `.fireforge` directory, EIO, …) reports `corrupt`, because "we cannot read
71
- * the marker" is not evidence that there is no marker — a `pathExists`
71
+ * the marker" is not evidence that there is no marker: a `pathExists`
72
72
  * pre-check classifies a tree with an unreadable `.fireforge` as `absent`
73
73
  * and hands it the full mutating command set.
74
74
  */
75
75
  /**
76
76
  * Naming convention for state-file readers:
77
- * - `readX(): Promise<XRead>` — the TRI-STATE read: absent, corrupt, or
77
+ * - `readX(): Promise<XRead>` is the tri-state read: absent, corrupt, or
78
78
  * valid.
79
- * - `tryReadX(): Promise<X | undefined>` — collapses absent and corrupt.
79
+ * - `tryReadX(): Promise<X | undefined>` collapses absent and corrupt.
80
80
  */
81
81
  export declare function readTreeMarker(root: string): Promise<TreeMarkerRead>;
82
82
  /**
83
83
  * Reads the tree marker for a project root, or undefined when it is absent
84
- * OR unreadable.
84
+ * or unreadable.
85
85
  *
86
86
  * For display and best-effort paths only (`tree list` renders an unreadable
87
87
  * marker as staleness 'unknown'). Anything that decides whether a mutation may
@@ -93,8 +93,8 @@ export declare function tryReadTreeMarker(root: string): Promise<TreeMarker | un
93
93
  * the one this tree's marker vouched for as rewritten-and-reconfigured. A
94
94
  * mismatch means an objdir appeared in the tree through some path other than
95
95
  * `tree create --with-objdir` (manual copy, partial restore), so nothing
96
- * proves it was relocated — running against it could consult primary paths.
97
- * No-op outside a tree; a corrupt marker is already refused by the guard.
96
+ * proves it was relocated, and running against it could consult primary paths.
97
+ * No-op outside a tree. A corrupt marker is already refused by the guard.
98
98
  */
99
99
  export declare function assertObjdirMatchesTreeMarker(projectRoot: string, objDir: string | undefined): Promise<void>;
100
100
  /** Current primary-side snapshot identity, including dirty source and patch bodies. */
@@ -109,8 +109,8 @@ export declare function assertValidTreeName(name: string): void;
109
109
  * Materialises the tree at `treeRoot` from `primaryRoot` using `capability`
110
110
  * ('none' = plain copy, already gated on --force-copy by the caller).
111
111
  *
112
- * The engine is cloned one TOP-LEVEL entry at a time so unwanted `obj-*`
113
- * directories are never traversed or materialised — on a Firefox tree, even
112
+ * The engine is cloned one top-level entry at a time so unwanted `obj-*`
113
+ * directories are never traversed or materialised. On a Firefox tree, even
114
114
  * CoW-cloning and then deleting an objdir touches metadata for millions of
115
115
  * build outputs. With `withObjdir` exactly that objdir is included (after
116
116
  * {@link assertCloneSafeObjdir} refuses symlinked or engine-escaping objdirs
@@ -134,8 +134,8 @@ export declare function cloneTree(args: {
134
134
  export declare function listTrees(primaryRoot: string): Promise<TreeListEntry[]>;
135
135
  /**
136
136
  * Removes one tree. Refuses when a live process holds the tree's build
137
- * or engine-session lock — or when a lock directory exists whose ownership
138
- * cannot be established, which `--force` overrides — and never deletes a path
137
+ * or engine-session lock, or when a lock directory exists whose ownership
138
+ * cannot be established (which `--force` overrides). Never deletes a path
139
139
  * outside the trees directory (containment check before `rm -rf`).
140
140
  */
141
141
  export declare function removeTree(primaryRoot: string, name: string, options?: {