@hominis/fireforge 0.55.0 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1262) hide show
  1. package/CHANGELOG.md +233 -6
  2. package/README.md +51 -17
  3. package/dist/bin/fireforge.js +34 -129
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/check/check.js +394 -0
  6. package/dist/src/check/gate.js +448 -0
  7. package/dist/src/check/index.js +10 -0
  8. package/dist/src/check/record.js +155 -0
  9. package/dist/src/cli/command.js +286 -0
  10. package/dist/src/cli/output.js +96 -0
  11. package/dist/src/cli/program.js +231 -0
  12. package/dist/src/cli/stdio.js +59 -0
  13. package/dist/src/cli/version.js +99 -0
  14. package/dist/src/commands/bootstrap.js +17 -102
  15. package/dist/src/commands/build.js +34 -456
  16. package/dist/src/commands/check.js +44 -157
  17. package/dist/src/commands/config.js +50 -226
  18. package/dist/src/commands/discard.js +38 -215
  19. package/dist/src/commands/doctor.js +29 -456
  20. package/dist/src/commands/download.js +35 -499
  21. package/dist/src/commands/export.js +42 -431
  22. package/dist/src/commands/furnace.js +220 -0
  23. package/dist/src/commands/gate.js +127 -0
  24. package/dist/src/commands/import.js +44 -445
  25. package/dist/src/commands/index.js +86 -0
  26. package/dist/src/commands/lint.js +44 -546
  27. package/dist/src/commands/merge-driver.js +56 -0
  28. package/dist/src/commands/migrate.js +75 -0
  29. package/dist/src/commands/override.js +43 -0
  30. package/dist/src/commands/package.js +48 -77
  31. package/dist/src/commands/patch.js +221 -0
  32. package/dist/src/commands/re-export.js +55 -359
  33. package/dist/src/commands/rebase.js +69 -0
  34. package/dist/src/commands/register.js +62 -103
  35. package/dist/src/commands/reset.js +28 -91
  36. package/dist/src/commands/resolve.js +20 -167
  37. package/dist/src/commands/restore.js +19 -0
  38. package/dist/src/commands/run.js +60 -382
  39. package/dist/src/commands/setup.js +78 -90
  40. package/dist/src/commands/status.js +44 -413
  41. package/dist/src/commands/test.js +97 -423
  42. package/dist/src/commands/token.js +185 -228
  43. package/dist/src/commands/typecheck.js +59 -241
  44. package/dist/src/commands/verify.js +28 -334
  45. package/dist/src/commands/version.js +14 -0
  46. package/dist/src/commands/watch.js +20 -218
  47. package/dist/src/commands/wire.js +60 -349
  48. package/dist/src/commands/workspace.js +117 -0
  49. package/dist/src/config/edit.js +237 -0
  50. package/dist/src/config/index.js +15 -0
  51. package/dist/src/config/load.js +59 -0
  52. package/dist/src/config/previous.js +404 -0
  53. package/dist/src/config/schema/build.js +63 -0
  54. package/dist/src/config/schema/check.js +113 -0
  55. package/dist/src/config/schema/common.js +71 -0
  56. package/dist/src/config/schema/export-queue.js +36 -0
  57. package/dist/src/config/schema/firefox.js +69 -0
  58. package/dist/src/config/schema/gate.js +199 -0
  59. package/dist/src/config/schema/identity.js +55 -0
  60. package/dist/src/config/schema/index.js +45 -0
  61. package/dist/src/config/schema/lint.js +297 -0
  62. package/dist/src/config/schema/policy.js +111 -0
  63. package/dist/src/config/schema/source.js +90 -0
  64. package/dist/src/config/schema/test.js +17 -0
  65. package/dist/src/config/schema/toolchains.js +17 -0
  66. package/dist/src/config/schema/typecheck.js +29 -0
  67. package/dist/src/config/schema/wire.js +15 -0
  68. package/dist/src/diff/apply.js +129 -0
  69. package/dist/src/diff/index.js +16 -0
  70. package/dist/src/diff/model.js +267 -0
  71. package/dist/src/diff/query.js +65 -0
  72. package/dist/src/doctor/index.js +240 -0
  73. package/dist/src/engine/archive.js +396 -0
  74. package/dist/src/engine/audit.js +66 -0
  75. package/dist/src/engine/build.js +150 -0
  76. package/dist/src/engine/hostLocks.js +66 -0
  77. package/dist/src/engine/index.js +26 -0
  78. package/dist/src/engine/installManifests.js +147 -0
  79. package/dist/src/engine/mach.js +97 -0
  80. package/dist/src/engine/machHints.js +80 -0
  81. package/dist/src/engine/mozconfig.js +110 -0
  82. package/dist/src/engine/objdir.js +124 -0
  83. package/dist/src/engine/package.js +169 -0
  84. package/dist/src/engine/pin.js +12 -0
  85. package/dist/src/engine/pool.js +423 -0
  86. package/dist/src/engine/pristine.js +281 -0
  87. package/dist/src/engine/python.js +68 -0
  88. package/dist/src/engine/resourceGuard.js +582 -0
  89. package/dist/src/engine/run.js +259 -0
  90. package/dist/src/engine/smoke.js +204 -0
  91. package/dist/src/engine/staleness.js +229 -0
  92. package/dist/src/engine/watch.js +82 -0
  93. package/dist/src/engine/workspace.js +85 -0
  94. package/dist/src/furnace/config.js +360 -0
  95. package/dist/src/furnace/deploy.js +414 -0
  96. package/dist/src/furnace/diff.js +59 -0
  97. package/dist/src/furnace/edit.js +64 -0
  98. package/dist/src/furnace/fragments.js +53 -0
  99. package/dist/src/furnace/index.js +19 -0
  100. package/dist/src/furnace/operations.js +283 -0
  101. package/dist/src/furnace/registration.js +220 -0
  102. package/dist/src/furnace/scaffold.js +311 -0
  103. package/dist/src/furnace/typing.js +252 -0
  104. package/dist/src/furnace/validate.js +662 -0
  105. package/dist/src/git/apply.js +129 -0
  106. package/dist/src/git/diff.js +143 -0
  107. package/dist/src/git/index.js +33 -0
  108. package/dist/src/git/objects.js +201 -0
  109. package/dist/src/git/refs.js +85 -0
  110. package/dist/src/git/repo.js +222 -0
  111. package/dist/src/git/run.js +242 -0
  112. package/dist/src/git/status.js +156 -0
  113. package/dist/src/kernel/errors.js +123 -0
  114. package/dist/src/kernel/fs.js +515 -0
  115. package/dist/src/kernel/glob.js +63 -0
  116. package/dist/src/kernel/hash.js +28 -0
  117. package/dist/src/kernel/journal.js +524 -0
  118. package/dist/src/kernel/json-edit.js +198 -0
  119. package/dist/src/kernel/json.js +101 -0
  120. package/dist/src/kernel/lock.js +589 -0
  121. package/dist/src/kernel/log.js +154 -0
  122. package/dist/src/kernel/process/identity.js +313 -0
  123. package/dist/src/kernel/process/index.js +8 -0
  124. package/dist/src/kernel/process/listing.js +128 -0
  125. package/dist/src/kernel/process/spawn.js +430 -0
  126. package/dist/src/kernel/process/tree.js +301 -0
  127. package/dist/src/kernel/schema.js +308 -0
  128. package/dist/src/kernel/signals.js +171 -0
  129. package/dist/src/kernel/text.js +151 -0
  130. package/dist/src/kernel/time.js +83 -0
  131. package/dist/src/kernel/tty.js +84 -0
  132. package/dist/src/lint/cache.js +77 -0
  133. package/dist/src/lint/checkjs.js +400 -0
  134. package/dist/src/lint/index.js +3 -0
  135. package/dist/src/lint/input.js +100 -0
  136. package/dist/src/lint/report.js +107 -0
  137. package/dist/src/lint/rule.js +41 -0
  138. package/dist/src/lint/rules/css.js +308 -0
  139. package/dist/src/lint/rules/javascript.js +299 -0
  140. package/dist/src/lint/rules/jsdoc.js +249 -0
  141. package/dist/src/lint/rules/license.js +93 -0
  142. package/dist/src/lint/rules/policy.js +201 -0
  143. package/dist/src/lint/rules/registration.js +264 -0
  144. package/dist/src/lint/rules/size.js +299 -0
  145. package/dist/src/lint/run.js +126 -0
  146. package/dist/src/lint/shim.js +323 -0
  147. package/dist/src/lint/typescript.js +186 -0
  148. package/dist/src/lint/waivers.js +93 -0
  149. package/dist/src/mode/changes.js +264 -0
  150. package/dist/src/mode/diagnose.js +173 -0
  151. package/dist/src/mode/export.js +147 -0
  152. package/dist/src/mode/index.js +23 -0
  153. package/dist/src/mode/migrate.js +181 -0
  154. package/dist/src/mode/previousWaivers.js +206 -0
  155. package/dist/src/mode/pristine.js +61 -0
  156. package/dist/src/mode/rebase.js +197 -0
  157. package/dist/src/mode/report.js +157 -0
  158. package/dist/src/mode/setup.js +103 -0
  159. package/dist/src/mode/tracked.js +116 -0
  160. package/dist/src/mode/upgrade.js +281 -0
  161. package/dist/src/mode/watch.js +83 -0
  162. package/dist/src/mode/workspace.js +189 -0
  163. package/dist/src/mozbuild/index.js +6 -0
  164. package/dist/src/mozbuild/jar.js +366 -0
  165. package/dist/src/mozbuild/mozbuild.js +321 -0
  166. package/dist/src/mozbuild/paths.js +96 -0
  167. package/dist/src/mozbuild/references.js +39 -0
  168. package/dist/src/mozbuild/testManifest.js +343 -0
  169. package/dist/src/mozbuild/text.js +142 -0
  170. package/dist/src/project/changes.js +145 -0
  171. package/dist/src/project/checkout.js +66 -0
  172. package/dist/src/project/index.js +11 -0
  173. package/dist/src/project/license.js +119 -0
  174. package/dist/src/project/project.js +111 -0
  175. package/dist/src/project/state.js +85 -0
  176. package/dist/src/project/tracked.js +1 -0
  177. package/dist/src/queue/apply.js +270 -0
  178. package/dist/src/queue/attribute.js +159 -0
  179. package/dist/src/queue/baseline.js +409 -0
  180. package/dist/src/queue/capture.js +298 -0
  181. package/dist/src/queue/changes.js +234 -0
  182. package/dist/src/queue/index.js +50 -0
  183. package/dist/src/queue/manifest.js +341 -0
  184. package/dist/src/queue/operations.js +454 -0
  185. package/dist/src/queue/placement.js +220 -0
  186. package/dist/src/queue/queue.js +359 -0
  187. package/dist/src/queue/restore.js +103 -0
  188. package/dist/src/queue/session.js +685 -0
  189. package/dist/src/queue/status.js +137 -0
  190. package/dist/src/register/files.js +39 -0
  191. package/dist/src/register/index.js +8 -0
  192. package/dist/src/register/js.js +217 -0
  193. package/dist/src/register/register.js +359 -0
  194. package/dist/src/register/wire.js +146 -0
  195. package/dist/src/source/adopt.js +99 -0
  196. package/dist/src/source/changes.js +132 -0
  197. package/dist/src/source/edit.js +278 -0
  198. package/dist/src/source/export.js +70 -0
  199. package/dist/src/source/groups.js +131 -0
  200. package/dist/src/source/index.js +20 -0
  201. package/dist/src/source/materialize.js +382 -0
  202. package/dist/src/source/merge.js +255 -0
  203. package/dist/src/source/objects.js +102 -0
  204. package/dist/src/source/previous.js +166 -0
  205. package/dist/src/source/records.js +138 -0
  206. package/dist/src/source/refresh.js +264 -0
  207. package/dist/src/source/tree.js +337 -0
  208. package/dist/src/syntax/css.js +215 -0
  209. package/dist/src/syntax/fragments.js +63 -0
  210. package/dist/src/syntax/index.js +10 -0
  211. package/dist/src/syntax/js.js +270 -0
  212. package/dist/src/test/classify.js +826 -0
  213. package/dist/src/test/control.js +236 -0
  214. package/dist/src/test/host.js +266 -0
  215. package/dist/src/test/index.js +11 -0
  216. package/dist/src/test/plan.js +347 -0
  217. package/dist/src/test/rawLog.js +138 -0
  218. package/dist/src/test/run.js +404 -0
  219. package/dist/src/test/verdict.js +420 -0
  220. package/dist/src/test/xpcshell.js +143 -0
  221. package/dist/src/tokens/add.js +304 -0
  222. package/dist/src/tokens/coverage.js +65 -0
  223. package/dist/src/tokens/css.js +58 -0
  224. package/dist/src/tokens/index.js +12 -0
  225. package/dist/src/tokens/lint.js +96 -0
  226. package/dist/src/tokens/model.js +118 -0
  227. package/dist/src/tokens/settings.js +87 -0
  228. package/dist/src/tokens/siblings.js +104 -0
  229. package/dist/src/typecheck/explain.js +123 -0
  230. package/dist/src/typecheck/index.js +8 -0
  231. package/dist/src/typecheck/typecheck.js +332 -0
  232. package/docs/README.md +23 -28
  233. package/docs/authoring.md +97 -0
  234. package/docs/configuration.md +307 -766
  235. package/docs/exit-codes.md +76 -94
  236. package/docs/furnace.md +111 -221
  237. package/docs/gate.md +205 -0
  238. package/docs/getting-started.md +165 -0
  239. package/docs/machine-output.md +201 -290
  240. package/docs/migrating.md +261 -0
  241. package/docs/patch-workflow.md +159 -723
  242. package/docs/quality.md +220 -0
  243. package/docs/source-workflow.md +228 -0
  244. package/docs/testing.md +101 -719
  245. package/docs/workspaces.md +187 -0
  246. package/package.json +22 -30
  247. package/templates/configs/common.mozconfig +8 -2
  248. package/templates/configs/darwin.mozconfig +6 -7
  249. package/templates/configs/linux.mozconfig +5 -8
  250. package/templates/configs/win32.mozconfig +3 -9
  251. package/dist/bin/fireforge.d.ts +0 -9
  252. package/dist/src/cli-usage-error.d.ts +0 -46
  253. package/dist/src/cli-usage-error.js +0 -81
  254. package/dist/src/cli.d.ts +0 -41
  255. package/dist/src/cli.js +0 -380
  256. package/dist/src/commands/bootstrap-checks.d.ts +0 -16
  257. package/dist/src/commands/bootstrap-checks.js +0 -66
  258. package/dist/src/commands/bootstrap.d.ts +0 -10
  259. package/dist/src/commands/build-prelock.d.ts +0 -20
  260. package/dist/src/commands/build-prelock.js +0 -50
  261. package/dist/src/commands/build.d.ts +0 -13
  262. package/dist/src/commands/check-report.d.ts +0 -41
  263. package/dist/src/commands/check-report.js +0 -98
  264. package/dist/src/commands/check-run.d.ts +0 -44
  265. package/dist/src/commands/check-run.js +0 -125
  266. package/dist/src/commands/check-steps.d.ts +0 -75
  267. package/dist/src/commands/check-steps.js +0 -200
  268. package/dist/src/commands/check.d.ts +0 -32
  269. package/dist/src/commands/config.d.ts +0 -13
  270. package/dist/src/commands/declarations-report.d.ts +0 -49
  271. package/dist/src/commands/declarations-report.js +0 -83
  272. package/dist/src/commands/destructive-decision.d.ts +0 -19
  273. package/dist/src/commands/destructive-decision.js +0 -31
  274. package/dist/src/commands/discard.d.ts +0 -12
  275. package/dist/src/commands/doctor-check-core.d.ts +0 -110
  276. package/dist/src/commands/doctor-check-core.js +0 -24
  277. package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
  278. package/dist/src/commands/doctor-engine-eslint.js +0 -17
  279. package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
  280. package/dist/src/commands/doctor-external-toolchains.js +0 -56
  281. package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
  282. package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
  283. package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
  284. package/dist/src/commands/doctor-furnace-jar.js +0 -44
  285. package/dist/src/commands/doctor-furnace.d.ts +0 -8
  286. package/dist/src/commands/doctor-furnace.js +0 -514
  287. package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
  288. package/dist/src/commands/doctor-macos-sdk.js +0 -158
  289. package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
  290. package/dist/src/commands/doctor-orphaned-harness.js +0 -98
  291. package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
  292. package/dist/src/commands/doctor-patch-manifest.js +0 -156
  293. package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
  294. package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
  295. package/dist/src/commands/doctor-source-pin.d.ts +0 -29
  296. package/dist/src/commands/doctor-source-pin.js +0 -91
  297. package/dist/src/commands/doctor-working-tree.d.ts +0 -27
  298. package/dist/src/commands/doctor-working-tree.js +0 -89
  299. package/dist/src/commands/doctor.d.ts +0 -49
  300. package/dist/src/commands/download.d.ts +0 -11
  301. package/dist/src/commands/export-adopt-check.d.ts +0 -37
  302. package/dist/src/commands/export-adopt-check.js +0 -97
  303. package/dist/src/commands/export-all.d.ts +0 -11
  304. package/dist/src/commands/export-all.js +0 -361
  305. package/dist/src/commands/export-flow.d.ts +0 -124
  306. package/dist/src/commands/export-flow.js +0 -423
  307. package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
  308. package/dist/src/commands/export-placement-conflicts.js +0 -75
  309. package/dist/src/commands/export-placement-gate.d.ts +0 -42
  310. package/dist/src/commands/export-placement-gate.js +0 -107
  311. package/dist/src/commands/export-placement-policy.d.ts +0 -22
  312. package/dist/src/commands/export-placement-policy.js +0 -54
  313. package/dist/src/commands/export-shared.d.ts +0 -152
  314. package/dist/src/commands/export-shared.js +0 -396
  315. package/dist/src/commands/export-staged-registration.d.ts +0 -46
  316. package/dist/src/commands/export-staged-registration.js +0 -91
  317. package/dist/src/commands/export.d.ts +0 -13
  318. package/dist/src/commands/forward-import-remedy.d.ts +0 -31
  319. package/dist/src/commands/forward-import-remedy.js +0 -62
  320. package/dist/src/commands/furnace/apply.d.ts +0 -8
  321. package/dist/src/commands/furnace/apply.js +0 -327
  322. package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
  323. package/dist/src/commands/furnace/authoring-config.js +0 -19
  324. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
  325. package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
  326. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
  327. package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
  328. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
  329. package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
  330. package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
  331. package/dist/src/commands/furnace/chrome-doc.js +0 -365
  332. package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
  333. package/dist/src/commands/furnace/create-browser-test.js +0 -179
  334. package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
  335. package/dist/src/commands/furnace/create-dry-run.js +0 -107
  336. package/dist/src/commands/furnace/create-features.d.ts +0 -24
  337. package/dist/src/commands/furnace/create-features.js +0 -55
  338. package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
  339. package/dist/src/commands/furnace/create-mochikit.js +0 -75
  340. package/dist/src/commands/furnace/create-readback.d.ts +0 -22
  341. package/dist/src/commands/furnace/create-readback.js +0 -32
  342. package/dist/src/commands/furnace/create-templates.d.ts +0 -119
  343. package/dist/src/commands/furnace/create-templates.js +0 -283
  344. package/dist/src/commands/furnace/create-validation.d.ts +0 -6
  345. package/dist/src/commands/furnace/create-validation.js +0 -59
  346. package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
  347. package/dist/src/commands/furnace/create-xpcshell.js +0 -80
  348. package/dist/src/commands/furnace/create.d.ts +0 -24
  349. package/dist/src/commands/furnace/create.js +0 -407
  350. package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
  351. package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
  352. package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
  353. package/dist/src/commands/furnace/deploy-named.js +0 -107
  354. package/dist/src/commands/furnace/deploy.d.ts +0 -9
  355. package/dist/src/commands/furnace/deploy.js +0 -229
  356. package/dist/src/commands/furnace/diff.d.ts +0 -11
  357. package/dist/src/commands/furnace/diff.js +0 -238
  358. package/dist/src/commands/furnace/index.d.ts +0 -4
  359. package/dist/src/commands/furnace/index.js +0 -283
  360. package/dist/src/commands/furnace/init.d.ts +0 -11
  361. package/dist/src/commands/furnace/init.js +0 -287
  362. package/dist/src/commands/furnace/list.d.ts +0 -8
  363. package/dist/src/commands/furnace/list.js +0 -104
  364. package/dist/src/commands/furnace/override.d.ts +0 -16
  365. package/dist/src/commands/furnace/override.js +0 -454
  366. package/dist/src/commands/furnace/preview.d.ts +0 -19
  367. package/dist/src/commands/furnace/preview.js +0 -349
  368. package/dist/src/commands/furnace/refresh.d.ts +0 -10
  369. package/dist/src/commands/furnace/refresh.js +0 -303
  370. package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
  371. package/dist/src/commands/furnace/remove-mutations.js +0 -168
  372. package/dist/src/commands/furnace/remove-state.d.ts +0 -20
  373. package/dist/src/commands/furnace/remove-state.js +0 -60
  374. package/dist/src/commands/furnace/remove.d.ts +0 -8
  375. package/dist/src/commands/furnace/remove.js +0 -415
  376. package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
  377. package/dist/src/commands/furnace/rename-browser-test.js +0 -68
  378. package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
  379. package/dist/src/commands/furnace/rename-dry-run.js +0 -127
  380. package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
  381. package/dist/src/commands/furnace/rename-helpers.js +0 -85
  382. package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
  383. package/dist/src/commands/furnace/rename-registrations.js +0 -98
  384. package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
  385. package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
  386. package/dist/src/commands/furnace/rename.d.ts +0 -6
  387. package/dist/src/commands/furnace/rename.js +0 -400
  388. package/dist/src/commands/furnace/scan.d.ts +0 -14
  389. package/dist/src/commands/furnace/scan.js +0 -192
  390. package/dist/src/commands/furnace/status.d.ts +0 -7
  391. package/dist/src/commands/furnace/status.js +0 -209
  392. package/dist/src/commands/furnace/sync.d.ts +0 -12
  393. package/dist/src/commands/furnace/sync.js +0 -145
  394. package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
  395. package/dist/src/commands/furnace/test-file-name.js +0 -39
  396. package/dist/src/commands/furnace/validate-report.d.ts +0 -45
  397. package/dist/src/commands/furnace/validate-report.js +0 -91
  398. package/dist/src/commands/furnace/validate.d.ts +0 -8
  399. package/dist/src/commands/furnace/validate.js +0 -309
  400. package/dist/src/commands/furnace/validation-output.d.ts +0 -47
  401. package/dist/src/commands/furnace/validation-output.js +0 -161
  402. package/dist/src/commands/import.d.ts +0 -11
  403. package/dist/src/commands/lint-per-patch.d.ts +0 -10
  404. package/dist/src/commands/lint-per-patch.js +0 -428
  405. package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
  406. package/dist/src/commands/lint-per-run-checkjs.js +0 -102
  407. package/dist/src/commands/lint-report.d.ts +0 -25
  408. package/dist/src/commands/lint-report.js +0 -76
  409. package/dist/src/commands/lint.d.ts +0 -47
  410. package/dist/src/commands/manifest.d.ts +0 -38
  411. package/dist/src/commands/manifest.js +0 -68
  412. package/dist/src/commands/package.d.ts +0 -11
  413. package/dist/src/commands/park.d.ts +0 -22
  414. package/dist/src/commands/park.js +0 -232
  415. package/dist/src/commands/patch/body.d.ts +0 -29
  416. package/dist/src/commands/patch/body.js +0 -60
  417. package/dist/src/commands/patch/compact.d.ts +0 -28
  418. package/dist/src/commands/patch/compact.js +0 -208
  419. package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
  420. package/dist/src/commands/patch/delete-gap-notice.js +0 -48
  421. package/dist/src/commands/patch/delete.d.ts +0 -28
  422. package/dist/src/commands/patch/delete.js +0 -131
  423. package/dist/src/commands/patch/entry-projection.d.ts +0 -13
  424. package/dist/src/commands/patch/entry-projection.js +0 -24
  425. package/dist/src/commands/patch/index.d.ts +0 -16
  426. package/dist/src/commands/patch/index.js +0 -54
  427. package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
  428. package/dist/src/commands/patch/lint-ignore-from.js +0 -141
  429. package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
  430. package/dist/src/commands/patch/lint-ignore.js +0 -263
  431. package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
  432. package/dist/src/commands/patch/move-files-adopt.js +0 -65
  433. package/dist/src/commands/patch/move-files-create.d.ts +0 -19
  434. package/dist/src/commands/patch/move-files-create.js +0 -187
  435. package/dist/src/commands/patch/move-files-into.d.ts +0 -65
  436. package/dist/src/commands/patch/move-files-into.js +0 -325
  437. package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
  438. package/dist/src/commands/patch/move-files-retire.js +0 -91
  439. package/dist/src/commands/patch/move-files.d.ts +0 -28
  440. package/dist/src/commands/patch/move-files.js +0 -224
  441. package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
  442. package/dist/src/commands/patch/move-size-tier.js +0 -66
  443. package/dist/src/commands/patch/patch-context.d.ts +0 -40
  444. package/dist/src/commands/patch/patch-context.js +0 -51
  445. package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
  446. package/dist/src/commands/patch/removal-created-files.js +0 -83
  447. package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
  448. package/dist/src/commands/patch/removal-dependents.js +0 -133
  449. package/dist/src/commands/patch/rename.d.ts +0 -35
  450. package/dist/src/commands/patch/rename.js +0 -378
  451. package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
  452. package/dist/src/commands/patch/reorder-projection.js +0 -49
  453. package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
  454. package/dist/src/commands/patch/reorder-shift.js +0 -307
  455. package/dist/src/commands/patch/reorder.d.ts +0 -34
  456. package/dist/src/commands/patch/reorder.js +0 -375
  457. package/dist/src/commands/patch/reserve.d.ts +0 -33
  458. package/dist/src/commands/patch/reserve.js +0 -152
  459. package/dist/src/commands/patch/retire.d.ts +0 -34
  460. package/dist/src/commands/patch/retire.js +0 -133
  461. package/dist/src/commands/patch/split-plan.d.ts +0 -125
  462. package/dist/src/commands/patch/split-plan.js +0 -313
  463. package/dist/src/commands/patch/split-staged.d.ts +0 -108
  464. package/dist/src/commands/patch/split-staged.js +0 -202
  465. package/dist/src/commands/patch/split.d.ts +0 -43
  466. package/dist/src/commands/patch/split.js +0 -367
  467. package/dist/src/commands/patch/stage.d.ts +0 -34
  468. package/dist/src/commands/patch/stage.js +0 -153
  469. package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
  470. package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
  471. package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
  472. package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
  473. package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
  474. package/dist/src/commands/patch/staged-dependency-from.js +0 -114
  475. package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
  476. package/dist/src/commands/patch/staged-dependency-remove.js +0 -114
  477. package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -27
  478. package/dist/src/commands/patch/staged-dependency-validate.js +0 -78
  479. package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
  480. package/dist/src/commands/patch/staged-dependency.js +0 -251
  481. package/dist/src/commands/patch/tier.d.ts +0 -34
  482. package/dist/src/commands/patch/tier.js +0 -125
  483. package/dist/src/commands/patch-rename-map.d.ts +0 -30
  484. package/dist/src/commands/patch-rename-map.js +0 -54
  485. package/dist/src/commands/pending-resolution.d.ts +0 -15
  486. package/dist/src/commands/pending-resolution.js +0 -25
  487. package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
  488. package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
  489. package/dist/src/commands/re-export-adjacent.d.ts +0 -111
  490. package/dist/src/commands/re-export-adjacent.js +0 -285
  491. package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
  492. package/dist/src/commands/re-export-bulk-scan.js +0 -233
  493. package/dist/src/commands/re-export-drift.d.ts +0 -110
  494. package/dist/src/commands/re-export-drift.js +0 -358
  495. package/dist/src/commands/re-export-each.d.ts +0 -46
  496. package/dist/src/commands/re-export-each.js +0 -110
  497. package/dist/src/commands/re-export-files.d.ts +0 -15
  498. package/dist/src/commands/re-export-files.js +0 -307
  499. package/dist/src/commands/re-export-hunks.d.ts +0 -37
  500. package/dist/src/commands/re-export-hunks.js +0 -264
  501. package/dist/src/commands/re-export-lint.d.ts +0 -137
  502. package/dist/src/commands/re-export-lint.js +0 -303
  503. package/dist/src/commands/re-export-options.d.ts +0 -29
  504. package/dist/src/commands/re-export-options.js +0 -192
  505. package/dist/src/commands/re-export-preflight.d.ts +0 -23
  506. package/dist/src/commands/re-export-preflight.js +0 -159
  507. package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
  508. package/dist/src/commands/re-export-purity-scope.js +0 -137
  509. package/dist/src/commands/re-export-register.d.ts +0 -12
  510. package/dist/src/commands/re-export-register.js +0 -99
  511. package/dist/src/commands/re-export-removed.d.ts +0 -15
  512. package/dist/src/commands/re-export-removed.js +0 -94
  513. package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
  514. package/dist/src/commands/re-export-retired-declarations.js +0 -113
  515. package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
  516. package/dist/src/commands/re-export-scan-owner.js +0 -116
  517. package/dist/src/commands/re-export-scan.d.ts +0 -72
  518. package/dist/src/commands/re-export-scan.js +0 -265
  519. package/dist/src/commands/re-export-single.d.ts +0 -53
  520. package/dist/src/commands/re-export-single.js +0 -426
  521. package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
  522. package/dist/src/commands/re-export-stale-registrations.js +0 -106
  523. package/dist/src/commands/re-export-summary.d.ts +0 -44
  524. package/dist/src/commands/re-export-summary.js +0 -59
  525. package/dist/src/commands/re-export.d.ts +0 -8
  526. package/dist/src/commands/rebase/abort.d.ts +0 -7
  527. package/dist/src/commands/rebase/abort.js +0 -67
  528. package/dist/src/commands/rebase/confirm.d.ts +0 -42
  529. package/dist/src/commands/rebase/confirm.js +0 -36
  530. package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
  531. package/dist/src/commands/rebase/conflict-summary.js +0 -37
  532. package/dist/src/commands/rebase/continue.d.ts +0 -7
  533. package/dist/src/commands/rebase/continue.js +0 -119
  534. package/dist/src/commands/rebase/index.d.ts +0 -22
  535. package/dist/src/commands/rebase/index.js +0 -209
  536. package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
  537. package/dist/src/commands/rebase/patch-loop.js +0 -289
  538. package/dist/src/commands/rebase/summary.d.ts +0 -8
  539. package/dist/src/commands/rebase/summary.js +0 -47
  540. package/dist/src/commands/register.d.ts +0 -13
  541. package/dist/src/commands/reset.d.ts +0 -11
  542. package/dist/src/commands/resolve.d.ts +0 -36
  543. package/dist/src/commands/run.d.ts +0 -10
  544. package/dist/src/commands/setup-support.d.ts +0 -35
  545. package/dist/src/commands/setup-support.js +0 -386
  546. package/dist/src/commands/setup.d.ts +0 -11
  547. package/dist/src/commands/source.d.ts +0 -9
  548. package/dist/src/commands/source.js +0 -120
  549. package/dist/src/commands/status-check.d.ts +0 -87
  550. package/dist/src/commands/status-check.js +0 -161
  551. package/dist/src/commands/status-json.d.ts +0 -45
  552. package/dist/src/commands/status-json.js +0 -97
  553. package/dist/src/commands/status-output.d.ts +0 -23
  554. package/dist/src/commands/status-output.js +0 -231
  555. package/dist/src/commands/status-ownership.d.ts +0 -54
  556. package/dist/src/commands/status-ownership.js +0 -59
  557. package/dist/src/commands/status-scope.d.ts +0 -37
  558. package/dist/src/commands/status-scope.js +0 -54
  559. package/dist/src/commands/status.d.ts +0 -11
  560. package/dist/src/commands/test-appdir.d.ts +0 -6
  561. package/dist/src/commands/test-appdir.js +0 -29
  562. package/dist/src/commands/test-browser-preflight.d.ts +0 -28
  563. package/dist/src/commands/test-browser-preflight.js +0 -197
  564. package/dist/src/commands/test-build-furnace.d.ts +0 -21
  565. package/dist/src/commands/test-build-furnace.js +0 -53
  566. package/dist/src/commands/test-build-phase.d.ts +0 -34
  567. package/dist/src/commands/test-build-phase.js +0 -291
  568. package/dist/src/commands/test-checkjs.d.ts +0 -3
  569. package/dist/src/commands/test-checkjs.js +0 -35
  570. package/dist/src/commands/test-control-restore.d.ts +0 -40
  571. package/dist/src/commands/test-control-restore.js +0 -86
  572. package/dist/src/commands/test-diagnose.d.ts +0 -23
  573. package/dist/src/commands/test-diagnose.js +0 -317
  574. package/dist/src/commands/test-dispatch.d.ts +0 -39
  575. package/dist/src/commands/test-dispatch.js +0 -281
  576. package/dist/src/commands/test-furnace-reach.d.ts +0 -37
  577. package/dist/src/commands/test-furnace-reach.js +0 -132
  578. package/dist/src/commands/test-harness-env.d.ts +0 -23
  579. package/dist/src/commands/test-harness-env.js +0 -81
  580. package/dist/src/commands/test-harness-teardown.d.ts +0 -62
  581. package/dist/src/commands/test-harness-teardown.js +0 -128
  582. package/dist/src/commands/test-modes.d.ts +0 -57
  583. package/dist/src/commands/test-modes.js +0 -158
  584. package/dist/src/commands/test-multi-verdict.d.ts +0 -61
  585. package/dist/src/commands/test-multi-verdict.js +0 -112
  586. package/dist/src/commands/test-orchestrate.d.ts +0 -70
  587. package/dist/src/commands/test-orchestrate.js +0 -277
  588. package/dist/src/commands/test-perf-scope.d.ts +0 -50
  589. package/dist/src/commands/test-perf-scope.js +0 -138
  590. package/dist/src/commands/test-prelock.d.ts +0 -61
  591. package/dist/src/commands/test-prelock.js +0 -301
  592. package/dist/src/commands/test-register.d.ts +0 -4
  593. package/dist/src/commands/test-register.js +0 -181
  594. package/dist/src/commands/test-results.d.ts +0 -71
  595. package/dist/src/commands/test-results.js +0 -79
  596. package/dist/src/commands/test-run.d.ts +0 -89
  597. package/dist/src/commands/test-run.js +0 -251
  598. package/dist/src/commands/test-shards.d.ts +0 -114
  599. package/dist/src/commands/test-shards.js +0 -272
  600. package/dist/src/commands/test-stale-gate.d.ts +0 -56
  601. package/dist/src/commands/test-stale-gate.js +0 -208
  602. package/dist/src/commands/test-verdict.d.ts +0 -102
  603. package/dist/src/commands/test-verdict.js +0 -176
  604. package/dist/src/commands/test.d.ts +0 -22
  605. package/dist/src/commands/token-coverage.d.ts +0 -5
  606. package/dist/src/commands/token-coverage.js +0 -170
  607. package/dist/src/commands/token-lint.d.ts +0 -14
  608. package/dist/src/commands/token-lint.js +0 -151
  609. package/dist/src/commands/token-list.d.ts +0 -26
  610. package/dist/src/commands/token-list.js +0 -153
  611. package/dist/src/commands/token.d.ts +0 -14
  612. package/dist/src/commands/tree.d.ts +0 -19
  613. package/dist/src/commands/tree.js +0 -341
  614. package/dist/src/commands/typecheck-explain.d.ts +0 -13
  615. package/dist/src/commands/typecheck-explain.js +0 -100
  616. package/dist/src/commands/typecheck.d.ts +0 -61
  617. package/dist/src/commands/verify-scope.d.ts +0 -28
  618. package/dist/src/commands/verify-scope.js +0 -67
  619. package/dist/src/commands/verify.d.ts +0 -58
  620. package/dist/src/commands/watch.d.ts +0 -9
  621. package/dist/src/commands/wire.d.ts +0 -13
  622. package/dist/src/core/ast-utils.d.ts +0 -73
  623. package/dist/src/core/ast-utils.js +0 -105
  624. package/dist/src/core/brand-validation.d.ts +0 -7
  625. package/dist/src/core/brand-validation.js +0 -14
  626. package/dist/src/core/branding.d.ts +0 -86
  627. package/dist/src/core/branding.js +0 -371
  628. package/dist/src/core/browser-wire.d.ts +0 -48
  629. package/dist/src/core/browser-wire.js +0 -133
  630. package/dist/src/core/build-audit-platform.d.ts +0 -67
  631. package/dist/src/core/build-audit-platform.js +0 -373
  632. package/dist/src/core/build-audit-registration.d.ts +0 -80
  633. package/dist/src/core/build-audit-registration.js +0 -181
  634. package/dist/src/core/build-audit-resolve.d.ts +0 -78
  635. package/dist/src/core/build-audit-resolve.js +0 -240
  636. package/dist/src/core/build-audit-skip.d.ts +0 -57
  637. package/dist/src/core/build-audit-skip.js +0 -112
  638. package/dist/src/core/build-audit-transforms.d.ts +0 -23
  639. package/dist/src/core/build-audit-transforms.js +0 -92
  640. package/dist/src/core/build-audit.d.ts +0 -93
  641. package/dist/src/core/build-audit.js +0 -633
  642. package/dist/src/core/build-baseline-types.d.ts +0 -225
  643. package/dist/src/core/build-baseline-types.js +0 -10
  644. package/dist/src/core/build-baseline-validate.d.ts +0 -32
  645. package/dist/src/core/build-baseline-validate.js +0 -173
  646. package/dist/src/core/build-baseline.d.ts +0 -103
  647. package/dist/src/core/build-baseline.js +0 -261
  648. package/dist/src/core/build-jar-escalation.d.ts +0 -61
  649. package/dist/src/core/build-jar-escalation.js +0 -125
  650. package/dist/src/core/build-overwrite-guard.d.ts +0 -92
  651. package/dist/src/core/build-overwrite-guard.js +0 -235
  652. package/dist/src/core/build-prepare.d.ts +0 -83
  653. package/dist/src/core/build-prepare.js +0 -414
  654. package/dist/src/core/build-run-record.d.ts +0 -74
  655. package/dist/src/core/build-run-record.js +0 -136
  656. package/dist/src/core/checkjs-support-heads.d.ts +0 -41
  657. package/dist/src/core/checkjs-support-heads.js +0 -104
  658. package/dist/src/core/component-source-guard.d.ts +0 -20
  659. package/dist/src/core/component-source-guard.js +0 -68
  660. package/dist/src/core/config-mutate.d.ts +0 -16
  661. package/dist/src/core/config-mutate.js +0 -76
  662. package/dist/src/core/config-paths.d.ts +0 -16
  663. package/dist/src/core/config-paths.js +0 -106
  664. package/dist/src/core/config-state.d.ts +0 -16
  665. package/dist/src/core/config-state.js +0 -141
  666. package/dist/src/core/config-validate-build-audit.d.ts +0 -8
  667. package/dist/src/core/config-validate-build-audit.js +0 -80
  668. package/dist/src/core/config-validate-check.d.ts +0 -8
  669. package/dist/src/core/config-validate-check.js +0 -219
  670. package/dist/src/core/config-validate-file-size.d.ts +0 -15
  671. package/dist/src/core/config-validate-file-size.js +0 -154
  672. package/dist/src/core/config-validate-history.d.ts +0 -11
  673. package/dist/src/core/config-validate-history.js +0 -38
  674. package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
  675. package/dist/src/core/config-validate-patch-policy.js +0 -284
  676. package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
  677. package/dist/src/core/config-validate-test-toolchains.js +0 -133
  678. package/dist/src/core/config-validate-token-scales.d.ts +0 -9
  679. package/dist/src/core/config-validate-token-scales.js +0 -125
  680. package/dist/src/core/config-validate.d.ts +0 -11
  681. package/dist/src/core/config-validate.js +0 -509
  682. package/dist/src/core/config.d.ts +0 -92
  683. package/dist/src/core/config.js +0 -169
  684. package/dist/src/core/coverage-dispatch.d.ts +0 -24
  685. package/dist/src/core/coverage-dispatch.js +0 -44
  686. package/dist/src/core/coverage-extend.d.ts +0 -89
  687. package/dist/src/core/coverage-extend.js +0 -239
  688. package/dist/src/core/coverage-records.d.ts +0 -107
  689. package/dist/src/core/coverage-records.js +0 -383
  690. package/dist/src/core/destructive.d.ts +0 -144
  691. package/dist/src/core/destructive.js +0 -182
  692. package/dist/src/core/dev-profile.d.ts +0 -28
  693. package/dist/src/core/dev-profile.js +0 -58
  694. package/dist/src/core/diff-hunks.d.ts +0 -73
  695. package/dist/src/core/diff-hunks.js +0 -286
  696. package/dist/src/core/discard-baseline.d.ts +0 -60
  697. package/dist/src/core/discard-baseline.js +0 -247
  698. package/dist/src/core/display-state.d.ts +0 -50
  699. package/dist/src/core/display-state.js +0 -87
  700. package/dist/src/core/engine-changes.d.ts +0 -40
  701. package/dist/src/core/engine-changes.js +0 -95
  702. package/dist/src/core/engine-precondition.d.ts +0 -42
  703. package/dist/src/core/engine-precondition.js +0 -60
  704. package/dist/src/core/engine-session-lock.d.ts +0 -119
  705. package/dist/src/core/engine-session-lock.js +0 -374
  706. package/dist/src/core/engine-write-boundary.d.ts +0 -5
  707. package/dist/src/core/engine-write-boundary.js +0 -41
  708. package/dist/src/core/export-moved-code-shape.d.ts +0 -98
  709. package/dist/src/core/export-moved-code-shape.js +0 -220
  710. package/dist/src/core/file-lock-owner.d.ts +0 -103
  711. package/dist/src/core/file-lock-owner.js +0 -259
  712. package/dist/src/core/file-lock-queue.d.ts +0 -67
  713. package/dist/src/core/file-lock-queue.js +0 -219
  714. package/dist/src/core/file-lock-shared.d.ts +0 -57
  715. package/dist/src/core/file-lock-shared.js +0 -117
  716. package/dist/src/core/file-lock.d.ts +0 -143
  717. package/dist/src/core/file-lock.js +0 -531
  718. package/dist/src/core/firefox-archive.d.ts +0 -45
  719. package/dist/src/core/firefox-archive.js +0 -96
  720. package/dist/src/core/firefox-cache.d.ts +0 -30
  721. package/dist/src/core/firefox-cache.js +0 -248
  722. package/dist/src/core/firefox-download.d.ts +0 -30
  723. package/dist/src/core/firefox-download.js +0 -152
  724. package/dist/src/core/firefox-extract.d.ts +0 -42
  725. package/dist/src/core/firefox-extract.js +0 -248
  726. package/dist/src/core/firefox-ignorefile.d.ts +0 -17
  727. package/dist/src/core/firefox-ignorefile.js +0 -30
  728. package/dist/src/core/firefox.d.ts +0 -66
  729. package/dist/src/core/firefox.js +0 -121
  730. package/dist/src/core/forward-registrations.d.ts +0 -33
  731. package/dist/src/core/forward-registrations.js +0 -16
  732. package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
  733. package/dist/src/core/furnace-apply-dry-run.js +0 -99
  734. package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
  735. package/dist/src/core/furnace-apply-ftl.js +0 -210
  736. package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
  737. package/dist/src/core/furnace-apply-helpers.js +0 -436
  738. package/dist/src/core/furnace-apply-output.d.ts +0 -36
  739. package/dist/src/core/furnace-apply-output.js +0 -111
  740. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -67
  741. package/dist/src/core/furnace-apply-overwrite-warn.js +0 -131
  742. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
  743. package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
  744. package/dist/src/core/furnace-apply.d.ts +0 -49
  745. package/dist/src/core/furnace-apply.js +0 -465
  746. package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
  747. package/dist/src/core/furnace-checksum-utils.js +0 -54
  748. package/dist/src/core/furnace-composed-source.d.ts +0 -76
  749. package/dist/src/core/furnace-composed-source.js +0 -167
  750. package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
  751. package/dist/src/core/furnace-config-array-utils.js +0 -26
  752. package/dist/src/core/furnace-config-custom.d.ts +0 -15
  753. package/dist/src/core/furnace-config-custom.js +0 -73
  754. package/dist/src/core/furnace-config-order.d.ts +0 -8
  755. package/dist/src/core/furnace-config-order.js +0 -90
  756. package/dist/src/core/furnace-config-tokens.d.ts +0 -17
  757. package/dist/src/core/furnace-config-tokens.js +0 -42
  758. package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
  759. package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
  760. package/dist/src/core/furnace-config-validate.d.ts +0 -32
  761. package/dist/src/core/furnace-config-validate.js +0 -167
  762. package/dist/src/core/furnace-config.d.ts +0 -139
  763. package/dist/src/core/furnace-config.js +0 -511
  764. package/dist/src/core/furnace-constants.d.ts +0 -81
  765. package/dist/src/core/furnace-constants.js +0 -125
  766. package/dist/src/core/furnace-css-fragments.d.ts +0 -96
  767. package/dist/src/core/furnace-css-fragments.js +0 -279
  768. package/dist/src/core/furnace-deploy-owner.d.ts +0 -29
  769. package/dist/src/core/furnace-deploy-owner.js +0 -116
  770. package/dist/src/core/furnace-dir-entry.d.ts +0 -20
  771. package/dist/src/core/furnace-dir-entry.js +0 -21
  772. package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
  773. package/dist/src/core/furnace-fragment-includers.js +0 -122
  774. package/dist/src/core/furnace-graph-utils.d.ts +0 -11
  775. package/dist/src/core/furnace-graph-utils.js +0 -93
  776. package/dist/src/core/furnace-jsconfig.d.ts +0 -87
  777. package/dist/src/core/furnace-jsconfig.js +0 -248
  778. package/dist/src/core/furnace-marker.d.ts +0 -15
  779. package/dist/src/core/furnace-marker.js +0 -21
  780. package/dist/src/core/furnace-operation.d.ts +0 -195
  781. package/dist/src/core/furnace-operation.js +0 -444
  782. package/dist/src/core/furnace-precondition.d.ts +0 -61
  783. package/dist/src/core/furnace-precondition.js +0 -67
  784. package/dist/src/core/furnace-refresh.d.ts +0 -28
  785. package/dist/src/core/furnace-refresh.js +0 -125
  786. package/dist/src/core/furnace-registration-ast.d.ts +0 -53
  787. package/dist/src/core/furnace-registration-ast.js +0 -402
  788. package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
  789. package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
  790. package/dist/src/core/furnace-registration-remove.d.ts +0 -56
  791. package/dist/src/core/furnace-registration-remove.js +0 -260
  792. package/dist/src/core/furnace-registration-rename.d.ts +0 -26
  793. package/dist/src/core/furnace-registration-rename.js +0 -77
  794. package/dist/src/core/furnace-registration-validate.d.ts +0 -53
  795. package/dist/src/core/furnace-registration-validate.js +0 -110
  796. package/dist/src/core/furnace-registration.d.ts +0 -112
  797. package/dist/src/core/furnace-registration.js +0 -348
  798. package/dist/src/core/furnace-rollback.d.ts +0 -48
  799. package/dist/src/core/furnace-rollback.js +0 -170
  800. package/dist/src/core/furnace-scanner.d.ts +0 -47
  801. package/dist/src/core/furnace-scanner.js +0 -236
  802. package/dist/src/core/furnace-stale-export.d.ts +0 -60
  803. package/dist/src/core/furnace-stale-export.js +0 -125
  804. package/dist/src/core/furnace-staleness.d.ts +0 -24
  805. package/dist/src/core/furnace-staleness.js +0 -67
  806. package/dist/src/core/furnace-state-persist.d.ts +0 -68
  807. package/dist/src/core/furnace-state-persist.js +0 -116
  808. package/dist/src/core/furnace-step-errors.d.ts +0 -23
  809. package/dist/src/core/furnace-step-errors.js +0 -25
  810. package/dist/src/core/furnace-stories.d.ts +0 -37
  811. package/dist/src/core/furnace-stories.js +0 -186
  812. package/dist/src/core/furnace-tag-map.d.ts +0 -47
  813. package/dist/src/core/furnace-tag-map.js +0 -182
  814. package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
  815. package/dist/src/core/furnace-validate-accessibility.js +0 -417
  816. package/dist/src/core/furnace-validate-checks.d.ts +0 -4
  817. package/dist/src/core/furnace-validate-checks.js +0 -6
  818. package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
  819. package/dist/src/core/furnace-validate-compatibility.js +0 -295
  820. package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
  821. package/dist/src/core/furnace-validate-exceptions.js +0 -98
  822. package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
  823. package/dist/src/core/furnace-validate-helpers.js +0 -4
  824. package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
  825. package/dist/src/core/furnace-validate-icon-button.js +0 -78
  826. package/dist/src/core/furnace-validate-registration.d.ts +0 -67
  827. package/dist/src/core/furnace-validate-registration.js +0 -487
  828. package/dist/src/core/furnace-validate-structure.d.ts +0 -22
  829. package/dist/src/core/furnace-validate-structure.js +0 -122
  830. package/dist/src/core/furnace-validate.d.ts +0 -41
  831. package/dist/src/core/furnace-validate.js +0 -331
  832. package/dist/src/core/furnace-version-drift.d.ts +0 -57
  833. package/dist/src/core/furnace-version-drift.js +0 -102
  834. package/dist/src/core/gecko-dom-types.d.ts +0 -2
  835. package/dist/src/core/gecko-dom-types.js +0 -17
  836. package/dist/src/core/git-base.d.ts +0 -101
  837. package/dist/src/core/git-base.js +0 -162
  838. package/dist/src/core/git-diff-new-file.d.ts +0 -40
  839. package/dist/src/core/git-diff-new-file.js +0 -118
  840. package/dist/src/core/git-diff.d.ts +0 -82
  841. package/dist/src/core/git-diff.js +0 -539
  842. package/dist/src/core/git-file-ops.d.ts +0 -108
  843. package/dist/src/core/git-file-ops.js +0 -280
  844. package/dist/src/core/git-readonly-index.d.ts +0 -91
  845. package/dist/src/core/git-readonly-index.js +0 -177
  846. package/dist/src/core/git-status.d.ts +0 -84
  847. package/dist/src/core/git-status.js +0 -208
  848. package/dist/src/core/git.d.ts +0 -114
  849. package/dist/src/core/git.js +0 -540
  850. package/dist/src/core/harness-helper-pids.d.ts +0 -98
  851. package/dist/src/core/harness-helper-pids.js +0 -240
  852. package/dist/src/core/harness-orphans.d.ts +0 -118
  853. package/dist/src/core/harness-orphans.js +0 -268
  854. package/dist/src/core/harness-port-fallback.d.ts +0 -60
  855. package/dist/src/core/harness-port-fallback.js +0 -96
  856. package/dist/src/core/harness-port-reservation.d.ts +0 -60
  857. package/dist/src/core/harness-port-reservation.js +0 -122
  858. package/dist/src/core/history-log-file.d.ts +0 -61
  859. package/dist/src/core/history-log-file.js +0 -164
  860. package/dist/src/core/history-log.d.ts +0 -20
  861. package/dist/src/core/history-log.js +0 -30
  862. package/dist/src/core/json-preserving-edit.d.ts +0 -22
  863. package/dist/src/core/json-preserving-edit.js +0 -199
  864. package/dist/src/core/launchable-build.d.ts +0 -39
  865. package/dist/src/core/launchable-build.js +0 -85
  866. package/dist/src/core/license-headers.d.ts +0 -103
  867. package/dist/src/core/license-headers.js +0 -328
  868. package/dist/src/core/line-prefixer.d.ts +0 -18
  869. package/dist/src/core/line-prefixer.js +0 -34
  870. package/dist/src/core/lit-template-regions.d.ts +0 -4
  871. package/dist/src/core/lit-template-regions.js +0 -50
  872. package/dist/src/core/mach-build-artifacts.d.ts +0 -176
  873. package/dist/src/core/mach-build-artifacts.js +0 -436
  874. package/dist/src/core/mach-error-hints.d.ts +0 -24
  875. package/dist/src/core/mach-error-hints.js +0 -135
  876. package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
  877. package/dist/src/core/mach-known-noise-filter.js +0 -257
  878. package/dist/src/core/mach-mozconfig.d.ts +0 -57
  879. package/dist/src/core/mach-mozconfig.js +0 -166
  880. package/dist/src/core/mach-python.d.ts +0 -19
  881. package/dist/src/core/mach-python.js +0 -131
  882. package/dist/src/core/mach-resource-shim.d.ts +0 -107
  883. package/dist/src/core/mach-resource-shim.js +0 -640
  884. package/dist/src/core/mach.d.ts +0 -284
  885. package/dist/src/core/mach.js +0 -445
  886. package/dist/src/core/marionette-port.d.ts +0 -153
  887. package/dist/src/core/marionette-port.js +0 -474
  888. package/dist/src/core/marionette-preflight.d.ts +0 -58
  889. package/dist/src/core/marionette-preflight.js +0 -332
  890. package/dist/src/core/markdown-table.d.ts +0 -104
  891. package/dist/src/core/markdown-table.js +0 -265
  892. package/dist/src/core/mochitest-server-port.d.ts +0 -81
  893. package/dist/src/core/mochitest-server-port.js +0 -175
  894. package/dist/src/core/module-resolution-preflight.d.ts +0 -65
  895. package/dist/src/core/module-resolution-preflight.js +0 -171
  896. package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
  897. package/dist/src/core/moz-manifest-helpers.js +0 -163
  898. package/dist/src/core/moz-manifest-register.d.ts +0 -19
  899. package/dist/src/core/moz-manifest-register.js +0 -51
  900. package/dist/src/core/moz-manifest-rules.d.ts +0 -58
  901. package/dist/src/core/moz-manifest-rules.js +0 -264
  902. package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
  903. package/dist/src/core/moz-manifest-tokenizers.js +0 -108
  904. package/dist/src/core/negative-control-compiled.d.ts +0 -46
  905. package/dist/src/core/negative-control-compiled.js +0 -109
  906. package/dist/src/core/negative-control-diff.d.ts +0 -51
  907. package/dist/src/core/negative-control-diff.js +0 -167
  908. package/dist/src/core/negative-control.d.ts +0 -150
  909. package/dist/src/core/negative-control.js +0 -399
  910. package/dist/src/core/objdir-install-manifests.d.ts +0 -73
  911. package/dist/src/core/objdir-install-manifests.js +0 -226
  912. package/dist/src/core/objdir-maintenance.d.ts +0 -10
  913. package/dist/src/core/objdir-maintenance.js +0 -167
  914. package/dist/src/core/ownership-table.d.ts +0 -53
  915. package/dist/src/core/ownership-table.js +0 -159
  916. package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
  917. package/dist/src/core/parent-exit-watchdog.js +0 -69
  918. package/dist/src/core/park-store.d.ts +0 -63
  919. package/dist/src/core/park-store.js +0 -216
  920. package/dist/src/core/parser-fallback.d.ts +0 -50
  921. package/dist/src/core/parser-fallback.js +0 -61
  922. package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
  923. package/dist/src/core/patch-apply-fuzz.js +0 -125
  924. package/dist/src/core/patch-apply.d.ts +0 -88
  925. package/dist/src/core/patch-apply.js +0 -435
  926. package/dist/src/core/patch-export-coverage.d.ts +0 -49
  927. package/dist/src/core/patch-export-coverage.js +0 -73
  928. package/dist/src/core/patch-export-metadata.d.ts +0 -46
  929. package/dist/src/core/patch-export-metadata.js +0 -47
  930. package/dist/src/core/patch-export-update.d.ts +0 -55
  931. package/dist/src/core/patch-export-update.js +0 -95
  932. package/dist/src/core/patch-export.d.ts +0 -175
  933. package/dist/src/core/patch-export.js +0 -312
  934. package/dist/src/core/patch-files.d.ts +0 -17
  935. package/dist/src/core/patch-files.js +0 -59
  936. package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
  937. package/dist/src/core/patch-identifier-suggest.js +0 -135
  938. package/dist/src/core/patch-lint-binary.d.ts +0 -45
  939. package/dist/src/core/patch-lint-binary.js +0 -39
  940. package/dist/src/core/patch-lint-cache-checkjs.d.ts +0 -45
  941. package/dist/src/core/patch-lint-cache-checkjs.js +0 -195
  942. package/dist/src/core/patch-lint-cache.d.ts +0 -79
  943. package/dist/src/core/patch-lint-cache.js +0 -247
  944. package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -57
  945. package/dist/src/core/patch-lint-checkjs-any-import.js +0 -91
  946. package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
  947. package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
  948. package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
  949. package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
  950. package/dist/src/core/patch-lint-checkjs-resolve.d.ts +0 -31
  951. package/dist/src/core/patch-lint-checkjs-resolve.js +0 -86
  952. package/dist/src/core/patch-lint-checkjs.d.ts +0 -182
  953. package/dist/src/core/patch-lint-checkjs.js +0 -563
  954. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
  955. package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
  956. package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
  957. package/dist/src/core/patch-lint-code-lines.js +0 -105
  958. package/dist/src/core/patch-lint-creators.d.ts +0 -26
  959. package/dist/src/core/patch-lint-creators.js +0 -45
  960. package/dist/src/core/patch-lint-cross.d.ts +0 -232
  961. package/dist/src/core/patch-lint-cross.js +0 -590
  962. package/dist/src/core/patch-lint-css.d.ts +0 -27
  963. package/dist/src/core/patch-lint-css.js +0 -228
  964. package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
  965. package/dist/src/core/patch-lint-diff-tag.js +0 -105
  966. package/dist/src/core/patch-lint-diff.d.ts +0 -42
  967. package/dist/src/core/patch-lint-diff.js +0 -100
  968. package/dist/src/core/patch-lint-file-size.d.ts +0 -57
  969. package/dist/src/core/patch-lint-file-size.js +0 -62
  970. package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
  971. package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
  972. package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
  973. package/dist/src/core/patch-lint-forward-registration.js +0 -266
  974. package/dist/src/core/patch-lint-ignore.d.ts +0 -196
  975. package/dist/src/core/patch-lint-ignore.js +0 -429
  976. package/dist/src/core/patch-lint-imports.d.ts +0 -9
  977. package/dist/src/core/patch-lint-imports.js +0 -90
  978. package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
  979. package/dist/src/core/patch-lint-jsdoc.js +0 -471
  980. package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
  981. package/dist/src/core/patch-lint-module-registration.js +0 -97
  982. package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
  983. package/dist/src/core/patch-lint-mozbuild.js +0 -192
  984. package/dist/src/core/patch-lint-observer.d.ts +0 -37
  985. package/dist/src/core/patch-lint-observer.js +0 -167
  986. package/dist/src/core/patch-lint-ownership.d.ts +0 -74
  987. package/dist/src/core/patch-lint-ownership.js +0 -125
  988. package/dist/src/core/patch-lint-prettier.d.ts +0 -34
  989. package/dist/src/core/patch-lint-prettier.js +0 -124
  990. package/dist/src/core/patch-lint-projection.d.ts +0 -25
  991. package/dist/src/core/patch-lint-projection.js +0 -43
  992. package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
  993. package/dist/src/core/patch-lint-queue-types.js +0 -12
  994. package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
  995. package/dist/src/core/patch-lint-size-thresholds.js +0 -110
  996. package/dist/src/core/patch-lint-size.d.ts +0 -117
  997. package/dist/src/core/patch-lint-size.js +0 -331
  998. package/dist/src/core/patch-lint-staged-registration.d.ts +0 -98
  999. package/dist/src/core/patch-lint-staged-registration.js +0 -128
  1000. package/dist/src/core/patch-lint-token-scale.d.ts +0 -65
  1001. package/dist/src/core/patch-lint-token-scale.js +0 -304
  1002. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
  1003. package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
  1004. package/dist/src/core/patch-lint.d.ts +0 -206
  1005. package/dist/src/core/patch-lint.js +0 -533
  1006. package/dist/src/core/patch-lock.d.ts +0 -40
  1007. package/dist/src/core/patch-lock.js +0 -129
  1008. package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
  1009. package/dist/src/core/patch-manifest-consistency.js +0 -256
  1010. package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
  1011. package/dist/src/core/patch-manifest-files-affected.js +0 -77
  1012. package/dist/src/core/patch-manifest-io.d.ts +0 -199
  1013. package/dist/src/core/patch-manifest-io.js +0 -556
  1014. package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
  1015. package/dist/src/core/patch-manifest-key-order.js +0 -60
  1016. package/dist/src/core/patch-manifest-query.d.ts +0 -55
  1017. package/dist/src/core/patch-manifest-query.js +0 -139
  1018. package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
  1019. package/dist/src/core/patch-manifest-resolve.js +0 -35
  1020. package/dist/src/core/patch-manifest-stage.d.ts +0 -46
  1021. package/dist/src/core/patch-manifest-stage.js +0 -96
  1022. package/dist/src/core/patch-manifest-validate.d.ts +0 -20
  1023. package/dist/src/core/patch-manifest-validate.js +0 -240
  1024. package/dist/src/core/patch-manifest.d.ts +0 -12
  1025. package/dist/src/core/patch-manifest.js +0 -13
  1026. package/dist/src/core/patch-order-legal.d.ts +0 -26
  1027. package/dist/src/core/patch-order-legal.js +0 -88
  1028. package/dist/src/core/patch-parse.d.ts +0 -176
  1029. package/dist/src/core/patch-parse.js +0 -416
  1030. package/dist/src/core/patch-policy-content.d.ts +0 -40
  1031. package/dist/src/core/patch-policy-content.js +0 -219
  1032. package/dist/src/core/patch-policy.d.ts +0 -80
  1033. package/dist/src/core/patch-policy.js +0 -394
  1034. package/dist/src/core/patch-registration-refs.d.ts +0 -41
  1035. package/dist/src/core/patch-registration-refs.js +0 -107
  1036. package/dist/src/core/patch-retired.d.ts +0 -57
  1037. package/dist/src/core/patch-retired.js +0 -92
  1038. package/dist/src/core/patch-source-metadata.d.ts +0 -6
  1039. package/dist/src/core/patch-source-metadata.js +0 -12
  1040. package/dist/src/core/patch-subset.d.ts +0 -18
  1041. package/dist/src/core/patch-subset.js +0 -67
  1042. package/dist/src/core/patch-transform.d.ts +0 -61
  1043. package/dist/src/core/patch-transform.js +0 -198
  1044. package/dist/src/core/preflight-wait.d.ts +0 -22
  1045. package/dist/src/core/preflight-wait.js +0 -62
  1046. package/dist/src/core/process-cpu-time.d.ts +0 -12
  1047. package/dist/src/core/process-cpu-time.js +0 -52
  1048. package/dist/src/core/process-owner.d.ts +0 -9
  1049. package/dist/src/core/process-owner.js +0 -43
  1050. package/dist/src/core/rebase-dry-run.d.ts +0 -48
  1051. package/dist/src/core/rebase-dry-run.js +0 -105
  1052. package/dist/src/core/rebase-from-version.d.ts +0 -46
  1053. package/dist/src/core/rebase-from-version.js +0 -71
  1054. package/dist/src/core/rebase-session.d.ts +0 -100
  1055. package/dist/src/core/rebase-session.js +0 -174
  1056. package/dist/src/core/register-browser-content.d.ts +0 -11
  1057. package/dist/src/core/register-browser-content.js +0 -52
  1058. package/dist/src/core/register-browser-test.d.ts +0 -18
  1059. package/dist/src/core/register-browser-test.js +0 -66
  1060. package/dist/src/core/register-module.d.ts +0 -11
  1061. package/dist/src/core/register-module.js +0 -56
  1062. package/dist/src/core/register-result.d.ts +0 -30
  1063. package/dist/src/core/register-result.js +0 -8
  1064. package/dist/src/core/register-scaffold.d.ts +0 -55
  1065. package/dist/src/core/register-scaffold.js +0 -146
  1066. package/dist/src/core/register-shared-css.d.ts +0 -36
  1067. package/dist/src/core/register-shared-css.js +0 -112
  1068. package/dist/src/core/register-xpcshell-test.d.ts +0 -50
  1069. package/dist/src/core/register-xpcshell-test.js +0 -143
  1070. package/dist/src/core/run-log-redact.d.ts +0 -38
  1071. package/dist/src/core/run-log-redact.js +0 -69
  1072. package/dist/src/core/run-log.d.ts +0 -97
  1073. package/dist/src/core/run-log.js +0 -334
  1074. package/dist/src/core/run-profile.d.ts +0 -57
  1075. package/dist/src/core/run-profile.js +0 -137
  1076. package/dist/src/core/shared-ftl.d.ts +0 -28
  1077. package/dist/src/core/shared-ftl.js +0 -49
  1078. package/dist/src/core/signal-critical.d.ts +0 -38
  1079. package/dist/src/core/signal-critical.js +0 -62
  1080. package/dist/src/core/smoke-patterns.d.ts +0 -81
  1081. package/dist/src/core/smoke-patterns.js +0 -176
  1082. package/dist/src/core/state-file.d.ts +0 -60
  1083. package/dist/src/core/state-file.js +0 -71
  1084. package/dist/src/core/status-binary.d.ts +0 -62
  1085. package/dist/src/core/status-binary.js +0 -133
  1086. package/dist/src/core/status-classify.d.ts +0 -96
  1087. package/dist/src/core/status-classify.js +0 -244
  1088. package/dist/src/core/test-changed-prefs.d.ts +0 -30
  1089. package/dist/src/core/test-changed-prefs.js +0 -93
  1090. package/dist/src/core/test-harness-crash.d.ts +0 -251
  1091. package/dist/src/core/test-harness-crash.js +0 -780
  1092. package/dist/src/core/test-harness-infra.d.ts +0 -32
  1093. package/dist/src/core/test-harness-infra.js +0 -69
  1094. package/dist/src/core/test-harness-output.d.ts +0 -45
  1095. package/dist/src/core/test-harness-output.js +0 -119
  1096. package/dist/src/core/test-harness-signature.d.ts +0 -57
  1097. package/dist/src/core/test-harness-signature.js +0 -35
  1098. package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
  1099. package/dist/src/core/test-harness-verdict-notes.js +0 -48
  1100. package/dist/src/core/test-host-state.d.ts +0 -14
  1101. package/dist/src/core/test-host-state.js +0 -80
  1102. package/dist/src/core/test-path-scope.d.ts +0 -59
  1103. package/dist/src/core/test-path-scope.js +0 -147
  1104. package/dist/src/core/test-profile-files.d.ts +0 -17
  1105. package/dist/src/core/test-profile-files.js +0 -75
  1106. package/dist/src/core/test-raw-log.d.ts +0 -66
  1107. package/dist/src/core/test-raw-log.js +0 -122
  1108. package/dist/src/core/test-run-completeness.d.ts +0 -97
  1109. package/dist/src/core/test-run-completeness.js +0 -191
  1110. package/dist/src/core/test-stale-check.d.ts +0 -213
  1111. package/dist/src/core/test-stale-check.js +0 -396
  1112. package/dist/src/core/test-stale-exempt.d.ts +0 -40
  1113. package/dist/src/core/test-stale-exempt.js +0 -70
  1114. package/dist/src/core/test-stale-symlink.d.ts +0 -12
  1115. package/dist/src/core/test-stale-symlink.js +0 -39
  1116. package/dist/src/core/test-stall-triage.d.ts +0 -51
  1117. package/dist/src/core/test-stall-triage.js +0 -142
  1118. package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
  1119. package/dist/src/core/test-xpcshell-retry.js +0 -31
  1120. package/dist/src/core/token-category.d.ts +0 -54
  1121. package/dist/src/core/token-category.js +0 -299
  1122. package/dist/src/core/token-coverage.d.ts +0 -12
  1123. package/dist/src/core/token-coverage.js +0 -96
  1124. package/dist/src/core/token-dark-mode.d.ts +0 -64
  1125. package/dist/src/core/token-dark-mode.js +0 -186
  1126. package/dist/src/core/token-docs.d.ts +0 -34
  1127. package/dist/src/core/token-docs.js +0 -102
  1128. package/dist/src/core/token-inventory.d.ts +0 -56
  1129. package/dist/src/core/token-inventory.js +0 -114
  1130. package/dist/src/core/token-lint.d.ts +0 -53
  1131. package/dist/src/core/token-lint.js +0 -131
  1132. package/dist/src/core/token-manager.d.ts +0 -87
  1133. package/dist/src/core/token-manager.js +0 -407
  1134. package/dist/src/core/token-scaffold.d.ts +0 -36
  1135. package/dist/src/core/token-scaffold.js +0 -73
  1136. package/dist/src/core/token-sibling-sheets.d.ts +0 -46
  1137. package/dist/src/core/token-sibling-sheets.js +0 -119
  1138. package/dist/src/core/token-variant.d.ts +0 -90
  1139. package/dist/src/core/token-variant.js +0 -327
  1140. package/dist/src/core/toolchain-preflight.d.ts +0 -90
  1141. package/dist/src/core/toolchain-preflight.js +0 -251
  1142. package/dist/src/core/tree-cow.d.ts +0 -16
  1143. package/dist/src/core/tree-cow.js +0 -71
  1144. package/dist/src/core/tree-guard.d.ts +0 -35
  1145. package/dist/src/core/tree-guard.js +0 -194
  1146. package/dist/src/core/tree-store.d.ts +0 -143
  1147. package/dist/src/core/tree-store.js +0 -478
  1148. package/dist/src/core/typecheck-explain.d.ts +0 -93
  1149. package/dist/src/core/typecheck-explain.js +0 -213
  1150. package/dist/src/core/typecheck-shim.d.ts +0 -90
  1151. package/dist/src/core/typecheck-shim.js +0 -508
  1152. package/dist/src/core/typecheck.d.ts +0 -97
  1153. package/dist/src/core/typecheck.js +0 -457
  1154. package/dist/src/core/wire-destroy.d.ts +0 -25
  1155. package/dist/src/core/wire-destroy.js +0 -126
  1156. package/dist/src/core/wire-dom-fragment.d.ts +0 -44
  1157. package/dist/src/core/wire-dom-fragment.js +0 -139
  1158. package/dist/src/core/wire-init.d.ts +0 -28
  1159. package/dist/src/core/wire-init.js +0 -219
  1160. package/dist/src/core/wire-subscript.d.ts +0 -23
  1161. package/dist/src/core/wire-subscript.js +0 -145
  1162. package/dist/src/core/wire-utils.d.ts +0 -149
  1163. package/dist/src/core/wire-utils.js +0 -338
  1164. package/dist/src/core/xpcshell-appdir.d.ts +0 -157
  1165. package/dist/src/core/xpcshell-appdir.js +0 -299
  1166. package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
  1167. package/dist/src/core/xpcshell-profile-dir.js +0 -45
  1168. package/dist/src/errors/base.d.ts +0 -217
  1169. package/dist/src/errors/base.js +0 -279
  1170. package/dist/src/errors/build.d.ts +0 -92
  1171. package/dist/src/errors/build.js +0 -166
  1172. package/dist/src/errors/codes.d.ts +0 -74
  1173. package/dist/src/errors/codes.js +0 -74
  1174. package/dist/src/errors/config.d.ts +0 -17
  1175. package/dist/src/errors/config.js +0 -39
  1176. package/dist/src/errors/download.d.ts +0 -66
  1177. package/dist/src/errors/download.js +0 -160
  1178. package/dist/src/errors/furnace.d.ts +0 -20
  1179. package/dist/src/errors/furnace.js +0 -28
  1180. package/dist/src/errors/git.d.ts +0 -65
  1181. package/dist/src/errors/git.js +0 -140
  1182. package/dist/src/errors/patch.d.ts +0 -27
  1183. package/dist/src/errors/patch.js +0 -52
  1184. package/dist/src/errors/rebase.d.ts +0 -42
  1185. package/dist/src/errors/rebase.js +0 -71
  1186. package/dist/src/errors/run.d.ts +0 -16
  1187. package/dist/src/errors/run.js +0 -22
  1188. package/dist/src/index.d.ts +0 -42
  1189. package/dist/src/index.js +0 -32
  1190. package/dist/src/types/cli.d.ts +0 -14
  1191. package/dist/src/types/commands/index.d.ts +0 -6
  1192. package/dist/src/types/commands/index.js +0 -5
  1193. package/dist/src/types/commands/options.d.ts +0 -1372
  1194. package/dist/src/types/commands/options.js +0 -5
  1195. package/dist/src/types/commands/patches.d.ts +0 -352
  1196. package/dist/src/types/commands/patches.js +0 -5
  1197. package/dist/src/types/commands/project.d.ts +0 -51
  1198. package/dist/src/types/commands/project.js +0 -5
  1199. package/dist/src/types/config.d.ts +0 -732
  1200. package/dist/src/types/config.js +0 -15
  1201. package/dist/src/types/furnace.d.ts +0 -422
  1202. package/dist/src/types/furnace.js +0 -26
  1203. package/dist/src/types/index.d.ts +0 -5
  1204. package/dist/src/types/index.js +0 -5
  1205. package/dist/src/types/json.d.ts +0 -22
  1206. package/dist/src/types/json.js +0 -11
  1207. package/dist/src/types/typecheck.d.ts +0 -51
  1208. package/dist/src/types/typecheck.js +0 -14
  1209. package/dist/src/utils/assert.d.ts +0 -34
  1210. package/dist/src/utils/assert.js +0 -61
  1211. package/dist/src/utils/build-info.d.ts +0 -30
  1212. package/dist/src/utils/build-info.js +0 -99
  1213. package/dist/src/utils/child-env.d.ts +0 -28
  1214. package/dist/src/utils/child-env.js +0 -27
  1215. package/dist/src/utils/concurrency.d.ts +0 -8
  1216. package/dist/src/utils/concurrency.js +0 -32
  1217. package/dist/src/utils/elapsed.d.ts +0 -2
  1218. package/dist/src/utils/elapsed.js +0 -23
  1219. package/dist/src/utils/errors.d.ts +0 -39
  1220. package/dist/src/utils/errors.js +0 -67
  1221. package/dist/src/utils/fs.d.ts +0 -113
  1222. package/dist/src/utils/fs.js +0 -337
  1223. package/dist/src/utils/hash.d.ts +0 -12
  1224. package/dist/src/utils/hash.js +0 -16
  1225. package/dist/src/utils/line-dispatch.d.ts +0 -15
  1226. package/dist/src/utils/line-dispatch.js +0 -48
  1227. package/dist/src/utils/logger.d.ts +0 -109
  1228. package/dist/src/utils/logger.js +0 -270
  1229. package/dist/src/utils/machine-output.d.ts +0 -12
  1230. package/dist/src/utils/machine-output.js +0 -33
  1231. package/dist/src/utils/options.d.ts +0 -155
  1232. package/dist/src/utils/options.js +0 -312
  1233. package/dist/src/utils/package-root.d.ts +0 -21
  1234. package/dist/src/utils/package-root.js +0 -70
  1235. package/dist/src/utils/parse.d.ts +0 -117
  1236. package/dist/src/utils/parse.js +0 -214
  1237. package/dist/src/utils/path-glob.d.ts +0 -15
  1238. package/dist/src/utils/path-glob.js +0 -47
  1239. package/dist/src/utils/paths.d.ts +0 -31
  1240. package/dist/src/utils/paths.js +0 -80
  1241. package/dist/src/utils/platform.d.ts +0 -9
  1242. package/dist/src/utils/platform.js +0 -14
  1243. package/dist/src/utils/process-group.d.ts +0 -42
  1244. package/dist/src/utils/process-group.js +0 -190
  1245. package/dist/src/utils/process-input.d.ts +0 -27
  1246. package/dist/src/utils/process-input.js +0 -46
  1247. package/dist/src/utils/process.d.ts +0 -293
  1248. package/dist/src/utils/process.js +0 -593
  1249. package/dist/src/utils/ps-duration.d.ts +0 -31
  1250. package/dist/src/utils/ps-duration.js +0 -70
  1251. package/dist/src/utils/regex.d.ts +0 -39
  1252. package/dist/src/utils/regex.js +0 -109
  1253. package/dist/src/utils/sleep.d.ts +0 -25
  1254. package/dist/src/utils/sleep.js +0 -30
  1255. package/dist/src/utils/stdio-drain.d.ts +0 -28
  1256. package/dist/src/utils/stdio-drain.js +0 -54
  1257. package/dist/src/utils/validation.d.ts +0 -182
  1258. package/dist/src/utils/validation.js +0 -394
  1259. package/docs/lifecycle-invariants.md +0 -523
  1260. package/docs/run-logs.md +0 -122
  1261. package/docs/verification-trees.md +0 -49
  1262. /package/dist/src/{types/cli.js → cli/context.js} +0 -0
