@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,731 +2,346 @@
2
2
 
3
3
  # Configuration
4
4
 
5
- `fireforge.json` at the project root holds the project's configuration, and
6
- `furnace.json` holds component configuration. This file covers the settings
7
- whose behavior needs more than a schema line, plus the environment variables
8
- FireForge reads.
9
-
10
- ## `firefox`, the source pin
11
-
12
- `firefox.version`, together with `firefox.product` and optionally
13
- `firefox.sha256` and `firefox.candidate`, is the source pin that
14
- `fireforge download` resolves an archive from. `fireforge source set` writes
15
- it.
16
-
17
- The pin lives in `fireforge.json` next to hand-maintained policy sections,
18
- which is worth knowing when you revert that file. Running
19
- `git checkout -- fireforge.json` after an accidental reformat also reverts an
20
- uncommitted pin, and the tree is then building a different version than the
21
- config claims.
22
-
23
- `fireforge source set`, `fireforge config <key> <value>` and `furnace init`
24
- edit `fireforge.json` in place. Only the values that change
25
- are rewritten. Indentation, key order, and objects or arrays kept on one
26
- line stay as they are, so a pin move is a diff of the `firefox` block alone.
27
- New keys follow the layout of the object they land in.
28
-
29
- `fireforge doctor`'s "Source pin matches engine" check compares the pin with
30
- the engine's committed `browser/config/version.txt`. That file never carries
31
- the `esr` suffix, so a trailing `esr` is dropped from the pin for this
32
- comparison (a `153.4.0esr` pin matches `153.4.0`). The comparison with the
33
- version the last download recorded keeps the full pin.
34
-
35
- ### Archive integrity: `firefox.sha256` and `firefox.allowUnverifiedDownload`
36
-
37
- Every fresh download is checked against Mozilla's published `SHA256SUMS` for
38
- the release. A mismatch fails the download and discards the archive. The
39
- check also fails closed when the published digest cannot be obtained at all:
40
- a 404, a captive portal answering with an HTML page, a dropped connection, or
41
- a timeout. TLS alone is thin trust for the artifact that becomes the git
42
- baseline every patch is built on, and "the checksum host was unreachable" is
43
- exactly the condition someone positioned on the network can arrange.
44
-
45
- - `firefox.sha256` pins the digest. It takes precedence over the published
46
- file and is the right answer for reproducible builds and offline mirrors:
47
- obtain it out of band, and the download verifies with no network beyond the
48
- archive itself.
49
- - `firefox.allowUnverifiedDownload: true` accepts a download when the
50
- published digest is unavailable, with a loud warning. This disables the
51
- integrity check for that case, so the archive is trusted on TLS alone. Use
52
- it only for a mirror you already trust, and prefer pinning `sha256`
53
- instead. A digest that is fetched and does not match is rejected either
54
- way. The setting is ignored when `sha256` is set.
55
-
56
- `fireforge doctor` reports the pin beside what the checkout actually is (the
57
- engine's own `browser/config/version.txt` and the version the last download
58
- recorded) and warns when they disagree. It is a report, not a lock, since a
59
- tree may legitimately be mid-migration. `product`, `sha256` and `candidate`
60
- have no recorded counterpart on disk, so the check does not claim to have
61
- verified them.
62
-
63
- ## External toolchains
64
-
65
- Projects with generated asset prerequisites can declare opt-in
66
- `externalToolchains`. `fireforge doctor` reports missing required tools as
67
- errors and missing optional tools as warnings.
68
-
69
- Seasonal branding on macOS, for example, can declare Apple's Icon Composer
70
- tool at
71
- `/Applications/Xcode.app/Contents/Applications/Icon Composer.app/Contents/Executables/ictool`,
72
- plus `actool` via `xcrun`, `sips`, and `iconutil`.
73
-
74
- On macOS, `fireforge doctor` also checks that the bootstrapped clang
75
- (`~/.mozbuild/clang`, or under `MOZBUILD_STATE_PATH`) can link against the
76
- SDK the build will use. That is the SDK `engine/mozconfig` selects with
77
- `--with-macos-sdk`, resolved by sourcing the mozconfig the way mach does,
78
- or `xcrun --show-sdk-path` when it names none. The check links a trivial C
79
- program through the toolchain's lld in a temp directory. When that fails, it
80
- reports a warning with clang's first error and lists the SDKs installed
81
- under the mozbuild state directory, the Command Line Tools and the active
82
- Xcode. An Xcode update can ship an SDK the pinned toolchain cannot read, and
83
- `mach configure` then dies at its linker probe with nothing but `config.log`
84
- saying why. The check does nothing on other platforms and when no clang has
85
- been bootstrapped.
5
+ A project is configured by `fireforge.json` at its root, and its components by `furnace.json` beside it. Both are checked against a schema on every command: a wrong type or value names the key path, and an unknown key is refused with the nearest known key. Invalid configuration exits 2.
86
6
 
87
- ## `patchLint`
7
+ Read and change `fireforge.json` through the schema:
88
8
 
