@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
@@ -21,16 +21,16 @@ import { lintPerPatch } from './lint-per-patch.js';
21
21
  /**
22
22
  * Resolves the diff the lint command should run against. Returns `null` when
23
23
  * there is nothing to lint (no matching files, clean tree, or empty diff
24
- * content) — callers treat that as the early-exit signal and stop.
24
+ * content). Callers treat that as the early-exit signal and stop.
25
25
  *
26
26
  * Extracted from {@link lintCommand} so that function stays under the
27
- * per-function LOC budget; the two file-mode and aggregate-mode branches
27
+ * per-function LOC budget. The two file-mode and aggregate-mode branches
28
28
  * share no state with the post-lint reporting pipeline.
29
29
  *
30
30
  * When `binaryName` is provided, the aggregate-mode branch (no explicit file
31
31
  * list) excludes paths under `browser/branding/<binaryName>/` from the diff.
32
- * `status` classifies those paths as `branding` — tool-managed material the
33
- * operator did not author directly — and without the exclusion
32
+ * `status` classifies those paths as `branding`, tool-managed material the
33
+ * operator did not author directly, and without the exclusion
34
34
  * `fireforge lint` on a fresh project immediately fails `large-patch-lines`
35
35
  * / `large-patch-files` / `missing-license-header` on the generated branding
36
36
  * tree. File-list mode (explicit paths) is unaffected: passing a branding
@@ -97,7 +97,7 @@ async function resolveLintDiff(engineDir, files, binaryName, furnacePrefixes) {
97
97
  return null;
98
98
  }
99
99
  // Aggregate-mode branding exclusion. A fresh-setup workspace carries a
100
- // large tool-managed branding diff the operator did not author; running
100
+ // large tool-managed branding diff the operator did not author. Running
101
101
  // the default lint against it fires size and license-header rules on
102
102
  // content that was never intended to survive in the patch queue as-is. The
103
103
  // exclusion mirrors the `branding` bucket in `fireforge status` so the two
@@ -119,7 +119,7 @@ async function resolveLintDiff(engineDir, files, binaryName, furnacePrefixes) {
119
119
  // stories) that the operator did not author and never intended to land
120
120
  // on the patch queue. Without the carve-out, a post-`furnace preview`
121
121
  // aggregate `lint` fails with one `missing-license-header` error per
122
- // generated story file — each is intentionally header-less because it is
122
+ // generated story file. Each is header-less on purpose because it is
123
123
  // re-generated from component metadata on every preview run.
124
124
  const filteredPaths = furnacePrefixes
125
125
  ? nonBrandingPaths.filter((path) => ![...furnacePrefixes].some((p) => path.startsWith(p)))
@@ -176,9 +176,9 @@ function buildMaxWarningsMessage(count, maxWarnings, scope) {
176
176
  * attribute via `issue.file`, which is the offending site and is owned by
177
177
  * some patch.
178
178
  *
179
- * Multiple owners: an issue is dropped if **any** owning patch waived the
180
- * rule. Conservative — never adds new findings, only drops already-waived
181
- * ones.
179
+ * Multiple owners: an issue is dropped if any owning patch waived the
180
+ * rule. This is conservative: it never adds new findings, only drops
181
+ * already-waived ones.
182
182
  *
183
183
  * @param issues - Issues collected from the aggregate lint run.
184
184
  * @param ctx - Patch queue context used to attribute file → patch.
@@ -208,7 +208,7 @@ export function applyAggregateLintIgnoreSuppression(issues, ctx) {
208
208
  }
209
209
  /**
210
210
  * Up-front flag validation for `lintCommand`: rejects `--only-introduced`
211
- * without `--since` and non-integer `--max-warnings` — each a
211
+ * without `--since` and non-integer `--max-warnings`, each a
212
212
  * misconfiguration that should fail loud rather than silently narrow the
213
213
  * result. Positional arguments in per-patch mode are patch selectors
214
214
  * and are validated downstream by `selectPatchSubset`.
@@ -216,7 +216,7 @@ export function applyAggregateLintIgnoreSuppression(issues, ctx) {
216
216
  function validateLintFlags(options) {
217
217
  // `--only-introduced` scopes the exit code to `--since`-tagged issues, so
218
218
  // without a revision to anchor the diff there is no "introduced" subset
219
- // to scope to — reject the combination up-front so a misconfigured CI
219
+ // to scope to. Reject the combination up-front so a misconfigured CI
220
220
  // invocation fails loud instead of silently treating every error as
221
221
  // cumulative and passing.
222
222
  if (options.onlyIntroduced && !options.since) {
@@ -226,13 +226,13 @@ function validateLintFlags(options) {
226
226
  (!Number.isInteger(options.maxWarnings) || options.maxWarnings < 0)) {
227
227
  throw new InvalidArgumentError('--max-warnings must be a non-negative integer.', '--max-warnings');
228
228
  }
229
- // `--patches` only means something in per-patch mode (it filters the
230
- // queue); in aggregate/file-list mode there is no patch loop to narrow.
229
+ // `--patches` only means something in per-patch mode, where it filters
230
+ // the queue. In aggregate/file-list mode there is no patch loop to narrow.
231
231
  if (options.patches !== undefined && !options.perPatch) {
232
232
  throw new InvalidArgumentError('--patches requires --per-patch.', '--patches');
233
233
  }
234
234
  // The JSON report is a per-patch artifact (per-patch size metrics and
235
- // suppressed issues); aggregate mode has no per-patch rows to report.
235
+ // suppressed issues). Aggregate mode has no per-patch rows to report.
236
236
  if (options.report !== undefined && !options.perPatch) {
237
237
  throw new InvalidArgumentError('--report requires --per-patch.', '--report');
238
238
  }
@@ -242,7 +242,7 @@ function validateLintFlags(options) {
242
242
  * applied patch summed (no explicit file scope, multi-patch queue), the
243
243
  * `large-patch-lines` / `large-patch-files` counts are an artefact of
244
244
  * aggregation rather than a property of any one patch. Surface the
245
- * `--per-patch` hint and downgrade those two rules to warnings; per-patch
245
+ * `--per-patch` hint and downgrade those two rules to warnings. Per-patch
246
246
  * mode keeps them as errors.
247
247
  */
