@hominis/fireforge 0.45.0 → 0.46.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (662) hide show
  1. package/CHANGELOG.md +409 -446
  2. package/dist/bin/fireforge.d.ts +1 -1
  3. package/dist/bin/fireforge.js +21 -15
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/cli-usage-error.d.ts +46 -0
  6. package/dist/src/cli-usage-error.js +81 -0
  7. package/dist/src/cli.d.ts +7 -2
  8. package/dist/src/cli.js +47 -47
  9. package/dist/src/commands/bootstrap-checks.js +2 -1
  10. package/dist/src/commands/bootstrap.js +3 -4
  11. package/dist/src/commands/build.js +27 -17
  12. package/dist/src/commands/config.js +9 -9
  13. package/dist/src/commands/destructive-decision.d.ts +19 -0
  14. package/dist/src/commands/destructive-decision.js +31 -0
  15. package/dist/src/commands/discard.js +5 -5
  16. package/dist/src/commands/doctor-check-core.d.ts +4 -10
  17. package/dist/src/commands/doctor-check-core.js +0 -8
  18. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  19. package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
  20. package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
  21. package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
  22. package/dist/src/commands/doctor-furnace-jar.js +1 -1
  23. package/dist/src/commands/doctor-furnace.js +22 -22
  24. package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -17
  25. package/dist/src/commands/doctor-orphaned-harness.js +14 -23
  26. package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
  27. package/dist/src/commands/doctor-patch-manifest.js +7 -6
  28. package/dist/src/commands/doctor-post-rebase-audit.js +3 -3
  29. package/dist/src/commands/doctor-source-pin.d.ts +12 -12
  30. package/dist/src/commands/doctor-source-pin.js +14 -14
  31. package/dist/src/commands/doctor-working-tree.d.ts +3 -3
  32. package/dist/src/commands/doctor-working-tree.js +3 -3
  33. package/dist/src/commands/doctor.d.ts +3 -1
  34. package/dist/src/commands/doctor.js +15 -16
  35. package/dist/src/commands/download.js +50 -37
  36. package/dist/src/commands/export-all.js +29 -12
  37. package/dist/src/commands/export-flow.d.ts +5 -5
  38. package/dist/src/commands/export-flow.js +29 -59
  39. package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
  40. package/dist/src/commands/export-placement-conflicts.js +12 -12
  41. package/dist/src/commands/export-placement-gate.d.ts +2 -2
  42. package/dist/src/commands/export-placement-gate.js +7 -13
  43. package/dist/src/commands/export-placement-policy.d.ts +1 -1
  44. package/dist/src/commands/export-placement-policy.js +4 -6
  45. package/dist/src/commands/export-shared.d.ts +51 -32
  46. package/dist/src/commands/export-shared.js +17 -32
  47. package/dist/src/commands/export.js +14 -5
  48. package/dist/src/commands/furnace/apply.js +16 -16
  49. package/dist/src/commands/furnace/authoring-config.d.ts +13 -0
  50. package/dist/src/commands/furnace/authoring-config.js +19 -0
  51. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
  52. package/dist/src/commands/furnace/chrome-doc-remove.js +2 -2
  53. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
  54. package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
  55. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
  56. package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
  57. package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
  58. package/dist/src/commands/furnace/chrome-doc.js +18 -18
  59. package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
  60. package/dist/src/commands/furnace/create-browser-test.js +7 -12
  61. package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
  62. package/dist/src/commands/furnace/create-dry-run.js +6 -9
  63. package/dist/src/commands/furnace/create-features.d.ts +2 -2
  64. package/dist/src/commands/furnace/create-features.js +2 -2
  65. package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
  66. package/dist/src/commands/furnace/create-mochikit.js +7 -7
  67. package/dist/src/commands/furnace/create-templates.d.ts +31 -15
  68. package/dist/src/commands/furnace/create-templates.js +20 -19
  69. package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
  70. package/dist/src/commands/furnace/create-xpcshell.js +8 -8
  71. package/dist/src/commands/furnace/create.d.ts +1 -1
  72. package/dist/src/commands/furnace/create.js +35 -29
  73. package/dist/src/commands/furnace/deploy.js +15 -6
  74. package/dist/src/commands/furnace/diff.js +7 -7
  75. package/dist/src/commands/furnace/index.js +1 -1
  76. package/dist/src/commands/furnace/init.js +17 -16
  77. package/dist/src/commands/furnace/list.js +2 -2
  78. package/dist/src/commands/furnace/override.d.ts +1 -1
  79. package/dist/src/commands/furnace/override.js +43 -34
  80. package/dist/src/commands/furnace/preview.js +17 -17
  81. package/dist/src/commands/furnace/refresh.js +15 -7
  82. package/dist/src/commands/furnace/remove-mutations.d.ts +9 -10
  83. package/dist/src/commands/furnace/remove-mutations.js +19 -19
  84. package/dist/src/commands/furnace/remove-state.d.ts +1 -1
  85. package/dist/src/commands/furnace/remove-state.js +1 -1
  86. package/dist/src/commands/furnace/remove.js +4 -8
  87. package/dist/src/commands/furnace/rename-browser-test.js +10 -15
  88. package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
  89. package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
  90. package/dist/src/commands/furnace/rename.js +36 -36
  91. package/dist/src/commands/furnace/scan.js +3 -3
  92. package/dist/src/commands/furnace/status.js +19 -16
  93. package/dist/src/commands/furnace/sync.js +6 -6
  94. package/dist/src/commands/furnace/test-file-name.d.ts +28 -0
  95. package/dist/src/commands/furnace/test-file-name.js +39 -0
  96. package/dist/src/commands/furnace/validate.js +11 -12
  97. package/dist/src/commands/furnace/validation-output.d.ts +21 -9
  98. package/dist/src/commands/furnace/validation-output.js +3 -8
  99. package/dist/src/commands/import.js +22 -29
  100. package/dist/src/commands/lint-per-patch.d.ts +2 -2
  101. package/dist/src/commands/lint-per-patch.js +27 -12
  102. package/dist/src/commands/lint-per-run-checkjs.d.ts +14 -15
  103. package/dist/src/commands/lint-per-run-checkjs.js +14 -15
  104. package/dist/src/commands/lint-report.d.ts +3 -3
  105. package/dist/src/commands/lint-report.js +4 -4
  106. package/dist/src/commands/lint.d.ts +5 -4
  107. package/dist/src/commands/lint.js +36 -36
  108. package/dist/src/commands/manifest.d.ts +4 -4
  109. package/dist/src/commands/manifest.js +1 -1
  110. package/dist/src/commands/package.js +4 -6
  111. package/dist/src/commands/patch/compact.d.ts +2 -2
  112. package/dist/src/commands/patch/compact.js +19 -20
  113. package/dist/src/commands/patch/delete.d.ts +1 -1
  114. package/dist/src/commands/patch/delete.js +23 -33
  115. package/dist/src/commands/patch/entry-projection.d.ts +13 -0
  116. package/dist/src/commands/patch/entry-projection.js +24 -0
  117. package/dist/src/commands/patch/lint-ignore.d.ts +3 -12
  118. package/dist/src/commands/patch/lint-ignore.js +33 -44
  119. package/dist/src/commands/patch/move-files-create.d.ts +2 -2
  120. package/dist/src/commands/patch/move-files-create.js +29 -15
  121. package/dist/src/commands/patch/move-files-into.d.ts +2 -2
  122. package/dist/src/commands/patch/move-files-into.js +41 -37
  123. package/dist/src/commands/patch/move-files.js +5 -14
  124. package/dist/src/commands/patch/patch-context.d.ts +1 -1
  125. package/dist/src/commands/patch/rename.d.ts +4 -4
  126. package/dist/src/commands/patch/rename.js +35 -49
  127. package/dist/src/commands/patch/reorder.js +35 -48
  128. package/dist/src/commands/patch/split-plan.d.ts +7 -8
  129. package/dist/src/commands/patch/split-plan.js +10 -13
  130. package/dist/src/commands/patch/split.d.ts +2 -2
  131. package/dist/src/commands/patch/split.js +50 -48
  132. package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
  133. package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
  134. package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
  135. package/dist/src/commands/patch/staged-dependency.js +22 -28
  136. package/dist/src/commands/patch/tier.d.ts +2 -2
  137. package/dist/src/commands/patch/tier.js +20 -30
  138. package/dist/src/commands/patch-rename-map.d.ts +19 -0
  139. package/dist/src/commands/patch-rename-map.js +36 -0
  140. package/dist/src/commands/pending-resolution.d.ts +15 -0
  141. package/dist/src/commands/pending-resolution.js +25 -0
  142. package/dist/src/commands/re-export-adjacent.d.ts +25 -3
  143. package/dist/src/commands/re-export-adjacent.js +40 -24
  144. package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
  145. package/dist/src/commands/re-export-bulk-scan.js +23 -27
  146. package/dist/src/commands/re-export-drift.d.ts +10 -10
  147. package/dist/src/commands/re-export-drift.js +33 -33
  148. package/dist/src/commands/re-export-files.d.ts +2 -3
  149. package/dist/src/commands/re-export-files.js +52 -44
  150. package/dist/src/commands/re-export-lint.d.ts +29 -30
  151. package/dist/src/commands/re-export-lint.js +36 -29
  152. package/dist/src/commands/re-export-options.d.ts +1 -1
  153. package/dist/src/commands/re-export-options.js +1 -1
  154. package/dist/src/commands/re-export-register.d.ts +1 -1
  155. package/dist/src/commands/re-export-register.js +1 -1
  156. package/dist/src/commands/re-export-scan.d.ts +1 -1
  157. package/dist/src/commands/re-export-scan.js +12 -9
  158. package/dist/src/commands/re-export-single.d.ts +23 -4
  159. package/dist/src/commands/re-export-single.js +39 -31
  160. package/dist/src/commands/re-export.js +35 -17
  161. package/dist/src/commands/rebase/abort.js +9 -14
  162. package/dist/src/commands/rebase/continue.js +20 -19
  163. package/dist/src/commands/rebase/index.d.ts +1 -1
  164. package/dist/src/commands/rebase/index.js +5 -5
  165. package/dist/src/commands/rebase/patch-loop.d.ts +2 -2
  166. package/dist/src/commands/rebase/patch-loop.js +20 -24
  167. package/dist/src/commands/register.js +5 -5
  168. package/dist/src/commands/reset.js +1 -1
  169. package/dist/src/commands/resolve.d.ts +2 -2
  170. package/dist/src/commands/resolve.js +21 -13
  171. package/dist/src/commands/run.d.ts +0 -13
  172. package/dist/src/commands/run.js +38 -51
  173. package/dist/src/commands/setup-support.d.ts +16 -4
  174. package/dist/src/commands/setup-support.js +20 -20
  175. package/dist/src/commands/setup.js +4 -10
  176. package/dist/src/commands/source.js +9 -2
  177. package/dist/src/commands/status-check.d.ts +3 -3
  178. package/dist/src/commands/status-check.js +6 -6
  179. package/dist/src/commands/status-json.d.ts +14 -13
  180. package/dist/src/commands/status-json.js +9 -8
  181. package/dist/src/commands/status-output.d.ts +3 -3
  182. package/dist/src/commands/status-output.js +5 -5
  183. package/dist/src/commands/status-ownership.d.ts +3 -3
  184. package/dist/src/commands/status-ownership.js +3 -3
  185. package/dist/src/commands/status.js +25 -26
  186. package/dist/src/commands/test-build-phase.d.ts +3 -3
  187. package/dist/src/commands/test-build-phase.js +48 -24
  188. package/dist/src/commands/test-diagnose.d.ts +1 -1
  189. package/dist/src/commands/test-diagnose.js +20 -20
  190. package/dist/src/commands/test-modes.d.ts +4 -4
  191. package/dist/src/commands/test-modes.js +4 -5
  192. package/dist/src/commands/test-register.js +5 -3
  193. package/dist/src/commands/test-run.d.ts +11 -11
  194. package/dist/src/commands/test-run.js +40 -33
  195. package/dist/src/commands/test-stale-gate.d.ts +12 -12
  196. package/dist/src/commands/test-stale-gate.js +17 -17
  197. package/dist/src/commands/test-verdict.d.ts +19 -5
  198. package/dist/src/commands/test-verdict.js +26 -11
  199. package/dist/src/commands/test.d.ts +3 -3
  200. package/dist/src/commands/test.js +73 -36
  201. package/dist/src/commands/token-coverage.js +3 -3
  202. package/dist/src/commands/token-list.d.ts +26 -0
  203. package/dist/src/commands/token-list.js +153 -0
  204. package/dist/src/commands/token.js +26 -10
  205. package/dist/src/commands/tree.js +26 -21
  206. package/dist/src/commands/typecheck.d.ts +6 -6
  207. package/dist/src/commands/typecheck.js +16 -16
  208. package/dist/src/commands/verify.d.ts +3 -3
  209. package/dist/src/commands/verify.js +10 -10
  210. package/dist/src/commands/watch.js +11 -11
  211. package/dist/src/commands/wire.js +17 -16
  212. package/dist/src/core/ast-utils.d.ts +7 -7
  213. package/dist/src/core/ast-utils.js +8 -8
  214. package/dist/src/core/branding.d.ts +5 -12
  215. package/dist/src/core/branding.js +6 -5
  216. package/dist/src/core/browser-wire.d.ts +1 -1
  217. package/dist/src/core/browser-wire.js +10 -7
  218. package/dist/src/core/build-audit-platform.d.ts +32 -3
  219. package/dist/src/core/build-audit-platform.js +153 -13
  220. package/dist/src/core/build-audit-registration.d.ts +5 -5
  221. package/dist/src/core/build-audit-registration.js +10 -9
  222. package/dist/src/core/build-audit-resolve.d.ts +5 -5
  223. package/dist/src/core/build-audit-resolve.js +6 -6
  224. package/dist/src/core/build-audit-skip.d.ts +57 -0
  225. package/dist/src/core/build-audit-skip.js +112 -0
  226. package/dist/src/core/build-audit-transforms.d.ts +2 -2
  227. package/dist/src/core/build-audit-transforms.js +3 -3
  228. package/dist/src/core/build-audit.d.ts +21 -8
  229. package/dist/src/core/build-audit.js +142 -40
  230. package/dist/src/core/build-baseline-types.d.ts +19 -18
  231. package/dist/src/core/build-baseline-types.js +1 -1
  232. package/dist/src/core/build-baseline.d.ts +48 -31
  233. package/dist/src/core/build-baseline.js +20 -43
  234. package/dist/src/core/build-jar-escalation.d.ts +8 -8
  235. package/dist/src/core/build-jar-escalation.js +18 -17
  236. package/dist/src/core/build-overwrite-guard.d.ts +4 -4
  237. package/dist/src/core/build-overwrite-guard.js +14 -14
  238. package/dist/src/core/build-prepare.d.ts +4 -12
  239. package/dist/src/core/build-prepare.js +22 -26
  240. package/dist/src/core/config-mutate.js +4 -4
  241. package/dist/src/core/config-paths.d.ts +2 -6
  242. package/dist/src/core/config-paths.js +4 -2
  243. package/dist/src/core/config-state.d.ts +0 -6
  244. package/dist/src/core/config-state.js +3 -21
  245. package/dist/src/core/config-validate-build-audit.d.ts +8 -0
  246. package/dist/src/core/config-validate-build-audit.js +80 -0
  247. package/dist/src/core/config-validate-file-size.d.ts +1 -1
  248. package/dist/src/core/config-validate-file-size.js +3 -3
  249. package/dist/src/core/config-validate-patch-policy.d.ts +2 -2
  250. package/dist/src/core/config-validate-patch-policy.js +3 -3
  251. package/dist/src/core/config-validate-test-toolchains.d.ts +2 -2
  252. package/dist/src/core/config-validate-test-toolchains.js +4 -5
  253. package/dist/src/core/config-validate.js +22 -12
  254. package/dist/src/core/config.d.ts +12 -12
  255. package/dist/src/core/config.js +21 -25
  256. package/dist/src/core/coverage-extend.d.ts +16 -16
  257. package/dist/src/core/coverage-extend.js +20 -20
  258. package/dist/src/core/destructive.d.ts +14 -14
  259. package/dist/src/core/destructive.js +9 -9
  260. package/dist/src/core/diff-hunks.d.ts +2 -2
  261. package/dist/src/core/diff-hunks.js +7 -7
  262. package/dist/src/core/discard-baseline.d.ts +10 -10
  263. package/dist/src/core/discard-baseline.js +22 -23
  264. package/dist/src/core/display-state.d.ts +11 -11
  265. package/dist/src/core/display-state.js +12 -12
  266. package/dist/src/core/engine-changes.d.ts +2 -2
  267. package/dist/src/core/engine-changes.js +2 -2
  268. package/dist/src/core/engine-precondition.d.ts +5 -13
  269. package/dist/src/core/engine-precondition.js +5 -10
  270. package/dist/src/core/engine-session-lock.d.ts +18 -18
  271. package/dist/src/core/engine-session-lock.js +50 -54
  272. package/dist/src/core/export-moved-code-shape.d.ts +7 -7
  273. package/dist/src/core/export-moved-code-shape.js +10 -10
  274. package/dist/src/core/file-lock-owner.d.ts +103 -0
  275. package/dist/src/core/file-lock-owner.js +259 -0
  276. package/dist/src/core/file-lock.d.ts +14 -19
  277. package/dist/src/core/file-lock.js +90 -128
  278. package/dist/src/core/firefox-cache.d.ts +13 -1
  279. package/dist/src/core/firefox-cache.js +61 -36
  280. package/dist/src/core/firefox-download.d.ts +15 -0
  281. package/dist/src/core/firefox-download.js +38 -22
  282. package/dist/src/core/firefox-extract.d.ts +8 -7
  283. package/dist/src/core/firefox-extract.js +45 -27
  284. package/dist/src/core/firefox.d.ts +34 -36
  285. package/dist/src/core/firefox.js +13 -44
  286. package/dist/src/core/furnace-apply-dry-run.d.ts +1 -6
  287. package/dist/src/core/furnace-apply-dry-run.js +2 -8
  288. package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
  289. package/dist/src/core/furnace-apply-ftl.js +8 -8
  290. package/dist/src/core/furnace-apply-helpers.d.ts +9 -20
  291. package/dist/src/core/furnace-apply-helpers.js +28 -39
  292. package/dist/src/core/furnace-apply-output.js +1 -1
  293. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
  294. package/dist/src/core/furnace-apply-overwrite-warn.js +13 -11
  295. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
  296. package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
  297. package/dist/src/core/furnace-apply.d.ts +4 -4
  298. package/dist/src/core/furnace-apply.js +50 -29
  299. package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
  300. package/dist/src/core/furnace-checksum-utils.js +5 -5
  301. package/dist/src/core/furnace-config-custom.d.ts +1 -1
  302. package/dist/src/core/furnace-config-custom.js +2 -2
  303. package/dist/src/core/furnace-config-order.js +1 -1
  304. package/dist/src/core/furnace-config-tokens.d.ts +3 -3
  305. package/dist/src/core/furnace-config-tokens.js +3 -3
  306. package/dist/src/core/furnace-config-validate.js +2 -2
  307. package/dist/src/core/furnace-config.d.ts +5 -5
  308. package/dist/src/core/furnace-config.js +40 -53
  309. package/dist/src/core/furnace-constants.d.ts +6 -6
  310. package/dist/src/core/furnace-constants.js +9 -8
  311. package/dist/src/core/furnace-css-fragments.d.ts +6 -6
  312. package/dist/src/core/furnace-css-fragments.js +11 -11
  313. package/dist/src/core/furnace-dir-entry.d.ts +20 -0
  314. package/dist/src/core/furnace-dir-entry.js +21 -0
  315. package/dist/src/core/furnace-jsconfig.d.ts +7 -7
  316. package/dist/src/core/furnace-jsconfig.js +22 -20
  317. package/dist/src/core/furnace-operation.d.ts +22 -19
  318. package/dist/src/core/furnace-operation.js +38 -34
  319. package/dist/src/core/furnace-precondition.d.ts +10 -10
  320. package/dist/src/core/furnace-precondition.js +8 -8
  321. package/dist/src/core/furnace-refresh.d.ts +18 -6
  322. package/dist/src/core/furnace-refresh.js +5 -8
  323. package/dist/src/core/furnace-registration-ast.d.ts +2 -3
  324. package/dist/src/core/furnace-registration-ast.js +9 -12
  325. package/dist/src/core/furnace-registration-remove.d.ts +4 -4
  326. package/dist/src/core/furnace-registration-remove.js +6 -6
  327. package/dist/src/core/furnace-registration-validate.d.ts +2 -2
  328. package/dist/src/core/furnace-registration-validate.js +2 -2
  329. package/dist/src/core/furnace-registration.d.ts +7 -6
  330. package/dist/src/core/furnace-registration.js +29 -36
  331. package/dist/src/core/furnace-rollback.d.ts +1 -1
  332. package/dist/src/core/furnace-rollback.js +5 -5
  333. package/dist/src/core/furnace-scanner.js +3 -6
  334. package/dist/src/core/furnace-stale-export.d.ts +17 -16
  335. package/dist/src/core/furnace-stale-export.js +16 -15
  336. package/dist/src/core/furnace-staleness.d.ts +2 -2
  337. package/dist/src/core/furnace-staleness.js +2 -2
  338. package/dist/src/core/furnace-state-persist.d.ts +12 -12
  339. package/dist/src/core/furnace-state-persist.js +10 -10
  340. package/dist/src/core/furnace-step-errors.d.ts +6 -6
  341. package/dist/src/core/furnace-step-errors.js +6 -6
  342. package/dist/src/core/furnace-validate-accessibility.js +14 -14
  343. package/dist/src/core/furnace-validate-compatibility.js +9 -9
  344. package/dist/src/core/furnace-validate-registration.d.ts +2 -2
  345. package/dist/src/core/furnace-validate-registration.js +18 -20
  346. package/dist/src/core/furnace-validate-structure.d.ts +1 -1
  347. package/dist/src/core/furnace-validate-structure.js +4 -4
  348. package/dist/src/core/furnace-validate.js +9 -9
  349. package/dist/src/core/furnace-version-drift.d.ts +5 -5
  350. package/dist/src/core/furnace-version-drift.js +5 -5
  351. package/dist/src/core/git-base.d.ts +6 -4
  352. package/dist/src/core/git-base.js +29 -7
  353. package/dist/src/core/git-diff-new-file.d.ts +40 -0
  354. package/dist/src/core/git-diff-new-file.js +119 -0
  355. package/dist/src/core/git-diff.d.ts +13 -13
  356. package/dist/src/core/git-diff.js +121 -189
  357. package/dist/src/core/git-file-ops.d.ts +6 -13
  358. package/dist/src/core/git-file-ops.js +11 -35
  359. package/dist/src/core/git-readonly-index.d.ts +12 -14
  360. package/dist/src/core/git-readonly-index.js +12 -16
  361. package/dist/src/core/git-status.d.ts +9 -2
  362. package/dist/src/core/git-status.js +23 -11
  363. package/dist/src/core/git.d.ts +3 -9
  364. package/dist/src/core/git.js +28 -57
  365. package/dist/src/core/harness-orphans.d.ts +17 -17
  366. package/dist/src/core/harness-orphans.js +28 -27
  367. package/dist/src/core/history-log.d.ts +19 -0
  368. package/dist/src/core/history-log.js +29 -0
  369. package/dist/src/core/license-headers.d.ts +19 -18
  370. package/dist/src/core/license-headers.js +29 -28
  371. package/dist/src/core/mach-build-artifacts.d.ts +21 -21
  372. package/dist/src/core/mach-build-artifacts.js +23 -23
  373. package/dist/src/core/mach-error-hints.d.ts +5 -10
  374. package/dist/src/core/mach-error-hints.js +14 -14
  375. package/dist/src/core/mach-known-noise-filter.d.ts +42 -38
  376. package/dist/src/core/mach-known-noise-filter.js +57 -56
  377. package/dist/src/core/mach-mozconfig.d.ts +6 -6
  378. package/dist/src/core/mach-mozconfig.js +17 -16
  379. package/dist/src/core/mach-python.d.ts +3 -0
  380. package/dist/src/core/mach-python.js +13 -7
  381. package/dist/src/core/mach-resource-shim.d.ts +24 -12
  382. package/dist/src/core/mach-resource-shim.js +124 -21
  383. package/dist/src/core/mach.d.ts +59 -73
  384. package/dist/src/core/mach.js +47 -115
  385. package/dist/src/core/marionette-port.d.ts +15 -30
  386. package/dist/src/core/marionette-port.js +46 -89
  387. package/dist/src/core/marionette-preflight.d.ts +6 -6
  388. package/dist/src/core/marionette-preflight.js +32 -50
  389. package/dist/src/core/markdown-table.d.ts +9 -9
  390. package/dist/src/core/markdown-table.js +14 -14
  391. package/dist/src/core/mochitest-server-port.d.ts +8 -8
  392. package/dist/src/core/mochitest-server-port.js +17 -17
  393. package/dist/src/core/module-resolution-preflight.d.ts +8 -8
  394. package/dist/src/core/module-resolution-preflight.js +11 -11
  395. package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
  396. package/dist/src/core/moz-manifest-helpers.js +7 -7
  397. package/dist/src/core/moz-manifest-register.d.ts +1 -1
  398. package/dist/src/core/moz-manifest-register.js +2 -2
  399. package/dist/src/core/moz-manifest-rules.js +46 -42
  400. package/dist/src/core/moz-manifest-tokenizers.js +1 -1
  401. package/dist/src/core/ownership-table.d.ts +5 -5
  402. package/dist/src/core/ownership-table.js +7 -7
  403. package/dist/src/core/parser-fallback.d.ts +3 -3
  404. package/dist/src/core/parser-fallback.js +3 -3
  405. package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
  406. package/dist/src/core/patch-apply-fuzz.js +13 -13
  407. package/dist/src/core/patch-apply.d.ts +13 -14
  408. package/dist/src/core/patch-apply.js +36 -42
  409. package/dist/src/core/patch-export-coverage.d.ts +0 -9
  410. package/dist/src/core/patch-export-coverage.js +1 -30
  411. package/dist/src/core/patch-export-update.d.ts +21 -4
  412. package/dist/src/core/patch-export-update.js +7 -6
  413. package/dist/src/core/patch-export.d.ts +20 -30
  414. package/dist/src/core/patch-export.js +55 -77
  415. package/dist/src/core/patch-files.d.ts +0 -4
  416. package/dist/src/core/patch-files.js +0 -11
  417. package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
  418. package/dist/src/core/patch-identifier-suggest.js +4 -4
  419. package/dist/src/core/patch-lint-binary.d.ts +12 -18
  420. package/dist/src/core/patch-lint-cache.d.ts +18 -2
  421. package/dist/src/core/patch-lint-cache.js +16 -19
  422. package/dist/src/core/patch-lint-checkjs.d.ts +55 -38
  423. package/dist/src/core/patch-lint-checkjs.js +78 -64
  424. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
  425. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
  426. package/dist/src/core/patch-lint-creators.d.ts +5 -9
  427. package/dist/src/core/patch-lint-creators.js +3 -3
  428. package/dist/src/core/patch-lint-cross.d.ts +27 -19
  429. package/dist/src/core/patch-lint-cross.js +67 -110
  430. package/dist/src/core/patch-lint-css.d.ts +1 -1
  431. package/dist/src/core/patch-lint-css.js +15 -11
  432. package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
  433. package/dist/src/core/patch-lint-diff-tag.js +5 -5
  434. package/dist/src/core/patch-lint-diff.d.ts +4 -4
  435. package/dist/src/core/patch-lint-diff.js +4 -4
  436. package/dist/src/core/patch-lint-file-size.d.ts +3 -3
  437. package/dist/src/core/patch-lint-file-size.js +6 -6
  438. package/dist/src/core/patch-lint-forward-registration.d.ts +58 -0
  439. package/dist/src/core/patch-lint-forward-registration.js +210 -0
  440. package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
  441. package/dist/src/core/patch-lint-jsdoc.js +46 -46
  442. package/dist/src/core/patch-lint-module-registration.d.ts +3 -9
  443. package/dist/src/core/patch-lint-module-registration.js +1 -1
  444. package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
  445. package/dist/src/core/patch-lint-mozbuild.js +10 -10
  446. package/dist/src/core/patch-lint-observer.d.ts +3 -3
  447. package/dist/src/core/patch-lint-observer.js +7 -7
  448. package/dist/src/core/patch-lint-ownership.d.ts +6 -6
  449. package/dist/src/core/patch-lint-ownership.js +6 -6
  450. package/dist/src/core/patch-lint-prettier.d.ts +6 -6
  451. package/dist/src/core/patch-lint-prettier.js +7 -7
  452. package/dist/src/core/patch-lint-queue-types.d.ts +60 -0
  453. package/dist/src/core/patch-lint-queue-types.js +12 -0
  454. package/dist/src/core/patch-lint-staged-registration.d.ts +61 -0
  455. package/dist/src/core/patch-lint-staged-registration.js +90 -0
  456. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
  457. package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
  458. package/dist/src/core/patch-lint.d.ts +41 -35
  459. package/dist/src/core/patch-lint.js +52 -49
  460. package/dist/src/core/patch-lock.d.ts +1 -1
  461. package/dist/src/core/patch-lock.js +11 -11
  462. package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
  463. package/dist/src/core/patch-manifest-consistency.js +16 -17
  464. package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
  465. package/dist/src/core/patch-manifest-files-affected.js +3 -3
  466. package/dist/src/core/patch-manifest-io.d.ts +14 -14
  467. package/dist/src/core/patch-manifest-io.js +35 -34
  468. package/dist/src/core/patch-manifest-query.d.ts +1 -1
  469. package/dist/src/core/patch-manifest-query.js +4 -4
  470. package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
  471. package/dist/src/core/patch-manifest-resolve.js +7 -7
  472. package/dist/src/core/patch-manifest-validate.js +3 -3
  473. package/dist/src/core/patch-manifest.d.ts +2 -2
  474. package/dist/src/core/patch-manifest.js +2 -2
  475. package/dist/src/core/patch-parse.d.ts +32 -21
  476. package/dist/src/core/patch-parse.js +40 -15
  477. package/dist/src/core/patch-policy.js +15 -27
  478. package/dist/src/core/patch-registration-refs.d.ts +4 -4
  479. package/dist/src/core/patch-registration-refs.js +7 -7
  480. package/dist/src/core/patch-source-metadata.d.ts +1 -3
  481. package/dist/src/core/patch-source-metadata.js +0 -4
  482. package/dist/src/core/patch-transform.d.ts +8 -16
  483. package/dist/src/core/patch-transform.js +13 -23
  484. package/dist/src/core/process-cpu-time.d.ts +1 -1
  485. package/dist/src/core/process-cpu-time.js +6 -6
  486. package/dist/src/core/rebase-session.d.ts +9 -15
  487. package/dist/src/core/rebase-session.js +13 -25
  488. package/dist/src/core/register-browser-content.js +3 -2
  489. package/dist/src/core/register-browser-test.js +2 -1
  490. package/dist/src/core/register-module.js +2 -1
  491. package/dist/src/core/register-result.d.ts +1 -1
  492. package/dist/src/core/register-result.js +1 -1
  493. package/dist/src/core/register-scaffold.d.ts +2 -2
  494. package/dist/src/core/register-scaffold.js +8 -7
  495. package/dist/src/core/register-shared-css.d.ts +3 -3
  496. package/dist/src/core/register-shared-css.js +6 -5
  497. package/dist/src/core/register-xpcshell-test.d.ts +2 -2
  498. package/dist/src/core/register-xpcshell-test.js +2 -2
  499. package/dist/src/core/run-log-redact.d.ts +38 -0
  500. package/dist/src/core/run-log-redact.js +69 -0
  501. package/dist/src/core/run-log.d.ts +21 -10
  502. package/dist/src/core/run-log.js +76 -27
  503. package/dist/src/core/shared-ftl.d.ts +2 -2
  504. package/dist/src/core/shared-ftl.js +6 -6
  505. package/dist/src/core/signal-critical.d.ts +2 -2
  506. package/dist/src/core/signal-critical.js +4 -6
  507. package/dist/src/core/smoke-patterns.d.ts +5 -6
  508. package/dist/src/core/smoke-patterns.js +15 -20
  509. package/dist/src/core/state-file.d.ts +15 -4
  510. package/dist/src/core/state-file.js +14 -1
  511. package/dist/src/core/status-binary.d.ts +8 -8
  512. package/dist/src/core/status-binary.js +12 -12
  513. package/dist/src/core/status-classify.d.ts +17 -17
  514. package/dist/src/core/status-classify.js +13 -12
  515. package/dist/src/core/test-changed-prefs.d.ts +12 -12
  516. package/dist/src/core/test-changed-prefs.js +40 -25
  517. package/dist/src/core/test-harness-crash.d.ts +39 -39
  518. package/dist/src/core/test-harness-crash.js +69 -69
  519. package/dist/src/core/test-harness-output.d.ts +7 -7
  520. package/dist/src/core/test-harness-output.js +7 -7
  521. package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
  522. package/dist/src/core/test-harness-verdict-notes.js +4 -4
  523. package/dist/src/core/test-path-scope.d.ts +8 -8
  524. package/dist/src/core/test-path-scope.js +11 -11
  525. package/dist/src/core/test-stale-check.d.ts +22 -23
  526. package/dist/src/core/test-stale-check.js +31 -30
  527. package/dist/src/core/test-stale-symlink.d.ts +1 -1
  528. package/dist/src/core/test-stale-symlink.js +1 -1
  529. package/dist/src/core/test-stall-triage.d.ts +9 -9
  530. package/dist/src/core/test-stall-triage.js +22 -22
  531. package/dist/src/core/test-xpcshell-retry.d.ts +26 -7
  532. package/dist/src/core/test-xpcshell-retry.js +14 -11
  533. package/dist/src/core/token-category.d.ts +35 -2
  534. package/dist/src/core/token-category.js +67 -58
  535. package/dist/src/core/token-coverage.js +4 -5
  536. package/dist/src/core/token-dark-mode.d.ts +9 -9
  537. package/dist/src/core/token-dark-mode.js +13 -25
  538. package/dist/src/core/token-docs.d.ts +1 -1
  539. package/dist/src/core/token-inventory.d.ts +56 -0
  540. package/dist/src/core/token-inventory.js +109 -0
  541. package/dist/src/core/token-manager.d.ts +4 -4
  542. package/dist/src/core/token-manager.js +22 -22
  543. package/dist/src/core/token-scaffold.d.ts +4 -4
  544. package/dist/src/core/token-scaffold.js +4 -4
  545. package/dist/src/core/token-variant.d.ts +14 -14
  546. package/dist/src/core/token-variant.js +52 -53
  547. package/dist/src/core/toolchain-preflight.d.ts +15 -15
  548. package/dist/src/core/toolchain-preflight.js +23 -23
  549. package/dist/src/core/tree-cow.d.ts +3 -5
  550. package/dist/src/core/tree-cow.js +8 -8
  551. package/dist/src/core/tree-guard.d.ts +3 -3
  552. package/dist/src/core/tree-guard.js +23 -23
  553. package/dist/src/core/tree-store.d.ts +15 -15
  554. package/dist/src/core/tree-store.js +39 -38
  555. package/dist/src/core/typecheck-shim.d.ts +16 -15
  556. package/dist/src/core/typecheck-shim.js +26 -25
  557. package/dist/src/core/typecheck.d.ts +12 -12
  558. package/dist/src/core/typecheck.js +33 -33
  559. package/dist/src/core/wire-destroy.d.ts +2 -2
  560. package/dist/src/core/wire-destroy.js +5 -5
  561. package/dist/src/core/wire-dom-fragment.d.ts +3 -3
  562. package/dist/src/core/wire-dom-fragment.js +12 -23
  563. package/dist/src/core/wire-init.d.ts +2 -2
  564. package/dist/src/core/wire-init.js +7 -7
  565. package/dist/src/core/wire-subscript.d.ts +1 -1
  566. package/dist/src/core/wire-subscript.js +3 -3
  567. package/dist/src/core/wire-utils.d.ts +9 -9
  568. package/dist/src/core/wire-utils.js +16 -28
  569. package/dist/src/core/xpcshell-appdir.d.ts +20 -20
  570. package/dist/src/core/xpcshell-appdir.js +28 -30
  571. package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
  572. package/dist/src/core/xpcshell-profile-dir.js +7 -7
  573. package/dist/src/errors/base.d.ts +69 -16
  574. package/dist/src/errors/base.js +95 -26
  575. package/dist/src/errors/build.d.ts +6 -6
  576. package/dist/src/errors/build.js +26 -34
  577. package/dist/src/errors/codes.d.ts +10 -10
  578. package/dist/src/errors/codes.js +10 -10
  579. package/dist/src/errors/config.d.ts +0 -14
  580. package/dist/src/errors/config.js +13 -34
  581. package/dist/src/errors/download.d.ts +13 -0
  582. package/dist/src/errors/download.js +53 -24
  583. package/dist/src/errors/furnace.d.ts +2 -2
  584. package/dist/src/errors/furnace.js +8 -9
  585. package/dist/src/errors/git.d.ts +9 -9
  586. package/dist/src/errors/git.js +21 -31
  587. package/dist/src/errors/patch.d.ts +3 -3
  588. package/dist/src/errors/patch.js +11 -13
  589. package/dist/src/errors/rebase.d.ts +1 -1
  590. package/dist/src/errors/rebase.js +8 -8
  591. package/dist/src/errors/run.d.ts +1 -1
  592. package/dist/src/errors/run.js +1 -1
  593. package/dist/src/index.d.ts +4 -4
  594. package/dist/src/index.js +4 -4
  595. package/dist/src/types/commands/options.d.ts +155 -200
  596. package/dist/src/types/commands/patches.d.ts +19 -19
  597. package/dist/src/types/commands/project.d.ts +3 -3
  598. package/dist/src/types/config.d.ts +52 -19
  599. package/dist/src/types/furnace.d.ts +17 -17
  600. package/dist/src/types/index.d.ts +0 -1
  601. package/dist/src/types/json.d.ts +3 -3
  602. package/dist/src/types/json.js +2 -2
  603. package/dist/src/types/typecheck.d.ts +3 -3
  604. package/dist/src/utils/assert.d.ts +4 -16
  605. package/dist/src/utils/assert.js +7 -24
  606. package/dist/src/utils/build-info.d.ts +6 -6
  607. package/dist/src/utils/build-info.js +6 -6
  608. package/dist/src/utils/child-env.d.ts +7 -6
  609. package/dist/src/utils/child-env.js +5 -5
  610. package/dist/src/utils/concurrency.d.ts +2 -2
  611. package/dist/src/utils/concurrency.js +2 -2
  612. package/dist/src/utils/elapsed.js +10 -1
  613. package/dist/src/utils/errors.d.ts +8 -8
  614. package/dist/src/utils/errors.js +8 -8
  615. package/dist/src/utils/fs.d.ts +1 -1
  616. package/dist/src/utils/fs.js +15 -20
  617. package/dist/src/utils/hash.d.ts +12 -0
  618. package/dist/src/utils/hash.js +16 -0
  619. package/dist/src/utils/line-dispatch.d.ts +15 -0
  620. package/dist/src/utils/line-dispatch.js +48 -0
  621. package/dist/src/utils/logger.d.ts +4 -4
  622. package/dist/src/utils/logger.js +11 -11
  623. package/dist/src/utils/machine-output.js +2 -2
  624. package/dist/src/utils/options.d.ts +14 -20
  625. package/dist/src/utils/options.js +26 -27
  626. package/dist/src/utils/package-root.js +5 -14
  627. package/dist/src/utils/paths.d.ts +4 -4
  628. package/dist/src/utils/paths.js +4 -4
  629. package/dist/src/utils/platform.d.ts +0 -4
  630. package/dist/src/utils/process-group.d.ts +10 -9
  631. package/dist/src/utils/process-group.js +37 -36
  632. package/dist/src/utils/process.d.ts +70 -55
  633. package/dist/src/utils/process.js +129 -179
  634. package/dist/src/utils/ps-duration.d.ts +4 -4
  635. package/dist/src/utils/ps-duration.js +9 -9
  636. package/dist/src/utils/regex.d.ts +4 -4
  637. package/dist/src/utils/regex.js +7 -7
  638. package/dist/src/utils/sleep.d.ts +26 -0
  639. package/dist/src/utils/sleep.js +31 -0
  640. package/dist/src/utils/stdio-drain.d.ts +7 -7
  641. package/dist/src/utils/stdio-drain.js +8 -8
  642. package/dist/src/utils/validation.d.ts +12 -49
  643. package/dist/src/utils/validation.js +26 -36
  644. package/docs/README.md +2 -2
  645. package/docs/configuration.md +163 -69
  646. package/docs/exit-codes.md +66 -49
  647. package/docs/furnace.md +20 -19
  648. package/docs/lifecycle-invariants.md +414 -247
  649. package/docs/machine-output.md +58 -34
  650. package/docs/patch-workflow.md +48 -44
  651. package/docs/run-logs.md +72 -28
  652. package/docs/testing.md +105 -98
  653. package/docs/verification-trees.md +23 -22
  654. package/package.json +7 -6
  655. package/dist/src/commands/rebase.d.ts +0 -4
  656. package/dist/src/commands/rebase.js +0 -5
  657. package/dist/src/core/patch-artifact-normalize.d.ts +0 -21
  658. package/dist/src/core/patch-artifact-normalize.js +0 -24
  659. package/dist/src/core/patch-lint-reexports.d.ts +0 -7
  660. package/dist/src/core/patch-lint-reexports.js +0 -8
  661. package/dist/src/core/wire-targets.d.ts +0 -7
  662. package/dist/src/core/wire-targets.js +0 -8