89
- Per-patch lint type-checks plain Firefox JS against a built-in
90
- Firefox-globals shim that tracks upstream WebIDL additions per release.
91
- Most globals in it are `any`. `Cu` is typed as `CuShim`, the members of
92
- `nsIXPCComponents_Utils` (`js/xpconnect/idl/xpccomponents.idl`) with loose
93
- parameter and result types, so a call to a member `Cu` does not have (such
94
- as `Cu.now()`, which is `ChromeUtils.now()`) fails `typecheck` and per-patch
95
- lint instead of throwing at runtime. The same shim backs
96
- `fireforge typecheck`.
97
-
98
- - `patchLint.checkJsExtraShim` adds members to the structured shim globals
99
- via TypeScript interface merging, for example
100
- `interface ChromeUtilsShim { newApi(): any }`.
101
- - `patchLint.checkJsTestFiles: true` extends the pass to patch-owned test
102
- `.js` files (`browser_*`, `test_*`, `xpcshell_*`, and `/test/` paths). Each
103
- one is checked as its own small script-scope program against a loose
104
- built-in harness shim.
105
- - `patchLint.checkJsTestShim` points at a project `.d.ts` whose typed
106
- declarations (a real `TestUtils` interface, say) override the loose
107
- baseline, so calls to harness members that do not exist fail at export
108
- time.
109
- - `patchLint.prettier` (`'off'`, `'warning'` or `'error'`, default `'off'`)
110
- runs the project's configured Prettier over patch-owned `.sys.mjs`
111
- modules. It runs from inside `engine/`, so `engine/.prettierrc*` and
112
- `engine/.prettierignore` decide the outcome. The same command run from the
113
- repo root can report a false pass when the root `.prettierignore` excludes
114
- `engine/`. Prettier is resolved from `engine/node_modules`, then the
115
- project's, then `npx --no-install`. Left at `'off'`, formatting is out of
116
- scope for the per-patch tier, and no other tier checks `.sys.mjs`
117
- formatting either.
118
- - `patchLint.forwardRegistration` (`'support-files'` or `'extended'`,
119
- default `'support-files'`) picks which carriers the `forward-registration`
120
- queue rule checks for a line naming a file that only a later patch
121
- creates. The default checks test-manifest `support-files`. `'extended'`
122
- also checks:
123
- - jar.mn pair lines (the source in parentheses, relative to the jar.mn);
124
- - moz.build path tokens (a quoted string with a `.` or `/`, relative to
125
- the moz.build);
126
- - test-manifest section headers and `head`;
127
- - `customElements.js` `chrome://<pkg>/content/…` URLs, resolved through
128
- the jar.mn lines the same queue adds.
129
-
130
- A line whose target cannot be resolved without the build system is left
131
- alone: a `%` or `@AB_CD@` substitution, `**`, `!`, a path that leaves the
132
- tree, or a chrome URL no queue jar.mn line packages. Each finding prints
133
- the same paste-and-run `patch staged-dependency --add --kind registration`
134
- command as the `support-files` arm, ending in a `--reason '<why …>'`
135
- placeholder to fill in. Each finding also carries the declaration as
136
- structured `stagedDeclarations`, so a `lint --per-patch --report` file
137
- can be applied with one `patch staged-dependency <patch> --add --from
138
- <report>` per patch instead of one call per edge. The setting is opt-in because a queue
139
- that was never checked for these carriers can carry many such edges, and a new error would red a
140
- `--max-warnings 0` gate on install. The same census is on the public API as
141
- `findForwardRegistrations(patchesDir, { scope })`, which defaults to
142
- `'extended'`, for a consumer that keeps its own ratchet over these edges.
143
-
144
- - `patchLint.fileSizeThresholds` tunes the `file-too-large` line counts per
145
- file class:
146
-
147
- ```json
148
- {
149
- "patchLint": {
150
- "fileSizeThresholds": {
151
- "general": { "notice": 500, "warning": 800, "error": 900 },
152
- "test": { "warning": 1500 }
153
- }
154
- }
155
- }
156
- ```
157
-
158
- Every field is optional and merges over the defaults (general
159
- `500/750/900`, test `1200/1400/1600`). The merged triple has to satisfy
160
- `notice <= warning <= error`, which is validated at config load. Under
161
- the recommended gate posture `--max-warnings 0`, the `warning` band
162
- is a hard failure rather than a soft limit, which is what these thresholds
163
- exist to let you move. A notice is the design target: advisory, and it
164
- never fails `--max-warnings 0`. Only the error band suggests splitting.
165
-
166
- - `patchLint.fileSizeMetric` (`'raw'` or `'code'`, default `'raw'`) picks
167
- what `file-too-large` counts. `'raw'` counts every line, the way `wc -l`
168
- does. `'code'` blanks comments with acorn's tokenizer (module first, then
169
- script, since chrome subscripts are scripts) and counts the lines left
170
- non-blank, so JSDoc and blank lines do not count. A file acorn cannot
171
- tokenize is counted in raw lines, the upper bound, and a
172
- `file-size-unparsed` notice names it. Every message says which unit it
173
- counted ("lines" or "code lines"). The counter is on the public API as
174
- `countCodeLines(content)`, next to `resolveFileSizeThresholds` and
175
- `isTestFile`.
176
-
177
- - `patchLint.patchSizeThresholds` tunes `large-patch-lines` and
178
- `large-patch-files` per tier (`general`, `test`, `branding`), each with a
179
- `lines` and a `files` triple:
180
-
181
- ```json
182
- {
183
- "patchLint": {
184
- "patchSizeThresholds": {
185
- "general": {
186
- "lines": { "notice": 1000, "warning": 2000, "error": 4000 },
187
- "files": { "notice": 8, "warning": 12, "error": 24 }
188
- },
189
- "branding": { "files": { "error": 90 } }
190
- }
191
- }
192
- }
193
- ```
194
-
195
- Every field is optional and merges over the defaults, and each merged
196
- triple has to satisfy `notice <= warning <= error`. The line defaults are
197
- general `800/1500/3000`, test `1500/3000/6000` and branding
198
- `8000/18000/30000`. Files warn above 5 (general, test) or 60 (branding).
199
- The files triple has no notice or error band unless you set one: an unset
200
- `files.notice` follows `files.warning`, and an unset `files.error` never
201
- fires. The `branding` tier applies to a patch whose files all sit under
202
- `browser/branding/` (plus `browser/moz.configure` and
203
- `browser/confvars.sh`), or one marked `"tier": "branding"` in
204
- `patches.json` (`re-export --tier branding`). A patch whose files are all
205
- tests takes the `test` tier, and wins over branding.
206
- `getPatchSizeThresholds(tier, config)` returns the configured values.
207
-
208
- - `patchLint.patchSizeMetric` (`'diff'` or `'addedCode'`, default `'diff'`)
209
- picks what `large-patch-lines` counts. `'diff'` counts every non-binary
210
- line of the unified diff, headers and context included. `'addedCode'`
211
- counts only added lines that are neither blank nor comment, judged on
212
- each file's post-image in `engine/` (a hunk can start inside a block
213
- comment). Comments are recognised per file kind: JS through acorn, CSS
214
- block comments, `<!-- -->` in markup, and whole-line `#` comments in
215
- manifests, `moz.build`, Fluent and similar. In CSS it also skips lines
216
- inside a Furnace `@fireforge-include` … `@fireforge-end-include`
217
- expansion: they are a copy of a shared fragment. Under `'addedCode'`, a
218
- general-tier patch that carries tests counts per class: lines in test
219
- files against the test tier's `lines`, everything else against the
220
- general tier's, each with its own finding.
221
-
222
- - `patchLint.patchSizeRegistrationFiles` lists globs whose files count
223
- toward neither `large-patch-lines` nor `large-patch-files`, for example
224
- `["jar.mn", "moz.build", "components.conf", "*.toml", "jsconfig*.json"]`.
225
- A glob without a `/` matches the basename, one with a `/` the
226
- engine-relative path; `*` stays within a path segment and `**` crosses
227
- segments. Default: none.
228
-
229
- - `patchLint.tokenScales` (default unset) puts property families on a token
230
- scale. In every CSS file a patch creates, a declaration of a governed
231
- property must resolve to the scale (`token-scale`, an error):
232
-
233
- ```json
234
- {
235
- "patchLint": {
236
- "tokenScales": [
237
- {
238
- "properties": ["gap", "row-gap", "column-gap", "padding*", "margin*"],
239
- "prefix": "--mybrowser-space-",
240
- "allowLiterals": ["0", "auto", "*%", "1px"],
241
- "allow": ["--mybrowser-page-padding"]
242
- },
243
- { "properties": ["z-index"], "prefix": "--mybrowser-z-" }
244
- ]
245
- }
246
- }
247
- ```
248
-
249
- `properties` takes exact names or a `*`-suffixed prefix. Each value atom
250
- must be a `var()` of a `prefix` token or of an `allow` name (exact, or
251
- `*`-suffixed such as `--moz-*`), a literal matching `allowLiterals` (`*`
252
- is a wildcard), or a CSS-wide keyword (`inherit`, `initial`, `unset`,
253
- `revert`, `revert-layer`). A `var()` fallback is held to the same scale,
254
- so `var(--mybrowser-gap, 7px)` fails on `7px`. `calc()`, `min()`, `max()`
255
- and `clamp()` are transparent. Files the patch modifies rather than
256
- creates are not checked, and a line carrying
257
- `fireforge-ignore: token-scale` is skipped. Declarations inside
258
- descriptor at-rules (`@font-face`, `@counter-style`, `@property`,
259
- `@font-feature-values`, `@font-palette-values`, `@page` and its margin
260
- boxes) are descriptors, not properties, and are not judged.
261
-
262
- A scale also takes:
263
-
264
- - `prefix` as a list (`["--mybrowser-space-", "--mybrowser-gap-"]`) for a
265
- scale whose steps are spelled more than one way.
266
- - `allowInCalc`: literals legal only inside a math function, such as the
267
- unitless multiplier in `calc(var(--mybrowser-space-2) * 2)`, without
268
- also passing a bare `2`. Same wildcard syntax as `allowLiterals`.
269
- - `offsetCap`: the px a declaration may subtract from the scale's tokens
270
- inside a math function (`calc(var(--mybrowser-space-4) - 1px)`), summed
271
- over the declaration. A px value anywhere else still fails.
272
- - `exclude`: engine-relative globs of files the scale does not govern,
273
- such as a vendored minified sheet, so its patch needs no patch-wide
274
- waiver.
275
- - `minFiles`: the fewest patch-created stylesheets (outside `exclude`)
276
- that must declare one of the scale's properties. Under it the queue
277
- fails `token-scale-vacuous` (an error on `fireforge.json` in
278
- `lint --per-patch`), so a scale that matches nothing, or a scan set a
279
- move emptied, cannot pass by judging nothing. A `--patches` run does
280
- not judge the floor.
281
-
282
- An unknown key in a scale is refused.
9
+ ```sh
10
+ npx fireforge config get firefox.version
11
+ npx fireforge config get gate.lanes[0].files
12
+ npx fireforge config set build.jobs 12
13
+ npx fireforge config set patchLint.rules '{"jsdoc-class-method": "warning"}'
14
+ ```
283
15
 
284
- ## `typecheck`
16
+ `config set` reads the value as JSON when the key accepts that (`4`, `true`, `["a"]`) and as text otherwise, validates the whole file with the change, and rewrites only the changed value, keeping the rest of the file's layout.
285
17
 