248
248
  function downgradeAggregateSizeRules(issues, files, ctx) {
@@ -260,8 +260,8 @@ function downgradeAggregateSizeRules(issues, files, ctx) {
260
260
  }
261
261
  /**
262
262
  * Evaluates the patch-size rules (`large-patch-files` / `large-patch-lines`)
263
- * for an ad-hoc explicit-file-list lint, scoped to each file's **owning
264
- * patch** rather than the combined file list.
263
+ * for an ad-hoc explicit-file-list lint, scoped to each file's owning
264
+ * patch rather than the combined file list.
265
265
  *
266
266
  * Feeding every passed file to `lintExportedPatch` as one synthetic patch
267
267
  * makes a cross-patch selection of eight files belonging to four patches
@@ -269,7 +269,7 @@ function downgradeAggregateSizeRules(issues, files, ctx) {
269
269
  * oversized. This helper groups the affected files by their owning patch
270
270
  * (via the manifest's `filesAffected`), then runs `lintPatchSize` against
271
271
  * each owner's real file count + diff, honouring that owner's `tier` and
272
- * `lintIgnore` — so `lint <files>`, `lint --per-patch`, and
272
+ * `lintIgnore`, so `lint <files>`, `lint --per-patch`, and
273
273
  * `re-export --dry-run` agree on the same size findings for the same files.
274
274
  * Files no patch claims are evaluated together as one prospective new patch,
275
275
  * preserving the pre-export oversized-change warning.
@@ -338,9 +338,9 @@ async function lintOwningPatchSizes(engineDir, filesAffected, ctx) {
338
338
  */
339
339
  async function reportLintOutcome(engineDir, issues, options) {
340
340
  // Diff-scoping: tag each issue as introduced-in-current-task vs
341
- // cumulative-pre-existing-drift. Never filters — full set still prints
342
- // and exit code semantics are unchanged — but the per-line prefix and
343
- // summary make triage trivial on a large patch series.
341
+ // cumulative-pre-existing-drift. Nothing is filtered (the full set still
342
+ // prints and exit code semantics are unchanged), but the per-line prefix
343
+ // and summary make triage easier on a large patch series.
344
344
  const sinceActive = Boolean(options.since);
345
345
  if (options.since) {
346
346
  const diffFiles = await collectDiffFilePaths(engineDir, options.since);
@@ -371,8 +371,8 @@ async function reportLintOutcome(engineDir, issues, options) {
371
371
  }
372
372
  // Exit-code scope: `--only-introduced` narrows the failure criterion to
373
373
  // issues tagged `introduced`. Cumulative errors still print so the
374
- // operator sees the full queue state, but do not fail lint — the
375
- // case this serves is a branch whose own diff is clean but whose repo
374
+ // operator sees the full queue state, but do not fail lint. The case
375
+ // this serves is a branch whose own diff is clean but whose repo
376
376
  // already carries pre-existing queue errors from older patches.
377
377
  const failingErrors = options.onlyIntroduced
378
378
  ? errors.filter((i) => i.tag === 'introduced')
@@ -388,7 +388,7 @@ async function reportLintOutcome(engineDir, issues, options) {
388
388
  outro('Lint failed');
389
389
  throw new GeneralError(buildMaxWarningsMessage(warnings.length, options.maxWarnings));
390
390
  }
391
- // Notices are advisory and do not count as warnings — emitting "passed
391
+ // Notices are advisory and do not count as warnings: emitting "passed
392
392
  // with warnings" when only notices fired contradicts the preceding
393
393
  // `0 warning(s)` summary line and reads as a regression. Errors suppressed
394
394
  // by --only-introduced still warrant the "with warnings" outro: they print
@@ -417,10 +417,10 @@ export async function lintCommand(projectRoot, files, options = {}) {
417
417
  const paths = getProjectPaths(projectRoot);
418
418
  await assertEngineGitReady(paths.engine);
419
419
  if (options.perPatch) {
420
- // Positional arguments in per-patch mode select PATCHES through the
421
- // same alias resolution as --patches — a non-matching
422
- // positional fails loud against the queue listing, so an engine path
423
- // can never silently lint. Explicit --patches entries come first.
420
+ // Positional arguments in per-patch mode select patches through the
421
+ // same alias resolution as --patches. A non-matching positional fails
422
+ // loud against the queue listing, so an engine path can never silently
423
+ // lint. Explicit --patches entries come first.
424
424
  const perPatchOptions = files.length > 0 ? { ...options, patches: [...(options.patches ?? []), ...files] } : options;
425
425
  await lintPerPatch(projectRoot, paths, perPatchOptions);
426
426
  return;
@@ -429,7 +429,7 @@ export async function lintCommand(projectRoot, files, options = {}) {
429
429
  // into the aggregate-mode branding exclusion in `resolveLintDiff`.
430
430
  const config = await loadConfig(projectRoot);
431
431
  // Pull the Furnace-managed prefix set up-front so aggregate lint can
432
- // mirror the branding exclusion for Furnace material — without it,
432
+ // mirror the branding exclusion for Furnace material. Without it,
433
433
  // preview-generated stories under `browser/components/storybook/
434
434
  // stories/furnace/` show up as license-header errors on every
435
435
  // post-preview lint run.
@@ -446,7 +446,7 @@ export async function lintCommand(projectRoot, files, options = {}) {
446
446
  }
447
447
  // Ad-hoc explicit-file-list mode evaluates the patch-size rules per
448
448
  // owning patch (see `lintOwningPatchSizes`), so suppress the synthetic
449
- // combined-list size check in the shared pass — otherwise a cross-patch
449
+ // combined-list size check in the shared pass. Otherwise a cross-patch
450
450
  // selection synthesises a phantom oversized patch from the file count.
451
451
  const fileListMode = files.length > 0 && ctx !== undefined;
452
452
  let issues = [
@@ -459,15 +459,15 @@ export async function lintCommand(projectRoot, files, options = {}) {
459
459
  issues.push(...(await lintOwningPatchSizes(paths.engine, filesAffected, ctx)));
460
460
  }
461
461
  // Cross-patch rules operate over the whole queue, so run them whenever a
462
- // patches directory exists — they surface duplicate /dev/null creations
462
+ // patches directory exists. They surface duplicate /dev/null creations
463
463
  // and forward-import chains that the per-patch orchestrator cannot see.
464
464
  if (ctx) {
465
465
  issues.push(...lintPatchQueue(ctx));
466
466
  }
467
467
  // Honor per-patch `lintIgnore` in aggregate mode by attributing each
468
468
  // issue's file to its owning patches via the manifest's `filesAffected`.
469
- // Per-patch mode threads `lintIgnore` directly into `lintExportedPatch`;
470
- // aggregate mode has no patch-level scope to consult, so a check an
469
+ // Per-patch mode threads `lintIgnore` directly into `lintExportedPatch`.
470
+ // Aggregate mode has no patch-level scope to consult, so a check an
471
471
  // operator explicitly waived in `patches.json` re-surfaces on every
472
472
  // `--since` run (the CI default).
473
473
  if (ctx) {
@@ -533,8 +533,8 @@ export function registerLint(program, { getProjectRoot, withErrorHandling }) {
533
533
  .description('Manage the per-patch lint result cache')
534
534
  // Commander routes `fireforge lint cache` here even when the operator
535
535
  // meant to lint an engine directory literally named `cache`. A bare
536
- // `lint cache` (no subcommand) used to silently do nothing — make the
537
- // ambiguity explicit instead of doing the wrong operation quietly.
536
+ // `lint cache` (no subcommand) used to silently do nothing, so make
537
+ // the ambiguity explicit instead of doing the wrong operation quietly.
538
538
  .action(withErrorHandling(() => {
539
539
  info('Nothing to do: "lint cache" manages the lint result cache (try "lint cache clear"). ' +
540
540
  'To lint a directory named cache/, disambiguate with a trailing slash: "fireforge lint cache/".');
@@ -8,8 +8,8 @@
8
8
  * of commands to enumerate.
9
9
  *
10
10
  * The order of entries in {@link COMMAND_MANIFEST} is the order commands
11
- * appear in `fireforge --help`; it is intentional, not alphabetical, and
12
- * groups related commands together.
11
+ * appear in `fireforge --help`. The order is chosen rather than
12
+ * alphabetical, and groups related commands together.
13
13
  */
14
14
  import type { CommandRegistrar } from '../types/cli.js';
15
15
  /**
@@ -18,9 +18,9 @@ import type { CommandRegistrar } from '../types/cli.js';
18
18
  export interface CommandManifestEntry {
19
19
  /**
20
20
  * Human-readable command name, matching the first token of the
21
- * command line (e.g. `build`, `furnace`). Informational only — the
21
+ * command line (e.g. `build`, `furnace`). Informational only, since the
22
22
  * authoritative command string lives inside each registrar's
23
- * `.command(...)` call — but useful for documentation, manifest
23
+ * `.command(...)` call, but useful for documentation, manifest
24
24
  * introspection, and test assertions.
25
25
  */
26
26
  name: string;
@@ -45,8 +45,8 @@ export async function packageCommand(projectRoot, options) {
45
45
  const startTime = Date.now();
46
46
  let result;
47
47
  try {
48
- // `machPackageCapture` streams output live AND captures the tail for
49
- // post-run diagnostics; an inherit-only dispatch leaves the hint
48
+ // `machPackageCapture` streams output live and captures the tail for
49
+ // post-run diagnostics. An inherit-only dispatch leaves the hint
50
50
  // translator unable to see the failure text. The captured stderr is fed
51
51
  // through `explainMachError` below so recognised failure modes get an
52
52
  // actionable hint prepended to the raw mach output.
@@ -1,10 +1,10 @@
1
1
  /**
2
- * `fireforge patch compact` — closes ordinal gaps in the patch queue.
2
+ * `fireforge patch compact`: closes ordinal gaps in the patch queue.
3
3
  *
4
4
  * After deletes or splits, patch ordinals may have gaps (e.g. 1, 3, 7).
5
5
  * This command renumbers patches to close those gaps in a single atomic
6
6
  * operation, preserving relative order. Without a patch policy the whole
7
- * queue is renumbered from 1; with `patchPolicy.ranges` configured the
7
+ * queue is renumbered from 1. With `patchPolicy.ranges` configured the
8
8
  * compaction is range-aware (each category range compacts independently,
9
9
  * reserved ranges and out-of-range strays are left untouched).
10
10
  */
@@ -1,11 +1,11 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * `fireforge patch compact` — closes ordinal gaps in the patch queue.
3
+ * `fireforge patch compact`: closes ordinal gaps in the patch queue.
4
4
  *
5
5
  * After deletes or splits, patch ordinals may have gaps (e.g. 1, 3, 7).
6
6
  * This command renumbers patches to close those gaps in a single atomic
7
7
  * operation, preserving relative order. Without a patch policy the whole
8
- * queue is renumbered from 1; with `patchPolicy.ranges` configured the
8
+ * queue is renumbered from 1. With `patchPolicy.ranges` configured the
9
9
  * compaction is range-aware (each category range compacts independently,
10
10
  * reserved ranges and out-of-range strays are left untouched).
11
11
  */
@@ -32,9 +32,9 @@ function isReservedOrder(policyCfg, order) {
32
32
  *
33
33
  * Without a patch policy, all patches are renumbered to 1, 2, 3, … in
34
34
  * current sort order (historical behaviour). With `patchPolicy.ranges`
35
- * configured, compaction happens *within* each category range instead:
35
+ * configured, compaction happens within each category range instead:
36
36
  * each range's members are renumbered consecutively starting at the
37
- * range's first occupied ordinal, skipping reserved orders — mirroring
37
+ * range's first occupied ordinal, skipping reserved orders, mirroring
38
38
  * what `evaluateGaps` treats as gapless under `allowGaps: false`.
39
39
  * Reserved-range patches and patches outside their category's range are
40
40
  * never moved (a global renumber would project them across range
@@ -86,7 +86,7 @@ function computeCompactRenameMap(patches, policyCfg) {
86
86
  /**
87
87
  * Patches a range-aware compact leaves in place because they sit outside
88
88
  * their category's configured range (or outside all ranges) without a
89
- * reserved-range exception. They already violate `category-range`; moving
89
+ * reserved-range exception. They already violate `category-range`. Moving
90
90
  * them is a policy decision compact must not make silently.
91
91
  */
92
92
  function findCompactStrays(patches, policyCfg) {
@@ -155,9 +155,9 @@ export async function patchCompactCommand(projectRoot, options = {}) {
155
155
  }
156
156
  // The operator confirmed a specific plan. A queue that changed between
157
157
  // the prompt and the lock (an export landing a new patch, a delete)
158
- // yields a different plan whose renames were never shown — refuse
159
- // rather than commit them under a history entry that says "ok", the
160
- // same gate `patch reorder` applies.
158
+ // yields a different plan whose renames were never shown, so refuse
159
+ // rather than commit them under a history entry that says "ok". This
160
+ // is the same gate `patch reorder` applies.
161
161
  if (!renameMapsEqual(renameMap, currentRenameMap)) {
162
162
  throw new GeneralError('Patch queue changed while waiting for confirmation. Re-run compact to recompute the rename plan.');
163
163
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `fireforge patch delete <name>` — removes a patch from the queue.
2
+ * `fireforge patch delete <name>`: removes a patch from the queue.
3
3
  *
4
4
  * Destructive: refuses when a later patch imports a module owned by the
5
5
  * target (that would leave a dangling forward import), prompts for
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * `fireforge patch delete <name>` — removes a patch from the queue.
3
+ * `fireforge patch delete <name>`: removes a patch from the queue.
4
4
  *
5
5
  * Destructive: refuses when a later patch imports a module owned by the
6
6
  * target (that would leave a dangling forward import), prompts for
@@ -36,7 +36,7 @@ export async function patchDeleteCommand(projectRoot, identifier, options = {})
36
36
  // Build the full queue context once so we can scan each patch's newFiles
37
37
  // without re-parsing for the dependency check below.
38
38
  const baseCtx = await buildPatchQueueContext(paths.patches);
39
- // Hard refusal: an import owned by a LATER patch that points at any of
39
+ // Hard refusal: an import owned by a later patch that points at any of
40
40
  // the target's newly-created files is a dependency on the target. That
41
41
  // check is built directly from `baseCtx` rather than by diffing lint runs
42
42
  // over a projected state.
@@ -47,10 +47,10 @@ export async function patchDeleteCommand(projectRoot, identifier, options = {})
47
47
  targetNewFileLeaves.add(basename(fullPath));
48
48
  }
49
49
  }
50
- // Scan every later patch's new files AND its added lines on pre-existing
50
+ // Scan every later patch's new files and its added lines on pre-existing
51
51
  // files for import specifiers that resolve to a leaf owned by the target.
52
52
  // Uses the shared specifier extractor so dynamic `import()` and
53
- // `ChromeUtils.defineESModuleGetters` are picked up — the forward-import
53
+ // `ChromeUtils.defineESModuleGetters` are picked up: the forward-import
54
54
  // lint rule already covers those forms, and delete safety must match the
55
55
  // same set or it silently drops dependencies.
56
56
  //
@@ -110,14 +110,14 @@ export async function patchDeleteCommand(projectRoot, identifier, options = {})
110
110
  }
111
111
  const conflicts = dependents.length > 0
112
112
  ? {
113
- // Wording deliberately clarifies the *runtime* impact: `git apply`
113
+ // The wording spells out the runtime impact: `git apply`
114
114
  // does not resolve imports and succeeds even when a later patch
115
115
  // imports a file the target created, so the queue re-imports
116
116
  // cleanly. The breakage surfaces at browser startup when
117
117
  // `ChromeUtils.importESModule` cannot locate the deleted module.
118
- // Operators who deliberately plan to re-introduce the imported
119
- // files (rename, refactor) need to know this is the impact model,
120
- // not a patch-application failure.
118
+ // Operators who plan to re-introduce the imported files (rename,
119
+ // refactor) need to know this is the impact model rather than a
120
+ // patch-application failure.
121
121
  reason: `${dependents.length} later patch(es) contain import statements that reference files created by ${target.filename}. Patch application itself will still succeed, but runtime imports will fail at browser startup until those files are re-introduced.`,
122
122
  details: dependents,
123
123
  }
@@ -1,10 +1,9 @@
1
1
  /**
2
- * `fireforge patch lint-ignore <name>` — adds, removes, or clears entries
2
+ * `fireforge patch lint-ignore <name>`: adds, removes, or clears entries
3
3
  * in `PatchMetadata.lintIgnore` without rewriting the `.patch` file body.
4
4
  *
5
5
  * Companion to `fireforge re-export <name> --lint-ignore <id>` (which is
6
- * append-only). Existence is justified by the cases re-export cannot
7
- * express:
6
+ * append-only). It exists for the cases re-export cannot express:
8
7
  * - Removing a single entry without dropping the rest of the list.
9
8
  * - Clearing the entire list when the operator wants the rule(s) to
10
9
  * start firing again.
@@ -15,7 +14,7 @@
15
14
  * `--clear` must be supplied per invocation. The read-modify-write
16
15
  * happens inside the patch directory lock via {@link mutatePatchMetadata}
17
16
  * so a concurrent writer cannot interleave between the read and the
18
- * write — important when an operator scripts repeated invocations or
17
+ * write, which matters when an operator scripts repeated invocations or
19
18
  * runs `--add` and `--remove` back-to-back.
20
19
  */
21
20
  import { Command } from 'commander';
@@ -1,11 +1,10 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * `fireforge patch lint-ignore <name>` — adds, removes, or clears entries
3
+ * `fireforge patch lint-ignore <name>`: adds, removes, or clears entries
4
4
  * in `PatchMetadata.lintIgnore` without rewriting the `.patch` file body.
5
5
  *
6
6
  * Companion to `fireforge re-export <name> --lint-ignore <id>` (which is
7
- * append-only). Existence is justified by the cases re-export cannot
8
- * express:
7
+ * append-only). It exists for the cases re-export cannot express:
9
8
  * - Removing a single entry without dropping the rest of the list.
10
9
  * - Clearing the entire list when the operator wants the rule(s) to
11
10
  * start firing again.
@@ -16,7 +15,7 @@
16
15
  * `--clear` must be supplied per invocation. The read-modify-write
17
16
  * happens inside the patch directory lock via {@link mutatePatchMetadata}
18
17
  * so a concurrent writer cannot interleave between the read and the
19
- * write — important when an operator scripts repeated invocations or
18
+ * write, which matters when an operator scripts repeated invocations or
20
19
  * runs `--add` and `--remove` back-to-back.
21
20
  */
22
21
  import { Command } from 'commander';
@@ -31,9 +30,9 @@ import { requirePatchQueue, requirePatchTarget } from './patch-context.js';
31
30
  /**
32
31
  * Printed whenever `--add` lands a new check id. The waiver this command
33
32
  * writes turns per-patch lint green immediately, but consumer projects
34
- * commonly audit lintIgnore lists against a reviewed allow-map — discovering
35
- * that the map also needs updating otherwise costs a full downstream gate
36
- * run.
33
+ * commonly audit lintIgnore lists against a reviewed allow-map, and
34
+ * discovering that the map also needs updating otherwise costs a full
35
+ * downstream gate run.
37
36
  */
38
37
  const LINT_IGNORE_REVIEW_WARNING = "This lint waiver is subject to the project's patch-policy review process. " +
39
38
  'Downstream policy audits that mirror lintIgnore lists in a reviewed allow-map ' +
@@ -103,8 +102,8 @@ export async function patchLintIgnoreCommand(projectRoot, identifier, options =
103
102
  const isDryRun = options.dryRun === true;
104
103
  intro(isDryRun ? 'FireForge patch lint-ignore (dry run)' : 'FireForge patch lint-ignore');
105
104
  // Mode mutex: exactly one mode per invocation. Combinations like
106
- // `--add foo --remove bar` are rejected — an operator who needs both
107
- // runs the command twice (clearer audit trail) and `--clear` plus a
105
+ // `--add foo --remove bar` are rejected: an operator who needs both
106
+ // runs the command twice (clearer audit trail), and `--clear` plus a
108
107
  // mode is contradictory.
109
108
  const adding = (options.add?.length ?? 0) > 0;
110
109
  const removing = (options.remove?.length ?? 0) > 0;
@@ -123,8 +122,8 @@ export async function patchLintIgnoreCommand(projectRoot, identifier, options =
123
122
  // Destructive-operation contract (docs/lifecycle-invariants.md): manifest
124
123
  // metadata mutations get summary + dry-run + confirmation/--yes + history
125
124
  // uniformly. Accepting --yes without ever prompting makes the flag appear
126
- // only in the history record — and suppressing lint findings is precisely
127
- // the mutation an operator should consciously approve.
125
+ // only in the history record, and suppressing lint findings is the kind
126
+ // of mutation an operator should approve consciously.
128
127
  const currentList = target.lintIgnore ?? [];
129
128
  const projectedList = applyMode(currentList, mode, values) ?? [];
130
129
  const addsNewIds = mode === 'add' && projectedList.length > currentList.length;
@@ -145,15 +144,15 @@ export async function patchLintIgnoreCommand(projectRoot, identifier, options =
145
144
  const next = applyMode(existing.lintIgnore ?? [], mode, values);
146
145
  // Either set the new list when non-empty or unset the field
147
146
  // entirely. The mutation API splits these to keep the
148
- // exactOptionalPropertyTypes contract clean — only set values land
147
+ // exactOptionalPropertyTypes contract clean: only set values land
149
148
  // in the typed `Partial<PatchMetadata>`, and the unset list is
150
149
  // applied via `delete` after spread.
151
150
  return next !== undefined ? { set: { lintIgnore: next } } : { unset: ['lintIgnore'] };
152
151
  }, { waitLockSeconds: resolveWaitLockSeconds(options.waitLock), command: 'patch lint-ignore' });
153
152
  if (!result) {
154
153
  // Race: target vanished between the manifest read above and the
155
- // locked mutate. Surfacing as a hard error rather than a silent
156
- // no-op — the operator's intent did not land.
154
+ // locked mutate. Surfaced as a hard error rather than a silent
155
+ // no-op, because the operator's intent did not land.
157
156
  throw new GeneralError(`Patch ${target.filename} disappeared from the manifest during the update. Re-run after investigating.`);
158
157
  }
159
158
  const existing = result.before.lintIgnore ?? [];
@@ -195,7 +194,7 @@ export function registerPatchLintIgnore(parent, context) {
195
194
  addWaitLockOption(command).action(withErrorHandling(async (name, options) => {
196
195
  // Commander defaults `--add`/`--remove` to `[]` so they appear in
197
196
  // the options object even when unused. Strip empty arrays so
198
- // `pickDefined` sees them as absent — otherwise the mode-count
197
+ // `pickDefined` sees them as absent. Otherwise the mode-count
199
198
  // mutex would treat zero-length arrays as a present mode.
200
199
  const normalized = {};
201
200
  if (options.add !== undefined && options.add.length > 0)
@@ -1,12 +1,12 @@
1
1
  /**
2
- * `fireforge patch move-files <from> <to> --create --order <n>` — creates
2
+ * `fireforge patch move-files <from> <to> --create --order <n>` creates
3
3
  * the target patch at the requested sparse order and moves the files into it
4
4
  * as one transaction. This is the transactional bootstrap of a split:
5
5
  * without it, moving files into a not-yet-existing patch requires a manual
6
6
  * shrink-then-export dance with hand-repointed staged-dependency owners.
7
7
  *
8
8
  * Mirrors `patch split` end-to-end (same planning, projection lint, policy
9
- * enforcement, and locked commit); the `<to>` argument becomes the new
9
+ * enforcement, and locked commit). The `<to>` argument becomes the new
10
10
  * patch's name/slug the way `split --name` does.
11
11
  */
12
12
  import type { PatchMoveFilesOptions } from '../../types/commands/index.js';
@@ -1,13 +1,13 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * `fireforge patch move-files <from> <to> --create --order <n>` — creates
3
+ * `fireforge patch move-files <from> <to> --create --order <n>` creates
4
4
  * the target patch at the requested sparse order and moves the files into it
5
5
  * as one transaction. This is the transactional bootstrap of a split:
6
6
  * without it, moving files into a not-yet-existing patch requires a manual
7
7
  * shrink-then-export dance with hand-repointed staged-dependency owners.
8
8
  *
9
9
  * Mirrors `patch split` end-to-end (same planning, projection lint, policy
10
- * enforcement, and locked commit); the `<to>` argument becomes the new
10
+ * enforcement, and locked commit). The `<to>` argument becomes the new
11
11
  * patch's name/slug the way `split --name` does.
12
12
  */
13
13
  import { getProjectPaths, loadConfig } from '../../core/config.js';
@@ -33,7 +33,7 @@ export async function patchMoveFilesCreateCommand(projectRoot, fromIdentifier, n
33
33
  intro(options.dryRun === true
34
34
  ? 'FireForge patch move-files --create (dry run)'
35
35
  : 'FireForge patch move-files --create');
36
- // Refuse a prompt-less run BEFORE the diff/lint work, not after it.
36
+ // Refuse a prompt-less run before the diff/lint work, not after it.
37
37
  assertConfirmationAvailable('patch move-files --create', options);
38
38
  const paths = getProjectPaths(projectRoot);
39
39
  const config = await loadConfig(projectRoot);
@@ -67,7 +67,7 @@ export async function patchMoveFilesCreateCommand(projectRoot, fromIdentifier, n
67
67
  const placementOptions = { order: options.order };
68
68
  const placement = await resolvePlacementPlan(paths.patches, placementOptions, category, newPatchName, config);
69
69
  // The filename slug pipeline (resolvePlacementPlan above) strips redundant
70
- // category prefixes; the manifest display name must agree with the bare-slug
70
+ // category prefixes. The manifest display name must agree with the bare-slug
71
71
  // naming policy, exactly as `export --name` already does.
72
72
  const displayName = normalizePatchDisplayName(newPatchName, category);
73
73
  if (displayName !== newPatchName) {
@@ -93,7 +93,7 @@ export async function patchMoveFilesCreateCommand(projectRoot, fromIdentifier, n
93
93
  // The whole-queue context (built once, with the config so it carries the
94
94
  // same patch-policy shape as the committed `lint --per-patch` gate) makes
95
95
  // cross-patch `resource:///` imports and sibling head.js harness roots
96
- // resolve exactly as they will after the move lands — without it the
96
+ // resolve exactly as they will after the move lands. Without it the
97
97
  // projection lint is blind.
98
98
  const patchQueueCtx = await buildPatchQueueContext(paths.patches, config);
99
99
  const ignoreChecks = source.lintIgnore ? new Set(source.lintIgnore) : undefined;
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Transactional file-ownership move into an EXISTING patch.
2
+ * Transactional file-ownership move into an existing patch.
3
3
  *
4
4
  * A preview-only `patch move-files <from> <to>` prints two
5
5
  * `re-export --files` commands whose real execution costs three further
6
6
  * refusals (`--allow-shrink`, `--yes`, and a projected
7
- * `duplicate-new-file-creation` unless the SHRINK lands first — while the
7
+ * `duplicate-new-file-creation` unless the shrink lands first, while the
8
8
  * printed plan lists the grow first). This module performs the same
9
9
  * shrink→grow as one transaction under the patch-directory lock with
10
10
  * rollback, mirroring `patch split` / `move-files --create`.
@@ -1,11 +1,11 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * Transactional file-ownership move into an EXISTING patch.
3
+ * Transactional file-ownership move into an existing patch.
4
4
  *
5
5
  * A preview-only `patch move-files <from> <to>` prints two
6
6
  * `re-export --files` commands whose real execution costs three further
7
7
  * refusals (`--allow-shrink`, `--yes`, and a projected
8
- * `duplicate-new-file-creation` unless the SHRINK lands first — while the
8
+ * `duplicate-new-file-creation` unless the shrink lands first, while the
9
9
  * printed plan lists the grow first). This module performs the same
10
10
  * shrink→grow as one transaction under the patch-directory lock with
11
11
  * rollback, mirroring `patch split` / `move-files --create`.
@@ -182,7 +182,7 @@ async function commitMoveInto(patchesDir, plan, waitLockSeconds) {
182
182
  */
183
183
  export async function runMoveFilesInto(args) {
184
184
  const { enginePath, patchesDir, source, target, files, sourceAfter, targetAfter, options } = args;
185
- // Refuse a prompt-less run BEFORE the diff/lint work, not after it.
185
+ // Refuse a prompt-less run before the diff/lint work, not after it.
186
186
  assertConfirmationAvailable('patch move-files', options);
187
187
  const sourceDiff = await buildSplitDiff(enginePath, sourceAfter, 'remaining', source.filename);
188
188
  const targetDiff = await buildSplitDiff(enginePath, targetAfter, 'moved', target.filename);
@@ -128,7 +128,7 @@ export async function patchMoveFilesCommand(projectRoot, fromIdentifier, toIdent
128
128
  note(formatFiles(targetAfter), `${target.filename} files after move`);
129
129
  // Manual fallback (e.g. when the worktree cannot carry both patches'
130
130
  // content right now): the equivalent re-export choreography, in
131
- // EXECUTABLE order — the shrink must land before the grow, or the
131
+ // executable order. The shrink must land before the grow, or the
132
132
  // projected cross-patch lint refuses the pair with
133
133
  // duplicate-new-file-creation.
134
134
  const applySource = formatReExportCommand(source.filename, sourceAfter, [
@@ -10,7 +10,7 @@ import type { ProjectPaths } from '../../types/config.js';
10
10
  export interface PatchQueueContext {
11
11
  /** Project paths resolved from the project root. */
12
12
  paths: ProjectPaths;
13
- /** The loaded manifest; guaranteed to contain at least one patch. */
13
+ /** The loaded manifest, guaranteed to contain at least one patch. */
14
14
  manifest: PatchesManifest;
15
15
  }
16
16
  /**
@@ -1,14 +1,14 @@
1
1
  /**
2
- * `fireforge patch rename <name>` — relabels a patch's filename, manifest
2
+ * `fireforge patch rename <name>`: relabels a patch's filename, manifest
3
3
  * `name`, and (optionally) `description` without rewriting the `.patch` file
4
4
  * body.
5
5
  *
6
6
  * Companion to `re-export --files <subset>`. Re-export shrinks the body and
7
7
  * `filesAffected` but leaves the patch's identity describing the pre-shrink
8
8
  * scope. The only alternative for that drift is `delete` + re-export, which
9
- * briefly removes the patch from the queue — any forward-import dependent
10
- * then refuses the re-export until the deleted patch's siblings are
11
- * rewritten.
9
+ * briefly removes the patch from the queue, and any forward-import
10
+ * dependent then refuses the re-export until the deleted patch's siblings
11
+ * are rewritten.
12
12
  *
13
13
  * The filename rename and the manifest mutation happen under the patch
14
14
  * directory lock so concurrent exports cannot allocate the new filename, and