@hominis/fireforge 0.55.0 → 0.60.0

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 (1262) hide show
  1. package/CHANGELOG.md +233 -6
  2. package/README.md +51 -17
  3. package/dist/bin/fireforge.js +34 -129
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/check/check.js +394 -0
  6. package/dist/src/check/gate.js +448 -0
  7. package/dist/src/check/index.js +10 -0
  8. package/dist/src/check/record.js +155 -0
  9. package/dist/src/cli/command.js +286 -0
  10. package/dist/src/cli/output.js +96 -0
  11. package/dist/src/cli/program.js +231 -0
  12. package/dist/src/cli/stdio.js +59 -0
  13. package/dist/src/cli/version.js +99 -0
  14. package/dist/src/commands/bootstrap.js +17 -102
  15. package/dist/src/commands/build.js +34 -456
  16. package/dist/src/commands/check.js +44 -157
  17. package/dist/src/commands/config.js +50 -226
  18. package/dist/src/commands/discard.js +38 -215
  19. package/dist/src/commands/doctor.js +29 -456
  20. package/dist/src/commands/download.js +35 -499
  21. package/dist/src/commands/export.js +42 -431
  22. package/dist/src/commands/furnace.js +220 -0
  23. package/dist/src/commands/gate.js +127 -0
  24. package/dist/src/commands/import.js +44 -445
  25. package/dist/src/commands/index.js +86 -0
  26. package/dist/src/commands/lint.js +44 -546
  27. package/dist/src/commands/merge-driver.js +56 -0
  28. package/dist/src/commands/migrate.js +75 -0
  29. package/dist/src/commands/override.js +43 -0
  30. package/dist/src/commands/package.js +48 -77
  31. package/dist/src/commands/patch.js +221 -0
  32. package/dist/src/commands/re-export.js +55 -359
  33. package/dist/src/commands/rebase.js +69 -0
  34. package/dist/src/commands/register.js +62 -103
  35. package/dist/src/commands/reset.js +28 -91
  36. package/dist/src/commands/resolve.js +20 -167
  37. package/dist/src/commands/restore.js +19 -0
  38. package/dist/src/commands/run.js +60 -382
  39. package/dist/src/commands/setup.js +78 -90
  40. package/dist/src/commands/status.js +44 -413
  41. package/dist/src/commands/test.js +97 -423
  42. package/dist/src/commands/token.js +185 -228
  43. package/dist/src/commands/typecheck.js +59 -241
  44. package/dist/src/commands/verify.js +28 -334
  45. package/dist/src/commands/version.js +14 -0
  46. package/dist/src/commands/watch.js +20 -218
  47. package/dist/src/commands/wire.js +60 -349
  48. package/dist/src/commands/workspace.js +117 -0
  49. package/dist/src/config/edit.js +237 -0
  50. package/dist/src/config/index.js +15 -0
  51. package/dist/src/config/load.js +59 -0
  52. package/dist/src/config/previous.js +404 -0
  53. package/dist/src/config/schema/build.js +63 -0
  54. package/dist/src/config/schema/check.js +113 -0
  55. package/dist/src/config/schema/common.js +71 -0
  56. package/dist/src/config/schema/export-queue.js +36 -0
  57. package/dist/src/config/schema/firefox.js +69 -0
  58. package/dist/src/config/schema/gate.js +199 -0
  59. package/dist/src/config/schema/identity.js +55 -0
  60. package/dist/src/config/schema/index.js +45 -0
  61. package/dist/src/config/schema/lint.js +297 -0
  62. package/dist/src/config/schema/policy.js +111 -0
  63. package/dist/src/config/schema/source.js +90 -0
  64. package/dist/src/config/schema/test.js +17 -0
  65. package/dist/src/config/schema/toolchains.js +17 -0
  66. package/dist/src/config/schema/typecheck.js +29 -0
  67. package/dist/src/config/schema/wire.js +15 -0
  68. package/dist/src/diff/apply.js +129 -0
  69. package/dist/src/diff/index.js +16 -0
  70. package/dist/src/diff/model.js +267 -0
  71. package/dist/src/diff/query.js +65 -0
  72. package/dist/src/doctor/index.js +240 -0
  73. package/dist/src/engine/archive.js +396 -0
  74. package/dist/src/engine/audit.js +66 -0
  75. package/dist/src/engine/build.js +150 -0
  76. package/dist/src/engine/hostLocks.js +66 -0
  77. package/dist/src/engine/index.js +26 -0
  78. package/dist/src/engine/installManifests.js +147 -0
  79. package/dist/src/engine/mach.js +97 -0
  80. package/dist/src/engine/machHints.js +80 -0
  81. package/dist/src/engine/mozconfig.js +110 -0
  82. package/dist/src/engine/objdir.js +124 -0
  83. package/dist/src/engine/package.js +169 -0
  84. package/dist/src/engine/pin.js +12 -0
  85. package/dist/src/engine/pool.js +423 -0
  86. package/dist/src/engine/pristine.js +281 -0
  87. package/dist/src/engine/python.js +68 -0
  88. package/dist/src/engine/resourceGuard.js +582 -0
  89. package/dist/src/engine/run.js +259 -0
  90. package/dist/src/engine/smoke.js +204 -0
  91. package/dist/src/engine/staleness.js +229 -0
  92. package/dist/src/engine/watch.js +82 -0
  93. package/dist/src/engine/workspace.js +85 -0
  94. package/dist/src/furnace/config.js +360 -0
  95. package/dist/src/furnace/deploy.js +414 -0
  96. package/dist/src/furnace/diff.js +59 -0
  97. package/dist/src/furnace/edit.js +64 -0
  98. package/dist/src/furnace/fragments.js +53 -0
  99. package/dist/src/furnace/index.js +19 -0
  100. package/dist/src/furnace/operations.js +283 -0
  101. package/dist/src/furnace/registration.js +220 -0
  102. package/dist/src/furnace/scaffold.js +311 -0
  103. package/dist/src/furnace/typing.js +252 -0
  104. package/dist/src/furnace/validate.js +662 -0
  105. package/dist/src/git/apply.js +129 -0
  106. package/dist/src/git/diff.js +143 -0
  107. package/dist/src/git/index.js +33 -0
  108. package/dist/src/git/objects.js +201 -0
  109. package/dist/src/git/refs.js +85 -0
  110. package/dist/src/git/repo.js +222 -0
  111. package/dist/src/git/run.js +242 -0
  112. package/dist/src/git/status.js +156 -0
  113. package/dist/src/kernel/errors.js +123 -0
  114. package/dist/src/kernel/fs.js +515 -0
  115. package/dist/src/kernel/glob.js +63 -0
  116. package/dist/src/kernel/hash.js +28 -0
  117. package/dist/src/kernel/journal.js +524 -0
  118. package/dist/src/kernel/json-edit.js +198 -0
  119. package/dist/src/kernel/json.js +101 -0
  120. package/dist/src/kernel/lock.js +589 -0
  121. package/dist/src/kernel/log.js +154 -0
  122. package/dist/src/kernel/process/identity.js +313 -0
  123. package/dist/src/kernel/process/index.js +8 -0
  124. package/dist/src/kernel/process/listing.js +128 -0
  125. package/dist/src/kernel/process/spawn.js +430 -0
  126. package/dist/src/kernel/process/tree.js +301 -0
  127. package/dist/src/kernel/schema.js +308 -0
  128. package/dist/src/kernel/signals.js +171 -0
  129. package/dist/src/kernel/text.js +151 -0
  130. package/dist/src/kernel/time.js +83 -0
  131. package/dist/src/kernel/tty.js +84 -0
  132. package/dist/src/lint/cache.js +77 -0
  133. package/dist/src/lint/checkjs.js +400 -0
  134. package/dist/src/lint/index.js +3 -0
  135. package/dist/src/lint/input.js +100 -0
  136. package/dist/src/lint/report.js +107 -0
  137. package/dist/src/lint/rule.js +41 -0
  138. package/dist/src/lint/rules/css.js +308 -0
  139. package/dist/src/lint/rules/javascript.js +299 -0
  140. package/dist/src/lint/rules/jsdoc.js +249 -0
  141. package/dist/src/lint/rules/license.js +93 -0
  142. package/dist/src/lint/rules/policy.js +201 -0
  143. package/dist/src/lint/rules/registration.js +264 -0
  144. package/dist/src/lint/rules/size.js +299 -0
  145. package/dist/src/lint/run.js +126 -0
  146. package/dist/src/lint/shim.js +323 -0
  147. package/dist/src/lint/typescript.js +186 -0
  148. package/dist/src/lint/waivers.js +93 -0
  149. package/dist/src/mode/changes.js +264 -0
  150. package/dist/src/mode/diagnose.js +173 -0
  151. package/dist/src/mode/export.js +147 -0
  152. package/dist/src/mode/index.js +23 -0
  153. package/dist/src/mode/migrate.js +181 -0
  154. package/dist/src/mode/previousWaivers.js +206 -0
  155. package/dist/src/mode/pristine.js +61 -0
  156. package/dist/src/mode/rebase.js +197 -0
  157. package/dist/src/mode/report.js +157 -0
  158. package/dist/src/mode/setup.js +103 -0
  159. package/dist/src/mode/tracked.js +116 -0
  160. package/dist/src/mode/upgrade.js +281 -0
  161. package/dist/src/mode/watch.js +83 -0
  162. package/dist/src/mode/workspace.js +189 -0
  163. package/dist/src/mozbuild/index.js +6 -0
  164. package/dist/src/mozbuild/jar.js +366 -0
  165. package/dist/src/mozbuild/mozbuild.js +321 -0
  166. package/dist/src/mozbuild/paths.js +96 -0
  167. package/dist/src/mozbuild/references.js +39 -0
  168. package/dist/src/mozbuild/testManifest.js +343 -0
  169. package/dist/src/mozbuild/text.js +142 -0
  170. package/dist/src/project/changes.js +145 -0
  171. package/dist/src/project/checkout.js +66 -0
  172. package/dist/src/project/index.js +11 -0
  173. package/dist/src/project/license.js +119 -0
  174. package/dist/src/project/project.js +111 -0
  175. package/dist/src/project/state.js +85 -0
  176. package/dist/src/project/tracked.js +1 -0
  177. package/dist/src/queue/apply.js +270 -0
  178. package/dist/src/queue/attribute.js +159 -0
  179. package/dist/src/queue/baseline.js +409 -0
  180. package/dist/src/queue/capture.js +298 -0
  181. package/dist/src/queue/changes.js +234 -0
  182. package/dist/src/queue/index.js +50 -0
  183. package/dist/src/queue/manifest.js +341 -0
  184. package/dist/src/queue/operations.js +454 -0
  185. package/dist/src/queue/placement.js +220 -0
  186. package/dist/src/queue/queue.js +359 -0
  187. package/dist/src/queue/restore.js +103 -0
  188. package/dist/src/queue/session.js +685 -0
  189. package/dist/src/queue/status.js +137 -0
  190. package/dist/src/register/files.js +39 -0
  191. package/dist/src/register/index.js +8 -0
  192. package/dist/src/register/js.js +217 -0
  193. package/dist/src/register/register.js +359 -0
  194. package/dist/src/register/wire.js +146 -0
  195. package/dist/src/source/adopt.js +99 -0
  196. package/dist/src/source/changes.js +132 -0
  197. package/dist/src/source/edit.js +278 -0
  198. package/dist/src/source/export.js +70 -0
  199. package/dist/src/source/groups.js +131 -0
  200. package/dist/src/source/index.js +20 -0
  201. package/dist/src/source/materialize.js +382 -0
  202. package/dist/src/source/merge.js +255 -0
  203. package/dist/src/source/objects.js +102 -0
  204. package/dist/src/source/previous.js +166 -0
  205. package/dist/src/source/records.js +138 -0
  206. package/dist/src/source/refresh.js +264 -0
  207. package/dist/src/source/tree.js +337 -0
  208. package/dist/src/syntax/css.js +215 -0
  209. package/dist/src/syntax/fragments.js +63 -0
  210. package/dist/src/syntax/index.js +10 -0
  211. package/dist/src/syntax/js.js +270 -0
  212. package/dist/src/test/classify.js +826 -0
  213. package/dist/src/test/control.js +236 -0
  214. package/dist/src/test/host.js +266 -0
  215. package/dist/src/test/index.js +11 -0
  216. package/dist/src/test/plan.js +347 -0
  217. package/dist/src/test/rawLog.js +138 -0
  218. package/dist/src/test/run.js +404 -0
  219. package/dist/src/test/verdict.js +420 -0
  220. package/dist/src/test/xpcshell.js +143 -0
  221. package/dist/src/tokens/add.js +304 -0
  222. package/dist/src/tokens/coverage.js +65 -0
  223. package/dist/src/tokens/css.js +58 -0
  224. package/dist/src/tokens/index.js +12 -0
  225. package/dist/src/tokens/lint.js +96 -0
  226. package/dist/src/tokens/model.js +118 -0
  227. package/dist/src/tokens/settings.js +87 -0
  228. package/dist/src/tokens/siblings.js +104 -0
  229. package/dist/src/typecheck/explain.js +123 -0
  230. package/dist/src/typecheck/index.js +8 -0
  231. package/dist/src/typecheck/typecheck.js +332 -0
  232. package/docs/README.md +23 -28
  233. package/docs/authoring.md +97 -0
  234. package/docs/configuration.md +307 -766
  235. package/docs/exit-codes.md +76 -94
  236. package/docs/furnace.md +111 -221
  237. package/docs/gate.md +205 -0
  238. package/docs/getting-started.md +165 -0
  239. package/docs/machine-output.md +201 -290
  240. package/docs/migrating.md +261 -0
  241. package/docs/patch-workflow.md +159 -723
  242. package/docs/quality.md +220 -0
  243. package/docs/source-workflow.md +228 -0
  244. package/docs/testing.md +101 -719
  245. package/docs/workspaces.md +187 -0
  246. package/package.json +22 -30
  247. package/templates/configs/common.mozconfig +8 -2
  248. package/templates/configs/darwin.mozconfig +6 -7
  249. package/templates/configs/linux.mozconfig +5 -8
  250. package/templates/configs/win32.mozconfig +3 -9
  251. package/dist/bin/fireforge.d.ts +0 -9
  252. package/dist/src/cli-usage-error.d.ts +0 -46
  253. package/dist/src/cli-usage-error.js +0 -81
  254. package/dist/src/cli.d.ts +0 -41
  255. package/dist/src/cli.js +0 -380
  256. package/dist/src/commands/bootstrap-checks.d.ts +0 -16
  257. package/dist/src/commands/bootstrap-checks.js +0 -66
  258. package/dist/src/commands/bootstrap.d.ts +0 -10
  259. package/dist/src/commands/build-prelock.d.ts +0 -20
  260. package/dist/src/commands/build-prelock.js +0 -50
  261. package/dist/src/commands/build.d.ts +0 -13
  262. package/dist/src/commands/check-report.d.ts +0 -41
  263. package/dist/src/commands/check-report.js +0 -98
  264. package/dist/src/commands/check-run.d.ts +0 -44
  265. package/dist/src/commands/check-run.js +0 -125
  266. package/dist/src/commands/check-steps.d.ts +0 -75
  267. package/dist/src/commands/check-steps.js +0 -200
  268. package/dist/src/commands/check.d.ts +0 -32
  269. package/dist/src/commands/config.d.ts +0 -13
  270. package/dist/src/commands/declarations-report.d.ts +0 -49
  271. package/dist/src/commands/declarations-report.js +0 -83
  272. package/dist/src/commands/destructive-decision.d.ts +0 -19
  273. package/dist/src/commands/destructive-decision.js +0 -31
  274. package/dist/src/commands/discard.d.ts +0 -12
  275. package/dist/src/commands/doctor-check-core.d.ts +0 -110
  276. package/dist/src/commands/doctor-check-core.js +0 -24
  277. package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
  278. package/dist/src/commands/doctor-engine-eslint.js +0 -17
  279. package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
  280. package/dist/src/commands/doctor-external-toolchains.js +0 -56
  281. package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
  282. package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
  283. package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
  284. package/dist/src/commands/doctor-furnace-jar.js +0 -44
  285. package/dist/src/commands/doctor-furnace.d.ts +0 -8
  286. package/dist/src/commands/doctor-furnace.js +0 -514
  287. package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
  288. package/dist/src/commands/doctor-macos-sdk.js +0 -158
  289. package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
  290. package/dist/src/commands/doctor-orphaned-harness.js +0 -98
  291. package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
  292. package/dist/src/commands/doctor-patch-manifest.js +0 -156
  293. package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
  294. package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
  295. package/dist/src/commands/doctor-source-pin.d.ts +0 -29
  296. package/dist/src/commands/doctor-source-pin.js +0 -91
  297. package/dist/src/commands/doctor-working-tree.d.ts +0 -27
  298. package/dist/src/commands/doctor-working-tree.js +0 -89
  299. package/dist/src/commands/doctor.d.ts +0 -49
  300. package/dist/src/commands/download.d.ts +0 -11
  301. package/dist/src/commands/export-adopt-check.d.ts +0 -37
  302. package/dist/src/commands/export-adopt-check.js +0 -97
  303. package/dist/src/commands/export-all.d.ts +0 -11
  304. package/dist/src/commands/export-all.js +0 -361
  305. package/dist/src/commands/export-flow.d.ts +0 -124
  306. package/dist/src/commands/export-flow.js +0 -423
  307. package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
  308. package/dist/src/commands/export-placement-conflicts.js +0 -75
  309. package/dist/src/commands/export-placement-gate.d.ts +0 -42
  310. package/dist/src/commands/export-placement-gate.js +0 -107
  311. package/dist/src/commands/export-placement-policy.d.ts +0 -22
  312. package/dist/src/commands/export-placement-policy.js +0 -54
  313. package/dist/src/commands/export-shared.d.ts +0 -152
  314. package/dist/src/commands/export-shared.js +0 -396
  315. package/dist/src/commands/export-staged-registration.d.ts +0 -46
  316. package/dist/src/commands/export-staged-registration.js +0 -91
  317. package/dist/src/commands/export.d.ts +0 -13
  318. package/dist/src/commands/forward-import-remedy.d.ts +0 -31
  319. package/dist/src/commands/forward-import-remedy.js +0 -62
  320. package/dist/src/commands/furnace/apply.d.ts +0 -8
  321. package/dist/src/commands/furnace/apply.js +0 -327
  322. package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
  323. package/dist/src/commands/furnace/authoring-config.js +0 -19
  324. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
  325. package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
  326. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
  327. package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
  328. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
  329. package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
  330. package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
  331. package/dist/src/commands/furnace/chrome-doc.js +0 -365
  332. package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
  333. package/dist/src/commands/furnace/create-browser-test.js +0 -179
  334. package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
  335. package/dist/src/commands/furnace/create-dry-run.js +0 -107
  336. package/dist/src/commands/furnace/create-features.d.ts +0 -24
  337. package/dist/src/commands/furnace/create-features.js +0 -55
  338. package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
  339. package/dist/src/commands/furnace/create-mochikit.js +0 -75
  340. package/dist/src/commands/furnace/create-readback.d.ts +0 -22
  341. package/dist/src/commands/furnace/create-readback.js +0 -32
  342. package/dist/src/commands/furnace/create-templates.d.ts +0 -119
  343. package/dist/src/commands/furnace/create-templates.js +0 -283
  344. package/dist/src/commands/furnace/create-validation.d.ts +0 -6
  345. package/dist/src/commands/furnace/create-validation.js +0 -59
  346. package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
  347. package/dist/src/commands/furnace/create-xpcshell.js +0 -80
  348. package/dist/src/commands/furnace/create.d.ts +0 -24
  349. package/dist/src/commands/furnace/create.js +0 -407
  350. package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
  351. package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
  352. package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
  353. package/dist/src/commands/furnace/deploy-named.js +0 -107
  354. package/dist/src/commands/furnace/deploy.d.ts +0 -9
  355. package/dist/src/commands/furnace/deploy.js +0 -229
  356. package/dist/src/commands/furnace/diff.d.ts +0 -11
  357. package/dist/src/commands/furnace/diff.js +0 -238
  358. package/dist/src/commands/furnace/index.d.ts +0 -4
  359. package/dist/src/commands/furnace/index.js +0 -283
  360. package/dist/src/commands/furnace/init.d.ts +0 -11
  361. package/dist/src/commands/furnace/init.js +0 -287
  362. package/dist/src/commands/furnace/list.d.ts +0 -8
  363. package/dist/src/commands/furnace/list.js +0 -104
  364. package/dist/src/commands/furnace/override.d.ts +0 -16
  365. package/dist/src/commands/furnace/override.js +0 -454
  366. package/dist/src/commands/furnace/preview.d.ts +0 -19
  367. package/dist/src/commands/furnace/preview.js +0 -349
  368. package/dist/src/commands/furnace/refresh.d.ts +0 -10
  369. package/dist/src/commands/furnace/refresh.js +0 -303
  370. package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
  371. package/dist/src/commands/furnace/remove-mutations.js +0 -168
  372. package/dist/src/commands/furnace/remove-state.d.ts +0 -20
  373. package/dist/src/commands/furnace/remove-state.js +0 -60
  374. package/dist/src/commands/furnace/remove.d.ts +0 -8
  375. package/dist/src/commands/furnace/remove.js +0 -415
  376. package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
  377. package/dist/src/commands/furnace/rename-browser-test.js +0 -68
  378. package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
  379. package/dist/src/commands/furnace/rename-dry-run.js +0 -127
  380. package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
  381. package/dist/src/commands/furnace/rename-helpers.js +0 -85
  382. package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
  383. package/dist/src/commands/furnace/rename-registrations.js +0 -98
  384. package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
  385. package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
  386. package/dist/src/commands/furnace/rename.d.ts +0 -6
  387. package/dist/src/commands/furnace/rename.js +0 -400
  388. package/dist/src/commands/furnace/scan.d.ts +0 -14
  389. package/dist/src/commands/furnace/scan.js +0 -192
  390. package/dist/src/commands/furnace/status.d.ts +0 -7
  391. package/dist/src/commands/furnace/status.js +0 -209
  392. package/dist/src/commands/furnace/sync.d.ts +0 -12
  393. package/dist/src/commands/furnace/sync.js +0 -145
  394. package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
  395. package/dist/src/commands/furnace/test-file-name.js +0 -39
  396. package/dist/src/commands/furnace/validate-report.d.ts +0 -45
  397. package/dist/src/commands/furnace/validate-report.js +0 -91
  398. package/dist/src/commands/furnace/validate.d.ts +0 -8
  399. package/dist/src/commands/furnace/validate.js +0 -309
  400. package/dist/src/commands/furnace/validation-output.d.ts +0 -47
  401. package/dist/src/commands/furnace/validation-output.js +0 -161
  402. package/dist/src/commands/import.d.ts +0 -11
  403. package/dist/src/commands/lint-per-patch.d.ts +0 -10
  404. package/dist/src/commands/lint-per-patch.js +0 -428
  405. package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
  406. package/dist/src/commands/lint-per-run-checkjs.js +0 -102
  407. package/dist/src/commands/lint-report.d.ts +0 -25
  408. package/dist/src/commands/lint-report.js +0 -76
  409. package/dist/src/commands/lint.d.ts +0 -47
  410. package/dist/src/commands/manifest.d.ts +0 -38
  411. package/dist/src/commands/manifest.js +0 -68
  412. package/dist/src/commands/package.d.ts +0 -11
  413. package/dist/src/commands/park.d.ts +0 -22
  414. package/dist/src/commands/park.js +0 -232
  415. package/dist/src/commands/patch/body.d.ts +0 -29
  416. package/dist/src/commands/patch/body.js +0 -60
  417. package/dist/src/commands/patch/compact.d.ts +0 -28
  418. package/dist/src/commands/patch/compact.js +0 -208
  419. package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
  420. package/dist/src/commands/patch/delete-gap-notice.js +0 -48
  421. package/dist/src/commands/patch/delete.d.ts +0 -28
  422. package/dist/src/commands/patch/delete.js +0 -131
  423. package/dist/src/commands/patch/entry-projection.d.ts +0 -13
  424. package/dist/src/commands/patch/entry-projection.js +0 -24
  425. package/dist/src/commands/patch/index.d.ts +0 -16
  426. package/dist/src/commands/patch/index.js +0 -54
  427. package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
  428. package/dist/src/commands/patch/lint-ignore-from.js +0 -141
  429. package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
  430. package/dist/src/commands/patch/lint-ignore.js +0 -263
  431. package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
  432. package/dist/src/commands/patch/move-files-adopt.js +0 -65
  433. package/dist/src/commands/patch/move-files-create.d.ts +0 -19
  434. package/dist/src/commands/patch/move-files-create.js +0 -187
  435. package/dist/src/commands/patch/move-files-into.d.ts +0 -65
  436. package/dist/src/commands/patch/move-files-into.js +0 -325
  437. package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
  438. package/dist/src/commands/patch/move-files-retire.js +0 -91
  439. package/dist/src/commands/patch/move-files.d.ts +0 -28
  440. package/dist/src/commands/patch/move-files.js +0 -224
  441. package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
  442. package/dist/src/commands/patch/move-size-tier.js +0 -66
  443. package/dist/src/commands/patch/patch-context.d.ts +0 -40
  444. package/dist/src/commands/patch/patch-context.js +0 -51
  445. package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
  446. package/dist/src/commands/patch/removal-created-files.js +0 -83
  447. package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
  448. package/dist/src/commands/patch/removal-dependents.js +0 -133
  449. package/dist/src/commands/patch/rename.d.ts +0 -35
  450. package/dist/src/commands/patch/rename.js +0 -378
  451. package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
  452. package/dist/src/commands/patch/reorder-projection.js +0 -49
  453. package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
  454. package/dist/src/commands/patch/reorder-shift.js +0 -307
  455. package/dist/src/commands/patch/reorder.d.ts +0 -34
  456. package/dist/src/commands/patch/reorder.js +0 -375
  457. package/dist/src/commands/patch/reserve.d.ts +0 -33
  458. package/dist/src/commands/patch/reserve.js +0 -152
  459. package/dist/src/commands/patch/retire.d.ts +0 -34
  460. package/dist/src/commands/patch/retire.js +0 -133
  461. package/dist/src/commands/patch/split-plan.d.ts +0 -125
  462. package/dist/src/commands/patch/split-plan.js +0 -313
  463. package/dist/src/commands/patch/split-staged.d.ts +0 -108
  464. package/dist/src/commands/patch/split-staged.js +0 -202
  465. package/dist/src/commands/patch/split.d.ts +0 -43
  466. package/dist/src/commands/patch/split.js +0 -367
  467. package/dist/src/commands/patch/stage.d.ts +0 -34
  468. package/dist/src/commands/patch/stage.js +0 -153
  469. package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
  470. package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
  471. package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
  472. package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
  473. package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
  474. package/dist/src/commands/patch/staged-dependency-from.js +0 -114
  475. package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
  476. package/dist/src/commands/patch/staged-dependency-remove.js +0 -114
  477. package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -27
  478. package/dist/src/commands/patch/staged-dependency-validate.js +0 -78
  479. package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
  480. package/dist/src/commands/patch/staged-dependency.js +0 -251
  481. package/dist/src/commands/patch/tier.d.ts +0 -34
  482. package/dist/src/commands/patch/tier.js +0 -125
  483. package/dist/src/commands/patch-rename-map.d.ts +0 -30
  484. package/dist/src/commands/patch-rename-map.js +0 -54
  485. package/dist/src/commands/pending-resolution.d.ts +0 -15
  486. package/dist/src/commands/pending-resolution.js +0 -25
  487. package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
  488. package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
  489. package/dist/src/commands/re-export-adjacent.d.ts +0 -111
  490. package/dist/src/commands/re-export-adjacent.js +0 -285
  491. package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
  492. package/dist/src/commands/re-export-bulk-scan.js +0 -233
  493. package/dist/src/commands/re-export-drift.d.ts +0 -110
  494. package/dist/src/commands/re-export-drift.js +0 -358
  495. package/dist/src/commands/re-export-each.d.ts +0 -46
  496. package/dist/src/commands/re-export-each.js +0 -110
  497. package/dist/src/commands/re-export-files.d.ts +0 -15
  498. package/dist/src/commands/re-export-files.js +0 -307
  499. package/dist/src/commands/re-export-hunks.d.ts +0 -37
  500. package/dist/src/commands/re-export-hunks.js +0 -264
  501. package/dist/src/commands/re-export-lint.d.ts +0 -137
  502. package/dist/src/commands/re-export-lint.js +0 -303
  503. package/dist/src/commands/re-export-options.d.ts +0 -29
  504. package/dist/src/commands/re-export-options.js +0 -192
  505. package/dist/src/commands/re-export-preflight.d.ts +0 -23
  506. package/dist/src/commands/re-export-preflight.js +0 -159
  507. package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
  508. package/dist/src/commands/re-export-purity-scope.js +0 -137
  509. package/dist/src/commands/re-export-register.d.ts +0 -12
  510. package/dist/src/commands/re-export-register.js +0 -99
  511. package/dist/src/commands/re-export-removed.d.ts +0 -15
  512. package/dist/src/commands/re-export-removed.js +0 -94
  513. package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
  514. package/dist/src/commands/re-export-retired-declarations.js +0 -113
  515. package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
  516. package/dist/src/commands/re-export-scan-owner.js +0 -116
  517. package/dist/src/commands/re-export-scan.d.ts +0 -72
  518. package/dist/src/commands/re-export-scan.js +0 -265
  519. package/dist/src/commands/re-export-single.d.ts +0 -53
  520. package/dist/src/commands/re-export-single.js +0 -426
  521. package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
  522. package/dist/src/commands/re-export-stale-registrations.js +0 -106
  523. package/dist/src/commands/re-export-summary.d.ts +0 -44
  524. package/dist/src/commands/re-export-summary.js +0 -59
  525. package/dist/src/commands/re-export.d.ts +0 -8
  526. package/dist/src/commands/rebase/abort.d.ts +0 -7
  527. package/dist/src/commands/rebase/abort.js +0 -67
  528. package/dist/src/commands/rebase/confirm.d.ts +0 -42
  529. package/dist/src/commands/rebase/confirm.js +0 -36
  530. package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
  531. package/dist/src/commands/rebase/conflict-summary.js +0 -37
  532. package/dist/src/commands/rebase/continue.d.ts +0 -7
  533. package/dist/src/commands/rebase/continue.js +0 -119
  534. package/dist/src/commands/rebase/index.d.ts +0 -22
  535. package/dist/src/commands/rebase/index.js +0 -209
  536. package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
  537. package/dist/src/commands/rebase/patch-loop.js +0 -289
  538. package/dist/src/commands/rebase/summary.d.ts +0 -8
  539. package/dist/src/commands/rebase/summary.js +0 -47
  540. package/dist/src/commands/register.d.ts +0 -13
  541. package/dist/src/commands/reset.d.ts +0 -11
  542. package/dist/src/commands/resolve.d.ts +0 -36
  543. package/dist/src/commands/run.d.ts +0 -10
  544. package/dist/src/commands/setup-support.d.ts +0 -35
  545. package/dist/src/commands/setup-support.js +0 -386
  546. package/dist/src/commands/setup.d.ts +0 -11
  547. package/dist/src/commands/source.d.ts +0 -9
  548. package/dist/src/commands/source.js +0 -120
  549. package/dist/src/commands/status-check.d.ts +0 -87
  550. package/dist/src/commands/status-check.js +0 -161
  551. package/dist/src/commands/status-json.d.ts +0 -45
  552. package/dist/src/commands/status-json.js +0 -97
  553. package/dist/src/commands/status-output.d.ts +0 -23
  554. package/dist/src/commands/status-output.js +0 -231
  555. package/dist/src/commands/status-ownership.d.ts +0 -54
  556. package/dist/src/commands/status-ownership.js +0 -59
  557. package/dist/src/commands/status-scope.d.ts +0 -37
  558. package/dist/src/commands/status-scope.js +0 -54
  559. package/dist/src/commands/status.d.ts +0 -11
  560. package/dist/src/commands/test-appdir.d.ts +0 -6
  561. package/dist/src/commands/test-appdir.js +0 -29
  562. package/dist/src/commands/test-browser-preflight.d.ts +0 -28
  563. package/dist/src/commands/test-browser-preflight.js +0 -197
  564. package/dist/src/commands/test-build-furnace.d.ts +0 -21
  565. package/dist/src/commands/test-build-furnace.js +0 -53
  566. package/dist/src/commands/test-build-phase.d.ts +0 -34
  567. package/dist/src/commands/test-build-phase.js +0 -291
  568. package/dist/src/commands/test-checkjs.d.ts +0 -3
  569. package/dist/src/commands/test-checkjs.js +0 -35
  570. package/dist/src/commands/test-control-restore.d.ts +0 -40
  571. package/dist/src/commands/test-control-restore.js +0 -86
  572. package/dist/src/commands/test-diagnose.d.ts +0 -23
  573. package/dist/src/commands/test-diagnose.js +0 -317
  574. package/dist/src/commands/test-dispatch.d.ts +0 -39
  575. package/dist/src/commands/test-dispatch.js +0 -281
  576. package/dist/src/commands/test-furnace-reach.d.ts +0 -37
  577. package/dist/src/commands/test-furnace-reach.js +0 -132
  578. package/dist/src/commands/test-harness-env.d.ts +0 -23
  579. package/dist/src/commands/test-harness-env.js +0 -81
  580. package/dist/src/commands/test-harness-teardown.d.ts +0 -62
  581. package/dist/src/commands/test-harness-teardown.js +0 -128
  582. package/dist/src/commands/test-modes.d.ts +0 -57
  583. package/dist/src/commands/test-modes.js +0 -158
  584. package/dist/src/commands/test-multi-verdict.d.ts +0 -61
  585. package/dist/src/commands/test-multi-verdict.js +0 -112
  586. package/dist/src/commands/test-orchestrate.d.ts +0 -70
  587. package/dist/src/commands/test-orchestrate.js +0 -277
  588. package/dist/src/commands/test-perf-scope.d.ts +0 -50
  589. package/dist/src/commands/test-perf-scope.js +0 -138
  590. package/dist/src/commands/test-prelock.d.ts +0 -61
  591. package/dist/src/commands/test-prelock.js +0 -301
  592. package/dist/src/commands/test-register.d.ts +0 -4
  593. package/dist/src/commands/test-register.js +0 -181
  594. package/dist/src/commands/test-results.d.ts +0 -71
  595. package/dist/src/commands/test-results.js +0 -79
  596. package/dist/src/commands/test-run.d.ts +0 -89
  597. package/dist/src/commands/test-run.js +0 -251
  598. package/dist/src/commands/test-shards.d.ts +0 -114
  599. package/dist/src/commands/test-shards.js +0 -272
  600. package/dist/src/commands/test-stale-gate.d.ts +0 -56
  601. package/dist/src/commands/test-stale-gate.js +0 -208
  602. package/dist/src/commands/test-verdict.d.ts +0 -102
  603. package/dist/src/commands/test-verdict.js +0 -176
  604. package/dist/src/commands/test.d.ts +0 -22
  605. package/dist/src/commands/token-coverage.d.ts +0 -5
  606. package/dist/src/commands/token-coverage.js +0 -170
  607. package/dist/src/commands/token-lint.d.ts +0 -14
  608. package/dist/src/commands/token-lint.js +0 -151
  609. package/dist/src/commands/token-list.d.ts +0 -26
  610. package/dist/src/commands/token-list.js +0 -153
  611. package/dist/src/commands/token.d.ts +0 -14
  612. package/dist/src/commands/tree.d.ts +0 -19
  613. package/dist/src/commands/tree.js +0 -341
  614. package/dist/src/commands/typecheck-explain.d.ts +0 -13
  615. package/dist/src/commands/typecheck-explain.js +0 -100
  616. package/dist/src/commands/typecheck.d.ts +0 -61
  617. package/dist/src/commands/verify-scope.d.ts +0 -28
  618. package/dist/src/commands/verify-scope.js +0 -67
  619. package/dist/src/commands/verify.d.ts +0 -58
  620. package/dist/src/commands/watch.d.ts +0 -9
  621. package/dist/src/commands/wire.d.ts +0 -13
  622. package/dist/src/core/ast-utils.d.ts +0 -73
  623. package/dist/src/core/ast-utils.js +0 -105
  624. package/dist/src/core/brand-validation.d.ts +0 -7
  625. package/dist/src/core/brand-validation.js +0 -14
  626. package/dist/src/core/branding.d.ts +0 -86
  627. package/dist/src/core/branding.js +0 -371
  628. package/dist/src/core/browser-wire.d.ts +0 -48
  629. package/dist/src/core/browser-wire.js +0 -133
  630. package/dist/src/core/build-audit-platform.d.ts +0 -67
  631. package/dist/src/core/build-audit-platform.js +0 -373
  632. package/dist/src/core/build-audit-registration.d.ts +0 -80
  633. package/dist/src/core/build-audit-registration.js +0 -181
  634. package/dist/src/core/build-audit-resolve.d.ts +0 -78
  635. package/dist/src/core/build-audit-resolve.js +0 -240
  636. package/dist/src/core/build-audit-skip.d.ts +0 -57
  637. package/dist/src/core/build-audit-skip.js +0 -112
  638. package/dist/src/core/build-audit-transforms.d.ts +0 -23
  639. package/dist/src/core/build-audit-transforms.js +0 -92
  640. package/dist/src/core/build-audit.d.ts +0 -93
  641. package/dist/src/core/build-audit.js +0 -633
  642. package/dist/src/core/build-baseline-types.d.ts +0 -225
  643. package/dist/src/core/build-baseline-types.js +0 -10
  644. package/dist/src/core/build-baseline-validate.d.ts +0 -32
  645. package/dist/src/core/build-baseline-validate.js +0 -173
  646. package/dist/src/core/build-baseline.d.ts +0 -103
  647. package/dist/src/core/build-baseline.js +0 -261
  648. package/dist/src/core/build-jar-escalation.d.ts +0 -61
  649. package/dist/src/core/build-jar-escalation.js +0 -125
  650. package/dist/src/core/build-overwrite-guard.d.ts +0 -92
  651. package/dist/src/core/build-overwrite-guard.js +0 -235
  652. package/dist/src/core/build-prepare.d.ts +0 -83
  653. package/dist/src/core/build-prepare.js +0 -414
  654. package/dist/src/core/build-run-record.d.ts +0 -74
  655. package/dist/src/core/build-run-record.js +0 -136
  656. package/dist/src/core/checkjs-support-heads.d.ts +0 -41
  657. package/dist/src/core/checkjs-support-heads.js +0 -104
  658. package/dist/src/core/component-source-guard.d.ts +0 -20
  659. package/dist/src/core/component-source-guard.js +0 -68
  660. package/dist/src/core/config-mutate.d.ts +0 -16
  661. package/dist/src/core/config-mutate.js +0 -76
  662. package/dist/src/core/config-paths.d.ts +0 -16
  663. package/dist/src/core/config-paths.js +0 -106
  664. package/dist/src/core/config-state.d.ts +0 -16
  665. package/dist/src/core/config-state.js +0 -141
  666. package/dist/src/core/config-validate-build-audit.d.ts +0 -8
  667. package/dist/src/core/config-validate-build-audit.js +0 -80
  668. package/dist/src/core/config-validate-check.d.ts +0 -8
  669. package/dist/src/core/config-validate-check.js +0 -219
  670. package/dist/src/core/config-validate-file-size.d.ts +0 -15
  671. package/dist/src/core/config-validate-file-size.js +0 -154
  672. package/dist/src/core/config-validate-history.d.ts +0 -11
  673. package/dist/src/core/config-validate-history.js +0 -38
  674. package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
  675. package/dist/src/core/config-validate-patch-policy.js +0 -284
  676. package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
  677. package/dist/src/core/config-validate-test-toolchains.js +0 -133
  678. package/dist/src/core/config-validate-token-scales.d.ts +0 -9
  679. package/dist/src/core/config-validate-token-scales.js +0 -125
  680. package/dist/src/core/config-validate.d.ts +0 -11
  681. package/dist/src/core/config-validate.js +0 -509
  682. package/dist/src/core/config.d.ts +0 -92
  683. package/dist/src/core/config.js +0 -169
  684. package/dist/src/core/coverage-dispatch.d.ts +0 -24
  685. package/dist/src/core/coverage-dispatch.js +0 -44
  686. package/dist/src/core/coverage-extend.d.ts +0 -89
  687. package/dist/src/core/coverage-extend.js +0 -239
  688. package/dist/src/core/coverage-records.d.ts +0 -107
  689. package/dist/src/core/coverage-records.js +0 -383
  690. package/dist/src/core/destructive.d.ts +0 -144
  691. package/dist/src/core/destructive.js +0 -182
  692. package/dist/src/core/dev-profile.d.ts +0 -28
  693. package/dist/src/core/dev-profile.js +0 -58
  694. package/dist/src/core/diff-hunks.d.ts +0 -73
  695. package/dist/src/core/diff-hunks.js +0 -286
  696. package/dist/src/core/discard-baseline.d.ts +0 -60
  697. package/dist/src/core/discard-baseline.js +0 -247
  698. package/dist/src/core/display-state.d.ts +0 -50
  699. package/dist/src/core/display-state.js +0 -87
  700. package/dist/src/core/engine-changes.d.ts +0 -40
  701. package/dist/src/core/engine-changes.js +0 -95
  702. package/dist/src/core/engine-precondition.d.ts +0 -42
  703. package/dist/src/core/engine-precondition.js +0 -60
  704. package/dist/src/core/engine-session-lock.d.ts +0 -119
  705. package/dist/src/core/engine-session-lock.js +0 -374
  706. package/dist/src/core/engine-write-boundary.d.ts +0 -5
  707. package/dist/src/core/engine-write-boundary.js +0 -41
  708. package/dist/src/core/export-moved-code-shape.d.ts +0 -98
  709. package/dist/src/core/export-moved-code-shape.js +0 -220
  710. package/dist/src/core/file-lock-owner.d.ts +0 -103
  711. package/dist/src/core/file-lock-owner.js +0 -259
  712. package/dist/src/core/file-lock-queue.d.ts +0 -67
  713. package/dist/src/core/file-lock-queue.js +0 -219
  714. package/dist/src/core/file-lock-shared.d.ts +0 -57
  715. package/dist/src/core/file-lock-shared.js +0 -117
  716. package/dist/src/core/file-lock.d.ts +0 -143
  717. package/dist/src/core/file-lock.js +0 -531
  718. package/dist/src/core/firefox-archive.d.ts +0 -45
  719. package/dist/src/core/firefox-archive.js +0 -96
  720. package/dist/src/core/firefox-cache.d.ts +0 -30
  721. package/dist/src/core/firefox-cache.js +0 -248
  722. package/dist/src/core/firefox-download.d.ts +0 -30
  723. package/dist/src/core/firefox-download.js +0 -152
  724. package/dist/src/core/firefox-extract.d.ts +0 -42
  725. package/dist/src/core/firefox-extract.js +0 -248
  726. package/dist/src/core/firefox-ignorefile.d.ts +0 -17
  727. package/dist/src/core/firefox-ignorefile.js +0 -30
  728. package/dist/src/core/firefox.d.ts +0 -66
  729. package/dist/src/core/firefox.js +0 -121
  730. package/dist/src/core/forward-registrations.d.ts +0 -33
  731. package/dist/src/core/forward-registrations.js +0 -16
  732. package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
  733. package/dist/src/core/furnace-apply-dry-run.js +0 -99
  734. package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
  735. package/dist/src/core/furnace-apply-ftl.js +0 -210
  736. package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
  737. package/dist/src/core/furnace-apply-helpers.js +0 -436
  738. package/dist/src/core/furnace-apply-output.d.ts +0 -36
  739. package/dist/src/core/furnace-apply-output.js +0 -111
  740. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -67
  741. package/dist/src/core/furnace-apply-overwrite-warn.js +0 -131
  742. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
  743. package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
  744. package/dist/src/core/furnace-apply.d.ts +0 -49
  745. package/dist/src/core/furnace-apply.js +0 -465
  746. package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
  747. package/dist/src/core/furnace-checksum-utils.js +0 -54
  748. package/dist/src/core/furnace-composed-source.d.ts +0 -76
  749. package/dist/src/core/furnace-composed-source.js +0 -167
  750. package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
  751. package/dist/src/core/furnace-config-array-utils.js +0 -26
  752. package/dist/src/core/furnace-config-custom.d.ts +0 -15
  753. package/dist/src/core/furnace-config-custom.js +0 -73
  754. package/dist/src/core/furnace-config-order.d.ts +0 -8
  755. package/dist/src/core/furnace-config-order.js +0 -90
  756. package/dist/src/core/furnace-config-tokens.d.ts +0 -17
  757. package/dist/src/core/furnace-config-tokens.js +0 -42
  758. package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
  759. package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
  760. package/dist/src/core/furnace-config-validate.d.ts +0 -32
  761. package/dist/src/core/furnace-config-validate.js +0 -167
  762. package/dist/src/core/furnace-config.d.ts +0 -139
  763. package/dist/src/core/furnace-config.js +0 -511
  764. package/dist/src/core/furnace-constants.d.ts +0 -81
  765. package/dist/src/core/furnace-constants.js +0 -125
  766. package/dist/src/core/furnace-css-fragments.d.ts +0 -96
  767. package/dist/src/core/furnace-css-fragments.js +0 -279
  768. package/dist/src/core/furnace-deploy-owner.d.ts +0 -29
  769. package/dist/src/core/furnace-deploy-owner.js +0 -116
  770. package/dist/src/core/furnace-dir-entry.d.ts +0 -20
  771. package/dist/src/core/furnace-dir-entry.js +0 -21
  772. package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
  773. package/dist/src/core/furnace-fragment-includers.js +0 -122
  774. package/dist/src/core/furnace-graph-utils.d.ts +0 -11
  775. package/dist/src/core/furnace-graph-utils.js +0 -93
  776. package/dist/src/core/furnace-jsconfig.d.ts +0 -87
  777. package/dist/src/core/furnace-jsconfig.js +0 -248
  778. package/dist/src/core/furnace-marker.d.ts +0 -15
  779. package/dist/src/core/furnace-marker.js +0 -21
  780. package/dist/src/core/furnace-operation.d.ts +0 -195
  781. package/dist/src/core/furnace-operation.js +0 -444
  782. package/dist/src/core/furnace-precondition.d.ts +0 -61
  783. package/dist/src/core/furnace-precondition.js +0 -67
  784. package/dist/src/core/furnace-refresh.d.ts +0 -28
  785. package/dist/src/core/furnace-refresh.js +0 -125
  786. package/dist/src/core/furnace-registration-ast.d.ts +0 -53
  787. package/dist/src/core/furnace-registration-ast.js +0 -402
  788. package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
  789. package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
  790. package/dist/src/core/furnace-registration-remove.d.ts +0 -56
  791. package/dist/src/core/furnace-registration-remove.js +0 -260
  792. package/dist/src/core/furnace-registration-rename.d.ts +0 -26
  793. package/dist/src/core/furnace-registration-rename.js +0 -77
  794. package/dist/src/core/furnace-registration-validate.d.ts +0 -53
  795. package/dist/src/core/furnace-registration-validate.js +0 -110
  796. package/dist/src/core/furnace-registration.d.ts +0 -112
  797. package/dist/src/core/furnace-registration.js +0 -348
  798. package/dist/src/core/furnace-rollback.d.ts +0 -48
  799. package/dist/src/core/furnace-rollback.js +0 -170
  800. package/dist/src/core/furnace-scanner.d.ts +0 -47
  801. package/dist/src/core/furnace-scanner.js +0 -236
  802. package/dist/src/core/furnace-stale-export.d.ts +0 -60
  803. package/dist/src/core/furnace-stale-export.js +0 -125
  804. package/dist/src/core/furnace-staleness.d.ts +0 -24
  805. package/dist/src/core/furnace-staleness.js +0 -67
  806. package/dist/src/core/furnace-state-persist.d.ts +0 -68
  807. package/dist/src/core/furnace-state-persist.js +0 -116
  808. package/dist/src/core/furnace-step-errors.d.ts +0 -23
  809. package/dist/src/core/furnace-step-errors.js +0 -25
  810. package/dist/src/core/furnace-stories.d.ts +0 -37
  811. package/dist/src/core/furnace-stories.js +0 -186
  812. package/dist/src/core/furnace-tag-map.d.ts +0 -47
  813. package/dist/src/core/furnace-tag-map.js +0 -182
  814. package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
  815. package/dist/src/core/furnace-validate-accessibility.js +0 -417
  816. package/dist/src/core/furnace-validate-checks.d.ts +0 -4
  817. package/dist/src/core/furnace-validate-checks.js +0 -6
  818. package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
  819. package/dist/src/core/furnace-validate-compatibility.js +0 -295
  820. package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
  821. package/dist/src/core/furnace-validate-exceptions.js +0 -98
  822. package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
  823. package/dist/src/core/furnace-validate-helpers.js +0 -4
  824. package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
  825. package/dist/src/core/furnace-validate-icon-button.js +0 -78
  826. package/dist/src/core/furnace-validate-registration.d.ts +0 -67
  827. package/dist/src/core/furnace-validate-registration.js +0 -487
  828. package/dist/src/core/furnace-validate-structure.d.ts +0 -22
  829. package/dist/src/core/furnace-validate-structure.js +0 -122
  830. package/dist/src/core/furnace-validate.d.ts +0 -41
  831. package/dist/src/core/furnace-validate.js +0 -331
  832. package/dist/src/core/furnace-version-drift.d.ts +0 -57
  833. package/dist/src/core/furnace-version-drift.js +0 -102
  834. package/dist/src/core/gecko-dom-types.d.ts +0 -2
  835. package/dist/src/core/gecko-dom-types.js +0 -17
  836. package/dist/src/core/git-base.d.ts +0 -101
  837. package/dist/src/core/git-base.js +0 -162
  838. package/dist/src/core/git-diff-new-file.d.ts +0 -40
  839. package/dist/src/core/git-diff-new-file.js +0 -118
  840. package/dist/src/core/git-diff.d.ts +0 -82
  841. package/dist/src/core/git-diff.js +0 -539
  842. package/dist/src/core/git-file-ops.d.ts +0 -108
  843. package/dist/src/core/git-file-ops.js +0 -280
  844. package/dist/src/core/git-readonly-index.d.ts +0 -91
  845. package/dist/src/core/git-readonly-index.js +0 -177
  846. package/dist/src/core/git-status.d.ts +0 -84
  847. package/dist/src/core/git-status.js +0 -208
  848. package/dist/src/core/git.d.ts +0 -114
  849. package/dist/src/core/git.js +0 -540
  850. package/dist/src/core/harness-helper-pids.d.ts +0 -98
  851. package/dist/src/core/harness-helper-pids.js +0 -240
  852. package/dist/src/core/harness-orphans.d.ts +0 -118
  853. package/dist/src/core/harness-orphans.js +0 -268
  854. package/dist/src/core/harness-port-fallback.d.ts +0 -60
  855. package/dist/src/core/harness-port-fallback.js +0 -96
  856. package/dist/src/core/harness-port-reservation.d.ts +0 -60
  857. package/dist/src/core/harness-port-reservation.js +0 -122
  858. package/dist/src/core/history-log-file.d.ts +0 -61
  859. package/dist/src/core/history-log-file.js +0 -164
  860. package/dist/src/core/history-log.d.ts +0 -20
  861. package/dist/src/core/history-log.js +0 -30
  862. package/dist/src/core/json-preserving-edit.d.ts +0 -22
  863. package/dist/src/core/json-preserving-edit.js +0 -199
  864. package/dist/src/core/launchable-build.d.ts +0 -39
  865. package/dist/src/core/launchable-build.js +0 -85
  866. package/dist/src/core/license-headers.d.ts +0 -103
  867. package/dist/src/core/license-headers.js +0 -328
  868. package/dist/src/core/line-prefixer.d.ts +0 -18
  869. package/dist/src/core/line-prefixer.js +0 -34
  870. package/dist/src/core/lit-template-regions.d.ts +0 -4
  871. package/dist/src/core/lit-template-regions.js +0 -50
  872. package/dist/src/core/mach-build-artifacts.d.ts +0 -176
  873. package/dist/src/core/mach-build-artifacts.js +0 -436
  874. package/dist/src/core/mach-error-hints.d.ts +0 -24
  875. package/dist/src/core/mach-error-hints.js +0 -135
  876. package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
  877. package/dist/src/core/mach-known-noise-filter.js +0 -257
  878. package/dist/src/core/mach-mozconfig.d.ts +0 -57
  879. package/dist/src/core/mach-mozconfig.js +0 -166
  880. package/dist/src/core/mach-python.d.ts +0 -19
  881. package/dist/src/core/mach-python.js +0 -131
  882. package/dist/src/core/mach-resource-shim.d.ts +0 -107
  883. package/dist/src/core/mach-resource-shim.js +0 -640
  884. package/dist/src/core/mach.d.ts +0 -284
  885. package/dist/src/core/mach.js +0 -445
  886. package/dist/src/core/marionette-port.d.ts +0 -153
  887. package/dist/src/core/marionette-port.js +0 -474
  888. package/dist/src/core/marionette-preflight.d.ts +0 -58
  889. package/dist/src/core/marionette-preflight.js +0 -332
  890. package/dist/src/core/markdown-table.d.ts +0 -104
  891. package/dist/src/core/markdown-table.js +0 -265
  892. package/dist/src/core/mochitest-server-port.d.ts +0 -81
  893. package/dist/src/core/mochitest-server-port.js +0 -175
  894. package/dist/src/core/module-resolution-preflight.d.ts +0 -65
  895. package/dist/src/core/module-resolution-preflight.js +0 -171
  896. package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
  897. package/dist/src/core/moz-manifest-helpers.js +0 -163
  898. package/dist/src/core/moz-manifest-register.d.ts +0 -19
  899. package/dist/src/core/moz-manifest-register.js +0 -51
  900. package/dist/src/core/moz-manifest-rules.d.ts +0 -58
  901. package/dist/src/core/moz-manifest-rules.js +0 -264
  902. package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
  903. package/dist/src/core/moz-manifest-tokenizers.js +0 -108
  904. package/dist/src/core/negative-control-compiled.d.ts +0 -46
  905. package/dist/src/core/negative-control-compiled.js +0 -109
  906. package/dist/src/core/negative-control-diff.d.ts +0 -51
  907. package/dist/src/core/negative-control-diff.js +0 -167
  908. package/dist/src/core/negative-control.d.ts +0 -150
  909. package/dist/src/core/negative-control.js +0 -399
  910. package/dist/src/core/objdir-install-manifests.d.ts +0 -73
  911. package/dist/src/core/objdir-install-manifests.js +0 -226
  912. package/dist/src/core/objdir-maintenance.d.ts +0 -10
  913. package/dist/src/core/objdir-maintenance.js +0 -167
  914. package/dist/src/core/ownership-table.d.ts +0 -53
  915. package/dist/src/core/ownership-table.js +0 -159
  916. package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
  917. package/dist/src/core/parent-exit-watchdog.js +0 -69
  918. package/dist/src/core/park-store.d.ts +0 -63
  919. package/dist/src/core/park-store.js +0 -216
  920. package/dist/src/core/parser-fallback.d.ts +0 -50
  921. package/dist/src/core/parser-fallback.js +0 -61
  922. package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
  923. package/dist/src/core/patch-apply-fuzz.js +0 -125
  924. package/dist/src/core/patch-apply.d.ts +0 -88
  925. package/dist/src/core/patch-apply.js +0 -435
  926. package/dist/src/core/patch-export-coverage.d.ts +0 -49
  927. package/dist/src/core/patch-export-coverage.js +0 -73
  928. package/dist/src/core/patch-export-metadata.d.ts +0 -46
  929. package/dist/src/core/patch-export-metadata.js +0 -47
  930. package/dist/src/core/patch-export-update.d.ts +0 -55
  931. package/dist/src/core/patch-export-update.js +0 -95
  932. package/dist/src/core/patch-export.d.ts +0 -175
  933. package/dist/src/core/patch-export.js +0 -312
  934. package/dist/src/core/patch-files.d.ts +0 -17
  935. package/dist/src/core/patch-files.js +0 -59
  936. package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
  937. package/dist/src/core/patch-identifier-suggest.js +0 -135
  938. package/dist/src/core/patch-lint-binary.d.ts +0 -45
  939. package/dist/src/core/patch-lint-binary.js +0 -39
  940. package/dist/src/core/patch-lint-cache-checkjs.d.ts +0 -45
  941. package/dist/src/core/patch-lint-cache-checkjs.js +0 -195
  942. package/dist/src/core/patch-lint-cache.d.ts +0 -79
  943. package/dist/src/core/patch-lint-cache.js +0 -247
  944. package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -57
  945. package/dist/src/core/patch-lint-checkjs-any-import.js +0 -91
  946. package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
  947. package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
  948. package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
  949. package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
  950. package/dist/src/core/patch-lint-checkjs-resolve.d.ts +0 -31
  951. package/dist/src/core/patch-lint-checkjs-resolve.js +0 -86
  952. package/dist/src/core/patch-lint-checkjs.d.ts +0 -182
  953. package/dist/src/core/patch-lint-checkjs.js +0 -563
  954. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
  955. package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
  956. package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
  957. package/dist/src/core/patch-lint-code-lines.js +0 -105
  958. package/dist/src/core/patch-lint-creators.d.ts +0 -26
  959. package/dist/src/core/patch-lint-creators.js +0 -45
  960. package/dist/src/core/patch-lint-cross.d.ts +0 -232
  961. package/dist/src/core/patch-lint-cross.js +0 -590
  962. package/dist/src/core/patch-lint-css.d.ts +0 -27
  963. package/dist/src/core/patch-lint-css.js +0 -228
  964. package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
  965. package/dist/src/core/patch-lint-diff-tag.js +0 -105
  966. package/dist/src/core/patch-lint-diff.d.ts +0 -42
  967. package/dist/src/core/patch-lint-diff.js +0 -100
  968. package/dist/src/core/patch-lint-file-size.d.ts +0 -57
  969. package/dist/src/core/patch-lint-file-size.js +0 -62
  970. package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
  971. package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
  972. package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
  973. package/dist/src/core/patch-lint-forward-registration.js +0 -266
  974. package/dist/src/core/patch-lint-ignore.d.ts +0 -196
  975. package/dist/src/core/patch-lint-ignore.js +0 -429
  976. package/dist/src/core/patch-lint-imports.d.ts +0 -9
  977. package/dist/src/core/patch-lint-imports.js +0 -90
  978. package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
  979. package/dist/src/core/patch-lint-jsdoc.js +0 -471
  980. package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
  981. package/dist/src/core/patch-lint-module-registration.js +0 -97
  982. package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
  983. package/dist/src/core/patch-lint-mozbuild.js +0 -192
  984. package/dist/src/core/patch-lint-observer.d.ts +0 -37
  985. package/dist/src/core/patch-lint-observer.js +0 -167
  986. package/dist/src/core/patch-lint-ownership.d.ts +0 -74
  987. package/dist/src/core/patch-lint-ownership.js +0 -125
  988. package/dist/src/core/patch-lint-prettier.d.ts +0 -34
  989. package/dist/src/core/patch-lint-prettier.js +0 -124
  990. package/dist/src/core/patch-lint-projection.d.ts +0 -25
  991. package/dist/src/core/patch-lint-projection.js +0 -43
  992. package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
  993. package/dist/src/core/patch-lint-queue-types.js +0 -12
  994. package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
  995. package/dist/src/core/patch-lint-size-thresholds.js +0 -110
  996. package/dist/src/core/patch-lint-size.d.ts +0 -117
  997. package/dist/src/core/patch-lint-size.js +0 -331
  998. package/dist/src/core/patch-lint-staged-registration.d.ts +0 -98
  999. package/dist/src/core/patch-lint-staged-registration.js +0 -128
  1000. package/dist/src/core/patch-lint-token-scale.d.ts +0 -65
  1001. package/dist/src/core/patch-lint-token-scale.js +0 -304
  1002. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
  1003. package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
  1004. package/dist/src/core/patch-lint.d.ts +0 -206
  1005. package/dist/src/core/patch-lint.js +0 -533
  1006. package/dist/src/core/patch-lock.d.ts +0 -40
  1007. package/dist/src/core/patch-lock.js +0 -129
  1008. package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
  1009. package/dist/src/core/patch-manifest-consistency.js +0 -256
  1010. package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
  1011. package/dist/src/core/patch-manifest-files-affected.js +0 -77
  1012. package/dist/src/core/patch-manifest-io.d.ts +0 -199
  1013. package/dist/src/core/patch-manifest-io.js +0 -556
  1014. package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
  1015. package/dist/src/core/patch-manifest-key-order.js +0 -60
  1016. package/dist/src/core/patch-manifest-query.d.ts +0 -55
  1017. package/dist/src/core/patch-manifest-query.js +0 -139
  1018. package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
  1019. package/dist/src/core/patch-manifest-resolve.js +0 -35
  1020. package/dist/src/core/patch-manifest-stage.d.ts +0 -46
  1021. package/dist/src/core/patch-manifest-stage.js +0 -96
  1022. package/dist/src/core/patch-manifest-validate.d.ts +0 -20
  1023. package/dist/src/core/patch-manifest-validate.js +0 -240
  1024. package/dist/src/core/patch-manifest.d.ts +0 -12
  1025. package/dist/src/core/patch-manifest.js +0 -13
  1026. package/dist/src/core/patch-order-legal.d.ts +0 -26
  1027. package/dist/src/core/patch-order-legal.js +0 -88
  1028. package/dist/src/core/patch-parse.d.ts +0 -176
  1029. package/dist/src/core/patch-parse.js +0 -416
  1030. package/dist/src/core/patch-policy-content.d.ts +0 -40
  1031. package/dist/src/core/patch-policy-content.js +0 -219
  1032. package/dist/src/core/patch-policy.d.ts +0 -80
  1033. package/dist/src/core/patch-policy.js +0 -394
  1034. package/dist/src/core/patch-registration-refs.d.ts +0 -41
  1035. package/dist/src/core/patch-registration-refs.js +0 -107
  1036. package/dist/src/core/patch-retired.d.ts +0 -57
  1037. package/dist/src/core/patch-retired.js +0 -92
  1038. package/dist/src/core/patch-source-metadata.d.ts +0 -6
  1039. package/dist/src/core/patch-source-metadata.js +0 -12
  1040. package/dist/src/core/patch-subset.d.ts +0 -18
  1041. package/dist/src/core/patch-subset.js +0 -67
  1042. package/dist/src/core/patch-transform.d.ts +0 -61
  1043. package/dist/src/core/patch-transform.js +0 -198
  1044. package/dist/src/core/preflight-wait.d.ts +0 -22
  1045. package/dist/src/core/preflight-wait.js +0 -62
  1046. package/dist/src/core/process-cpu-time.d.ts +0 -12
  1047. package/dist/src/core/process-cpu-time.js +0 -52
  1048. package/dist/src/core/process-owner.d.ts +0 -9
  1049. package/dist/src/core/process-owner.js +0 -43
  1050. package/dist/src/core/rebase-dry-run.d.ts +0 -48
  1051. package/dist/src/core/rebase-dry-run.js +0 -105
  1052. package/dist/src/core/rebase-from-version.d.ts +0 -46
  1053. package/dist/src/core/rebase-from-version.js +0 -71
  1054. package/dist/src/core/rebase-session.d.ts +0 -100
  1055. package/dist/src/core/rebase-session.js +0 -174
  1056. package/dist/src/core/register-browser-content.d.ts +0 -11
  1057. package/dist/src/core/register-browser-content.js +0 -52
  1058. package/dist/src/core/register-browser-test.d.ts +0 -18
  1059. package/dist/src/core/register-browser-test.js +0 -66
  1060. package/dist/src/core/register-module.d.ts +0 -11
  1061. package/dist/src/core/register-module.js +0 -56
  1062. package/dist/src/core/register-result.d.ts +0 -30
  1063. package/dist/src/core/register-result.js +0 -8
  1064. package/dist/src/core/register-scaffold.d.ts +0 -55
  1065. package/dist/src/core/register-scaffold.js +0 -146
  1066. package/dist/src/core/register-shared-css.d.ts +0 -36
  1067. package/dist/src/core/register-shared-css.js +0 -112
  1068. package/dist/src/core/register-xpcshell-test.d.ts +0 -50
  1069. package/dist/src/core/register-xpcshell-test.js +0 -143
  1070. package/dist/src/core/run-log-redact.d.ts +0 -38
  1071. package/dist/src/core/run-log-redact.js +0 -69
  1072. package/dist/src/core/run-log.d.ts +0 -97
  1073. package/dist/src/core/run-log.js +0 -334
  1074. package/dist/src/core/run-profile.d.ts +0 -57
  1075. package/dist/src/core/run-profile.js +0 -137
  1076. package/dist/src/core/shared-ftl.d.ts +0 -28
  1077. package/dist/src/core/shared-ftl.js +0 -49
  1078. package/dist/src/core/signal-critical.d.ts +0 -38
  1079. package/dist/src/core/signal-critical.js +0 -62
  1080. package/dist/src/core/smoke-patterns.d.ts +0 -81
  1081. package/dist/src/core/smoke-patterns.js +0 -176
  1082. package/dist/src/core/state-file.d.ts +0 -60
  1083. package/dist/src/core/state-file.js +0 -71
  1084. package/dist/src/core/status-binary.d.ts +0 -62
  1085. package/dist/src/core/status-binary.js +0 -133
  1086. package/dist/src/core/status-classify.d.ts +0 -96
  1087. package/dist/src/core/status-classify.js +0 -244
  1088. package/dist/src/core/test-changed-prefs.d.ts +0 -30
  1089. package/dist/src/core/test-changed-prefs.js +0 -93
  1090. package/dist/src/core/test-harness-crash.d.ts +0 -251
  1091. package/dist/src/core/test-harness-crash.js +0 -780
  1092. package/dist/src/core/test-harness-infra.d.ts +0 -32
  1093. package/dist/src/core/test-harness-infra.js +0 -69
  1094. package/dist/src/core/test-harness-output.d.ts +0 -45
  1095. package/dist/src/core/test-harness-output.js +0 -119
  1096. package/dist/src/core/test-harness-signature.d.ts +0 -57
  1097. package/dist/src/core/test-harness-signature.js +0 -35
  1098. package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
  1099. package/dist/src/core/test-harness-verdict-notes.js +0 -48
  1100. package/dist/src/core/test-host-state.d.ts +0 -14
  1101. package/dist/src/core/test-host-state.js +0 -80
  1102. package/dist/src/core/test-path-scope.d.ts +0 -59
  1103. package/dist/src/core/test-path-scope.js +0 -147
  1104. package/dist/src/core/test-profile-files.d.ts +0 -17
  1105. package/dist/src/core/test-profile-files.js +0 -75
  1106. package/dist/src/core/test-raw-log.d.ts +0 -66
  1107. package/dist/src/core/test-raw-log.js +0 -122
  1108. package/dist/src/core/test-run-completeness.d.ts +0 -97
  1109. package/dist/src/core/test-run-completeness.js +0 -191
  1110. package/dist/src/core/test-stale-check.d.ts +0 -213
  1111. package/dist/src/core/test-stale-check.js +0 -396
  1112. package/dist/src/core/test-stale-exempt.d.ts +0 -40
  1113. package/dist/src/core/test-stale-exempt.js +0 -70
  1114. package/dist/src/core/test-stale-symlink.d.ts +0 -12
  1115. package/dist/src/core/test-stale-symlink.js +0 -39
  1116. package/dist/src/core/test-stall-triage.d.ts +0 -51
  1117. package/dist/src/core/test-stall-triage.js +0 -142
  1118. package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
  1119. package/dist/src/core/test-xpcshell-retry.js +0 -31
  1120. package/dist/src/core/token-category.d.ts +0 -54
  1121. package/dist/src/core/token-category.js +0 -299
  1122. package/dist/src/core/token-coverage.d.ts +0 -12
  1123. package/dist/src/core/token-coverage.js +0 -96
  1124. package/dist/src/core/token-dark-mode.d.ts +0 -64
  1125. package/dist/src/core/token-dark-mode.js +0 -186
  1126. package/dist/src/core/token-docs.d.ts +0 -34
  1127. package/dist/src/core/token-docs.js +0 -102
  1128. package/dist/src/core/token-inventory.d.ts +0 -56
  1129. package/dist/src/core/token-inventory.js +0 -114
  1130. package/dist/src/core/token-lint.d.ts +0 -53
  1131. package/dist/src/core/token-lint.js +0 -131
  1132. package/dist/src/core/token-manager.d.ts +0 -87
  1133. package/dist/src/core/token-manager.js +0 -407
  1134. package/dist/src/core/token-scaffold.d.ts +0 -36
  1135. package/dist/src/core/token-scaffold.js +0 -73
  1136. package/dist/src/core/token-sibling-sheets.d.ts +0 -46
  1137. package/dist/src/core/token-sibling-sheets.js +0 -119
  1138. package/dist/src/core/token-variant.d.ts +0 -90
  1139. package/dist/src/core/token-variant.js +0 -327
  1140. package/dist/src/core/toolchain-preflight.d.ts +0 -90
  1141. package/dist/src/core/toolchain-preflight.js +0 -251
  1142. package/dist/src/core/tree-cow.d.ts +0 -16
  1143. package/dist/src/core/tree-cow.js +0 -71
  1144. package/dist/src/core/tree-guard.d.ts +0 -35
  1145. package/dist/src/core/tree-guard.js +0 -194
  1146. package/dist/src/core/tree-store.d.ts +0 -143
  1147. package/dist/src/core/tree-store.js +0 -478
  1148. package/dist/src/core/typecheck-explain.d.ts +0 -93
  1149. package/dist/src/core/typecheck-explain.js +0 -213
  1150. package/dist/src/core/typecheck-shim.d.ts +0 -90
  1151. package/dist/src/core/typecheck-shim.js +0 -508
  1152. package/dist/src/core/typecheck.d.ts +0 -97
  1153. package/dist/src/core/typecheck.js +0 -457
  1154. package/dist/src/core/wire-destroy.d.ts +0 -25
  1155. package/dist/src/core/wire-destroy.js +0 -126
  1156. package/dist/src/core/wire-dom-fragment.d.ts +0 -44
  1157. package/dist/src/core/wire-dom-fragment.js +0 -139
  1158. package/dist/src/core/wire-init.d.ts +0 -28
  1159. package/dist/src/core/wire-init.js +0 -219
  1160. package/dist/src/core/wire-subscript.d.ts +0 -23
  1161. package/dist/src/core/wire-subscript.js +0 -145
  1162. package/dist/src/core/wire-utils.d.ts +0 -149
  1163. package/dist/src/core/wire-utils.js +0 -338
  1164. package/dist/src/core/xpcshell-appdir.d.ts +0 -157
  1165. package/dist/src/core/xpcshell-appdir.js +0 -299
  1166. package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
  1167. package/dist/src/core/xpcshell-profile-dir.js +0 -45
  1168. package/dist/src/errors/base.d.ts +0 -217
  1169. package/dist/src/errors/base.js +0 -279
  1170. package/dist/src/errors/build.d.ts +0 -92
  1171. package/dist/src/errors/build.js +0 -166
  1172. package/dist/src/errors/codes.d.ts +0 -74
  1173. package/dist/src/errors/codes.js +0 -74
  1174. package/dist/src/errors/config.d.ts +0 -17
  1175. package/dist/src/errors/config.js +0 -39
  1176. package/dist/src/errors/download.d.ts +0 -66
  1177. package/dist/src/errors/download.js +0 -160
  1178. package/dist/src/errors/furnace.d.ts +0 -20
  1179. package/dist/src/errors/furnace.js +0 -28
  1180. package/dist/src/errors/git.d.ts +0 -65
  1181. package/dist/src/errors/git.js +0 -140
  1182. package/dist/src/errors/patch.d.ts +0 -27
  1183. package/dist/src/errors/patch.js +0 -52
  1184. package/dist/src/errors/rebase.d.ts +0 -42
  1185. package/dist/src/errors/rebase.js +0 -71
  1186. package/dist/src/errors/run.d.ts +0 -16
  1187. package/dist/src/errors/run.js +0 -22
  1188. package/dist/src/index.d.ts +0 -42
  1189. package/dist/src/index.js +0 -32
  1190. package/dist/src/types/cli.d.ts +0 -14
  1191. package/dist/src/types/commands/index.d.ts +0 -6
  1192. package/dist/src/types/commands/index.js +0 -5
  1193. package/dist/src/types/commands/options.d.ts +0 -1372
  1194. package/dist/src/types/commands/options.js +0 -5
  1195. package/dist/src/types/commands/patches.d.ts +0 -352
  1196. package/dist/src/types/commands/patches.js +0 -5
  1197. package/dist/src/types/commands/project.d.ts +0 -51
  1198. package/dist/src/types/commands/project.js +0 -5
  1199. package/dist/src/types/config.d.ts +0 -732
  1200. package/dist/src/types/config.js +0 -15
  1201. package/dist/src/types/furnace.d.ts +0 -422
  1202. package/dist/src/types/furnace.js +0 -26
  1203. package/dist/src/types/index.d.ts +0 -5
  1204. package/dist/src/types/index.js +0 -5
  1205. package/dist/src/types/json.d.ts +0 -22
  1206. package/dist/src/types/json.js +0 -11
  1207. package/dist/src/types/typecheck.d.ts +0 -51
  1208. package/dist/src/types/typecheck.js +0 -14
  1209. package/dist/src/utils/assert.d.ts +0 -34
  1210. package/dist/src/utils/assert.js +0 -61
  1211. package/dist/src/utils/build-info.d.ts +0 -30
  1212. package/dist/src/utils/build-info.js +0 -99
  1213. package/dist/src/utils/child-env.d.ts +0 -28
  1214. package/dist/src/utils/child-env.js +0 -27
  1215. package/dist/src/utils/concurrency.d.ts +0 -8
  1216. package/dist/src/utils/concurrency.js +0 -32
  1217. package/dist/src/utils/elapsed.d.ts +0 -2
  1218. package/dist/src/utils/elapsed.js +0 -23
  1219. package/dist/src/utils/errors.d.ts +0 -39
  1220. package/dist/src/utils/errors.js +0 -67
  1221. package/dist/src/utils/fs.d.ts +0 -113
  1222. package/dist/src/utils/fs.js +0 -337
  1223. package/dist/src/utils/hash.d.ts +0 -12
  1224. package/dist/src/utils/hash.js +0 -16
  1225. package/dist/src/utils/line-dispatch.d.ts +0 -15
  1226. package/dist/src/utils/line-dispatch.js +0 -48
  1227. package/dist/src/utils/logger.d.ts +0 -109
  1228. package/dist/src/utils/logger.js +0 -270
  1229. package/dist/src/utils/machine-output.d.ts +0 -12
  1230. package/dist/src/utils/machine-output.js +0 -33
  1231. package/dist/src/utils/options.d.ts +0 -155
  1232. package/dist/src/utils/options.js +0 -312
  1233. package/dist/src/utils/package-root.d.ts +0 -21
  1234. package/dist/src/utils/package-root.js +0 -70
  1235. package/dist/src/utils/parse.d.ts +0 -117
  1236. package/dist/src/utils/parse.js +0 -214
  1237. package/dist/src/utils/path-glob.d.ts +0 -15
  1238. package/dist/src/utils/path-glob.js +0 -47
  1239. package/dist/src/utils/paths.d.ts +0 -31
  1240. package/dist/src/utils/paths.js +0 -80
  1241. package/dist/src/utils/platform.d.ts +0 -9
  1242. package/dist/src/utils/platform.js +0 -14
  1243. package/dist/src/utils/process-group.d.ts +0 -42
  1244. package/dist/src/utils/process-group.js +0 -190
  1245. package/dist/src/utils/process-input.d.ts +0 -27
  1246. package/dist/src/utils/process-input.js +0 -46
  1247. package/dist/src/utils/process.d.ts +0 -293
  1248. package/dist/src/utils/process.js +0 -593
  1249. package/dist/src/utils/ps-duration.d.ts +0 -31
  1250. package/dist/src/utils/ps-duration.js +0 -70
  1251. package/dist/src/utils/regex.d.ts +0 -39
  1252. package/dist/src/utils/regex.js +0 -109
  1253. package/dist/src/utils/sleep.d.ts +0 -25
  1254. package/dist/src/utils/sleep.js +0 -30
  1255. package/dist/src/utils/stdio-drain.d.ts +0 -28
  1256. package/dist/src/utils/stdio-drain.js +0 -54
  1257. package/dist/src/utils/validation.d.ts +0 -182
  1258. package/dist/src/utils/validation.js +0 -394
  1259. package/docs/lifecycle-invariants.md +0 -523
  1260. package/docs/run-logs.md +0 -122
  1261. package/docs/verification-trees.md +0 -49
  1262. /package/dist/src/{types/cli.js → cli/context.js} +0 -0