@@ -32,21 +32,21 @@ export interface PatchResult {
32
32
  /** Whether the patch was auto-resolved (new file vs existing file conflict) */
33
33
  autoResolved?: boolean;
34
34
  /**
35
- * Pre-existing BYTES of files the auto-resolve overwrote (or, for a binary
36
- * new file, removed), keyed by engine-relative path. Kept for the RUN's
37
- * duration (not just the retry): if a later patch fails and
35
+ * Pre-existing bytes of files the auto-resolve overwrote (or, for a
36
+ * binary new file, removed), keyed by engine-relative path. Kept for the
37
+ * whole run's duration, not just the retry: if a later patch fails and
38
38
  * `rollbackPatches` reverse-applies this one, reversing a new-file patch
39
- * DELETES the file — these snapshots are the only way to restore what was
40
- * there before the auto-resolve.
39
+ * deletes the file, and these snapshots are the only way to restore what
40
+ * was there before the auto-resolve.
41
41
  *
42
42
  * Raw bytes rather than decoded text, because the same snapshot has to
43
43
  * restore a binary target byte-for-byte.
44
44
  *
45
- * Typed `Uint8Array`, not `Buffer`: this interface is published, and the
46
- * emitted `.d.ts` naming a Node global made a consumer without
45
+ * Typed `Uint8Array` rather than `Buffer`: this interface is published,
46
+ * and the emitted `.d.ts` naming a Node global made a consumer without
47
47
  * `@types/node` fail to compile against the package (`TS2591` in the
48
- * pack smoke test). Every `Buffer` assigns to it — `Buffer` extends
49
- * `Uint8Array` — and `fs.writeFile` accepts it, so nothing at the call
48
+ * pack smoke test). Every `Buffer` assigns to it, since `Buffer` extends
49
+ * `Uint8Array`, and `fs.writeFile` accepts it, so nothing at the call
50
50
  * sites changes.
51
51
  */
52
52
  autoResolvedOriginals?: Map<string, Uint8Array>;
@@ -81,15 +81,15 @@ export interface PatchMetadata {
81
81
  /**
82
82
  * Optional per-patch list of lint check IDs to suppress when this patch is
83
83
  * the target of `export`, `export-all`, or `re-export`. Exists for the
84
- * class of patch that is advisory-noisy by nature — a cohesive branding
85
- * bundle, a localised-resource pack, an auto-generated manifest — where
84
+ * class of patch that is advisory-noisy by nature (a cohesive branding
85
+ * bundle, a localised-resource pack, an auto-generated manifest) where
86
86
  * the generic `large-patch-lines` / `large-patch-files` thresholds do not
87
87
  * apply but `--skip-lint`, which silences every error rather than the one
88
88
  * that does not apply, is too coarse.
89
89
  *
90
90
  * Values are free-form check IDs (e.g. `"large-patch-lines"`). Checks not
91
91
  * listed here still run normally. An entry for an unknown check ID is a
92
- * no-op — the metadata documents the intent to suppress even if the check
92
+ * no-op: the metadata documents the intent to suppress even if the check
93
93
  * is later renamed or removed.
94
94
  */
95
95
  lintIgnore?: string[];
@@ -99,14 +99,14 @@ export interface PatchMetadata {
99
99
  * cross-cutting registration files alongside `browser/branding/<name>/`
100
100
  * (notably `browser/moz.configure`, which registers the new branding
101
101
  * flavor with the top-level configure). The narrow auto-detect allowlist
102
- * in `isBrandingOnlyPatch` covers the canonical shape; a fork whose
102
+ * in `isBrandingOnlyPatch` covers the canonical shape. A fork whose
103
103
  * branding patch also touches an unlisted sibling falls through to the
104
104
  * general tier and trips the hard limit on what is legitimately one
105
105
  * branding diff.
106
106
  *
107
107
  * Declaring `tier: "branding"` forces the branding thresholds (notice
108
108
  * 8000 / warning 18000 / error 30000 lines, ≤60 files) regardless of
109
- * `filesAffected`. It is the weaker claim than test: an all-tests patch
109
+ * `filesAffected`. It is a weaker claim than test: an all-tests patch
110
110
  * stays in the test tier even with this set, because those thresholds are
111
111
  * already more permissive.
112
112
  *
@@ -130,11 +130,11 @@ export interface PatchStagedDependencies {
130
130
  forwardImports?: PatchStagedForwardImport[];
131
131
  /**
132
132
  * Registration-shaped forward dependencies: packaging or registration
133
- * LINES (a jar.mn entry, a customElements registration, an actor
133
+ * lines (a jar.mn entry, a customElements registration, an actor
134
134
  * registration) this patch adds that reference a file a later patch
135
135
  * creates. Unlike `forwardImports`, these are validated by matching the
136
- * declared line against the patch's added content, not by finding an
137
- * import specifier — packaging lines have no import to match.
136
+ * declared line against the patch's added content rather than by finding
137
+ * an import specifier, since packaging lines have no import to match.
138
138
  */
139
139
  registrations?: PatchStagedRegistration[];
140
140
  }
@@ -227,8 +227,8 @@ export interface PatchLintIssue {
227
227
  * Diff-scoping tag populated by `lint --since <rev>`. Absent when the
228
228
  * caller did not request diff-scoping.
229
229
  *
230
- * - `introduced` — the issue's file was touched in the diff since `<rev>`.
231
- * - `cumulative` — the issue is pre-existing patch-state drift not
230
+ * - `introduced`: the issue's file was touched in the diff since `<rev>`.
231
+ * - `cumulative`: the issue is pre-existing patch-state drift not
232
232
  * introduced by the current task.
233
233
  */
234
234
  tag?: 'introduced' | 'cumulative';
@@ -4,7 +4,7 @@
4
4
  /**
5
5
  * Result of a doctor check.
6
6
  *
7
- * `severity` is the single source of truth; consumers that want a boolean
7
+ * `severity` is the single source of truth. Consumers that want a boolean
8
8
  * derive it as `severity !== 'error'`.
9
9
  */
10
10
  export interface DoctorCheck {
@@ -23,7 +23,7 @@ export interface DoctorCheck {
23
23
  export interface TokenCoverageFileEntry {
24
24
  /** File path (relative to engine root) */
25
25
  file: string;
26
- /** var(--{prefix}*) usages — fully tokenized */
26
+ /** var(--{prefix}*) usages, fully tokenized */
27
27
  tokenUsages: number;
28
28
  /** var(--*) usages referencing allowlisted tokens */
29
29
  allowlisted: number;
@@ -38,7 +38,7 @@ export interface TokenCoverageFileEntry {
38
38
  export interface TokenCoverageReport {
39
39
  /** Total CSS files scanned */
40
40
  filesScanned: number;
41
- /** var(--{prefix}*) usages — fully tokenized */
41
+ /** var(--{prefix}*) usages, fully tokenized */
42
42
  tokenUsages: number;
43
43
  /** var(--*) usages referencing allowlisted tokens */
44
44
  allowlistedUsages: number;
@@ -12,6 +12,13 @@ export interface FirefoxConfig {
12
12
  product: FirefoxProduct;
13
13
  /** Optional pinned SHA-256 for the resolved source archive */
14
14
  sha256?: string;
15
+ /**
16
+ * Accept a freshly downloaded archive when Mozilla's published SHA256SUMS
17
+ * cannot be fetched or does not list it, instead of failing closed. The
18
+ * download is then trusted on TLS alone (with a warning). Ignored when
19
+ * `sha256` is pinned. Default false.
20
+ */
21
+ allowUnverifiedDownload?: boolean;
15
22
  /**
16
23
  * Optional release-candidate build directory (e.g. "build2"). When set,
17
24
  * the source archive resolves under
@@ -49,7 +56,7 @@ export interface ExternalToolRequirement {
49
56
  path?: string;
50
57
  /** Resolve the tool with `xcrun -find <name>` instead of PATH. */
51
58
  xcrun?: boolean;
52
- /** Missing tool is an error by default; set false for advisory probes. */
59
+ /** Missing tool is an error by default. Set false for advisory probes. */
53
60
  required?: boolean;
54
61
  }
55
62
  /** Named group of project-specific external asset/build tools. */
@@ -124,6 +131,8 @@ export interface FireForgeConfig {
124
131
  firefox: FirefoxConfig;
125
132
  /** Build settings */
126
133
  build?: BuildConfig;
134
+ /** Post-build packaging audit configuration */
135
+ buildAudit?: BuildAuditConfig;
127
136
  /** Test command defaults */
128
137
  test?: TestConfig;
129
138
  /** Optional project-specific external toolchains checked by doctor. */
@@ -149,14 +158,14 @@ export interface FireForgeConfig {
149
158
  /**
150
159
  * Configuration for the `fireforge typecheck` command. Distinct from
151
160
  * `patchLint.checkJs`: patch-lint runs every time `fireforge lint` runs
152
- * and is scoped to patch-owned `.sys.mjs`; typecheck runs whole projects
161
+ * and is scoped to patch-owned `.sys.mjs`. Typecheck runs whole projects
153
162
  * the operator points at via `projects` and is intended as a CI gate.
154
163
  */
155
164
  export interface TypecheckConfig {
156
165
  /**
157
166
  * Project-relative paths to jsconfig.json (or tsconfig.json) files
158
167
  * the typecheck command should run. Must be non-empty when the
159
- * `typecheck` block is present — an empty array would silently turn
168
+ * `typecheck` block is present. An empty array would silently turn
160
169
  * the command into a no-op.
161
170
  */
162
171
  projects: string[];
@@ -165,14 +174,15 @@ export interface TypecheckConfig {
165
174
  * contents are concatenated to the built-in `FIREFOX_GLOBALS_SHIM`.
166
175
  * Lets projects declare component patterns like `MozLitElement` /
167
176
  * `MozXULElement` once instead of per-file. Concat order is
168
- * built-in shim first, extraShim second — augment, don't redeclare.
177
+ * built-in shim first, extraShim second: augment, don't redeclare.
169
178
  */
170
179
  extraShim?: string;
171
180
  /**
172
181
  * Per-project override of {@link extraShim}, keyed by the project's path
173
182
  * exactly as it appears in {@link projects}. A string value points the
174
- * project at a different `.d.ts`; `null` opts the project out of the shared
175
- * extra shim entirely (it absorbs only the built-in Firefox globals shim).
183
+ * project at a different `.d.ts`. `null` opts the project out of the
184
+ * shared extra shim entirely (it absorbs only the built-in Firefox globals
185
+ * shim).
176
186
  *
177
187
  * Needed because the shared shim is injected into every project: a shim hub
178
188
  * that references Gecko declaration libs (`lib.gecko.dom.d.ts`, …) is wanted
@@ -185,19 +195,44 @@ export interface TypecheckConfig {
185
195
  * How to report undefined free identifiers (TS2304/TS2552). Default
186
196
  * `'warning'`: visible without failing the gate, since shim gaps produce
187
197
  * the same diagnostic as a genuine missing import. `'error'` makes them
188
- * blocking; `'off'` suppresses them.
198
+ * blocking. `'off'` suppresses them.
189
199
  */
190
200
  undefinedIdentifiers?: PatchLintSeverityGate;
191
201
  }
192
202
  /**
193
203
  * Wire command configuration.
194
204
  */
205
+ /**
206
+ * One intentionally unpackaged source, declared so the post-build audit
207
+ * stops reporting it as a missing registration.
208
+ *
209
+ * `reason` is required and must be non-empty. A carve-out whose rationale
210
+ * nobody wrote down is indistinguishable from a mistake by the time someone
211
+ * reads it, and this is the one audit class FireForge cannot derive from the
212
+ * tree: the file's own header may say "never loaded", but nothing in
213
+ * `moz.build` or `jar.mn` records that.
214
+ */
215
+ export interface BuildAuditUnpackagedDeclaration {
216
+ /** Engine-relative path, exact or with a `*` inside one path segment. */
217
+ path: string;
218
+ /** Why this file is never packaged. Required, non-empty. */
219
+ reason: string;
220
+ }
221
+ /** Post-build packaging audit configuration. */
222
+ export interface BuildAuditConfig {
223
+ /**
224
+ * Sources the audit must treat as intentionally unpackaged. Admitted
225
+ * paths are listed in the audit output rather than silenced, and one that
226
+ * does resolve to a packaged artifact is reported as a stale carve-out.
227
+ */
228
+ unpackaged?: BuildAuditUnpackagedDeclaration[];
229
+ }
195
230
  export interface WireConfig {
196
231
  /** Subscript directory relative to engine/. Default: "browser/base/content" */
197
232
  subscriptDir?: string;
198
233
  }
199
234
  /**
200
- * Severity gate for opt-in patch-lint rules. `'off'` disables the rule;
235
+ * Severity gate for opt-in patch-lint rules. `'off'` disables the rule.
201
236
  * `'warning'` and `'error'` emit issues at the matching severity.
202
237
  */
203
238
  export type PatchLintSeverityGate = 'off' | 'warning' | 'error';
@@ -208,7 +243,7 @@ export type PatchLintSeverityGate = 'off' | 'warning' | 'error';
208
243
  *
209
244
  * Boolean flags tighten the strict preset. The optional `paths` mapping
210
245
  * (each pattern may carry a single `*`) lets patch-owned modules be typed
211
- * from their real sources — e.g. `"resource:///modules/foo/*": ["./*"]` —
246
+ * from their real sources (e.g. `"resource:///modules/foo/*": ["./*"]`),
212
247
  * resolved host-side against the engine directory, so no `baseUrl` is set
213
248
  * (TS5090-safe) and no hand-generated ambient stub shim is needed. Other
214
249
  * options (`rootDir`, etc.) stay disallowed: they would fight the
@@ -229,10 +264,10 @@ export interface PatchLintCheckJsCompilerOptions {
229
264
  /**
230
265
  * Line-count thresholds for one `file-too-large` tier.
231
266
  *
232
- * Every field is optional; an omitted field keeps the built-in default.
267
+ * Every field is optional. An omitted field keeps the built-in default.
233
268
  * The three must stay ordered `notice <= warning <= error`, which the
234
- * config validator enforces — an out-of-order triple silently disables a
235
- * band rather than failing anything.
269
+ * config validator enforces, because an out-of-order triple silently
270
+ * disables a band rather than failing anything.
236
271
  */
237
272
  export interface PatchLintFileSizeTier {
238
273
  notice?: number;
@@ -269,7 +304,7 @@ export interface PatchLintConfig {
269
304
  */
270
305
  checkJsStrict?: boolean;
271
306
  /**
272
- * Boolean overrides merged after the strict preset; only valid when
307
+ * Boolean overrides merged after the strict preset. Only valid when
273
308
  * `checkJsStrict` is true. Requires `checkJs: true`.
274
309
  */
275
310
  checkJsCompilerOptions?: PatchLintCheckJsCompilerOptions;
@@ -323,16 +358,16 @@ export interface PatchLintConfig {
323
358
  * `Services.scriptloader.loadSubScript`, e.g.
324
359
  * `browser/base/content/<binaryName>*.js`). Distinct from
325
360
  * `jsdocClassMethods` because chrome subscripts are parsed as scripts,
326
- * not ES modules — using one flag for both would silently disable the
361
+ * not ES modules. Using one flag for both would silently disable the
327
362
  * rule when a chrome subscript was fed to the module parser. Default:
328
363
  * 'off'.
329
364
  */
330
365
  chromeScriptJsDoc?: PatchLintSeverityGate;
331
366
  /**
332
367
  * How the checkJs pass reports undefined free identifiers
333
- * (TS2304/TS2552). Same semantics as `typecheck.undefinedIdentifiers`;
334
- * the two flows share the suppression policy so a patch
335
- * cannot pass one and fail the other. Default: 'warning'.
368
+ * (TS2304/TS2552). Same semantics as `typecheck.undefinedIdentifiers`.
369
+ * The two flows share the suppression policy so a patch cannot pass one
370
+ * and fail the other. Default: 'warning'.
336
371
  */
337
372
  undefinedIdentifiers?: PatchLintSeverityGate;
338
373
  }
@@ -352,8 +387,6 @@ export interface FireForgeState {
352
387
  brand?: string;
353
388
  /** Build mode: dev, debug, release */
354
389
  buildMode?: BuildMode;
355
- /** Last successful build timestamp (ISO string) */
356
- lastBuild?: string;
357
390
  /** Firefox version that was downloaded */
358
391
  downloadedVersion?: string;
359
392
  /** Initial commit hash of the engine (baseline) */
@@ -47,7 +47,7 @@ export interface CustomComponentConfig {
47
47
  /** Whether to register in customElements.js */
48
48
  register: boolean;
49
49
  /**
50
- * What the component IS. `'element'` (the default when unset) is a custom
50
+ * What the component is. `'element'` (the default when unset) is a custom
51
51
  * element with its own tag. `'library'` is a base class + helpers module
52
52
  * that defines no element of its own (e.g. a shared MozLitElement
53
53
  * subclass other components extend): `furnace validate` skips the
@@ -55,7 +55,7 @@ export interface CustomComponentConfig {
55
55
  * and the `missing-css` structural advisory for it, while headers, module
56
56
  * shape, `relative-import`, and (when a `.css` exists) the CSS
57
57
  * compatibility rules still apply. A library exports no element, so
58
- * `kind: "library"` requires `register: false` — the combination with
58
+ * `kind: "library"` requires `register: false`. The combination with
59
59
  * `register: true` is rejected at config parse time.
60
60
  */
61
61
  kind?: 'element' | 'library';
@@ -85,18 +85,18 @@ export interface CustomComponentConfig {
85
85
  * participates in, in the same form used by `insertFTLIfNeeded` (for
86
86
  * example `browser/mybrowser-dock.ftl`). When set:
87
87
  *
88
- * - `furnace create --localized` does NOT scaffold a per-component
89
- * `.ftl` stub — the component shares the feature bundle.
88
+ * - `furnace create --localized` does not scaffold a per-component
89
+ * `.ftl` stub. The component shares the feature bundle.
90
90
  * - The generated `.mjs` calls `insertFTLIfNeeded("<sharedFtl>")` at
91
91
  * the shared path instead of the per-component one.
92
92
  * - `furnace validate`'s `missing-ftl` structural rule is skipped for
93
93
  * the component (there is no `<tag>.ftl` to require).
94
- * - `furnace apply` does NOT copy a per-component `.ftl` into the FTL
95
- * tree nor register a new entry in the locale `jar.mn` — the shared
94
+ * - `furnace apply` does not copy a per-component `.ftl` into the FTL
95
+ * tree nor register a new entry in the locale `jar.mn`. The shared
96
96
  * file is owned by whoever authored the feature bundle.
97
97
  *
98
98
  * Requires `localized: true`. Mutually exclusive with the per-component
99
- * `.ftl` scaffold. Does NOT auto-migrate previous per-component FTL
99
+ * `.ftl` scaffold. Does not auto-migrate previous per-component FTL
100
100
  * state: flipping an existing component onto `sharedFtl` leaves the
101
101
  * prior per-component entry in the engine tree and the locale `jar.mn`
102
102
  * until explicitly cleaned up.
@@ -120,12 +120,12 @@ export interface FurnaceConfig {
120
120
  * variables the fork does not own. `token coverage` counts matches as
121
121
  * `allowlisted` rather than `unknown` so a copied upstream baseline does
122
122
  * not drag fork-owned coverage percentages down. Defaults to `['--moz-']`
123
- * when unset; pass an explicit empty array to count every prefix.
123
+ * when unset. Pass an explicit empty array to count every prefix.
124
124
  */
125
125
  platformPrefixes?: string[];
126
126
  /**
127
- * Custom properties used as runtime state channels — written and read by the
128
- * component itself (e.g. per-frame camera/tile positions) rather than
127
+ * Custom properties used as runtime state channels, written and read by
128
+ * the component itself (e.g. per-frame camera/tile positions) rather than
129
129
  * consumed as design tokens. Listed names are exempt from the
130
130
  * `token-prefix-violation` check even when they do not match `tokenPrefix`
131
131
  * and are not in `tokenAllowlist`. Use this for cross-component runtime
@@ -139,7 +139,7 @@ export interface FurnaceConfig {
139
139
  * the tokens CSS file is `<link>`ed. Forks with multiple chrome host
140
140
  * documents (e.g. `mybrowser.xhtml` beside the stock `browser.xhtml`) should
141
141
  * list every document that may own the link. When omitted, defaults to
142
- * `['browser/base/content/browser.xhtml']` — the upstream Firefox path.
142
+ * `['browser/base/content/browser.xhtml']`, the upstream Firefox path.
143
143
  */
144
144
  tokenHostDocuments?: string[];
145
145
  /**
@@ -157,7 +157,7 @@ export interface FurnaceConfig {
157
157
  * `compilerOptions.paths` entries for deployed component modules
158
158
  * (`chrome://global/content/elements/<file>.mjs`) Furnace keeps in sync
159
159
  * on deploy. Only entries under that chrome prefix that map into
160
- * `components/custom/` are managed; everything else is preserved.
160
+ * `components/custom/` are managed. Everything else is preserved.
161
161
  * Unset disables jsconfig maintenance.
162
162
  */
163
163
  typecheckJsconfig?: string;
@@ -189,11 +189,11 @@ export type FurnacePendingRepairOperation = (typeof FURNACE_PENDING_REPAIR_OPERA
189
189
  * out-of-band from what the state file records.
190
190
  */
191
191
  export interface FurnacePendingRepair {
192
- /** The operation that failed to clean up; used by doctor to route the fix. */
192
+ /** The operation that failed to clean up. Doctor uses it to route the fix. */
193
193
  operation: FurnacePendingRepairOperation;
194
194
  /** ISO timestamp of when the repair marker was written. */
195
195
  timestamp: string;
196
- /** Human-readable summary of the failure; shown by doctor. */
196
+ /** Human-readable summary of the failure. Doctor shows it. */
197
197
  reason: string;
198
198
  }
199
199
  /**
@@ -259,13 +259,13 @@ export interface ApplyResult {
259
259
  /**
260
260
  * Set to true when the rollback journal was restored after a partial failure.
261
261
  * When true, entries in `applied` reflect what was attempted, not what
262
- * persisted — the engine has been restored to its pre-apply state.
262
+ * persisted. The engine has been restored to its pre-apply state.
263
263
  */
264
264
  rolledBack?: boolean;
265
265
  /**
266
266
  * Operator-facing warnings, printed by `logApplyResult`. Populated when
267
267
  * apply overwrote a deployed, patch-owned file whose engine bytes
268
- * differed from the component source — the case where a
268
+ * differed from the component source, which is the case where a
269
269
  * shipped engine-only fix is silently reverted by the copy.
270
270
  */
271
271
  warnings?: string[];
@@ -331,7 +331,7 @@ export type ResolvedTestStyle = 'mochikit' | 'browser-chrome' | 'xpcshell' | 'no
331
331
  * caller is never asked to invent a value it does not have.
332
332
  */
333
333
  export interface ComponentApplyContext {
334
- /** Project root — what registration consistency resolves against. */
334
+ /** Project root, what registration consistency resolves against. */
335
335
  root: string;
336
336
  /** Firefox source directory the component deploys into. */
337
337
  engineDir: string;
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Re-exports all type definitions.
3
3
  */
4
- export type {} from './commands/index.js';
5
4
  export type { BuildConfig, FireForgeConfig, FirefoxConfig, FirefoxProduct, ProjectLicense, ProjectPaths, WireConfig, } from './config.js';
6
5
  export type { ApplyResult, ComponentType, CustomComponentConfig, DryRunAction, FurnaceConfig, FurnaceState, OverrideComponentConfig, OverrideType, StepError, ValidationIssue, } from './furnace.js';
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Domain types for raw JSON documents (fireforge.json, furnace.json).
3
3
  *
4
- * FireForge deliberately reads and writes some documents in their raw,
5
- * unvalidated form — e.g. `fireforge config --force` round-trips keys that
4
+ * FireForge reads and writes some documents in their raw, unvalidated
5
+ * form. For example, `fireforge config --force` round-trips keys that
6
6
  * the validated `FireForgeConfig` schema would strip. These types give that
7
7
  * pipeline a concrete value contract: every value is JSON data, never a
8
8
  * function, class instance, symbol, or other non-serializable runtime value.
@@ -14,7 +14,7 @@ export type JsonValue = string | number | boolean | null | JsonValue[] | JsonObj
14
14
  /**
15
15
  * A JSON object node. `undefined` is admitted as a property value (not a
16
16
  * `JsonValue`) so in-memory documents can be built field-by-field from
17
- * optional inputs; `JSON.stringify` drops such properties on write, exactly
17
+ * optional inputs. `JSON.stringify` drops such properties on write, exactly
18
18
  * like an absent key.
19
19
  */
20
20
  export interface JsonObject {
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Domain types for raw JSON documents (fireforge.json, furnace.json).
4
4
  *
5
- * FireForge deliberately reads and writes some documents in their raw,
6
- * unvalidated form — e.g. `fireforge config --force` round-trips keys that
5
+ * FireForge reads and writes some documents in their raw, unvalidated
6
+ * form. For example, `fireforge config --force` round-trips keys that
7
7
  * the validated `FireForgeConfig` schema would strip. These types give that
8
8
  * pipeline a concrete value contract: every value is JSON data, never a
9
9
  * function, class instance, symbol, or other non-serializable runtime value.
@@ -23,9 +23,9 @@ export interface TypecheckIssue {
23
23
  /** Raw TypeScript diagnostic code (e.g. 2322 for a type mismatch). */
24
24
  code: number;
25
25
  /**
26
- * Severity bucket — TS reports `Suggestion` and `Message` categories
27
- * too, but `runTypecheck` collapses both into `'warning'` so the CLI
28
- * has only two visible levels.
26
+ * Severity bucket. TS also reports `Suggestion` and `Message`
27
+ * categories, but `runTypecheck` collapses both into `'warning'` so
28
+ * the CLI has only two visible levels.
29
29
  */
30
30
  category: 'error' | 'warning';
31
31
  /** Human-readable message text (already flattened from chains). */
@@ -2,11 +2,11 @@
2
2
  * A failure description, or a thunk producing one.
3
3
  *
4
4
  * The thunk form exists so a hot call site pays nothing on the passing
5
- * path — `assert(ok, () => \`bad state: ${JSON.stringify(x)}\`)` builds
5
+ * path: `assert(ok, () => \`bad state: ${JSON.stringify(x)}\`)` builds
6
6
  * the string only when the assertion actually fails, where a plain
7
7
  * template literal would build it on every call.
8
8
  */
9
- export type AssertionMessage = string | (() => string);
9
+ type AssertionMessage = string | (() => string);
10
10
  /**
11
11
  * Asserts that an internal invariant holds.
12
12
  *
@@ -18,23 +18,10 @@ export type AssertionMessage = string | (() => string);
18
18
  * @throws {@link InternalInvariantError} when `condition` is falsy.
19
19
  */
20
20
  export declare function assert(condition: unknown, message: AssertionMessage): asserts condition;
21
- /**
22
- * Asserts that a value is neither `null` nor `undefined`, narrowing it in
23
- * place for the statements that follow.
24
- *
25
- * Use this in statement position, where the value is already bound to a
26
- * name. Use {@link expectDefined} in expression position, where it is not.
27
- *
28
- * @param value - The value that should be present
29
- * @param message - What was supposed to be present, and why
30
- * @throws {@link InternalInvariantError} when `value` is `null` or `undefined`.
31
- */
32
- export declare function assertDefined<T>(value: T, message: AssertionMessage): asserts value is NonNullable<T>;
33
21
  /**
34
22
  * Returns a value that must be present, throwing if it is not.
35
23
  *
36
- * The expression-position counterpart to {@link assertDefined}: it checks
37
- * and returns in one step, so an indexed read can be asserted inline
24
+ * Checks and returns in one step, so an indexed read can be asserted inline
38
25
  * (`push({ content: expectDefined(lines[k], …) })`) without first binding
39
26
  * it to a local.
40
27
  *
@@ -44,3 +31,4 @@ export declare function assertDefined<T>(value: T, message: AssertionMessage): a
44
31
  * @throws {@link InternalInvariantError} when `value` is `null` or `undefined`.
45
32
  */
46
33
  export declare function expectDefined<T>(value: T, message: AssertionMessage): NonNullable<T>;
34
+ export {};
@@ -2,17 +2,17 @@
2
2
  /**
3
3
  * Runtime assertions for FireForge's own internal invariants.
4
4
  *
5
- * These check state that FireForge itself established — a journal was
5
+ * These check state that FireForge itself established: a journal was
6
6
  * registered before the first mutation, a lock is held before a write,
7
- * manifest ordering is contiguous after a renumber. They are NOT input
8
- * validation: anything derived from user input, the filesystem, or a
7
+ * manifest ordering is contiguous after a renumber. They are not input
8
+ * validation. Anything derived from user input, the filesystem, or a
9
9
  * subprocess belongs in a typed error from `src/errors/` with a
10
10
  * `userMessage` that tells the operator what to do. An assertion failure
11
- * says the opposite — that nothing the operator could have done would
12
- * have prevented it.
11
+ * says the opposite: nothing the operator could have done would have
12
+ * prevented it.
13
13
  *
14
14
  * Every check routes through a helper here rather than being open-coded
15
- * as `if (!condition) throw`. That is deliberate: an inline throw adds a
15
+ * as `if (!condition) throw`. An inline throw adds a
16
16
  * permanently-uncovered branch to every function it appears in, and the
17
17
  * per-module coverage floors in `scripts/check-coverage-thresholds.mjs`
18
18
  * would pay for it in ~40 places. Routed through a call, the branch lives
@@ -46,27 +46,10 @@ export function assert(condition, message) {
46
46
  throw new InternalInvariantError(resolveMessage(message));
47
47
  }
48
48
  }
49
- /**
50
- * Asserts that a value is neither `null` nor `undefined`, narrowing it in
51
- * place for the statements that follow.
52
- *
53
- * Use this in statement position, where the value is already bound to a
54
- * name. Use {@link expectDefined} in expression position, where it is not.
55
- *
56
- * @param value - The value that should be present
57
- * @param message - What was supposed to be present, and why
58
- * @throws {@link InternalInvariantError} when `value` is `null` or `undefined`.
59
- */
60
- export function assertDefined(value, message) {
61
- if (value === null || value === undefined) {
62
- throw new InternalInvariantError(resolveMessage(message));
63
- }
64
- }
65
49
  /**
66
50
  * Returns a value that must be present, throwing if it is not.
67
51
  *
68
- * The expression-position counterpart to {@link assertDefined}: it checks
69
- * and returns in one step, so an indexed read can be asserted inline
52
+ * Checks and returns in one step, so an indexed read can be asserted inline
70
53
  * (`push({ content: expectDefined(lines[k], …) })`) without first binding
71
54
  * it to a local.
72
55
  *
@@ -1,9 +1,9 @@
1
1
  /** Source identity of the running build. */
2
- export interface BuildIdentity {
2
+ interface BuildIdentity {
3
3
  shortCommit: string;
4
4
  dirty: boolean;
5
5
  /**
6
- * Content hash of the uncommitted diff, present only for a DIRTY installed
6
+ * Content hash of the uncommitted diff, present only for a dirty installed
7
7
  * build. Two packs from the same HEAD with different uncommitted content
8
8
  * share `shortCommit` and the `.dirty` marker, so without this they report
9
9
  * byte-identical `--version` strings and a report against
@@ -13,15 +13,15 @@ export interface BuildIdentity {
13
13
  */
14
14
  dirtyHash?: string;
15
15
  }
16
- /** @internal Reads the stamped dist/build-info.json; null when absent/invalid. */
16
+ /** @internal Reads the stamped dist/build-info.json. Null when absent/invalid. */
17
17
  export declare function readBuildInfoFile(packageRoot: string): BuildIdentity | null;
18
18
  type GitRunner = (args: string[]) => string;
19
- /** @internal Live git identity of the checkout; null when git is unusable. */
19
+ /** @internal Live git identity of the checkout. Null when git is unusable. */
20
20
  export declare function readGitBuildIdentity(runGit?: GitRunner): BuildIdentity | null;
21
21
  /**
22
- * @internal Formats `<version>+g<sha>[.dirty[.<hash>]]`; plain version on
22
+ * @internal Formats `<version>+g<sha>[.dirty[.<hash>]]`. Plain version on
23
23
  * null identity. The trailing content hash appears only for a dirty
24
- * INSTALLED build, where `dist/build-info.json` already carries it — every
24
+ * installed build, where `dist/build-info.json` already carries it. Every
25
25
  * segment stays valid semver build metadata (dot-separated alphanumerics).
26
26
  */
27
27
  export declare function formatVersionWithIdentity(version: string, identity: BuildIdentity | null): string;
@@ -6,14 +6,14 @@
6
6
  * fingerprinting tarballs by sha256 to know which build a claim was verified
7
7
  * against. `--version` reports `<semver>+g<short-sha>[.dirty[.<content-hash>]]`:
8
8
  *
9
- * - In a git checkout (dev runs via tsx), identity comes from live git — a
9
+ * - In a git checkout (dev runs via tsx), identity comes from live git, so a
10
10
  * stale `dist/build-info.json` from an old build must never win.
11
11
  * - In an installed package, it comes from `dist/build-info.json`, stamped
12
12
  * by scripts/generate-build-info.mjs at build/pack time.
13
13
  * - When neither yields an identity, `--version` degrades to the plain
14
14
  * semver. Reading identity must never throw.
15
15
  *
16
- * Deliberately NOT wired into the per-patch lint cache key: identity would
16
+ * Not wired into the per-patch lint cache key: identity would
17
17
  * churn the cache on every commit at the same semver for no correctness gain
18
18
  * (`getPackageVersion` stays the cache input).
19
19
  */
@@ -22,7 +22,7 @@ import { existsSync, readFileSync } from 'node:fs';
22
22
  import { join } from 'node:path';
23
23
  import { getPackageRoot, getPackageVersion } from './package-root.js';
24
24
  import { isObject } from './validation.js';
25
- /** @internal Reads the stamped dist/build-info.json; null when absent/invalid. */
25
+ /** @internal Reads the stamped dist/build-info.json. Null when absent/invalid. */
26
26
  export function readBuildInfoFile(packageRoot) {
27
27
  try {
28
28
  const raw = readFileSync(join(packageRoot, 'dist', 'build-info.json'), 'utf-8');
@@ -49,7 +49,7 @@ const defaultGitRunner = (args) => execFileSync('git', args, {
49
49
  encoding: 'utf-8',
50
50
  stdio: ['ignore', 'pipe', 'ignore'],
51
51
  });
52
- /** @internal Live git identity of the checkout; null when git is unusable. */
52
+ /** @internal Live git identity of the checkout. Null when git is unusable. */
53
53
  export function readGitBuildIdentity(runGit = defaultGitRunner) {
54
54
  try {
55
55
  const commit = runGit(['rev-parse', 'HEAD']).trim();
@@ -80,9 +80,9 @@ function getBuildIdentity() {
80
80
  }
81
81
  }
82
82
  /**
83
- * @internal Formats `<version>+g<sha>[.dirty[.<hash>]]`; plain version on
83
+ * @internal Formats `<version>+g<sha>[.dirty[.<hash>]]`. Plain version on
84
84
  * null identity. The trailing content hash appears only for a dirty
85
- * INSTALLED build, where `dist/build-info.json` already carries it — every
85
+ * installed build, where `dist/build-info.json` already carries it. Every
86
86
  * segment stays valid semver build metadata (dot-separated alphanumerics).
87
87
  */
88
88
  export function formatVersionWithIdentity(version, identity) {