@@ -2,805 +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.litTypes: true` (default off, requires `checkJs`) types Lit in
110
- the per-patch programs' shim, as `typecheck.litTypes` does for the
111
- project pass (see [`typecheck`](#typecheck)). Set both to the same value,
112
- so a widget class has Lit's members, such as `updateComplete`, and a
113
- closed member list in both passes.
114
- - `patchLint.prettier` (`'off'`, `'warning'` or `'error'`, default `'off'`)
115
- runs the project's configured Prettier over patch-owned `.sys.mjs`
116
- modules. It runs from inside `engine/`, so `engine/.prettierrc*` and
117
- `engine/.prettierignore` decide the outcome. The same command run from the
118
- repo root can report a false pass when the root `.prettierignore` excludes
119
- `engine/`. Prettier is resolved from `engine/node_modules`, then the
120
- project's, then `npx --no-install`. Left at `'off'`, formatting is out of
121
- scope for the per-patch tier, and no other tier checks `.sys.mjs`
122
- formatting either.
123
- - `patchLint.forwardRegistration` (`'support-files'` or `'extended'`,
124
- default `'support-files'`) picks which carriers the `forward-registration`
125
- queue rule checks for a line naming a file that only a later patch
126
- creates. The default checks test-manifest `support-files`. `'extended'`
127
- also checks:
128
- - jar.mn pair lines (the source in parentheses, relative to the jar.mn);
129
- - moz.build path tokens (a quoted string with a `.` or `/`, relative to
130
- the moz.build);
131
- - test-manifest section headers and `head`;
132
- - `customElements.js` `chrome://<pkg>/content/…` URLs, resolved through
133
- the jar.mn lines the same queue adds.
134
-
135
- A line whose target cannot be resolved without the build system is left
136
- alone: a `%` or `@AB_CD@` substitution, `**`, `!`, a path that leaves the
137
- tree, or a chrome URL no queue jar.mn line packages. Each finding prints
138
- the same paste-and-run `patch staged-dependency --add --kind registration`
139
- command as the `support-files` arm, ending in a `--reason '<why …>'`
140
- placeholder to fill in. Each finding also carries the declaration as
141
- structured `stagedDeclarations`, so a `lint --per-patch --report` file
142
- can be applied with one `patch staged-dependency <patch> --add --from
143
- <report>` per patch instead of one call per edge. The setting is opt-in because a queue
144
- that was never checked for these carriers can carry many such edges, and a new error would red a
145
- `--max-warnings 0` gate on install. The same census is on the public API as
146
- `findForwardRegistrations(patchesDir, { scope })`, which defaults to
147
- `'extended'`, for a consumer that keeps its own ratchet over these edges.
148
-
149
- - `patchLint.fileSizeThresholds` tunes the `file-too-large` line counts per
150
- file class:
151
-
152
- ```json
153
- {
154
- "patchLint": {
155
- "fileSizeThresholds": {
156
- "general": { "notice": 500, "warning": 800, "error": 900 },
157
- "test": { "warning": 1500 }
158
- }
159
- }
160
- }
161
- ```
162
-
163
- Every field is optional and merges over the defaults (general
164
- `500/750/900`, test `1200/1400/1600`). The merged triple has to satisfy
165
- `notice <= warning <= error`, which is validated at config load. Under
166
- the recommended gate posture `--max-warnings 0`, the `warning` band
167
- is a hard failure rather than a soft limit, which is what these thresholds
168
- exist to let you move. A notice is the design target: advisory, and it
169
- never fails `--max-warnings 0`. Only the error band suggests splitting.
170
-
171
- - `patchLint.fileSizeMetric` (`'raw'` or `'code'`, default `'raw'`) picks
172
- what `file-too-large` counts. `'raw'` counts every line, the way `wc -l`
173
- does. `'code'` blanks comments with acorn's tokenizer (module first, then
174
- script, since chrome subscripts are scripts) and counts the lines left
175
- non-blank, so JSDoc and blank lines do not count. A file acorn cannot
176
- tokenize is counted in raw lines, the upper bound, and a
177
- `file-size-unparsed` notice names it. Every message says which unit it
178
- counted ("lines" or "code lines"). The counter is on the public API as
179
- `countCodeLines(content)`, next to `resolveFileSizeThresholds` and
180
- `isTestFile`.
181
-
182
- - `patchLint.patchSizeThresholds` tunes `large-patch-lines` and
183
- `large-patch-files` per tier (`general`, `test`, `branding`), each with a
184
- `lines` and a `files` triple:
185
-
186
- ```json
187
- {
188
- "patchLint": {
189
- "patchSizeThresholds": {
190
- "general": {
191
- "lines": { "notice": 1000, "warning": 2000, "error": 4000 },
192
- "files": { "notice": 8, "warning": 12, "error": 24 }
193
- },
194
- "branding": { "files": { "error": 90 } }
195
- }
196
- }
197
- }
198
- ```
199
-
200
- Every field is optional and merges over the defaults, and each merged
201
- triple has to satisfy `notice <= warning <= error`. The line defaults are
202
- general `800/1500/3000`, test `1500/3000/6000` and branding
203
- `8000/18000/30000`. Files warn above 5 (general, test) or 60 (branding).
204
- The files triple has no notice or error band unless you set one: an unset
205
- `files.notice` follows `files.warning`, and an unset `files.error` never
206
- fires. The `branding` tier applies to a patch whose files all sit under
207
- `browser/branding/` (plus `browser/moz.configure` and
208
- `browser/confvars.sh`), or one marked `"tier": "branding"` in
209
- `patches.json` (`re-export --tier branding`). A patch whose files are all
210
- tests takes the `test` tier, and wins over branding.
211
- `getPatchSizeThresholds(tier, config)` returns the configured values.
212
-
213
- - `patchLint.patchSizeMetric` (`'diff'` or `'addedCode'`, default `'diff'`)
214
- picks what `large-patch-lines` counts. `'diff'` counts every non-binary
215
- line of the unified diff, headers and context included. `'addedCode'`
216
- counts only added lines that are neither blank nor comment, judged on
217
- each file's post-image in `engine/` (a hunk can start inside a block
218
- comment). Comments are recognised per file kind: JS through acorn, CSS
219
- block comments, `<!-- -->` in markup, and whole-line `#` comments in
220
- manifests, `moz.build`, Fluent and similar. In CSS it also skips lines
221
- inside a Furnace `@fireforge-include` … `@fireforge-end-include`
222
- expansion: they are a copy of a shared fragment. Under `'addedCode'`, a
223
- general-tier patch that carries tests counts per class: lines in test
224
- files against the test tier's `lines`, everything else against the
225
- general tier's, each with its own finding.
226
-
227
- - `patchLint.patchSizeRegistrationFiles` lists globs whose files count
228
- toward neither `large-patch-lines` nor `large-patch-files`, for example
229
- `["jar.mn", "moz.build", "components.conf", "*.toml", "jsconfig*.json"]`.
230
- A glob without a `/` matches the basename, one with a `/` the
231
- engine-relative path; `*` stays within a path segment and `**` crosses
232
- segments. Default: none.
233
-
234
- - `patchLint.tokenScales` (default unset) puts property families on a token
235
- scale. In every CSS file a patch creates, a declaration of a governed
236
- property must resolve to the scale (`token-scale`, an error):
237
-
238
- ```json
239
- {
240
- "patchLint": {
241
- "tokenScales": [
242
- {
243
- "properties": ["gap", "row-gap", "column-gap", "padding*", "margin*"],
244
- "prefix": "--mybrowser-space-",
245
- "allowLiterals": ["0", "auto", "*%", "1px"],
246
- "allow": ["--mybrowser-page-padding"]
247
- },
248
- { "properties": ["z-index"], "prefix": "--mybrowser-z-" }
249
- ]
250
- }
251
- }
252
- ```
253
-
254
- `properties` takes exact names or a `*`-suffixed prefix. Each value atom
255
- must be a `var()` of a `prefix` token or of an `allow` name (exact, or
256
- `*`-suffixed such as `--moz-*`), a literal matching `allowLiterals` (`*`
257
- is a wildcard), or a CSS-wide keyword (`inherit`, `initial`, `unset`,
258
- `revert`, `revert-layer`). A `var()` fallback is held to the same scale,
259
- so `var(--mybrowser-gap, 7px)` fails on `7px`. `calc()`, `min()`, `max()`
260
- and `clamp()` are transparent. Files the patch modifies rather than
261
- creates are not checked, and a line carrying
262
- `fireforge-ignore: token-scale` is skipped. Declarations inside
263
- descriptor at-rules (`@font-face`, `@counter-style`, `@property`,
264
- `@font-feature-values`, `@font-palette-values`, `@page` and its margin
265
- boxes) are descriptors, not properties, and are not judged.
266
-
267
- A scale also takes:
268
-
269
- - `prefix` as a list (`["--mybrowser-space-", "--mybrowser-gap-"]`) for a
270
- scale whose steps are spelled more than one way.
271
- - `allowInCalc`: literals legal only inside a math function, such as the
272
- unitless multiplier in `calc(var(--mybrowser-space-2) * 2)`, without
273
- also passing a bare `2`. Same wildcard syntax as `allowLiterals`.
274
- - `offsetCap`: the px a declaration may subtract from the scale's tokens
275
- inside a math function (`calc(var(--mybrowser-space-4) - 1px)`), summed
276
- over the declaration. A px value anywhere else still fails.
277
- - `exclude`: engine-relative globs of files the scale does not govern,
278
- such as a vendored minified sheet, so its patch needs no patch-wide
279
- waiver.
280
- - `minFiles`: the fewest patch-created stylesheets (outside `exclude`)
281
- that must declare one of the scale's properties. Under it the queue
282
- fails `token-scale-vacuous` (an error on `fireforge.json` in
283
- `lint --per-patch`), so a scale that matches nothing, or a scan set a
284
- move emptied, cannot pass by judging nothing. A `--patches` run does
285
- not judge the floor.
286
- - `allowValues`: reviewed declarations accepted as written, as
287
- `{ "property": "margin-inline-start", "value": "-3px", "reason": "…" }`.
288
- A declaration whose property and value match an entry (whitespace runs
289
- collapsed) passes in every file the scale governs, so a reviewed raw
290
- value can move to another sheet without an `exclude` for it. The
291
- property must be one the scale governs, and `reason` is required.
292
-
293
- 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
+ ```
294
15
 
295
- ## `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.
296
17
 
