@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
@@ -1,780 +0,0 @@
1
- // SPDX-License-Identifier: EUPL-1.2
2
- /**
3
- * Harness-crash classification for `fireforge test`.
4
- *
5
- * The wrapped mach harness exhibits flaky non-test failures that an exit
6
- * code (or a "did it print a summary" grep) cannot distinguish from real
7
- * test results:
8
- *
9
- * - startup crashes from the mozlog resource monitor on macOS
10
- * (`AttributeError: 'SystemResourceMonitor' object has no attribute
11
- * 'poll_interval'`, `host_statistics64(HOST_VM_INFO64) syscall failed`,
12
- * `(ipc/mig) array not large enough`, a psutil/macOS mismatch) which
13
- * abort the run before any test executes.
14
- * - hangs after browser startup that die at the no-output timeout yet still
15
- * emit a `Passed: 0` summary.
16
- * - post-green shutdown re-entry, where a fully green run stalls on "must
17
- * wait for focus" and records "Application shut down (without crashing)
18
- * in the middle of a test!" as the only unexpected failure.
19
- *
20
- * Classification therefore keys on `TEST-START` presence, so summary lines
21
- * never count as proof that tests ran, and recognizes the crash shapes
22
- * above so the command layer can retry them with a bounded budget instead of
23
- * reporting phantom test failures (or phantom passes).
24
- */
25
- import { hasKnownTeardownNoise } from './mach-known-noise-filter.js';
26
- import { detectServerStartupFailure } from './test-harness-infra.js';
27
- import { truncateEvidence, unmarkedFailureEvidenceNote, } from './test-harness-verdict-notes.js';
28
- import { classifyProfileArgumentFailure } from './test-profile-files.js';
29
- import { formatIncompleteSuffix, formatShardsSuffix, } from './test-harness-signature.js';
30
- // The operator message after exhausted retries lives beside the
31
- // server-startup shape in `test-harness-infra.ts`.
32
- export { buildHarnessCrashMessage } from './test-harness-infra.js';
33
- // The no-output-stall triage text lives in `test-stall-triage.ts` (it is
34
- // operator advice, not classification) and is re-exported here so the
35
- // command layer keeps importing its harness diagnostics from one module.
36
- export { headedDisplayAsleepVerdictNote, headedNoOutputTimeoutHint } from './test-stall-triage.js';
37
- const TEST_START_PATTERN = /\bTEST-START\b/;
38
- /**
39
- * Structured-log execution marker (`mach xpcshell-test` mozlog output uses
40
- * `TEST_START`/`SUITE_END` with underscores, not the hyphenated
41
- * `TEST-START` the browser-chrome dispatch prints).
42
- */
43
- const STRUCTURED_TEST_START_PATTERN = /\bTEST_START\b/;
44
- const SUITE_END_PATTERN = /\bSUITE_END\b/;
45
- const GREEN_UNEXPECTED_SUMMARY_PATTERN = /\bUnexpected results:\s*0\b/;
46
- const NONZERO_UNEXPECTED_SUMMARY_PATTERN = /\bUnexpected results:\s*[1-9]/;
47
- /**
48
- * Execution signals emitted by the suite-specific xpcshell dispatch
49
- * (`mach xpcshell-test`), which does not print `TEST-START` lines the way
50
- * the generic `mach test` / browser-chrome dispatch does. A passing
51
- * single-file xpcshell run prints a result-summary block instead
52
- * (`TEST_END: Test PASS`, `Ran 16 checks`, `Unexpected results: 0`), so
53
- * keying execution purely on `TEST-START` mis-reads a green xpcshell run as
54
- * "no tests started".
55
- *
56
- * These markers are xpcshell-specific on purpose: the bare `Passed: 0` /
57
- * `Failed: 0` summary that the no-output hang shape prints is deliberately
58
- * not matched here, because that case must still read as `no-tests`.
59
- */
60
- const XPCSHELL_RESULT_SUMMARY_PATTERN = /\bTEST_END\b|\bRan \d+ checks?\b|\bResult summary:/i;
61
- const UNEXPECTED_LINE_PATTERN = /^.*\bTEST-UNEXPECTED-[A-Z-]+\b.*$/gm;
62
- /**
63
- * A `FAIL` token that is harness-shaped. Not a bare `\bFAIL\b`
64
- * word match: that matched any output line containing the ordinary English
65
- * word, so a test's own passing diagnostic could manufacture a red run (see
66
- * {@link realUnexpectedFailureLines}). It also matched `TEST-KNOWN-FAIL`,
67
- * an expected failure, and counted it as a real one.
68
- *
69
- * The `TEST-` prefix is what makes the token the harness's rather than
70
- * prose, and the negative lookahead is what keeps a known-fail annotation
71
- * out of the evidence set.
72
- */
73
- const FAIL_LINE_PATTERN = /^.*\bTEST-(?!KNOWN-FAIL\b)[A-Z-]*FAIL\b.*$/gm;
74
- /**
75
- * The three concrete shapes Gecko prints for a real assertion failure.
76
- * Case-sensitive and punctuation-anchored on purpose: the previous
77
- * `/\b(?:Assertion failure|MOZ_ASSERT|ASSERTION)\b/gim` was
78
- * case-insensitive, so the ordinary English word "assertion" in a passing
79
- * diagnostic ("If an assertion below times out, this is why") was read as
80
- * a failure, and the verdict then named that diagnostic as the first real
81
- * test failure, pointing the reader at the wrong line.
82
- */
83
- const ASSERTION_LINE_PATTERN = /^.*(?:Assertion failure:|MOZ_ASSERT\(|###!!! ASSERTION).*$/gm;
84
- export const SHUTDOWN_REENTRY_PATTERN = /Application shut down \(without crashing\) in the middle of a test/i;
85
- const FOCUS_STALL_PATTERN = /must wait for focus/i;
86
- const TRACEBACK_PATTERN = /Traceback \(most recent call last\)/;
87
- const NO_OUTPUT_TIMEOUT_PATTERN = /timed out after \d+ seconds with no output/i;
88
- /**
89
- * Crash-marker lines mozcrash / the mochitest harness print when the browser
90
- * process itself died. Matched against the raw output (never noise-stripped):
91
- * any of these proves the run was truncated by a crash, so an embedded green
92
- * summary is under-reporting, not a result. `Main app process: killed by
93
- * SIGSEGV` at the second of eight files with a `Passed: 2 / Failed: 0`
94
- * summary is the shape this exists to catch.
95
- */
96
- const CRASH_MARKER_PATTERNS = [
97
- /Main app process: killed by SIG\w+/,
98
- /\bPROCESS-CRASH\b/,
99
- // The minidump-processing header shapes mozcrash emits when it walks a
100
- // crash dump after the run.
101
- /mozcrash.*minidump/i,
102
- /Crash dump filename/i,
103
- /Thread \d+ \(crashed\)/,
104
- ];
105
- /**
106
- * Startup-traceback fingerprints from the mozlog resource monitor / psutil
107
- * on macOS. Each is matched per-line so the evidence line in the report is
108
- * the concrete failure, not the whole traceback.
109
- */
110
- // A `_DegradedReading` fallback that is not a real namedtuple duck type
111
- // crashes mozsystemmonitor on the fallback itself (`_build_meta` subscripts
112
- // the reading, `_collect` unpacks it). A startup abort with zero TEST-START
113
- // lines from this family is a crash, not a test failure. The `_collect
114
- // failed` variant is caught-and-logged, so it carries no Traceback header.
115
- // It gets its own zero-TEST-START check in `detectHarnessCrashSignature`
116
- // besides joining the traceback cluster.
117
- const DEGRADED_READING_CRASH_SIGNALS = [
118
- /'_DegradedReading' object is not subscriptable/,
119
- /'_DegradedReading' object is not iterable/,
120
- ];
121
- const STARTUP_TRACEBACK_SIGNALS = [
122
- /AttributeError:.*SystemResourceMonitor/,
123
- /'SystemResourceMonitor' object has no attribute/,
124
- /poll_interval/,
125
- /host_statistics64/,
126
- /HOST_VM_INFO64/,
127
- /\(ipc\/mig\) array not large enough/,
128
- /psutil\.[A-Za-z]*Error/,
129
- // On a degraded host every collector sample is rejected, aggregation has
130
- // nothing, and mozbuild's log_resource_usage dies on
131
- // usage["io"].read_bytes AFTER a fully successful compile ("Error running
132
- // mach" with complete artifacts). Environmental, not a build regression:
133
- // the protected build retries it, since an incremental retry is cheap and
134
- // the guard keeps the retry green.
135
- /AttributeError: 'NoneType' object has no attribute 'read_bytes'/,
136
- ...DEGRADED_READING_CRASH_SIGNALS,
137
- ];
138
- function findLine(output, patterns) {
139
- for (const line of output.split(/\r?\n/)) {
140
- if (patterns.some((p) => p.test(line)))
141
- return line.trim();
142
- }
143
- return undefined;
144
- }
145
- /**
146
- * Non-signal noise lines: the resource-monitor degrade path (FireForge's own
147
- * guard plus mozlog's `_collect failed`) prints warnings on runs that then
148
- * complete green. Without excluding them, every multi-file suite reports
149
- * CRASH because these lines match the startup-traceback signals even though
150
- * the embedded summary is fully green.
151
- */
152
- const NOISE_LINE_PATTERNS = [
153
- /\bUserWarning\b/,
154
- /psutil failed to run/i,
155
- // `_collect failed` chatter is noise on green runs, EXCEPT the
156
- // `_DegradedReading` variant: that is the crash evidence for the
157
- // "object is not iterable" startup-abort signature above and must
158
- // survive stripNonSignalNoise.
159
- /_collect failed(?!.*_DegradedReading)/i,
160
- /FireForge: host resource monitor degraded/i,
161
- /warnings\.warn\(/,
162
- // mozsystemmonitor's parent-side drain loop rejecting a malformed sample.
163
- // mach sometimes reprints the warning text without the `UserWarning:`
164
- // token, and a run that completes despite the stream must never classify
165
- // as crash on it.
166
- /failed to read the received data/i,
167
- ];
168
- /** Matches the caught/telemetry context that marks a traceback as benign. */
169
- const BENIGN_TRACEBACK_CONTEXT = /telemetry|glean/i;
170
- /**
171
- * Strips non-signal noise from captured output before crash-signature
172
- * matching: resource-monitor degradation warnings, and traceback blocks
173
- * that mach caught itself (telemetry submission tracebacks are printed but
174
- * never abort the run). The stripped text is used only as crash evidence.
175
- * Classification of test results still reads the full output.
176
- */
177
- export function stripNonSignalNoise(output) {
178
- const lines = output.split(/\r?\n/);
179
- const kept = [];
180
- for (let i = 0; i < lines.length; i += 1) {
181
- const line = lines[i] ?? '';
182
- if (NOISE_LINE_PATTERNS.some((p) => p.test(line)))
183
- continue;
184
- if (TRACEBACK_PATTERN.test(line)) {
185
- // Collect the whole traceback block: the header, indented frame/code
186
- // lines, and the trailing unindented exception line.
187
- const block = [line];
188
- let j = i + 1;
189
- for (; j < lines.length; j += 1) {
190
- const blockLine = lines[j] ?? '';
191
- block.push(blockLine);
192
- const isIndented = /^\s/.test(blockLine) || blockLine.trim().length === 0;
193
- if (!isIndented)
194
- break; // unindented exception line terminates the block
195
- }
196
- if (BENIGN_TRACEBACK_CONTEXT.test(block.join('\n'))) {
197
- i = j; // drop the whole caught-telemetry traceback block
198
- continue;
199
- }
200
- // A real traceback stays in evidence line-by-line (minus noise lines
201
- // already filtered above).
202
- }
203
- kept.push(line);
204
- }
205
- return kept.join('\n');
206
- }
207
- /**
208
- * True when the output carries any execution signal: the browser-chrome
209
- * `TEST-START` marker, the structured-log `TEST_START` marker, or the
210
- * suite-specific xpcshell result-summary block.
211
- */
212
- function hasExecutionSignal(output) {
213
- return (TEST_START_PATTERN.test(output) ||
214
- STRUCTURED_TEST_START_PATTERN.test(output) ||
215
- hasXpcshellResultSummary(output));
216
- }
217
- /**
218
- * Finds the first crash-marker line in the RAW output (see
219
- * {@link CRASH_MARKER_PATTERNS}), or undefined when the run shows no
220
- * crash evidence. Exported for direct unit testing.
221
- */
222
- export function findCrashMarkerLine(output) {
223
- return findLine(output, CRASH_MARKER_PATTERNS);
224
- }
225
- /**
226
- * True when the summary lines LOOK green: execution signal, `Unexpected
227
- * results: 0` with no non-zero count, `SUITE_END`, no real
228
- * `TEST-UNEXPECTED-*` lines. Blind to crash/truncation
229
- * evidence: {@link hasCompletedGreenSummary} layers that on top, and
230
- * {@link classifyHarnessRun} needs the distinction to report why a
231
- * green-shaped summary was rejected.
232
- */
233
- function hasGreenShapedSummary(output) {
234
- return (hasExecutionSignal(output) &&
235
- SUITE_END_PATTERN.test(output) &&
236
- GREEN_UNEXPECTED_SUMMARY_PATTERN.test(output) &&
237
- !NONZERO_UNEXPECTED_SUMMARY_PATTERN.test(output) &&
238
- realUnexpectedFailureLines(output).length === 0);
239
- }
240
- /**
241
- * True when the output embeds a completed, green suite summary: an execution
242
- * signal, `Unexpected results: 0` (and no non-zero unexpected count), a
243
- * `SUITE_END` marker, no real `TEST-UNEXPECTED-*` lines, and no crash
244
- * marker. Such a run finished its suite, so any startup-traceback-shaped
245
- * noise in the same output is non-fatal and this vetoes
246
- * signature-based crash classification. Without the veto, fully green
247
- * sharded runs report `CRASH (N attempts)` because degradation warnings
248
- * match the psutil signals. A summary printed after a crash marker is not
249
- * "completed": it only covers the files that ran before the crash.
250
- * Exported for direct unit testing.
251
- */
252
- export function hasCompletedGreenSummary(output) {
253
- return hasGreenShapedSummary(output) && findCrashMarkerLine(output) === undefined;
254
- }
255
- /** Basename shape of a mozbuild-manifest test implementation file. */
256
- export const TEST_FILE_BASENAME_PATTERN = /^(?:browser|test)_.*\.m?js$/;
257
- /**
258
- * Start/end execution markers, both log dialects: the structured mozlog
259
- * `TEST_START`/`TEST_END` pair and the human browser-chrome
260
- * `TEST-START`/`TEST-OK` pair. `TEST-UNEXPECTED-*` end shapes are
261
- * irrelevant here, since any such line already fails the green-summary check
262
- * before completeness is consulted.
263
- */
264
- export const START_MARKER_PATTERN = /\bTEST[-_]START\b[:| ]*\s*(\S+)?/;
265
- const END_MARKER_PATTERN = /\bTEST[-_]END\b|\bTEST-OK\b/;
266
- /**
267
- * Cross-checks run completeness against the requested test files: every
268
- * requested file must produce a start marker, and every started test must
269
- * produce an end marker (the harness emits both even for failing files).
270
- *
271
- * Ends are paired with starts positionally (last open start is closed by
272
- * the next end), not by filename: the xpcshell dialect's `TEST_END: Test
273
- * PASS` lines do not name the file. Requested paths that are not
274
- * test-file-shaped (directories, manifests) are skipped for the
275
- * never-started check. The start/end pairing scan covers them regardless.
276
- * Exported for direct unit testing.
277
- */
278
- export function analyzeTestCompleteness(output, requestedPaths) {
279
- const startedNames = [];
280
- const openTests = [];
281
- for (const line of output.split(/\r?\n/)) {
282
- const startMatch = START_MARKER_PATTERN.exec(line);
283
- if (startMatch) {
284
- const name = startMatch[1] ?? '(unnamed test)';
285
- startedNames.push(name);
286
- openTests.push(name);
287
- continue;
288
- }
289
- if (END_MARKER_PATTERN.test(line)) {
290
- openTests.pop();
291
- }
292
- }
293
- const neverStarted = requestedPaths.filter((path) => {
294
- const base = path.slice(path.lastIndexOf('/') + 1);
295
- if (!TEST_FILE_BASENAME_PATTERN.test(base))
296
- return false;
297
- return !startedNames.some((name) => name.includes(base));
298
- });
299
- return { neverStarted, neverEnded: openTests };
300
- }
301
- /**
302
- * True when the captured output carries the suite-specific xpcshell
303
- * result-summary block, which proves tests executed even though the
304
- * xpcshell dispatch emits no `TEST-START` line. Used alongside
305
- * `TEST_START_PATTERN` so a green single-file xpcshell run is not
306
- * mis-classified as `no-tests`. Exported for direct unit testing.
307
- */
308
- function hasXpcshellResultSummary(output) {
309
- return XPCSHELL_RESULT_SUMMARY_PATTERN.test(output);
310
- }
311
- /** Unexpected-failure lines that are not the shutdown re-entry artifact. */
312
- function realUnexpectedFailureLines(output) {
313
- const matches = [
314
- ...(output.match(UNEXPECTED_LINE_PATTERN) ?? []),
315
- ...(output.match(FAIL_LINE_PATTERN) ?? []),
316
- ...(output.match(ASSERTION_LINE_PATTERN) ?? []),
317
- ];
318
- if (NONZERO_UNEXPECTED_SUMMARY_PATTERN.test(output)) {
319
- const summary = output
320
- .split(/\r?\n/)
321
- .find((line) => NONZERO_UNEXPECTED_SUMMARY_PATTERN.test(line));
322
- if (summary)
323
- matches.push(summary);
324
- }
325
- return [...new Set(matches.map((line) => line.trim()))].filter((line) => !SHUTDOWN_REENTRY_PATTERN.test(line));
326
- }
327
- /**
328
- * Non-global copies of the unexpected/assertion patterns for per-line use.
329
- * The `g`-flagged module patterns carry `lastIndex` state across `.test()`
330
- * calls and must never be reused line-by-line.
331
- */
332
- const UNEXPECTED_LINE_SINGLE = /\bTEST-UNEXPECTED-[A-Z-]+\b/;
333
- /**
334
- * Context lines the chrome/xpcshell harnesses print directly under a
335
- * TEST-UNEXPECTED line: `Got …` / `Expected …` / `Actual …`, Assert
336
- * messages, diff markers, stack-trace heads, and indented continuation
337
- * lines.
338
- */
339
- const FAILURE_CONTEXT_LINE_PATTERN = /^(?:\s*(?:Got\b|Expected\b|Actual\b|Assert\w*\b|Stack trace:|[-+]\s)|\s{2,}\S)/;
340
- /** Cap on context lines echoed under a single TEST-UNEXPECTED line. */
341
- const FAILURE_BLOCK_CONTEXT_LIMIT = 6;
342
- /**
343
- * Collects the first `limit` TEST-UNEXPECTED-* lines with their trailing
344
- * assertion/diff context, one string per block. The shutdown-reentry
345
- * artifact is excluded (it is harness noise, not a test result). When more
346
- * than `limit` blocks exist, a final `…(+N more …)` note is appended so the
347
- * operator knows the echo was truncated. Pure. Exported for unit tests.
348
- */
349
- export function collectUnexpectedFailureBlocks(output, limit = 5) {
350
- const lines = output.split(/\r?\n/);
351
- const blocks = [];
352
- let skipped = 0;
353
- for (let i = 0; i < lines.length; i++) {
354
- const line = lines[i] ?? '';
355
- if (!UNEXPECTED_LINE_SINGLE.test(line) || SHUTDOWN_REENTRY_PATTERN.test(line))
356
- continue;
357
- if (blocks.length >= limit) {
358
- skipped++;
359
- continue;
360
- }
361
- const block = [line.trim()];
362
- let contextCount = 0;
363
- for (let j = i + 1; j < lines.length && contextCount < FAILURE_BLOCK_CONTEXT_LIMIT; j++) {
364
- const next = lines[j] ?? '';
365
- if (UNEXPECTED_LINE_SINGLE.test(next))
366
- break;
367
- if (!FAILURE_CONTEXT_LINE_PATTERN.test(next))
368
- break;
369
- block.push(next.trimEnd());
370
- contextCount++;
371
- }
372
- blocks.push(block.join('\n'));
373
- }
374
- if (skipped > 0) {
375
- blocks.push(`…(+${skipped} more TEST-UNEXPECTED line${skipped === 1 ? '' : 's'} not shown)`);
376
- }
377
- return blocks;
378
- }
379
- function detectSecondaryHarnessNoise(output) {
380
- const evidence = stripNonSignalNoise(output);
381
- if (TRACEBACK_PATTERN.test(evidence)) {
382
- const signalLine = findLine(evidence, STARTUP_TRACEBACK_SIGNALS);
383
- if (signalLine) {
384
- return {
385
- reason: 'harness traceback also present (resource monitor/psutil)',
386
- line: signalLine,
387
- };
388
- }
389
- }
390
- const timeoutLine = findLine(evidence, [NO_OUTPUT_TIMEOUT_PATTERN]);
391
- if (timeoutLine) {
392
- return { reason: 'harness no-output timeout also present', line: timeoutLine };
393
- }
394
- return undefined;
395
- }
396
- /**
397
- * Detects the known harness-crash shapes in captured mach output.
398
- * Returns undefined for anything that looks like a genuine test result.
399
- */
400
- export function detectHarnessCrashSignature(output) {
401
- // Browser/app process crashes are deterministic crash evidence, not
402
- // retriable environmental harness noise. Leave them to
403
- // `classifyHarnessRun` so it can reject green-looking truncated summaries
404
- // with the crash line plus never-started/never-ended file evidence.
405
- if (findCrashMarkerLine(output) !== undefined) {
406
- return undefined;
407
- }
408
- const hasTestStart = hasExecutionSignal(output);
409
- const realFailures = realUnexpectedFailureLines(output);
410
- // A completed green embedded summary vetoes signature-based crash
411
- // classification outright: the suite finished, so any startup-shaped
412
- // noise in the same output was non-fatal. (The post-green shutdown
413
- // re-entry shape below is exempt: it is a crash verdict on
414
- // an otherwise-green log, keyed on its own explicit markers.)
415
- const greenSummaryVeto = hasCompletedGreenSummary(output);
416
- // Startup traceback cluster (resource monitor / psutil), scanned over
417
- // noise-stripped evidence so degradation warnings and caught telemetry
418
- // tracebacks never count. Real test failures take precedence: a
419
- // traceback printed during teardown of a genuinely failing run must not
420
- // get the whole run retried.
421
- const evidence = stripNonSignalNoise(output);
422
- if (!greenSummaryVeto && TRACEBACK_PATTERN.test(evidence) && realFailures.length === 0) {
423
- const signalLine = findLine(evidence, STARTUP_TRACEBACK_SIGNALS);
424
- if (signalLine) {
425
- return { reason: 'harness startup traceback (resource monitor/psutil)', line: signalLine };
426
- }
427
- }
428
- // Post-browser-startup hang: no test ever started, the harness died at
429
- // the no-output timeout. A trailing "Passed: 0" summary is part of this
430
- // shape and must not be read as a result.
431
- if (!hasTestStart) {
432
- // Startup abort on the degraded-reading fallback family: the `_collect
433
- // failed: '_DegradedReading' ...` variant is caught-and-logged (no
434
- // Traceback header), so the traceback cluster above never sees it.
435
- if (realFailures.length === 0) {
436
- const degradedLine = findLine(evidence, DEGRADED_READING_CRASH_SIGNALS);
437
- if (degradedLine) {
438
- return {
439
- reason: 'degraded resource reading crashed the harness fallback (_DegradedReading)',
440
- line: degradedLine,
441
- };
442
- }
443
- }
444
- const timeoutLine = findLine(evidence, [NO_OUTPUT_TIMEOUT_PATTERN]);
445
- if (timeoutLine) {
446
- return { reason: 'no-output timeout before any test started', line: timeoutLine };
447
- }
448
- return undefined;
449
- }
450
- // Post-green shutdown re-entry: every unexpected line is the
451
- // shutdown-mid-test artifact, the run stalled on focus, and at least one
452
- // such artifact exists, on an otherwise green log.
453
- const shutdownLine = findLine(output, [SHUTDOWN_REENTRY_PATTERN]);
454
- if (shutdownLine && realFailures.length === 0 && FOCUS_STALL_PATTERN.test(output)) {
455
- return { reason: 'post-green shutdown re-entry during harness teardown', line: shutdownLine };
456
- }
457
- return undefined;
458
- }
459
- /**
460
- * Classifies a completed harness run. The decision tree, in order:
461
- *
462
- * 1. A recognized crash signature wins regardless of exit code (the
463
- * shutdown re-entry shape exits non-zero on an otherwise green run,
464
- * and the hang shape can even exit zero with a `Passed: 0` summary).
465
- * 2. No execution signal with explicit paths requested means no test ran.
466
- * A mochitest server that failed to start explains that, and is a
467
- * retriable infrastructure failure (`harness-crash` with
468
- * `reason=server-startup` on the verdict line). Otherwise it is
469
- * `no-tests`, even when the exit code is zero. The execution signal is
470
- * a `TEST-START` line (generic `mach test` / browser-chrome dispatch)
471
- * or the suite-specific xpcshell result-summary block (the xpcshell
472
- * dispatch prints no `TEST-START`). Bare `Passed:`/`Failed:` summary
473
- * lines are still not trusted as evidence of execution.
474
- * 3. Exit code zero with tests started is a pass. Anything else is a
475
- * test failure for the regular diagnosis chain, except a non-zero
476
- * exit whose embedded summary completed green and shows no crash
477
- * marker and no truncated/never-started requested file, which is a
478
- * pass with a `greenSummaryOverride` note (harness noise owns the
479
- * exit code). A green-shaped summary with such evidence is rejected
480
- * (`greenSummaryRejected`) and fails.
481
- */
482
- export function classifyHarnessRun(exitCode, output, requestedPaths) {
483
- const counts = extractSummaryCounts(output);
484
- const profileFailure = classifyProfileArgumentFailure(output);
485
- if (profileFailure)
486
- return { ...profileFailure, ...counts };
487
- const realFailures = realUnexpectedFailureLines(output);
488
- const firstRealFailure = realFailures[0];
489
- const failureBlocks = collectUnexpectedFailureBlocks(output);
490
- const secondaryHarnessSignature = firstRealFailure !== undefined ? detectSecondaryHarnessNoise(output) : undefined;
491
- // Checked before signature detection: a suite that ran clean and then died
492
- // in known upstream teardown noise is a pass, not a crash. The teardown
493
- // traceback matches the startup-traceback cluster, and the green-summary
494
- // veto over that cluster requires a `SUITE_END` marker, which this very
495
- // traceback is what prevents from printing. Without this check a
496
- // substantively green suite (`Ran N checks` / `Unexpected results: 0`, no
497
- // unexpected lines) reports CRASH, indistinguishable at the summary level
498
- // from a red run. Every hard-evidence veto still applies: a crash marker,
499
- // a non-zero unexpected count, any real TEST-UNEXPECTED line, the
500
- // shutdown-re-entry shape, or a requested file that never started keeps
501
- // the run failing. Only the missing shutdown marker is forgiven, and only
502
- // when the recognized teardown traceback explains it.
503
- const teardownOverride = evaluateGreenTeardownOverride(output, counts, realFailures, requestedPaths);
504
- if (teardownOverride.accepted) {
505
- return { kind: 'tests-ran-ok', note: 'harness teardown noise ignored', ...counts };
506
- }
507
- // A run that carried the recognized teardown noise and still failed says
508
- // WHICH condition rejected the override, on the one greppable line.
509
- const teardownNote = teardownOverride.rejectedBy !== undefined
510
- ? `green-teardown override rejected: ${teardownOverride.rejectedBy}`
511
- : undefined;
512
- const withNotes = (verdict, extra) => {
513
- const notes = [teardownNote, extra].filter((n) => n !== undefined);
514
- return notes.length > 0 ? { ...verdict, note: notes.join('; ') } : verdict;
515
- };
516
- const signature = detectHarnessCrashSignature(output);
517
- if (signature) {
518
- return withNotes({ kind: 'harness-crash', signature, ...counts });
519
- }
520
- const ranTests = hasExecutionSignal(output);
521
- if (!ranTests && requestedPaths.length > 0) {
522
- const serverStartup = detectServerStartupFailure(output);
523
- return serverStartup === undefined
524
- ? { kind: 'no-tests', ...counts }
525
- : { kind: 'harness-crash', signature: serverStartup, ...counts };
526
- }
527
- if (exitCode === 0) {
528
- return { kind: 'tests-ran-ok', ...counts };
529
- }
530
- // Exit codes follow the corrected verdict: a run whose embedded summary
531
- // completed green is a pass even when the wrapper exit code went non-zero
532
- // on harness noise. Real failures always carry a non-zero unexpected count
533
- // or TEST-UNEXPECTED lines, both of which fail the green-summary check.
534
- //
535
- // The override must never win over crash or truncation evidence: a SIGSEGV
536
- // at the second of eight files produces a "green" `Passed: 2 / Failed: 0`
537
- // summary and mach exit 1, green only because the crash prevented the
538
- // other six files from producing any results. A crash marker or an
539
- // unpaired/never-started requested file rejects the override with the
540
- // evidence attached, so the caller can say why.
541
- if (hasGreenShapedSummary(output)) {
542
- const crashLine = findCrashMarkerLine(output);
543
- const completeness = analyzeTestCompleteness(output, requestedPaths);
544
- if (crashLine !== undefined ||
545
- completeness.neverStarted.length > 0 ||
546
- completeness.neverEnded.length > 0) {
547
- return withNotes({
548
- kind: 'test-failures',
549
- ...counts,
550
- ...(firstRealFailure !== undefined ? { realFailureLine: firstRealFailure } : {}),
551
- ...(failureBlocks.length > 0 ? { realFailureBlocks: failureBlocks } : {}),
552
- ...(secondaryHarnessSignature !== undefined ? { secondaryHarnessSignature } : {}),
553
- greenSummaryRejected: {
554
- ...(crashLine !== undefined ? { crashLine } : {}),
555
- neverStarted: completeness.neverStarted,
556
- neverEnded: completeness.neverEnded,
557
- },
558
- });
559
- }
560
- return { kind: 'tests-ran-ok', greenSummaryOverride: true, ...counts };
561
- }
562
- const wordMatchNote = unmarkedFailureEvidenceNote(counts, realFailures);
563
- return withNotes({
564
- kind: 'test-failures',
565
- ...counts,
566
- ...(firstRealFailure !== undefined ? { realFailureLine: firstRealFailure } : {}),
567
- ...(failureBlocks.length > 0 ? { realFailureBlocks: failureBlocks } : {}),
568
- ...(secondaryHarnessSignature !== undefined ? { secondaryHarnessSignature } : {}),
569
- }, wordMatchNote);
570
- }
571
- /**
572
- * True when the capture shows a substantively GREEN suite whose only
573
- * unexplained residue is the recognized mozsystemmonitor teardown
574
- * traceback.
575
- *
576
- * Requires, all of them: tests actually executed, the summary printed
577
- * `Ran N checks` with an explicit `Unexpected results: 0`, no non-zero
578
- * unexpected count anywhere, no real `TEST-UNEXPECTED-*`/assertion line,
579
- * no crash marker, every requested test file both started and ended, and
580
- * the recognized teardown traceback is present. Anything short of that
581
- * falls through to the normal (failing) chain, with the failing condition
582
- * named, so the next occurrence is a filed bug rather than another
583
- * undiagnosable re-run.
584
- *
585
- * The conditions are evaluated in a fixed order and the first failing one
586
- * is reported. A run can violate several, and reporting one deterministic
587
- * condition beats an unordered list of everything that happened to be true.
588
- */
589
- function evaluateGreenTeardownOverride(output, counts, realFailures, requestedPaths) {
590
- if (!hasKnownTeardownNoise(output))
591
- return { accepted: false };
592
- const reject = (rejectedBy) => ({ accepted: false, rejectedBy });
593
- if (!hasExecutionSignal(output))
594
- return reject('no execution signal (no TEST-START/TEST_START)');
595
- if (counts.checks === undefined)
596
- return reject('summary printed no "Ran N checks" line');
597
- // `counts.unexpected === 0` IS the explicit-`Unexpected results: 0` test
598
- // the previous revision spelled a second time with
599
- // GREEN_UNEXPECTED_SUMMARY_PATTERN: the count is parsed from the same
600
- // line and an absent line leaves it undefined. The two are kept apart in
601
- // the message because "printed no such line" and "printed a non-zero one"
602
- // are different findings for the reader.
603
- if (counts.unexpected === undefined) {
604
- return reject('summary printed no "Unexpected results:" line');
605
- }
606
- if (counts.unexpected !== 0) {
607
- return reject(`summary reported unexpected=${counts.unexpected}`);
608
- }
609
- if (NONZERO_UNEXPECTED_SUMMARY_PATTERN.test(output)) {
610
- return reject('a non-zero "Unexpected results:" line is present somewhere in the output');
611
- }
612
- if (realFailures.length > 0) {
613
- return reject(`${realFailures.length} matched failure line(s), first: ${truncateEvidence(realFailures[0] ?? '')}`);
614
- }
615
- const crashLine = findCrashMarkerLine(output);
616
- if (crashLine !== undefined)
617
- return reject(`crash marker present: ${truncateEvidence(crashLine)}`);
618
- // The post-green shutdown re-entry shape is deliberately a crash verdict
619
- // on an otherwise-green log. It must not be swept up here.
620
- if (SHUTDOWN_REENTRY_PATTERN.test(output)) {
621
- return reject('post-green shutdown re-entry shape present');
622
- }
623
- const completeness = analyzeTestCompleteness(output, requestedPaths);
624
- if (completeness.neverStarted.length > 0) {
625
- return reject(`requested file(s) never started: ${completeness.neverStarted.join(', ')}`);
626
- }
627
- if (completeness.neverEnded.length > 0) {
628
- return reject(`requested file(s) never ended: ${completeness.neverEnded.join(', ')}`);
629
- }
630
- return { accepted: true };
631
- }
632
- /**
633
- * Parses the numeric counts from the harness's embedded result summary
634
- * (`Ran N checks` / `Unexpected results: N`). The last occurrence of each
635
- * wins: a multi-suite run prints one summary per suite and the final one
636
- * covers the aggregate the operator sees. Absent counts are omitted (the
637
- * `FIREFORGE-VERDICT:` contract: an absent key means "summary did not
638
- * print it", never zero).
639
- */
640
- export function extractSummaryCounts(output) {
641
- const checks = lastCapturedCount(output, /\bRan (\d+) checks?\b/g);
642
- const unexpected = lastCapturedCount(output, /\bUnexpected results:\s*(\d+)\b/g);
643
- return {
644
- ...(checks !== undefined ? { checks } : {}),
645
- ...(unexpected !== undefined ? { unexpected } : {}),
646
- };
647
- }
648
- /** Last captured integer for `pattern` in `output`, if any occurrence matches. */
649
- function lastCapturedCount(output, pattern) {
650
- let last;
651
- for (const match of output.matchAll(pattern)) {
652
- const captured = match[1];
653
- if (captured !== undefined) {
654
- last = Number.parseInt(captured, 10);
655
- }
656
- }
657
- return last;
658
- }
659
- /**
660
- * Formats the machine-readable `FIREFORGE-VERDICT:` line: the stable,
661
- * greppable last line every `fireforge test` run prints so harness-verdict
662
- * consumers stop regexing mach internals. The status follows this
663
- * classifier, never the raw exit code: a crash-classified run says
664
- * `FAIL reason=crash` even at exit 0, and a green-summary-override pass
665
- * says `PASS` despite a non-zero mach exit. Count keys are omitted when
666
- * the embedded summary did not print them. Sharded aggregate lines carry
667
- * a trailing `shards=<passed>/<total>` instead of counts (counts belong
668
- * to a single embedded suite summary).
669
- */
670
- export function formatFireforgeVerdictLine(verdict, shards) {
671
- const counts = (verdict.checks !== undefined ? ` checks=${verdict.checks}` : '') +
672
- (verdict.unexpected !== undefined ? ` unexpected=${verdict.unexpected}` : '');
673
- const tail = `${formatShardsSuffix(shards)}${verdict.note !== undefined ? ` (${verdict.note})` : ''}`;
674
- if (verdict.kind === 'tests-ran-ok')
675
- return `FIREFORGE-VERDICT: PASS${counts}${tail}`;
676
- const reason = verdict.kind === 'harness-crash' ? (verdict.signature?.verdictReason ?? 'crash') : verdict.kind;
677
- return `FIREFORGE-VERDICT: FAIL reason=${reason}${counts}${formatIncompleteSuffix(verdict.incomplete)}${tail}`;
678
- }
679
- /**
680
- * Builds the operator-facing failure message for a green-looking summary
681
- * that was rejected on crash or truncation evidence (never trusted as a
682
- * pass, regardless of how green the embedded counts look).
683
- */
684
- export function buildGreenSummaryRejectedMessage(rejection, exitCode) {
685
- const evidence = [];
686
- if (rejection.crashLine !== undefined) {
687
- evidence.push(` - crash evidence: ${rejection.crashLine}`);
688
- }
689
- if (rejection.neverStarted.length > 0) {
690
- evidence.push(` - requested test file(s) that never started: ${rejection.neverStarted.join(', ')}`);
691
- }
692
- if (rejection.neverEnded.length > 0) {
693
- evidence.push(` - test file(s) that started but never finished: ${rejection.neverEnded.join(', ')}`);
694
- }
695
- return (`mach exited ${exitCode} and the embedded suite summary looks green, but FireForge did NOT ` +
696
- 'treat the run as passed:\n\n' +
697
- `${evidence.join('\n')}\n\n` +
698
- 'A crash- or truncation-shortened run under-reports: the "green" counts only cover the ' +
699
- 'files that ran before the run died, so the summary is not a suite result. Treat this as a ' +
700
- 'FAILED run — check the crash/truncation point in the output above, then re-run the ' +
701
- 'remaining files.');
702
- }
703
- /**
704
- * Exit codes that mean "the child died on SIGSEGV": Node reports a
705
- * signal-killed child as the negated signal number, while a shell layer
706
- * in between reports `128 + signal`. Both shapes reach FireForge
707
- * depending on how mach wrapped the harness.
708
- */
709
- const SIGSEGV_EXIT_CODES = new Set([-11, 139]);
710
- /**
711
- * True when a harness run died on SIGSEGV having produced no test evidence
712
- * whatsoever.
713
- *
714
- * `xpcshell return code: -11` with zero output is the signature of an
715
- * `.sys.mjs` that a packaged module imports but whose `EXTRA_JS_MODULES`
716
- * registration never landed: the module loader faults before any logging
717
- * exists, so there is no import error, no stack, no test output, just a
718
- * dead process. It is indistinguishable from a genuine product crash
719
- * unless someone names the cause.
720
- *
721
- * "Produced no evidence" is semantic rather than a byte
722
- * budget: no execution signal, no real failure line, and no mozcrash
723
- * marker. A run that got far enough to start a test, report a failure, or
724
- * leave a crash dump has evidence of its own, and the regular diagnosis
725
- * chain reads it. This branch is only for the case where there is
726
- * nothing else to say.
727
- *
728
- * Pure. Exported for direct unit testing.
729
- *
730
- * @param exitCode - The harness process exit code
731
- * @param output - Combined stdout/stderr from the run
732
- */
733
- export function isSilentSegfault(exitCode, output) {
734
- if (!SIGSEGV_EXIT_CODES.has(exitCode))
735
- return false;
736
- if (hasExecutionSignal(output))
737
- return false;
738
- if (realUnexpectedFailureLines(output).length > 0)
739
- return false;
740
- return findCrashMarkerLine(output) === undefined;
741
- }
742
- /**
743
- * Names the known cause of a silent SIGSEGV so the operator checks
744
- * moz.build registration FIRST instead of paying a full rebuild cycle to
745
- * rediscover it.
746
- *
747
- * @param exitCode - The harness process exit code
748
- * @param requestedPaths - Test paths the run requested
749
- */
750
- export function buildSilentSegfaultMessage(exitCode, requestedPaths) {
751
- return (`The test harness died on SIGSEGV (exit ${exitCode}) having printed NO output at all.\n\n` +
752
- 'Known cause, check this FIRST: a `.sys.mjs` imported from a packaged module whose ' +
753
- '`EXTRA_JS_MODULES` (or namespaced module list) registration is missing from moz.build. ' +
754
- 'The module loader faults before any logging exists, so an unregistered module produces ' +
755
- 'exactly this shape — a dead process with no import error and no stack.\n\n' +
756
- 'What to do, in order:\n' +
757
- ' 1. Run `fireforge lint --per-patch`: the unregistered-system-module check names a new ' +
758
- 'module imported as a resource URL with no moz.build line.\n' +
759
- ' 2. Run `fireforge verify`: its module-resolution preflight resolves every ' +
760
- '`resource:///modules/…` specifier the queue-owned modules import, including imports ' +
761
- 'added to an EXISTING module — the shape the new-file lint cannot see, and the one that ' +
762
- 'recurs.\n' +
763
- ' 3. Only then look for a product crash: a real one prints a crash dump or a stack.\n\n' +
764
- `Requested paths: ${requestedPaths.join(', ')}`);
765
- }
766
- /**
767
- * Builds the message for a run that produced no `TEST-START` despite
768
- * requesting paths, including exit-code-zero runs whose `Passed: 0`
769
- * summary would otherwise read as a silent false green.
770
- */
771
- export function buildNoTestsRanMessage(exitCode, requestedPaths) {
772
- const exitNote = exitCode === 0
773
- ? 'The harness exited 0 and may have printed a summary line, but a summary without a single TEST-START is not a test result.'
774
- : `The harness exited ${exitCode} before any TEST-START line.`;
775
- return ('mach test finished without starting any of the requested tests.\n\n' +
776
- `${exitNote}\n\n` +
777
- `Requested paths: ${requestedPaths.join(', ')}\n\n` +
778
- 'Check that the paths are registered in their test manifest (browser.toml / xpcshell.toml) ' +
779
- 'and that the manifest is reachable from moz.build, then retry.');
780
- }