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