297
- `typecheck.projects` lists the jsconfig files `fireforge typecheck` checks
298
- as whole projects. `typecheck.extraShim` and `typecheck.projectOverrides`
299
- add declarations to the Firefox-globals shim, for every project or for one.
300
- When `patchLint.checkJs` is on, the same command also runs the per-patch
301
- checkJs pass that `export` enforces, so a green `typecheck` means
302
- export-clean types.
303
-
304
- `--project <path>` checks one jsconfig instead of the configured list,
305
- with every other setting of the block: `extraShim`, `litTypes`,
306
- `undefinedIdentifiers`, and the `projectOverrides` entry for that project.
307
- A `projectOverrides` key matches the project by the file it names, so
308
- `./a/jsconfig.json` and an absolute path both find the `a/jsconfig.json`
309
- entry.
310
-
311
- The two passes see different programs. The project pass checks each
312
- project's files with all of the project's roots and the shim settings
313
- above. A per-patch program checks only a patch-created `.sys.mjs` module,
314
- in one program with the queue's other patch-owned modules, or a
315
- patch-created test script, in its own program (see below). A
316
- patch-modified upstream file, a widget `.mjs` and a chrome script are not
317
- checked per patch at all. `fireforge typecheck --explain <file>` runs no
318
- check and prints both views of one file:
319
-
320
- - each configured project, whether it lists the file as a root, and its
321
- `litTypes`, effective extra shim (naming the `projectOverrides` entry
322
- that set it) and `undefinedIdentifiers`;
323
- - whether a per-patch program checks it: the patches that create or modify
324
- it, the program it is a root of or why it has none, and for a test its
325
- heads; the shim settings; the modules its imports can resolve to; and
326
- each `resource:`/`chrome:` import with what it resolves to, or `any`.
327
-
328
- The file may be given relative to the project root, relative to `engine/`,
329
- or as an absolute path. With `--project`, only that project is shown.
330
- `re-export` ends a run that wrote a patch with per-patch checkJs files with
331
- a line saying the project pass is still owed.
332
-
333
- Project build info is written in `.fireforge/typecheck/`, outside `engine/`,
334
- with a key covering the shim, TypeScript version, compiler options and
335
- FireForge version. Diagnostics always use a fresh project
336
- program: prior incremental diagnostic state is never restored. Cached and
337
- `--no-cache` runs therefore check the same complete file set. `--no-cache`
338
- also disables build-info writes. A jsconfig's own `incremental` and
339
- `tsBuildInfoFile` are ignored.
340
-
341
- `typecheck.litTypes: true` (default off) types Lit in the
342
- shim: `LitElement` and the helpers of
343
- `chrome://global/content/vendor/lit.all.mjs`, and `MozLitElement` of
344
- `chrome://global/content/lit-utils.mjs`. The element classes carry closed
345
- member lists, as `Cu` does, so a misspelt member of a widget host is an
346
- error rather than `any`. Template helpers and directives stay loose. It is
347
- off by default because a reactive property declared only in
348
- `static properties` or `static queries` then needs a declaration to be
349
- known. The shim declares the global type
350
- `MozLitElementWith<Extra>`: a widget casts its base to it, and its
351
- instances carry `Extra` beside MozLitElement's members. A query getter
352
- cannot be declared any other way: a class field redefines the getter
353
- MozLitElement installs and throws, and a constructor declaration reads it
354
- before `renderRoot` exists.
355
-
356
- ```js
357
- const Base = /** @type {MozLitElementWith<{ input: HTMLInputElement }>} */ (MozLitElement);
358
- export class MozSearch extends Base {
359
- static queries = { input: 'input' };
360
- }
361
- ```
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)).
362
19
 