286
- `typecheck.projects` lists the jsconfig files `fireforge typecheck` checks
287
- as whole projects. `typecheck.extraShim` and `typecheck.projectOverrides`
288
- add declarations to the Firefox-globals shim, for every project or for one.
289
- When `patchLint.checkJs` is on, the same command also runs the per-patch
290
- checkJs pass that `export` enforces, so a green `typecheck` means
291
- export-clean types.
292
-
293
- Project build info is written in `.fireforge/typecheck/`, outside `engine/`,
294
- with a key covering the shim, TypeScript version, compiler options and
295
- FireForge version. Diagnostics always use a fresh project
296
- program: prior incremental diagnostic state is never restored. Cached and
297
- `--no-cache` runs therefore check the same complete file set. `--no-cache`
298
- also disables build-info writes. A jsconfig's own `incremental` and
299
- `tsBuildInfoFile` are ignored.
300
-
301
- `typecheck.litTypes: true` (default off) types Lit in the
302
- shim: `LitElement` and the helpers of
303
- `chrome://global/content/vendor/lit.all.mjs`, and `MozLitElement` of
304
- `chrome://global/content/lit-utils.mjs`. The element classes carry closed
305
- member lists, as `Cu` does, so a misspelt member of a widget host is an
306
- error rather than `any`. Template helpers and directives stay loose. It is
307
- off by default because a reactive property declared only in
308
- `static properties` or `static queries` then needs a declaration to be
309
- known. The shim declares the global type
310
- `MozLitElementWith<Extra>`: a widget casts its base to it, and its
311
- instances carry `Extra` beside MozLitElement's members. A query getter
312
- cannot be declared any other way: a class field redefines the getter
313
- MozLitElement installs and throws, and a constructor declaration reads it
314
- before `renderRoot` exists.
315
-
316
- ```js
317
- const Base = /** @type {MozLitElementWith<{ input: HTMLInputElement }>} */ (MozLitElement);
318
- export class MozSearch extends Base {
319
- static queries = { input: 'input' };
320
- }
321
- ```
18
+ `config set` does not change `mode`, because the mode moves together with the `source` block and the files that hold the owned changes; it fails with the code `config-mode-switch` (exit 8) and names the route. `fireforge migrate` converts a patch-mode project to source mode. Going back is `fireforge export`, then a hand edit that sets `mode` to `patches` and removes `source` ([source-workflow.md](source-workflow.md#coming-from-patch-mode-going-back)).
322
19
 
323
- Without `litTypes` (and under per-patch checkJs, which does not type Lit)
324
- `MozLitElementWith<Extra>` is `any`, as the base is, so the same source
325
- checks in both. A project shim can add members by merging
326
- `interface LitElementShimMembers`; a jsconfig `paths` entry that maps these
327
- URLs to real sources takes precedence.
328
-
329
- Per-patch checkJs gives each test script its own program. A
330
- test's `resource:///` and `chrome://` imports (including a
331
- `typeof import("…")` cast) resolve to the modules the queue creates up to
332
- the test's own patch, so a test of an earlier patch's module is checked
333
- against its real types. A module a later patch creates, an upstream module
334
- and a basename two patches create still type as `any`, and an implicit-any
335
- finding on such an import names it.
336
-
337
- Both project and per-patch checkJs provide Gecko DOM constructor
338
- `isInstance(value)` predicates with instance narrowing, plus
339
- `MouseEvent.MOZ_SOURCE_PEN`. These declarations retain normal DOM member
340
- checking; they do not turn constructors or instances into `any`.
20
+ Paths are project-relative unless the table says engine-relative (a path inside Firefox, such as `browser/base/content/browser.js`). Neither kind may be absolute or climb out with `..`. Globs use `*` within one path segment and `**` across segments.
341
21
 
342
- ## `patchPolicy`
22
+ ## Identity and mode
343
23
 
344
- `patchPolicy.ranges` makes `patch compact` range-aware, so closing ordinal
345
- gaps does not move a patch out of the band its category owns.
24
+ | Key | Type | Default | Meaning |
25
+ | --------------- | ------------------------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------- |
26
+ | `name` | string | required | Display name of the browser |
27
+ | `vendor` | string | required | Vendor or company name |
28
+ | `appId` | string | required | Application ID in reverse-domain form, such as `org.mybrowser.browser` |
29
+ | `binaryName` | string | required | Executable name: a lowercase letter, then lowercase letters, digits and hyphens |
30
+ | `license` | `EUPL-1.2` \| `MPL-2.0` \| `0BSD` \| `GPL-2.0-or-later` | `EUPL-1.2` | SPDX identifier of the project license; the license header lint expects on created files |
31
+ | `markerComment` | string | `binaryName` in capitals | Marker appended as a comment to lines FireForge writes into upstream files, such as `MYBROWSER` |
32
+ | `mode` | `patches` \| `source` | `patches` | Where owned changes live: a patch queue, or tracked files under `source.root` |
346
33
 
347
- With `patchPolicy.allowGaps: false`, orders are contiguous within a range:
348
- a new patch must fill an existing gap or take the number right after the
349
- range's last patch. A patch that has to leave the queue without opening a
350
- gap is removed with `patch retire`, which keeps its order as a retired slot.
351
- An order a peer has claimed but not exported yet is held with `patch
352
- reserve`, so a later order can be exported without a gap in between (see
353
- [`patch-workflow.md`](patch-workflow.md#queue-maintenance)).
34
+ The identity strings are substituted into the mozconfig templates (`${name}`, `${vendor}`, `${appId}`, `${binaryName}`), so they refuse control characters. `fireforge setup` proposes the same default license and writes `license` explicitly.
354
35
 
355
- ### Registration-only rules
36
+ ## `source`
356
37
 
357
- Four opt-in rules read the patch bodies rather than `patches.json` alone.
358
- `verify` and `lint --per-patch` report them (as `patch-policy/<code>` in
359
- lint), at the severity `mutationMode` implies. Mutating commands do not
360
- evaluate them, because those commands check a projected manifest before
361
- any body exists.
38
+ Present exactly when `mode` is `source` ([source-workflow.md](source-workflow.md)).
362
39
 
363
- ```json
364
- {
365
- "patchPolicy": {
366
- "ranges": [{ "from": 100, "to": 899, "category": "ui" }],
367
- "addOnlyMarker": "hominis",
368
- "upstreamAllowlist": [
369
- "browser/moz.configure",
370
- { "path": "**/jar.mn", "addOnly": true },
371
- { "path": "**/moz.build", "addOnly": true }
372
- ],
373
- "scopeRules": [
374
- { "filenamePattern": "-tests\\.patch$", "files": ["**/test/**", "**/tests/**", "**/*.toml"] }
375
- ],
376
- "verifyDocumentPaths": true
377
- }
378
- }
379
- ```
40
+ | Key | Type | Default | Meaning |
41
+ | ----------------------- | ------ | -------- | ---------------------------------------------------------------------- |
42
+ | `source.root` | string | required | Directory whose files supply the engine files of the same path (`src`) |
43
+ | `source.metadataRoot` | string | required | Directory holding the override records (`.fireforge-sources`) |
44
+ | `source.pristineCommit` | string | required | Commit the pinned Firefox archive imports as |
380
45
 
381
- - `upstreamAllowlist` names, as path globs, the upstream files a
382
- non-reserved patch may modify (`upstream-allowlist`). A file is upstream
383
- when no patch in the queue creates it, so fork-owned files never need an
384
- entry. A patch in a `reservedRanges` band is exempt: its allowlist entry's
385
- `files` already governs it. Globs are anchored engine-relative paths: `*`
386
- stays within a segment, `**` spans segments, so `*.toml` matches only a
387
- top-level file and `**/*.toml` matches one anywhere.
388
- - An object entry with `addOnly: true` puts matching files in
389
- registration-only mode (`add-only`): the patch may only add lines, every
390
- non-blank added line must contain the marker (the entry's `marker`, else
391
- `addOnlyMarker`, matched case-insensitively), and deleting the file or
392
- changing it as binary is refused. When several entries match a file, any
393
- add-only one makes it add-only.
394
- - `scopeRules` limits a class of patch to the files its globs name
395
- (`scope`). A rule selects patches by `category`, `filenamePattern` (a
396
- regular expression over the patch filename), or both. The example keeps a
397
- `-tests` patch to test directories and test manifests.
398
- - `verifyDocumentPaths: true` requires each reserved allowlist entry's `adr`
399
- and `documentation` path to exist under the project root
400
- (`reserved-document-missing`).
46
+ `root` and `metadataRoot` are canonical relative directories, neither inside the other, and outside `engine`, `.git`, `.fireforge`, `node_modules`, `patches`, `secrets`, `components` and `configs`.
401
47
 
402
- ## `test`
48
+ ## `firefox`
49
+
50
+ The pin: which Firefox release the project builds on.
51
+
52
+ | Key | Type | Default | Meaning |
53
+ | --------------------------------- | -------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------- |
54
+ | `firefox.version` | string | required | Firefox release, such as `140.9.0esr` or `147.0b1` |
55
+ | `firefox.product` | `firefox` \| `firefox-esr` \| `firefox-beta` \| `firefox-devedition` | required | Product the version belongs to; an `esr` version pairs with `firefox-esr`, a beta with `firefox-beta` or `firefox-devedition` |
56
+ | `firefox.sha256` | string | | Pinned SHA-256 of the source archive; wins over the `SHA256SUMS` Mozilla publishes |
57
+ | `firefox.allowUnverifiedDownload` | boolean | `false` | Accept a download whose published digest cannot be fetched, trusting TLS alone; ignored with `sha256` |
58
+ | `firefox.candidate` | string | | Release-candidate build directory, such as `build2`, for pre-release verification |
59
+
60
+ Change the pin with `fireforge rebase --to <version>`, which also moves the project's changes.
403
61
 
404
- `test.canaryPath` and `test.canaryTimeoutSeconds` supply the defaults for
405
- `fireforge test --canary`.
406
-
407
- `test.reapOrphans` is `"report"` (default) or `"reap"`: what the preflight
408
- census does with a harness helper that survived an earlier run in this
409
- objdir. `"reap"` terminates it and stamps `orphans-reaped=<n>` on the verdict
410
- line; `--reap-orphans` does the same for one invocation. The objdir anchor
411
- rule is the same under both. See [`testing.md`](testing.md).
412
-
413
- `test.mochitestPorts` is `"fixed"` (default) or `"auto"`. `"auto"` lets a
414
- browser run proceed while the mochitest server or Marionette port is held by
415
- something that is not this checkout's own, relying on the engine
416
- harness's own busy-port fallback, so sibling checkouts can run browser suites
417
- at once. `--auto-ports` does the same for one invocation. See
418
- [`testing.md`](testing.md#shared-browsers-ports-and-host-state).
419
-
420
- `test.lockMode` is `"exclusive"` (default) or `"shared"`. `"shared"` lets a
421
- build-less run that applies no negative control and uses auto ports hold the
422
- engine-session lock shared, so peers' build-less runs on the same objdir
423
- overlap while builds, re-exports and every other writer still hold it alone.
424
- `--shared-lock` does the same for one invocation. See
425
- [`testing.md`](testing.md#concurrency).
426
-
427
- `test.furnaceApply` is `"all"` (default), `"reached"` or `"none"`: which
428
- components a `test --build` deploys before building. `--furnace-apply` does
429
- the same for one invocation. See
430
- [`testing.md`](testing.md#furnace-components-in-a-pre-test-build).
431
-
432
- ## `history`
433
-
434
- `history.path` is where FireForge appends its patch history log, relative to
435
- the project root (default `.fireforge/history.jsonl`). The log records
436
- structural patch operations (staged dependencies, splits, renames, export
437
- orders, re-exports that change a patch's file list) as one JSON object per
438
- line. FireForge never reads it back; it is an audit trail only. Each record
439
- carries `invocationId` (shared by every record one command writes), `pid`,
440
- `ppid`, and `sessionId` when the environment sets `FIREFORGE_SESSION_ID`, so
441
- a session sharing the checkout can select its own lines.
442
-
443
- If a log exists at `patches/.fireforge-history.jsonl`, inside the tracked
444
- queue, the next append moves it to `history.path`; when both files exist, its
445
- records are appended to the `history.path` file rather than either being
446
- overwritten. Setting `history.path` to `patches/.fireforge-history.jsonl`
447
- keeps the log at that location.
62
+ ## `build`
63
+
64
+ | Key | Type | Default | Meaning |
65
+ | -------------------------------- | ----------- | -------- | --------------------------------------------------------------------------- |
66
+ | `build.jobs` | integer ≥ 1 | mach's | Parallel jobs for `mach build`; `build -j` overrides it |
67
+ | `build.release.overlay` | path | required | Captured mozconfig fragment appended last for a release build |
68
+ | `build.release.secrets.variable` | string | required | Environment variable the release build receives the secrets directory in |
69
+ | `build.release.secrets.files` | array | required | File names that must be in that directory; a release missing one is refused |
70
+ | `build.release.outputs` | array | | Paths in the release object directory to collect, such as `dist/*.dmg` |
71
+
72
+ `fireforge package --release` builds with `build.release` in an object directory of its own, emptied first, and leaves the development build alone. The secrets directory is set per host as `releaseSecrets` in `~/.fireforge/host.json`; the release build gets it in the environment variable `secrets.variable` names, and a release whose secrets are declared is refused while that directory is unset or lacks one of `secrets.files`.
448
73
 
449
74
  ## `buildAudit`
450
75
 
451
- The post-build packaging audit is warn-only. Most of what it would otherwise
452
- report as "missing packaged artifact" is classified away from the structure
453
- of the tree itself: an unselected `--with-branding` tree read from the
454
- generated `engine/mozconfig`, a directory reached only through a
455
- platform-gated `DIRS +=` in an ancestor `moz.build`, a Storybook
456
- `*.stories.mjs`. One case cannot be derived from the tree: a source that is
457
- deliberately never packaged, such as a type-only mirror whose header says it
458
- is never loaded. Declare those:
76
+ After a build, FireForge warns about front-end files that changed since the previous build and that nothing packages: such a file builds without complaint and is simply absent from the browser.
77
+
78
+ | Key | Type | Default | Meaning |
79
+ | -------------------------------- | ------ | -------- | ---------------------------------------------------------- |
80
+ | `buildAudit.unpackaged[].path` | path | required | Engine-relative path, exact or with `*` inside one segment |
81
+ | `buildAudit.unpackaged[].reason` | string | required | Why the file is never packaged |
82
+
83
+ ## `test`
84
+
85
+ | Key | Type | Default | Meaning |
86
+ | ----------------------------- | ----------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
87
+ | `test.mochitestPorts` | `fixed` \| `auto` | `fixed` | `auto` lets a run proceed while another workspace holds the Marionette port or, where the harness can move, a server port |
88
+ | `test.harnessFailurePatterns` | array | | Regular expressions of output lines meaning the browser failed before any test ran; such a run reads `crash`, not `no-tests` |
89
+
90
+ ## `patchLint`
91
+
92
+ The quality rules over owned changes ([quality.md](quality.md)).
93
+
94
+ | Key | Type | Default | Meaning |
95
+ | -------------------------------------- | ----------------------------- | --------- | ------------------------------------------------------------------------------------------ |
96
+ | `patchLint.rules` | map of rule ID to severity | | `off`, `notice`, `warning` or `error` per rule, replacing its default |
97
+ | `patchLint.waivers` | array | | Waivers per group of owned changes, beside those a patch manifest carries |
98
+ | `patchLint.waivers[].group` | string | required | The group: a patch or component name such as `ui-sidebar`, or the full group ID |
99
+ | `patchLint.waivers[].rule` | rule ID | required | The rule waived |
100
+ | `patchLint.waivers[].max` | integer ≥ 0 | | Largest measurement still waived; without it the rule is waived at any size |
101
+ | `patchLint.waivers[].reason` | string | required | Why the waiver exists |
102
+ | `patchLint.waivers[].share` | `product` \| `test` | | Share of the group a `large-patch-lines` ceiling bounds; needs `max` |
103
+ | `patchLint.checkJs` | boolean | `false` | Type-check created modules (`checkjs-type-error`) |
104
+ | `patchLint.checkJsStrict` | boolean | `false` | Run checkJs with `strict` and `noImplicitAny`; needs `checkJs` |
105
+ | `patchLint.checkJsCompilerOptions` | object | | Overrides after the strict preset; needs `checkJsStrict` (see below) |
106
+ | `patchLint.checkJsExtraShim` | path | | `.d.ts` added to the Firefox globals shim for checkJs |
107
+ | `patchLint.checkJsTestFiles` | boolean | `false` | Also check created test scripts, each as its own program; needs `checkJs` |
108
+ | `patchLint.checkJsTestShim` | path | | `.d.ts` of typed harness declarations; needs `checkJsTestFiles` |
109
+ | `patchLint.litTypes` | boolean | `false` | Type Lit in the checkJs shim with closed member lists; needs `checkJs` |
110
+ | `patchLint.undefinedIdentifiers` | `off` \| `warning` \| `error` | `warning` | How checkJs reports undefined identifiers |
111
+ | `patchLint.rawColorAllowlist` | array | | Paths (exact or basename) exempt from `raw-color-value` |
112
+ | `patchLint.fileSizeThresholds` | object | | `file-too-large` bands per file class (`general`, `test`), merged over the defaults |
113
+ | `patchLint.fileSizeMetric` | `raw` \| `code` | `raw` | What `file-too-large` counts: every line, or lines carrying code |
114
+ | `patchLint.patchSizeThresholds` | object | | Size bands per tier (`general`, `test`, `branding`), each with `lines` and `files` |
115
+ | `patchLint.patchSizeMetric` | `diff` \| `addedCode` | `diff` | What `large-patch-lines` counts: every diff line, or added lines carrying code |
116
+ | `patchLint.patchSizeRegistrationFiles` | array | | Globs of registration files neither patch-size rule counts |
117
+ | `patchLint.tokenScales` | array | | CSS property families whose values in created stylesheets must be scale tokens (see below) |
118
+
119
+ **Size bands.** Each band object takes `notice`, `warning` and `error` (integers ≥ 1); what you leave out keeps the default, and the result must stay ordered `notice ≤ warning ≤ error`. The defaults are in [quality.md](quality.md#rules).
459
120
 
460
121
  ```json
461
122
  {
462
- "buildAudit": {
463
- "unpackaged": [
464
- {
465
- "path": "browser/base/content/hominis-tile-host-types.js",
466
- "reason": "Type-only mirror of the tile host, never loaded, and no jar.mn entry by design."
467
- }
468
- ]
123
+ "patchLint": {
124
+ "fileSizeThresholds": { "general": { "warning": 800, "error": 1000 } },
125
+ "patchSizeThresholds": {
126
+ "general": { "lines": { "warning": 2000 }, "files": { "warning": 8 } }
127
+ }
469
128
  }
470
129
  }
471
130
  ```
472
131
 
473
- - `path` is engine-relative. A `*` may glob within one path segment. `**` is
474
- refused, because a subtree carve-out is how a reviewed exception quietly
475
- becomes a blanket one.
476
- - `reason` is required and must be non-empty. This is the one audit class
477
- FireForge cannot verify against the tree, so the declaration is the
478
- evidence. By the time someone reads it, an unexplained carve-out is
479
- indistinguishable from a mistake.
480
- - Admitted paths are listed in the audit output, never silenced. The notice
481
- reads `admitted as unpackaged by buildAudit.unpackaged "<path>"` followed
482
- by the declared reason.
483
- - A declared path that does resolve to a packaged artifact is reported as a
484
- stale carve-out rather than suppressed, because the declaration asserts a
485
- fact about the tree that is no longer true.
486
- - A declaration matching nothing that changed in a given run says nothing.
487
- Unlike `--expect-unmanaged`, whose unmet entries are reported because it is
488
- a per-invocation flag list, this is a standing list checked only against
489
- the files that happened to change, so "not met" is the normal case.
490
-
491
- The `Packaged:` summary line names each non-zero skip class with its count,
492
- so a run that dismissed four unselected-branding files reads differently from
493
- one that dismissed four unregistered sources.
132
+ **`checkJsCompilerOptions`** takes the booleans `strictNullChecks`, `strictFunctionTypes`, `strictBindCallApply`, `noImplicitThis`, `useUnknownInCatchVariables`, `strictPropertyInitialization`, `noUnusedLocals`, `noUnusedParameters`, and `paths`, a module-resolution mapping with engine-relative targets (each pattern may hold one `*`).
133
+
134
+ **`tokenScales[]`** entries:
135
+
136
+ | Key | Type | Meaning |
137
+ | --------------- | ------------------------- | -------------------------------------------------------------------------------- |
138
+ | `properties` | array, required | CSS properties governed: exact names or `*`-suffixed prefixes such as `padding*` |
139
+ | `prefix` | string or array, required | Custom-property prefix of the scale tokens, such as `--mybrowser-space-` |
140
+ | `allowLiterals` | array | Literal values accepted without a token; `*` is a wildcard |
141
+ | `allow` | array | Further custom properties accepted: exact names or `*`-suffixed prefixes |
142
+ | `allowInCalc` | array | Literal values accepted only inside `calc()`, `min()`, `max()` or `clamp()` |
143
+ | `offsetCap` | number ≥ 0 | Largest total px a declaration may subtract from scale tokens in a math function |
144
+ | `exclude` | array | Engine-relative globs of files the scale skips |
145
+ | `minFiles` | integer ≥ 1 | Fewest created stylesheets that must declare a governed property |
146
+ | `allowValues` | array | Reviewed declarations accepted as written: `{ "property", "value", "reason" }` |
147
+
148
+ ## `patchPolicy`
149
+
150
+ Which upstream files owned changes may touch, and how the patch queue is ordered ([quality.md](quality.md#policy), [patch-workflow.md](patch-workflow.md#queue-operations-patch)).
151
+
152
+ | Key | Type | Default | Meaning |
153
+ | ------------------------------------------------------ | ----------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
154
+ | `patchPolicy.ranges` | array | required | Order bands owned by categories: `{ "from", "to", "category" }`, inclusive, not overlapping |
155
+ | `patchPolicy.reservedRanges` | array | | Order bands for listed exceptional patches: `{ "from", "to", "allowed" }` |
156
+ | `patchPolicy.reservedRanges[].allowed[].filename` | string | required | Group ID of the exception: the patch file name allowed in the range, or in source mode the component |
157
+ | `patchPolicy.reservedRanges[].allowed[].files` | array | | Exact upstream files the exception may change outside the allowlist; any when absent |
158
+ | `patchPolicy.reservedRanges[].allowed[].adr` | path | | Decision record documenting the exception |
159
+ | `patchPolicy.reservedRanges[].allowed[].documentation` | path | | Documentation of the exception |
160
+ | `patchPolicy.filenamePattern` | string | | Regular expression with named captures `order`, `category` and `slug` every patch file name must match |
161
+ | `patchPolicy.requireDescription` | boolean | `false` | An empty patch description is a violation |
162
+ | `patchPolicy.allowGaps` | boolean | `true` | Allow unoccupied orders within a category range |
163
+ | `patchPolicy.mutationMode` | `error` \| `warn` | `error` | How queue operations treat a policy problem they would add: `error` refuses it; `warn` reports it and lowers the policy lint rules to warnings |
164
+ | `patchPolicy.upstreamAllowlist` | array | | Globs, or entries `{ "path", "addOnly", "marker", "retiredPaths" }`, naming the upstream files owned changes may modify |
165
+ | `patchPolicy.addOnlyMarker` | string | | Marker for `addOnly` entries that set none |
166
+ | `patchPolicy.scopeRules` | array | | `{ "group", "files" }`: groups whose ID matches the `group` regular expression touch only files matching `files` |
167
+ | `patchPolicy.verifyDocumentPaths` | boolean | `false` | Require the `adr` and `documentation` paths of reserved exceptions to exist |
168
+
169
+ ## `typecheck`
170
+
171
+ | Key | Type | Default | Meaning |
172
+ | -------------------------------- | ----------------------------- | --------- | ----------------------------------------------------------------------------------------------------------- |
173
+ | `typecheck.projects` | array | required | `jsconfig.json` or `tsconfig.json` files checked whole; a path under `engine/` names the workspace's engine |
174
+ | `typecheck.extraShim` | path | | `.d.ts` added to the Firefox globals shim of every project |
175
+ | `typecheck.projectOverrides` | map | | Per project (keyed as in `projects`): another `.d.ts` instead of `extraShim`, or `null` for none |
176
+ | `typecheck.undefinedIdentifiers` | `off` \| `warning` \| `error` | `warning` | How undefined identifiers are reported |
177
+ | `typecheck.litTypes` | boolean | `false` | Type Lit in the shim with closed member lists |
494
178
 
495
179
  ## `check`
496
180
 
497
- `fireforge check` is the composed static gate. It runs six built-in steps,
498
- `status`, `verify`, `lint`, `typecheck`, `furnace-validate` and
499
- `token-coverage`, and then the project's own commands. Every field of the
500
- `check` block is optional:
181
+ The composed static check ([quality.md](quality.md#check)).
182
+
183
+ | Key | Type | Default | Meaning |
184
+ | ---------------------------- | ---------------- | -------- | ------------------------------------------------------------------------------------- |
185
+ | `check.skip` | array | | Built-in steps this project never runs |
186
+ | `check.status.failOn` | array | all | Status codes that fail the status step |
187
+ | `check.status.allow` | array | | Status codes the status step accepts |
188
+ | `check.maxWarnings.lint` | integer ≥ 0 | | Warnings the lint step tolerates |
189
+ | `check.maxWarnings.furnace` | integer ≥ 0 | | Warnings the furnace-validate step tolerates |
190
+ | `check.extraSteps[].name` | string | required | Step name: lowercase letters, digits and dashes, not a built-in step's name |
191
+ | `check.extraSteps[].command` | array | required | Argument vector run from the project root; the step passes on exit 0 |
192
+ | `check.extraSteps[].timeout` | integer ≥ 1 | `600` | Seconds before the step is killed and fails |
193
+ | `check.extraSteps[].engine` | boolean | `false` | The step reads the engine: it runs holding the workspace, with `FIREFORGE_ENGINE` set |
194
+ | `check.extraSteps[].after` | array | | Steps that must finish first, whatever their outcome |
195
+ | `check.minTokenCoverage` | integer 0 to 100 | | Percentage below which the token-coverage step fails |
196
+ | `check.failOnSkipped` | boolean | `false` | Fail when a built-in step is skipped for having nothing to run |
197
+ | `check.lintReport` | path | | File the lint step writes its JSON report to (`FIREFORGE_CHECK_LINT_REPORT`) |
198
+
199
+ ## `gate`
200
+
201
+ What `fireforge gate` runs besides `check`. [gate.md](gate.md) explains each entry with an example.
202
+
203
+ | Key | Type | Default | Meaning |
204
+ | ------------------------------- | ----------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
205
+ | `gate.build` | `ui` \| `full` | `ui` | The build the gate runs; a workspace that needs a full build gets one either way |
206
+ | `gate.documents` | array | | Globs of paths that change nothing the gate tests; a pattern without a slash matches a file name at any depth |
207
+ | `gate.lanes[].id` | string | required | Lane ID: lowercase letters, digits, `.`, `_`, `-` |
208
+ | `gate.lanes[].files` | array | required | Engine-relative globs or literal paths of the tests |
209
+ | `gate.lanes[].exclude` | array | | Tests left out of `files` |
210
+ | `gate.lanes[].dispatch` | `shards` \| `one-browser` \| `standalone` | `shards` | A browser per file, one browser for all, or a restart between files |
211
+ | `gate.lanes[].headed` | boolean | `false` | Runs with a visible window, holding the display |
212
+ | `gate.lanes[].env` | map | | Harness environment; a value starting `{artifacts}` names a path in the lane's output directory |
213
+ | `gate.lanes[].uploadDir` | boolean | `false` | Gives the harness a `MOZ_UPLOAD_DIR` in the lane's output directory |
214
+ | `gate.lanes[].machArgs` | array | | `--setpref=<name>=<value>` arguments whose value names no path |
215
+ | `gate.lanes[].validate.command` | array | required | Argument vector run after a clean harness exit: `node <script>` or a committed script; `{artifacts}` expands |
216
+ | `gate.stress[]` | lane keys, plus `repeat` | | A lane run `repeat` (integer ≥ 1, required) times; every repetition must pass |
217
+ | `gate.controls[].id` | string | required | Control ID |
218
+ | `gate.controls[].diff` | path | required | Committed diff holding the mutation |
219
+ | `gate.controls[].test` | engine path | required | Test that must catch it |
220
+ | `gate.controls[].assertions` | array | required | Labels of the reds it must produce, every one and no other |
221
+ | `gate.runs[].id` | string | required | Run ID |
222
+ | `gate.runs[].smokeExit` | integer ≥ 1 | required | Seconds the console is watched before the browser is ended |
223
+ | `gate.runs[].headless` | boolean | `false` | Starts without a window |
224
+ | `gate.runs[].args` | array | | Arguments for the browser |
225
+ | `gate.runs[].consoleAllowFile` | path | | Committed file of console line patterns the smoke start accepts |
226
+ | `gate.runs[].validate.command` | array | required | As on a lane |
227
+ | `gate.acceptance[].id` | string | required | Acceptance ID |
228
+ | `gate.acceptance[].reason` | string | required | What the person decides |
229
+ | `gate.acceptance[].evidence` | array | | `lane:<id>`, `stress:<id>`, `control:<id>` or `run:<id>` entries whose outputs the person looks at; each must be declared |
230
+
231
+ IDs are unique within each list.
232
+
233
+ ## `exportQueue`
234
+
235
+ How a source-mode `export` groups created files into patches ([source-workflow.md](source-workflow.md#writing-a-patch-queue-export)).
236
+
237
+ | Key | Type | Default | Meaning |
238
+ | ---------------------------- | ----------- | --------- | ---------------------------------------------------------------------- |
239
+ | `exportQueue.groups[].name` | string | required | The group's ID and patch name: lowercase words joined by hyphens |
240
+ | `exportQueue.groups[].paths` | array | required | Engine-relative globs; a created file joins the first group it matches |
241
+ | `exportQueue.groups[].tier` | `branding` | | Size tier written into the generated queue for the group's patch |
242
+ | `exportQueue.componentTiers` | map | | Size tier (`branding`) per component of upstream changes |
243
+ | `exportQueue.maxGroupBytes` | integer ≥ 1 | `1048576` | Byte budget of a directory group for created files no group matches |
244
+
245
+ ## `wire`
246
+
247
+ | Key | Type | Default | Meaning |
248
+ | ------------------- | ----------- | ------------------------------------ | -------------------------------------------------------------------- |
249
+ | `wire.subscriptDir` | engine path | `browser/base/content` | Directory of wired chrome subscripts |
250
+ | `wire.domTarget` | engine path | `browser/base/content/browser.xhtml` | Top-level chrome document that wired DOM fragments are included into |
251
+
252
+ ## `externalToolchains`
253
+
254
+ Tools the project needs beyond what Firefox's own build needs, in named groups. `fireforge doctor` looks for each tool and reports one row per tool, naming the toolchain and the tool.
255
+
256
+ | Key | Type | Default | Meaning |
257
+ | --------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
258
+ | `externalToolchains[].name` | string | required | Toolchain name, such as `seasonal-branding` |
259
+ | `externalToolchains[].tools` | array | required | The tools it needs, at least one |
260
+ | `externalToolchains[].tools[].name` | string | required | Tool name, and what is looked up when no `path` is set |
261
+ | `externalToolchains[].tools[].path` | string | | Executable path, absolute or project-relative; the tool is found when the path exists |
262
+ | `externalToolchains[].tools[].xcrun` | boolean | | Find the tool with `xcrun -find <name>` instead of on `PATH` |
263
+ | `externalToolchains[].tools[].required` | boolean | `true` | A missing tool fails `doctor`; with `false` it is a warning |
264
+
265
+ A tool is looked for in one place: at `path` when set, else through `xcrun` when `xcrun` is true, else on `PATH`.
501
266
 
502
267
  ```json
503
268
  {
504
- "check": {
505
- "skip": ["token-coverage"],
506
- "status": {
507
- "failOn": ["unmanaged", "patch-owned-drift", "conflict", "ownership-conflict"],
508
- "allow": ["patch-backed", "branding", "furnace", "binary-unsupported"],
509
- "failOnUnknown": true
510
- },
511
- "maxWarnings": { "lint": 0, "furnace": 0 },
512
- "extraSteps": [
513
- { "name": "policy-audit", "command": "npm run audit:policy", "timeout": 600 },
514
- { "name": "invariants", "command": "node check-invariants.mjs", "cwd": "tools" }
515
- ]
516
- }
269
+ "externalToolchains": [
270
+ {
271
+ "name": "seasonal-branding",
272
+ "tools": [
273
+ { "name": "actool", "xcrun": true },
274
+ { "name": "pngquant", "required": false }
275
+ ]
276
+ }
277
+ ]
517
278
  }
518
279
  ```
519
280
 
520
- - `skip` lists the built-in steps this project never runs. `typecheck` is
521
- also skipped when there is no `typecheck` block, and `furnace-validate`
522
- when there is no `furnace.json`.
523
- - `status` is the status step's `--check` policy: `--fail-on`, `--allow` and
524
- `--fail-on-unknown` (see [`patch-workflow.md`](patch-workflow.md#ci-enforcement)).
525
- An invalid policy is refused as a config error before any step runs.
526
- - `maxWarnings` passes `--max-warnings` to `lint --per-patch` and
527
- `furnace validate`.
528
- - `extraSteps[]` adds project commands. `name` is lowercase letters, digits
529
- and dashes and must not repeat a built-in name. `command` runs with
530
- `/bin/sh -c` (`cmd.exe /c` on Windows) from the project root, or from the
531
- project-relative `cwd`. `timeout` is in seconds: past it the step's whole
532
- process tree is killed and the step fails. A step passes when it exits 0.
533
- `after` lists steps, built-in or extra, that must finish before it starts
534
- (whatever their outcome); a name that is not a step, or an ordering cycle,
535
- is refused.
536
- - `timeout` bounds every built-in step, in seconds, and `timeouts` sets it
537
- per step (`{ "typecheck": 600 }`). A step past its budget is killed and
538
- fails. Unset, built-in steps are unbounded.
539
- - `failOnSkipped: true` fails the check (`reason=skipped-steps`) when a
540
- built-in step is skipped because the project has nothing for it to run
541
- (no `typecheck` block, no `furnace.json`). A step named in `skip` is a
542
- decision and never fails it.
543
- - `lintReport` is a project-relative path the lint step writes its
544
- `lint --per-patch --report` JSON to. Every extra step receives the
545
- absolute path as `FIREFORGE_CHECK_LINT_REPORT`, so an audit that runs
546
- `after: ["lint"]` can read the run's lint report instead of linting the
547
- queue a second time.
548
-
549
- The verdict line names the skipped steps with an additive
550
- `skipped-steps=<a,b>` key beside `skipped=<n>`.
551
-
552
- ## Design tokens
553
-
554
- Tokens are managed with `fireforge token add`. `fireforge token list` and
555
- `fireforge token show` report what is already there.
556
-
557
- - `--create-category` declares a new category banner and inserts the token in
558
- one step. It cannot be combined with `--variant`: author the category with
559
- the base token first, then add each variant.
560
- - `--category` is required for a base declaration and optional under
561
- `--variant`, where the declaration is routed into a `:root<selector>` block
562
- and never into a category section. It is still validated when supplied.
563
- - `--variant` takes the same selector grammar the block matcher understands:
564
- one attribute fragment (`[data-private]`, `[data-skin=precision]`), a run
565
- of them (`[data-skin=precision][data-theme=dark]`), and an optional
566
- pseudo-class tail (`[data-skin=precision]:not([data-private])`). Names and
567
- values must be identifier-safe, and `=value` is normalized to `="value"`. A
568
- variant naming a qualifier matches only a block carrying that qualifier.
569
- One without a qualifier still matches a qualified block, and the write says
570
- so.
571
- - `--mode override` mirrors into both `:root[data-theme="dark"]` and
572
- `:root[data-theme="light"]`. A qualified block such as
573
- `:root[data-theme="light"]:not([data-private])` is matched and written
574
- through, with a warning naming the selector. The qualifier carries meaning,
575
- but silently skipping half the mirror is the worse failure.
576
- - A token already present in the target block is reported with its location
577
- (`already exists in :root[…] (line N), unchanged`) rather than as a bare
578
- no-op.
579
-
580
- ### Reading the token file
581
-
582
- `token add --category` refuses a category that the tokens CSS does not
583
- declare, so `token list` exists to name the categories without you
584
- hand-parsing a `= Category =` banner out of the file.
585
-
586
- - `fireforge token list [--category <name>] [--json]` reports each category
587
- banner with the tokens declared under it, in file order. Declarations above
588
- the first banner are reported under `(no category)` rather than dropped,
589
- and a banner with no tokens is still listed, since `token add` accepts it.
590
- An unknown `--category` is refused by naming the ones that exist, because a
591
- filter that printed nothing would read as "this category is empty".
592
- - `fireforge token show <token-name> [--json]` reports the owning category
593
- and the value the token takes in every block that declares it: the base
594
- `:root`, the dark `@media` mirror, and each `:root[variant]`, with the line
595
- of each. The leading `--` is optional, and if you include it, pass the `--`
596
- separator first (`fireforge token show -- --my-token`).
597
-
598
- Only the base `:root` block owns a token, so `token list` reports it once.
599
- The dark and variant blocks mirror it and appear in `token show`.
600
-
601
- ### Checking the token file
602
-
603
- `fireforge token lint [--json]` exits non-zero on either of two findings:
604
-
605
- - `token-lockstep`: a themed override block (the dark `@media` mirror, a
606
- `:root[variant]` block) declares a token with the project's token prefix
607
- that the base `:root` does not declare. Every other theme would resolve
608
- it to nothing. Overrides of non-prefixed properties (a `--moz-*` platform
609
- variable) are left alone.
610
- - `token-undeclared`: a `var(--<prefix>…)` in the tokens CSS, or in any CSS
611
- file a patch in the queue touches, names a token no block of the tokens
612
- CSS declares. A property declared in the same file, and the `furnace.json`
613
- `tokenAllowlist` and `runtimeVariables` names, are exempt. A
614
- reference with a fallback (`var(--x, 0)`) is optional and not reported,
615
- and a token a sibling sheet declares counts as declared. Sheets are
616
- siblings when one queue document links both (`<link rel="stylesheet">`,
617
- `<html:link>` or `<?xml-stylesheet?>`, in markup or a Lit template; a
618
- `chrome://` URL resolves through the queue's jar.mn lines, a relative
619
- one beside the document), when one `@import`s the other, or when
620
- `furnace.json` `tokenSiblingSheets` pairs them:
621
- `{ "browser/themes/**/panel*.css": ["browser/base/content/host.css"] }`
622
- (a partner is a path or a glob over the queue's sheets).
623
-
624
- The prefix is `furnace.json` `tokenPrefix`, else `--<binaryName>-`.
625
-
626
- ## Smoke runs
627
-
628
- For unattended smoke checks, `fireforge run --smoke-exit <s> --headless`
629
- launches the browser headless. A headed smoke window on a shared desktop
630
- absorbs live input, which contaminates the console capture, so headed
631
- non-CI launches print a warning saying so. Exit codes 12 and 13 separate a
632
- console regression from a launch failure. See
633
- [`exit-codes.md`](exit-codes.md).
634
-
635
- A smoke run starts on a fresh temporary profile by default.
636
- The step exists to prove what the build does on a clean start. The
637
- developer's `obj-*/tmp/profile-default` carries whatever the last session
638
- left (a pre-reset database, a restored hand-made applet), and those reds
639
- say nothing about the tree. FireForge creates the directory under the OS
640
- temp dir, seeds the two prefs `mach run` writes into profiles it makes
641
- itself (`browser.shell.checkDefaultBrowser` and
642
- `browser.aboutConfig.showWarning`), and passes it to Firefox as
643
- `-profile`. The directory is removed when the run ends. That includes a
644
- failed run and a SIGINT/SIGTERM, which the signal handler removes after
645
- the browser tree has shut down. A FireForge that was SIGKILLed cannot clean
646
- up after itself, so the next `run` removes any temporary profile whose
647
- owning process is gone.
648
-
649
- - `--profile <path>` launches with a named profile directory and leaves it
650
- in place. Under `--smoke-exit` it replaces the fresh default. Firefox also
651
- gets `-purgecaches`, which discards the profile's startup
652
- cache of compiled chrome scripts. That cache is keyed on the build id, and
653
- a `build --ui` does not change it, so without the purge a kept profile runs
654
- the chrome scripts an earlier build cached. `--no-purge-caches` keeps the
655
- cache. mach's `profile-default` has its `startupCache/` removed before
656
- every run, and a temporary profile starts without one.
657
- - `--temp-profile` gives a plain `run` the same fresh, removed-afterwards
658
- profile.
659
- - Arguments after `--` go to the browser, after the profile ones. A headed
660
- session on a kept profile that a chrome-context Marionette client drives
661
- is `fireforge run --profile <dir> -- -marionette -remote-allow-system-access`,
662
- with `marionette.port` set in the profile's `user.js` so peers' harnesses
663
- keep 2828. The objdir app launched directly gets neither `-purgecaches`
664
- nor the startup-cache cleanup, so it can serve a widget script an earlier
665
- launch cached.
666
-
667
- A smoke run whose browser exits with a clean status before the window
668
- elapses, without printing any console output, fails with exit 13.
669
- Lines from mach's own log (the timestamped command echo) do not
670
- count as output. A launch that exits silently never reached a window: a
671
- stale `.parentlock`, or a profile whose run of SIGTERM-ended smoke runs
672
- counts as a startup-crash streak (`toolkit.startup.recent_crashes`).
673
-
674
- A plain `run` without either flag keeps mach's `profile-default`. `mach run`'s
675
- desktop parser has no `--profile` option (its `--profile/-P` belongs to the
676
- Android parser), so the profile is always passed as a program parameter.
677
- With an explicit profile, mach neither writes its `runprefs` from
678
- `~/.mozbuild/machrc` nor accepts `--setpref`.
679
-
680
- The allowlist (`--console-allow-file`) is count-blind by default: a line that
681
- matches an entry never counts, however often it fires. A `# max-hits: N`
682
- comment directly above an entry (other comments may sit between) caps how
683
- many lines that entry may match in one run. The attribution block prints
684
- capped entries as `hits×/N`, and an entry that fires past its ceiling is
685
- reported and fails the run with exit 12, the same as an unallowed error. A
686
- directive with no entry after it is refused rather than silently ignored.
687
-
688
- ## Lock waits
689
-
690
- Every FireForge command that mutates the engine takes the engine-session
691
- lock, and some take a second subsystem lock as well. Contention fails fast
692
- after about a second by default.
693
-
694
- `--wait-lock [seconds]` (bare flag means 60, valid range 1 to 86400, a day) replaces
695
- that with a bounded wait, and the budget covers every lock the command takes.
696
- For `furnace apply`, `deploy` and `sync` that means the furnace lock as well
697
- as the engine-session lock. The furnace leaves that take only the furnace lock
698
- (`create`, `remove`, `rename`, `refresh`, `scan`, `override`, `preview`, and
699
- `chrome-doc create`/`remove`) apply the flag to that lock. While waiting, a
700
- progress line roughly every 5 seconds identifies the holder by PID, command
701
- and start time.
702
-
703
- Commands that take no lock accept `--wait-lock` and ignore it, so a scripted
704
- sequence can append the flag everywhere without a usage error killing the
705
- run.
706
-
707
- `FIREFORGE_WAIT_LOCK=<seconds>` applies the same budget to every command in a
708
- session, using the same bounds as the flag. It is the fallback whenever the
709
- flag is absent, including for the furnace lock a build's pre-build apply and
710
- `doctor --repair-furnace` take. An explicit `--wait-lock` always wins.
711
-
712
- Waiters are granted a lock in arrival order: the progress line's "You are
713
- next" or "N ahead of you" is the order the lock will actually be handed out.
714
- A waiter that crashed, was killed, or is stopped drops out of the queue
715
- instead of blocking it.
716
-
717
- `fireforge status --lock` reports the current holder and queue depth.
281
+ ## `furnace.json`
282
+
283
+ The component configuration ([furnace.md](furnace.md)). It is created with `version` and `componentPrefix` the first time a Furnace command writes it; edits rewrite only the changed values.
284
+
285
+ | Key | Type | Default | Meaning |
286
+ | ---------------------- | ------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
287
+ | `version` | `1` | `1` | Format version |
288
+ | `componentPrefix` | string | required | Prefix every custom component name starts with (`moz-` when Furnace creates the file) |
289
+ | `stock` | array | `[]` | Stock components the project composes |
290
+ | `overrides` | map | `{}` | Overrides of stock components, by tag (see below) |
291
+ | `custom` | map | `{}` | Custom components, by tag (see below) |
292
+ | `ftlBasePath` | path | `toolkit/locales/en-US/toolkit/global` | Engine directory localized components deploy their `.ftl` into |
293
+ | `typecheckJsconfig` | path or array | | `jsconfig.json` files whose chrome-module `paths` Furnace maintains |
294
+ | `typecheckTagMap` | path | | `.d.ts` file Furnace writes with the `HTMLElementTagNameMap` entries |
295
+ | `validationExceptions` | array | | Reviewed validation warnings: `{ "component", "check", "reason", "tag"?, "file"? }` (a tag or a file, not both) |
296
+ | `minComponents` | integer ≥ 1 | | Fewest components a full validation judges |
297
+ | `optInChecks` | array | | Checks that run only when listed: `icon-button-label` |
298
+ | `tokenFile` | path | `browser/themes/shared/<binaryName>-tokens.css` | Engine path of the design-token file |
299
+ | `tokenPrefix` | string | `--<binaryName>-` | Custom-property prefix of the project tokens |
300
+ | `tokenAllowlist` | array | | Custom properties from elsewhere that stylesheets may reference |
301
+ | `platformPrefixes` | array | `["--moz-"]` | Prefixes of platform-owned custom properties |
302
+ | `runtimeVariables` | array | | Runtime state channels set from script, accepted as references |
303
+ | `tokenHostDocuments` | array | | Documents that load the token file |
304
+ | `tokenSiblingSheets` | map | | Sheet glob to the sheets that load beside it |
305
+
306
+ A `custom.<tag>` entry:
307
+
308
+ | Key | Type | Meaning |
309
+ | ----------------- | ---------------------- | ---------------------------------------------------------------------------------------- |
310
+ | `description` | string, required | What the component is |
311
+ | `targetPath` | path, required | Engine directory the component deploys into |
312
+ | `register` | boolean, required | List the element in `customElements.js` |
313
+ | `localized` | boolean, required | The component uses Fluent strings |
314
+ | `kind` | `element` \| `library` | `library`: base classes and helpers with no element of its own (needs `register: false`) |
315
+ | `composes` | array | Components it renders in its template; known names, without cycles |
316
+ | `keyboardCovered` | boolean | Keyboard activation comes from a wrapped native element |
317
+ | `sharedFtl` | string | An existing feature Fluent file the component shares; needs `localized` |
318
+
319
+ An `overrides.<tag>` entry:
320
+
321
+ | Key | Type | Meaning |
322
+ | ------------- | -------------------- | --------------------------------------------- |
323
+ | `type` | `css-only` \| `full` | `css-only` deploys only stylesheets |
324
+ | `description` | string | Why it is overridden |
325
+ | `basePath` | path | Engine directory the stock component lives in |
326
+ | `baseVersion` | string | Firefox version the override was taken from |
327
+ | `baseCommit` | string | Commit it was taken from |
328
+
329
+ A name may appear once across `stock`, `overrides` and `custom`.
330
+
331
+ ## Host configuration
332
+
333
+ `~/.fireforge/host.json` (under `$FIREFORGE_HOME` when set) configures the host, not a project ([workspaces.md](workspaces.md#host-locks)):
334
+
335
+ | Key | Type | Default | Meaning |
336
+ | ---------------- | ----------- | ------- | --------------------------------------------------------------- |
337
+ | `buildSlots` | integer ≥ 1 | `1` | How many compiles may run at once on this host |
338
+ | `releaseSecrets` | string | | Absolute directory holding the secret files release builds read |
718
339
 
719
340
  ## Environment variables
720
341
 
721
- | Variable | Effect |
722
- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
723
- | `FIREFORGE_WAIT_LOCK` | Session-wide lock wait budget in seconds (1 to 86400). See above. |
724
- | `FIREFORGE_SESSION_ID` | Recorded as `sessionId` on every patch history log record this process writes. See `history` above. |
725
- | `FIREFORGE_LOG_KEEP` | Also write every `test`/`build` run log here, outside retention (a directory collects one file per run). See `run-logs.md`. |
726
- | `FIREFORGE_MAX_UNTRACKED_FILES` | Per-directory cap when expanding collapsed untracked directories in `status` (default 5000). A non-positive value warns and is ignored. |
727
- | `FIREFORGE_GIT_ADD_TIMEOUT_MS` | Timeout for the monolithic `git add -A` baseline pass (default 10 min). For slow or loaded filesystems. |
728
- | `FIREFORGE_GIT_ADD_CHUNK_TIMEOUT_MS` | Timeout for the chunked `git add -- <dir>` fallback (default 30 min). Paired with the above. |
729
-
730
- `CLAUDECODE` is read by mozbuild, not by FireForge. `fireforge test
731
- --full-output` unsets it for test dispatches only. See
732
- [`testing.md`](testing.md#output-verbosity).
342
+ | Variable | Meaning |
343
+ | --------------------- | --------------------------------------------------------------------------------------------------------- |
344
+ | `FIREFORGE_HOME` | Where host state lives instead of `~/.fireforge` |
345
+ | `FIREFORGE_WAIT_LOCK` | Default for `--wait-lock <seconds>`: how long a command waits for a lock or workspace (default two hours) |
346
+
347
+ FireForge sets `FIREFORGE_PROJECT_ROOT`, `FIREFORGE_OWNED_PATHS`, `FIREFORGE_CHECK_LINT_REPORT` and `FIREFORGE_ENGINE` for `check.extraSteps` ([quality.md](quality.md#extra-steps)). Gate validators get `FIREFORGE_PROJECT_ROOT` and `FIREFORGE_ENGINE` ([gate.md](gate.md#lanes)). Other `FIREFORGE_*` names are reserved for its own processes.