@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
@@ -0,0 +1,826 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Markers. Each reads only at the position the harness writes it, so a test
3
+ // that logs a marker-shaped line changes nothing.
4
+ // ---------------------------------------------------------------------------
5
+ /**
6
+ * What may precede a marker on a line the harness wrote: an instance label
7
+ * (`[job 2] `), mozlog's elapsed time, a mochitest line counter, a log level
8
+ * and xpcshell's `INFO | `. A test's own output reaches the log behind
9
+ * `console.log:`, `GECKO(n)` or similar, so a marker it prints never sits here.
10
+ */
11
+ const HARNESS_LINE_PREFIX = String.raw `^[ \t]*(?:\[[^\]\n]*\][ \t]+)?(?:\d+:\d+(?:\.\d+)?[ \t]+)*(?:\d+[ \t]+)?(?:(?:INFO|WARNING|ERROR|CRITICAL|DEBUG)[ \t]+){0,2}(?:\|[ \t]+)?`;
12
+ const harnessLine = (body, flags = 'm') => new RegExp(`${HARNESS_LINE_PREFIX}${body}`, flags);
13
+ /** A start marker that names a test; mochitest's `TEST-START | Shutdown` announces its own teardown. */
14
+ const EXECUTION_START = harnessLine(String.raw `TEST[-_]START\b(?![:| \t]*Shutdown[ \t]*$)`);
15
+ const SUITE_END = harnessLine(String.raw `SUITE_END\b`);
16
+ const GREEN_UNEXPECTED = harnessLine(String.raw `Unexpected results:[ \t]*0+\b`);
17
+ const NONZERO_UNEXPECTED = harnessLine(String.raw `Unexpected results:[ \t]*0*[1-9]`);
18
+ const NONZERO_FAILED = harnessLine(String.raw `(?:Passed:[ \t]*\d+[ \t]*/[ \t]*)?Failed:[ \t]*0*[1-9]\d*[ \t]*$`);
19
+ const POSITIVE_PASSED = harnessLine(String.raw `Passed:[ \t]*0*[1-9]\d*\b`);
20
+ const ZERO_PASSED = harnessLine(String.raw `Passed:[ \t]*0+\b`);
21
+ /**
22
+ * The suite-specific xpcshell dispatch prints no start lines, but its result
23
+ * block proves tests ran. `Ran 0 checks` is the no-output hang's spelling, so
24
+ * only a positive count counts.
25
+ */
26
+ const XPCSHELL_RESULT_SUMMARY = harnessLine(String.raw `(?:TEST_END\b|Ran [1-9]\d* checks?\b|Result summary:)`, 'im');
27
+ const START_MARKER = harnessLine(String.raw `TEST[-_]START\b[:| \t]*(\S+)?`);
28
+ const END_MARKER = harnessLine(String.raw `(?:TEST_END\b|TEST-OK\b)`);
29
+ const SKIP_MARKER = harnessLine(String.raw `TEST[-_]SKIP(?:PED)?\b[:| \t]*(\S+)?`);
30
+ /** Basename shape of a test file a manifest lists. */
31
+ const TEST_FILE_BASENAME = /^(?:browser|test)_.*\.m?js$/;
32
+ const lines = (text) => text.split(/\r?\n/);
33
+ function findLine(output, patterns) {
34
+ for (const line of lines(output)) {
35
+ if (patterns.some((pattern) => pattern.test(line)))
36
+ return line.trim();
37
+ }
38
+ return undefined;
39
+ }
40
+ /**
41
+ * The test a start line names, or undefined for any other line and for the
42
+ * harness's own `TEST-START | Shutdown`.
43
+ *
44
+ * @param line - One output line
45
+ */
46
+ function parseStartMarker(line) {
47
+ const match = START_MARKER.exec(line);
48
+ if (match === null)
49
+ return undefined;
50
+ return match[1] === 'Shutdown' ? undefined : { name: match[1] };
51
+ }
52
+ function recordMarker(line, into) {
53
+ const start = parseStartMarker(line)?.name;
54
+ if (start !== undefined) {
55
+ into.started.push(start);
56
+ return;
57
+ }
58
+ const skip = SKIP_MARKER.exec(line)?.[1];
59
+ if (skip !== undefined)
60
+ into.skipped.push(skip);
61
+ }
62
+ /**
63
+ * Collects start and skip markers line by line as output streams, so a run
64
+ * whose captured text lost its beginning can still be counted. It grows with
65
+ * the file count, not the output size.
66
+ */
67
+ export function createMarkerTracker() {
68
+ const collected = { started: [], skipped: [] };
69
+ return {
70
+ line: (line) => {
71
+ recordMarker(line, collected);
72
+ },
73
+ markers: () => ({ started: [...collected.started], skipped: [...collected.skipped] }),
74
+ };
75
+ }
76
+ function scanMarkers(output) {
77
+ const markers = { started: [], skipped: [] };
78
+ for (const line of lines(output))
79
+ recordMarker(line, markers);
80
+ return markers;
81
+ }
82
+ function lastCount(output, pattern) {
83
+ let last;
84
+ for (const match of output.matchAll(pattern)) {
85
+ if (match[1] !== undefined)
86
+ last = Number.parseInt(match[1], 10);
87
+ }
88
+ return last;
89
+ }
90
+ /**
91
+ * The counts of the embedded summary. The last occurrence of each wins: a
92
+ * multi-suite run prints one summary per suite.
93
+ *
94
+ * @param output - Captured harness output
95
+ */
96
+ export function extractSummaryCounts(output) {
97
+ const checks = lastCount(output, harnessLine(String.raw `Ran (\d+) checks?\b`, 'gm'));
98
+ const unexpected = lastCount(output, harnessLine(String.raw `Unexpected results:[ \t]*(\d+)\b`, 'gm'));
99
+ return {
100
+ ...(checks === undefined ? {} : { checks }),
101
+ ...(unexpected === undefined ? {} : { unexpected }),
102
+ };
103
+ }
104
+ function lastSuiteEndOffset(output) {
105
+ let last = -1;
106
+ for (const match of output.matchAll(new RegExp(SUITE_END.source, 'gm')))
107
+ last = match.index;
108
+ return last;
109
+ }
110
+ /**
111
+ * Cross-checks starts and ends: every requested test file must start, and
112
+ * every start must end. Ends pair with starts positionally, because the
113
+ * xpcshell dialect's `TEST_END: Test PASS` names no file. A requested path
114
+ * that is not test-file shaped (a directory, a manifest) has no start of its own.
115
+ *
116
+ * @param output - Captured output, which may keep only the tail of a long run
117
+ * @param requested - Dispatched paths
118
+ * @param streamedStarts - Start names seen in the complete stream
119
+ */
120
+ export function analyzeTestCompleteness(output, requested, streamedStarts = []) {
121
+ const startedNames = [...streamedStarts];
122
+ const open = [];
123
+ for (const line of lines(output)) {
124
+ const start = parseStartMarker(line);
125
+ if (start !== undefined) {
126
+ const name = start.name ?? '(unnamed test)';
127
+ startedNames.push(name);
128
+ open.push(name);
129
+ }
130
+ else if (END_MARKER.test(line)) {
131
+ open.pop();
132
+ }
133
+ }
134
+ const neverStarted = requested.filter((path) => {
135
+ const base = path.slice(path.lastIndexOf('/') + 1);
136
+ return TEST_FILE_BASENAME.test(base) && !startedNames.some((name) => name.includes(base));
137
+ });
138
+ return { neverStarted, neverEnded: open };
139
+ }
140
+ // ---------------------------------------------------------------------------
141
+ // Noise: output that never decides a verdict by itself.
142
+ // ---------------------------------------------------------------------------
143
+ /**
144
+ * The resource guard FireForge installs into mach (`engine/resourceGuard.ts`)
145
+ * substitutes `_DegradedReading` for a psutil reading that fails. These
146
+ * errors mean a consumer used that stand-in in a way it does not support:
147
+ * the monitor crashed, so the harness may not have run.
148
+ */
149
+ const DEGRADED_READING = [
150
+ /'_DegradedReading' object is not subscriptable/,
151
+ /'_DegradedReading' object is not iterable/,
152
+ ];
153
+ /**
154
+ * Upstream mozsystemmonitor and psutil failing to read host statistics
155
+ * (macOS's `host_statistics64` among them). They come from mach's resource
156
+ * monitoring, never from a test, so they explain a harness failure.
157
+ */
158
+ const STARTUP_TRACEBACK = [
159
+ /AttributeError:.*SystemResourceMonitor/,
160
+ /'SystemResourceMonitor' object has no attribute/,
161
+ /poll_interval/,
162
+ /host_statistics64/,
163
+ /HOST_VM_INFO64/,
164
+ /\(ipc\/mig\) array not large enough/,
165
+ /psutil\.[A-Za-z]*Error/,
166
+ // mach's resource report at exit, when the monitor collected nothing.
167
+ /AttributeError: 'NoneType' object has no attribute 'read_bytes'/,
168
+ ...DEGRADED_READING,
169
+ ];
170
+ /**
171
+ * Warnings the resource monitor and the FireForge resource guard print when
172
+ * monitoring degrades. Monitoring is outside the harness, so they are never
173
+ * crash evidence.
174
+ */
175
+ const NOISE_LINES = [
176
+ /\bUserWarning\b/,
177
+ /psutil failed to run/i,
178
+ // A `_collect` failure naming `_DegradedReading` is the crash above, not a warning.
179
+ /_collect failed(?!.*_DegradedReading)/i,
180
+ /FireForge: host resource monitor degraded/i,
181
+ /warnings\.warn\(/,
182
+ /failed to read the received data/i,
183
+ ];
184
+ /** Output that can own a non-zero exit on a suite that finished green. */
185
+ const RECOGNIZED_EXIT_NOISE = [...STARTUP_TRACEBACK, ...NOISE_LINES];
186
+ /** A traceback mach caught and printed while submitting telemetry never aborts a run. */
187
+ const BENIGN_TRACEBACK_CONTEXT = /telemetry|glean/i;
188
+ const TRACEBACK = /Traceback \(most recent call last\)/;
189
+ const NO_OUTPUT_TIMEOUT = /timed out after \d+ seconds with no output/i;
190
+ const FOCUS_STALL = /must wait for focus/i;
191
+ const SHUTDOWN_REENTRY = /Application shut down \(without crashing\) in the middle of a test/i;
192
+ /**
193
+ * mozsystemmonitor's teardown failure: stopping a monitor that never started
194
+ * raises an `AttributeError` on `stop_time` or `poll_interval` from
195
+ * `resourcemonitor.py`. It happens after the tests, in mach's own
196
+ * bookkeeping, so it is benign. Another attribute, or a traceback from
197
+ * another file, is something else and is not excused.
198
+ */
199
+ const MONITOR_TEARDOWN_ERROR = /AttributeError: 'SystemResourceMonitor' object has no attribute '(?:stop_time|poll_interval)'/;
200
+ const RESOURCEMONITOR_FRAME = /mozsystemmonitor[/\\]resourcemonitor\.py/;
201
+ const hasMonitorTeardownNoise = (output) => MONITOR_TEARDOWN_ERROR.test(output) && RESOURCEMONITOR_FRAME.test(output);
202
+ function scanNoise(output) {
203
+ const all = lines(output);
204
+ const kept = [];
205
+ let benignTracebacks = 0;
206
+ for (let index = 0; index < all.length; index += 1) {
207
+ const line = all[index] ?? '';
208
+ if (NOISE_LINES.some((pattern) => pattern.test(line)))
209
+ continue;
210
+ if (TRACEBACK.test(line)) {
211
+ // The block: the header, indented frames, and the unindented exception line.
212
+ const block = [line];
213
+ let end = index + 1;
214
+ for (; end < all.length; end += 1) {
215
+ const next = all[end] ?? '';
216
+ block.push(next);
217
+ if (!/^\s/.test(next) && next.trim().length > 0)
218
+ break;
219
+ }
220
+ if (BENIGN_TRACEBACK_CONTEXT.test(block.join('\n'))) {
221
+ benignTracebacks += 1;
222
+ index = end;
223
+ continue;
224
+ }
225
+ }
226
+ kept.push(line);
227
+ }
228
+ return { kept, benignTracebacks };
229
+ }
230
+ /**
231
+ * The output without degradation chatter and caught telemetry tracebacks:
232
+ * crash evidence only. Test results are always read from the full output.
233
+ *
234
+ * @param output - Captured harness output
235
+ */
236
+ export function stripNonSignalNoise(output) {
237
+ return scanNoise(output).kept.join('\n');
238
+ }
239
+ const hasRecognizedExitNoise = (output) => findLine(output, RECOGNIZED_EXIT_NOISE) !== undefined || scanNoise(output).benignTracebacks > 0;
240
+ // ---------------------------------------------------------------------------
241
+ // Failure and crash evidence.
242
+ // ---------------------------------------------------------------------------
243
+ /** Lines mozcrash and the harness print when the browser itself died. */
244
+ const CRASH_MARKERS = [
245
+ /Main app process: killed by SIG\w+/,
246
+ /\bPROCESS-CRASH\b/,
247
+ /mozcrash.*minidump/i,
248
+ /Crash dump filename/i,
249
+ /Thread \d+ \(crashed\)/,
250
+ ];
251
+ const UNEXPECTED_LINES = /^.*\bTEST-UNEXPECTED-[A-Z-]+\b.*$/gm;
252
+ /** A harness `FAIL` token; `TEST-KNOWN-FAIL` is an expected failure and prose is not a token. */
253
+ const FAIL_LINES = /^.*\bTEST-(?!KNOWN-FAIL\b)[A-Z-]*FAIL\b.*$/gm;
254
+ /** The three shapes Gecko prints for an assertion failure; the English word does not count. */
255
+ const ASSERTION_LINES = /^.*(?:Assertion failure:|MOZ_ASSERT\(|###!!! ASSERTION).*$/gm;
256
+ const UNEXPECTED_MARKER = /\bTEST-UNEXPECTED-[A-Z-]+\b/;
257
+ /** Lines the harnesses print under an unexpected line: Got/Expected, Assert text, diffs, stacks. */
258
+ const FAILURE_CONTEXT = /^(?:\s*(?:Got\b|Expected\b|Actual\b|Assert\w*\b|Stack trace:|[-+]\s)|\s{2,}\S)/;
259
+ const FAILURE_CONTEXT_LIMIT = 6;
260
+ /** Harness lines that say what a run waited on or which ports it held. */
261
+ const STARTUP_CONTEXT = /\bport \d{2,5}\b|Waiting for browser|Marionette/i;
262
+ /** A mochitest server that never came up: the httpd's bind failure, and the wait for it. */
263
+ const SERVER_STARTUP_FAILURE = [
264
+ /could not start server on port \d+/,
265
+ /Timed out while waiting for server startup/,
266
+ ];
267
+ /**
268
+ * The first crash-marker line, or undefined when the run shows no crash.
269
+ *
270
+ * @param output - Captured harness output, never noise-stripped
271
+ */
272
+ export function findCrashMarkerLine(output) {
273
+ return findLine(output, CRASH_MARKERS);
274
+ }
275
+ function realFailureLines(output) {
276
+ const matches = [
277
+ ...(output.match(UNEXPECTED_LINES) ?? []),
278
+ ...(output.match(FAIL_LINES) ?? []),
279
+ ...(output.match(ASSERTION_LINES) ?? []),
280
+ ];
281
+ const summary = lines(output).find((line) => NONZERO_UNEXPECTED.test(line));
282
+ if (summary !== undefined)
283
+ matches.push(summary);
284
+ return [...new Set(matches.map((line) => line.trim()))].filter((line) => !SHUTDOWN_REENTRY.test(line));
285
+ }
286
+ const hasExecutionSignal = (output) => EXECUTION_START.test(output) || XPCSHELL_RESULT_SUMMARY.test(output);
287
+ /** Summary lines that look green, blind to crash and truncation evidence. */
288
+ const hasGreenShapedSummary = (output) => hasExecutionSignal(output) &&
289
+ SUITE_END.test(output) &&
290
+ GREEN_UNEXPECTED.test(output) &&
291
+ !NONZERO_UNEXPECTED.test(output) &&
292
+ !NONZERO_FAILED.test(output) &&
293
+ realFailureLines(output).length === 0;
294
+ /**
295
+ * Whether the output embeds a completed green suite with no crash marker.
296
+ * Such a suite finished, so startup-shaped noise in it was not fatal.
297
+ *
298
+ * @param output - Captured harness output
299
+ */
300
+ export function hasCompletedGreenSummary(output) {
301
+ return hasGreenShapedSummary(output) && findCrashMarkerLine(output) === undefined;
302
+ }
303
+ /**
304
+ * The first `limit` unexpected lines, each with its assertion context, and a
305
+ * final note when more were left out.
306
+ *
307
+ * @param output - Captured harness output
308
+ * @param limit - How many blocks to keep
309
+ */
310
+ export function collectFailureBlocks(output, limit = 5) {
311
+ const all = lines(output);
312
+ const blocks = [];
313
+ let skipped = 0;
314
+ for (let index = 0; index < all.length; index += 1) {
315
+ const line = all[index] ?? '';
316
+ if (!UNEXPECTED_MARKER.test(line) || SHUTDOWN_REENTRY.test(line))
317
+ continue;
318
+ if (blocks.length >= limit) {
319
+ skipped += 1;
320
+ continue;
321
+ }
322
+ const block = [line.trim()];
323
+ for (let next = index + 1; next < all.length && block.length <= FAILURE_CONTEXT_LIMIT; next++) {
324
+ const candidate = all[next] ?? '';
325
+ if (UNEXPECTED_MARKER.test(candidate) || !FAILURE_CONTEXT.test(candidate))
326
+ break;
327
+ block.push(candidate.trimEnd());
328
+ }
329
+ blocks.push(block.join('\n'));
330
+ }
331
+ if (skipped > 0) {
332
+ blocks.push(`…(+${skipped} more TEST-UNEXPECTED line${skipped === 1 ? '' : 's'} not shown)`);
333
+ }
334
+ return blocks;
335
+ }
336
+ /**
337
+ * The recognized harness failures, in the order they are tried. A browser
338
+ * crash marker is never one of them: it is a test result, and the
339
+ * classifier reports it with the files it cut off.
340
+ */
341
+ const SIGNATURE_RULES = [
342
+ {
343
+ // Only a run with no test failure: a failing run's traceback may be the test's own.
344
+ reason: 'harness startup traceback (resource monitor/psutil)',
345
+ applies: (e) => !e.greenVeto && e.realFailures.length === 0 && TRACEBACK.test(e.stripped),
346
+ line: (e) => findLine(e.stripped, STARTUP_TRACEBACK),
347
+ },
348
+ {
349
+ // mach logs this one without a traceback header.
350
+ reason: 'degraded resource reading crashed the harness fallback (_DegradedReading)',
351
+ applies: (e) => !e.ranTests && e.realFailures.length === 0,
352
+ line: (e) => findLine(e.stripped, DEGRADED_READING),
353
+ },
354
+ {
355
+ // A trailing `Passed: 0` summary is part of this shape.
356
+ reason: 'no-output timeout before any test started',
357
+ applies: (e) => !e.ranTests,
358
+ line: (e) => findLine(e.stripped, [NO_OUTPUT_TIMEOUT]),
359
+ },
360
+ {
361
+ reason: 'a configured harness failure pattern matched before any test started',
362
+ applies: (e) => !e.ranTests && e.failurePatterns.length > 0,
363
+ line: (e) => findLine(e.output, e.failurePatterns),
364
+ },
365
+ {
366
+ // Every unexpected line is the shutdown artifact, on a run that stalled on focus.
367
+ reason: 'post-green shutdown re-entry during harness teardown',
368
+ applies: (e) => e.ranTests && e.realFailures.length === 0 && FOCUS_STALL.test(e.output),
369
+ line: (e) => findLine(e.output, [SHUTDOWN_REENTRY]),
370
+ },
371
+ ];
372
+ /**
373
+ * The recognized harness failure in captured output, or undefined for
374
+ * anything that reads as a test result.
375
+ *
376
+ * @param output - Captured harness output
377
+ * @param failurePatterns - Lines that mean the browser never came up (`test.harnessFailurePatterns`)
378
+ */
379
+ export function detectCrashSignature(output, failurePatterns = []) {
380
+ if (findCrashMarkerLine(output) !== undefined)
381
+ return undefined;
382
+ const evidence = {
383
+ output,
384
+ stripped: stripNonSignalNoise(output),
385
+ ranTests: hasExecutionSignal(output),
386
+ realFailures: realFailureLines(output),
387
+ greenVeto: hasCompletedGreenSummary(output),
388
+ failurePatterns,
389
+ };
390
+ for (const rule of SIGNATURE_RULES) {
391
+ if (!rule.applies(evidence))
392
+ continue;
393
+ const line = rule.line(evidence);
394
+ if (line === undefined)
395
+ continue;
396
+ const signature = { reason: rule.reason, line };
397
+ if (rule.reason.startsWith('no-output timeout')) {
398
+ const context = lines(evidence.stripped)
399
+ .filter((candidate) => STARTUP_CONTEXT.test(candidate))
400
+ .slice(0, 5)
401
+ .map((candidate) => candidate.trim());
402
+ if (context.length > 0)
403
+ signature.harnessLines = context;
404
+ }
405
+ return signature;
406
+ }
407
+ return undefined;
408
+ }
409
+ function secondaryNoise(output) {
410
+ const evidence = stripNonSignalNoise(output);
411
+ const traceback = TRACEBACK.test(evidence) ? findLine(evidence, STARTUP_TRACEBACK) : undefined;
412
+ if (traceback !== undefined) {
413
+ return { reason: 'harness traceback also present (resource monitor/psutil)', line: traceback };
414
+ }
415
+ const timeout = findLine(evidence, [NO_OUTPUT_TIMEOUT]);
416
+ return timeout === undefined
417
+ ? undefined
418
+ : { reason: 'harness no-output timeout also present', line: timeout };
419
+ }
420
+ /** Exit values meaning the harness was killed: `128 + n`, a negated signal, a relayed SIGKILL or SIGTERM. */
421
+ const isSignalExit = (exitCode) => exitCode < 0 || exitCode > 128 || exitCode === 9 || exitCode === 15;
422
+ /** Caps an evidence line so a one-line note stays one line. */
423
+ function truncateEvidence(line) {
424
+ const flat = line.trim().replace(/\s+/g, ' ');
425
+ return flat.length <= 80 ? flat : `${flat.slice(0, 80)}…`;
426
+ }
427
+ /**
428
+ * Why a non-zero exit cannot be blamed on harness noise: a signal death, a
429
+ * traceback after the last suite that no recognized signature explains, or
430
+ * no recognized noise at all.
431
+ */
432
+ function unexplainedExit(exitCode, output) {
433
+ if (exitCode === 0)
434
+ return undefined;
435
+ if (isSignalExit(exitCode))
436
+ return `the harness died on a signal (exit ${exitCode})`;
437
+ const lastSuiteEnd = lastSuiteEndOffset(output);
438
+ const afterSuite = stripNonSignalNoise(lastSuiteEnd < 0 ? '' : output.slice(lastSuiteEnd));
439
+ const traceback = /Traceback \(most recent call last\)[\s\S]*/.exec(afterSuite)?.[0];
440
+ if (traceback !== undefined && findLine(traceback, RECOGNIZED_EXIT_NOISE) === undefined) {
441
+ const exception = lines(traceback).find((line, index) => index > 0 && line.length > 0 && !/^\s/.test(line));
442
+ return `a traceback followed the last suite summary: ${truncateEvidence(exception ?? traceback)}`;
443
+ }
444
+ return hasRecognizedExitNoise(output)
445
+ ? undefined
446
+ : `exit ${exitCode} has no recognized noise signature to account for it`;
447
+ }
448
+ /**
449
+ * Whether a clean suite whose only residue is mozsystemmonitor's teardown
450
+ * failure passes. Every condition must hold; the first that fails is named, but only
451
+ * when the teardown noise was present, since otherwise the run was never a
452
+ * candidate.
453
+ */
454
+ function judgeTeardownNoise(output, counts, realFailures, requested, started) {
455
+ if (!hasMonitorTeardownNoise(output))
456
+ return { accepted: false };
457
+ const completeness = analyzeTestCompleteness(output, requested, started);
458
+ const checks = [
459
+ [hasExecutionSignal(output), () => 'no execution signal (no TEST-START/TEST_START)'],
460
+ [counts.checks !== undefined, () => 'summary printed no "Ran N checks" line'],
461
+ [counts.checks !== 0, () => 'summary reported zero checks'],
462
+ [counts.unexpected !== undefined, () => 'summary printed no "Unexpected results:" line'],
463
+ [
464
+ counts.unexpected === undefined || counts.unexpected === 0,
465
+ () => `summary reported unexpected=${counts.unexpected ?? 0}`,
466
+ ],
467
+ [
468
+ !NONZERO_UNEXPECTED.test(output),
469
+ () => 'a non-zero "Unexpected results:" line is present somewhere in the output',
470
+ ],
471
+ [
472
+ !NONZERO_FAILED.test(output),
473
+ () => 'a non-zero "Failed:" line is present somewhere in the output',
474
+ ],
475
+ [
476
+ realFailures.length === 0,
477
+ () => `${realFailures.length} matched failure line(s), first: ${truncateEvidence(realFailures[0] ?? '')}`,
478
+ ],
479
+ [
480
+ findCrashMarkerLine(output) === undefined,
481
+ () => `crash marker present: ${truncateEvidence(findCrashMarkerLine(output) ?? '')}`,
482
+ ],
483
+ [!SHUTDOWN_REENTRY.test(output), () => 'post-green shutdown re-entry shape present'],
484
+ [
485
+ completeness.neverStarted.length === 0,
486
+ () => `requested file(s) never started: ${completeness.neverStarted.join(', ')}`,
487
+ ],
488
+ [
489
+ completeness.neverEnded.length === 0,
490
+ () => `requested file(s) never ended: ${completeness.neverEnded.join(', ')}`,
491
+ ],
492
+ ];
493
+ const failed = checks.find(([holds]) => !holds);
494
+ return failed === undefined ? { accepted: true } : { accepted: false, rejectedBy: failed[1]() };
495
+ }
496
+ /** The verdict of an exit-0 run with no failure evidence: a pass only when it shows it completed. */
497
+ function judgeExitZero(output, counts, requested, raw) {
498
+ if (raw !== undefined) {
499
+ return raw.suiteCompleted
500
+ ? { kind: 'pass', ...counts }
501
+ : {
502
+ kind: 'crash',
503
+ signature: {
504
+ reason: 'the raw log has no completed suite',
505
+ line: 'exit 0, with no suite_end for the last suite_start',
506
+ },
507
+ ...counts,
508
+ };
509
+ }
510
+ const positive = (counts.checks ?? 0) > 0 || POSITIVE_PASSED.test(output);
511
+ if (!positive && ZERO_PASSED.test(output))
512
+ return { kind: 'no-tests', ...counts };
513
+ const completed = SUITE_END.test(output) || counts.unexpected !== undefined;
514
+ if (!positive || !completed) {
515
+ return {
516
+ kind: 'crash',
517
+ signature: {
518
+ reason: 'the harness exited 0 without a completed suite summary',
519
+ line: positive ? 'no SUITE_END or results summary' : 'no positive check count',
520
+ },
521
+ ...counts,
522
+ };
523
+ }
524
+ const { neverEnded } = analyzeTestCompleteness(output, requested);
525
+ return neverEnded.length > 0
526
+ ? { kind: 'test-failures', ...counts, greenSummaryRejected: { neverStarted: [], neverEnded } }
527
+ : { kind: 'pass', ...counts };
528
+ }
529
+ /**
530
+ * Classifies a finished dispatch, in this order:
531
+ *
532
+ * 1. A clean suite whose only residue is mozsystemmonitor's teardown failure passes.
533
+ * 2. A recognized harness failure is a crash, whatever the exit code.
534
+ * 3. No execution signal for requested paths: a server that failed to start
535
+ * is a crash (`server-startup`), anything else `no-tests`. A summary that
536
+ * counted zero checks is `no-tests` too.
537
+ * 4. Exit 0 without failure evidence passes only when the run shows it
538
+ * completed.
539
+ * 5. A non-zero exit whose summary completed green passes when recognized
540
+ * noise explains the exit and no file was cut off; any crash marker,
541
+ * unstarted or unfinished file, signal death or unexplained traceback
542
+ * rejects that summary.
543
+ * 6. Anything else is `test-failures`.
544
+ *
545
+ * @param exitCode - The harness exit status
546
+ * @param output - Its output, both streams
547
+ * @param requested - The dispatched paths
548
+ * @param evidence - See {@link DispatchEvidence}
549
+ */
550
+ export function classifyHarnessRun(exitCode, output, requested, evidence = {}) {
551
+ const { raw, started } = evidence;
552
+ const counts = extractSummaryCounts(output);
553
+ const realFailures = realFailureLines(output);
554
+ const firstFailure = realFailures[0] ??
555
+ findCrashMarkerLine(output) ??
556
+ findLine(output, [NONZERO_UNEXPECTED, NONZERO_FAILED]);
557
+ const teardown = isSignalExit(exitCode)
558
+ ? { accepted: false }
559
+ : judgeTeardownNoise(output, counts, realFailures, requested, started);
560
+ if (teardown.accepted)
561
+ return { kind: 'pass', note: 'teardown-noise-ignored', ...counts };
562
+ const withNote = noter(teardown.rejectedBy);
563
+ const signature = detectCrashSignature(output, evidence.failurePatterns);
564
+ if (signature !== undefined)
565
+ return withNote({ kind: 'crash', signature, ...counts });
566
+ const ranTests = hasExecutionSignal(output) || (raw?.results.length ?? 0) > 0;
567
+ if (!ranTests && requested.length > 0)
568
+ return nothingRan(output, counts);
569
+ if (counts.checks === 0 && firstFailure === undefined) {
570
+ return withNote({ kind: 'no-tests', ...counts });
571
+ }
572
+ // A non-zero unexpected or failed summary is itself a first failure.
573
+ if (exitCode === 0 && firstFailure === undefined) {
574
+ const judged = judgeExitZero(output, counts, requested, raw);
575
+ return judged.kind === 'pass' ? judged : withNote(judged);
576
+ }
577
+ const failure = { ...counts, ...failureKeys(output, firstFailure) };
578
+ if (hasGreenShapedSummary(output)) {
579
+ const rejection = rejectGreenSummary(exitCode, output, requested, started);
580
+ return rejection === undefined
581
+ ? { kind: 'pass', greenSummaryOverride: true, ...counts }
582
+ : withNote({ kind: 'test-failures', ...failure, greenSummaryRejected: rejection });
583
+ }
584
+ // `unexpected=0` beside a red rests on pattern matching, not a harness result: say so.
585
+ const unmarked = counts.unexpected === 0 &&
586
+ realFailures.length > 0 &&
587
+ !realFailures.some((line) => UNEXPECTED_MARKER.test(line))
588
+ ? 'summary reported 0 unexpected; no TEST-UNEXPECTED marker in the matched evidence'
589
+ : undefined;
590
+ return withNote({ kind: 'test-failures', ...failure }, unmarked);
591
+ }
592
+ /** Adds the rejected teardown override, and any further note, to a failing verdict. */
593
+ function noter(rejectedBy) {
594
+ return (verdict, extra) => {
595
+ const notes = [
596
+ rejectedBy === undefined ? undefined : `green-teardown override rejected: ${rejectedBy}`,
597
+ extra,
598
+ ].filter((note) => note !== undefined);
599
+ return notes.length > 0 ? { ...verdict, note: notes.join('; ') } : verdict;
600
+ };
601
+ }
602
+ /** The evidence a failing verdict carries. */
603
+ function failureKeys(output, firstFailure) {
604
+ const blocks = collectFailureBlocks(output);
605
+ const secondary = firstFailure === undefined ? undefined : secondaryNoise(output);
606
+ return {
607
+ ...(firstFailure === undefined ? {} : { failureLine: firstFailure }),
608
+ ...(blocks.length > 0 ? { failureBlocks: blocks } : {}),
609
+ ...(secondary === undefined ? {} : { secondary }),
610
+ };
611
+ }
612
+ /** No test ran: a mochitest server that never came up is infrastructure, anything else `no-tests`. */
613
+ function nothingRan(output, counts) {
614
+ const line = findLine(output, SERVER_STARTUP_FAILURE);
615
+ if (line === undefined)
616
+ return { kind: 'no-tests', ...counts };
617
+ return {
618
+ kind: 'crash',
619
+ signature: {
620
+ reason: 'mochitest server failed to start (server-startup)',
621
+ line,
622
+ verdictReason: 'server-startup',
623
+ },
624
+ ...counts,
625
+ };
626
+ }
627
+ /** Why a green-shaped summary does not speak for the run, or undefined when it does. */
628
+ function rejectGreenSummary(exitCode, output, requested, started) {
629
+ const crashLine = findCrashMarkerLine(output);
630
+ const { neverStarted, neverEnded } = analyzeTestCompleteness(output, requested, started);
631
+ const exitEvidence = unexplainedExit(exitCode, output);
632
+ if (crashLine === undefined &&
633
+ neverStarted.length === 0 &&
634
+ neverEnded.length === 0 &&
635
+ exitEvidence === undefined) {
636
+ return undefined;
637
+ }
638
+ return {
639
+ ...(crashLine === undefined ? {} : { crashLine }),
640
+ ...(exitEvidence === undefined ? {} : { exitEvidence }),
641
+ neverStarted,
642
+ neverEnded,
643
+ };
644
+ }
645
+ const SIGSEGV_EXITS = new Set([-11, 139]);
646
+ /**
647
+ * Whether a harness died on SIGSEGV without producing any evidence: no
648
+ * execution signal, no failure line, no crash marker. A module loader that
649
+ * faults on an unregistered `.sys.mjs` leaves exactly this.
650
+ *
651
+ * @param exitCode - The harness exit status
652
+ * @param output - Its output
653
+ */
654
+ export function isSilentSegfault(exitCode, output) {
655
+ return (SIGSEGV_EXITS.has(exitCode) &&
656
+ !hasExecutionSignal(output) &&
657
+ realFailureLines(output).length === 0 &&
658
+ findCrashMarkerLine(output) === undefined);
659
+ }
660
+ // ---------------------------------------------------------------------------
661
+ // Completeness: a would-be pass is re-examined against what the run recorded.
662
+ // ---------------------------------------------------------------------------
663
+ const normalized = (path) => path.replace(/\\/g, '/');
664
+ const basenameOf = (path) => path.slice(path.lastIndexOf('/') + 1);
665
+ const namesSameFile = (name, request) => name === request || name.endsWith(`/${request}`) || request.endsWith(`/${name}`);
666
+ const namesNoTestFile = (path) => !TEST_FILE_BASENAME.test(basenameOf(normalized(path)));
667
+ /** The requested indexes some name names unambiguously; a name matching two requests counts for neither. */
668
+ function namedIndexes(names, requested) {
669
+ const named = new Set();
670
+ for (const name of names) {
671
+ const matches = requested.flatMap((request, index) => namesSameFile(normalized(name), request) ? [index] : []);
672
+ if (matches.length === 1)
673
+ named.add(matches[0] ?? -1);
674
+ }
675
+ return named;
676
+ }
677
+ /**
678
+ * Counts the requested test files that produced a start or skip marker. A
679
+ * directory or manifest request counts the tests the raw log's `suite_start`
680
+ * announced. Undefined when nothing can be counted: no test-file request, or
681
+ * (outside the raw log) no start line naming any requested file.
682
+ *
683
+ * @param markers - Start and skip names
684
+ * @param requested - Dispatched paths, in order
685
+ * @param authoritative - The markers come from the raw log or provably name only other files
686
+ * @param roster - The ids `suite_start` announced
687
+ */
688
+ function countStartedFiles(markers, requested, authoritative = false, roster = []) {
689
+ const named = requested.filter((path) => !namesNoTestFile(path)).map(normalized);
690
+ const all = requested.some(namesNoTestFile)
691
+ ? [
692
+ ...named,
693
+ ...roster.filter((id) => !namesNoTestFile(id) && !named.some((request) => namesSameFile(normalized(id), request))),
694
+ ]
695
+ : named;
696
+ if (all.length === 0)
697
+ return undefined;
698
+ const forms = all.map(normalized);
699
+ const startedIndexes = namedIndexes(markers.started, forms);
700
+ if (!authoritative && startedIndexes.size === 0)
701
+ return undefined;
702
+ const skippedIndexes = namedIndexes(markers.skipped, forms);
703
+ const unstarted = all.filter((_path, index) => !startedIndexes.has(index) && !skippedIndexes.has(index));
704
+ return {
705
+ started: all.length - unstarted.length,
706
+ requested: all.length,
707
+ ...(unstarted[0] === undefined ? {} : { firstUnstarted: unstarted[0] }),
708
+ };
709
+ }
710
+ /** Start lines about other test files altogether, none sharing a basename with a request. */
711
+ function namesOnlyOtherFiles(markers, requested) {
712
+ const bases = new Set(requested.map(basenameOf));
713
+ const files = markers.started.filter((name) => TEST_FILE_BASENAME.test(basenameOf(name)));
714
+ return files.length > 0 && !files.some((name) => bases.has(basenameOf(name)));
715
+ }
716
+ /** Requested directories and manifests a raw log ran nothing under. */
717
+ function directoriesWithoutResults(requested, tests) {
718
+ return requested.filter((path) => {
719
+ const request = normalized(path);
720
+ if (!request.includes('/') || TEST_FILE_BASENAME.test(basenameOf(request)))
721
+ return false;
722
+ const dir = /\.(?:toml|ini|list)$/.test(request)
723
+ ? request.slice(0, request.lastIndexOf('/'))
724
+ : request.replace(/\/+$/, '');
725
+ return !tests.some((test) => {
726
+ const id = normalized(test);
727
+ return id.startsWith(`${dir}/`) || id.includes(`/${dir}/`);
728
+ });
729
+ });
730
+ }
731
+ /** Where the start count comes from, and what it counts. */
732
+ function countStarts(verdict, output, requested, streamed, raw) {
733
+ // A raw log is complete whatever the capture kept. Streamed markers win when they saw a start.
734
+ if (raw !== undefined) {
735
+ const markers = { started: raw.started, skipped: raw.skipped };
736
+ return { counted: countStartedFiles(markers, requested, true, raw.roster), source: 'raw' };
737
+ }
738
+ if (streamed !== undefined && streamed.started.length > 0) {
739
+ const authoritative = verdict.kind === 'pass' && namesOnlyOtherFiles(streamed, requested);
740
+ return { counted: countStartedFiles(streamed, requested, authoritative), source: 'stream' };
741
+ }
742
+ return { counted: countStartedFiles(scanMarkers(output), requested), source: 'capture' };
743
+ }
744
+ function gatherCompleteness(verdict, output, requested, streamed, raw) {
745
+ const appExit = /Main app process: killed by (SIG[A-Z0-9]+)/.exec(output)?.[1];
746
+ const shutdownLine = lines(output)
747
+ .find((line) => SHUTDOWN_REENTRY.test(line))
748
+ ?.trim();
749
+ const { counted, source } = countStarts(verdict, output, requested, streamed, raw);
750
+ const firstUnstarted = counted?.firstUnstarted ??
751
+ (raw === undefined
752
+ ? undefined
753
+ : directoriesWithoutResults(requested, raw.results.map((result) => result.test))[0]);
754
+ const unexpected = Math.max(verdict.unexpected ?? 0, raw?.results.filter((result) => result.unexpected).length ?? 0);
755
+ return {
756
+ started: counted?.started ?? 0,
757
+ requested: counted?.requested ?? 0,
758
+ ...(firstUnstarted === undefined ? {} : { firstUnstarted, startedSource: source }),
759
+ ...(shutdownLine === undefined ? {} : { shutdownLine }),
760
+ ...(unexpected > 0 ? { unexpected } : {}),
761
+ ...(raw !== undefined && raw.unfinished.length > 0 ? { unfinished: raw.unfinished } : {}),
762
+ ...(appExit === undefined ? {} : { appExit }),
763
+ };
764
+ }
765
+ /**
766
+ * Re-examines a passing verdict against what the run recorded, and fails it
767
+ * when a requested file never started, a test never finished, the browser
768
+ * shut down mid-test or died on a signal, or an unexpected result was
769
+ * reported. A raw log decides when there is one: every requested file and
770
+ * directory must have run. A failing verdict keeps its kind and gains the
771
+ * evidence.
772
+ *
773
+ * @param verdict - The classifier's verdict
774
+ * @param output - Captured harness output
775
+ * @param requested - Dispatched paths, in order
776
+ * @param streamed - Markers collected from the complete stream
777
+ * @param raw - The dispatch's raw log
778
+ */
779
+ export function vetoIncompletePass(verdict, output, requested, streamed, raw) {
780
+ const passed = verdict.kind === 'pass';
781
+ const evidence = gatherCompleteness(verdict, output, requested, streamed, raw);
782
+ const stopped = evidence.firstUnstarted !== undefined ||
783
+ evidence.shutdownLine !== undefined ||
784
+ evidence.appExit !== undefined;
785
+ if (!stopped && (!passed || (evidence.unexpected === undefined && !evidence.unfinished))) {
786
+ // A raw log that recorded no test at all is a run that did nothing.
787
+ if (passed && raw?.results.length === 0) {
788
+ return {
789
+ kind: 'no-tests',
790
+ ...(verdict.checks === undefined ? {} : { checks: verdict.checks }),
791
+ ...(verdict.unexpected === undefined ? {} : { unexpected: verdict.unexpected }),
792
+ };
793
+ }
794
+ return verdict;
795
+ }
796
+ if (!passed)
797
+ return { ...verdict, incomplete: evidence };
798
+ // The pass-only annotations would misdescribe a failed run.
799
+ const rest = { ...verdict };
800
+ delete rest.greenSummaryOverride;
801
+ delete rest.note;
802
+ const unexpected = evidence.unexpected ?? 0;
803
+ return {
804
+ ...rest,
805
+ kind: 'test-failures',
806
+ incomplete: evidence,
807
+ ...(unexpected > (rest.unexpected ?? 0) ? { unexpected } : {}),
808
+ ...(evidence.shutdownLine === undefined ? {} : { failureLine: evidence.shutdownLine }),
809
+ };
810
+ }
811
+ /**
812
+ * Classifies a dispatch and applies the completeness veto: the one judgement
813
+ * a run makes of each dispatch.
814
+ *
815
+ * @param exitCode - The harness exit status
816
+ * @param output - Its output, both streams in arrival order
817
+ * @param requested - The dispatched paths
818
+ * @param evidence - The raw log, streamed markers and configured failure patterns
819
+ */
820
+ export function judgeDispatch(exitCode, output, requested, evidence = {}) {
821
+ const started = evidence.raw?.started ?? evidence.streamed?.started;
822
+ return vetoIncompletePass(classifyHarnessRun(exitCode, output, requested, {
823
+ ...evidence,
824
+ ...(started === undefined ? {} : { started }),
825
+ }), output, requested, evidence.streamed, evidence.raw);
826
+ }