363
- Per-patch checkJs types Lit when `patchLint.litTypes` is set. Without
364
- `litTypes`, `MozLitElementWith<Extra>` is `any`, as the base is, so the
365
- same source checks with and without it. A project shim can add members by
366
- merging `interface LitElementShimMembers`; a jsconfig `paths` entry that maps these
367
- URLs to real sources takes precedence.
368
-
369
- Per-patch checkJs gives each test script its own program. A
370
- test's `resource:///` and `chrome://` imports (including a
371
- `typeof import("…")` cast) resolve to the modules the queue creates up to
372
- the test's own patch, so a test of an earlier patch's module is checked
373
- against its real types. A module a later patch creates, an upstream module
374
- and a basename two patches create still type as `any`, and an implicit-any
375
- finding on such an import names it. A type-member reference through such
376
- an import, `import("…").Type` or `typeof import("…").member`, types as
377
- `any` too, in every per-patch program. In the project pass the same
378
- reference is an error ("Namespace '"resource:*"' has no exported member")
379
- unless the project's jsconfig `paths` resolve the URL, as the entries
380
- Furnace maintains do for `chrome://global/content/elements/` (see
381
- [`furnace.md`](furnace.md#typed-cross-module-imports)).
382
-
383
- Both project and per-patch checkJs provide Gecko DOM constructor
384
- `isInstance(value)` predicates with instance narrowing, plus
385
- `MouseEvent.MOZ_SOURCE_PEN`. These declarations retain normal DOM member
386
- 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.
387
21
 
388
- ## `patchPolicy`
22
+ ## Identity and mode
389
23
 
390
- `patchPolicy.ranges` makes `patch compact` range-aware, so closing ordinal
391
- 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` |
392
33
 
393
- With `patchPolicy.allowGaps: false`, orders are contiguous within a range:
394
- a new patch must fill an existing gap or take the number right after the
395
- range's last patch. A patch that has to leave the queue without opening a
396
- gap is removed with `patch retire`, which keeps its order as a retired slot.
397
- An order a peer has claimed but not exported yet is held with `patch
398
- reserve`, so a later order can be exported without a gap in between (see
399
- [`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.
400
35
 
401
- ### Registration-only rules
36
+ ## `source`
402
37
 
403
- Four opt-in rules read the patch bodies rather than `patches.json` alone.
404
- `verify` and `lint --per-patch` report them (as `patch-policy/<code>` in
405
- lint), at the severity `mutationMode` implies. Mutating commands do not
406
- evaluate them, because those commands check a projected manifest before
407
- any body exists.
38
+ Present exactly when `mode` is `source` ([source-workflow.md](source-workflow.md)).
408
39
 
409
- ```json
410
- {
411
- "patchPolicy": {
412
- "ranges": [{ "from": 100, "to": 899, "category": "ui" }],
413
- "addOnlyMarker": "hominis",
414
- "upstreamAllowlist": [
415
- "browser/moz.configure",
416
- { "path": "**/jar.mn", "addOnly": true },
417
- { "path": "**/moz.build", "addOnly": true }
418
- ],
419
- "scopeRules": [
420
- { "filenamePattern": "-tests\\.patch$", "files": ["**/test/**", "**/tests/**", "**/*.toml"] }
421
- ],
422
- "verifyDocumentPaths": true
423
- }
424
- }
425
- ```
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 |
426
45
 
427
- - `upstreamAllowlist` names, as path globs, the upstream files a
428
- non-reserved patch may modify (`upstream-allowlist`). A file is upstream
429
- when no patch in the queue creates it, so fork-owned files never need an
430
- entry. A patch in a `reservedRanges` band is exempt: its allowlist entry's
431
- `files` already governs it. Globs are anchored engine-relative paths: `*`
432
- stays within a segment, `**` spans segments, so `*.toml` matches only a
433
- top-level file and `**/*.toml` matches one anywhere.
434
- - An object entry with `addOnly: true` puts matching files in
435
- registration-only mode (`add-only`): the patch may only add lines, every
436
- non-blank added line must contain the marker (the entry's `marker`, else
437
- `addOnlyMarker`, matched case-insensitively), and deleting the file or
438
- changing it as binary is refused. When several entries match a file, any
439
- add-only one makes it add-only.
440
- - An add-only entry's `retiredPaths` lists paths whose registrations a
441
- patch may remove, for a reviewed retirement. A removed line that contains
442
- one of them (a plain substring, such as `fxa/fxa-logo.svg`) is not counted
443
- as a removal; any other removal still fails `add-only`. `retiredPaths` on
444
- an entry without `addOnly` is refused.
445
- - `scopeRules` limits a class of patch to the files its globs name
446
- (`scope`). A rule selects patches by `category`, `filenamePattern` (a
447
- regular expression over the patch filename), or both. The example keeps a
448
- `-tests` patch to test directories and test manifests.
449
- - `verifyDocumentPaths: true` requires each reserved allowlist entry's `adr`
450
- and `documentation` path to exist under the project root
451
- (`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`.
452
47
 
453
- ## `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.
454
61
 
455
- `test.canaryPath` and `test.canaryTimeoutSeconds` supply the defaults for
456
- `fireforge test --canary`.
457
-
458
- `test.reapOrphans` is `"report"` (default) or `"reap"`: what the preflight
459
- census does with a harness helper that survived an earlier run in this
460
- objdir. `"reap"` terminates it and stamps `orphans-reaped=<n>` on the verdict
461
- line; `--reap-orphans` does the same for one invocation. The objdir anchor
462
- rule is the same under both. See [`testing.md`](testing.md).
463
-
464
- `test.mochitestPorts` is `"fixed"` (default) or `"auto"`. `"auto"` lets a
465
- browser run proceed while the mochitest server or Marionette port is held by
466
- something that is not this checkout's own, relying on the engine
467
- harness's own busy-port fallback, so sibling checkouts can run browser suites
468
- at once. `--auto-ports` does the same for one invocation. See
469
- [`testing.md`](testing.md#shared-browsers-ports-and-host-state).
470
-
471
- `test.lockMode` is `"exclusive"` (default) or `"shared"`. `"shared"` lets a
472
- build-less run that applies no negative control and uses auto ports hold the
473
- engine-session lock shared, so peers' build-less runs on the same objdir
474
- overlap while builds, re-exports and every other writer still hold it alone.
475
- `--shared-lock` does the same for one invocation. See
476
- [`testing.md`](testing.md#concurrency).
477
-
478
- `test.furnaceApply` is `"all"` (default), `"reached"` or `"none"`: which
479
- components a `test --build` deploys before building. `--furnace-apply` does
480
- the same for one invocation. See
481
- [`testing.md`](testing.md#furnace-components-in-a-pre-test-build).
482
-
483
- ## `history`
484
-
485
- `history.path` is where FireForge appends its patch history log, relative to
486
- the project root (default `.fireforge/history.jsonl`). The log records
487
- structural patch operations (staged dependencies, splits, renames, export
488
- orders, re-exports that change a patch's file list) as one JSON object per
489
- line. FireForge never reads it back; it is an audit trail only. Each record
490
- carries `invocationId` (shared by every record one command writes), `pid`,
491
- `ppid`, and `sessionId` when the environment sets `FIREFORGE_SESSION_ID`, so
492
- a session sharing the checkout can select its own lines.
493
-
494
- If a log exists at `patches/.fireforge-history.jsonl`, inside the tracked
495
- queue, the next append moves it to `history.path`; when both files exist, its
496
- records are appended to the `history.path` file rather than either being
497
- overwritten. Setting `history.path` to `patches/.fireforge-history.jsonl`
498
- 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`.
499
73
 
500
74
  ## `buildAudit`
501
75
 
502
- The post-build packaging audit is warn-only. Most of what it would otherwise
503
- report as "missing packaged artifact" is classified away from the structure
504
- of the tree itself: an unselected `--with-branding` tree read from the
505
- generated `engine/mozconfig`, a directory reached only through a
506
- platform-gated `DIRS +=` in an ancestor `moz.build`, a Storybook
507
- `*.stories.mjs`. One case cannot be derived from the tree: a source that is
508
- deliberately never packaged, such as a type-only mirror whose header says it
509
- 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).
510
120
 
511
121
  ```json
512
122
  {
513
- "buildAudit": {
514
- "unpackaged": [
515
- {
516
- "path": "browser/base/content/hominis-tile-host-types.js",
517
- "reason": "Type-only mirror of the tile host, never loaded, and no jar.mn entry by design."
518
- }
519
- ]
123
+ "patchLint": {
124
+ "fileSizeThresholds": { "general": { "warning": 800, "error": 1000 } },
125
+ "patchSizeThresholds": {
126
+ "general": { "lines": { "warning": 2000 }, "files": { "warning": 8 } }
127
+ }
520
128
  }
521
129
  }
522
130
  ```
523
131
 
524
- - `path` is engine-relative. A `*` may glob within one path segment. `**` is
525
- refused, because a subtree carve-out is how a reviewed exception quietly
526
- becomes a blanket one.
527
- - `reason` is required and must be non-empty. This is the one audit class
528
- FireForge cannot verify against the tree, so the declaration is the
529
- evidence. By the time someone reads it, an unexplained carve-out is
530
- indistinguishable from a mistake.
531
- - Admitted paths are listed in the audit output, never silenced. The notice
532
- reads `admitted as unpackaged by buildAudit.unpackaged "<path>"` followed
533
- by the declared reason.
534
- - A declared path that does resolve to a packaged artifact is reported as a
535
- stale carve-out rather than suppressed, because the declaration asserts a
536
- fact about the tree that is no longer true.
537
- - A declaration matching nothing that changed in a given run says nothing.
538
- Unlike `--expect-unmanaged`, whose unmet entries are reported because it is
539
- a per-invocation flag list, this is a standing list checked only against
540
- the files that happened to change, so "not met" is the normal case.
541
-
542
- The `Packaged:` summary line names each non-zero skip class with its count,
543
- so a run that dismissed four unselected-branding files reads differently from
544
- 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 |
545
178
 
546
179
  ## `check`
547
180
 
548
- `fireforge check` is the composed static gate. It runs six built-in steps,
549
- `status`, `verify`, `lint`, `typecheck`, `furnace-validate` and
550
- `token-coverage`, and then the project's own commands. Every field of the
551
- `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`.
552
266
 
553
267
  ```json
554
268
  {
555
- "check": {
556
- "skip": ["token-coverage"],
557
- "status": {
558
- "failOn": ["unmanaged", "patch-owned-drift", "conflict", "ownership-conflict"],
559
- "allow": ["patch-backed", "branding", "furnace", "binary-unsupported"],
560
- "failOnUnknown": true
561
- },
562
- "maxWarnings": { "lint": 0, "furnace": 0 },
563
- "extraSteps": [
564
- { "name": "policy-audit", "command": "npm run audit:policy", "timeout": 600 },
565
- { "name": "invariants", "command": "node check-invariants.mjs", "cwd": "tools" }
566
- ]
567
- }
269
+ "externalToolchains": [
270
+ {
271
+ "name": "seasonal-branding",
272
+ "tools": [
273
+ { "name": "actool", "xcrun": true },
274
+ { "name": "pngquant", "required": false }
275
+ ]
276
+ }
277
+ ]
568
278
  }
569
279
  ```
570
280
 
571
- - `skip` lists the built-in steps this project never runs. `typecheck` is
572
- also skipped when there is no `typecheck` block, and `furnace-validate`
573
- when there is no `furnace.json`.
574
- - `status` is the status step's `--check` policy: `--fail-on`, `--allow` and
575
- `--fail-on-unknown` (see [`patch-workflow.md`](patch-workflow.md#ci-enforcement)).
576
- An invalid policy is refused as a config error before any step runs.
577
- - `maxWarnings` passes `--max-warnings` to `lint --per-patch` and
578
- `furnace validate`.
579
- - `extraSteps[]` adds project commands. `name` is lowercase letters, digits
580
- and dashes and must not repeat a built-in name. `command` runs with
581
- `/bin/sh -c` (`cmd.exe /c` on Windows) from the project root, or from the
582
- project-relative `cwd`. `timeout` is in seconds: past it the step's whole
583
- process tree is killed and the step fails. A step passes when it exits 0.
584
- `after` lists steps, built-in or extra, that must finish before it starts
585
- (whatever their outcome); a name that is not a step, or an ordering cycle,
586
- is refused.
587
- - `timeout` bounds every built-in step, in seconds, and `timeouts` sets it
588
- per step (`{ "typecheck": 600 }`). A step past its budget is killed and
589
- fails. Unset, built-in steps are unbounded.
590
- - `failOnSkipped: true` fails the check (`reason=skipped-steps`) when a
591
- built-in step is skipped because the project has nothing for it to run
592
- (no `typecheck` block, no `furnace.json`). A step named in `skip` is a
593
- decision and never fails it.
594
- - `lintReport` is a project-relative path the lint step writes its
595
- `lint --per-patch --report` JSON to. Every extra step receives the
596
- absolute path as `FIREFORGE_CHECK_LINT_REPORT`, so an audit that runs
597
- `after: ["lint"]` can read the run's lint report instead of linting the
598
- queue a second time.
599
-
600
- The verdict line names the skipped steps with an additive
601
- `skipped-steps=<a,b>` key beside `skipped=<n>`.
602
-
603
- The step table gives each step's time and, in its `LOAD` column, the host's
604
- 1-minute load average when the step started and when it ended
605
- (`12.3→18.0`), so a step that timed out on a loaded host reads as such.
606
- Windows has no load average, so the column shows `-` there.
607
-
608
- ## Design tokens
609
-
610
- Tokens are managed with `fireforge token add`. `fireforge token list` and
611
- `fireforge token show` report what is already there.
612
-
613
- - `--create-category` declares a new category banner and inserts the token in
614
- one step. It cannot be combined with `--variant`: author the category with
615
- the base token first, then add each variant.
616
- - `--category` is required for a base declaration and optional under
617
- `--variant`, where the declaration is routed into a `:root<selector>` block
618
- and never into a category section. It is still validated when supplied.
619
- - `--variant` takes the same selector grammar the block matcher understands:
620
- one attribute fragment (`[data-private]`, `[data-skin=precision]`), a run
621
- of them (`[data-skin=precision][data-theme=dark]`), and an optional
622
- pseudo-class tail (`[data-skin=precision]:not([data-private])`). Names and
623
- values must be identifier-safe, and `=value` is normalized to `="value"`. A
624
- variant naming a qualifier matches only a block carrying that qualifier.
625
- One without a qualifier still matches a qualified block, and the write says
626
- so.
627
- - `--mode override` mirrors into both `:root[data-theme="dark"]` and
628
- `:root[data-theme="light"]`. A qualified block such as
629
- `:root[data-theme="light"]:not([data-private])` is matched and written
630
- through, with a warning naming the selector. The qualifier carries meaning,
631
- but silently skipping half the mirror is the worse failure.
632
- - A token already present in the target block is reported with its location
633
- (`already exists in :root[…] (line N), unchanged`) rather than as a bare
634
- no-op.
635
-
636
- ### Reading the token file
637
-
638
- `token add --category` refuses a category that the tokens CSS does not
639
- declare, so `token list` exists to name the categories without you
640
- hand-parsing a `= Category =` banner out of the file.
641
-
642
- - `fireforge token list [--category <name>] [--json]` reports each category
643
- banner with the tokens declared under it, in file order. Declarations above
644
- the first banner are reported under `(no category)` rather than dropped,
645
- and a banner with no tokens is still listed, since `token add` accepts it.
646
- An unknown `--category` is refused by naming the ones that exist, because a
647
- filter that printed nothing would read as "this category is empty".
648
- - `fireforge token show <token-name> [--json]` reports the owning category
649
- and the value the token takes in every block that declares it: the base
650
- `:root`, the dark `@media` mirror, and each `:root[variant]`, with the line
651
- of each. The leading `--` is optional, and if you include it, pass the `--`
652
- separator first (`fireforge token show -- --my-token`).
653
-
654
- Only the base `:root` block owns a token, so `token list` reports it once.
655
- The dark and variant blocks mirror it and appear in `token show`.
656
-
657
- ### Checking the token file
658
-
659
- `fireforge token lint [--json]` exits non-zero on either of two findings:
660
-
661
- - `token-lockstep`: a themed override block (the dark `@media` mirror, a
662
- `:root[variant]` block) declares a token with the project's token prefix
663
- that the base `:root` does not declare. Every other theme would resolve
664
- it to nothing. Overrides of non-prefixed properties (a `--moz-*` platform
665
- variable) are left alone.
666
- - `token-undeclared`: a `var(--<prefix>…)` in the tokens CSS, or in any CSS
667
- file a patch in the queue touches, names a token no block of the tokens
668
- CSS declares. A property declared in the same file, and the `furnace.json`
669
- `tokenAllowlist` and `runtimeVariables` names, are exempt. A
670
- reference with a fallback (`var(--x, 0)`) is optional and not reported,
671
- and a token a sibling sheet declares counts as declared. Sheets are
672
- siblings when one queue document links both (`<link rel="stylesheet">`,
673
- `<html:link>` or `<?xml-stylesheet?>`, in markup or a Lit template; a
674
- `chrome://` URL resolves through the queue's jar.mn lines, a relative
675
- one beside the document), when one `@import`s the other, or when
676
- `furnace.json` `tokenSiblingSheets` pairs them:
677
- `{ "browser/themes/**/panel*.css": ["browser/base/content/host.css"] }`
678
- (a partner is a path or a glob over the queue's sheets).
679
-
680
- The prefix is `furnace.json` `tokenPrefix`, else `--<binaryName>-`.
681
-
682
- ## Smoke runs
683
-
684
- For unattended smoke checks, `fireforge run --smoke-exit <s> --headless`
685
- launches the browser headless. A headed smoke window on a shared desktop
686
- absorbs live input, which contaminates the console capture, so headed
687
- non-CI launches print a warning saying so. Exit codes 12 and 13 separate a
688
- console regression from a launch failure. See
689
- [`exit-codes.md`](exit-codes.md).
690
-
691
- A smoke run starts on a fresh temporary profile by default.
692
- The step exists to prove what the build does on a clean start. The
693
- developer's `obj-*/tmp/profile-default` carries whatever the last session
694
- left (a pre-reset database, a restored hand-made applet), and those reds
695
- say nothing about the tree. FireForge creates the directory under the OS
696
- temp dir, seeds the two prefs `mach run` writes into profiles it makes
697
- itself (`browser.shell.checkDefaultBrowser` and
698
- `browser.aboutConfig.showWarning`), and passes it to Firefox as
699
- `-profile`. The directory is removed when the run ends. That includes a
700
- failed run and a SIGINT/SIGTERM, which the signal handler removes after
701
- the browser tree has shut down. A FireForge that was SIGKILLed cannot clean
702
- up after itself, so the next `run` removes any temporary profile whose
703
- owning process is gone.
704
-
705
- - `--profile <path>` launches with a named profile directory and leaves it
706
- in place. Under `--smoke-exit` it replaces the fresh default. Firefox also
707
- gets `-purgecaches`, which discards the profile's startup
708
- cache of compiled chrome scripts. That cache is keyed on the build id, and
709
- a `build --ui` does not change it, so without the purge a kept profile runs
710
- the chrome scripts an earlier build cached. `--no-purge-caches` keeps the
711
- cache. mach's `profile-default` has its `startupCache/` removed before
712
- every run and after every `build --ui`, and a temporary profile starts
713
- without one.
714
- - `--temp-profile` gives a plain `run` the same fresh, removed-afterwards
715
- profile.
716
- - Arguments after `--` go to the browser, after the profile ones. A headed
717
- session on a kept profile that a chrome-context Marionette client drives
718
- is `fireforge run --profile <dir> -- -marionette -remote-allow-system-access`,
719
- with `marionette.port` set in the profile's `user.js` so peers' harnesses
720
- keep 2828. The objdir app launched directly gets neither `-purgecaches`
721
- nor the startup-cache cleanup, so it can serve a widget script an earlier
722
- launch cached.
723
-
724
- After a build, mach leaves a `.purgecaches` file in the app directory
725
- (`dist/bin/browser`, and `Contents/Resources/browser` in the macOS bundle).
726
- The next launch of the objdir app purges the startup cache of whichever
727
- profile it starts on and deletes the file. Only that first launch purges: a
728
- test harness or a direct launch can consume it, and every reused profile
729
- started after it keeps its cache. `fireforge build --ui` says so in one
730
- line at the end, since a UI build keeps the build id that cache is keyed
731
- on. Start other reused profiles with `-purgecaches`.
732
-
733
- A smoke run whose browser exits with a clean status before the window
734
- elapses, without printing any console output, fails with exit 13.
735
- Lines from mach's own log (the timestamped command echo) do not
736
- count as output. A launch that exits silently never reached a window: a
737
- stale `.parentlock`, or a profile whose run of SIGTERM-ended smoke runs
738
- counts as a startup-crash streak (`toolkit.startup.recent_crashes`).
739
-
740
- A plain `run` without either flag keeps mach's `profile-default`. `mach run`'s
741
- desktop parser has no `--profile` option (its `--profile/-P` belongs to the
742
- Android parser), so the profile is always passed as a program parameter.
743
- With an explicit profile, mach neither writes its `runprefs` from
744
- `~/.mozbuild/machrc` nor accepts `--setpref`.
745
-
746
- The allowlist (`--console-allow-file`) is count-blind by default: a line that
747
- matches an entry never counts, however often it fires. A `# max-hits: N`
748
- comment directly above an entry (other comments may sit between) caps how
749
- many lines that entry may match in one run. The attribution block prints
750
- capped entries as `hits×/N`, and an entry that fires past its ceiling is
751
- reported and fails the run with exit 12, the same as an unallowed error. A
752
- directive with no entry after it is refused rather than silently ignored.
753
-
754
- ## Lock waits
755
-
756
- Every FireForge command that mutates the engine takes the engine-session
757
- lock, and some take a second subsystem lock as well. Contention fails fast
758
- after about a second by default.
759
-
760
- `--wait-lock [seconds]` (bare flag means 60, valid range 1 to 86400, a day) replaces
761
- that with a bounded wait, and the budget covers every lock the command takes.
762
- For `furnace apply`, `deploy` and `sync` that means the furnace lock as well
763
- as the engine-session lock. The furnace leaves that take only the furnace lock
764
- (`create`, `remove`, `rename`, `refresh`, `scan`, `override`, `preview`, and
765
- `chrome-doc create`/`remove`) apply the flag to that lock. While waiting, a
766
- progress line roughly every 5 seconds identifies the holder by PID, command
767
- and start time.
768
-
769
- Commands that take no lock accept `--wait-lock` and ignore it, so a scripted
770
- sequence can append the flag everywhere without a usage error killing the
771
- run.
772
-
773
- `FIREFORGE_WAIT_LOCK=<seconds>` applies the same budget to every command in a
774
- session, using the same bounds as the flag. It is the fallback whenever the
775
- flag is absent, including for the furnace lock a build's pre-build apply and
776
- `doctor --repair-furnace` take. An explicit `--wait-lock` always wins.
777
-
778
- Without either, a writer such as `re-export`, `export` or a `patch` verb waits
779
- about one second for the engine-session lock and then exits 15 (lock timeout)
780
- while a peer's `build` or `test` holds it. `re-export --dry-run` takes no lock,
781
- so a clean preview says nothing about whether the writing run will get one. On
782
- an engine several sessions share, pass `--wait-lock <seconds>` to every writing
783
- command, or set `FIREFORGE_WAIT_LOCK` once so every command of the session
784
- waits its turn.
785
-
786
- Waiters are granted a lock in arrival order: the progress line's "You are
787
- next" or "N ahead of you" is the order the lock will actually be handed out.
788
- A waiter that crashed, was killed, or is stopped drops out of the queue
789
- instead of blocking it.
790
-
791
- `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 |
792
339
 
793
340
  ## Environment variables
794
341
 
795
- | Variable | Effect |
796
- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
797
- | `FIREFORGE_WAIT_LOCK` | Session-wide lock wait budget in seconds (1 to 86400). See above. |
798
- | `FIREFORGE_SESSION_ID` | Recorded as `sessionId` on every patch history log record this process writes. See `history` above. |
799
- | `FIREFORGE_LOG_KEEP` | Also write every `test`/`build` run log here, outside retention (a directory collects one file per run). See `run-logs.md`. |
800
- | `FIREFORGE_MAX_UNTRACKED_FILES` | Per-directory cap when expanding collapsed untracked directories in `status` (default 5000). A non-positive value warns and is ignored. |
801
- | `FIREFORGE_GIT_ADD_TIMEOUT_MS` | Timeout for the monolithic `git add -A` baseline pass (default 10 min). For slow or loaded filesystems. |
802
- | `FIREFORGE_GIT_ADD_CHUNK_TIMEOUT_MS` | Timeout for the chunked `git add -- <dir>` fallback (default 30 min). Paired with the above. |
803
-
804
- `CLAUDECODE` is read by mozbuild, not by FireForge. `fireforge test
805
- --full-output` unsets it for test dispatches only. See
806
- [`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.