@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
@@ -20,7 +20,7 @@ export declare function validatePatchesManifestConsistency(patchesDir: string):
20
20
  *
21
21
  * Drift that is only in `filesAffected` is a derived value disagreeing with
22
22
  * the diff it describes, and the narrow repair fixes exactly that. Naming the
23
- * whole-manifest rebuild for it — as this hint used to, unconditionally — puts
23
+ * whole-manifest rebuild for it (as this hint used to, unconditionally) puts
24
24
  * an operator one keystroke from rewriting every row in the manifest to
25
25
  * correct one list.
26
26
  */
@@ -30,19 +30,19 @@ export declare function recommendManifestRepair(issues: readonly PatchManifestCo
30
30
  * lists patches whose manifest entry was reconstructed from filename,
31
31
  * mtime, and diff alone (no pre-existing manifest entry to preserve).
32
32
  * These entries carry generic descriptions and mtime-based
33
- * timestamps; callers like `doctor --repair-patches-manifest` surface
33
+ * timestamps. Callers like `doctor --repair-patches-manifest` surface
34
34
  * a per-patch review warning so operators know which metadata was
35
35
  * invented vs which was restored.
36
36
  */
37
37
  export interface RebuildPatchesManifestResult {
38
38
  /**
39
39
  * Rebuilt manifest, ready to be re-applied by callers. Persisted unless
40
- * the run was a dry run — see {@link RebuildPatchesManifestResult.written}.
40
+ * the run was a dry run. See {@link RebuildPatchesManifestResult.written}.
41
41
  */
42
42
  manifest: PatchesManifest;
43
43
  /**
44
44
  * Filenames whose manifest entry had no pre-existing metadata to
45
- * preserve — every descriptive field on these entries is inferred.
45
+ * preserve. Every descriptive field on these entries is inferred.
46
46
  */
47
47
  recoveredFilenames: string[];
48
48
  /**
@@ -59,7 +59,7 @@ export interface RebuildPatchesManifestOptions extends PatchDirectoryLockOptions
59
59
  /**
60
60
  * Proceed even when patches.json exists but cannot be parsed, in which case
61
61
  * there is no existing metadata to preserve and every descriptive field on
62
- * every entry is invented. Refused without this flag — see
62
+ * every entry is invented. Refused without this flag. See
63
63
  * {@link rebuildPatchesManifest}.
64
64
  */
65
65
  allowMetadataLoss?: boolean;
@@ -69,7 +69,7 @@ export interface RebuildPatchesManifestOptions extends PatchDirectoryLockOptions
69
69
  /**
70
70
  * Rebuilds patches.json from the patch files currently present on disk.
71
71
  *
72
- * This is a MERGE, not a from-scratch rebuild: only `filesAffected` and
72
+ * This is a merge, not a from-scratch rebuild: only `filesAffected` and
73
73
  * `order` are recomputed from the patch files, and every other field on an
74
74
  * existing entry is carried forward untouched. Entries with no pre-existing
75
75
  * metadata are recovered from filename structure, patch contents, and file
@@ -82,7 +82,7 @@ export interface RebuildPatchesManifestOptions extends PatchDirectoryLockOptions
82
82
  * @param patchesDir - Path to the patches directory
83
83
  * @param fallbackSourceEsrVersion - source version to use for recovered legacy entries
84
84
  * @param options - Lock options plus `allowMetadataLoss` / `dryRun`
85
- * @returns {@link RebuildPatchesManifestResult} — the rebuilt manifest, the
85
+ * @returns {@link RebuildPatchesManifestResult}: the rebuilt manifest, the
86
86
  * filenames that were reconstructed from generic defaults, and the rows
87
87
  * dropped because their patch file is gone.
88
88
  */
@@ -86,7 +86,7 @@ export async function validatePatchesManifestConsistency(patchesDir) {
86
86
  *
87
87
  * Drift that is only in `filesAffected` is a derived value disagreeing with
88
88
  * the diff it describes, and the narrow repair fixes exactly that. Naming the
89
- * whole-manifest rebuild for it — as this hint used to, unconditionally — puts
89
+ * whole-manifest rebuild for it (as this hint used to, unconditionally) puts
90
90
  * an operator one keystroke from rewriting every row in the manifest to
91
91
  * correct one list.
92
92
  */
@@ -103,7 +103,7 @@ export function recommendManifestRepair(issues) {
103
103
  /**
104
104
  * Rebuilds patches.json from the patch files currently present on disk.
105
105
  *
106
- * This is a MERGE, not a from-scratch rebuild: only `filesAffected` and
106
+ * This is a merge, not a from-scratch rebuild: only `filesAffected` and
107
107
  * `order` are recomputed from the patch files, and every other field on an
108
108
  * existing entry is carried forward untouched. Entries with no pre-existing
109
109
  * metadata are recovered from filename structure, patch contents, and file
@@ -116,7 +116,7 @@ export function recommendManifestRepair(issues) {
116
116
  * @param patchesDir - Path to the patches directory
117
117
  * @param fallbackSourceEsrVersion - source version to use for recovered legacy entries
118
118
  * @param options - Lock options plus `allowMetadataLoss` / `dryRun`
119
- * @returns {@link RebuildPatchesManifestResult} — the rebuilt manifest, the
119
+ * @returns {@link RebuildPatchesManifestResult}: the rebuilt manifest, the
120
120
  * filenames that were reconstructed from generic defaults, and the rows
121
121
  * dropped because their patch file is gone.
122
122
  */
@@ -125,7 +125,7 @@ export async function rebuildPatchesManifest(patchesDir, fallbackSourceEsrVersio
125
125
  // patch-directory lock (invariant 2, docs/lifecycle-invariants.md):
126
126
  // manifest writes serialize on this lock, so without it a repair racing a
127
127
  // concurrent export/reorder can clobber the other writer's manifest. Not
128
- // reentrant — callers must not already hold it.
128
+ // reentrant: callers must not already hold it.
129
129
  //
130
130
  // A dry run takes the lock too: it reads the same manifest and patch bodies
131
131
  // a real run would, and a projection computed against a queue being
@@ -136,9 +136,9 @@ async function rebuildPatchesManifestUnderLock(patchesDir, fallbackSourceEsrVers
136
136
  const manifestState = await loadPatchesManifestState(patchesDir);
137
137
  const existingEntries = new Map();
138
138
  // An unparseable manifest yields `manifest: null`, which the merge below
139
- // cannot distinguish from "no manifest at all" — every entry would be
139
+ // cannot distinguish from "no manifest at all". Every entry would be
140
140
  // treated as new and every descriptive field reinvented. `filesAffected`
141
- // is the only field a .patch body can yield; `stagedDependencies`,
141
+ // is the only field a .patch body can yield. `stagedDependencies`,
142
142
  // `lintIgnore`, `tier`, `description`, `category`, `createdAt` and the
143
143
  // source version cannot be reconstructed from a diff at all. Refuse rather
144
144
  // than write that, since the write is what makes it unrecoverable on a
@@ -187,21 +187,20 @@ async function rebuildPatchesManifestUnderLock(patchesDir, fallbackSourceEsrVers
187
187
  // callers can warn the operator per-patch. A missing entry means every
188
188
  // descriptive field (`description`, `createdAt`, `category`) was
189
189
  // invented rather than preserved, and FireForge patch files carry no
190
- // header metadata that could carry a human description forward — so
190
+ // header metadata that could carry a human description forward, so
191
191
  // visibility is the best available, and silent overwrites of
192
192
  // human-written descriptions during a recovery run are the failure to
193
193
  // avoid.
194
194
  recoveredFilenames.push(patch.filename);
195
195
  }
196
- // The rebuild OWNS exactly two fields — `filesAffected` (recomputed from
196
+ // The rebuild owns exactly two fields: `filesAffected` (recomputed from
197
197
  // the patch body) and `order` (from the filename ordinal). Everything
198
198
  // else on an existing entry is carried forward by the spread, so a field
199
- // a .patch cannot express — `stagedDependencies`, `lintIgnore`, `tier`,
200
- // and whatever is added to PatchMetadata next — survives a repair by
201
- // construction rather than by someone remembering to list it here. It was
202
- // an enumerated literal until `stagedDependencies` was dropped from every
203
- // entry that had one, which is the failure this shape prevents from
204
- // recurring.
199
+ // a .patch cannot express (`stagedDependencies`, `lintIgnore`, `tier`,
200
+ // and whatever is added to PatchMetadata next) survives a repair without
201
+ // anyone remembering to list it here. It was an enumerated literal until
202
+ // `stagedDependencies` was dropped from every entry that had one, which
203
+ // is the failure this shape prevents from recurring.
205
204
  const rebuilt = {
206
205
  ...(existing ?? {}),
207
206
  filename: patch.filename,
@@ -228,9 +227,9 @@ async function rebuildPatchesManifestUnderLock(patchesDir, fallbackSourceEsrVers
228
227
  patches: rebuiltPatches,
229
228
  };
230
229
  // Whatever is left in the map had a manifest row but no patch file, so the
231
- // rebuild drops it. That is the correct outcome — the file is the source of
232
- // truth — but dropping rows without naming them is indistinguishable from
233
- // never having had them.
230
+ // rebuild drops it. That is the correct outcome, since the file is the
231
+ // source of truth, but dropping rows without naming them is
232
+ // indistinguishable from never having had them.
234
233
  const droppedFilenames = [...existingEntries.keys()].sort((left, right) => left.localeCompare(right));
235
234
  if (options.dryRun === true) {
236
235
  return {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Narrow repair for `filesAffected` — the one manifest field a `.patch` body
2
+ * Narrow repair for `filesAffected`, the one manifest field a `.patch` body
3
3
  * can actually yield.
4
4
  *
5
5
  * A `files-affected-mismatch` is pure derived-value drift: the manifest's list
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * Narrow repair for `filesAffected` — the one manifest field a `.patch` body
3
+ * Narrow repair for `filesAffected`, the one manifest field a `.patch` body
4
4
  * can actually yield.
5
5
  *
6
6
  * A `files-affected-mismatch` is pure derived-value drift: the manifest's list
@@ -47,7 +47,7 @@ async function repairPatchesFilesAffectedUnderLock(patchesDir, filenames, option
47
47
  const row = rowByFilename.get(filename);
48
48
  if (patchPath === undefined || !row) {
49
49
  // A missing patch file or a missing row is a different consistency
50
- // issue with a different remedy; this repair reports it rather than
50
+ // issue with a different remedy. This repair reports it rather than
51
51
  // inventing a row or deleting one.
52
52
  skippedFilenames.push(filename);
53
53
  continue;
@@ -63,7 +63,7 @@ async function repairPatchesFilesAffectedUnderLock(patchesDir, filenames, option
63
63
  return { repairs, skippedFilenames, written: false };
64
64
  }
65
65
  const correctedByFilename = new Map(repairs.map((repair) => [repair.filename, repair.after]));
66
- // Row-scoped mutation, so every untouched entry keeps its exact JSON shape —
66
+ // Row-scoped mutation, so every untouched entry keeps its exact JSON shape:
67
67
  // no re-sorted `filesAffected` lists and no reader-only fallback fields
68
68
  // serialized into rows this repair has no business touching.
69
69
  await mutatePatchRowsInManifest(patchesDir, [...correctedByFilename.keys()], (existing) => {
@@ -39,10 +39,10 @@ export declare function loadPatchesManifestState(patchesDir: string): Promise<Lo
39
39
  /**
40
40
  * Loads the patches manifest if it exists.
41
41
  *
42
- * READ-ONLY callers only: this collapses "absent" and "corrupt" into null.
43
- * Any code path that will WRITE the manifest (or delete patch files based
44
- * on its content) must use {@link loadPatchesManifestForWrite} instead —
45
- * treating a corrupt manifest as empty and then saving destroys every
42
+ * Read-only callers only: this collapses "absent" and "corrupt" into null.
43
+ * Any code path that writes the manifest (or deletes patch files based
44
+ * on its content) must use {@link loadPatchesManifestForWrite} instead.
45
+ * Treating a corrupt manifest as empty and then saving destroys every
46
46
  * existing patch's metadata.
47
47
  *
48
48
  * @param patchesDir - Path to the patches directory
@@ -52,7 +52,7 @@ export declare function loadPatchesManifest(patchesDir: string): Promise<Patches
52
52
  /**
53
53
  * Loads the patches manifest for a mutating operation.
54
54
  *
55
- * Returns null only when the manifest genuinely does not exist; a manifest
55
+ * Returns null only when the manifest genuinely does not exist. A manifest
56
56
  * that exists but fails to parse/validate throws
57
57
  * {@link PatchManifestCorruptError} so the caller aborts instead of
58
58
  * rebuilding an empty queue over the top of the corrupt file.
@@ -80,11 +80,11 @@ export declare function mutatePatchRowsInManifest(patchesDir: string, filenames:
80
80
  export declare function addPatchToManifest(patchesDir: string, metadata: PatchMetadata, removeFilenames?: string[]): Promise<void>;
81
81
  /**
82
82
  * Removes a single patch entry from the manifest by filename. Leaves the
83
- * ordinal gap in place — callers wanting to close the gap must use
83
+ * ordinal gap in place. Callers wanting to close the gap must use
84
84
  * {@link renumberPatchesInManifest} explicitly. This matches the spec: delete
85
85
  * is a row removal, not a resequencing.
86
86
  *
87
- * Not atomic with any on-disk patch file deletion; callers are expected to
87
+ * Not atomic with any on-disk patch file deletion. Callers are expected to
88
88
  * remove the .patch file separately under the same lock.
89
89
  *
90
90
  * @param patchesDir - Path to the patches directory
@@ -99,7 +99,7 @@ export declare function removePatchFromManifest(patchesDir: string, filename: st
99
99
  export interface PatchRenameEntry {
100
100
  /** New filename (e.g. `005-ui-sidebar.patch`). */
101
101
  newFilename: string;
102
- /** New numeric order — must match the prefix of `newFilename`. */
102
+ /** New numeric order. Must match the prefix of `newFilename`. */
103
103
  newOrder: number;
104
104
  }
105
105
  /**
@@ -129,7 +129,7 @@ export declare function rewriteStagedDependencyOwners(patch: PatchMetadata, rena
129
129
  * orders. Failure semantics:
130
130
  *
131
131
  * - **Phase 1 (stage)**: rolls back by renaming staged files back to
132
- * their originals. Manifest is untouched. Best-effort — a rollback
132
+ * their originals. Manifest is untouched. Best-effort: a rollback
133
133
  * rename failure is warned but not re-thrown.
134
134
  * - **Phase 2 (stage → final)**: rolls back to the pre-operation state
135
135
  * by reversing every partial step: files already at their final
@@ -138,13 +138,13 @@ export declare function rewriteStagedDependencyOwners(patch: PatchMetadata, rena
138
138
  * the rollback itself fails midway, the thrown error is augmented
139
139
  * with a description of the residue so the operator can inspect.
140
140
  * - **Phase 3 (manifest write)**: by this point all files are on disk
141
- * at their new names; a manifest write failure will roll the files
141
+ * at their new names. A manifest write failure will roll the files
142
142
  * back to their original names before re-throwing so the directory
143
143
  * and manifest stay in agreement. A rollback failure at this stage
144
144
  * is warned (manifest was never mutated) and the original error is
145
145
  * re-thrown.
146
146
  *
147
- * Does not sort the rename map for the caller — the map is the authoritative
147
+ * Does not sort the rename map for the caller. The map is the authoritative
148
148
  * plan. Entries not present in the map keep their existing filename and
149
149
  * order.
150
150
  *
@@ -154,7 +154,7 @@ export declare function rewriteStagedDependencyOwners(patch: PatchMetadata, rena
154
154
  export declare function renumberPatchesInManifest(patchesDir: string, renameMap: Map<string, PatchRenameEntry>): Promise<void>;
155
155
  /**
156
156
  * Thrown when {@link removePatchFileAndManifest} cannot complete the file
157
- * delete AND cannot restore the manifest row afterward, so the on-disk
157
+ * delete and cannot restore the manifest row afterward, so the on-disk
158
158
  * state and manifest state are known to disagree. Carries both the
159
159
  * primary delete error and the rollback error so the caller (and the
160
160
  * operator) can see the full failure chain instead of only the original
@@ -162,7 +162,7 @@ export declare function renumberPatchesInManifest(patchesDir: string, renameMap:
162
162
  *
163
163
  * Extends {@link FireForgeError} so the CLI top-level handler routes it
164
164
  * through the rich-error formatter rather than the generic unexpected-error
165
- * path; the dedicated `.name` is kept so programmatic callers and tests
165
+ * path. The dedicated `.name` is kept so programmatic callers and tests
166
166
  * can still distinguish it with `instanceof PatchDeleteRollbackError`.
167
167
  */
168
168
  export declare class PatchDeleteRollbackError extends FireForgeError {
@@ -174,7 +174,7 @@ export declare class PatchDeleteRollbackError extends FireForgeError {
174
174
  }
175
175
  /**
176
176
  * Deletes both a patch file on disk and its manifest row under the caller's
177
- * lock. This is a convenience for the `patch delete` command; callers that
177
+ * lock. This is a convenience for the `patch delete` command. Callers that
178
178
  * need different ordering (e.g. deleting the file first without touching the
179
179
  * manifest) should call the primitives separately.
180
180
  *
@@ -50,10 +50,10 @@ export async function loadPatchesManifestState(patchesDir) {
50
50
  /**
51
51
  * Loads the patches manifest if it exists.
52
52
  *
53
- * READ-ONLY callers only: this collapses "absent" and "corrupt" into null.
54
- * Any code path that will WRITE the manifest (or delete patch files based
55
- * on its content) must use {@link loadPatchesManifestForWrite} instead —
56
- * treating a corrupt manifest as empty and then saving destroys every
53
+ * Read-only callers only: this collapses "absent" and "corrupt" into null.
54
+ * Any code path that writes the manifest (or deletes patch files based
55
+ * on its content) must use {@link loadPatchesManifestForWrite} instead.
56
+ * Treating a corrupt manifest as empty and then saving destroys every
57
57
  * existing patch's metadata.
58
58
  *
59
59
  * @param patchesDir - Path to the patches directory
@@ -66,7 +66,7 @@ export async function loadPatchesManifest(patchesDir) {
66
66
  /**
67
67
  * Loads the patches manifest for a mutating operation.
68
68
  *
69
- * Returns null only when the manifest genuinely does not exist; a manifest
69
+ * Returns null only when the manifest genuinely does not exist. A manifest
70
70
  * that exists but fails to parse/validate throws
71
71
  * {@link PatchManifestCorruptError} so the caller aborts instead of
72
72
  * rebuilding an empty queue over the top of the corrupt file.
@@ -175,11 +175,11 @@ export async function addPatchToManifest(patchesDir, metadata, removeFilenames)
175
175
  }
176
176
  /**
177
177
  * Removes a single patch entry from the manifest by filename. Leaves the
178
- * ordinal gap in place — callers wanting to close the gap must use
178
+ * ordinal gap in place. Callers wanting to close the gap must use
179
179
  * {@link renumberPatchesInManifest} explicitly. This matches the spec: delete
180
180
  * is a row removal, not a resequencing.
181
181
  *
182
- * Not atomic with any on-disk patch file deletion; callers are expected to
182
+ * Not atomic with any on-disk patch file deletion. Callers are expected to
183
183
  * remove the .patch file separately under the same lock.
184
184
  *
185
185
  * @param patchesDir - Path to the patches directory
@@ -210,7 +210,7 @@ export async function removePatchFromManifest(patchesDir, filename) {
210
210
  * sorted ascending (readers take manifest order as apply order without
211
211
  * re-sorting).
212
212
  *
213
- * Contiguity itself is deliberately NOT checked: `patchPolicy.ranges`
213
+ * Contiguity itself is not checked, on purpose: `patchPolicy.ranges`
214
214
  * reserves gaps on purpose, so a hole is a legitimate queue shape.
215
215
  *
216
216
  * @param patches - The manifest rows about to be written
@@ -288,7 +288,7 @@ export function rewriteStagedDependencyOwners(patch, renameLookup) {
288
288
  * orders. Failure semantics:
289
289
  *
290
290
  * - **Phase 1 (stage)**: rolls back by renaming staged files back to
291
- * their originals. Manifest is untouched. Best-effort — a rollback
291
+ * their originals. Manifest is untouched. Best-effort: a rollback
292
292
  * rename failure is warned but not re-thrown.
293
293
  * - **Phase 2 (stage → final)**: rolls back to the pre-operation state
294
294
  * by reversing every partial step: files already at their final
@@ -297,13 +297,13 @@ export function rewriteStagedDependencyOwners(patch, renameLookup) {
297
297
  * the rollback itself fails midway, the thrown error is augmented
298
298
  * with a description of the residue so the operator can inspect.
299
299
  * - **Phase 3 (manifest write)**: by this point all files are on disk
300
- * at their new names; a manifest write failure will roll the files
300
+ * at their new names. A manifest write failure will roll the files
301
301
  * back to their original names before re-throwing so the directory
302
302
  * and manifest stay in agreement. A rollback failure at this stage
303
303
  * is warned (manifest was never mutated) and the original error is
304
304
  * re-thrown.
305
305
  *
306
- * Does not sort the rename map for the caller — the map is the authoritative
306
+ * Does not sort the rename map for the caller. The map is the authoritative
307
307
  * plan. Entries not present in the map keep their existing filename and
308
308
  * order.
309
309
  *
@@ -360,7 +360,7 @@ export async function renumberPatchesInManifest(patchesDir, renameMap) {
360
360
  await rename(join(patchesDir, staged), targetPath);
361
361
  // Postcondition assert: confirm the target actually exists on disk
362
362
  // before marking the rename complete. A silent rename failure leaves
363
- // the manifest and the filesystem disagreeing — manifest rewritten to
363
+ // the manifest and the filesystem disagreeing: manifest rewritten to
364
364
  // new filenames while the old files stay on disk. If the assert fires,
365
365
  // the Phase 2 rollback undoes prior moves before re-throwing.
366
366
  if (!(await pathExistsStrict(targetPath))) {
@@ -370,7 +370,7 @@ export async function renumberPatchesInManifest(patchesDir, renameMap) {
370
370
  }
371
371
  }
372
372
  catch (error) {
373
- // Phase 2 rollback — reverse both the partial final-name moves and
373
+ // Phase 2 rollback: reverse both the partial final-name moves and
374
374
  // the phase-1 staging. This collapses the directory back to its
375
375
  // pre-operation filenames so the manifest (which was never
376
376
  // touched) remains consistent with what is on disk. If any
@@ -404,7 +404,7 @@ export async function renumberPatchesInManifest(patchesDir, renameMap) {
404
404
  throw error;
405
405
  }
406
406
  // Phase 3: rewrite the manifest rows. Any entry without a rename keeps its
407
- // existing metadata; entries in the map get their filename + order
407
+ // existing metadata. Entries in the map get their filename + order
408
408
  // updated. Sort by the new order so the manifest remains ordered.
409
409
  const filenameUpdates = new Map();
410
410
  for (const [oldFilename, entry] of renameMap) {
@@ -428,13 +428,13 @@ export async function renumberPatchesInManifest(patchesDir, renameMap) {
428
428
  try {
429
429
  // Phase 3 is the one write that makes the renumber visible. Every file
430
430
  // has already moved on disk, so a manifest that disagrees with the new
431
- // filenames is the worst outcome available here — the queue would apply
432
- // in an order nothing on disk reflects. The callers compute the rename
433
- // map (compact, reorder, export placement) and each maintains contiguity
434
- // on its own; this checks the property they are all supposed to produce,
435
- // at the single point where it becomes durable. Inside the try, so a
436
- // violation unwinds through the Phase 3 rollback that puts the filenames
437
- // back.
431
+ // filenames is the worst outcome available here, because the queue
432
+ // would apply in an order nothing on disk reflects. The callers compute
433
+ // the rename map (compact, reorder, export placement) and each maintains
434
+ // contiguity on its own. This checks the property they are all supposed
435
+ // to produce, at the single point where it becomes durable. Inside the
436
+ // try, so a violation unwinds through the Phase 3 rollback that puts the
437
+ // filenames back.
438
438
  assertRenumberedOrderIsWellFormed(updatedPatches);
439
439
  await savePatchesManifest(patchesDir, {
440
440
  ...manifest,
@@ -445,7 +445,7 @@ export async function renumberPatchesInManifest(patchesDir, renameMap) {
445
445
  // Phase 3 rollback: reverse every completed rename. The manifest
446
446
  // save failed before it could be persisted, so the on-disk state
447
447
  // must match what the manifest still records. Best-effort: any
448
- // individual step that fails gets warned; the original save
448
+ // individual step that fails gets warned. The original save
449
449
  // error is always re-thrown so the caller sees the real cause.
450
450
  for (const completed of completedFinalRenames) {
451
451
  try {
@@ -460,7 +460,7 @@ export async function renumberPatchesInManifest(patchesDir, renameMap) {
460
460
  }
461
461
  /**
462
462
  * Thrown when {@link removePatchFileAndManifest} cannot complete the file
463
- * delete AND cannot restore the manifest row afterward, so the on-disk
463
+ * delete and cannot restore the manifest row afterward, so the on-disk
464
464
  * state and manifest state are known to disagree. Carries both the
465
465
  * primary delete error and the rollback error so the caller (and the
466
466
  * operator) can see the full failure chain instead of only the original
@@ -468,7 +468,7 @@ export async function renumberPatchesInManifest(patchesDir, renameMap) {
468
468
  *
469
469
  * Extends {@link FireForgeError} so the CLI top-level handler routes it
470
470
  * through the rich-error formatter rather than the generic unexpected-error
471
- * path; the dedicated `.name` is kept so programmatic callers and tests
471
+ * path. The dedicated `.name` is kept so programmatic callers and tests
472
472
  * can still distinguish it with `instanceof PatchDeleteRollbackError`.
473
473
  */
474
474
  export class PatchDeleteRollbackError extends FireForgeError {
@@ -490,7 +490,7 @@ export class PatchDeleteRollbackError extends FireForgeError {
490
490
  }
491
491
  /**
492
492
  * Deletes both a patch file on disk and its manifest row under the caller's
493
- * lock. This is a convenience for the `patch delete` command; callers that
493
+ * lock. This is a convenience for the `patch delete` command. Callers that
494
494
  * need different ordering (e.g. deleting the file first without touching the
495
495
  * manifest) should call the primitives separately.
496
496
  *
@@ -508,8 +508,8 @@ export class PatchDeleteRollbackError extends FireForgeError {
508
508
  export async function removePatchFileAndManifest(patchesDir, filename) {
509
509
  await assertPatchDirectoryLockHeld(patchesDir, 'deleting a patch and its manifest row');
510
510
  const patchPath = join(patchesDir, filename);
511
- // ForWrite: deleting the patch FILE while a corrupt manifest still
512
- // references it would strand the queue; abort on corruption instead.
511
+ // ForWrite: deleting the patch file while a corrupt manifest still
512
+ // references it would strand the queue. Abort on corruption instead.
513
513
  const originalManifest = await loadPatchesManifestForWrite(patchesDir);
514
514
  const removedFromManifest = await removePatchFromManifest(patchesDir, filename);
515
515
  try {
@@ -45,7 +45,7 @@ export declare function validatePatchIntegrity(patchesDir: string, engineDir: st
45
45
  *
46
46
  * Acquires the shared patch-directory lock for the read-modify-write, so a
47
47
  * concurrent export/reorder/metadata update cannot interleave with the stamp.
48
- * The lock is not reentrant — callers must NOT invoke this while already
48
+ * The lock is not reentrant: callers must not invoke this while already
49
49
  * holding {@link withPatchDirectoryLock} on the same patches directory.
50
50
  *
51
51
  * @param patchesDir - Path to the patches directory
@@ -80,9 +80,9 @@ export async function validatePatchIntegrity(patchesDir, engineDir) {
80
80
  const issues = [];
81
81
  const patches = await discoverPatches(patchesDir);
82
82
  // Collect every modification target first, then resolve HEAD existence in
83
- // ONE batched ls-tree pass (chunked for ARG_MAX). The per-file
83
+ // one batched ls-tree pass (chunked for ARG_MAX). The per-file
84
84
  // fileExistsInHead fan-out spawned one git process per (patch × target) on
85
- // every import — a 56-file branding patch alone cost ~56 spawns before a
85
+ // every import: a 56-file branding patch alone cost ~56 spawns before a
86
86
  // single patch was applied.
87
87
  const modificationTargets = [];
88
88
  for (const patch of patches) {
@@ -90,7 +90,7 @@ export async function validatePatchIntegrity(patchesDir, engineDir) {
90
90
  const patchContent = await readText(patch.path);
91
91
  const targetFiles = await getAllTargetFilesFromPatch(patch.path);
92
92
  for (const targetFile of targetFiles) {
93
- // Skip new-file sections — they don't need to exist in HEAD
93
+ // Skip new-file sections. They don't need to exist in HEAD
94
94
  if (isNewFileInPatch(patchContent, targetFile))
95
95
  continue;
96
96
  modificationTargets.push({ filename: patch.filename, targetFile });
@@ -114,7 +114,7 @@ export async function validatePatchIntegrity(patchesDir, engineDir) {
114
114
  *
115
115
  * Acquires the shared patch-directory lock for the read-modify-write, so a
116
116
  * concurrent export/reorder/metadata update cannot interleave with the stamp.
117
- * The lock is not reentrant — callers must NOT invoke this while already
117
+ * The lock is not reentrant: callers must not invoke this while already
118
118
  * holding {@link withPatchDirectoryLock} on the same patches directory.
119
119
  *
120
120
  * @param patchesDir - Path to the patches directory
@@ -2,12 +2,12 @@ import type { PatchMetadata } from '../types/commands/index.js';
2
2
  /**
3
3
  * Resolves a patch identifier to its manifest entry. Accepts:
4
4
  *
5
- * 1. An ordinal number (e.g. `2`) — matches `PatchMetadata.order`.
6
- * 2. A full filename with `.patch` suffix (e.g. `002-ui-foo.patch`) —
7
- * matches `PatchMetadata.filename`.
8
- * 3. A filename without the `.patch` suffix — the command appends it
5
+ * 1. An ordinal number (e.g. `2`), matching `PatchMetadata.order`.
6
+ * 2. A full filename with `.patch` suffix (e.g. `002-ui-foo.patch`),
7
+ * matching `PatchMetadata.filename`.
8
+ * 3. A filename without the `.patch` suffix. The command appends it
9
9
  * before matching (e.g. `002-ui-foo`).
10
- * 4. The manifest `name` field (e.g. `furnace-token-override`) — the short
10
+ * 4. The manifest `name` field (e.g. `furnace-token-override`), the short
11
11
  * logical handle the export workflow stamps onto the patch and the
12
12
  * natural identifier an operator keeps in their notes. The CLI help
13
13
  * says `<name>`, so rejecting it forces the operator to copy the full
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Resolves a patch identifier to its manifest entry. Accepts:
3
3
  *
4
- * 1. An ordinal number (e.g. `2`) — matches `PatchMetadata.order`.
5
- * 2. A full filename with `.patch` suffix (e.g. `002-ui-foo.patch`) —
6
- * matches `PatchMetadata.filename`.
7
- * 3. A filename without the `.patch` suffix — the command appends it
4
+ * 1. An ordinal number (e.g. `2`), matching `PatchMetadata.order`.
5
+ * 2. A full filename with `.patch` suffix (e.g. `002-ui-foo.patch`),
6
+ * matching `PatchMetadata.filename`.
7
+ * 3. A filename without the `.patch` suffix. The command appends it
8
8
  * before matching (e.g. `002-ui-foo`).
9
- * 4. The manifest `name` field (e.g. `furnace-token-override`) — the short
9
+ * 4. The manifest `name` field (e.g. `furnace-token-override`), the short
10
10
  * logical handle the export workflow stamps onto the patch and the
11
11
  * natural identifier an operator keeps in their notes. The CLI help
12
12
  * says `<name>`, so rejecting it forces the operator to copy the full
@@ -22,14 +22,14 @@ export function resolvePatchIdentifier(identifier, patches) {
22
22
  const order = parseInt(identifier, 10);
23
23
  return patches.find((p) => p.order === order) ?? null;
24
24
  }
25
- // Filename lookup — try the input as-is first (covers both the
25
+ // Filename lookup: try the input as-is first (covers both the
26
26
  // full `.patch` form and a bare name, because `endsWith` treats the
27
27
  // bare form as a miss and falls through to the appended variant).
28
28
  const normalized = identifier.endsWith('.patch') ? identifier : `${identifier}.patch`;
29
29
  const byFilename = patches.find((p) => p.filename === normalized || p.filename === identifier);
30
30
  if (byFilename)
31
31
  return byFilename;
32
- // Name-field lookup — the short logical handle stamped into the
32
+ // Name-field lookup: the short logical handle stamped into the
33
33
  // manifest at export time. See function docstring.
34
34
  return patches.find((p) => p.name === identifier) ?? null;
35
35
  }
@@ -92,12 +92,12 @@ function validatePatchMetadata(data, index) {
92
92
  throw new Error(`patches[${index}].sourceEsrVersion must be a valid Firefox version string`);
93
93
  }
94
94
  const filesAffected = rec.stringArray('filesAffected');
95
- // Optional fields. These are easy to strip silently — an escape hatch
95
+ // Optional fields. These are easy to strip silently: an escape hatch
96
96
  // that round-trips only through test fixtures mocking
97
97
  // `loadPatchesManifest` looks fine while real operator edits to
98
98
  // `patches.json` are dropped on every load, so a patch relying on
99
99
  // `lintIgnore` to suppress a rule is quietly re-tripped the next time the
100
- // manifest validates. Preserve both `lintIgnore` and `tier` here; future
100
+ // manifest validates. Preserve both `lintIgnore` and `tier` here. Future
101
101
  // optional fields follow the same template.
102
102
  const lintIgnore = rec.optionalStringArray('lintIgnore');
103
103
  const rawTier = rec.raw('tier');
@@ -143,7 +143,7 @@ export function validatePatchesManifest(data) {
143
143
  if (!isObject(data)) {
144
144
  throw new Error('patches.json must be a JSON object');
145
145
  }
146
- // A manifest from a NEWER FireForge is not corrupt. The bare "version must
146
+ // A manifest from a newer FireForge is not corrupt. The bare "version must
147
147
  // be 1" this replaced sent the operator looking for damage in a file that
148
148
  // only needed a newer build to read it.
149
149
  const version = checkDocumentVersion(data, 'version', PATCHES_MANIFEST_VERSION);
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Patches manifest — re-exports from focused sub-modules.
2
+ * Patches manifest: re-exports from focused sub-modules.
3
3
  *
4
- * Callers should continue to import from this module; the internal split
4
+ * Callers should continue to import from this module. The internal split
5
5
  * is an implementation detail.
6
6
  */
7
7
  export { type PatchManifestConsistencyIssue, rebuildPatchesManifest, recommendManifestRepair, validatePatchesManifestConsistency, } from './patch-manifest-consistency.js';
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * Patches manifest — re-exports from focused sub-modules.
3
+ * Patches manifest: re-exports from focused sub-modules.
4
4
  *
5
- * Callers should continue to import from this module; the internal split
5
+ * Callers should continue to import from this module. The internal split
6
6
  * is an implementation detail.
7
7
  */
8
8
  export { rebuildPatchesManifest, recommendManifestRepair, validatePatchesManifestConsistency, } from './patch-manifest-consistency.js';