@hominis/fireforge 0.54.0 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1244) hide show
  1. package/CHANGELOG.md +287 -6
  2. package/README.md +51 -17
  3. package/dist/bin/fireforge.js +34 -129
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/check/check.js +394 -0
  6. package/dist/src/check/gate.js +448 -0
  7. package/dist/src/check/index.js +10 -0
  8. package/dist/src/check/record.js +155 -0
  9. package/dist/src/cli/command.js +286 -0
  10. package/dist/src/cli/output.js +96 -0
  11. package/dist/src/cli/program.js +231 -0
  12. package/dist/src/cli/stdio.js +59 -0
  13. package/dist/src/cli/version.js +99 -0
  14. package/dist/src/commands/bootstrap.js +17 -102
  15. package/dist/src/commands/build.js +34 -438
  16. package/dist/src/commands/check.js +44 -157
  17. package/dist/src/commands/config.js +50 -226
  18. package/dist/src/commands/discard.js +38 -215
  19. package/dist/src/commands/doctor.js +29 -456
  20. package/dist/src/commands/download.js +35 -499
  21. package/dist/src/commands/export.js +42 -431
  22. package/dist/src/commands/furnace.js +220 -0
  23. package/dist/src/commands/gate.js +127 -0
  24. package/dist/src/commands/import.js +44 -445
  25. package/dist/src/commands/index.js +86 -0
  26. package/dist/src/commands/lint.js +44 -546
  27. package/dist/src/commands/merge-driver.js +56 -0
  28. package/dist/src/commands/migrate.js +75 -0
  29. package/dist/src/commands/override.js +43 -0
  30. package/dist/src/commands/package.js +48 -77
  31. package/dist/src/commands/patch.js +221 -0
  32. package/dist/src/commands/re-export.js +55 -332
  33. package/dist/src/commands/rebase.js +69 -0
  34. package/dist/src/commands/register.js +62 -103
  35. package/dist/src/commands/reset.js +28 -91
  36. package/dist/src/commands/resolve.js +20 -167
  37. package/dist/src/commands/restore.js +19 -0
  38. package/dist/src/commands/run.js +60 -420
  39. package/dist/src/commands/setup.js +78 -90
  40. package/dist/src/commands/status.js +44 -413
  41. package/dist/src/commands/test.js +97 -422
  42. package/dist/src/commands/token.js +185 -228
  43. package/dist/src/commands/typecheck.js +59 -208
  44. package/dist/src/commands/verify.js +28 -334
  45. package/dist/src/commands/version.js +14 -0
  46. package/dist/src/commands/watch.js +20 -218
  47. package/dist/src/commands/wire.js +60 -349
  48. package/dist/src/commands/workspace.js +117 -0
  49. package/dist/src/config/edit.js +237 -0
  50. package/dist/src/config/index.js +15 -0
  51. package/dist/src/config/load.js +59 -0
  52. package/dist/src/config/previous.js +404 -0
  53. package/dist/src/config/schema/build.js +63 -0
  54. package/dist/src/config/schema/check.js +113 -0
  55. package/dist/src/config/schema/common.js +71 -0
  56. package/dist/src/config/schema/export-queue.js +36 -0
  57. package/dist/src/config/schema/firefox.js +69 -0
  58. package/dist/src/config/schema/gate.js +199 -0
  59. package/dist/src/config/schema/identity.js +55 -0
  60. package/dist/src/config/schema/index.js +45 -0
  61. package/dist/src/config/schema/lint.js +297 -0
  62. package/dist/src/config/schema/policy.js +111 -0
  63. package/dist/src/config/schema/source.js +90 -0
  64. package/dist/src/config/schema/test.js +17 -0
  65. package/dist/src/config/schema/toolchains.js +17 -0
  66. package/dist/src/config/schema/typecheck.js +29 -0
  67. package/dist/src/config/schema/wire.js +15 -0
  68. package/dist/src/diff/apply.js +129 -0
  69. package/dist/src/diff/index.js +16 -0
  70. package/dist/src/diff/model.js +267 -0
  71. package/dist/src/diff/query.js +65 -0
  72. package/dist/src/doctor/index.js +240 -0
  73. package/dist/src/engine/archive.js +396 -0
  74. package/dist/src/engine/audit.js +66 -0
  75. package/dist/src/engine/build.js +150 -0
  76. package/dist/src/engine/hostLocks.js +66 -0
  77. package/dist/src/engine/index.js +26 -0
  78. package/dist/src/engine/installManifests.js +147 -0
  79. package/dist/src/engine/mach.js +97 -0
  80. package/dist/src/engine/machHints.js +80 -0
  81. package/dist/src/engine/mozconfig.js +110 -0
  82. package/dist/src/engine/objdir.js +124 -0
  83. package/dist/src/engine/package.js +169 -0
  84. package/dist/src/engine/pin.js +12 -0
  85. package/dist/src/engine/pool.js +423 -0
  86. package/dist/src/engine/pristine.js +281 -0
  87. package/dist/src/engine/python.js +68 -0
  88. package/dist/src/engine/resourceGuard.js +582 -0
  89. package/dist/src/engine/run.js +259 -0
  90. package/dist/src/engine/smoke.js +204 -0
  91. package/dist/src/engine/staleness.js +229 -0
  92. package/dist/src/engine/watch.js +82 -0
  93. package/dist/src/engine/workspace.js +85 -0
  94. package/dist/src/furnace/config.js +360 -0
  95. package/dist/src/furnace/deploy.js +414 -0
  96. package/dist/src/furnace/diff.js +59 -0
  97. package/dist/src/furnace/edit.js +64 -0
  98. package/dist/src/furnace/fragments.js +53 -0
  99. package/dist/src/furnace/index.js +19 -0
  100. package/dist/src/furnace/operations.js +283 -0
  101. package/dist/src/furnace/registration.js +220 -0
  102. package/dist/src/furnace/scaffold.js +311 -0
  103. package/dist/src/furnace/typing.js +252 -0
  104. package/dist/src/furnace/validate.js +662 -0
  105. package/dist/src/git/apply.js +129 -0
  106. package/dist/src/git/diff.js +143 -0
  107. package/dist/src/git/index.js +33 -0
  108. package/dist/src/git/objects.js +201 -0
  109. package/dist/src/git/refs.js +85 -0
  110. package/dist/src/git/repo.js +222 -0
  111. package/dist/src/git/run.js +242 -0
  112. package/dist/src/git/status.js +156 -0
  113. package/dist/src/kernel/errors.js +123 -0
  114. package/dist/src/kernel/fs.js +515 -0
  115. package/dist/src/kernel/glob.js +63 -0
  116. package/dist/src/kernel/hash.js +28 -0
  117. package/dist/src/kernel/journal.js +524 -0
  118. package/dist/src/kernel/json-edit.js +198 -0
  119. package/dist/src/kernel/json.js +101 -0
  120. package/dist/src/kernel/lock.js +589 -0
  121. package/dist/src/kernel/log.js +154 -0
  122. package/dist/src/kernel/process/identity.js +313 -0
  123. package/dist/src/kernel/process/index.js +8 -0
  124. package/dist/src/kernel/process/listing.js +128 -0
  125. package/dist/src/kernel/process/spawn.js +430 -0
  126. package/dist/src/kernel/process/tree.js +301 -0
  127. package/dist/src/kernel/schema.js +308 -0
  128. package/dist/src/kernel/signals.js +171 -0
  129. package/dist/src/kernel/text.js +151 -0
  130. package/dist/src/kernel/time.js +83 -0
  131. package/dist/src/kernel/tty.js +84 -0
  132. package/dist/src/lint/cache.js +77 -0
  133. package/dist/src/lint/checkjs.js +400 -0
  134. package/dist/src/lint/index.js +3 -0
  135. package/dist/src/lint/input.js +100 -0
  136. package/dist/src/lint/report.js +107 -0
  137. package/dist/src/lint/rule.js +41 -0
  138. package/dist/src/lint/rules/css.js +308 -0
  139. package/dist/src/lint/rules/javascript.js +299 -0
  140. package/dist/src/lint/rules/jsdoc.js +249 -0
  141. package/dist/src/lint/rules/license.js +93 -0
  142. package/dist/src/lint/rules/policy.js +201 -0
  143. package/dist/src/lint/rules/registration.js +264 -0
  144. package/dist/src/lint/rules/size.js +299 -0
  145. package/dist/src/lint/run.js +126 -0
  146. package/dist/src/lint/shim.js +323 -0
  147. package/dist/src/lint/typescript.js +186 -0
  148. package/dist/src/lint/waivers.js +93 -0
  149. package/dist/src/mode/changes.js +264 -0
  150. package/dist/src/mode/diagnose.js +173 -0
  151. package/dist/src/mode/export.js +147 -0
  152. package/dist/src/mode/index.js +23 -0
  153. package/dist/src/mode/migrate.js +181 -0
  154. package/dist/src/mode/previousWaivers.js +206 -0
  155. package/dist/src/mode/pristine.js +61 -0
  156. package/dist/src/mode/rebase.js +197 -0
  157. package/dist/src/mode/report.js +157 -0
  158. package/dist/src/mode/setup.js +103 -0
  159. package/dist/src/mode/tracked.js +116 -0
  160. package/dist/src/mode/upgrade.js +281 -0
  161. package/dist/src/mode/watch.js +83 -0
  162. package/dist/src/mode/workspace.js +189 -0
  163. package/dist/src/mozbuild/index.js +6 -0
  164. package/dist/src/mozbuild/jar.js +366 -0
  165. package/dist/src/mozbuild/mozbuild.js +321 -0
  166. package/dist/src/mozbuild/paths.js +96 -0
  167. package/dist/src/mozbuild/references.js +39 -0
  168. package/dist/src/mozbuild/testManifest.js +343 -0
  169. package/dist/src/mozbuild/text.js +142 -0
  170. package/dist/src/project/changes.js +145 -0
  171. package/dist/src/project/checkout.js +66 -0
  172. package/dist/src/project/index.js +11 -0
  173. package/dist/src/project/license.js +119 -0
  174. package/dist/src/project/project.js +111 -0
  175. package/dist/src/project/state.js +85 -0
  176. package/dist/src/project/tracked.js +1 -0
  177. package/dist/src/queue/apply.js +270 -0
  178. package/dist/src/queue/attribute.js +159 -0
  179. package/dist/src/queue/baseline.js +409 -0
  180. package/dist/src/queue/capture.js +298 -0
  181. package/dist/src/queue/changes.js +234 -0
  182. package/dist/src/queue/index.js +50 -0
  183. package/dist/src/queue/manifest.js +341 -0
  184. package/dist/src/queue/operations.js +454 -0
  185. package/dist/src/queue/placement.js +220 -0
  186. package/dist/src/queue/queue.js +359 -0
  187. package/dist/src/queue/restore.js +103 -0
  188. package/dist/src/queue/session.js +685 -0
  189. package/dist/src/queue/status.js +137 -0
  190. package/dist/src/register/files.js +39 -0
  191. package/dist/src/register/index.js +8 -0
  192. package/dist/src/register/js.js +217 -0
  193. package/dist/src/register/register.js +359 -0
  194. package/dist/src/register/wire.js +146 -0
  195. package/dist/src/source/adopt.js +99 -0
  196. package/dist/src/source/changes.js +132 -0
  197. package/dist/src/source/edit.js +278 -0
  198. package/dist/src/source/export.js +70 -0
  199. package/dist/src/source/groups.js +131 -0
  200. package/dist/src/source/index.js +20 -0
  201. package/dist/src/source/materialize.js +382 -0
  202. package/dist/src/source/merge.js +255 -0
  203. package/dist/src/source/objects.js +102 -0
  204. package/dist/src/source/previous.js +166 -0
  205. package/dist/src/source/records.js +138 -0
  206. package/dist/src/source/refresh.js +264 -0
  207. package/dist/src/source/tree.js +337 -0
  208. package/dist/src/syntax/css.js +215 -0
  209. package/dist/src/syntax/fragments.js +63 -0
  210. package/dist/src/syntax/index.js +10 -0
  211. package/dist/src/syntax/js.js +270 -0
  212. package/dist/src/test/classify.js +826 -0
  213. package/dist/src/test/control.js +236 -0
  214. package/dist/src/test/host.js +266 -0
  215. package/dist/src/test/index.js +11 -0
  216. package/dist/src/test/plan.js +347 -0
  217. package/dist/src/test/rawLog.js +138 -0
  218. package/dist/src/test/run.js +404 -0
  219. package/dist/src/test/verdict.js +420 -0
  220. package/dist/src/test/xpcshell.js +143 -0
  221. package/dist/src/tokens/add.js +304 -0
  222. package/dist/src/tokens/coverage.js +65 -0
  223. package/dist/src/tokens/css.js +58 -0
  224. package/dist/src/tokens/index.js +12 -0
  225. package/dist/src/tokens/lint.js +96 -0
  226. package/dist/src/tokens/model.js +118 -0
  227. package/dist/src/tokens/settings.js +87 -0
  228. package/dist/src/tokens/siblings.js +104 -0
  229. package/dist/src/typecheck/explain.js +123 -0
  230. package/dist/src/typecheck/index.js +8 -0
  231. package/dist/src/typecheck/typecheck.js +332 -0
  232. package/docs/README.md +23 -28
  233. package/docs/authoring.md +97 -0
  234. package/docs/configuration.md +307 -692
  235. package/docs/exit-codes.md +76 -94
  236. package/docs/furnace.md +113 -181
  237. package/docs/gate.md +205 -0
  238. package/docs/getting-started.md +165 -0
  239. package/docs/machine-output.md +201 -277
  240. package/docs/migrating.md +261 -0
  241. package/docs/patch-workflow.md +163 -653
  242. package/docs/quality.md +220 -0
  243. package/docs/source-workflow.md +228 -0
  244. package/docs/testing.md +101 -712
  245. package/docs/workspaces.md +187 -0
  246. package/package.json +22 -30
  247. package/templates/configs/common.mozconfig +8 -2
  248. package/templates/configs/darwin.mozconfig +6 -7
  249. package/templates/configs/linux.mozconfig +5 -8
  250. package/templates/configs/win32.mozconfig +3 -9
  251. package/dist/bin/fireforge.d.ts +0 -9
  252. package/dist/src/cli-usage-error.d.ts +0 -46
  253. package/dist/src/cli-usage-error.js +0 -81
  254. package/dist/src/cli.d.ts +0 -41
  255. package/dist/src/cli.js +0 -380
  256. package/dist/src/commands/bootstrap-checks.d.ts +0 -16
  257. package/dist/src/commands/bootstrap-checks.js +0 -66
  258. package/dist/src/commands/bootstrap.d.ts +0 -10
  259. package/dist/src/commands/build-prelock.d.ts +0 -20
  260. package/dist/src/commands/build-prelock.js +0 -50
  261. package/dist/src/commands/build.d.ts +0 -13
  262. package/dist/src/commands/check-report.d.ts +0 -41
  263. package/dist/src/commands/check-report.js +0 -91
  264. package/dist/src/commands/check-run.d.ts +0 -33
  265. package/dist/src/commands/check-run.js +0 -112
  266. package/dist/src/commands/check-steps.d.ts +0 -75
  267. package/dist/src/commands/check-steps.js +0 -200
  268. package/dist/src/commands/check.d.ts +0 -32
  269. package/dist/src/commands/config.d.ts +0 -13
  270. package/dist/src/commands/declarations-report.d.ts +0 -49
  271. package/dist/src/commands/declarations-report.js +0 -83
  272. package/dist/src/commands/destructive-decision.d.ts +0 -19
  273. package/dist/src/commands/destructive-decision.js +0 -31
  274. package/dist/src/commands/discard.d.ts +0 -12
  275. package/dist/src/commands/doctor-check-core.d.ts +0 -110
  276. package/dist/src/commands/doctor-check-core.js +0 -24
  277. package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
  278. package/dist/src/commands/doctor-engine-eslint.js +0 -17
  279. package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
  280. package/dist/src/commands/doctor-external-toolchains.js +0 -56
  281. package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
  282. package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
  283. package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
  284. package/dist/src/commands/doctor-furnace-jar.js +0 -44
  285. package/dist/src/commands/doctor-furnace.d.ts +0 -8
  286. package/dist/src/commands/doctor-furnace.js +0 -514
  287. package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
  288. package/dist/src/commands/doctor-macos-sdk.js +0 -158
  289. package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
  290. package/dist/src/commands/doctor-orphaned-harness.js +0 -98
  291. package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
  292. package/dist/src/commands/doctor-patch-manifest.js +0 -156
  293. package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
  294. package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
  295. package/dist/src/commands/doctor-source-pin.d.ts +0 -29
  296. package/dist/src/commands/doctor-source-pin.js +0 -91
  297. package/dist/src/commands/doctor-working-tree.d.ts +0 -27
  298. package/dist/src/commands/doctor-working-tree.js +0 -89
  299. package/dist/src/commands/doctor.d.ts +0 -49
  300. package/dist/src/commands/download.d.ts +0 -11
  301. package/dist/src/commands/export-adopt-check.d.ts +0 -37
  302. package/dist/src/commands/export-adopt-check.js +0 -97
  303. package/dist/src/commands/export-all.d.ts +0 -11
  304. package/dist/src/commands/export-all.js +0 -361
  305. package/dist/src/commands/export-flow.d.ts +0 -124
  306. package/dist/src/commands/export-flow.js +0 -423
  307. package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
  308. package/dist/src/commands/export-placement-conflicts.js +0 -75
  309. package/dist/src/commands/export-placement-gate.d.ts +0 -42
  310. package/dist/src/commands/export-placement-gate.js +0 -107
  311. package/dist/src/commands/export-placement-policy.d.ts +0 -22
  312. package/dist/src/commands/export-placement-policy.js +0 -54
  313. package/dist/src/commands/export-shared.d.ts +0 -152
  314. package/dist/src/commands/export-shared.js +0 -396
  315. package/dist/src/commands/export-staged-registration.d.ts +0 -46
  316. package/dist/src/commands/export-staged-registration.js +0 -91
  317. package/dist/src/commands/export.d.ts +0 -13
  318. package/dist/src/commands/forward-import-remedy.d.ts +0 -31
  319. package/dist/src/commands/forward-import-remedy.js +0 -62
  320. package/dist/src/commands/furnace/apply.d.ts +0 -8
  321. package/dist/src/commands/furnace/apply.js +0 -327
  322. package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
  323. package/dist/src/commands/furnace/authoring-config.js +0 -19
  324. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
  325. package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
  326. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
  327. package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
  328. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
  329. package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
  330. package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
  331. package/dist/src/commands/furnace/chrome-doc.js +0 -365
  332. package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
  333. package/dist/src/commands/furnace/create-browser-test.js +0 -179
  334. package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
  335. package/dist/src/commands/furnace/create-dry-run.js +0 -107
  336. package/dist/src/commands/furnace/create-features.d.ts +0 -24
  337. package/dist/src/commands/furnace/create-features.js +0 -55
  338. package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
  339. package/dist/src/commands/furnace/create-mochikit.js +0 -75
  340. package/dist/src/commands/furnace/create-readback.d.ts +0 -22
  341. package/dist/src/commands/furnace/create-readback.js +0 -32
  342. package/dist/src/commands/furnace/create-templates.d.ts +0 -119
  343. package/dist/src/commands/furnace/create-templates.js +0 -283
  344. package/dist/src/commands/furnace/create-validation.d.ts +0 -6
  345. package/dist/src/commands/furnace/create-validation.js +0 -59
  346. package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
  347. package/dist/src/commands/furnace/create-xpcshell.js +0 -80
  348. package/dist/src/commands/furnace/create.d.ts +0 -24
  349. package/dist/src/commands/furnace/create.js +0 -407
  350. package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
  351. package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
  352. package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
  353. package/dist/src/commands/furnace/deploy-named.js +0 -107
  354. package/dist/src/commands/furnace/deploy.d.ts +0 -9
  355. package/dist/src/commands/furnace/deploy.js +0 -218
  356. package/dist/src/commands/furnace/diff.d.ts +0 -11
  357. package/dist/src/commands/furnace/diff.js +0 -238
  358. package/dist/src/commands/furnace/index.d.ts +0 -4
  359. package/dist/src/commands/furnace/index.js +0 -282
  360. package/dist/src/commands/furnace/init.d.ts +0 -11
  361. package/dist/src/commands/furnace/init.js +0 -287
  362. package/dist/src/commands/furnace/list.d.ts +0 -8
  363. package/dist/src/commands/furnace/list.js +0 -104
  364. package/dist/src/commands/furnace/override.d.ts +0 -16
  365. package/dist/src/commands/furnace/override.js +0 -454
  366. package/dist/src/commands/furnace/preview.d.ts +0 -19
  367. package/dist/src/commands/furnace/preview.js +0 -349
  368. package/dist/src/commands/furnace/refresh.d.ts +0 -10
  369. package/dist/src/commands/furnace/refresh.js +0 -303
  370. package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
  371. package/dist/src/commands/furnace/remove-mutations.js +0 -168
  372. package/dist/src/commands/furnace/remove-state.d.ts +0 -20
  373. package/dist/src/commands/furnace/remove-state.js +0 -60
  374. package/dist/src/commands/furnace/remove.d.ts +0 -8
  375. package/dist/src/commands/furnace/remove.js +0 -415
  376. package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
  377. package/dist/src/commands/furnace/rename-browser-test.js +0 -68
  378. package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
  379. package/dist/src/commands/furnace/rename-dry-run.js +0 -127
  380. package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
  381. package/dist/src/commands/furnace/rename-helpers.js +0 -85
  382. package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
  383. package/dist/src/commands/furnace/rename-registrations.js +0 -98
  384. package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
  385. package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
  386. package/dist/src/commands/furnace/rename.d.ts +0 -6
  387. package/dist/src/commands/furnace/rename.js +0 -400
  388. package/dist/src/commands/furnace/scan.d.ts +0 -14
  389. package/dist/src/commands/furnace/scan.js +0 -192
  390. package/dist/src/commands/furnace/status.d.ts +0 -7
  391. package/dist/src/commands/furnace/status.js +0 -209
  392. package/dist/src/commands/furnace/sync.d.ts +0 -12
  393. package/dist/src/commands/furnace/sync.js +0 -145
  394. package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
  395. package/dist/src/commands/furnace/test-file-name.js +0 -39
  396. package/dist/src/commands/furnace/validate-report.d.ts +0 -45
  397. package/dist/src/commands/furnace/validate-report.js +0 -91
  398. package/dist/src/commands/furnace/validate.d.ts +0 -8
  399. package/dist/src/commands/furnace/validate.js +0 -309
  400. package/dist/src/commands/furnace/validation-output.d.ts +0 -47
  401. package/dist/src/commands/furnace/validation-output.js +0 -161
  402. package/dist/src/commands/import.d.ts +0 -11
  403. package/dist/src/commands/lint-per-patch.d.ts +0 -10
  404. package/dist/src/commands/lint-per-patch.js +0 -428
  405. package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
  406. package/dist/src/commands/lint-per-run-checkjs.js +0 -102
  407. package/dist/src/commands/lint-report.d.ts +0 -25
  408. package/dist/src/commands/lint-report.js +0 -76
  409. package/dist/src/commands/lint.d.ts +0 -47
  410. package/dist/src/commands/manifest.d.ts +0 -38
  411. package/dist/src/commands/manifest.js +0 -68
  412. package/dist/src/commands/package.d.ts +0 -11
  413. package/dist/src/commands/park.d.ts +0 -22
  414. package/dist/src/commands/park.js +0 -232
  415. package/dist/src/commands/patch/compact.d.ts +0 -28
  416. package/dist/src/commands/patch/compact.js +0 -208
  417. package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
  418. package/dist/src/commands/patch/delete-gap-notice.js +0 -48
  419. package/dist/src/commands/patch/delete.d.ts +0 -28
  420. package/dist/src/commands/patch/delete.js +0 -131
  421. package/dist/src/commands/patch/entry-projection.d.ts +0 -13
  422. package/dist/src/commands/patch/entry-projection.js +0 -24
  423. package/dist/src/commands/patch/index.d.ts +0 -16
  424. package/dist/src/commands/patch/index.js +0 -52
  425. package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
  426. package/dist/src/commands/patch/lint-ignore-from.js +0 -141
  427. package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
  428. package/dist/src/commands/patch/lint-ignore.js +0 -261
  429. package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
  430. package/dist/src/commands/patch/move-files-adopt.js +0 -65
  431. package/dist/src/commands/patch/move-files-create.d.ts +0 -19
  432. package/dist/src/commands/patch/move-files-create.js +0 -187
  433. package/dist/src/commands/patch/move-files-into.d.ts +0 -65
  434. package/dist/src/commands/patch/move-files-into.js +0 -325
  435. package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
  436. package/dist/src/commands/patch/move-files-retire.js +0 -91
  437. package/dist/src/commands/patch/move-files.d.ts +0 -28
  438. package/dist/src/commands/patch/move-files.js +0 -224
  439. package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
  440. package/dist/src/commands/patch/move-size-tier.js +0 -66
  441. package/dist/src/commands/patch/patch-context.d.ts +0 -40
  442. package/dist/src/commands/patch/patch-context.js +0 -51
  443. package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
  444. package/dist/src/commands/patch/removal-created-files.js +0 -83
  445. package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
  446. package/dist/src/commands/patch/removal-dependents.js +0 -133
  447. package/dist/src/commands/patch/rename.d.ts +0 -35
  448. package/dist/src/commands/patch/rename.js +0 -378
  449. package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
  450. package/dist/src/commands/patch/reorder-projection.js +0 -49
  451. package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
  452. package/dist/src/commands/patch/reorder-shift.js +0 -307
  453. package/dist/src/commands/patch/reorder.d.ts +0 -34
  454. package/dist/src/commands/patch/reorder.js +0 -375
  455. package/dist/src/commands/patch/reserve.d.ts +0 -33
  456. package/dist/src/commands/patch/reserve.js +0 -152
  457. package/dist/src/commands/patch/retire.d.ts +0 -34
  458. package/dist/src/commands/patch/retire.js +0 -133
  459. package/dist/src/commands/patch/split-plan.d.ts +0 -125
  460. package/dist/src/commands/patch/split-plan.js +0 -313
  461. package/dist/src/commands/patch/split-staged.d.ts +0 -108
  462. package/dist/src/commands/patch/split-staged.js +0 -202
  463. package/dist/src/commands/patch/split.d.ts +0 -43
  464. package/dist/src/commands/patch/split.js +0 -367
  465. package/dist/src/commands/patch/stage.d.ts +0 -34
  466. package/dist/src/commands/patch/stage.js +0 -153
  467. package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
  468. package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
  469. package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
  470. package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
  471. package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
  472. package/dist/src/commands/patch/staged-dependency-from.js +0 -114
  473. package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
  474. package/dist/src/commands/patch/staged-dependency-remove.js +0 -117
  475. package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -15
  476. package/dist/src/commands/patch/staged-dependency-validate.js +0 -49
  477. package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
  478. package/dist/src/commands/patch/staged-dependency.js +0 -248
  479. package/dist/src/commands/patch/tier.d.ts +0 -34
  480. package/dist/src/commands/patch/tier.js +0 -125
  481. package/dist/src/commands/patch-rename-map.d.ts +0 -30
  482. package/dist/src/commands/patch-rename-map.js +0 -54
  483. package/dist/src/commands/pending-resolution.d.ts +0 -15
  484. package/dist/src/commands/pending-resolution.js +0 -25
  485. package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
  486. package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
  487. package/dist/src/commands/re-export-adjacent.d.ts +0 -111
  488. package/dist/src/commands/re-export-adjacent.js +0 -267
  489. package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
  490. package/dist/src/commands/re-export-bulk-scan.js +0 -233
  491. package/dist/src/commands/re-export-drift.d.ts +0 -110
  492. package/dist/src/commands/re-export-drift.js +0 -358
  493. package/dist/src/commands/re-export-files.d.ts +0 -15
  494. package/dist/src/commands/re-export-files.js +0 -307
  495. package/dist/src/commands/re-export-hunks.d.ts +0 -35
  496. package/dist/src/commands/re-export-hunks.js +0 -220
  497. package/dist/src/commands/re-export-lint.d.ts +0 -137
  498. package/dist/src/commands/re-export-lint.js +0 -303
  499. package/dist/src/commands/re-export-options.d.ts +0 -29
  500. package/dist/src/commands/re-export-options.js +0 -191
  501. package/dist/src/commands/re-export-preflight.d.ts +0 -23
  502. package/dist/src/commands/re-export-preflight.js +0 -159
  503. package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
  504. package/dist/src/commands/re-export-purity-scope.js +0 -137
  505. package/dist/src/commands/re-export-register.d.ts +0 -12
  506. package/dist/src/commands/re-export-register.js +0 -99
  507. package/dist/src/commands/re-export-removed.d.ts +0 -15
  508. package/dist/src/commands/re-export-removed.js +0 -94
  509. package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
  510. package/dist/src/commands/re-export-retired-declarations.js +0 -113
  511. package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
  512. package/dist/src/commands/re-export-scan-owner.js +0 -116
  513. package/dist/src/commands/re-export-scan.d.ts +0 -72
  514. package/dist/src/commands/re-export-scan.js +0 -265
  515. package/dist/src/commands/re-export-single.d.ts +0 -39
  516. package/dist/src/commands/re-export-single.js +0 -388
  517. package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
  518. package/dist/src/commands/re-export-stale-registrations.js +0 -106
  519. package/dist/src/commands/re-export-summary.d.ts +0 -28
  520. package/dist/src/commands/re-export-summary.js +0 -36
  521. package/dist/src/commands/re-export.d.ts +0 -8
  522. package/dist/src/commands/rebase/abort.d.ts +0 -7
  523. package/dist/src/commands/rebase/abort.js +0 -67
  524. package/dist/src/commands/rebase/confirm.d.ts +0 -42
  525. package/dist/src/commands/rebase/confirm.js +0 -36
  526. package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
  527. package/dist/src/commands/rebase/conflict-summary.js +0 -37
  528. package/dist/src/commands/rebase/continue.d.ts +0 -7
  529. package/dist/src/commands/rebase/continue.js +0 -119
  530. package/dist/src/commands/rebase/index.d.ts +0 -22
  531. package/dist/src/commands/rebase/index.js +0 -209
  532. package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
  533. package/dist/src/commands/rebase/patch-loop.js +0 -289
  534. package/dist/src/commands/rebase/summary.d.ts +0 -8
  535. package/dist/src/commands/rebase/summary.js +0 -47
  536. package/dist/src/commands/register.d.ts +0 -13
  537. package/dist/src/commands/reset.d.ts +0 -11
  538. package/dist/src/commands/resolve.d.ts +0 -36
  539. package/dist/src/commands/run.d.ts +0 -10
  540. package/dist/src/commands/setup-support.d.ts +0 -35
  541. package/dist/src/commands/setup-support.js +0 -386
  542. package/dist/src/commands/setup.d.ts +0 -11
  543. package/dist/src/commands/source.d.ts +0 -9
  544. package/dist/src/commands/source.js +0 -120
  545. package/dist/src/commands/status-check.d.ts +0 -87
  546. package/dist/src/commands/status-check.js +0 -161
  547. package/dist/src/commands/status-json.d.ts +0 -45
  548. package/dist/src/commands/status-json.js +0 -97
  549. package/dist/src/commands/status-output.d.ts +0 -23
  550. package/dist/src/commands/status-output.js +0 -231
  551. package/dist/src/commands/status-ownership.d.ts +0 -54
  552. package/dist/src/commands/status-ownership.js +0 -59
  553. package/dist/src/commands/status-scope.d.ts +0 -37
  554. package/dist/src/commands/status-scope.js +0 -54
  555. package/dist/src/commands/status.d.ts +0 -11
  556. package/dist/src/commands/test-appdir.d.ts +0 -6
  557. package/dist/src/commands/test-appdir.js +0 -29
  558. package/dist/src/commands/test-browser-preflight.d.ts +0 -28
  559. package/dist/src/commands/test-browser-preflight.js +0 -197
  560. package/dist/src/commands/test-build-furnace.d.ts +0 -21
  561. package/dist/src/commands/test-build-furnace.js +0 -53
  562. package/dist/src/commands/test-build-phase.d.ts +0 -29
  563. package/dist/src/commands/test-build-phase.js +0 -290
  564. package/dist/src/commands/test-checkjs.d.ts +0 -3
  565. package/dist/src/commands/test-checkjs.js +0 -35
  566. package/dist/src/commands/test-control-restore.d.ts +0 -40
  567. package/dist/src/commands/test-control-restore.js +0 -86
  568. package/dist/src/commands/test-diagnose.d.ts +0 -23
  569. package/dist/src/commands/test-diagnose.js +0 -317
  570. package/dist/src/commands/test-dispatch.d.ts +0 -39
  571. package/dist/src/commands/test-dispatch.js +0 -281
  572. package/dist/src/commands/test-furnace-reach.d.ts +0 -37
  573. package/dist/src/commands/test-furnace-reach.js +0 -132
  574. package/dist/src/commands/test-harness-env.d.ts +0 -23
  575. package/dist/src/commands/test-harness-env.js +0 -81
  576. package/dist/src/commands/test-harness-teardown.d.ts +0 -62
  577. package/dist/src/commands/test-harness-teardown.js +0 -128
  578. package/dist/src/commands/test-modes.d.ts +0 -57
  579. package/dist/src/commands/test-modes.js +0 -158
  580. package/dist/src/commands/test-multi-verdict.d.ts +0 -61
  581. package/dist/src/commands/test-multi-verdict.js +0 -112
  582. package/dist/src/commands/test-orchestrate.d.ts +0 -63
  583. package/dist/src/commands/test-orchestrate.js +0 -274
  584. package/dist/src/commands/test-perf-scope.d.ts +0 -50
  585. package/dist/src/commands/test-perf-scope.js +0 -138
  586. package/dist/src/commands/test-prelock.d.ts +0 -61
  587. package/dist/src/commands/test-prelock.js +0 -301
  588. package/dist/src/commands/test-register.d.ts +0 -4
  589. package/dist/src/commands/test-register.js +0 -181
  590. package/dist/src/commands/test-results.d.ts +0 -71
  591. package/dist/src/commands/test-results.js +0 -79
  592. package/dist/src/commands/test-run.d.ts +0 -89
  593. package/dist/src/commands/test-run.js +0 -251
  594. package/dist/src/commands/test-shards.d.ts +0 -114
  595. package/dist/src/commands/test-shards.js +0 -272
  596. package/dist/src/commands/test-stale-gate.d.ts +0 -52
  597. package/dist/src/commands/test-stale-gate.js +0 -165
  598. package/dist/src/commands/test-verdict.d.ts +0 -92
  599. package/dist/src/commands/test-verdict.js +0 -162
  600. package/dist/src/commands/test.d.ts +0 -22
  601. package/dist/src/commands/token-coverage.d.ts +0 -5
  602. package/dist/src/commands/token-coverage.js +0 -170
  603. package/dist/src/commands/token-lint.d.ts +0 -14
  604. package/dist/src/commands/token-lint.js +0 -151
  605. package/dist/src/commands/token-list.d.ts +0 -26
  606. package/dist/src/commands/token-list.js +0 -153
  607. package/dist/src/commands/token.d.ts +0 -14
  608. package/dist/src/commands/tree.d.ts +0 -19
  609. package/dist/src/commands/tree.js +0 -341
  610. package/dist/src/commands/typecheck.d.ts +0 -56
  611. package/dist/src/commands/verify-scope.d.ts +0 -28
  612. package/dist/src/commands/verify-scope.js +0 -67
  613. package/dist/src/commands/verify.d.ts +0 -58
  614. package/dist/src/commands/watch.d.ts +0 -9
  615. package/dist/src/commands/wire.d.ts +0 -13
  616. package/dist/src/core/ast-utils.d.ts +0 -73
  617. package/dist/src/core/ast-utils.js +0 -105
  618. package/dist/src/core/brand-validation.d.ts +0 -7
  619. package/dist/src/core/brand-validation.js +0 -14
  620. package/dist/src/core/branding.d.ts +0 -86
  621. package/dist/src/core/branding.js +0 -371
  622. package/dist/src/core/browser-wire.d.ts +0 -48
  623. package/dist/src/core/browser-wire.js +0 -133
  624. package/dist/src/core/build-audit-platform.d.ts +0 -67
  625. package/dist/src/core/build-audit-platform.js +0 -373
  626. package/dist/src/core/build-audit-registration.d.ts +0 -80
  627. package/dist/src/core/build-audit-registration.js +0 -181
  628. package/dist/src/core/build-audit-resolve.d.ts +0 -78
  629. package/dist/src/core/build-audit-resolve.js +0 -240
  630. package/dist/src/core/build-audit-skip.d.ts +0 -57
  631. package/dist/src/core/build-audit-skip.js +0 -112
  632. package/dist/src/core/build-audit-transforms.d.ts +0 -23
  633. package/dist/src/core/build-audit-transforms.js +0 -92
  634. package/dist/src/core/build-audit.d.ts +0 -93
  635. package/dist/src/core/build-audit.js +0 -633
  636. package/dist/src/core/build-baseline-types.d.ts +0 -225
  637. package/dist/src/core/build-baseline-types.js +0 -10
  638. package/dist/src/core/build-baseline-validate.d.ts +0 -32
  639. package/dist/src/core/build-baseline-validate.js +0 -173
  640. package/dist/src/core/build-baseline.d.ts +0 -103
  641. package/dist/src/core/build-baseline.js +0 -261
  642. package/dist/src/core/build-jar-escalation.d.ts +0 -61
  643. package/dist/src/core/build-jar-escalation.js +0 -125
  644. package/dist/src/core/build-overwrite-guard.d.ts +0 -92
  645. package/dist/src/core/build-overwrite-guard.js +0 -235
  646. package/dist/src/core/build-prepare.d.ts +0 -83
  647. package/dist/src/core/build-prepare.js +0 -414
  648. package/dist/src/core/build-run-record.d.ts +0 -74
  649. package/dist/src/core/build-run-record.js +0 -136
  650. package/dist/src/core/checkjs-support-heads.d.ts +0 -41
  651. package/dist/src/core/checkjs-support-heads.js +0 -104
  652. package/dist/src/core/component-source-guard.d.ts +0 -20
  653. package/dist/src/core/component-source-guard.js +0 -68
  654. package/dist/src/core/config-mutate.d.ts +0 -16
  655. package/dist/src/core/config-mutate.js +0 -76
  656. package/dist/src/core/config-paths.d.ts +0 -16
  657. package/dist/src/core/config-paths.js +0 -106
  658. package/dist/src/core/config-state.d.ts +0 -16
  659. package/dist/src/core/config-state.js +0 -141
  660. package/dist/src/core/config-validate-build-audit.d.ts +0 -8
  661. package/dist/src/core/config-validate-build-audit.js +0 -80
  662. package/dist/src/core/config-validate-check.d.ts +0 -8
  663. package/dist/src/core/config-validate-check.js +0 -219
  664. package/dist/src/core/config-validate-file-size.d.ts +0 -15
  665. package/dist/src/core/config-validate-file-size.js +0 -154
  666. package/dist/src/core/config-validate-history.d.ts +0 -11
  667. package/dist/src/core/config-validate-history.js +0 -38
  668. package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
  669. package/dist/src/core/config-validate-patch-policy.js +0 -274
  670. package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
  671. package/dist/src/core/config-validate-test-toolchains.js +0 -133
  672. package/dist/src/core/config-validate-token-scales.d.ts +0 -9
  673. package/dist/src/core/config-validate-token-scales.js +0 -92
  674. package/dist/src/core/config-validate.d.ts +0 -11
  675. package/dist/src/core/config-validate.js +0 -503
  676. package/dist/src/core/config.d.ts +0 -92
  677. package/dist/src/core/config.js +0 -169
  678. package/dist/src/core/coverage-dispatch.d.ts +0 -24
  679. package/dist/src/core/coverage-dispatch.js +0 -44
  680. package/dist/src/core/coverage-extend.d.ts +0 -89
  681. package/dist/src/core/coverage-extend.js +0 -239
  682. package/dist/src/core/coverage-records.d.ts +0 -107
  683. package/dist/src/core/coverage-records.js +0 -383
  684. package/dist/src/core/destructive.d.ts +0 -144
  685. package/dist/src/core/destructive.js +0 -182
  686. package/dist/src/core/diff-hunks.d.ts +0 -73
  687. package/dist/src/core/diff-hunks.js +0 -286
  688. package/dist/src/core/discard-baseline.d.ts +0 -60
  689. package/dist/src/core/discard-baseline.js +0 -247
  690. package/dist/src/core/display-state.d.ts +0 -50
  691. package/dist/src/core/display-state.js +0 -87
  692. package/dist/src/core/engine-changes.d.ts +0 -40
  693. package/dist/src/core/engine-changes.js +0 -95
  694. package/dist/src/core/engine-precondition.d.ts +0 -42
  695. package/dist/src/core/engine-precondition.js +0 -60
  696. package/dist/src/core/engine-session-lock.d.ts +0 -119
  697. package/dist/src/core/engine-session-lock.js +0 -374
  698. package/dist/src/core/engine-write-boundary.d.ts +0 -5
  699. package/dist/src/core/engine-write-boundary.js +0 -41
  700. package/dist/src/core/export-moved-code-shape.d.ts +0 -98
  701. package/dist/src/core/export-moved-code-shape.js +0 -220
  702. package/dist/src/core/file-lock-owner.d.ts +0 -103
  703. package/dist/src/core/file-lock-owner.js +0 -259
  704. package/dist/src/core/file-lock-queue.d.ts +0 -67
  705. package/dist/src/core/file-lock-queue.js +0 -219
  706. package/dist/src/core/file-lock-shared.d.ts +0 -57
  707. package/dist/src/core/file-lock-shared.js +0 -117
  708. package/dist/src/core/file-lock.d.ts +0 -143
  709. package/dist/src/core/file-lock.js +0 -531
  710. package/dist/src/core/firefox-archive.d.ts +0 -45
  711. package/dist/src/core/firefox-archive.js +0 -96
  712. package/dist/src/core/firefox-cache.d.ts +0 -30
  713. package/dist/src/core/firefox-cache.js +0 -248
  714. package/dist/src/core/firefox-download.d.ts +0 -30
  715. package/dist/src/core/firefox-download.js +0 -152
  716. package/dist/src/core/firefox-extract.d.ts +0 -42
  717. package/dist/src/core/firefox-extract.js +0 -248
  718. package/dist/src/core/firefox-ignorefile.d.ts +0 -17
  719. package/dist/src/core/firefox-ignorefile.js +0 -30
  720. package/dist/src/core/firefox.d.ts +0 -66
  721. package/dist/src/core/firefox.js +0 -121
  722. package/dist/src/core/forward-registrations.d.ts +0 -33
  723. package/dist/src/core/forward-registrations.js +0 -16
  724. package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
  725. package/dist/src/core/furnace-apply-dry-run.js +0 -99
  726. package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
  727. package/dist/src/core/furnace-apply-ftl.js +0 -210
  728. package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
  729. package/dist/src/core/furnace-apply-helpers.js +0 -436
  730. package/dist/src/core/furnace-apply-output.d.ts +0 -36
  731. package/dist/src/core/furnace-apply-output.js +0 -111
  732. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -62
  733. package/dist/src/core/furnace-apply-overwrite-warn.js +0 -124
  734. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
  735. package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
  736. package/dist/src/core/furnace-apply.d.ts +0 -49
  737. package/dist/src/core/furnace-apply.js +0 -465
  738. package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
  739. package/dist/src/core/furnace-checksum-utils.js +0 -54
  740. package/dist/src/core/furnace-composed-source.d.ts +0 -76
  741. package/dist/src/core/furnace-composed-source.js +0 -167
  742. package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
  743. package/dist/src/core/furnace-config-array-utils.js +0 -26
  744. package/dist/src/core/furnace-config-custom.d.ts +0 -15
  745. package/dist/src/core/furnace-config-custom.js +0 -73
  746. package/dist/src/core/furnace-config-order.d.ts +0 -8
  747. package/dist/src/core/furnace-config-order.js +0 -90
  748. package/dist/src/core/furnace-config-tokens.d.ts +0 -17
  749. package/dist/src/core/furnace-config-tokens.js +0 -42
  750. package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
  751. package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
  752. package/dist/src/core/furnace-config-validate.d.ts +0 -32
  753. package/dist/src/core/furnace-config-validate.js +0 -146
  754. package/dist/src/core/furnace-config.d.ts +0 -139
  755. package/dist/src/core/furnace-config.js +0 -511
  756. package/dist/src/core/furnace-constants.d.ts +0 -79
  757. package/dist/src/core/furnace-constants.js +0 -123
  758. package/dist/src/core/furnace-css-fragments.d.ts +0 -96
  759. package/dist/src/core/furnace-css-fragments.js +0 -279
  760. package/dist/src/core/furnace-dir-entry.d.ts +0 -20
  761. package/dist/src/core/furnace-dir-entry.js +0 -21
  762. package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
  763. package/dist/src/core/furnace-fragment-includers.js +0 -122
  764. package/dist/src/core/furnace-graph-utils.d.ts +0 -11
  765. package/dist/src/core/furnace-graph-utils.js +0 -93
  766. package/dist/src/core/furnace-jsconfig.d.ts +0 -61
  767. package/dist/src/core/furnace-jsconfig.js +0 -208
  768. package/dist/src/core/furnace-marker.d.ts +0 -15
  769. package/dist/src/core/furnace-marker.js +0 -21
  770. package/dist/src/core/furnace-operation.d.ts +0 -195
  771. package/dist/src/core/furnace-operation.js +0 -444
  772. package/dist/src/core/furnace-precondition.d.ts +0 -61
  773. package/dist/src/core/furnace-precondition.js +0 -67
  774. package/dist/src/core/furnace-refresh.d.ts +0 -28
  775. package/dist/src/core/furnace-refresh.js +0 -125
  776. package/dist/src/core/furnace-registration-ast.d.ts +0 -53
  777. package/dist/src/core/furnace-registration-ast.js +0 -402
  778. package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
  779. package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
  780. package/dist/src/core/furnace-registration-remove.d.ts +0 -56
  781. package/dist/src/core/furnace-registration-remove.js +0 -260
  782. package/dist/src/core/furnace-registration-rename.d.ts +0 -26
  783. package/dist/src/core/furnace-registration-rename.js +0 -77
  784. package/dist/src/core/furnace-registration-validate.d.ts +0 -53
  785. package/dist/src/core/furnace-registration-validate.js +0 -110
  786. package/dist/src/core/furnace-registration.d.ts +0 -112
  787. package/dist/src/core/furnace-registration.js +0 -348
  788. package/dist/src/core/furnace-rollback.d.ts +0 -48
  789. package/dist/src/core/furnace-rollback.js +0 -170
  790. package/dist/src/core/furnace-scanner.d.ts +0 -47
  791. package/dist/src/core/furnace-scanner.js +0 -236
  792. package/dist/src/core/furnace-stale-export.d.ts +0 -60
  793. package/dist/src/core/furnace-stale-export.js +0 -125
  794. package/dist/src/core/furnace-staleness.d.ts +0 -24
  795. package/dist/src/core/furnace-staleness.js +0 -67
  796. package/dist/src/core/furnace-state-persist.d.ts +0 -68
  797. package/dist/src/core/furnace-state-persist.js +0 -116
  798. package/dist/src/core/furnace-step-errors.d.ts +0 -23
  799. package/dist/src/core/furnace-step-errors.js +0 -25
  800. package/dist/src/core/furnace-stories.d.ts +0 -37
  801. package/dist/src/core/furnace-stories.js +0 -186
  802. package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
  803. package/dist/src/core/furnace-validate-accessibility.js +0 -417
  804. package/dist/src/core/furnace-validate-checks.d.ts +0 -4
  805. package/dist/src/core/furnace-validate-checks.js +0 -6
  806. package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
  807. package/dist/src/core/furnace-validate-compatibility.js +0 -295
  808. package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
  809. package/dist/src/core/furnace-validate-exceptions.js +0 -98
  810. package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
  811. package/dist/src/core/furnace-validate-helpers.js +0 -4
  812. package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
  813. package/dist/src/core/furnace-validate-icon-button.js +0 -78
  814. package/dist/src/core/furnace-validate-registration.d.ts +0 -67
  815. package/dist/src/core/furnace-validate-registration.js +0 -487
  816. package/dist/src/core/furnace-validate-structure.d.ts +0 -22
  817. package/dist/src/core/furnace-validate-structure.js +0 -122
  818. package/dist/src/core/furnace-validate.d.ts +0 -41
  819. package/dist/src/core/furnace-validate.js +0 -302
  820. package/dist/src/core/furnace-version-drift.d.ts +0 -57
  821. package/dist/src/core/furnace-version-drift.js +0 -102
  822. package/dist/src/core/gecko-dom-types.d.ts +0 -2
  823. package/dist/src/core/gecko-dom-types.js +0 -17
  824. package/dist/src/core/git-base.d.ts +0 -101
  825. package/dist/src/core/git-base.js +0 -162
  826. package/dist/src/core/git-diff-new-file.d.ts +0 -40
  827. package/dist/src/core/git-diff-new-file.js +0 -118
  828. package/dist/src/core/git-diff.d.ts +0 -82
  829. package/dist/src/core/git-diff.js +0 -539
  830. package/dist/src/core/git-file-ops.d.ts +0 -108
  831. package/dist/src/core/git-file-ops.js +0 -280
  832. package/dist/src/core/git-readonly-index.d.ts +0 -91
  833. package/dist/src/core/git-readonly-index.js +0 -177
  834. package/dist/src/core/git-status.d.ts +0 -84
  835. package/dist/src/core/git-status.js +0 -208
  836. package/dist/src/core/git.d.ts +0 -114
  837. package/dist/src/core/git.js +0 -540
  838. package/dist/src/core/harness-helper-pids.d.ts +0 -98
  839. package/dist/src/core/harness-helper-pids.js +0 -240
  840. package/dist/src/core/harness-orphans.d.ts +0 -118
  841. package/dist/src/core/harness-orphans.js +0 -268
  842. package/dist/src/core/harness-port-fallback.d.ts +0 -60
  843. package/dist/src/core/harness-port-fallback.js +0 -96
  844. package/dist/src/core/harness-port-reservation.d.ts +0 -60
  845. package/dist/src/core/harness-port-reservation.js +0 -122
  846. package/dist/src/core/history-log-file.d.ts +0 -61
  847. package/dist/src/core/history-log-file.js +0 -164
  848. package/dist/src/core/history-log.d.ts +0 -20
  849. package/dist/src/core/history-log.js +0 -30
  850. package/dist/src/core/json-preserving-edit.d.ts +0 -22
  851. package/dist/src/core/json-preserving-edit.js +0 -199
  852. package/dist/src/core/launchable-build.d.ts +0 -39
  853. package/dist/src/core/launchable-build.js +0 -85
  854. package/dist/src/core/license-headers.d.ts +0 -103
  855. package/dist/src/core/license-headers.js +0 -318
  856. package/dist/src/core/line-prefixer.d.ts +0 -18
  857. package/dist/src/core/line-prefixer.js +0 -34
  858. package/dist/src/core/lit-template-regions.d.ts +0 -4
  859. package/dist/src/core/lit-template-regions.js +0 -50
  860. package/dist/src/core/mach-build-artifacts.d.ts +0 -176
  861. package/dist/src/core/mach-build-artifacts.js +0 -436
  862. package/dist/src/core/mach-error-hints.d.ts +0 -24
  863. package/dist/src/core/mach-error-hints.js +0 -135
  864. package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
  865. package/dist/src/core/mach-known-noise-filter.js +0 -257
  866. package/dist/src/core/mach-mozconfig.d.ts +0 -57
  867. package/dist/src/core/mach-mozconfig.js +0 -166
  868. package/dist/src/core/mach-python.d.ts +0 -19
  869. package/dist/src/core/mach-python.js +0 -131
  870. package/dist/src/core/mach-resource-shim.d.ts +0 -107
  871. package/dist/src/core/mach-resource-shim.js +0 -640
  872. package/dist/src/core/mach.d.ts +0 -284
  873. package/dist/src/core/mach.js +0 -445
  874. package/dist/src/core/marionette-port.d.ts +0 -153
  875. package/dist/src/core/marionette-port.js +0 -474
  876. package/dist/src/core/marionette-preflight.d.ts +0 -58
  877. package/dist/src/core/marionette-preflight.js +0 -332
  878. package/dist/src/core/markdown-table.d.ts +0 -104
  879. package/dist/src/core/markdown-table.js +0 -265
  880. package/dist/src/core/mochitest-server-port.d.ts +0 -81
  881. package/dist/src/core/mochitest-server-port.js +0 -175
  882. package/dist/src/core/module-resolution-preflight.d.ts +0 -65
  883. package/dist/src/core/module-resolution-preflight.js +0 -171
  884. package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
  885. package/dist/src/core/moz-manifest-helpers.js +0 -163
  886. package/dist/src/core/moz-manifest-register.d.ts +0 -19
  887. package/dist/src/core/moz-manifest-register.js +0 -51
  888. package/dist/src/core/moz-manifest-rules.d.ts +0 -58
  889. package/dist/src/core/moz-manifest-rules.js +0 -264
  890. package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
  891. package/dist/src/core/moz-manifest-tokenizers.js +0 -108
  892. package/dist/src/core/negative-control-compiled.d.ts +0 -46
  893. package/dist/src/core/negative-control-compiled.js +0 -109
  894. package/dist/src/core/negative-control-diff.d.ts +0 -51
  895. package/dist/src/core/negative-control-diff.js +0 -204
  896. package/dist/src/core/negative-control.d.ts +0 -150
  897. package/dist/src/core/negative-control.js +0 -399
  898. package/dist/src/core/objdir-install-manifests.d.ts +0 -73
  899. package/dist/src/core/objdir-install-manifests.js +0 -226
  900. package/dist/src/core/objdir-maintenance.d.ts +0 -10
  901. package/dist/src/core/objdir-maintenance.js +0 -167
  902. package/dist/src/core/ownership-table.d.ts +0 -53
  903. package/dist/src/core/ownership-table.js +0 -159
  904. package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
  905. package/dist/src/core/parent-exit-watchdog.js +0 -69
  906. package/dist/src/core/park-store.d.ts +0 -63
  907. package/dist/src/core/park-store.js +0 -216
  908. package/dist/src/core/parser-fallback.d.ts +0 -50
  909. package/dist/src/core/parser-fallback.js +0 -61
  910. package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
  911. package/dist/src/core/patch-apply-fuzz.js +0 -125
  912. package/dist/src/core/patch-apply.d.ts +0 -88
  913. package/dist/src/core/patch-apply.js +0 -435
  914. package/dist/src/core/patch-export-coverage.d.ts +0 -49
  915. package/dist/src/core/patch-export-coverage.js +0 -73
  916. package/dist/src/core/patch-export-metadata.d.ts +0 -46
  917. package/dist/src/core/patch-export-metadata.js +0 -47
  918. package/dist/src/core/patch-export-update.d.ts +0 -55
  919. package/dist/src/core/patch-export-update.js +0 -95
  920. package/dist/src/core/patch-export.d.ts +0 -175
  921. package/dist/src/core/patch-export.js +0 -312
  922. package/dist/src/core/patch-files.d.ts +0 -17
  923. package/dist/src/core/patch-files.js +0 -59
  924. package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
  925. package/dist/src/core/patch-identifier-suggest.js +0 -135
  926. package/dist/src/core/patch-lint-binary.d.ts +0 -45
  927. package/dist/src/core/patch-lint-binary.js +0 -39
  928. package/dist/src/core/patch-lint-cache.d.ts +0 -78
  929. package/dist/src/core/patch-lint-cache.js +0 -233
  930. package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -39
  931. package/dist/src/core/patch-lint-checkjs-any-import.js +0 -63
  932. package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
  933. package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
  934. package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
  935. package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
  936. package/dist/src/core/patch-lint-checkjs.d.ts +0 -180
  937. package/dist/src/core/patch-lint-checkjs.js +0 -611
  938. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
  939. package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
  940. package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
  941. package/dist/src/core/patch-lint-code-lines.js +0 -105
  942. package/dist/src/core/patch-lint-creators.d.ts +0 -26
  943. package/dist/src/core/patch-lint-creators.js +0 -45
  944. package/dist/src/core/patch-lint-cross.d.ts +0 -232
  945. package/dist/src/core/patch-lint-cross.js +0 -590
  946. package/dist/src/core/patch-lint-css.d.ts +0 -27
  947. package/dist/src/core/patch-lint-css.js +0 -228
  948. package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
  949. package/dist/src/core/patch-lint-diff-tag.js +0 -105
  950. package/dist/src/core/patch-lint-diff.d.ts +0 -42
  951. package/dist/src/core/patch-lint-diff.js +0 -100
  952. package/dist/src/core/patch-lint-file-size.d.ts +0 -57
  953. package/dist/src/core/patch-lint-file-size.js +0 -62
  954. package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
  955. package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
  956. package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
  957. package/dist/src/core/patch-lint-forward-registration.js +0 -266
  958. package/dist/src/core/patch-lint-ignore.d.ts +0 -196
  959. package/dist/src/core/patch-lint-ignore.js +0 -429
  960. package/dist/src/core/patch-lint-imports.d.ts +0 -5
  961. package/dist/src/core/patch-lint-imports.js +0 -67
  962. package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
  963. package/dist/src/core/patch-lint-jsdoc.js +0 -471
  964. package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
  965. package/dist/src/core/patch-lint-module-registration.js +0 -97
  966. package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
  967. package/dist/src/core/patch-lint-mozbuild.js +0 -192
  968. package/dist/src/core/patch-lint-observer.d.ts +0 -37
  969. package/dist/src/core/patch-lint-observer.js +0 -167
  970. package/dist/src/core/patch-lint-ownership.d.ts +0 -74
  971. package/dist/src/core/patch-lint-ownership.js +0 -125
  972. package/dist/src/core/patch-lint-prettier.d.ts +0 -34
  973. package/dist/src/core/patch-lint-prettier.js +0 -124
  974. package/dist/src/core/patch-lint-projection.d.ts +0 -25
  975. package/dist/src/core/patch-lint-projection.js +0 -43
  976. package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
  977. package/dist/src/core/patch-lint-queue-types.js +0 -12
  978. package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
  979. package/dist/src/core/patch-lint-size-thresholds.js +0 -110
  980. package/dist/src/core/patch-lint-size.d.ts +0 -117
  981. package/dist/src/core/patch-lint-size.js +0 -331
  982. package/dist/src/core/patch-lint-staged-registration.d.ts +0 -78
  983. package/dist/src/core/patch-lint-staged-registration.js +0 -110
  984. package/dist/src/core/patch-lint-token-scale.d.ts +0 -57
  985. package/dist/src/core/patch-lint-token-scale.js +0 -286
  986. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
  987. package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
  988. package/dist/src/core/patch-lint.d.ts +0 -191
  989. package/dist/src/core/patch-lint.js +0 -529
  990. package/dist/src/core/patch-lock.d.ts +0 -40
  991. package/dist/src/core/patch-lock.js +0 -129
  992. package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
  993. package/dist/src/core/patch-manifest-consistency.js +0 -256
  994. package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
  995. package/dist/src/core/patch-manifest-files-affected.js +0 -77
  996. package/dist/src/core/patch-manifest-io.d.ts +0 -199
  997. package/dist/src/core/patch-manifest-io.js +0 -556
  998. package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
  999. package/dist/src/core/patch-manifest-key-order.js +0 -60
  1000. package/dist/src/core/patch-manifest-query.d.ts +0 -55
  1001. package/dist/src/core/patch-manifest-query.js +0 -139
  1002. package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
  1003. package/dist/src/core/patch-manifest-resolve.js +0 -35
  1004. package/dist/src/core/patch-manifest-stage.d.ts +0 -46
  1005. package/dist/src/core/patch-manifest-stage.js +0 -96
  1006. package/dist/src/core/patch-manifest-validate.d.ts +0 -20
  1007. package/dist/src/core/patch-manifest-validate.js +0 -240
  1008. package/dist/src/core/patch-manifest.d.ts +0 -12
  1009. package/dist/src/core/patch-manifest.js +0 -13
  1010. package/dist/src/core/patch-order-legal.d.ts +0 -26
  1011. package/dist/src/core/patch-order-legal.js +0 -88
  1012. package/dist/src/core/patch-parse.d.ts +0 -161
  1013. package/dist/src/core/patch-parse.js +0 -347
  1014. package/dist/src/core/patch-policy-content.d.ts +0 -40
  1015. package/dist/src/core/patch-policy-content.js +0 -216
  1016. package/dist/src/core/patch-policy.d.ts +0 -80
  1017. package/dist/src/core/patch-policy.js +0 -394
  1018. package/dist/src/core/patch-registration-refs.d.ts +0 -41
  1019. package/dist/src/core/patch-registration-refs.js +0 -107
  1020. package/dist/src/core/patch-retired.d.ts +0 -57
  1021. package/dist/src/core/patch-retired.js +0 -92
  1022. package/dist/src/core/patch-source-metadata.d.ts +0 -6
  1023. package/dist/src/core/patch-source-metadata.js +0 -12
  1024. package/dist/src/core/patch-subset.d.ts +0 -18
  1025. package/dist/src/core/patch-subset.js +0 -67
  1026. package/dist/src/core/patch-transform.d.ts +0 -61
  1027. package/dist/src/core/patch-transform.js +0 -198
  1028. package/dist/src/core/preflight-wait.d.ts +0 -22
  1029. package/dist/src/core/preflight-wait.js +0 -62
  1030. package/dist/src/core/process-cpu-time.d.ts +0 -12
  1031. package/dist/src/core/process-cpu-time.js +0 -52
  1032. package/dist/src/core/process-owner.d.ts +0 -9
  1033. package/dist/src/core/process-owner.js +0 -43
  1034. package/dist/src/core/rebase-dry-run.d.ts +0 -48
  1035. package/dist/src/core/rebase-dry-run.js +0 -105
  1036. package/dist/src/core/rebase-from-version.d.ts +0 -46
  1037. package/dist/src/core/rebase-from-version.js +0 -71
  1038. package/dist/src/core/rebase-session.d.ts +0 -100
  1039. package/dist/src/core/rebase-session.js +0 -174
  1040. package/dist/src/core/register-browser-content.d.ts +0 -11
  1041. package/dist/src/core/register-browser-content.js +0 -52
  1042. package/dist/src/core/register-browser-test.d.ts +0 -18
  1043. package/dist/src/core/register-browser-test.js +0 -66
  1044. package/dist/src/core/register-module.d.ts +0 -11
  1045. package/dist/src/core/register-module.js +0 -56
  1046. package/dist/src/core/register-result.d.ts +0 -30
  1047. package/dist/src/core/register-result.js +0 -8
  1048. package/dist/src/core/register-scaffold.d.ts +0 -55
  1049. package/dist/src/core/register-scaffold.js +0 -146
  1050. package/dist/src/core/register-shared-css.d.ts +0 -36
  1051. package/dist/src/core/register-shared-css.js +0 -112
  1052. package/dist/src/core/register-xpcshell-test.d.ts +0 -50
  1053. package/dist/src/core/register-xpcshell-test.js +0 -143
  1054. package/dist/src/core/run-log-redact.d.ts +0 -38
  1055. package/dist/src/core/run-log-redact.js +0 -69
  1056. package/dist/src/core/run-log.d.ts +0 -97
  1057. package/dist/src/core/run-log.js +0 -334
  1058. package/dist/src/core/run-profile.d.ts +0 -57
  1059. package/dist/src/core/run-profile.js +0 -137
  1060. package/dist/src/core/shared-ftl.d.ts +0 -28
  1061. package/dist/src/core/shared-ftl.js +0 -49
  1062. package/dist/src/core/signal-critical.d.ts +0 -38
  1063. package/dist/src/core/signal-critical.js +0 -62
  1064. package/dist/src/core/smoke-patterns.d.ts +0 -81
  1065. package/dist/src/core/smoke-patterns.js +0 -176
  1066. package/dist/src/core/state-file.d.ts +0 -60
  1067. package/dist/src/core/state-file.js +0 -71
  1068. package/dist/src/core/status-binary.d.ts +0 -62
  1069. package/dist/src/core/status-binary.js +0 -133
  1070. package/dist/src/core/status-classify.d.ts +0 -96
  1071. package/dist/src/core/status-classify.js +0 -244
  1072. package/dist/src/core/test-changed-prefs.d.ts +0 -30
  1073. package/dist/src/core/test-changed-prefs.js +0 -93
  1074. package/dist/src/core/test-harness-crash.d.ts +0 -251
  1075. package/dist/src/core/test-harness-crash.js +0 -780
  1076. package/dist/src/core/test-harness-infra.d.ts +0 -32
  1077. package/dist/src/core/test-harness-infra.js +0 -69
  1078. package/dist/src/core/test-harness-output.d.ts +0 -45
  1079. package/dist/src/core/test-harness-output.js +0 -119
  1080. package/dist/src/core/test-harness-signature.d.ts +0 -57
  1081. package/dist/src/core/test-harness-signature.js +0 -35
  1082. package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
  1083. package/dist/src/core/test-harness-verdict-notes.js +0 -48
  1084. package/dist/src/core/test-host-state.d.ts +0 -14
  1085. package/dist/src/core/test-host-state.js +0 -80
  1086. package/dist/src/core/test-path-scope.d.ts +0 -59
  1087. package/dist/src/core/test-path-scope.js +0 -147
  1088. package/dist/src/core/test-profile-files.d.ts +0 -17
  1089. package/dist/src/core/test-profile-files.js +0 -75
  1090. package/dist/src/core/test-raw-log.d.ts +0 -66
  1091. package/dist/src/core/test-raw-log.js +0 -122
  1092. package/dist/src/core/test-run-completeness.d.ts +0 -97
  1093. package/dist/src/core/test-run-completeness.js +0 -191
  1094. package/dist/src/core/test-stale-check.d.ts +0 -213
  1095. package/dist/src/core/test-stale-check.js +0 -396
  1096. package/dist/src/core/test-stale-exempt.d.ts +0 -40
  1097. package/dist/src/core/test-stale-exempt.js +0 -70
  1098. package/dist/src/core/test-stale-symlink.d.ts +0 -12
  1099. package/dist/src/core/test-stale-symlink.js +0 -39
  1100. package/dist/src/core/test-stall-triage.d.ts +0 -51
  1101. package/dist/src/core/test-stall-triage.js +0 -142
  1102. package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
  1103. package/dist/src/core/test-xpcshell-retry.js +0 -31
  1104. package/dist/src/core/token-category.d.ts +0 -54
  1105. package/dist/src/core/token-category.js +0 -299
  1106. package/dist/src/core/token-coverage.d.ts +0 -12
  1107. package/dist/src/core/token-coverage.js +0 -96
  1108. package/dist/src/core/token-dark-mode.d.ts +0 -64
  1109. package/dist/src/core/token-dark-mode.js +0 -186
  1110. package/dist/src/core/token-docs.d.ts +0 -34
  1111. package/dist/src/core/token-docs.js +0 -102
  1112. package/dist/src/core/token-inventory.d.ts +0 -56
  1113. package/dist/src/core/token-inventory.js +0 -114
  1114. package/dist/src/core/token-lint.d.ts +0 -53
  1115. package/dist/src/core/token-lint.js +0 -131
  1116. package/dist/src/core/token-manager.d.ts +0 -87
  1117. package/dist/src/core/token-manager.js +0 -407
  1118. package/dist/src/core/token-scaffold.d.ts +0 -36
  1119. package/dist/src/core/token-scaffold.js +0 -73
  1120. package/dist/src/core/token-sibling-sheets.d.ts +0 -46
  1121. package/dist/src/core/token-sibling-sheets.js +0 -119
  1122. package/dist/src/core/token-variant.d.ts +0 -90
  1123. package/dist/src/core/token-variant.js +0 -327
  1124. package/dist/src/core/toolchain-preflight.d.ts +0 -90
  1125. package/dist/src/core/toolchain-preflight.js +0 -251
  1126. package/dist/src/core/tree-cow.d.ts +0 -16
  1127. package/dist/src/core/tree-cow.js +0 -71
  1128. package/dist/src/core/tree-guard.d.ts +0 -35
  1129. package/dist/src/core/tree-guard.js +0 -194
  1130. package/dist/src/core/tree-store.d.ts +0 -143
  1131. package/dist/src/core/tree-store.js +0 -478
  1132. package/dist/src/core/typecheck-shim.d.ts +0 -90
  1133. package/dist/src/core/typecheck-shim.js +0 -507
  1134. package/dist/src/core/typecheck.d.ts +0 -75
  1135. package/dist/src/core/typecheck.js +0 -433
  1136. package/dist/src/core/wire-destroy.d.ts +0 -25
  1137. package/dist/src/core/wire-destroy.js +0 -126
  1138. package/dist/src/core/wire-dom-fragment.d.ts +0 -44
  1139. package/dist/src/core/wire-dom-fragment.js +0 -139
  1140. package/dist/src/core/wire-init.d.ts +0 -28
  1141. package/dist/src/core/wire-init.js +0 -219
  1142. package/dist/src/core/wire-subscript.d.ts +0 -23
  1143. package/dist/src/core/wire-subscript.js +0 -145
  1144. package/dist/src/core/wire-utils.d.ts +0 -149
  1145. package/dist/src/core/wire-utils.js +0 -338
  1146. package/dist/src/core/xpcshell-appdir.d.ts +0 -157
  1147. package/dist/src/core/xpcshell-appdir.js +0 -299
  1148. package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
  1149. package/dist/src/core/xpcshell-profile-dir.js +0 -45
  1150. package/dist/src/errors/base.d.ts +0 -217
  1151. package/dist/src/errors/base.js +0 -279
  1152. package/dist/src/errors/build.d.ts +0 -92
  1153. package/dist/src/errors/build.js +0 -166
  1154. package/dist/src/errors/codes.d.ts +0 -74
  1155. package/dist/src/errors/codes.js +0 -74
  1156. package/dist/src/errors/config.d.ts +0 -17
  1157. package/dist/src/errors/config.js +0 -39
  1158. package/dist/src/errors/download.d.ts +0 -66
  1159. package/dist/src/errors/download.js +0 -160
  1160. package/dist/src/errors/furnace.d.ts +0 -20
  1161. package/dist/src/errors/furnace.js +0 -28
  1162. package/dist/src/errors/git.d.ts +0 -65
  1163. package/dist/src/errors/git.js +0 -140
  1164. package/dist/src/errors/patch.d.ts +0 -27
  1165. package/dist/src/errors/patch.js +0 -52
  1166. package/dist/src/errors/rebase.d.ts +0 -42
  1167. package/dist/src/errors/rebase.js +0 -71
  1168. package/dist/src/errors/run.d.ts +0 -16
  1169. package/dist/src/errors/run.js +0 -22
  1170. package/dist/src/index.d.ts +0 -42
  1171. package/dist/src/index.js +0 -32
  1172. package/dist/src/types/cli.d.ts +0 -14
  1173. package/dist/src/types/commands/index.d.ts +0 -6
  1174. package/dist/src/types/commands/index.js +0 -5
  1175. package/dist/src/types/commands/options.d.ts +0 -1367
  1176. package/dist/src/types/commands/options.js +0 -5
  1177. package/dist/src/types/commands/patches.d.ts +0 -352
  1178. package/dist/src/types/commands/patches.js +0 -5
  1179. package/dist/src/types/commands/project.d.ts +0 -51
  1180. package/dist/src/types/commands/project.js +0 -5
  1181. package/dist/src/types/config.d.ts +0 -703
  1182. package/dist/src/types/config.js +0 -15
  1183. package/dist/src/types/furnace.d.ts +0 -415
  1184. package/dist/src/types/furnace.js +0 -26
  1185. package/dist/src/types/index.d.ts +0 -5
  1186. package/dist/src/types/index.js +0 -5
  1187. package/dist/src/types/json.d.ts +0 -22
  1188. package/dist/src/types/json.js +0 -11
  1189. package/dist/src/types/typecheck.d.ts +0 -51
  1190. package/dist/src/types/typecheck.js +0 -14
  1191. package/dist/src/utils/assert.d.ts +0 -34
  1192. package/dist/src/utils/assert.js +0 -61
  1193. package/dist/src/utils/build-info.d.ts +0 -30
  1194. package/dist/src/utils/build-info.js +0 -99
  1195. package/dist/src/utils/child-env.d.ts +0 -28
  1196. package/dist/src/utils/child-env.js +0 -27
  1197. package/dist/src/utils/concurrency.d.ts +0 -8
  1198. package/dist/src/utils/concurrency.js +0 -32
  1199. package/dist/src/utils/elapsed.d.ts +0 -2
  1200. package/dist/src/utils/elapsed.js +0 -23
  1201. package/dist/src/utils/errors.d.ts +0 -39
  1202. package/dist/src/utils/errors.js +0 -67
  1203. package/dist/src/utils/fs.d.ts +0 -113
  1204. package/dist/src/utils/fs.js +0 -337
  1205. package/dist/src/utils/hash.d.ts +0 -12
  1206. package/dist/src/utils/hash.js +0 -16
  1207. package/dist/src/utils/line-dispatch.d.ts +0 -15
  1208. package/dist/src/utils/line-dispatch.js +0 -48
  1209. package/dist/src/utils/logger.d.ts +0 -109
  1210. package/dist/src/utils/logger.js +0 -270
  1211. package/dist/src/utils/machine-output.d.ts +0 -12
  1212. package/dist/src/utils/machine-output.js +0 -33
  1213. package/dist/src/utils/options.d.ts +0 -155
  1214. package/dist/src/utils/options.js +0 -312
  1215. package/dist/src/utils/package-root.d.ts +0 -21
  1216. package/dist/src/utils/package-root.js +0 -70
  1217. package/dist/src/utils/parse.d.ts +0 -117
  1218. package/dist/src/utils/parse.js +0 -214
  1219. package/dist/src/utils/path-glob.d.ts +0 -15
  1220. package/dist/src/utils/path-glob.js +0 -47
  1221. package/dist/src/utils/paths.d.ts +0 -31
  1222. package/dist/src/utils/paths.js +0 -80
  1223. package/dist/src/utils/platform.d.ts +0 -9
  1224. package/dist/src/utils/platform.js +0 -14
  1225. package/dist/src/utils/process-group.d.ts +0 -42
  1226. package/dist/src/utils/process-group.js +0 -190
  1227. package/dist/src/utils/process-input.d.ts +0 -27
  1228. package/dist/src/utils/process-input.js +0 -46
  1229. package/dist/src/utils/process.d.ts +0 -293
  1230. package/dist/src/utils/process.js +0 -593
  1231. package/dist/src/utils/ps-duration.d.ts +0 -31
  1232. package/dist/src/utils/ps-duration.js +0 -70
  1233. package/dist/src/utils/regex.d.ts +0 -39
  1234. package/dist/src/utils/regex.js +0 -109
  1235. package/dist/src/utils/sleep.d.ts +0 -25
  1236. package/dist/src/utils/sleep.js +0 -30
  1237. package/dist/src/utils/stdio-drain.d.ts +0 -28
  1238. package/dist/src/utils/stdio-drain.js +0 -54
  1239. package/dist/src/utils/validation.d.ts +0 -182
  1240. package/dist/src/utils/validation.js +0 -394
  1241. package/docs/lifecycle-invariants.md +0 -523
  1242. package/docs/run-logs.md +0 -122
  1243. package/docs/verification-trees.md +0 -49
  1244. /package/dist/src/{types/cli.js → cli/context.js} +0 -0
@@ -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
+ }