@@ -2,792 +2,228 @@
2
2
 
3
3
  # Patch workflow
4
4
 
5
- The day-to-day loop: change code inside `engine/`, export it, and keep the
6
- queue applying cleanly. `fireforge --help` is the authority on flags. This
7
- file covers the behavior a flag list cannot state.
5
+ In patch mode (`"mode": "patches"` in `fireforge.json`) you edit Firefox in place under `engine/`, and FireForge stores your changes as a queue of patches in `patches/`. This page covers the queue in depth. [getting-started.md](getting-started.md) shows the daily loop.
8
6
 
9
- ## The loop
7
+ ## The queue
10
8
 
11
- ```bash
12
- npx fireforge status
13
- npx fireforge export browser/base/content/browser.js --name custom-toolbar --category ui
14
- npx fireforge re-export custom-toolbar
15
- npx fireforge lint --per-patch
16
- npx fireforge verify
17
- ```
9
+ `patches/` holds one `.patch` file per patch and a manifest, `patches.json`:
18
10
 
19
- On an engine several sessions share, a writing command meets a peer's build
20
- or test on the engine lock, and without a budget it gives up after about a
21
- second. Pass `--wait-lock <seconds>` to each writing `export` and `re-export`
22
- (`npx fireforge re-export custom-toolbar --wait-lock 600`), or set
23
- `FIREFORGE_WAIT_LOCK` for the session. See
24
- [Lock waits](configuration.md#lock-waits).
25
-
26
- ## Exporting
11
+ ```
12
+ patches/
13
+ patches.json
14
+ 001-branding-assets.patch
15
+ 010-ui-sidebar.patch
16
+ 012-ui-toolbar.patch
17
+ ```
27
18
 
28
- Patch names are normalized on export and rename, so `window-chrome-tests`,
29
- `ui-window-chrome-tests`, and `235-ui-window-chrome-tests` all resolve to the
30
- same `<order>-ui-window-chrome-tests.patch` shape.
19
+ A patch file is plain `git diff` output: `a/` and `b/` prefixes, three lines of context, full blob ids, binary files as `GIT binary patch` sections, and no rename detection (a rename is a deletion plus an addition). The same change always gives the same bytes.
31
20
 
32
- For large batches of generated assets, `re-export --scan --scan-files
33
- <manifest>` assigns files to their owner patches without scanning whole
34
- directories. The manifest is JSON:
21
+ The manifest is the one record of which patches exist, their order and what is known about each:
35
22
 
36
23
  ```json
37
24
  {
38
- "assignments": [
39
- { "patch": "002-branding-runtime-icons.patch", "files": ["browser/branding/hominis/icon.svg"] }
40
- ]
25
+ "version": 2,
26
+ "firefox": { "product": "firefox-esr", "version": "140.9.0esr" },
27
+ "patches": [
28
+ {
29
+ "order": 1,
30
+ "name": "branding-assets",
31
+ "description": "Logos, icons and brand strings",
32
+ "tier": "branding"
33
+ },
34
+ {
35
+ "order": 10,
36
+ "name": "ui-sidebar",
37
+ "description": "The sidebar panel",
38
+ "lintIgnore": [
39
+ "file-too-large",
40
+ { "rule": "large-patch-lines", "max": 1800, "reason": "Reviewed: one feature" }
41
+ ],
42
+ "stagedDependencies": [
43
+ {
44
+ "file": "browser/base/content/browser-sidebar.js",
45
+ "creates": "browser/modules/Sidebar.sys.mjs"
46
+ }
47
+ ]
48
+ },
49
+ { "order": 12, "name": "ui-toolbar", "description": "Toolbar buttons" }
50
+ ],
51
+ "retired": [{ "order": 11, "name": "ui-old-toolbar", "reason": "Folded into ui-toolbar" }]
41
52
  }
42
53
  ```
43
54
 
44
- The command can be dry-run, refuses ambiguous ownership, and reports each
45
- file-to-patch assignment before refreshing the patch.
55
+ - `name`: lowercase words joined by hyphens. The first word is the patch's category (`ui`, `branding`).
56
+ - `order`: the position in the apply order. Gaps are allowed unless `patchPolicy.allowGaps` is `false`. The file name follows from order and name: `<order padded to three digits>-<name>.patch`.
57
+ - `firefox`: the Firefox release the queue was last verified against. A patch whose stamp differs carries its own `firefox` field.
58
+ - `tier`: `branding` holds the patch to the larger branding size bands of the size rules.
59
+ - `lintIgnore`: waivers for this patch ([quality.md](quality.md#waivers)).
60
+ - `stagedDependencies`: `file`, in this patch, imports or registers `creates`, which a later patch creates. Lint accepts that forward reference because it is declared.
61
+ - `retired`: orders that belonged to deleted patches and stay taken.
46
62
 
47
- Positional patches can be passed beside the manifest; only `--all` is
48
- refused. The run refreshes the patches the manifest names plus the
49
- positionals, once each and in queue order. A positional the manifest does
50
- not name has no files to adopt and refreshes without a scan.
63
+ A command that names a patch takes its order (`10` or `010`), its file name (with or without `.patch`), its name (`ui-sidebar`), or its name without the category (`sidebar`) when that is unique.
51
64
 
52
- `re-export --dry-run` takes no engine-session lock: it writes nothing, so it
53
- does not queue behind a peer's build or test run, and its git plumbing runs on
54
- a private index. Its purity guard covers what the dry run could touch (the
55
- selected patches, their `patches.json` rows, the engine files they own, and
56
- the engine HEAD and index). A peer writing any of those during the preview is
57
- named from the history log or the engine-session lock, and the preview is
58
- simply rerun.
65
+ FireForge reads a manifest with `"version": 1` (rows carrying `filename`, `category` and `filesAffected`) and writes it as version 2 the next time the queue changes.
59
66
 
60
- To adopt files into several patches in one call, name each file's owner
61
- with `--scan-file <patch>:<path>`. A call with more than one target patch
62
- requires the prefix on every `--scan-file`. Selected patches that get no
63
- file refresh scan-less, without a broad directory scan:
67
+ ## Applying the queue: `import`
64
68
 
65
69
  ```sh
66
- fireforge re-export 201 200 --scan --scan-file 201:browser/components/hominis/tiles/scroll.mjs --refuse-foreign-drift --expect browser/base/content/hominis.js --expect browser/base/jar.mn --wait-lock 600
70
+ npx fireforge import
67
71
  ```
68
72
 
69
- ### Foreign drift
70
-
71
- Every `re-export` previews drift. For each file a patch already owns, it
72
- compares the refreshed body with the old one and lists the lines the engine
73
- file gained or lost since the last export (`+2 added / -1 removed`). Both
74
- directions count, so an edit that only deletes lines is drift too.
75
- `--refuse-foreign-drift` turns the preview into a refusal. `--expect <path>`
76
- admits drift in the files you meant to change. Drift in any other owned
77
- file, added or removed, still refuses.
78
-
79
- Under `--refuse-foreign-drift` a run judges every selected patch (scan,
80
- diff and drift check, nothing written) before it writes any. When one patch
81
- is refused for drift, none is written: `re-export 518 626 --refuse-foreign-drift` with
82
- drift only in 626 leaves 518 unwritten too, and the closing summary names
83
- 518 as held back by 626's refusal. Without the flag each patch is written
84
- or refused on its own.
85
-
86
- The belt works beside `--scan`, `--scan-file` and `--scan-files`. It guards
87
- each patch's existing files, and the files a scan adopts count as expected,
88
- so the call that adopts a new file can still refuse a peer's edit in the
89
- patch's other files. It cannot combine with `--files`, which replaces the
90
- file list outright.
91
-
92
- The adoption gate and the plain re-export refuse a forward import of a
93
- module a later patch creates. They also refuse a forward registration
94
- (`patchLint.forwardRegistration`, for example a `jar.mn` line packaging that
95
- module), in the same refusal and with the `patch staged-dependency` command
96
- that declares it, so one declaration pass covers both.
97
-
98
- ### Exporting by hunk
99
-
100
- Re-export captures whole files, so on a shared engine a peer's unexported
101
- line in a shared manifest or chrome document lands in the exporting patch.
102
- Two flags export a file by hunk instead. Each takes one explicit patch and
103
- cannot combine with `--scan`, `--files` or `--all`:
104
-
105
- - `--hunks-from <diff>` exports each file the diff names as the patch's
106
- current body for it plus only the diff's hunks. Files the diff does not
107
- name keep their old section.
108
- - `--exclude-hunks <diff>` exports each named file as the working tree minus
109
- the diff's hunks. The other files export as usual.
110
-
111
- Hunks are placed by their context, so a diff taken before a peer's edit
112
- above it still applies, and a hunk whose context is gone refuses. The
113
- section is diffed by git against HEAD on a throwaway index, and the engine
114
- is not touched. A spine patch can then export one change's lines at a time:
73
+ Every file the queue touches ends up holding what the queue leaves there. Other edits in `engine/` are kept. `import` refuses to overwrite edits in the queue's files that no patch accounts for; `--force` overwrites them after saving a recovery snapshot.
115
74
 
116
- ```sh
117
- git -C engine diff -- browser/base/content/hominis.js > my-change.diff # trim to your hunks
118
- fireforge re-export 200 --hunks-from my-change.diff --wait-lock 600
119
- ```
75
+ `--until <patch>` applies the queue up to and including that patch.
120
76
 
121
- The diff can be `git diff` output or a plain unified diff (`diff -u`, no
122
- `diff --git` lines). When a section's two sides name different paths, the
123
- side that is a file the patch owns names the file, with an `engine/` prefix
124
- accepted.
77
+ When a patch does not apply, the import pauses. The engine holds the state before that patch, plus the hunks that fitted, and `.rej` files beside the files whose hunks did not. Then:
125
78
 
126
- A file the patch creates is untracked in the engine, so `git diff` prints
127
- nothing for it. `fireforge patch body <patch> <file>` prints the file as the
128
- patch leaves it (engine HEAD, or nothing for a file HEAD lacks, with the
129
- patch's section applied), which is the base `--hunks-from` places hunks
130
- against. Diff the working file against it:
79
+ 1. Finish the change by hand in `engine/`, using the `.rej` files.
80
+ 2. Either run `fireforge import --continue`, which rewrites the failed patch from what `engine/` holds and applies the rest, or run `fireforge resolve` to rewrite only that patch and `fireforge import --continue` afterwards.
131
81
 
132
- ```sh
133
- diff -u <(fireforge patch body 200 browser/components/hominis/tiles.mjs) \
134
- engine/browser/components/hominis/tiles.mjs > my-change.diff # trim to your hunks
135
- fireforge re-export 200 --hunks-from my-change.diff --wait-lock 600
136
- ```
82
+ The rewritten patch body is exactly that patch's own work: the change in its files relative to what the patches before it leave there, deletions included. `fireforge status` shows a paused import as `session-paused`.
83
+
84
+ ## Capturing edits: `export`
137
85
 
138
- A section from `/dev/null` (`diff -u /dev/null engine/<file>`) for a file the
139
- patch already creates is refused: its one hunk is the whole file, not the
140
- lines changed since the patch body.
141
-
142
- ### Re-export belts and arguments
143
-
144
- `--refuse-adjacent-unmanaged` refuses a patch when an unmanaged file is
145
- adjacent to it, meaning the re-export would plausibly have to capture it:
146
-
147
- - a changed file in the same directory as a file the patch owns, or
148
- - a changed file named by a registration line the patch adds (a jar.mn,
149
- moz.build or test-manifest line, `*` globs included).
150
-
151
- A file in a sibling or nested directory is not adjacent, so a peer
152
- session's unexported test in `test/hominis-tiles/` does not refuse a
153
- patch that owns `test/hominis/browser.toml`. The refusal names every file
154
- with its anchor (`beside engine/<dir>` or `registered by engine/<carrier>`).
155
- A backup-shaped file (`*-E`, `*.bak`, `*.orig`, `*.rej`, `*~`) is named as
156
- a stray backup to delete, such as the `-E` copy macOS `sed -i -E` leaves,
157
- instead of a file to adopt with `--scan-file`.
158
-
159
- Beside `--scan` and `--scan-file` the belt judges the adjacent files the
160
- scan did not adopt, so one call can adopt a new widget and its test and
161
- still refuse a peer's neighbour. It cannot combine with `--files`.
162
-
163
- Three carve-outs keep the belt armed for everything they do not name. Each
164
- requires `--refuse-adjacent-unmanaged`, and each admitted file is still
165
- listed:
166
-
167
- - `--expect-new <path>` names a file this session created and will adopt
168
- with its next export. The owners of a new module's registration can
169
- re-export first while a peer's neighbour still refuses. The path must be
170
- changed in engine/ and owned by no patch. The run ends by naming the
171
- export still owed, and an unmet path is a warning.
172
- - `--expect-unmanaged <path>` records a reviewed exception that stays
173
- unmanaged. An unmet path is a warning.
174
- - `--adjacent-ignore <path|glob>` is a reviewed ignore list. A `*` stays
175
- within one path segment and `**` is refused. Unmatched entries are only
176
- noted, because the same list is reused across runs.
86
+ `export` turns edits no patch holds into a new patch:
177
87
 
178
88
  ```sh
179
- fireforge re-export 102 200 --refuse-adjacent-unmanaged --refuse-foreign-drift \
180
- --expect browser/modules/hominis/moz.build --expect-new browser/modules/hominis/HominisBangs.sys.mjs \
181
- --wait-lock 600
89
+ npx fireforge export browser/base/content/browser-sidebar.js browser/modules/Sidebar.sys.mjs --name ui-sidebar -d "The sidebar panel"
90
+ npx fireforge export --all --name ui-misc -d "Small fixes"
182
91
  ```
183
92
 
184
- `--expect-from <file>` reads `--expect` paths from a file, one per line,
185
- with blank lines and `#` comments ignored. Under zsh a list held in one
186
- variable reaches FireForge as a single argument, and a file avoids splitting
187
- it by hand.
188
-
189
- Arguments are checked before the run queues for the engine lock: an empty
190
- or unknown patch name, a positional that is an engine file (the refusal
191
- points at `--expect` and `--expect-from`), a path flag whose value starts
192
- with `-` (a flag swallowed by a value-less `--expect-unmanaged`), and an
193
- `--expect`, `--expect-unmanaged`, `--expect-new` or `--scan-file` value that
194
- names no changed file in engine/. The banner reads `DRY RUN` or `WRITING`.
195
- A multi-patch run ends with one line naming the patches it wrote and those
196
- it did not, each with its reason (`failed`, `refused: adjacent unmanaged`,
197
- `refused: foreign drift`, `skipped`).
198
-
199
- ### Deletions
200
-
201
- A deleted upstream file is captured like any other change: a path tracked in
202
- HEAD but absent from disk stays in the diff scope, and the emitted patch
203
- carries a `deleted file mode` section. A captured deletion keeps its
204
- `filesAffected` entry, because the patch is what performs the deletion, and
205
- pruning the entry would leave the body deleting a file the manifest says the
206
- patch has nothing to do with. It also still requires the confirmation,
207
- because the patch will remove those files wherever it is applied.
208
-
209
- An untracked absent path is refused rather than warned about, because a patch
210
- cannot express it either way. The `--files` path also refuses when any
211
- requested path produces no hunk. That is checked against the full requested
212
- list rather than the subset left after filtering, so nothing dropped upstream
213
- can pass as a silent success.
214
-
215
- A file can be retired from a selected patch with repeatable
216
- `--expect-removed <path>`. This works for an absent
217
- file the patch created, and for an upstream file the patch modified or
218
- deleted whose engine copy is back at HEAD:
93
+ - Paths are engine files or directories. `--all` captures every edit no patch holds.
94
+ - `--name` is required. `-d`/`--description` is recorded in the manifest.
95
+ - The patch goes after the last one, or where `--order <n>`, `--before <patch>` or `--after <patch>` puts it. With `patchPolicy.ranges` the order must lie in the category's range.
96
+ - `--tier branding` sets the size tier.
97
+ - A named file that another patch already changes is refused; under a named directory such files are left out. Those edits belong to `re-export`.
98
+
99
+ ## Updating patches: `re-export`
100
+
101
+ `re-export` rewrites existing patches so the queue ends in what `engine/` holds in their files:
219
102
 
220
103
  ```sh
221
- fireforge re-export 202 --refuse-adjacent-unmanaged --refuse-foreign-drift --expect browser/themes/shared/hominis/widgets.css --expect-removed browser/themes/shared/hominis/stop.svg
104
+ npx fireforge re-export ui-sidebar
105
+ npx fireforge re-export --all
106
+ npx fireforge re-export --all --dry-run
222
107
  ```
223
108
 
224
- Each removal must have exactly one selected owner, and one call may retire
225
- paths from several selected patches (`re-export 102 202 --expect-removed a
226
- --expect-removed b`). A path whose owner was left out of the selection is
227
- refused with that owner named. A patch-created file must
228
- be absent from disk and engine HEAD, and have a `new file mode` section in
229
- that owner's patch. An upstream file must be tracked in HEAD, match it on
230
- disk, and have a section in that owner's patch. Without the retirement, a
231
- scan-less re-export keeps the path in `filesAffected`, and with the belt
232
- armed it refuses because the file's lines left the body. Every removal is
233
- validated before writes, in dry-run too. Other paths keep
234
- both refusal checks; retirement grants no unmanaged or foreign-drift
235
- exception. Removing every file would empty the patch and requires `patch
236
- delete` (or `patch retire`, which keeps the order number) instead.
237
- `--expect-removed` cannot combine with `--files` or `--all`. It combines
238
- with `--scan`, so one call can retire a widget's files from one patch while
239
- `--scan-file` adopts a new module into another: the retired path leaves the
240
- owner's file list before its scan, which cannot adopt it back.
241
-
242
- The same run drops every staged declaration, registration or forward
243
- import, in any patch of the queue, whose `creates` path it retired and no
244
- other patch still owns. It prints each one (`would drop` in a dry run) and
245
- records the drop in the history log (`re-export-staged-prune`).
246
-
247
- ### Forward imports and new modules
248
-
249
- A re-export (plain or `--scan`) refused because a file imports a module a
250
- later patch creates names the earliest legal order for exporting those
251
- files as their own patch (free, inside the category range, and not opening
252
- a gap under `allowGaps: false`), and prints the exact `patch
253
- staged-dependency --add` command for each edge, with a `--reason`
254
- placeholder. A refused `--scan` adoption, `patch move-files` or `patch split`
255
- also writes every declaration it proposes into one lint-report-shaped JSON
256
- (`--declarations-out <path>`, by default under `.fireforge/declarations/`)
257
- and names the single `patch staged-dependency <holder> --add --from <file>`
258
- call per holding patch that discharges them all, so moving tests out of a
259
- patch that owns a shared manifest needs no declaration typed per manifest
260
- line.
261
-
262
- For `patch move-files`, `patch split` and a placed `export`:
263
-
264
- - The projection of `patch move-files`, `patch split` and a placed `export`
265
- lints with the queue's whole lint configuration, as the committed `lint
266
- --per-patch` gate does. With `patchLint.forwardRegistration: "extended"`,
267
- a shared test manifest's suite entries (`["browser_*.js"]`) are projected
268
- with the move and written to the `--declarations-out` report, not only its
269
- `support-files` lines. A dry run that reads clean stays clean after the
270
- move.
271
- - A refused `move-files --create` or `split` report names the patch the
272
- rerun creates as the `owner` (its planned `<order>-<category>-<name>.patch`).
273
- - The declarations `move-files` and `split` write, and every entry of their
274
- report, carry a `reason` naming the move, such as
275
- `"201-ui-tests.patch → 236-ui-suites.patch by patch move-files"`. The
276
- `--add --from` call the refusal prints then needs no `--reason`; an
277
- entry's own reason wins over the flag.
278
-
279
- A re-export also drops a staged registration whose `creates` path no patch
280
- in the queue owns any more, for example after a merge deleted the file it
281
- registered. The dry run names the drop, and the write records it in the
282
- history log (`re-export-staged-prune`). A registration whose
283
- `creates` file exists in engine/, or is an `--expect-new` path of the run,
284
- is kept and named ("kept: file exists but no patch owns it yet"): the
285
- manifest owner can re-export after the declaration and before the scan
286
- that adopts the file, in either order.
287
-
288
- An `export --order` (or `--before`/`--after`) refused on a new system
289
- module that no patch registers in moz.build says "register first". When the
290
- module's moz.build line is already in the working tree but the patch that
291
- owns that moz.build has not exported it, the refusal prints three steps:
292
- declare the line as a staged registration on that patch, re-run the export,
293
- then re-export that patch. With the declaration in place and the line in the
294
- working tree, the export is accepted, with a note to re-export the
295
- registering patch next.
296
-
297
- The refusal offers the adopt-then-split sequence (`re-export --scan
298
- --scan-file`, then `patch move-files --create`) only when the new file
299
- shares a block of at least three consecutive substantive lines with an
300
- existing patch, quotes the matched lines, and only when adopting the files
301
- into that patch would itself pass: it names the forward import or the hard
302
- size limit that would refuse the adopt instead. When the only error is the
303
- missing registration, adopt-then-split is not offered at all.
304
-
305
- This is the route for pruning a path from a reserved-range allowlist
306
- (`patchPolicy.reservedRanges[].allowed[].files`). Remove the path from the
307
- allowlist, restore its engine copy, and retire it with `--expect-removed`.
308
- The re-export policy gate checks the `filesAffected` the export will write,
309
- and only for the patch being written, so one patch's stale row cannot fail
310
- the other patches in the same call.
311
-
312
- ### Registering files
313
-
314
- `fireforge register <path>` adds a new file's line to the build manifest
315
- that packages or runs it: a jar.mn, a moz.build list, a test manifest. Most
316
- manifests are kept in sorted order, and the entry is inserted
317
- alphabetically. `--after <entry>` places it after the line containing that
318
- substring instead, where the manifest's rule supports it. Elsewhere the
319
- flag is ignored with a warning, and an `--after` that matches nothing falls
320
- back to sorted order with a warning.
321
-
322
- An xpcshell test (`test_*.js` outside `browser/base/content/test/`) goes
323
- into its directory's `xpcshell.toml` as a `["test_*.js"]` section, placed
324
- as follows:
325
-
326
- - The new section is inserted ahead of the `#` comment lines directly above
327
- the entry it precedes, never between a comment and the entry it describes.
328
- - `--after <entry>` places the new section after the named entry's whole
329
- block, with its keys and before the next entry's comment. An exact
330
- section name matches first, then a substring.
109
+ - A patch whose files hold no edit is left byte for byte.
110
+ - A file deleted in `engine/` is recorded as a deletion. A file the patch created that is absent from `engine/` leaves the patch.
111
+ - `--scan` also adopts edits no patch owns in the directories the selected patches' files are in. Each adopted file goes to the last selected patch with a file in its directory.
112
+ - `--stamp` stamps the rewritten patches with the project's Firefox version.
113
+ - `--dry-run` reports what would change and writes nothing.
114
+
115
+ ### Files several patches change
116
+
117
+ When two or more patches change one file, an edit to that file goes to the last of them that is being re-exported. The others keep their change unchanged, and the patches after the receiving one are adjusted so they still apply. So to put an edit into an earlier patch, re-export only that patch:
331
118
 
332
119
  ```sh
333
- fireforge register browser/components/hominis/test/unit/test_HominisStoreQuota.js \
334
- --after test_HominisStore.js
120
+ npx fireforge re-export ui-sidebar
335
121
  ```
336
122
 
337
- `--create-manifest` scaffolds a missing manifest and wires it into the
338
- nearest moz.build instead of refusing with "Manifest not found".
339
-
340
- ## Queue maintenance
341
-
342
- Under `fireforge patch`:
343
-
344
- - `patch compact` closes ordinal gaps, and is range-aware when
345
- `patchPolicy.ranges` is configured.
346
- - `patch reorder` moves a patch. `patch reorder --shift <n>
347
- --from <order> [--through <order>]` (no patch name) renumbers a run of
348
- patches up by `n` in one transaction, to open room for inserts.
349
- `--through` defaults to the end of the run of consecutive occupied orders
350
- of `--from`'s category. Retired and reserved slots inside the run move
351
- with it (a moved reservation is named, so its holder can be told). A shift
352
- that would land on an order a patch or slot holds past the run is refused.
353
- Under `patchPolicy.allowGaps: false` the opened orders are recorded as
354
- reservations (owner `patch reorder --shift`), so the queue stays valid,
355
- and the `export --order` or `split --order` that takes each one fills it.
356
- The shift checks the patch policy, projects the cross-patch lint
357
- (refusing only on errors the shift adds), and commits under the patch
358
- lock, refusing if the plan changed while it waited for confirmation.
359
- `--map-out <file>` on `reorder` (every mode) and on `split` writes the
360
- committed old-to-new filename map as a JSON object, so references to the
361
- renumbered patches can be rewritten from the file:
362
-
363
- ```sh
364
- fireforge patch reorder --shift 4 --from 104 --through 128 --map-out shift-map.json --yes
365
- ```
366
-
367
- - `patch split <source> --files <paths...> --name <name>` carves files out of
368
- a patch into a new one as a single transaction, including staged-dependency
369
- owner rewrites, and supports `--dry-run`. `patch move-files <from> <to>
370
- --create --order <n>` does the same with the files named by `--file`.
371
- Both keep the staged declarations in step with the move and list every
372
- change: owners (of forward imports and registrations alike) that named
373
- the source for a moved `creates` path are re-pointed at the new patch, a
374
- declaration whose declaring file moved goes with it, and a declaration the
375
- move makes unused is dropped. The patch policy, including the gap rule, is
376
- checked before any lint runs.
377
- - `patch move-files` covers a whole split in one call:
378
- - `--scan-file <path>` (repeatable) adopts a new engine file that no patch
379
- owns into the destination (`<to>`, or the patch `--create` makes) in
380
- the same transaction. Both bodies are linted as the transaction leaves
381
- them, so the source is never judged on a body grown by an adoption the
382
- move would shrink again. An owned or missing path is refused.
383
- - `--retire-empty` lets a move into an existing patch take every file of
384
- the source: the declarations whose `owner` is the source re-point to the
385
- destination, the source's own declarations go with its files (one that
386
- becomes self-owned is dropped), and the source is retired as by `patch
387
- retire`, its order kept as a retired slot. Without the flag, a move that
388
- would empty the source is refused and names the flag.
389
- - A per-patch size refusal on either side names a tier change behind it,
390
- for example `Tier change: the source becomes test tier (it was general
391
- tier): 9634 lines against 6000.` A source that keeps only test files is
392
- held to the test tier's ceiling for every line, so move its test files
393
- out before its last product file.
394
- - `patch rename` also supports `--category` and `--order`.
395
- - `patch retire <name>` removes a patch like `patch delete` (same dependency
396
- refusal, `--dry-run` and confirmation) but keeps its order number as a
397
- retired slot in `patches.json#retired`, so `patchPolicy.allowGaps: false`
398
- sees no gap and no later patch is renumbered. Use it for a patch emptied by
399
- a rename. The slot has no `.patch` file and no row in `patches`: apply,
400
- export, lint and rebase never see it, and only the gap check counts it as
401
- occupied. A patch that later takes the order (`export --order <n>`, a
402
- rename or a renumber) fills the slot, which then disappears. `patch
403
- compact` renumbers through retired slots like any other gap.
404
- - `patch delete` and `patch retire` name each file the patch creates that is
405
- still on disk, in the dry run and at the prompt: once the patch is gone
406
- nothing owns it, so `status` would report it unmanaged. Delete those files
407
- first, or pass `--delete-created` to remove them as part of the confirmed
408
- operation (under the engine lock as well). Files the patch only modifies
409
- keep their edits and become unmanaged.
410
- - `patch reserve <order> --category <c> --owner <label> [--reason <text>]`
411
- holds an order for a patch a session has agreed to export but has not
412
- exported yet. The reservation lives in `patches.json#reserved`. Like a
413
- retired slot, the gap check counts it as occupied, so `export --order 571`
414
- is legal while a peer holds 569 and 570. Unlike a retired slot, the
415
- earliest-legal-order search and a default `export` skip it, because it is
416
- held for its owner. The export that lands on the order fills it, with a
417
- notice naming the owner. `patch reserve <order> --release` drops a
418
- reservation whose patch will not come. An order a patch, a retired slot or
419
- another reservation holds, or one outside the category's range, is
420
- refused.
421
- - `patch stage <name>...` stages the named patches' `.patch` files and only
422
- their rows of `patches/patches.json` in the project repository's git index.
423
- Every other row stays as at HEAD. The staged manifest is built from HEAD's
424
- rows plus the named working rows (with their retired slots; a reservation
425
- a staged row fills is dropped), validated, and written with `git
426
- hash-object` and `git update-index`. A collision (two rows at one order) or
427
- an invalid result is refused before the index is touched. The working copy
428
- is never changed and nothing is committed. Name a patch the working copy
429
- no longer has by its HEAD filename to stage its removal, and name both
430
- filenames of a renamed patch. Every manifest write, a
431
- re-export's row update included, puts every row, changed or not, in the one
432
- canonical key order that `patch stage` writes, so after a write the working
433
- copy and the index do not differ on key order alone.
434
- - `patch staged-dependency <name> --remove` names the entries to remove by
435
- any of `--file`, `--specifier`/`--line`, `--creates` and `--owner`. It needs
436
- `--creates`, or `--file` with the matcher. Without `--kind`, `--specifier`
437
- selects imports, `--line` selects registrations, and a selection with
438
- neither searches both kinds, so `--creates` alone removes every
439
- declaration for that created path, imports and registrations alike, which
440
- is the cleanup after a merge deletes it. Registration lines compare
441
- whitespace-insensitively, as the lint does. A selection that matches
442
- nothing is refused with exit 8, on a dry run too, and the refusal lists
443
- the patch's declarations of every kind it searched.
444
- - `patch staged-dependency <name> --add --kind registration` warns when
445
- `--line` matches no line the patch body adds to `--file`. Lines compare
446
- with whitespace runs collapsed, inner spacing included, so a jar.mn line
447
- aligned with two spaces matches a `--line` typed with one. The declaration
448
- is still written, and the lint reports it as `staged-dependency-unused`
449
- until the patch adds that line.
450
- - `patch staged-dependency <name> --add --from <json-file>` adds many
451
- declarations in one call under one lock hold. The file is a `lint
452
- --per-patch --report` document (its findings' `stagedDeclarations` for
453
- that patch) or a JSON array of `{ file, specifier | line, creates, owner?,
454
- reason?, patch? }` entries; entries naming another patch are skipped, and
455
- `--reason` fills entries without one. Every `staged-dependency` call logs
456
- only its delta (`added` / `removed`) in the history. A history record may
457
- carry the whole `before` / `after` lists instead.
458
- - `--add` (single or `--from`) on a declaration already present
459
- (same file, specifier or line, creates and owner) with a different
460
- `reason` replaces the reason in place, keeping the entry's position in its
461
- list. The summary counts these apart from additions, as in
462
- `updated the reason of 87`, and the history logs each as the old entry
463
- removed and the new one added. An `--add` without a reason never clears
464
- one.
465
-
466
- ### Parking a session's edits
467
-
468
- Several sessions edit the same files, and a peer's `re-export
469
- --refuse-foreign-drift` refuses while another session's hunks sit in its
470
- patch's files. `fireforge park <patch>` sets them aside: every drifted file of
471
- the patch goes back to its queue-applied baseline (or, with `--hunks <diff>`,
472
- only the named hunks come out of the working tree), and both sides of each
473
- file are kept under `.fireforge/park/<label>/`. After the owner commits,
474
- `fireforge park --restore <label>` three-way merges the parked edits back on
475
- top of the commit. A conflict leaves markers, keeps the park and exits
476
- non-zero. `park --list` and `park --drop <label>` manage parks, `--dry-run`
477
- previews, and park takes the engine lock.
478
-
479
- Before parking it warns when a hunk it takes out removes a Fluent message id,
480
- or a whole file, that files outside the patch still reference. A parked
481
- string still used by markup another patch owns makes `document.l10n.ready`
482
- reject in every new window, so move it somewhere you own first.
483
-
484
- Every queue-mutating patch command accepts `--wait-lock [seconds]`. See
485
- [`configuration.md`](configuration.md#lock-waits) for how the budget
486
- resolves.
487
-
488
- ## Linting the queue
489
-
490
- `lint --per-patch --patches` accepts repeated flags, comma lists, full
491
- filenames or stems, bare order numbers, manifest names, category-prefixed
492
- slugs, and bare slugs. A list is also split on whitespace, so
493
- a list held in one shell variable (`--patches "$P"` under zsh) selects every
494
- patch it names. A name that matches no patch is refused with that name, its
495
- nearest matches and the queue size, not with every patch in the queue.
496
-
497
- `lint --per-patch --max-warnings 0` is the warning-clean form for a release
498
- gate.
499
-
500
- `lint --per-patch --notices summary` prints one line per check in place of
501
- every NOTICE row, for example `NOTICE [large-patch-lines]: 180 across 172
502
- patch(es), 150 of them suppressed by lintIgnore (see --report)`. On a green
503
- queue those rows are reviewed waivers and under-threshold measurements, and
504
- there can be hundreds of them. The default, `--notices full`, prints every
505
- row. Errors and warnings always print in full, and the `--report`
506
- JSON is the same in both modes.
507
-
508
- `lint --per-patch --report <path>` writes a machine-readable JSON report with
509
- each patch's line count, the `metric` it was counted in
510
- (`patchLint.patchSizeMetric`: `diff` or `addedCode`), tier, active size
511
- thresholds, issues, and issues suppressed by `lintIgnore`, plus the
512
- cross-patch findings in `queueIssues`. A `forward-import` or
513
- `forward-registration` finding carries the declarations that discharge it as
514
- `stagedDeclarations`, which `patch staged-dependency --from` reads. Size-rule
515
- issues carry the value they measured as `measurement`. The size metrics
516
- (`countNonBinaryDiffLines`, `resolvePatchSizeTier`,
517
- `getPatchSizeThresholds(tier, config)`) are also exported on the
518
- programmatic API, with the file-size helpers `isTestFile`,
519
- `resolveFileSizeThresholds` and `countCodeLines`. So is
520
- `filesMeasuredByFileTooLarge(patchText)`, which returns the files
521
- `file-too-large` measures in a patch: the JS files it creates, and never a
522
- modified file or a new file of another kind. The rule selects its files
523
- through that same function, so an audit that uses it cannot drift from the
524
- rule. The API also exports the measurement the size rules
525
- themselves take, `measurePatchSize(engineDir, diff, filesAffected, config)`
526
- (lines, test-file lines, files and registration files under the configured
527
- metric), `isPatchSizeRegistrationFile(file, globs)`, the per-line
528
- `codeLineMask(file, content)` behind `countCodeLines`, and
529
- `evaluatePatchPolicyContentForQueue(config, projectRoot, patchesDir,
530
- manifest)`, the body-dependent `patchPolicy` rules `verify` runs. A waiver
531
- audit or a policy probe can then measure a patch exactly as the lint does,
532
- without importing `dist/` files by path.
533
-
534
- `lint --per-patch` measures sizes on the working tree, the way export and
535
- re-export do: each patch's diff is taken against the engine baseline from
536
- the files in `engine/`, and `file-too-large` reads the file on disk. A test
537
- file grown past its tier fails the lint gate while the edit is in progress,
538
- without a re-export first. See
539
- [`configuration.md`](configuration.md#patchlint) for the size metrics and
540
- thresholds.
541
-
542
- Per-patch lint type-checks plain Firefox JS against a built-in
543
- Firefox-globals shim that tracks upstream WebIDL additions per release. A
544
- `resource://` or `chrome://` import resolves to the module the queue
545
- creates under that name; a test script's own program sees the modules
546
- created up to the test's patch. An import the program cannot resolve (a
547
- module a later patch creates, an upstream module, or a basename two
548
- patches create) is typed `any`, and so is a type-member reference through
549
- it (`import("…").Type`); an implicit-`any` finding in a file with such an
550
- import names it, since the whole-tree `fireforge typecheck` sees the real
551
- type. `fireforge typecheck --explain <file>` prints which program checks a
552
- file and how its imports resolve there. See
553
- [`configuration.md`](configuration.md#patchlint) for the project hooks
554
- (`checkJsExtraShim`, `checkJsTestFiles`, `checkJsTestShim`).
555
-
556
- For release whitespace checks, use `npm run whitespace:check`. It checks
557
- source diffs while excluding the diff syntax of generated
558
- `patches/*.patch` files.
559
-
560
- ### License headers
561
-
562
- A file a patch creates must open with the project's license header
563
- (`missing-license-header`, an error). A JS or CSS file may keep upstream
564
- Mozilla's MPL-2.0 block header instead, whatever the project license. A file
565
- a patch modifies must still carry a recognized header in its first ten lines
566
- (`modified-file-missing-header`, a warning): any known license header, an
567
- SPDX tag, a common license name, or the CC0 dedication on Mozilla's tests.
568
- The MPL header is matched whatever its wrap: `//` lines, or a `/* … */` block
569
- with `*` or `-` continuation lines (Mozilla's dashed form,
570
- `/* - This Source Code Form …`), behind any editor-directive comments.
571
-
572
- Some upstream files carry no header at all. A patch that modifies one takes
573
- a reviewed `lintIgnore` entry instead of a license the file never had:
123
+ ## Throwing edits away: `discard` and `reset`
574
124
 
575
125
  ```sh
576
- fireforge patch lint-ignore 310-ui-sidebar --add modified-file-missing-header --yes
126
+ npx fireforge discard browser/base/content/browser.js
127
+ npx fireforge reset --yes
577
128
  ```
578
129
 
579
- ### Linting single files
130
+ - `discard <paths>` puts files back: a file the queue touches gets the queue's content (re-created or removed as the queue has it), any other changed file goes back to upstream, and an untracked file is deleted. Paths are relative to `engine/`, or to the current directory when you run the command inside `engine/`. A directory covers every changed file below it.
131
+ - `reset` restores every tracked file of `engine/` to pristine Firefox and removes untracked files, keeping the build output. A paused import or rebase is dropped. Without a terminal it needs `--yes`. Run `fireforge import` afterwards to apply the queue again.
580
132
 
581
- `./mach eslint <files>` needs mach's `lint` virtualenv. When that cannot be
582
- built on the host (a pinned requirement missing from PyPI, or a host Python
583
- the requirements do not support), no Mozilla-configured ESLint runs, and a
584
- bare `engine/node_modules/.bin/eslint` lacks the chrome-script globals and
585
- reports mostly noise. FireForge's own checks cover part of the gap:
133
+ Both save a recovery snapshot first.
586
134
 
587
- - `fireforge lint <path>...` lints only the named modified engine files
588
- (paths relative to `engine/`; a leading `engine/` is accepted, and a
589
- directory takes its modified and untracked files). It runs the
590
- patch-quality rules on those files' diff against HEAD, plus the checkJs
591
- pass when `patchLint.checkJs` is on. It needs no build.
592
- - `fireforge lint --per-patch --patches <patch>` lints one patch's queued
593
- diff, the gate an export is held to.
594
- - `fireforge typecheck` type-checks the configured jsconfig projects.
135
+ ## Recovery snapshots
595
136
 
596
- None of these applies Mozilla's ESLint rule set, so a file they pass can
597
- still fail `./mach eslint` once the virtualenv builds again.
137
+ Before a command destroys engine edits (`discard`, `reset`, `import --force`, `rebase --force`, `rebase --abort`, `download --force`), it saves the working tree of `engine/` as a commit under `refs/fireforge/recovery/<time>-<label>-<id>` in the engine's git repository and prints the ref. The newest 20 are kept. The repository's index, HEAD and branches do not move.
598
138
 
599
- ### Size waivers with a ceiling
139
+ ```sh
140
+ git -C engine for-each-ref refs/fireforge/recovery/
141
+ git -C engine diff HEAD refs/fireforge/recovery/<ref> -- browser/base/content/browser.js
142
+ git -C engine checkout refs/fireforge/recovery/<ref> -- browser/base/content/browser.js
143
+ ```
600
144
 
601
- A bare `lintIgnore` entry (`"file-too-large"`) suppresses its rule at any
602
- size, so a waived file can keep growing. For the measured size rules
603
- (`file-too-large`, `large-patch-lines`, `large-patch-files`) an entry can
604
- instead carry a ceiling:
145
+ ## Queue operations: `patch`
605
146
 
606
- ```json
607
- "lintIgnore": [
608
- "modified-file-missing-header",
609
- { "rule": "file-too-large", "max": 1200, "reason": "Controller split tracked in #412" }
610
- ]
611
- ```
147
+ Each operation is one transaction on the queue. The ones that move content between patches replay the queue and are refused when the result would differ from what the queue produced before.
148
+
149
+ ```sh
150
+ npx fireforge patch rename ui-sidebar ui-side-panel
151
+ npx fireforge patch reorder ui-toolbar --before ui-sidebar
152
+ npx fireforge patch split ui-sidebar browser/modules/Sidebar.sys.mjs --name ui-sidebar-module
153
+ npx fireforge patch move-files ui-toolbar ui-sidebar browser/base/content/toolbar.css
154
+ npx fireforge patch delete ui-misc
155
+ npx fireforge patch retire ui-old-toolbar --reason "Folded into ui-toolbar"
156
+ npx fireforge patch compact
157
+ npx fireforge patch set ui-sidebar --description "The sidebar panel" --tier none
158
+ ```
159
+
160
+ - `rename`: order, body and metadata stay; the file follows the name.
161
+ - `reorder`: `--order`, `--before` or `--after`. An occupied order is freed by moving the run of patches above it up by one. Patches that change the same lines keep their relative order.
162
+ - `split`: moves some files of a patch into a new patch, right after it unless placed elsewhere. Staged dependencies declared on the moved files go with them.
163
+ - `move-files`: moves files from one patch into another. Where the target already changes a file, the two changes are combined. A source patch left with no files is removed.
164
+ - `delete`: removes a patch. `engine/` is not touched: its files keep their content and belong to no patch (`fireforge discard` puts them back). Refused when another patch does not apply without it.
165
+ - `retire`: like `delete`, but the order stays recorded in `retired`, so no other patch gets it and the gap check sees no gap.
166
+ - `compact`: closes gaps in the numbering, keeping the apply order. With `patchPolicy.ranges`, each category range is numbered from its first patch.
167
+ - `set`: edits metadata without touching the body: `--description`, `--tier branding|none`, `--lint-ignore <rule>` (with `--max <n>` and `--reason` for a size ceiling), `--remove-lint-ignore <rule>`, `--staged-dependency <file>:<creates>`, `--remove-staged-dependency <file>:<creates>`.
612
168
 
613
169
  ```sh
614
- fireforge patch lint-ignore 310-ui-sidebar --add file-too-large --max 1200 --reason "Controller split tracked in #412" --yes
170
+ npx fireforge patch set ui-sidebar --lint-ignore large-patch-lines --max 1800 --reason "Reviewed: one feature"
171
+ npx fireforge patch set ui-sidebar --staged-dependency browser/base/content/browser-sidebar.js:browser/modules/Sidebar.sys.mjs --reason "Module lands in ui-sidebar-module"
615
172
  ```
616
173
 
617
- `patch lint-ignore` asks for confirmation, so a run outside a terminal (an
618
- agent or a script) needs `--yes`.
619
-
620
- The finding stays suppressed while its measurement (lines for the line
621
- rules, files for `large-patch-files`) is at or below `max`, and fires at its
622
- own severity past it, with a message naming the ceiling. Once the rule no
623
- longer reaches its own warning band, `lint --per-patch` prints a
624
- `lint-ignore-removable` notice naming the `patch lint-ignore --remove`
625
- command, and the `--report` JSON carries each ceiling under
626
- `lintIgnoreCeilings` with its current `measurement` and a `state` of
627
- `within`, `exceeded` or `removable`. A notice never exceeds a ceiling: it
628
- gates nothing, so a notice-band measurement past `max` surfaces as the plain
629
- notice it is. The report's `lintIgnoreWaivers` lists every entry, bare IDs
630
- included (`kind: "bare"`, `max: null`), with the same `measurement` and
631
- `state`, so an audit does not have to re-measure bare waivers from
632
- `suppressedIssues`. For a bare waiver the state is informational:
633
- `removable` also covers a rule this lint does not run. An `--add` for a rule
634
- that already has an entry replaces it, so the same command moves a ceiling
635
- or widens it back to a bare waiver. `export` and `re-export --lint-ignore
636
- <id>` only append bare IDs, and never widen an existing ceiling. The manifest
637
- refuses a ceiling on any other rule, and a second entry for the same rule.
638
-
639
- Under `patchSizeMetric: "addedCode"` a general-tier patch's
640
- `large-patch-lines` findings carry `share: "product"` (non-test files) or
641
- `share: "test"` (test files, held to the test tier). A ceiling can name the
642
- share it bounds, and `large-patch-lines` may then carry one ceiling per
643
- share instead of a single one:
174
+ With `patchPolicy` set, an operation that would create a policy problem (an order outside the category's range, a missing description under `requireDescription`, a name the `filenamePattern` refuses) is refused, or only reported under `mutationMode: "warn"`.
644
175
 
645
- ```json
646
- "lintIgnore": [
647
- { "rule": "large-patch-lines", "share": "product", "max": 900, "reason": "…" },
648
- { "rule": "large-patch-lines", "share": "test", "max": 4000, "reason": "…",
649
- "meta": { "kind": "structural", "owner": "tiles" } }
650
- ]
176
+ ## Checking the queue
177
+
178
+ ```sh
179
+ npx fireforge verify
180
+ npx fireforge lint --per-patch
651
181
  ```
652
182
 
653
- A ceiling's optional `meta` is a free-form JSON object FireForge keeps
654
- verbatim and never reads, for a project's own waiver bookkeeping (kind,
655
- owner, exit condition). The report echoes it.
183
+ - `verify` checks the manifest, every patch body, and that the queue replays onto the engine's `HEAD`. It reports patch files the manifest does not list (`stray-patch-file`), empty patches (`empty-patch`), unsafe paths and binary sections without content, ordering-policy problems (`patch-policy`), a patch that creates a file upstream already has (`replaces-upstream-file`, fixed by re-exporting it), and a patch that does not apply (`does-not-apply`).
184
+ - `lint` judges what `engine/` holds. `--per-patch` judges the stored queue patch by patch instead, which is what CI should run: it sees exactly what is committed.
185
+
186
+ `status` lists every owned path with its patch, and these states:
656
187
 
657
- Several ceilings go in one call, under one lock hold and one manifest write:
658
- `--add <rule>=<max>` gives each entry its own ceiling (`--reason` applies to
659
- all of them, `--share` scopes a `large-patch-lines` one), and `--from
660
- <json-file>` adds every entry of a JSON array (check IDs, or `{ rule, max,
661
- reason?, share?, meta?, patch? }` objects; entries naming another patch are
662
- skipped, and `--reason` fills objects without one). Given a `lint --per-patch
663
- --report` document instead, `--from` rebaselines each of the patch's
664
- ceilings to its current `measurement`.
188
+ | Code | Meaning | Fix |
189
+ | ---------------- | -------------------------------------------------------------------- | ---------------------------------------------------- |
190
+ | `unexported` | Edited since its patch was written | `fireforge re-export` or `discard` |
191
+ | `unmanaged` | Changed, and no patch holds it | `fireforge export <path>` or `discard` |
192
+ | `unapplied` | The queue changes it, and the engine holds the upstream state | `fireforge import` |
193
+ | `outdated` | The engine holds what an earlier import wrote; the queue moved since | `fireforge import` |
194
+ | `missing` | Absent from the engine where the queue leaves a file | `fireforge discard <path>` |
195
+ | `session-paused` | An import or rebase is unfinished | `fireforge import --continue` or `rebase --continue` |
196
+ | `does-not-apply` | A patch does not apply | `fireforge import` |
197
+
198
+ ## Moving to another Firefox version: `rebase`
665
199
 
666
200
  ```sh
667
- fireforge patch lint-ignore 310-ui-sidebar --add file-too-large=1200 --add large-patch-files=40 --reason "Rebaseline 2026-10" --yes
668
- fireforge patch lint-ignore 310-ui-sidebar --from lint-report.json --yes
201
+ npx fireforge rebase --to 140.10.0esr
669
202
  ```
670
203
 
671
- ## CI enforcement
672
-
673
- `fireforge status --check` exits non-zero when any unmanaged, drifted, or
674
- conflicted file exists. `--fail-on <class,...>` tunes the policy set, and
675
- `--json` composes with it: the JSON stays parseable and its `files[]` entries
676
- name the owning `patch`. `--include-ownership` adds ownership rows to JSON
677
- status output.
678
-
679
- `ownership-conflict` is a `--fail-on` class beside the file classifications:
680
- a path claimed by more than one patch, judged from the same rows as
681
- `--include-ownership` (so it fails on a clean tree too). It is not in the
682
- default set. `--allow <class,...>` names classes that never fail and removes
683
- them from the fail set. `--fail-on-unknown` (which needs `--allow`) fails
684
- every class present that neither list names, so a gate written today keeps
685
- failing closed when a later FireForge adds a classification:
686
-
687
- ```bash
688
- npx fireforge status --json --summary \
689
- --fail-on unmanaged,patch-owned-drift,conflict,ownership-conflict \
690
- --allow patch-backed,branding,furnace,binary-unsupported --fail-on-unknown
691
- ```
204
+ `rebase` downloads the version (`--product`, `--sha256` and `--candidate` pin it further), writes it to `fireforge.json`, replaces `engine/` with a checkout of the new source, and applies the queue again with reduced context, rewriting every patch against the new source and stamping it with the new version. Edits no patch holds are refused; capture them first, or pass `--force` to save them in a recovery snapshot and go ahead.
692
205
 
693
- The JSON `check` block echoes `allow` and `failOnUnknown` when they are set,
694
- and marks an offender that failed only through `--fail-on-unknown` with
695
- `"unnamed": true`. Under `--check` the full `--json` payload carries the
696
- `check` block too, not only `--summary`.
697
-
698
- On a shared engine, `--patches <list>` judges only the named patches:
699
- `status` keeps the files each one owns or claims (and, with `--ownership` or
700
- the ownership checks, the rows naming it), and `verify` keeps the findings
701
- that name it. Patches are named the way `lint --per-patch --patches` names
702
- them (filename, stem, order number, manifest name or slug; repeated, or
703
- separated by commas or whitespace). A peer's drifted
704
- patch then does not turn this session's gate red. The limit is the
705
- point: an unmanaged file belongs to no patch, so a scoped run never judges
706
- unexported files, this session's included. Run the unscoped gate before a
707
- commit that should cover them. `lint --per-patch --patches` keeps every
708
- queue finding that names a scoped patch, even on a file the patch no longer
709
- touches (a stale `staged-dependency-unused` declaration). `verify --patches` keeps findings about the
710
- queue as a whole (a `patches.json` that does not parse) whatever the scope.
711
-
712
- `verify` resolves every `resource:///modules/…` and `resource://gre/modules/…`
713
- `.sys.mjs` specifier the queue's files import, and fails on a fork module that
714
- is missing or that no `moz.build` at or above its directory registers. Such
715
- an import otherwise crashes every browser start of the objdir, or kills
716
- xpcshell with no output. An unscoped run also scans the engine worktree:
717
- changed files are read for imports, and untracked files count as fork
718
- modules. That covers a chrome script's lazy getter for a module that neither
719
- file has exported yet.
720
-
721
- `fireforge check` composes the static gates into one command: `status`
722
- (as `--json --summary --check`), `verify`, `lint --per-patch`,
723
- `typecheck`, `furnace validate` and `token coverage`, plus the project's
724
- `check.extraSteps[]` (see [`configuration.md`](configuration.md#check)). The
725
- steps run in parallel as child `fireforge` processes, so each behaves exactly
726
- as it does standalone and takes only its own locks; `check` takes none
727
- itself. None of the built-in steps takes the engine session lock. The one
728
- built-in step that writes, `typecheck` (it regenerates a stale Furnace
729
- jsconfig), runs before `furnace validate`, which reads that file. `--patches`
730
- is forwarded to status, verify and lint. `--only` and `--skip` narrow the
731
- step list, and `--jobs <n>` caps how many run at once. The run ends with a
732
- per-step table and one verdict line:
206
+ `--dry-run` reports whether the queue applies to the target version and changes nothing.
733
207
 
734
- ```
735
- FIREFORGE-VERDICT: PASS steps=<n> skipped=<n>
736
- FIREFORGE-VERDICT: FAIL reason=step-failures|lock-timeout failed=<step,...> steps=<n> skipped=<n>
208
+ When a patch does not apply, the rebase pauses exactly as `import` does: fitting hunks applied, `.rej` files for the rest. Fix the files in `engine/`, then:
209
+
210
+ ```sh
211
+ npx fireforge rebase --continue
737
212
  ```
738
213
 
739
- `--json` replaces both with one document. A failed step's last 40 output
740
- lines are printed under the table.
214
+ Repeat until the rebase completes. The queue itself is written once, at the end. To give up:
741
215
 
742
- The JSON shapes are specified in [`machine-output.md`](machine-output.md),
743
- and the codes a script should branch on in
744
- [`exit-codes.md`](exit-codes.md).
216
+ ```sh
217
+ npx fireforge rebase --abort
218
+ ```
745
219
 
746
- ## Rebasing onto a new Firefox source release
220
+ `--abort` puts back the previous version in `fireforge.json`, a checkout of it in `engine/`, and the queue applied, after a recovery snapshot of the engine.
747
221
 
748
- ```bash
749
- npx fireforge source set --version 145.0.0esr --product firefox-esr --sha256 <archive-sha256>
750
- npx fireforge download --force
751
- npx fireforge rebase
222
+ ## Moving to source mode
223
+
224
+ ```sh
225
+ git add -A && git commit -m "Before migration"
226
+ npx fireforge migrate --to-source
752
227
  ```
753
228
 
754
- `download --force` is the destructive step of the three, not `rebase`. It
755
- replaces `engine/` wholesale, so applied patches, unexported edits and
756
- commits made in `engine/` are gone once the new tree is active. When the
757
- engine it is about to replace has changed paths against HEAD, or HEAD has
758
- moved off the recorded base commit, it names the loss (how many changed
759
- paths match the patch queue and how many do not) and asks first. A
760
- non-interactive run refuses unless `--yes` is given. A clean engine is
761
- replaced without a prompt.
762
-
763
- `npx fireforge rebase --dry-run` replays the queue onto the engine's HEAD
764
- without touching `engine/`. It seeds a private index from HEAD and applies
765
- each patch there with `git apply --cached`, in queue order, walking the same
766
- context-reduction ladder as the real run (exact, then `-C2`, `-C1`, `-C0`,
767
- bounded by `--max-fuzz`). Each patch is reported as `clean`, `reduced
768
- context` (with the step it needed) or `reject` (with the files git named).
769
- It exits 6 when anything rejects. A reject after an earlier one is marked
770
- as possibly cascading from it, since the replay continues without the
771
- rejected patch. Run it after the download, when HEAD is the new source. The
772
- header names the previous pin as "from": `firefox.version` in the
773
- `fireforge.json` committed at the project's HEAD, the tree the queue was
774
- last applied to. The patch stamps follow on their own line
775
- (`Patch stamps: 317 at 153.0esr, 5 at 153.3.0esr`), oldest first and
776
- compared as versions rather than strings, because patches untouched since an
777
- older hop keep their older stamp. When no committed pin precedes the target
778
- (the project is not a repository, or the pin move is already committed), the
779
- header falls back to the oldest stamp and says so. The header also warns
780
- when `engine/` is not yet on the pinned version.
781
-
782
- A source refresh replaces `engine/node_modules`, which an engine-ESLint
783
- ratchet runs from. `fireforge doctor` warns ("Engine ESLint installed") until
784
- it is back. Reinstall it with `cd engine && ./mach npm ci --no-audit
785
- --no-fund`, which installs only the node dependencies. `./mach eslint
786
- --setup` also builds mach's Python `lint` virtualenv, and that step fails
787
- whenever a requirement it pins is no longer served by PyPI.
788
-
789
- If a patch fails, fix the reject inside `engine/`, then run
790
- `npx fireforge rebase --continue`. A rebase leaves the engine mutated on
791
- purpose, so its apply-and-persist pairs are held across a signal rather than
792
- rolled back. See invariant 4 in
793
- [`lifecycle-invariants.md`](lifecycle-invariants.md).
229
+ `migrate --to-source` replays the queue onto the pinned Firefox and writes the result as owned files under `src/` with an override record per changed upstream file. Each patch becomes a component. `fireforge.json` takes `"mode": "source"`, a `source` block, each patch's tier and lint waivers, and `exportQueue.groups` that keep each patch's created files together in an export (named `<patch>-created` when the patch also changed upstream files, since two groups may not share an ID). The result is proven to reproduce the tree the queue replays to before anything is kept. `patches/` is removed; git is the undo. [source-workflow.md](source-workflow.md) continues from there.