@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.
- package/CHANGELOG.md +287 -6
- package/README.md +51 -17
- package/dist/bin/fireforge.js +34 -129
- package/dist/build-info.json +4 -4
- package/dist/src/check/check.js +394 -0
- package/dist/src/check/gate.js +448 -0
- package/dist/src/check/index.js +10 -0
- package/dist/src/check/record.js +155 -0
- package/dist/src/cli/command.js +286 -0
- package/dist/src/cli/output.js +96 -0
- package/dist/src/cli/program.js +231 -0
- package/dist/src/cli/stdio.js +59 -0
- package/dist/src/cli/version.js +99 -0
- package/dist/src/commands/bootstrap.js +17 -102
- package/dist/src/commands/build.js +34 -438
- package/dist/src/commands/check.js +44 -157
- package/dist/src/commands/config.js +50 -226
- package/dist/src/commands/discard.js +38 -215
- package/dist/src/commands/doctor.js +29 -456
- package/dist/src/commands/download.js +35 -499
- package/dist/src/commands/export.js +42 -431
- package/dist/src/commands/furnace.js +220 -0
- package/dist/src/commands/gate.js +127 -0
- package/dist/src/commands/import.js +44 -445
- package/dist/src/commands/index.js +86 -0
- package/dist/src/commands/lint.js +44 -546
- package/dist/src/commands/merge-driver.js +56 -0
- package/dist/src/commands/migrate.js +75 -0
- package/dist/src/commands/override.js +43 -0
- package/dist/src/commands/package.js +48 -77
- package/dist/src/commands/patch.js +221 -0
- package/dist/src/commands/re-export.js +55 -332
- package/dist/src/commands/rebase.js +69 -0
- package/dist/src/commands/register.js +62 -103
- package/dist/src/commands/reset.js +28 -91
- package/dist/src/commands/resolve.js +20 -167
- package/dist/src/commands/restore.js +19 -0
- package/dist/src/commands/run.js +60 -420
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -422
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -208
- package/dist/src/commands/verify.js +28 -334
- package/dist/src/commands/version.js +14 -0
- package/dist/src/commands/watch.js +20 -218
- package/dist/src/commands/wire.js +60 -349
- package/dist/src/commands/workspace.js +117 -0
- package/dist/src/config/edit.js +237 -0
- package/dist/src/config/index.js +15 -0
- package/dist/src/config/load.js +59 -0
- package/dist/src/config/previous.js +404 -0
- package/dist/src/config/schema/build.js +63 -0
- package/dist/src/config/schema/check.js +113 -0
- package/dist/src/config/schema/common.js +71 -0
- package/dist/src/config/schema/export-queue.js +36 -0
- package/dist/src/config/schema/firefox.js +69 -0
- package/dist/src/config/schema/gate.js +199 -0
- package/dist/src/config/schema/identity.js +55 -0
- package/dist/src/config/schema/index.js +45 -0
- package/dist/src/config/schema/lint.js +297 -0
- package/dist/src/config/schema/policy.js +111 -0
- package/dist/src/config/schema/source.js +90 -0
- package/dist/src/config/schema/test.js +17 -0
- package/dist/src/config/schema/toolchains.js +17 -0
- package/dist/src/config/schema/typecheck.js +29 -0
- package/dist/src/config/schema/wire.js +15 -0
- package/dist/src/diff/apply.js +129 -0
- package/dist/src/diff/index.js +16 -0
- package/dist/src/diff/model.js +267 -0
- package/dist/src/diff/query.js +65 -0
- package/dist/src/doctor/index.js +240 -0
- package/dist/src/engine/archive.js +396 -0
- package/dist/src/engine/audit.js +66 -0
- package/dist/src/engine/build.js +150 -0
- package/dist/src/engine/hostLocks.js +66 -0
- package/dist/src/engine/index.js +26 -0
- package/dist/src/engine/installManifests.js +147 -0
- package/dist/src/engine/mach.js +97 -0
- package/dist/src/engine/machHints.js +80 -0
- package/dist/src/engine/mozconfig.js +110 -0
- package/dist/src/engine/objdir.js +124 -0
- package/dist/src/engine/package.js +169 -0
- package/dist/src/engine/pin.js +12 -0
- package/dist/src/engine/pool.js +423 -0
- package/dist/src/engine/pristine.js +281 -0
- package/dist/src/engine/python.js +68 -0
- package/dist/src/engine/resourceGuard.js +582 -0
- package/dist/src/engine/run.js +259 -0
- package/dist/src/engine/smoke.js +204 -0
- package/dist/src/engine/staleness.js +229 -0
- package/dist/src/engine/watch.js +82 -0
- package/dist/src/engine/workspace.js +85 -0
- package/dist/src/furnace/config.js +360 -0
- package/dist/src/furnace/deploy.js +414 -0
- package/dist/src/furnace/diff.js +59 -0
- package/dist/src/furnace/edit.js +64 -0
- package/dist/src/furnace/fragments.js +53 -0
- package/dist/src/furnace/index.js +19 -0
- package/dist/src/furnace/operations.js +283 -0
- package/dist/src/furnace/registration.js +220 -0
- package/dist/src/furnace/scaffold.js +311 -0
- package/dist/src/furnace/typing.js +252 -0
- package/dist/src/furnace/validate.js +662 -0
- package/dist/src/git/apply.js +129 -0
- package/dist/src/git/diff.js +143 -0
- package/dist/src/git/index.js +33 -0
- package/dist/src/git/objects.js +201 -0
- package/dist/src/git/refs.js +85 -0
- package/dist/src/git/repo.js +222 -0
- package/dist/src/git/run.js +242 -0
- package/dist/src/git/status.js +156 -0
- package/dist/src/kernel/errors.js +123 -0
- package/dist/src/kernel/fs.js +515 -0
- package/dist/src/kernel/glob.js +63 -0
- package/dist/src/kernel/hash.js +28 -0
- package/dist/src/kernel/journal.js +524 -0
- package/dist/src/kernel/json-edit.js +198 -0
- package/dist/src/kernel/json.js +101 -0
- package/dist/src/kernel/lock.js +589 -0
- package/dist/src/kernel/log.js +154 -0
- package/dist/src/kernel/process/identity.js +313 -0
- package/dist/src/kernel/process/index.js +8 -0
- package/dist/src/kernel/process/listing.js +128 -0
- package/dist/src/kernel/process/spawn.js +430 -0
- package/dist/src/kernel/process/tree.js +301 -0
- package/dist/src/kernel/schema.js +308 -0
- package/dist/src/kernel/signals.js +171 -0
- package/dist/src/kernel/text.js +151 -0
- package/dist/src/kernel/time.js +83 -0
- package/dist/src/kernel/tty.js +84 -0
- package/dist/src/lint/cache.js +77 -0
- package/dist/src/lint/checkjs.js +400 -0
- package/dist/src/lint/index.js +3 -0
- package/dist/src/lint/input.js +100 -0
- package/dist/src/lint/report.js +107 -0
- package/dist/src/lint/rule.js +41 -0
- package/dist/src/lint/rules/css.js +308 -0
- package/dist/src/lint/rules/javascript.js +299 -0
- package/dist/src/lint/rules/jsdoc.js +249 -0
- package/dist/src/lint/rules/license.js +93 -0
- package/dist/src/lint/rules/policy.js +201 -0
- package/dist/src/lint/rules/registration.js +264 -0
- package/dist/src/lint/rules/size.js +299 -0
- package/dist/src/lint/run.js +126 -0
- package/dist/src/lint/shim.js +323 -0
- package/dist/src/lint/typescript.js +186 -0
- package/dist/src/lint/waivers.js +93 -0
- package/dist/src/mode/changes.js +264 -0
- package/dist/src/mode/diagnose.js +173 -0
- package/dist/src/mode/export.js +147 -0
- package/dist/src/mode/index.js +23 -0
- package/dist/src/mode/migrate.js +181 -0
- package/dist/src/mode/previousWaivers.js +206 -0
- package/dist/src/mode/pristine.js +61 -0
- package/dist/src/mode/rebase.js +197 -0
- package/dist/src/mode/report.js +157 -0
- package/dist/src/mode/setup.js +103 -0
- package/dist/src/mode/tracked.js +116 -0
- package/dist/src/mode/upgrade.js +281 -0
- package/dist/src/mode/watch.js +83 -0
- package/dist/src/mode/workspace.js +189 -0
- package/dist/src/mozbuild/index.js +6 -0
- package/dist/src/mozbuild/jar.js +366 -0
- package/dist/src/mozbuild/mozbuild.js +321 -0
- package/dist/src/mozbuild/paths.js +96 -0
- package/dist/src/mozbuild/references.js +39 -0
- package/dist/src/mozbuild/testManifest.js +343 -0
- package/dist/src/mozbuild/text.js +142 -0
- package/dist/src/project/changes.js +145 -0
- package/dist/src/project/checkout.js +66 -0
- package/dist/src/project/index.js +11 -0
- package/dist/src/project/license.js +119 -0
- package/dist/src/project/project.js +111 -0
- package/dist/src/project/state.js +85 -0
- package/dist/src/project/tracked.js +1 -0
- package/dist/src/queue/apply.js +270 -0
- package/dist/src/queue/attribute.js +159 -0
- package/dist/src/queue/baseline.js +409 -0
- package/dist/src/queue/capture.js +298 -0
- package/dist/src/queue/changes.js +234 -0
- package/dist/src/queue/index.js +50 -0
- package/dist/src/queue/manifest.js +341 -0
- package/dist/src/queue/operations.js +454 -0
- package/dist/src/queue/placement.js +220 -0
- package/dist/src/queue/queue.js +359 -0
- package/dist/src/queue/restore.js +103 -0
- package/dist/src/queue/session.js +685 -0
- package/dist/src/queue/status.js +137 -0
- package/dist/src/register/files.js +39 -0
- package/dist/src/register/index.js +8 -0
- package/dist/src/register/js.js +217 -0
- package/dist/src/register/register.js +359 -0
- package/dist/src/register/wire.js +146 -0
- package/dist/src/source/adopt.js +99 -0
- package/dist/src/source/changes.js +132 -0
- package/dist/src/source/edit.js +278 -0
- package/dist/src/source/export.js +70 -0
- package/dist/src/source/groups.js +131 -0
- package/dist/src/source/index.js +20 -0
- package/dist/src/source/materialize.js +382 -0
- package/dist/src/source/merge.js +255 -0
- package/dist/src/source/objects.js +102 -0
- package/dist/src/source/previous.js +166 -0
- package/dist/src/source/records.js +138 -0
- package/dist/src/source/refresh.js +264 -0
- package/dist/src/source/tree.js +337 -0
- package/dist/src/syntax/css.js +215 -0
- package/dist/src/syntax/fragments.js +63 -0
- package/dist/src/syntax/index.js +10 -0
- package/dist/src/syntax/js.js +270 -0
- package/dist/src/test/classify.js +826 -0
- package/dist/src/test/control.js +236 -0
- package/dist/src/test/host.js +266 -0
- package/dist/src/test/index.js +11 -0
- package/dist/src/test/plan.js +347 -0
- package/dist/src/test/rawLog.js +138 -0
- package/dist/src/test/run.js +404 -0
- package/dist/src/test/verdict.js +420 -0
- package/dist/src/test/xpcshell.js +143 -0
- package/dist/src/tokens/add.js +304 -0
- package/dist/src/tokens/coverage.js +65 -0
- package/dist/src/tokens/css.js +58 -0
- package/dist/src/tokens/index.js +12 -0
- package/dist/src/tokens/lint.js +96 -0
- package/dist/src/tokens/model.js +118 -0
- package/dist/src/tokens/settings.js +87 -0
- package/dist/src/tokens/siblings.js +104 -0
- package/dist/src/typecheck/explain.js +123 -0
- package/dist/src/typecheck/index.js +8 -0
- package/dist/src/typecheck/typecheck.js +332 -0
- package/docs/README.md +23 -28
- package/docs/authoring.md +97 -0
- package/docs/configuration.md +307 -692
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +113 -181
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -277
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +163 -653
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -712
- package/docs/workspaces.md +187 -0
- package/package.json +22 -30
- package/templates/configs/common.mozconfig +8 -2
- package/templates/configs/darwin.mozconfig +6 -7
- package/templates/configs/linux.mozconfig +5 -8
- package/templates/configs/win32.mozconfig +3 -9
- package/dist/bin/fireforge.d.ts +0 -9
- package/dist/src/cli-usage-error.d.ts +0 -46
- package/dist/src/cli-usage-error.js +0 -81
- package/dist/src/cli.d.ts +0 -41
- package/dist/src/cli.js +0 -380
- package/dist/src/commands/bootstrap-checks.d.ts +0 -16
- package/dist/src/commands/bootstrap-checks.js +0 -66
- package/dist/src/commands/bootstrap.d.ts +0 -10
- package/dist/src/commands/build-prelock.d.ts +0 -20
- package/dist/src/commands/build-prelock.js +0 -50
- package/dist/src/commands/build.d.ts +0 -13
- package/dist/src/commands/check-report.d.ts +0 -41
- package/dist/src/commands/check-report.js +0 -91
- package/dist/src/commands/check-run.d.ts +0 -33
- package/dist/src/commands/check-run.js +0 -112
- package/dist/src/commands/check-steps.d.ts +0 -75
- package/dist/src/commands/check-steps.js +0 -200
- package/dist/src/commands/check.d.ts +0 -32
- package/dist/src/commands/config.d.ts +0 -13
- package/dist/src/commands/declarations-report.d.ts +0 -49
- package/dist/src/commands/declarations-report.js +0 -83
- package/dist/src/commands/destructive-decision.d.ts +0 -19
- package/dist/src/commands/destructive-decision.js +0 -31
- package/dist/src/commands/discard.d.ts +0 -12
- package/dist/src/commands/doctor-check-core.d.ts +0 -110
- package/dist/src/commands/doctor-check-core.js +0 -24
- package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
- package/dist/src/commands/doctor-engine-eslint.js +0 -17
- package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
- package/dist/src/commands/doctor-external-toolchains.js +0 -56
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
- package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
- package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
- package/dist/src/commands/doctor-furnace-jar.js +0 -44
- package/dist/src/commands/doctor-furnace.d.ts +0 -8
- package/dist/src/commands/doctor-furnace.js +0 -514
- package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
- package/dist/src/commands/doctor-macos-sdk.js +0 -158
- package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
- package/dist/src/commands/doctor-orphaned-harness.js +0 -98
- package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
- package/dist/src/commands/doctor-patch-manifest.js +0 -156
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
- package/dist/src/commands/doctor-source-pin.d.ts +0 -29
- package/dist/src/commands/doctor-source-pin.js +0 -91
- package/dist/src/commands/doctor-working-tree.d.ts +0 -27
- package/dist/src/commands/doctor-working-tree.js +0 -89
- package/dist/src/commands/doctor.d.ts +0 -49
- package/dist/src/commands/download.d.ts +0 -11
- package/dist/src/commands/export-adopt-check.d.ts +0 -37
- package/dist/src/commands/export-adopt-check.js +0 -97
- package/dist/src/commands/export-all.d.ts +0 -11
- package/dist/src/commands/export-all.js +0 -361
- package/dist/src/commands/export-flow.d.ts +0 -124
- package/dist/src/commands/export-flow.js +0 -423
- package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
- package/dist/src/commands/export-placement-conflicts.js +0 -75
- package/dist/src/commands/export-placement-gate.d.ts +0 -42
- package/dist/src/commands/export-placement-gate.js +0 -107
- package/dist/src/commands/export-placement-policy.d.ts +0 -22
- package/dist/src/commands/export-placement-policy.js +0 -54
- package/dist/src/commands/export-shared.d.ts +0 -152
- package/dist/src/commands/export-shared.js +0 -396
- package/dist/src/commands/export-staged-registration.d.ts +0 -46
- package/dist/src/commands/export-staged-registration.js +0 -91
- package/dist/src/commands/export.d.ts +0 -13
- package/dist/src/commands/forward-import-remedy.d.ts +0 -31
- package/dist/src/commands/forward-import-remedy.js +0 -62
- package/dist/src/commands/furnace/apply.d.ts +0 -8
- package/dist/src/commands/furnace/apply.js +0 -327
- package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
- package/dist/src/commands/furnace/authoring-config.js +0 -19
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
- package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
- package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
- package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
- package/dist/src/commands/furnace/chrome-doc.js +0 -365
- package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
- package/dist/src/commands/furnace/create-browser-test.js +0 -179
- package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
- package/dist/src/commands/furnace/create-dry-run.js +0 -107
- package/dist/src/commands/furnace/create-features.d.ts +0 -24
- package/dist/src/commands/furnace/create-features.js +0 -55
- package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
- package/dist/src/commands/furnace/create-mochikit.js +0 -75
- package/dist/src/commands/furnace/create-readback.d.ts +0 -22
- package/dist/src/commands/furnace/create-readback.js +0 -32
- package/dist/src/commands/furnace/create-templates.d.ts +0 -119
- package/dist/src/commands/furnace/create-templates.js +0 -283
- package/dist/src/commands/furnace/create-validation.d.ts +0 -6
- package/dist/src/commands/furnace/create-validation.js +0 -59
- package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
- package/dist/src/commands/furnace/create-xpcshell.js +0 -80
- package/dist/src/commands/furnace/create.d.ts +0 -24
- package/dist/src/commands/furnace/create.js +0 -407
- package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
- package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
- package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
- package/dist/src/commands/furnace/deploy-named.js +0 -107
- package/dist/src/commands/furnace/deploy.d.ts +0 -9
- package/dist/src/commands/furnace/deploy.js +0 -218
- package/dist/src/commands/furnace/diff.d.ts +0 -11
- package/dist/src/commands/furnace/diff.js +0 -238
- package/dist/src/commands/furnace/index.d.ts +0 -4
- package/dist/src/commands/furnace/index.js +0 -282
- package/dist/src/commands/furnace/init.d.ts +0 -11
- package/dist/src/commands/furnace/init.js +0 -287
- package/dist/src/commands/furnace/list.d.ts +0 -8
- package/dist/src/commands/furnace/list.js +0 -104
- package/dist/src/commands/furnace/override.d.ts +0 -16
- package/dist/src/commands/furnace/override.js +0 -454
- package/dist/src/commands/furnace/preview.d.ts +0 -19
- package/dist/src/commands/furnace/preview.js +0 -349
- package/dist/src/commands/furnace/refresh.d.ts +0 -10
- package/dist/src/commands/furnace/refresh.js +0 -303
- package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
- package/dist/src/commands/furnace/remove-mutations.js +0 -168
- package/dist/src/commands/furnace/remove-state.d.ts +0 -20
- package/dist/src/commands/furnace/remove-state.js +0 -60
- package/dist/src/commands/furnace/remove.d.ts +0 -8
- package/dist/src/commands/furnace/remove.js +0 -415
- package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
- package/dist/src/commands/furnace/rename-browser-test.js +0 -68
- package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
- package/dist/src/commands/furnace/rename-dry-run.js +0 -127
- package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
- package/dist/src/commands/furnace/rename-helpers.js +0 -85
- package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
- package/dist/src/commands/furnace/rename-registrations.js +0 -98
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
- package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
- package/dist/src/commands/furnace/rename.d.ts +0 -6
- package/dist/src/commands/furnace/rename.js +0 -400
- package/dist/src/commands/furnace/scan.d.ts +0 -14
- package/dist/src/commands/furnace/scan.js +0 -192
- package/dist/src/commands/furnace/status.d.ts +0 -7
- package/dist/src/commands/furnace/status.js +0 -209
- package/dist/src/commands/furnace/sync.d.ts +0 -12
- package/dist/src/commands/furnace/sync.js +0 -145
- package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
- package/dist/src/commands/furnace/test-file-name.js +0 -39
- package/dist/src/commands/furnace/validate-report.d.ts +0 -45
- package/dist/src/commands/furnace/validate-report.js +0 -91
- package/dist/src/commands/furnace/validate.d.ts +0 -8
- package/dist/src/commands/furnace/validate.js +0 -309
- package/dist/src/commands/furnace/validation-output.d.ts +0 -47
- package/dist/src/commands/furnace/validation-output.js +0 -161
- package/dist/src/commands/import.d.ts +0 -11
- package/dist/src/commands/lint-per-patch.d.ts +0 -10
- package/dist/src/commands/lint-per-patch.js +0 -428
- package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
- package/dist/src/commands/lint-per-run-checkjs.js +0 -102
- package/dist/src/commands/lint-report.d.ts +0 -25
- package/dist/src/commands/lint-report.js +0 -76
- package/dist/src/commands/lint.d.ts +0 -47
- package/dist/src/commands/manifest.d.ts +0 -38
- package/dist/src/commands/manifest.js +0 -68
- package/dist/src/commands/package.d.ts +0 -11
- package/dist/src/commands/park.d.ts +0 -22
- package/dist/src/commands/park.js +0 -232
- package/dist/src/commands/patch/compact.d.ts +0 -28
- package/dist/src/commands/patch/compact.js +0 -208
- package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
- package/dist/src/commands/patch/delete-gap-notice.js +0 -48
- package/dist/src/commands/patch/delete.d.ts +0 -28
- package/dist/src/commands/patch/delete.js +0 -131
- package/dist/src/commands/patch/entry-projection.d.ts +0 -13
- package/dist/src/commands/patch/entry-projection.js +0 -24
- package/dist/src/commands/patch/index.d.ts +0 -16
- package/dist/src/commands/patch/index.js +0 -52
- package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
- package/dist/src/commands/patch/lint-ignore-from.js +0 -141
- package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
- package/dist/src/commands/patch/lint-ignore.js +0 -261
- package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
- package/dist/src/commands/patch/move-files-adopt.js +0 -65
- package/dist/src/commands/patch/move-files-create.d.ts +0 -19
- package/dist/src/commands/patch/move-files-create.js +0 -187
- package/dist/src/commands/patch/move-files-into.d.ts +0 -65
- package/dist/src/commands/patch/move-files-into.js +0 -325
- package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
- package/dist/src/commands/patch/move-files-retire.js +0 -91
- package/dist/src/commands/patch/move-files.d.ts +0 -28
- package/dist/src/commands/patch/move-files.js +0 -224
- package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
- package/dist/src/commands/patch/move-size-tier.js +0 -66
- package/dist/src/commands/patch/patch-context.d.ts +0 -40
- package/dist/src/commands/patch/patch-context.js +0 -51
- package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
- package/dist/src/commands/patch/removal-created-files.js +0 -83
- package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
- package/dist/src/commands/patch/removal-dependents.js +0 -133
- package/dist/src/commands/patch/rename.d.ts +0 -35
- package/dist/src/commands/patch/rename.js +0 -378
- package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
- package/dist/src/commands/patch/reorder-projection.js +0 -49
- package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
- package/dist/src/commands/patch/reorder-shift.js +0 -307
- package/dist/src/commands/patch/reorder.d.ts +0 -34
- package/dist/src/commands/patch/reorder.js +0 -375
- package/dist/src/commands/patch/reserve.d.ts +0 -33
- package/dist/src/commands/patch/reserve.js +0 -152
- package/dist/src/commands/patch/retire.d.ts +0 -34
- package/dist/src/commands/patch/retire.js +0 -133
- package/dist/src/commands/patch/split-plan.d.ts +0 -125
- package/dist/src/commands/patch/split-plan.js +0 -313
- package/dist/src/commands/patch/split-staged.d.ts +0 -108
- package/dist/src/commands/patch/split-staged.js +0 -202
- package/dist/src/commands/patch/split.d.ts +0 -43
- package/dist/src/commands/patch/split.js +0 -367
- package/dist/src/commands/patch/stage.d.ts +0 -34
- package/dist/src/commands/patch/stage.js +0 -153
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
- package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
- package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
- package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
- package/dist/src/commands/patch/staged-dependency-from.js +0 -114
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
- package/dist/src/commands/patch/staged-dependency-remove.js +0 -117
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -15
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -49
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -248
- package/dist/src/commands/patch/tier.d.ts +0 -34
- package/dist/src/commands/patch/tier.js +0 -125
- package/dist/src/commands/patch-rename-map.d.ts +0 -30
- package/dist/src/commands/patch-rename-map.js +0 -54
- package/dist/src/commands/pending-resolution.d.ts +0 -15
- package/dist/src/commands/pending-resolution.js +0 -25
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
- package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
- package/dist/src/commands/re-export-adjacent.d.ts +0 -111
- package/dist/src/commands/re-export-adjacent.js +0 -267
- package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
- package/dist/src/commands/re-export-bulk-scan.js +0 -233
- package/dist/src/commands/re-export-drift.d.ts +0 -110
- package/dist/src/commands/re-export-drift.js +0 -358
- package/dist/src/commands/re-export-files.d.ts +0 -15
- package/dist/src/commands/re-export-files.js +0 -307
- package/dist/src/commands/re-export-hunks.d.ts +0 -35
- package/dist/src/commands/re-export-hunks.js +0 -220
- package/dist/src/commands/re-export-lint.d.ts +0 -137
- package/dist/src/commands/re-export-lint.js +0 -303
- package/dist/src/commands/re-export-options.d.ts +0 -29
- package/dist/src/commands/re-export-options.js +0 -191
- package/dist/src/commands/re-export-preflight.d.ts +0 -23
- package/dist/src/commands/re-export-preflight.js +0 -159
- package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
- package/dist/src/commands/re-export-purity-scope.js +0 -137
- package/dist/src/commands/re-export-register.d.ts +0 -12
- package/dist/src/commands/re-export-register.js +0 -99
- package/dist/src/commands/re-export-removed.d.ts +0 -15
- package/dist/src/commands/re-export-removed.js +0 -94
- package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
- package/dist/src/commands/re-export-retired-declarations.js +0 -113
- package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
- package/dist/src/commands/re-export-scan-owner.js +0 -116
- package/dist/src/commands/re-export-scan.d.ts +0 -72
- package/dist/src/commands/re-export-scan.js +0 -265
- package/dist/src/commands/re-export-single.d.ts +0 -39
- package/dist/src/commands/re-export-single.js +0 -388
- package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
- package/dist/src/commands/re-export-stale-registrations.js +0 -106
- package/dist/src/commands/re-export-summary.d.ts +0 -28
- package/dist/src/commands/re-export-summary.js +0 -36
- package/dist/src/commands/re-export.d.ts +0 -8
- package/dist/src/commands/rebase/abort.d.ts +0 -7
- package/dist/src/commands/rebase/abort.js +0 -67
- package/dist/src/commands/rebase/confirm.d.ts +0 -42
- package/dist/src/commands/rebase/confirm.js +0 -36
- package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
- package/dist/src/commands/rebase/conflict-summary.js +0 -37
- package/dist/src/commands/rebase/continue.d.ts +0 -7
- package/dist/src/commands/rebase/continue.js +0 -119
- package/dist/src/commands/rebase/index.d.ts +0 -22
- package/dist/src/commands/rebase/index.js +0 -209
- package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
- package/dist/src/commands/rebase/patch-loop.js +0 -289
- package/dist/src/commands/rebase/summary.d.ts +0 -8
- package/dist/src/commands/rebase/summary.js +0 -47
- package/dist/src/commands/register.d.ts +0 -13
- package/dist/src/commands/reset.d.ts +0 -11
- package/dist/src/commands/resolve.d.ts +0 -36
- package/dist/src/commands/run.d.ts +0 -10
- package/dist/src/commands/setup-support.d.ts +0 -35
- package/dist/src/commands/setup-support.js +0 -386
- package/dist/src/commands/setup.d.ts +0 -11
- package/dist/src/commands/source.d.ts +0 -9
- package/dist/src/commands/source.js +0 -120
- package/dist/src/commands/status-check.d.ts +0 -87
- package/dist/src/commands/status-check.js +0 -161
- package/dist/src/commands/status-json.d.ts +0 -45
- package/dist/src/commands/status-json.js +0 -97
- package/dist/src/commands/status-output.d.ts +0 -23
- package/dist/src/commands/status-output.js +0 -231
- package/dist/src/commands/status-ownership.d.ts +0 -54
- package/dist/src/commands/status-ownership.js +0 -59
- package/dist/src/commands/status-scope.d.ts +0 -37
- package/dist/src/commands/status-scope.js +0 -54
- package/dist/src/commands/status.d.ts +0 -11
- package/dist/src/commands/test-appdir.d.ts +0 -6
- package/dist/src/commands/test-appdir.js +0 -29
- package/dist/src/commands/test-browser-preflight.d.ts +0 -28
- package/dist/src/commands/test-browser-preflight.js +0 -197
- package/dist/src/commands/test-build-furnace.d.ts +0 -21
- package/dist/src/commands/test-build-furnace.js +0 -53
- package/dist/src/commands/test-build-phase.d.ts +0 -29
- package/dist/src/commands/test-build-phase.js +0 -290
- package/dist/src/commands/test-checkjs.d.ts +0 -3
- package/dist/src/commands/test-checkjs.js +0 -35
- package/dist/src/commands/test-control-restore.d.ts +0 -40
- package/dist/src/commands/test-control-restore.js +0 -86
- package/dist/src/commands/test-diagnose.d.ts +0 -23
- package/dist/src/commands/test-diagnose.js +0 -317
- package/dist/src/commands/test-dispatch.d.ts +0 -39
- package/dist/src/commands/test-dispatch.js +0 -281
- package/dist/src/commands/test-furnace-reach.d.ts +0 -37
- package/dist/src/commands/test-furnace-reach.js +0 -132
- package/dist/src/commands/test-harness-env.d.ts +0 -23
- package/dist/src/commands/test-harness-env.js +0 -81
- package/dist/src/commands/test-harness-teardown.d.ts +0 -62
- package/dist/src/commands/test-harness-teardown.js +0 -128
- package/dist/src/commands/test-modes.d.ts +0 -57
- package/dist/src/commands/test-modes.js +0 -158
- package/dist/src/commands/test-multi-verdict.d.ts +0 -61
- package/dist/src/commands/test-multi-verdict.js +0 -112
- package/dist/src/commands/test-orchestrate.d.ts +0 -63
- package/dist/src/commands/test-orchestrate.js +0 -274
- package/dist/src/commands/test-perf-scope.d.ts +0 -50
- package/dist/src/commands/test-perf-scope.js +0 -138
- package/dist/src/commands/test-prelock.d.ts +0 -61
- package/dist/src/commands/test-prelock.js +0 -301
- package/dist/src/commands/test-register.d.ts +0 -4
- package/dist/src/commands/test-register.js +0 -181
- package/dist/src/commands/test-results.d.ts +0 -71
- package/dist/src/commands/test-results.js +0 -79
- package/dist/src/commands/test-run.d.ts +0 -89
- package/dist/src/commands/test-run.js +0 -251
- package/dist/src/commands/test-shards.d.ts +0 -114
- package/dist/src/commands/test-shards.js +0 -272
- package/dist/src/commands/test-stale-gate.d.ts +0 -52
- package/dist/src/commands/test-stale-gate.js +0 -165
- package/dist/src/commands/test-verdict.d.ts +0 -92
- package/dist/src/commands/test-verdict.js +0 -162
- package/dist/src/commands/test.d.ts +0 -22
- package/dist/src/commands/token-coverage.d.ts +0 -5
- package/dist/src/commands/token-coverage.js +0 -170
- package/dist/src/commands/token-lint.d.ts +0 -14
- package/dist/src/commands/token-lint.js +0 -151
- package/dist/src/commands/token-list.d.ts +0 -26
- package/dist/src/commands/token-list.js +0 -153
- package/dist/src/commands/token.d.ts +0 -14
- package/dist/src/commands/tree.d.ts +0 -19
- package/dist/src/commands/tree.js +0 -341
- package/dist/src/commands/typecheck.d.ts +0 -56
- package/dist/src/commands/verify-scope.d.ts +0 -28
- package/dist/src/commands/verify-scope.js +0 -67
- package/dist/src/commands/verify.d.ts +0 -58
- package/dist/src/commands/watch.d.ts +0 -9
- package/dist/src/commands/wire.d.ts +0 -13
- package/dist/src/core/ast-utils.d.ts +0 -73
- package/dist/src/core/ast-utils.js +0 -105
- package/dist/src/core/brand-validation.d.ts +0 -7
- package/dist/src/core/brand-validation.js +0 -14
- package/dist/src/core/branding.d.ts +0 -86
- package/dist/src/core/branding.js +0 -371
- package/dist/src/core/browser-wire.d.ts +0 -48
- package/dist/src/core/browser-wire.js +0 -133
- package/dist/src/core/build-audit-platform.d.ts +0 -67
- package/dist/src/core/build-audit-platform.js +0 -373
- package/dist/src/core/build-audit-registration.d.ts +0 -80
- package/dist/src/core/build-audit-registration.js +0 -181
- package/dist/src/core/build-audit-resolve.d.ts +0 -78
- package/dist/src/core/build-audit-resolve.js +0 -240
- package/dist/src/core/build-audit-skip.d.ts +0 -57
- package/dist/src/core/build-audit-skip.js +0 -112
- package/dist/src/core/build-audit-transforms.d.ts +0 -23
- package/dist/src/core/build-audit-transforms.js +0 -92
- package/dist/src/core/build-audit.d.ts +0 -93
- package/dist/src/core/build-audit.js +0 -633
- package/dist/src/core/build-baseline-types.d.ts +0 -225
- package/dist/src/core/build-baseline-types.js +0 -10
- package/dist/src/core/build-baseline-validate.d.ts +0 -32
- package/dist/src/core/build-baseline-validate.js +0 -173
- package/dist/src/core/build-baseline.d.ts +0 -103
- package/dist/src/core/build-baseline.js +0 -261
- package/dist/src/core/build-jar-escalation.d.ts +0 -61
- package/dist/src/core/build-jar-escalation.js +0 -125
- package/dist/src/core/build-overwrite-guard.d.ts +0 -92
- package/dist/src/core/build-overwrite-guard.js +0 -235
- package/dist/src/core/build-prepare.d.ts +0 -83
- package/dist/src/core/build-prepare.js +0 -414
- package/dist/src/core/build-run-record.d.ts +0 -74
- package/dist/src/core/build-run-record.js +0 -136
- package/dist/src/core/checkjs-support-heads.d.ts +0 -41
- package/dist/src/core/checkjs-support-heads.js +0 -104
- package/dist/src/core/component-source-guard.d.ts +0 -20
- package/dist/src/core/component-source-guard.js +0 -68
- package/dist/src/core/config-mutate.d.ts +0 -16
- package/dist/src/core/config-mutate.js +0 -76
- package/dist/src/core/config-paths.d.ts +0 -16
- package/dist/src/core/config-paths.js +0 -106
- package/dist/src/core/config-state.d.ts +0 -16
- package/dist/src/core/config-state.js +0 -141
- package/dist/src/core/config-validate-build-audit.d.ts +0 -8
- package/dist/src/core/config-validate-build-audit.js +0 -80
- package/dist/src/core/config-validate-check.d.ts +0 -8
- package/dist/src/core/config-validate-check.js +0 -219
- package/dist/src/core/config-validate-file-size.d.ts +0 -15
- package/dist/src/core/config-validate-file-size.js +0 -154
- package/dist/src/core/config-validate-history.d.ts +0 -11
- package/dist/src/core/config-validate-history.js +0 -38
- package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
- package/dist/src/core/config-validate-patch-policy.js +0 -274
- package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
- package/dist/src/core/config-validate-test-toolchains.js +0 -133
- package/dist/src/core/config-validate-token-scales.d.ts +0 -9
- package/dist/src/core/config-validate-token-scales.js +0 -92
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -503
- package/dist/src/core/config.d.ts +0 -92
- package/dist/src/core/config.js +0 -169
- package/dist/src/core/coverage-dispatch.d.ts +0 -24
- package/dist/src/core/coverage-dispatch.js +0 -44
- package/dist/src/core/coverage-extend.d.ts +0 -89
- package/dist/src/core/coverage-extend.js +0 -239
- package/dist/src/core/coverage-records.d.ts +0 -107
- package/dist/src/core/coverage-records.js +0 -383
- package/dist/src/core/destructive.d.ts +0 -144
- package/dist/src/core/destructive.js +0 -182
- package/dist/src/core/diff-hunks.d.ts +0 -73
- package/dist/src/core/diff-hunks.js +0 -286
- package/dist/src/core/discard-baseline.d.ts +0 -60
- package/dist/src/core/discard-baseline.js +0 -247
- package/dist/src/core/display-state.d.ts +0 -50
- package/dist/src/core/display-state.js +0 -87
- package/dist/src/core/engine-changes.d.ts +0 -40
- package/dist/src/core/engine-changes.js +0 -95
- package/dist/src/core/engine-precondition.d.ts +0 -42
- package/dist/src/core/engine-precondition.js +0 -60
- package/dist/src/core/engine-session-lock.d.ts +0 -119
- package/dist/src/core/engine-session-lock.js +0 -374
- package/dist/src/core/engine-write-boundary.d.ts +0 -5
- package/dist/src/core/engine-write-boundary.js +0 -41
- package/dist/src/core/export-moved-code-shape.d.ts +0 -98
- package/dist/src/core/export-moved-code-shape.js +0 -220
- package/dist/src/core/file-lock-owner.d.ts +0 -103
- package/dist/src/core/file-lock-owner.js +0 -259
- package/dist/src/core/file-lock-queue.d.ts +0 -67
- package/dist/src/core/file-lock-queue.js +0 -219
- package/dist/src/core/file-lock-shared.d.ts +0 -57
- package/dist/src/core/file-lock-shared.js +0 -117
- package/dist/src/core/file-lock.d.ts +0 -143
- package/dist/src/core/file-lock.js +0 -531
- package/dist/src/core/firefox-archive.d.ts +0 -45
- package/dist/src/core/firefox-archive.js +0 -96
- package/dist/src/core/firefox-cache.d.ts +0 -30
- package/dist/src/core/firefox-cache.js +0 -248
- package/dist/src/core/firefox-download.d.ts +0 -30
- package/dist/src/core/firefox-download.js +0 -152
- package/dist/src/core/firefox-extract.d.ts +0 -42
- package/dist/src/core/firefox-extract.js +0 -248
- package/dist/src/core/firefox-ignorefile.d.ts +0 -17
- package/dist/src/core/firefox-ignorefile.js +0 -30
- package/dist/src/core/firefox.d.ts +0 -66
- package/dist/src/core/firefox.js +0 -121
- package/dist/src/core/forward-registrations.d.ts +0 -33
- package/dist/src/core/forward-registrations.js +0 -16
- package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
- package/dist/src/core/furnace-apply-dry-run.js +0 -99
- package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
- package/dist/src/core/furnace-apply-ftl.js +0 -210
- package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
- package/dist/src/core/furnace-apply-helpers.js +0 -436
- package/dist/src/core/furnace-apply-output.d.ts +0 -36
- package/dist/src/core/furnace-apply-output.js +0 -111
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -62
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -124
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
- package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
- package/dist/src/core/furnace-apply.d.ts +0 -49
- package/dist/src/core/furnace-apply.js +0 -465
- package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
- package/dist/src/core/furnace-checksum-utils.js +0 -54
- package/dist/src/core/furnace-composed-source.d.ts +0 -76
- package/dist/src/core/furnace-composed-source.js +0 -167
- package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
- package/dist/src/core/furnace-config-array-utils.js +0 -26
- package/dist/src/core/furnace-config-custom.d.ts +0 -15
- package/dist/src/core/furnace-config-custom.js +0 -73
- package/dist/src/core/furnace-config-order.d.ts +0 -8
- package/dist/src/core/furnace-config-order.js +0 -90
- package/dist/src/core/furnace-config-tokens.d.ts +0 -17
- package/dist/src/core/furnace-config-tokens.js +0 -42
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
- package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
- package/dist/src/core/furnace-config-validate.d.ts +0 -32
- package/dist/src/core/furnace-config-validate.js +0 -146
- package/dist/src/core/furnace-config.d.ts +0 -139
- package/dist/src/core/furnace-config.js +0 -511
- package/dist/src/core/furnace-constants.d.ts +0 -79
- package/dist/src/core/furnace-constants.js +0 -123
- package/dist/src/core/furnace-css-fragments.d.ts +0 -96
- package/dist/src/core/furnace-css-fragments.js +0 -279
- package/dist/src/core/furnace-dir-entry.d.ts +0 -20
- package/dist/src/core/furnace-dir-entry.js +0 -21
- package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
- package/dist/src/core/furnace-fragment-includers.js +0 -122
- package/dist/src/core/furnace-graph-utils.d.ts +0 -11
- package/dist/src/core/furnace-graph-utils.js +0 -93
- package/dist/src/core/furnace-jsconfig.d.ts +0 -61
- package/dist/src/core/furnace-jsconfig.js +0 -208
- package/dist/src/core/furnace-marker.d.ts +0 -15
- package/dist/src/core/furnace-marker.js +0 -21
- package/dist/src/core/furnace-operation.d.ts +0 -195
- package/dist/src/core/furnace-operation.js +0 -444
- package/dist/src/core/furnace-precondition.d.ts +0 -61
- package/dist/src/core/furnace-precondition.js +0 -67
- package/dist/src/core/furnace-refresh.d.ts +0 -28
- package/dist/src/core/furnace-refresh.js +0 -125
- package/dist/src/core/furnace-registration-ast.d.ts +0 -53
- package/dist/src/core/furnace-registration-ast.js +0 -402
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
- package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
- package/dist/src/core/furnace-registration-remove.d.ts +0 -56
- package/dist/src/core/furnace-registration-remove.js +0 -260
- package/dist/src/core/furnace-registration-rename.d.ts +0 -26
- package/dist/src/core/furnace-registration-rename.js +0 -77
- package/dist/src/core/furnace-registration-validate.d.ts +0 -53
- package/dist/src/core/furnace-registration-validate.js +0 -110
- package/dist/src/core/furnace-registration.d.ts +0 -112
- package/dist/src/core/furnace-registration.js +0 -348
- package/dist/src/core/furnace-rollback.d.ts +0 -48
- package/dist/src/core/furnace-rollback.js +0 -170
- package/dist/src/core/furnace-scanner.d.ts +0 -47
- package/dist/src/core/furnace-scanner.js +0 -236
- package/dist/src/core/furnace-stale-export.d.ts +0 -60
- package/dist/src/core/furnace-stale-export.js +0 -125
- package/dist/src/core/furnace-staleness.d.ts +0 -24
- package/dist/src/core/furnace-staleness.js +0 -67
- package/dist/src/core/furnace-state-persist.d.ts +0 -68
- package/dist/src/core/furnace-state-persist.js +0 -116
- package/dist/src/core/furnace-step-errors.d.ts +0 -23
- package/dist/src/core/furnace-step-errors.js +0 -25
- package/dist/src/core/furnace-stories.d.ts +0 -37
- package/dist/src/core/furnace-stories.js +0 -186
- package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
- package/dist/src/core/furnace-validate-accessibility.js +0 -417
- package/dist/src/core/furnace-validate-checks.d.ts +0 -4
- package/dist/src/core/furnace-validate-checks.js +0 -6
- package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
- package/dist/src/core/furnace-validate-compatibility.js +0 -295
- package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
- package/dist/src/core/furnace-validate-exceptions.js +0 -98
- package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
- package/dist/src/core/furnace-validate-helpers.js +0 -4
- package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
- package/dist/src/core/furnace-validate-icon-button.js +0 -78
- package/dist/src/core/furnace-validate-registration.d.ts +0 -67
- package/dist/src/core/furnace-validate-registration.js +0 -487
- package/dist/src/core/furnace-validate-structure.d.ts +0 -22
- package/dist/src/core/furnace-validate-structure.js +0 -122
- package/dist/src/core/furnace-validate.d.ts +0 -41
- package/dist/src/core/furnace-validate.js +0 -302
- package/dist/src/core/furnace-version-drift.d.ts +0 -57
- package/dist/src/core/furnace-version-drift.js +0 -102
- package/dist/src/core/gecko-dom-types.d.ts +0 -2
- package/dist/src/core/gecko-dom-types.js +0 -17
- package/dist/src/core/git-base.d.ts +0 -101
- package/dist/src/core/git-base.js +0 -162
- package/dist/src/core/git-diff-new-file.d.ts +0 -40
- package/dist/src/core/git-diff-new-file.js +0 -118
- package/dist/src/core/git-diff.d.ts +0 -82
- package/dist/src/core/git-diff.js +0 -539
- package/dist/src/core/git-file-ops.d.ts +0 -108
- package/dist/src/core/git-file-ops.js +0 -280
- package/dist/src/core/git-readonly-index.d.ts +0 -91
- package/dist/src/core/git-readonly-index.js +0 -177
- package/dist/src/core/git-status.d.ts +0 -84
- package/dist/src/core/git-status.js +0 -208
- package/dist/src/core/git.d.ts +0 -114
- package/dist/src/core/git.js +0 -540
- package/dist/src/core/harness-helper-pids.d.ts +0 -98
- package/dist/src/core/harness-helper-pids.js +0 -240
- package/dist/src/core/harness-orphans.d.ts +0 -118
- package/dist/src/core/harness-orphans.js +0 -268
- package/dist/src/core/harness-port-fallback.d.ts +0 -60
- package/dist/src/core/harness-port-fallback.js +0 -96
- package/dist/src/core/harness-port-reservation.d.ts +0 -60
- package/dist/src/core/harness-port-reservation.js +0 -122
- package/dist/src/core/history-log-file.d.ts +0 -61
- package/dist/src/core/history-log-file.js +0 -164
- package/dist/src/core/history-log.d.ts +0 -20
- package/dist/src/core/history-log.js +0 -30
- package/dist/src/core/json-preserving-edit.d.ts +0 -22
- package/dist/src/core/json-preserving-edit.js +0 -199
- package/dist/src/core/launchable-build.d.ts +0 -39
- package/dist/src/core/launchable-build.js +0 -85
- package/dist/src/core/license-headers.d.ts +0 -103
- package/dist/src/core/license-headers.js +0 -318
- package/dist/src/core/line-prefixer.d.ts +0 -18
- package/dist/src/core/line-prefixer.js +0 -34
- package/dist/src/core/lit-template-regions.d.ts +0 -4
- package/dist/src/core/lit-template-regions.js +0 -50
- package/dist/src/core/mach-build-artifacts.d.ts +0 -176
- package/dist/src/core/mach-build-artifacts.js +0 -436
- package/dist/src/core/mach-error-hints.d.ts +0 -24
- package/dist/src/core/mach-error-hints.js +0 -135
- package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
- package/dist/src/core/mach-known-noise-filter.js +0 -257
- package/dist/src/core/mach-mozconfig.d.ts +0 -57
- package/dist/src/core/mach-mozconfig.js +0 -166
- package/dist/src/core/mach-python.d.ts +0 -19
- package/dist/src/core/mach-python.js +0 -131
- package/dist/src/core/mach-resource-shim.d.ts +0 -107
- package/dist/src/core/mach-resource-shim.js +0 -640
- package/dist/src/core/mach.d.ts +0 -284
- package/dist/src/core/mach.js +0 -445
- package/dist/src/core/marionette-port.d.ts +0 -153
- package/dist/src/core/marionette-port.js +0 -474
- package/dist/src/core/marionette-preflight.d.ts +0 -58
- package/dist/src/core/marionette-preflight.js +0 -332
- package/dist/src/core/markdown-table.d.ts +0 -104
- package/dist/src/core/markdown-table.js +0 -265
- package/dist/src/core/mochitest-server-port.d.ts +0 -81
- package/dist/src/core/mochitest-server-port.js +0 -175
- package/dist/src/core/module-resolution-preflight.d.ts +0 -65
- package/dist/src/core/module-resolution-preflight.js +0 -171
- package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
- package/dist/src/core/moz-manifest-helpers.js +0 -163
- package/dist/src/core/moz-manifest-register.d.ts +0 -19
- package/dist/src/core/moz-manifest-register.js +0 -51
- package/dist/src/core/moz-manifest-rules.d.ts +0 -58
- package/dist/src/core/moz-manifest-rules.js +0 -264
- package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
- package/dist/src/core/moz-manifest-tokenizers.js +0 -108
- package/dist/src/core/negative-control-compiled.d.ts +0 -46
- package/dist/src/core/negative-control-compiled.js +0 -109
- package/dist/src/core/negative-control-diff.d.ts +0 -51
- package/dist/src/core/negative-control-diff.js +0 -204
- package/dist/src/core/negative-control.d.ts +0 -150
- package/dist/src/core/negative-control.js +0 -399
- package/dist/src/core/objdir-install-manifests.d.ts +0 -73
- package/dist/src/core/objdir-install-manifests.js +0 -226
- package/dist/src/core/objdir-maintenance.d.ts +0 -10
- package/dist/src/core/objdir-maintenance.js +0 -167
- package/dist/src/core/ownership-table.d.ts +0 -53
- package/dist/src/core/ownership-table.js +0 -159
- package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
- package/dist/src/core/parent-exit-watchdog.js +0 -69
- package/dist/src/core/park-store.d.ts +0 -63
- package/dist/src/core/park-store.js +0 -216
- package/dist/src/core/parser-fallback.d.ts +0 -50
- package/dist/src/core/parser-fallback.js +0 -61
- package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
- package/dist/src/core/patch-apply-fuzz.js +0 -125
- package/dist/src/core/patch-apply.d.ts +0 -88
- package/dist/src/core/patch-apply.js +0 -435
- package/dist/src/core/patch-export-coverage.d.ts +0 -49
- package/dist/src/core/patch-export-coverage.js +0 -73
- package/dist/src/core/patch-export-metadata.d.ts +0 -46
- package/dist/src/core/patch-export-metadata.js +0 -47
- package/dist/src/core/patch-export-update.d.ts +0 -55
- package/dist/src/core/patch-export-update.js +0 -95
- package/dist/src/core/patch-export.d.ts +0 -175
- package/dist/src/core/patch-export.js +0 -312
- package/dist/src/core/patch-files.d.ts +0 -17
- package/dist/src/core/patch-files.js +0 -59
- package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
- package/dist/src/core/patch-identifier-suggest.js +0 -135
- package/dist/src/core/patch-lint-binary.d.ts +0 -45
- package/dist/src/core/patch-lint-binary.js +0 -39
- package/dist/src/core/patch-lint-cache.d.ts +0 -78
- package/dist/src/core/patch-lint-cache.js +0 -233
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -39
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -63
- package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
- package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -180
- package/dist/src/core/patch-lint-checkjs.js +0 -611
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
- package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
- package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
- package/dist/src/core/patch-lint-code-lines.js +0 -105
- package/dist/src/core/patch-lint-creators.d.ts +0 -26
- package/dist/src/core/patch-lint-creators.js +0 -45
- package/dist/src/core/patch-lint-cross.d.ts +0 -232
- package/dist/src/core/patch-lint-cross.js +0 -590
- package/dist/src/core/patch-lint-css.d.ts +0 -27
- package/dist/src/core/patch-lint-css.js +0 -228
- package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
- package/dist/src/core/patch-lint-diff-tag.js +0 -105
- package/dist/src/core/patch-lint-diff.d.ts +0 -42
- package/dist/src/core/patch-lint-diff.js +0 -100
- package/dist/src/core/patch-lint-file-size.d.ts +0 -57
- package/dist/src/core/patch-lint-file-size.js +0 -62
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
- package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
- package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
- package/dist/src/core/patch-lint-forward-registration.js +0 -266
- package/dist/src/core/patch-lint-ignore.d.ts +0 -196
- package/dist/src/core/patch-lint-ignore.js +0 -429
- package/dist/src/core/patch-lint-imports.d.ts +0 -5
- package/dist/src/core/patch-lint-imports.js +0 -67
- package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
- package/dist/src/core/patch-lint-jsdoc.js +0 -471
- package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
- package/dist/src/core/patch-lint-module-registration.js +0 -97
- package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
- package/dist/src/core/patch-lint-mozbuild.js +0 -192
- package/dist/src/core/patch-lint-observer.d.ts +0 -37
- package/dist/src/core/patch-lint-observer.js +0 -167
- package/dist/src/core/patch-lint-ownership.d.ts +0 -74
- package/dist/src/core/patch-lint-ownership.js +0 -125
- package/dist/src/core/patch-lint-prettier.d.ts +0 -34
- package/dist/src/core/patch-lint-prettier.js +0 -124
- package/dist/src/core/patch-lint-projection.d.ts +0 -25
- package/dist/src/core/patch-lint-projection.js +0 -43
- package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
- package/dist/src/core/patch-lint-queue-types.js +0 -12
- package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
- package/dist/src/core/patch-lint-size-thresholds.js +0 -110
- package/dist/src/core/patch-lint-size.d.ts +0 -117
- package/dist/src/core/patch-lint-size.js +0 -331
- package/dist/src/core/patch-lint-staged-registration.d.ts +0 -78
- package/dist/src/core/patch-lint-staged-registration.js +0 -110
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -57
- package/dist/src/core/patch-lint-token-scale.js +0 -286
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
- package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
- package/dist/src/core/patch-lint.d.ts +0 -191
- package/dist/src/core/patch-lint.js +0 -529
- package/dist/src/core/patch-lock.d.ts +0 -40
- package/dist/src/core/patch-lock.js +0 -129
- package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
- package/dist/src/core/patch-manifest-consistency.js +0 -256
- package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
- package/dist/src/core/patch-manifest-files-affected.js +0 -77
- package/dist/src/core/patch-manifest-io.d.ts +0 -199
- package/dist/src/core/patch-manifest-io.js +0 -556
- package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
- package/dist/src/core/patch-manifest-key-order.js +0 -60
- package/dist/src/core/patch-manifest-query.d.ts +0 -55
- package/dist/src/core/patch-manifest-query.js +0 -139
- package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
- package/dist/src/core/patch-manifest-resolve.js +0 -35
- package/dist/src/core/patch-manifest-stage.d.ts +0 -46
- package/dist/src/core/patch-manifest-stage.js +0 -96
- package/dist/src/core/patch-manifest-validate.d.ts +0 -20
- package/dist/src/core/patch-manifest-validate.js +0 -240
- package/dist/src/core/patch-manifest.d.ts +0 -12
- package/dist/src/core/patch-manifest.js +0 -13
- package/dist/src/core/patch-order-legal.d.ts +0 -26
- package/dist/src/core/patch-order-legal.js +0 -88
- package/dist/src/core/patch-parse.d.ts +0 -161
- package/dist/src/core/patch-parse.js +0 -347
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -216
- package/dist/src/core/patch-policy.d.ts +0 -80
- package/dist/src/core/patch-policy.js +0 -394
- package/dist/src/core/patch-registration-refs.d.ts +0 -41
- package/dist/src/core/patch-registration-refs.js +0 -107
- package/dist/src/core/patch-retired.d.ts +0 -57
- package/dist/src/core/patch-retired.js +0 -92
- package/dist/src/core/patch-source-metadata.d.ts +0 -6
- package/dist/src/core/patch-source-metadata.js +0 -12
- package/dist/src/core/patch-subset.d.ts +0 -18
- package/dist/src/core/patch-subset.js +0 -67
- package/dist/src/core/patch-transform.d.ts +0 -61
- package/dist/src/core/patch-transform.js +0 -198
- package/dist/src/core/preflight-wait.d.ts +0 -22
- package/dist/src/core/preflight-wait.js +0 -62
- package/dist/src/core/process-cpu-time.d.ts +0 -12
- package/dist/src/core/process-cpu-time.js +0 -52
- package/dist/src/core/process-owner.d.ts +0 -9
- package/dist/src/core/process-owner.js +0 -43
- package/dist/src/core/rebase-dry-run.d.ts +0 -48
- package/dist/src/core/rebase-dry-run.js +0 -105
- package/dist/src/core/rebase-from-version.d.ts +0 -46
- package/dist/src/core/rebase-from-version.js +0 -71
- package/dist/src/core/rebase-session.d.ts +0 -100
- package/dist/src/core/rebase-session.js +0 -174
- package/dist/src/core/register-browser-content.d.ts +0 -11
- package/dist/src/core/register-browser-content.js +0 -52
- package/dist/src/core/register-browser-test.d.ts +0 -18
- package/dist/src/core/register-browser-test.js +0 -66
- package/dist/src/core/register-module.d.ts +0 -11
- package/dist/src/core/register-module.js +0 -56
- package/dist/src/core/register-result.d.ts +0 -30
- package/dist/src/core/register-result.js +0 -8
- package/dist/src/core/register-scaffold.d.ts +0 -55
- package/dist/src/core/register-scaffold.js +0 -146
- package/dist/src/core/register-shared-css.d.ts +0 -36
- package/dist/src/core/register-shared-css.js +0 -112
- package/dist/src/core/register-xpcshell-test.d.ts +0 -50
- package/dist/src/core/register-xpcshell-test.js +0 -143
- package/dist/src/core/run-log-redact.d.ts +0 -38
- package/dist/src/core/run-log-redact.js +0 -69
- package/dist/src/core/run-log.d.ts +0 -97
- package/dist/src/core/run-log.js +0 -334
- package/dist/src/core/run-profile.d.ts +0 -57
- package/dist/src/core/run-profile.js +0 -137
- package/dist/src/core/shared-ftl.d.ts +0 -28
- package/dist/src/core/shared-ftl.js +0 -49
- package/dist/src/core/signal-critical.d.ts +0 -38
- package/dist/src/core/signal-critical.js +0 -62
- package/dist/src/core/smoke-patterns.d.ts +0 -81
- package/dist/src/core/smoke-patterns.js +0 -176
- package/dist/src/core/state-file.d.ts +0 -60
- package/dist/src/core/state-file.js +0 -71
- package/dist/src/core/status-binary.d.ts +0 -62
- package/dist/src/core/status-binary.js +0 -133
- package/dist/src/core/status-classify.d.ts +0 -96
- package/dist/src/core/status-classify.js +0 -244
- package/dist/src/core/test-changed-prefs.d.ts +0 -30
- package/dist/src/core/test-changed-prefs.js +0 -93
- package/dist/src/core/test-harness-crash.d.ts +0 -251
- package/dist/src/core/test-harness-crash.js +0 -780
- package/dist/src/core/test-harness-infra.d.ts +0 -32
- package/dist/src/core/test-harness-infra.js +0 -69
- package/dist/src/core/test-harness-output.d.ts +0 -45
- package/dist/src/core/test-harness-output.js +0 -119
- package/dist/src/core/test-harness-signature.d.ts +0 -57
- package/dist/src/core/test-harness-signature.js +0 -35
- package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
- package/dist/src/core/test-harness-verdict-notes.js +0 -48
- package/dist/src/core/test-host-state.d.ts +0 -14
- package/dist/src/core/test-host-state.js +0 -80
- package/dist/src/core/test-path-scope.d.ts +0 -59
- package/dist/src/core/test-path-scope.js +0 -147
- package/dist/src/core/test-profile-files.d.ts +0 -17
- package/dist/src/core/test-profile-files.js +0 -75
- package/dist/src/core/test-raw-log.d.ts +0 -66
- package/dist/src/core/test-raw-log.js +0 -122
- package/dist/src/core/test-run-completeness.d.ts +0 -97
- package/dist/src/core/test-run-completeness.js +0 -191
- package/dist/src/core/test-stale-check.d.ts +0 -213
- package/dist/src/core/test-stale-check.js +0 -396
- package/dist/src/core/test-stale-exempt.d.ts +0 -40
- package/dist/src/core/test-stale-exempt.js +0 -70
- package/dist/src/core/test-stale-symlink.d.ts +0 -12
- package/dist/src/core/test-stale-symlink.js +0 -39
- package/dist/src/core/test-stall-triage.d.ts +0 -51
- package/dist/src/core/test-stall-triage.js +0 -142
- package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
- package/dist/src/core/test-xpcshell-retry.js +0 -31
- package/dist/src/core/token-category.d.ts +0 -54
- package/dist/src/core/token-category.js +0 -299
- package/dist/src/core/token-coverage.d.ts +0 -12
- package/dist/src/core/token-coverage.js +0 -96
- package/dist/src/core/token-dark-mode.d.ts +0 -64
- package/dist/src/core/token-dark-mode.js +0 -186
- package/dist/src/core/token-docs.d.ts +0 -34
- package/dist/src/core/token-docs.js +0 -102
- package/dist/src/core/token-inventory.d.ts +0 -56
- package/dist/src/core/token-inventory.js +0 -114
- package/dist/src/core/token-lint.d.ts +0 -53
- package/dist/src/core/token-lint.js +0 -131
- package/dist/src/core/token-manager.d.ts +0 -87
- package/dist/src/core/token-manager.js +0 -407
- package/dist/src/core/token-scaffold.d.ts +0 -36
- package/dist/src/core/token-scaffold.js +0 -73
- package/dist/src/core/token-sibling-sheets.d.ts +0 -46
- package/dist/src/core/token-sibling-sheets.js +0 -119
- package/dist/src/core/token-variant.d.ts +0 -90
- package/dist/src/core/token-variant.js +0 -327
- package/dist/src/core/toolchain-preflight.d.ts +0 -90
- package/dist/src/core/toolchain-preflight.js +0 -251
- package/dist/src/core/tree-cow.d.ts +0 -16
- package/dist/src/core/tree-cow.js +0 -71
- package/dist/src/core/tree-guard.d.ts +0 -35
- package/dist/src/core/tree-guard.js +0 -194
- package/dist/src/core/tree-store.d.ts +0 -143
- package/dist/src/core/tree-store.js +0 -478
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -507
- package/dist/src/core/typecheck.d.ts +0 -75
- package/dist/src/core/typecheck.js +0 -433
- package/dist/src/core/wire-destroy.d.ts +0 -25
- package/dist/src/core/wire-destroy.js +0 -126
- package/dist/src/core/wire-dom-fragment.d.ts +0 -44
- package/dist/src/core/wire-dom-fragment.js +0 -139
- package/dist/src/core/wire-init.d.ts +0 -28
- package/dist/src/core/wire-init.js +0 -219
- package/dist/src/core/wire-subscript.d.ts +0 -23
- package/dist/src/core/wire-subscript.js +0 -145
- package/dist/src/core/wire-utils.d.ts +0 -149
- package/dist/src/core/wire-utils.js +0 -338
- package/dist/src/core/xpcshell-appdir.d.ts +0 -157
- package/dist/src/core/xpcshell-appdir.js +0 -299
- package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
- package/dist/src/core/xpcshell-profile-dir.js +0 -45
- package/dist/src/errors/base.d.ts +0 -217
- package/dist/src/errors/base.js +0 -279
- package/dist/src/errors/build.d.ts +0 -92
- package/dist/src/errors/build.js +0 -166
- package/dist/src/errors/codes.d.ts +0 -74
- package/dist/src/errors/codes.js +0 -74
- package/dist/src/errors/config.d.ts +0 -17
- package/dist/src/errors/config.js +0 -39
- package/dist/src/errors/download.d.ts +0 -66
- package/dist/src/errors/download.js +0 -160
- package/dist/src/errors/furnace.d.ts +0 -20
- package/dist/src/errors/furnace.js +0 -28
- package/dist/src/errors/git.d.ts +0 -65
- package/dist/src/errors/git.js +0 -140
- package/dist/src/errors/patch.d.ts +0 -27
- package/dist/src/errors/patch.js +0 -52
- package/dist/src/errors/rebase.d.ts +0 -42
- package/dist/src/errors/rebase.js +0 -71
- package/dist/src/errors/run.d.ts +0 -16
- package/dist/src/errors/run.js +0 -22
- package/dist/src/index.d.ts +0 -42
- package/dist/src/index.js +0 -32
- package/dist/src/types/cli.d.ts +0 -14
- package/dist/src/types/commands/index.d.ts +0 -6
- package/dist/src/types/commands/index.js +0 -5
- package/dist/src/types/commands/options.d.ts +0 -1367
- package/dist/src/types/commands/options.js +0 -5
- package/dist/src/types/commands/patches.d.ts +0 -352
- package/dist/src/types/commands/patches.js +0 -5
- package/dist/src/types/commands/project.d.ts +0 -51
- package/dist/src/types/commands/project.js +0 -5
- package/dist/src/types/config.d.ts +0 -703
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -415
- package/dist/src/types/furnace.js +0 -26
- package/dist/src/types/index.d.ts +0 -5
- package/dist/src/types/index.js +0 -5
- package/dist/src/types/json.d.ts +0 -22
- package/dist/src/types/json.js +0 -11
- package/dist/src/types/typecheck.d.ts +0 -51
- package/dist/src/types/typecheck.js +0 -14
- package/dist/src/utils/assert.d.ts +0 -34
- package/dist/src/utils/assert.js +0 -61
- package/dist/src/utils/build-info.d.ts +0 -30
- package/dist/src/utils/build-info.js +0 -99
- package/dist/src/utils/child-env.d.ts +0 -28
- package/dist/src/utils/child-env.js +0 -27
- package/dist/src/utils/concurrency.d.ts +0 -8
- package/dist/src/utils/concurrency.js +0 -32
- package/dist/src/utils/elapsed.d.ts +0 -2
- package/dist/src/utils/elapsed.js +0 -23
- package/dist/src/utils/errors.d.ts +0 -39
- package/dist/src/utils/errors.js +0 -67
- package/dist/src/utils/fs.d.ts +0 -113
- package/dist/src/utils/fs.js +0 -337
- package/dist/src/utils/hash.d.ts +0 -12
- package/dist/src/utils/hash.js +0 -16
- package/dist/src/utils/line-dispatch.d.ts +0 -15
- package/dist/src/utils/line-dispatch.js +0 -48
- package/dist/src/utils/logger.d.ts +0 -109
- package/dist/src/utils/logger.js +0 -270
- package/dist/src/utils/machine-output.d.ts +0 -12
- package/dist/src/utils/machine-output.js +0 -33
- package/dist/src/utils/options.d.ts +0 -155
- package/dist/src/utils/options.js +0 -312
- package/dist/src/utils/package-root.d.ts +0 -21
- package/dist/src/utils/package-root.js +0 -70
- package/dist/src/utils/parse.d.ts +0 -117
- package/dist/src/utils/parse.js +0 -214
- package/dist/src/utils/path-glob.d.ts +0 -15
- package/dist/src/utils/path-glob.js +0 -47
- package/dist/src/utils/paths.d.ts +0 -31
- package/dist/src/utils/paths.js +0 -80
- package/dist/src/utils/platform.d.ts +0 -9
- package/dist/src/utils/platform.js +0 -14
- package/dist/src/utils/process-group.d.ts +0 -42
- package/dist/src/utils/process-group.js +0 -190
- package/dist/src/utils/process-input.d.ts +0 -27
- package/dist/src/utils/process-input.js +0 -46
- package/dist/src/utils/process.d.ts +0 -293
- package/dist/src/utils/process.js +0 -593
- package/dist/src/utils/ps-duration.d.ts +0 -31
- package/dist/src/utils/ps-duration.js +0 -70
- package/dist/src/utils/regex.d.ts +0 -39
- package/dist/src/utils/regex.js +0 -109
- package/dist/src/utils/sleep.d.ts +0 -25
- package/dist/src/utils/sleep.js +0 -30
- package/dist/src/utils/stdio-drain.d.ts +0 -28
- package/dist/src/utils/stdio-drain.js +0 -54
- package/dist/src/utils/validation.d.ts +0 -182
- package/dist/src/utils/validation.js +0 -394
- package/docs/lifecycle-invariants.md +0 -523
- package/docs/run-logs.md +0 -122
- package/docs/verification-trees.md +0 -49
- /package/dist/src/{types/cli.js → cli/context.js} +0 -0
|
@@ -1,523 +0,0 @@
|
|
|
1
|
-
<!-- SPDX-License-Identifier: EUPL-1.2 -->
|
|
2
|
-
|
|
3
|
-
# Mutation lifecycle invariants (internal)
|
|
4
|
-
|
|
5
|
-
Internal architecture notes for contributors. FireForge's safety behavior
|
|
6
|
-
around destructive operations is spread across small modules on purpose. This
|
|
7
|
-
document is the one place that states the invariants those modules uphold
|
|
8
|
-
together, and says which module owns which piece. If you add a new mutating
|
|
9
|
-
command, read the decision table at the bottom first.
|
|
10
|
-
|
|
11
|
-
## The invariants
|
|
12
|
-
|
|
13
|
-
1. **Only `bin/fireforge.ts` terminates the process.** Library code
|
|
14
|
-
propagates `CommandError` and `FireForgeError`. It never calls
|
|
15
|
-
`process.exit`. This is enforced at lint time by
|
|
16
|
-
`no-restricted-properties` (`eslint.config.js`), which bans
|
|
17
|
-
`process.exit` everywhere and grants a `bin/**` override.
|
|
18
|
-
|
|
19
|
-
2. **At most one real engine or patch mutation runs at a time** per
|
|
20
|
-
resource. CLI build, test, export, re-export and furnace mutations first
|
|
21
|
-
take the `.fireforge/engine-session.lock`, then subsystem locks such as
|
|
22
|
-
build, furnace, or patch-directory locks. Furnace mutations serialize on a
|
|
23
|
-
per-root lock, and patch directory mutations (filename allocation plus
|
|
24
|
-
manifest writes) on a per-directory lock. `re-export --dry-run` is the
|
|
25
|
-
exception: it writes nothing, runs its git plumbing on a private index
|
|
26
|
-
(so even the `--intent-to-add` staging an untracked binary needs never
|
|
27
|
-
reaches the shared `.git/index`), and serializes only against other dry
|
|
28
|
-
runs, so a preview does not queue behind a peer's build or test run.
|
|
29
|
-
|
|
30
|
-
3. **A furnace mutation that does not finish restores the engine or says
|
|
31
|
-
so.** Both a signal (SIGINT or SIGTERM) and a thrown error trigger a
|
|
32
|
-
journal-based rollback. If the rollback is incomplete or uncertain, a
|
|
33
|
-
`pendingRepair` marker blocks all further furnace mutations until
|
|
34
|
-
`fireforge doctor --repair-furnace` reconciles.
|
|
35
|
-
|
|
36
|
-
On a thrown error `runFurnaceMutation` runs cleanups, restores the
|
|
37
|
-
journal, and rethrows the original error, so a throw outside a body's own
|
|
38
|
-
catch does not leave the checkout torn with no marker. `applyAllComponents`
|
|
39
|
-
rolls back on collected `result.errors` and `stepErrors`, but a throw from
|
|
40
|
-
its pre-loop or post-loop work escapes both and relies on the wrapper. A
|
|
41
|
-
rollback failure becomes a marker plus a warning, never a replacement
|
|
42
|
-
error.
|
|
43
|
-
|
|
44
|
-
Both paths race for the same journal, so each operation carries a
|
|
45
|
-
`rollbackState` claimed synchronously before either path's first await.
|
|
46
|
-
Whichever gets there first restores, and the other skips. Bodies that
|
|
47
|
-
already restore on their own (the eight `furnace/*` command bodies,
|
|
48
|
-
`furnace-apply`, `preview`) call `ctx.markRolledBack()` so the wrapper
|
|
49
|
-
keeps its hands off. There is one deliberate asymmetry: on the throw path,
|
|
50
|
-
a body that never registered a journal writes no marker, because a
|
|
51
|
-
preflight refusal would otherwise block every later mutation behind a
|
|
52
|
-
repair with nothing to reconcile. The signal path still writes one there,
|
|
53
|
-
since an interrupt genuinely may have landed mid-write.
|
|
54
|
-
|
|
55
|
-
4. **A signal during a compound "apply plus persist" pair never tears the
|
|
56
|
-
pair.** Rebase-style operations intentionally leave the engine mutated, so
|
|
57
|
-
rollback is the wrong tool. Instead the exit is held, with a bound, until
|
|
58
|
-
the bookkeeping write lands, so `--continue` never sees stale progress.
|
|
59
|
-
|
|
60
|
-
5. **No lock outlives the process it belongs to** (best effort, in two
|
|
61
|
-
layers): the signal pipeline force-releases furnace locks before exiting,
|
|
62
|
-
and stale-lock recovery (PID first, then age) unblocks the next command
|
|
63
|
-
for anything that escaped.
|
|
64
|
-
|
|
65
|
-
6. **Destructive patch operations are gated and audited.** That means an
|
|
66
|
-
explicit change summary, a confirmation (or `--yes`), `--dry-run`, a hard
|
|
67
|
-
refusal on structural conflicts (`--force-unsafe` to override), and a
|
|
68
|
-
JSONL history entry appended only after the mutation succeeded. This
|
|
69
|
-
covers metadata mutations too: `patch tier` and `patch lint-ignore` route
|
|
70
|
-
through `confirmDestructive`. Enforced by
|
|
71
|
-
`patch-tier-and-lint-ignore.integration.test.ts`.
|
|
72
|
-
|
|
73
|
-
The history log is write-only: FireForge appends to it and no command
|
|
74
|
-
reads it back, so nothing depends on its contents or location. It lives
|
|
75
|
-
at `.fireforge/history.jsonl` (or `fireforge.json#history.path`), outside
|
|
76
|
-
the tracked patch queue. If `patches/.fireforge-history.jsonl` exists,
|
|
77
|
-
the next append moves it there, and appends its records when both exist
|
|
78
|
-
rather than overwriting either. Each record carries `invocationId` (one per FireForge
|
|
79
|
-
process), `pid`, `ppid`, and `sessionId` when `FIREFORGE_SESSION_ID` is
|
|
80
|
-
set, so a session sharing the checkout can select its own lines.
|
|
81
|
-
Enforced by `history-log-file.test.ts`.
|
|
82
|
-
|
|
83
|
-
7. **A verification tree never mutates shared state.** Trees are full
|
|
84
|
-
project-root CoW snapshots under `.fireforge/trees/<name>`, with no
|
|
85
|
-
merge-back model.
|
|
86
|
-
|
|
87
|
-
Enforcement is layered. The `.fireforge/tree.json` marker plus a
|
|
88
|
-
default-deny command-verdict table (`src/core/tree-guard.ts`) refuse every
|
|
89
|
-
mutating command through one commander `preAction` hook in `cli.ts`, so a
|
|
90
|
-
newly added command is refused in trees until someone classifies it (there
|
|
91
|
-
is a drift test for this). Because a tree is a full project root, its
|
|
92
|
-
build and engine-session locks key on the tree root, so in-tree reads
|
|
93
|
-
never contend with the primary.
|
|
94
|
-
|
|
95
|
-
`tree create` snapshots under the primary engine-session lock, so it never
|
|
96
|
-
captures a mid-mutation state. With `--with-objdir` it additionally holds
|
|
97
|
-
the primary build lock, under which the objdir is resolved and its build
|
|
98
|
-
artifacts validated immediately before cloning. Any probe before the lock
|
|
99
|
-
is a fast-fail courtesy whose result is discarded, never the authoritative
|
|
100
|
-
answer. A concurrent `fireforge build` can therefore neither tear the
|
|
101
|
-
`obj-*` snapshot nor swap it between preflight and clone.
|
|
102
|
-
|
|
103
|
-
A symlinked (or engine-escaping) primary `obj-*` is refused before any
|
|
104
|
-
copying. Every `cp` mode the clone uses preserves symlinks, so the clone
|
|
105
|
-
would carry a link back to the original build, and the mozinfo rewrite
|
|
106
|
-
plus `_virtualenvs` removal would mutate that original through it.
|
|
107
|
-
`assertCloneSafeObjdir` (`tree-store.ts`) checks lstat and realpath
|
|
108
|
-
containment, which a lexical `resolve()` cannot see, on the primary objdir
|
|
109
|
-
and again on the tree's copy before any write goes through it. This is
|
|
110
|
-
pinned by `tree-store.integration.test.ts` and `tree.integration.test.ts`.
|
|
111
|
-
Tree create and remove serialise on a primary-side `.fireforge/trees.lock`,
|
|
112
|
-
and `tree remove` refuses while a live PID holds a tree lock and checks
|
|
113
|
-
that its `rm -rf` target is contained in the tree path.
|
|
114
|
-
|
|
115
|
-
In-tree `test` is the one conditional carve-out, and it is
|
|
116
|
-
marker-gated. mach objdirs embed absolute `topsrcdir` and `topobjdir`
|
|
117
|
-
paths, so `tree create --with-objdir` rewrites the cloned objdir's
|
|
118
|
-
`mozinfo.json` to the tree using the same safe-relocation rewriter that
|
|
119
|
-
`build --rewrite-mozinfo` uses, scrubs the cloned `_virtualenvs` (they
|
|
120
|
-
carry primary shebangs, and mach rebuilds them in-tree), and runs
|
|
121
|
-
`mach configure` inside the tree so the configure-generated root files are
|
|
122
|
-
regenerated against the tree's paths rather than keeping the primary's.
|
|
123
|
-
Before configure, relocation rewrites old-source symlinks, `.pp`/`.d`,
|
|
124
|
-
FasterMake and Cargo fingerprint metadata, and removes copied
|
|
125
|
-
`config.statusd/*/config.track` inventories. Those inventories contain
|
|
126
|
-
absolute WRITE destinations and must never be consumed from a clone.
|
|
127
|
-
Aliased objdirs or partial-config directories are refused. Afterwards
|
|
128
|
-
`findObjdirRelocationViolation` verifies config.status, backend.mk,
|
|
129
|
-
Makefile, config/autoconf.mk and every remaining objdir symlink for the
|
|
130
|
-
old source prefix. External toolchain links are allowed; source links
|
|
131
|
-
must no longer consult the old checkout. Finally it
|
|
132
|
-
copies `last-build.json` so the in-tree stale-build gates anchor
|
|
133
|
-
correctly.
|
|
134
|
-
|
|
135
|
-
Both relocation steps fail closed: a rewrite refusal or a failed in-tree
|
|
136
|
-
configure aborts the create and removes the partial tree. Only after both
|
|
137
|
-
succeed is the marker's `clonedObjdir` field written, and that field is
|
|
138
|
-
what the guard's `test` predicate consults. At run time, `test`
|
|
139
|
-
additionally refuses when the objdir its preflight found is not the one
|
|
140
|
-
the marker vouches for (`assertObjdirMatchesTreeMarker`), so an objdir
|
|
141
|
-
that appeared through any path other than `tree create --with-objdir` is
|
|
142
|
-
never run against. `test --build` stays refused, since a tree is a
|
|
143
|
-
snapshot with no merge-back model, and a corrupt marker refuses `test`
|
|
144
|
-
like every other conditional verdict.
|
|
145
|
-
|
|
146
|
-
**Both halves of that enforcement fail closed on an unreadable state,
|
|
147
|
-
because "we cannot tell" is not "there is nothing there."** A marker that
|
|
148
|
-
exists but does not parse reports `corrupt`, not `absent`, and refuses the
|
|
149
|
-
command. Reading it as absent would grant a snapshot the full mutating
|
|
150
|
-
command set on the strength of a file that failed to parse. A lock directory whose
|
|
151
|
-
owner cannot be identified reports `unknown`, not free, and refuses
|
|
152
|
-
removal. `withFileLock` treats its owner-record write as
|
|
153
|
-
fatal (`writeLockOwner` in `file-lock-owner.ts` removes the just-created
|
|
154
|
-
directory and throws a `GeneralError` if the record cannot be written or
|
|
155
|
-
does not read back as written), so an owner-less lock is left only by a
|
|
156
|
-
crash inside that write or by a holder that never wrote a record. It is refused,
|
|
157
|
-
for the same reason. The one exception is a lock directory that vanished
|
|
158
|
-
between the probe and the owner read: that is a clean release, and reads
|
|
159
|
-
as free.
|
|
160
|
-
|
|
161
|
-
Each case has one named escape (`--ignore-corrupt-tree-marker`,
|
|
162
|
-
`tree remove --force`), and neither has a silent one. The corrupt-marker
|
|
163
|
-
refusal spares the read-only commands that are unconditionally allowed
|
|
164
|
-
(`status`, `lint`, `typecheck`, `verify`): their verdict never consults
|
|
165
|
-
marker fields, so an unreadable marker cannot change their answer, and
|
|
166
|
-
blocking them would leave the operator unable to diagnose the very tree that
|
|
167
|
-
needs inspecting. `conditional` verdicts can write, and stay refused.
|
|
168
|
-
Enforced by `tree-guard.test.ts` (verdict drift gate and corrupt-marker
|
|
169
|
-
refusal), `tree-store.integration.test.ts` (marker tri-state,
|
|
170
|
-
unknown-owner refusal, rewrite-then-reconfigure-then-marker ordering),
|
|
171
|
-
`tree.test.ts` (under-lock objdir re-validation ordering) and
|
|
172
|
-
`tree.integration.test.ts` (real-program refusal).
|
|
173
|
-
|
|
174
|
-
8. **A verdict is only reported when it was actually verified.**
|
|
175
|
-
`fireforge test` brackets the harness run with `snapshotEngineGeneration`
|
|
176
|
-
and fails the run if `engine/` changed underneath it. The probe can
|
|
177
|
-
legitimately fail, since `engine/` need not be a git checkout, so a probe
|
|
178
|
-
that fails on both sides warns and proceeds. A one-sided transition
|
|
179
|
-
throws, because either the second probe measured nothing about a checkout
|
|
180
|
-
that had something to measure, or there was no baseline to compare
|
|
181
|
-
against. Enforced by `engine-session-lock.test.ts`.
|
|
182
|
-
|
|
183
|
-
A probe that fails on a transient `.git/index.lock`, meaning another
|
|
184
|
-
writer held the index for the instant we looked, is retried on a bounded
|
|
185
|
-
budget rather than latched as unmeasurable. A durable failure (a non-git
|
|
186
|
-
`engine/`, an unreadable `.git`) still reports immediately. Enforced by
|
|
187
|
-
`engine-generation-probe-retry.test.ts`.
|
|
188
|
-
|
|
189
|
-
The same invariant reaches across the `tree exec` boundary. `tree exec`
|
|
190
|
-
hands stdout to the child (`stdio: 'inherit'`), so the child's
|
|
191
|
-
`FIREFORGE-VERDICT:` line reaches the caller byte for byte. The parent
|
|
192
|
-
therefore seals stdout the moment the spawn settles, so its own "exited
|
|
193
|
-
with code N" refusal cannot print after the verdict and displace it. A
|
|
194
|
-
refusal raised before the child spawns emits no verdict at all, so
|
|
195
|
-
consumers have to read a missing verdict as a failed step, never a pass.
|
|
196
|
-
|
|
197
|
-
9. **FireForge's own read-only commands are not writers of the primary
|
|
198
|
-
engine checkout.** `verify`, `lint --per-patch` and `typecheck` are
|
|
199
|
-
read-only to the operator but not to git: `git status` and `git diff HEAD`
|
|
200
|
-
refresh and rewrite `.git/index`, and the untracked-binary diff path
|
|
201
|
-
stages and unstages for real. Each of those commands therefore runs its
|
|
202
|
-
whole body inside `withPrivateGitIndex`, which seeds a temp
|
|
203
|
-
`GIT_INDEX_FILE` from the repository's own index so that every refresh
|
|
204
|
-
lands there and is discarded. `typecheck` additionally ignores a
|
|
205
|
-
jsconfig's own `incremental` and `tsBuildInfoFile`, so no sidecar is
|
|
206
|
-
written under `engine/`. Its incremental build info lives in the
|
|
207
|
-
project's `.fireforge/typecheck/`, outside the engine. The scope fails open, meaning an unresolvable git dir
|
|
208
|
-
simply does not install it, and it is not reentrant. This exists so that
|
|
209
|
-
invariant 8 stays evidential: a concurrent `fireforge test` must not be
|
|
210
|
-
invalidated by FireForge's own read-only lane. Enforced by
|
|
211
|
-
`git-readonly-index.test.ts`, against a real repository and a real index
|
|
212
|
-
mtime.
|
|
213
|
-
|
|
214
|
-
10. **Lock queues are observable, first come first served, and leaving one
|
|
215
|
-
is as reliable as joining it.** A waiter that contends registers a ticket
|
|
216
|
-
in `<lock>.waiters/` named `<startedAtMs>-<pid>-<uuid>` and deregisters in
|
|
217
|
-
a `finally` that covers both outcomes: acquired the lock, or timed out.
|
|
218
|
-
A newcomer that finds live tickets takes one before trying the lock at
|
|
219
|
-
all. The tickets decide the grant: only the waiter with no
|
|
220
|
-
live ticket ahead of it (arrival time, then ticket name) attempts the
|
|
221
|
-
lock, so "You are next" is a promise. Because a ticket blocks the queue, a dead one must not: a
|
|
222
|
-
ticket whose PID is gone (or reused, where the start tick can tell) is
|
|
223
|
-
skipped and removed, and one its owner has not refreshed for 30 s (every
|
|
224
|
-
waiter rewrites its ticket every 5 s) is skipped, which covers a stopped
|
|
225
|
-
waiter and PID reuse elsewhere. A registry that cannot be written falls
|
|
226
|
-
back to unordered contention rather than failing an acquisition.
|
|
227
|
-
This applies to every `withFileLock` lock: the engine-session, patch,
|
|
228
|
-
furnace and build locks among them. `fireforge status --lock` and the
|
|
229
|
-
`--wait-lock` progress lines read it, and the lines name the ordering
|
|
230
|
-
rule. Enforced by `file-lock-queue.test.ts` (arrival order against faster
|
|
231
|
-
later pollers, crashed, killed and stopped waiters, timeouts),
|
|
232
|
-
`lock-visibility.test.ts` (a real concurrent waiter) and
|
|
233
|
-
`engine-session-lock.test.ts` (queue position in the wait line).
|
|
234
|
-
|
|
235
|
-
11. **A manifest repair preserves what it cannot recompute, or refuses.**
|
|
236
|
-
`doctor --repair-patches-manifest` is a merge: only `filesAffected` and
|
|
237
|
-
`order` are derived from the patch files, and every other field on an
|
|
238
|
-
existing entry is carried forward by spreading it. A field a `.patch`
|
|
239
|
-
body cannot express (`stagedDependencies`, `lintIgnore`, `tier`, and
|
|
240
|
-
whatever is added to `PatchMetadata` next) therefore survives without
|
|
241
|
-
having to be listed. The one case where nothing can be carried forward is
|
|
242
|
-
a `patches.json` that exists but does not parse. The rebuild refuses it,
|
|
243
|
-
naming what would be reinvented, unless `--allow-metadata-loss` is
|
|
244
|
-
passed. `doctor --repair-files-affected` is the narrow repair for drift
|
|
245
|
-
that is only in the derived list: it goes through
|
|
246
|
-
`mutatePatchRowsInManifest`, so untouched rows keep their exact JSON.
|
|
247
|
-
Both repairs take the patch-directory lock (invariant 2), both support
|
|
248
|
-
`--dry-run`, and a repair that wrote is reported before the doctor
|
|
249
|
-
summary in every branch. The run can still exit non-zero on an unrelated
|
|
250
|
-
check, and a non-zero exit otherwise reads as "nothing happened".
|
|
251
|
-
Enforced by `patch-manifest-repair.test.ts` (real temp queues) and the
|
|
252
|
-
repair cases in `doctor.test.ts`.
|
|
253
|
-
|
|
254
|
-
## Lock release
|
|
255
|
-
|
|
256
|
-
`releaseLockIfOwned(lockPath)` in `src/core/file-lock.ts` is the
|
|
257
|
-
ownership-checked removal for callers that hold no acquisition token.
|
|
258
|
-
Currently that is the signal-time furnace sweeper
|
|
259
|
-
(`forceReleaseFurnaceLocksForActiveOperations`). It verifies the PID before
|
|
260
|
-
removing, which is the half of `releaseLock`'s guard a sweeper can still
|
|
261
|
-
perform: the sweeper knows which lock paths its own operations opened, but
|
|
262
|
-
not the per-acquisition UUID they minted. A bare `rm` could
|
|
263
|
-
delete a lock that a different process had acquired in the window between our
|
|
264
|
-
operation dying and the sweep running.
|
|
265
|
-
|
|
266
|
-
`completeJournalRollback` in `src/core/furnace-operation.ts` owns the
|
|
267
|
-
mutation-body rollback sequence that eight furnace commands share. The ordering is the invariant: `markRolledBack()` runs
|
|
268
|
-
before the restore, so a restore that itself fails does not leave the
|
|
269
|
-
lifecycle wrapper replaying the same journal on the way out, and the original
|
|
270
|
-
error is rethrown unless the rollback is what failed.
|
|
271
|
-
|
|
272
|
-
## Who owns what
|
|
273
|
-
|
|
274
|
-
### `bin/fireforge.ts`
|
|
275
|
-
|
|
276
|
-
The only `process.exit` call sites, the SIGINT/SIGTERM pipeline, the
|
|
277
|
-
re-entrancy guard (a second Ctrl+C exits immediately), and exit codes 130 and 143.
|
|
278
|
-
|
|
279
|
-
### `src/core/file-lock.ts`
|
|
280
|
-
|
|
281
|
-
The generic directory-as-lock, using `mkdir` for atomicity. The owner file
|
|
282
|
-
carries the PID, a per-acquisition token, the acquisition time and the start
|
|
283
|
-
tick. Stale recovery works by renaming the lock aside and reaping it: a dead
|
|
284
|
-
PID unblocks immediately, with an age-based fallback after 5 minutes for
|
|
285
|
-
records with no usable liveness answer. The probe re-runs about every 5
|
|
286
|
-
seconds while waiting, so a holder dying mid-wait cannot strand waiters until
|
|
287
|
-
`timeoutMs`. Acquisition then polls until the timeout.
|
|
288
|
-
|
|
289
|
-
The owner-record write is fatal. A failed or unverifiable write releases the
|
|
290
|
-
just-created lock and throws a `GeneralError` instead of running the
|
|
291
|
-
operation. Without that, a lock with no readable owner is reaped by the age
|
|
292
|
-
heuristic after 5 minutes, which for a multi-hour build would mean a second holder
|
|
293
|
-
inside the critical section. Covered by `file-lock.test.ts`, "owner record
|
|
294
|
-
write at acquisition": write failure, corrupt read-back, recorded acquisition
|
|
295
|
-
time.
|
|
296
|
-
|
|
297
|
-
Release verifies that the lock still carries this acquisition's token before
|
|
298
|
-
removing, so a lock that a reaper has replaced is never deleted by its
|
|
299
|
-
previous owner. Enforced by `file-lock.test.ts` (two-waiter reap race,
|
|
300
|
-
mid-wait holder death, foreign-owner release). Releases happen in a `finally`,
|
|
301
|
-
which never runs across `process.exit`, and that is why invariant 5 needs its
|
|
302
|
-
other layer.
|
|
303
|
-
|
|
304
|
-
Wait ergonomics are opt-in: `pollMaxMs` (the poll interval doubles from
|
|
305
|
-
`pollMs` up to the cap) and `waitProgressMs` with `onWaitProgress` (a periodic
|
|
306
|
-
progress callback carrying the holder's PID, liveness, and owner-metadata
|
|
307
|
-
lines from the pid file). All three are inert when unset. Within one poll iteration a due progress probe
|
|
308
|
-
runs before the deadline check, so a wait that times out has always reported
|
|
309
|
-
the holder at least once when its budget exceeds `waitProgressMs`, however
|
|
310
|
-
slow the host (`file-lock.test.ts`, "budget shorter than one iteration").
|
|
311
|
-
|
|
312
|
-
### `src/core/file-lock-owner.ts`
|
|
313
|
-
|
|
314
|
-
The owner record (the `pid` file) itself: its format (PID, token,
|
|
315
|
-
`acquired-at-ms=` and `start-tick=` lines, plus free-form metadata; a record
|
|
316
|
-
without the mechanical lines parses too), the write-and-verify
|
|
317
|
-
contract described above (a read-back that errors is retried before it counts
|
|
318
|
-
as a failed write, while a missing or mismatching record fails immediately),
|
|
319
|
-
and PID-reuse liveness.
|
|
320
|
-
|
|
321
|
-
`isLockOwnerAlive` is the liveness check that every stale probe, reap
|
|
322
|
-
re-verification, status snapshot and timeout message uses. Beyond
|
|
323
|
-
`isProcessAlive`, on Linux the record carries the writer's boot-relative start
|
|
324
|
-
tick (`/proc/self/stat` field 22), and the probe reads the candidate's tick
|
|
325
|
-
from `/proc/<pid>/stat`. A different tick means a different process, so the
|
|
326
|
-
lock is stale. A crashed build's PID handed to a long-lived daemon therefore
|
|
327
|
-
does not keep the dead lock honoured until the waiter's timeout. It uses
|
|
328
|
-
ticks rather than wall-clock times because `btime` moves with clock steps, and
|
|
329
|
-
a wall-clock comparison would reap a live holder after NTP steps the clock
|
|
330
|
-
forward. macOS and Windows have no cheap start-time source (a `ps` spawn per
|
|
331
|
-
poll is not worth it) and keep the PID-only answer, and so do records without
|
|
332
|
-
a start tick. Enforced by `file-lock-owner.test.ts`: parsing of records without the
|
|
333
|
-
mechanical lines, forged mechanical lines dropped, transient read-back error retried
|
|
334
|
-
versus persistent error versus mismatch, fake-procfs tick parsing, reused-PID
|
|
335
|
-
versus genuine-holder verdicts, stepped-clock immunity, and on Linux a
|
|
336
|
-
real-procfs `withFileLock` reap of a live-PID stale record.
|
|
337
|
-
|
|
338
|
-
### `src/core/engine-session-lock.ts`
|
|
339
|
-
|
|
340
|
-
The project-wide engine-session lock under `.fireforge/`, stamped with PID,
|
|
341
|
-
command, and start time metadata. CLI `build`, `test`, `export`, `re-export`,
|
|
342
|
-
`furnace apply`, `furnace deploy` and `furnace sync` take it before subsystem
|
|
343
|
-
locks. `re-export --dry-run` does not: it runs inside `withPrivateGitIndex`,
|
|
344
|
-
so its temporary `--intent-to-add` staging lands on a throwaway index, and it
|
|
345
|
-
serializes only against other dry runs. Dry-run purity is enforced at runtime
|
|
346
|
-
by `withDryRunPurityGuard` (`re-export-bulk-scan.ts`). For `re-export` it
|
|
347
|
-
fingerprints what the dry run could touch (the engine HEAD and index, the
|
|
348
|
-
selected patches' bodies, their `patches.json` rows and the engine files they
|
|
349
|
-
own) and fails hard on divergence, naming a foreign writer when the history
|
|
350
|
-
log or the engine-session lock shows one in the window (`re-export-purity-scope.ts`).
|
|
351
|
-
|
|
352
|
-
Contention fails fast after about a second by default, with the fixed message
|
|
353
|
-
"Another FireForge engine-mutating command is already running. Wait for it to
|
|
354
|
-
finish, then retry `<command>`." The same message also closes the bounded
|
|
355
|
-
wait. Each of those commands accepts
|
|
356
|
-
`--wait-lock [seconds]` (bare flag means 60, valid 1 to 86400) for a bounded
|
|
357
|
-
operator wait instead: polling backs off exponentially from 100 ms to 2 s, and
|
|
358
|
-
roughly every 5 s a progress line identifies the holder from the lock's
|
|
359
|
-
owner-metadata lines, in the form `Waiting for the FireForge engine lock held
|
|
360
|
-
by PID 12345 (command=build, started=…)` followed by how long the wait has
|
|
361
|
-
run and how large the budget is.
|
|
362
|
-
|
|
363
|
-
The budget is not the engine lock's alone. It covers every lock the command
|
|
364
|
-
takes, which for the three furnace commands means the per-root furnace lock as
|
|
365
|
-
well (see the `furnace-operation.ts` section). The furnace leaves that take
|
|
366
|
-
only the furnace lock (`create`, `remove`, `rename`, `refresh`, `scan`,
|
|
367
|
-
`override`, `preview`, `chrome-doc create`/`remove`) honour the flag too, for
|
|
368
|
-
that one lock. `FIREFORGE_WAIT_LOCK=<seconds>`
|
|
369
|
-
sets the same budget for a whole session, parsed with the same bounds as the
|
|
370
|
-
flag so the two cannot drift, and an explicit budget at a call site always
|
|
371
|
-
wins. Commands that take no lock accept `--wait-lock` and ignore it, so a
|
|
372
|
-
scripted sequence can append the flag everywhere without a usage error killing
|
|
373
|
-
the run. `fireforge test` also snapshots the engine git generation before and
|
|
374
|
-
after the harness run, and fails the verdict as invalid if the tree changes
|
|
375
|
-
mid-run.
|
|
376
|
-
|
|
377
|
-
### `src/core/furnace-operation.ts`
|
|
378
|
-
|
|
379
|
-
The `runFurnaceMutation` lifecycle wrapper: the per-root furnace lock, the
|
|
380
|
-
`pendingRepair` preflight refusal, the in-flight operation registry (journal,
|
|
381
|
-
cleanups and a `completed` flag), signal rollback with bounded timeouts,
|
|
382
|
-
`pendingRepair` persistence, and the furnace-lock force-release sweep.
|
|
383
|
-
|
|
384
|
-
The lock's wait budget is `options.lockTimeoutMs`, threaded from `--wait-lock`
|
|
385
|
-
by `waitLockMutationOptions`, which does the seconds-to-milliseconds
|
|
386
|
-
conversion once. Every furnace leaf that takes the lock threads its own
|
|
387
|
-
flag. It falls back to `sessionWaitLockMs()` (`FIREFORGE_WAIT_LOCK`) and then
|
|
388
|
-
to `DEFAULT_LOCK_TIMEOUT_MS`; that fallback is the only budget for callers
|
|
389
|
-
that thread none (the pre-build apply, `doctor --repair-furnace`). A contended refusal here names the furnace lock, says it is the second
|
|
390
|
-
of two, and points at `--wait-lock` and `FIREFORGE_WAIT_LOCK`. A budget that
|
|
391
|
-
is paid in full and then refuses anyway is the worst shape a budget can have,
|
|
392
|
-
so the refusal must not read as the engine lock's.
|
|
393
|
-
|
|
394
|
-
### `src/core/furnace-rollback.ts`
|
|
395
|
-
|
|
396
|
-
The rollback journal itself: file snapshots and their restoration.
|
|
397
|
-
|
|
398
|
-
### `src/utils/assert.ts`
|
|
399
|
-
|
|
400
|
-
The runtime-assertion primitive (`assert`, `expectDefined`) and, through
|
|
401
|
-
`InternalInvariantError`, exit code 11. It checks state FireForge itself
|
|
402
|
-
established (journal before mutation, lock held before write, manifest order
|
|
403
|
-
well-formedness) and is deliberately not input validation: anything derived
|
|
404
|
-
from user input, the filesystem, or a subprocess stays a typed error from
|
|
405
|
-
`src/errors/`. Every check routes through the helper rather than an inline
|
|
406
|
-
`if (!c) throw`, so the failure branch is covered once here instead of being
|
|
407
|
-
uncovered at every call site.
|
|
408
|
-
|
|
409
|
-
### `src/core/signal-critical.ts`
|
|
410
|
-
|
|
411
|
-
The registry of signal-deferred critical sections
|
|
412
|
-
(`runInSignalCriticalSection`). It is a pure registry and installs no
|
|
413
|
-
handlers. The bin pipeline drains it with a bounded wait.
|
|
414
|
-
|
|
415
|
-
### `src/core/patch-lock.ts`
|
|
416
|
-
|
|
417
|
-
`withPatchDirectoryLock`, which serializes patch filename allocation and
|
|
418
|
-
manifest read-modify-writes. It is not reentrant: callers must not already
|
|
419
|
-
hold it.
|
|
420
|
-
|
|
421
|
-
### `src/core/destructive.ts`
|
|
422
|
-
|
|
423
|
-
The destructive-operation contract: `confirmDestructive` (summary, prompt,
|
|
424
|
-
`--yes`, `--dry-run`, conflict refusal, `--force-unsafe`) and the
|
|
425
|
-
append-only history log (`src/core/history-log-file.ts` resolves its path,
|
|
426
|
-
moves a `patches/.fireforge-history.jsonl` it finds to that path, and stamps each
|
|
427
|
-
record's invocation and session).
|
|
428
|
-
|
|
429
|
-
### `src/core/tree-store.ts`
|
|
430
|
-
|
|
431
|
-
Verification-tree lifecycle: CoW snapshot contents and exclusions, the objdir
|
|
432
|
-
clone relocation (mozinfo rewrite plus a caller-supplied in-tree
|
|
433
|
-
`mach configure`, both before the marker records `clonedObjdir`, with
|
|
434
|
-
`assertObjdirMatchesTreeMarker` re-checking at `test` time), the
|
|
435
|
-
`.fireforge/tree.json` marker and its absent/valid/corrupt tri-state,
|
|
436
|
-
staleness fingerprints, the primary-side `trees.lock`, and removal that
|
|
437
|
-
refuses both a live holder and a lock of unknown ownership, with containment
|
|
438
|
-
checks on the removal target.
|
|
439
|
-
|
|
440
|
-
### `src/core/tree-guard.ts`
|
|
441
|
-
|
|
442
|
-
Read-only enforcement inside trees: the default-deny per-command verdict table
|
|
443
|
-
and the `preAction` hook body `runTreeGuardHook` that `createProgram()`
|
|
444
|
-
installs (invariant 7).
|
|
445
|
-
|
|
446
|
-
## The signal pipeline, end to end
|
|
447
|
-
|
|
448
|
-
On SIGINT or SIGTERM, `bin/fireforge.ts`:
|
|
449
|
-
|
|
450
|
-
1. Exits immediately if a rollback is already in flight (a second Ctrl+C).
|
|
451
|
-
2. Otherwise runs both of these in parallel and waits for both:
|
|
452
|
-
- `rollbackActiveOperationsForSignal(signal)`, which for each active
|
|
453
|
-
furnace operation runs the cleanup callbacks (15 s bound each), restores
|
|
454
|
-
the journal (15 s bound), and writes a `pendingRepair` marker if anything
|
|
455
|
-
failed or no journal was registered yet. Operations whose body already
|
|
456
|
-
completed are skipped, so a signal in the finally-window cannot roll back
|
|
457
|
-
a committed mutation.
|
|
458
|
-
- `waitForActiveCriticalSections(5 s)`, which holds the exit for in-flight
|
|
459
|
-
"apply plus persist" pairs (invariant 4). It is bounded so that a stuck
|
|
460
|
-
write cannot postpone the exit the user asked for.
|
|
461
|
-
- `waitForActiveChildShutdown(12 s)`, which holds the exit until every
|
|
462
|
-
tracked child has closed. For a process-group dispatch (`mach` under
|
|
463
|
-
`test`, `build`, `run`) "closed" includes the exec layer's post-close
|
|
464
|
-
work: the group sweep and the caller's `postCloseSweep` (the harness
|
|
465
|
-
helper reap in `fireforge test`). Both run before the child's closure
|
|
466
|
-
settles, so a forwarded SIGTERM cannot race `process.exit` past them.
|
|
467
|
-
3. Restores any `test --negative-control` mutation still applied
|
|
468
|
-
(`restoreActiveNegativeControlsForSignal`), after child shutdown and
|
|
469
|
-
before any lock is released, so the next lock holder never builds or
|
|
470
|
-
tests the neuter. A restore the run itself already started is awaited.
|
|
471
|
-
A control a SIGKILL left behind is undone by the next `fireforge test`
|
|
472
|
-
from its on-disk journal (`src/core/negative-control.ts`).
|
|
473
|
-
4. Force-releases the furnace lock directories of active operations, since
|
|
474
|
-
`withFileLock`'s `finally` will never run past `process.exit`.
|
|
475
|
-
5. Calls `process.exit(130 | 143)`.
|
|
476
|
-
|
|
477
|
-
A parent that dies without signalling FireForge (SIGKILL on the `npm` above
|
|
478
|
-
it) enters no handler here. `fireforge test` covers that case itself with
|
|
479
|
-
the parent-exit watchdog (`src/core/parent-exit-watchdog.ts`): it writes the
|
|
480
|
-
killed verdict, reaps the mach group and the tracked helpers, and lets the
|
|
481
|
-
dispatch loop end the run; the process then exits through the ordinary
|
|
482
|
-
error path, not through this pipeline.
|
|
483
|
-
|
|
484
|
-
## Choosing a primitive for a new mutation
|
|
485
|
-
|
|
486
|
-
| Your operation | Use |
|
|
487
|
-
| -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
|
488
|
-
| Mutates the engine and should be undone on Ctrl+C (apply, deploy, preview, remove) | `runFurnaceMutation` plus `ctx.registerJournal` (and `ctx.registerCleanup` for extra teardown) |
|
|
489
|
-
| Intentionally leaves the engine mutated but must finish a paired bookkeeping write (rebase-style `--continue` state) | `runInSignalCriticalSection` around the apply plus persist pair, keeping the body short |
|
|
490
|
-
| Touches the patch directory or manifest | `withPatchDirectoryLock` (never nested) |
|
|
491
|
-
| Deletes or rewrites user-owned patch state | The `confirmDestructive` contract, with history appended only on success |
|
|
492
|
-
| Only reads | Nothing. Dry runs must not block or be blocked |
|
|
493
|
-
| Runs read verification concurrently beside a busy primary | A `fireforge tree` (a CoW snapshot, with mutation refused inside, invariant 7) |
|
|
494
|
-
|
|
495
|
-
## Where this is tested
|
|
496
|
-
|
|
497
|
-
- `src/core/__tests__/file-lock.test.ts`: lock acquisition, staleness, PID
|
|
498
|
-
recovery, fatal owner-record write.
|
|
499
|
-
- `src/core/__tests__/file-lock-owner.test.ts`: owner-record format
|
|
500
|
-
compatibility and PID-reuse liveness.
|
|
501
|
-
- `src/core/__tests__/furnace-operation.test.ts`: wrapper lifecycle, signal
|
|
502
|
-
rollback outcomes, `pendingRepair` semantics, lock force-release.
|
|
503
|
-
- `src/core/__tests__/signal-critical.test.ts`: the critical-section registry
|
|
504
|
-
contract in isolation.
|
|
505
|
-
- `src/core/__tests__/signal-compound-mutation-scenario.test.ts`: the composed
|
|
506
|
-
bin-handler pipeline, covering exit held for a compound mutation, the
|
|
507
|
-
bounded hold for a stuck section, and rollback plus drain plus lock release
|
|
508
|
-
together.
|
|
509
|
-
- `src/core/__tests__/destructive.test.ts`: the destructive-operation
|
|
510
|
-
contract.
|
|
511
|
-
- `src/core/__tests__/tree-guard.test.ts`: invariant 7's verdict table
|
|
512
|
-
(default-deny drift gate, conditional predicates, corrupt-marker refusal).
|
|
513
|
-
- `src/core/__tests__/tree-store.integration.test.ts`: clone contents, objdir
|
|
514
|
-
rewrite/reconfigure/marker ordering, marker tri-state, unknown-owner removal
|
|
515
|
-
refusal.
|
|
516
|
-
- `src/commands/__tests__/tree.test.ts`: create and remove command flow,
|
|
517
|
-
including objdir re-validation under the primary build lock, and the
|
|
518
|
-
`tree exec` stdout seal (invariant 8).
|
|
519
|
-
- `src/__tests__/tree-exec-verdict.test.ts`: invariant 8 across a real process
|
|
520
|
-
boundary, with exactly one verdict line, last on stdout, and the refusal on
|
|
521
|
-
stderr.
|
|
522
|
-
- `src/commands/__tests__/tree.integration.test.ts`: real-program in-tree
|
|
523
|
-
refusals and `--with-objdir` end to end against a synthetic objdir.
|
package/docs/run-logs.md
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
<!-- SPDX-License-Identifier: EUPL-1.2 -->
|
|
2
|
-
|
|
3
|
-
# Run logs (internal)
|
|
4
|
-
|
|
5
|
-
`fireforge test` and `fireforge build` write their own complete output to
|
|
6
|
-
`.fireforge/logs/<command>-<timestamp>.log` as they stream. The module is
|
|
7
|
-
`src/core/run-log.ts`.
|
|
8
|
-
|
|
9
|
-
## Why the tool holds the log, not the operator
|
|
10
|
-
|
|
11
|
-
Without a log, a run's diagnosis exists in exactly one place: the terminal.
|
|
12
|
-
The convenient thing to do when output is long is
|
|
13
|
-
`fireforge test … 2>&1 | tail -40`, which keeps the summary, discards the
|
|
14
|
-
`TEST-UNEXPECTED-FAIL` lines that say what broke, and launders the exit code
|
|
15
|
-
as well. Nothing else holds the output: `runMachCapture` keeps a 2 MB
|
|
16
|
-
in-memory tail that dies with the process, and the shard retry loop discards
|
|
17
|
-
earlier attempts outright.
|
|
18
|
-
|
|
19
|
-
An operator rule ("never pipe a run") gets broken, so this is not an
|
|
20
|
-
operator problem. The tool is the only party that can make the log survive
|
|
21
|
-
the mistake.
|
|
22
|
-
|
|
23
|
-
## The contract
|
|
24
|
-
|
|
25
|
-
- **Complete output, never the echo filter's collapsed form.** The artifact
|
|
26
|
-
exists so that whoever is diagnosing the run can re-read it. Shortening it
|
|
27
|
-
would lose what it is kept for. The one transformation applied is
|
|
28
|
-
the secret-masking pass below, which changes values but never line
|
|
29
|
-
structure.
|
|
30
|
-
- **Secret-shaped values are masked in the file, and only in the file.** The
|
|
31
|
-
terminal already showed every byte to the operator who ran the command. The
|
|
32
|
-
file is retained twenty deep and gets attached to bug reports, so it gets a
|
|
33
|
-
narrow redaction pass (`src/core/run-log-redact.ts`), applied per line
|
|
34
|
-
before the write. A line split across two chunks is held until its
|
|
35
|
-
terminator arrives (`\n`, or a lone `\r` from progress-bar repaints), or
|
|
36
|
-
until it exceeds 1 MiB, or until the log is closed. What gets redacted:
|
|
37
|
-
- The value of an env-style assignment `KEY=value` whose `KEY` matches
|
|
38
|
-
`/(TOKEN|SECRET|PASSWORD|PASSWD|API_KEY|AUTH)/i`. The value up to the
|
|
39
|
-
next whitespace, or a whole quoted string, is written as
|
|
40
|
-
`KEY=<redacted>`. The `--password=x` and `-DAUTH_TOKEN=x` spellings that
|
|
41
|
-
mach and configure echo from their argv have the same shape and are
|
|
42
|
-
masked too.
|
|
43
|
-
- The credential of an `Authorization:` header. `Bearer`, `Basic` and
|
|
44
|
-
`Token` keep the scheme word. Any other value is masked whole.
|
|
45
|
-
|
|
46
|
-
Nothing else is masked. A bare token in a URL, a space-separated
|
|
47
|
-
`--password foo` argument, a JSON `"token": "…"` field, or a cookie all
|
|
48
|
-
pass through unchanged. The pass is a seatbelt against the common
|
|
49
|
-
accidental leak (mach echoing its environment), not a guarantee that a log
|
|
50
|
-
is free of secrets. Review a log before sharing it.
|
|
51
|
-
|
|
52
|
-
- **Opened before any preflight**, so a refusal is logged too. Those are
|
|
53
|
-
exactly the runs whose only output a `tail` throws away.
|
|
54
|
-
- **Retained 20 deep per command kind.** Per kind, so that a busy `test` loop
|
|
55
|
-
cannot evict the `build` log an operator needs to read beside it. A
|
|
56
|
-
`--keep-log` copy (below) is outside this count. Pruning
|
|
57
|
-
runs before the new file is opened, and orders by the timestamp in the
|
|
58
|
-
filename rather than by stat-ing every entry.
|
|
59
|
-
- **Timestamps are filesystem-safe.** They use the ISO form with `:` and `.`
|
|
60
|
-
replaced by `-`, which Windows accepts and which still sorts
|
|
61
|
-
chronologically.
|
|
62
|
-
- **Best-effort throughout.** A log that cannot be opened, written or pruned
|
|
63
|
-
degrades to no log, because a run must never fail over a diagnostic.
|
|
64
|
-
`openRunLog` returns `undefined` on failure, a stream error after opening
|
|
65
|
-
latches `broken` and drops every later write, and pruning failures are
|
|
66
|
-
logged verbosely only. The entry point's SIGINT/SIGTERM path closes the
|
|
67
|
-
active log, also best-effort, before exiting, so the held partial line of a
|
|
68
|
-
killed run reaches disk.
|
|
69
|
-
|
|
70
|
-
## Keeping a log past retention
|
|
71
|
-
|
|
72
|
-
Retention is shared by every session on the checkout, so on a busy shared
|
|
73
|
-
checkout a log a verdict line names can be pruned within the hour.
|
|
74
|
-
`--keep-log <path>` (on `test` and `build`) also writes the run's log to a
|
|
75
|
-
path of the caller's choosing, outside `.fireforge/logs/` and never pruned.
|
|
76
|
-
`FIREFORGE_LOG_KEEP=<path>` sets the same for every run in a session. The
|
|
77
|
-
flag wins over the variable. A value ending in `/` or naming an existing
|
|
78
|
-
directory receives the log under its own `.fireforge/logs/` file name, so a
|
|
79
|
-
session directory collects one file per run; any other value is the file
|
|
80
|
-
itself. Relative values resolve against the working directory.
|
|
81
|
-
|
|
82
|
-
The copy is written live, line for line through the same redaction, rather
|
|
83
|
-
than copied at the end, so a killed run keeps what it had written, exactly
|
|
84
|
-
as the primary log does. `log=` still names the primary. The copy is
|
|
85
|
-
best-effort too: if it cannot be opened, the run proceeds with the primary
|
|
86
|
-
alone, and if the primary cannot be opened, the copy stands in for it.
|
|
87
|
-
|
|
88
|
-
## Preflight refusals
|
|
89
|
-
|
|
90
|
-
`fireforge test` opens its run log before any preflight, so a refusal is
|
|
91
|
-
logged too. Those are exactly the runs whose only output a `tail` throws
|
|
92
|
-
away. The refusal's own explanatory text is written into the log, and to
|
|
93
|
-
stdout, before the verdict line seals stdout.
|
|
94
|
-
|
|
95
|
-
Both halves matter. The verdict seal routes everything the CLI error boundary
|
|
96
|
-
renders afterwards to stderr, so a run captured with `> file` would keep
|
|
97
|
-
`FIREFORGE-VERDICT: FAIL reason=preflight` and nothing else. That rendering
|
|
98
|
-
also happens after the run log is closed, so the artifact the verdict's own
|
|
99
|
-
`log=` key points at would hold only the pre-test build. Writing before the
|
|
100
|
-
seal avoids both without giving up the contract: the reason lands on both channels,
|
|
101
|
-
and the verdict is still the run's last stdout line.
|
|
102
|
-
|
|
103
|
-
## Where the path is announced
|
|
104
|
-
|
|
105
|
-
`test` publishes it as an additive `log=<path>` key on the
|
|
106
|
-
`FIREFORGE-VERDICT:` line. That is forced rather than chosen: the verdict has
|
|
107
|
-
to stay the run's last stdout write (see
|
|
108
|
-
[`machine-output.md`](machine-output.md)), so a separate announcement after
|
|
109
|
-
it would break the contract, and one before it is the first thing a `tail`
|
|
110
|
-
cuts.
|
|
111
|
-
|
|
112
|
-
`build` prints no verdict line, so it announces the path directly
|
|
113
|
-
(`Full build output: <path>`).
|
|
114
|
-
|
|
115
|
-
## Where the tee sits
|
|
116
|
-
|
|
117
|
-
At the two mach capture funnels in `src/core/mach.ts`, not at the commands.
|
|
118
|
-
That covers every dispatch: the three test dispatchers, `package`, and the
|
|
119
|
-
stdio-inheriting path `mach build` uses, which rides the collectors' existing
|
|
120
|
-
`mirror` hook rather than growing a second one. A new dispatcher added at the
|
|
121
|
-
funnels is logged automatically, and one added beside them is not, which is
|
|
122
|
-
the reason to keep going through them.
|