@hominis/fireforge 0.46.0 → 0.46.2
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 +381 -498
- package/dist/bin/fireforge.d.ts +1 -1
- package/dist/bin/fireforge.js +17 -17
- package/dist/build-info.json +4 -4
- package/dist/src/cli-usage-error.d.ts +9 -9
- package/dist/src/cli-usage-error.js +12 -12
- package/dist/src/cli.d.ts +3 -2
- package/dist/src/cli.js +29 -28
- package/dist/src/commands/bootstrap-checks.js +2 -1
- package/dist/src/commands/bootstrap.js +2 -2
- package/dist/src/commands/build.js +12 -11
- package/dist/src/commands/config.js +9 -9
- package/dist/src/commands/destructive-decision.d.ts +4 -4
- package/dist/src/commands/destructive-decision.js +4 -4
- package/dist/src/commands/discard.js +5 -5
- package/dist/src/commands/doctor-check-core.d.ts +4 -4
- package/dist/src/commands/doctor-external-toolchains.js +2 -2
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
- package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
- package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
- package/dist/src/commands/doctor-furnace-jar.js +1 -1
- package/dist/src/commands/doctor-furnace.js +22 -22
- package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -11
- package/dist/src/commands/doctor-orphaned-harness.js +10 -11
- package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
- package/dist/src/commands/doctor-patch-manifest.js +7 -6
- package/dist/src/commands/doctor-post-rebase-audit.js +2 -2
- package/dist/src/commands/doctor-source-pin.d.ts +12 -12
- package/dist/src/commands/doctor-source-pin.js +14 -14
- package/dist/src/commands/doctor-working-tree.d.ts +3 -3
- package/dist/src/commands/doctor-working-tree.js +3 -3
- package/dist/src/commands/doctor.d.ts +2 -2
- package/dist/src/commands/doctor.js +9 -9
- package/dist/src/commands/download.js +15 -13
- package/dist/src/commands/export-all.js +8 -8
- package/dist/src/commands/export-flow.d.ts +5 -5
- package/dist/src/commands/export-flow.js +14 -14
- package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
- package/dist/src/commands/export-placement-conflicts.js +9 -9
- package/dist/src/commands/export-placement-gate.d.ts +2 -2
- package/dist/src/commands/export-placement-gate.js +5 -5
- package/dist/src/commands/export-placement-policy.d.ts +1 -1
- package/dist/src/commands/export-placement-policy.js +1 -1
- package/dist/src/commands/export-shared.d.ts +10 -10
- package/dist/src/commands/export-shared.js +13 -13
- package/dist/src/commands/export.js +4 -4
- package/dist/src/commands/furnace/apply.js +16 -16
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
- package/dist/src/commands/furnace/chrome-doc-remove.js +1 -1
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
- package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
- package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
- package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
- package/dist/src/commands/furnace/chrome-doc.js +18 -18
- package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
- package/dist/src/commands/furnace/create-browser-test.js +4 -4
- package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
- package/dist/src/commands/furnace/create-dry-run.js +4 -4
- package/dist/src/commands/furnace/create-features.d.ts +2 -2
- package/dist/src/commands/furnace/create-features.js +2 -2
- package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
- package/dist/src/commands/furnace/create-mochikit.js +7 -7
- package/dist/src/commands/furnace/create-templates.d.ts +14 -14
- package/dist/src/commands/furnace/create-templates.js +18 -18
- package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
- package/dist/src/commands/furnace/create-xpcshell.js +8 -8
- package/dist/src/commands/furnace/create.d.ts +1 -1
- package/dist/src/commands/furnace/create.js +10 -10
- package/dist/src/commands/furnace/deploy.js +4 -4
- package/dist/src/commands/furnace/diff.js +7 -7
- package/dist/src/commands/furnace/index.js +1 -1
- package/dist/src/commands/furnace/init.js +15 -15
- package/dist/src/commands/furnace/list.js +2 -2
- package/dist/src/commands/furnace/override.d.ts +1 -1
- package/dist/src/commands/furnace/override.js +15 -15
- package/dist/src/commands/furnace/preview.js +17 -17
- package/dist/src/commands/furnace/refresh.js +6 -6
- package/dist/src/commands/furnace/remove-mutations.d.ts +3 -3
- package/dist/src/commands/furnace/remove-mutations.js +19 -18
- package/dist/src/commands/furnace/remove-state.d.ts +1 -1
- package/dist/src/commands/furnace/remove-state.js +1 -1
- package/dist/src/commands/furnace/remove.js +2 -2
- package/dist/src/commands/furnace/rename-browser-test.js +9 -8
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
- package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
- package/dist/src/commands/furnace/rename.js +9 -9
- package/dist/src/commands/furnace/scan.js +3 -3
- package/dist/src/commands/furnace/status.js +7 -7
- package/dist/src/commands/furnace/sync.js +6 -6
- package/dist/src/commands/furnace/test-file-name.d.ts +2 -2
- package/dist/src/commands/furnace/test-file-name.js +2 -2
- package/dist/src/commands/furnace/validate.js +11 -12
- package/dist/src/commands/import.js +20 -20
- package/dist/src/commands/lint-per-patch.js +8 -8
- package/dist/src/commands/lint-per-run-checkjs.d.ts +12 -13
- package/dist/src/commands/lint-per-run-checkjs.js +14 -15
- package/dist/src/commands/lint-report.d.ts +3 -3
- package/dist/src/commands/lint-report.js +4 -4
- package/dist/src/commands/lint.d.ts +3 -3
- package/dist/src/commands/lint.js +35 -35
- package/dist/src/commands/manifest.d.ts +4 -4
- package/dist/src/commands/package.js +2 -2
- package/dist/src/commands/patch/compact.d.ts +2 -2
- package/dist/src/commands/patch/compact.js +8 -8
- package/dist/src/commands/patch/delete.d.ts +1 -1
- package/dist/src/commands/patch/delete.js +8 -8
- package/dist/src/commands/patch/lint-ignore.d.ts +3 -4
- package/dist/src/commands/patch/lint-ignore.js +14 -15
- package/dist/src/commands/patch/move-files-create.d.ts +2 -2
- package/dist/src/commands/patch/move-files-create.js +5 -5
- package/dist/src/commands/patch/move-files-into.d.ts +2 -2
- package/dist/src/commands/patch/move-files-into.js +3 -3
- package/dist/src/commands/patch/move-files.js +1 -1
- package/dist/src/commands/patch/patch-context.d.ts +1 -1
- package/dist/src/commands/patch/rename.d.ts +4 -4
- package/dist/src/commands/patch/rename.js +8 -8
- package/dist/src/commands/patch/reorder.js +10 -10
- package/dist/src/commands/patch/split-plan.d.ts +3 -3
- package/dist/src/commands/patch/split-plan.js +6 -5
- package/dist/src/commands/patch/split.d.ts +2 -2
- package/dist/src/commands/patch/split.js +5 -5
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
- package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
- package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
- package/dist/src/commands/patch/staged-dependency.js +6 -6
- package/dist/src/commands/patch/tier.d.ts +2 -2
- package/dist/src/commands/patch/tier.js +5 -5
- package/dist/src/commands/patch-rename-map.d.ts +1 -1
- package/dist/src/commands/patch-rename-map.js +1 -1
- package/dist/src/commands/pending-resolution.d.ts +5 -5
- package/dist/src/commands/pending-resolution.js +5 -5
- package/dist/src/commands/re-export-adjacent.d.ts +3 -3
- package/dist/src/commands/re-export-adjacent.js +8 -8
- package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
- package/dist/src/commands/re-export-bulk-scan.js +17 -17
- package/dist/src/commands/re-export-drift.d.ts +10 -10
- package/dist/src/commands/re-export-drift.js +29 -29
- package/dist/src/commands/re-export-files.js +14 -15
- package/dist/src/commands/re-export-lint.d.ts +26 -26
- package/dist/src/commands/re-export-lint.js +27 -27
- package/dist/src/commands/re-export-options.d.ts +1 -1
- package/dist/src/commands/re-export-options.js +1 -1
- package/dist/src/commands/re-export-register.d.ts +1 -1
- package/dist/src/commands/re-export-register.js +1 -1
- package/dist/src/commands/re-export-scan.d.ts +1 -1
- package/dist/src/commands/re-export-scan.js +7 -7
- package/dist/src/commands/re-export-single.d.ts +1 -1
- package/dist/src/commands/re-export-single.js +20 -20
- package/dist/src/commands/re-export.js +7 -6
- package/dist/src/commands/rebase/abort.js +6 -6
- package/dist/src/commands/rebase/continue.js +8 -7
- package/dist/src/commands/rebase/index.d.ts +1 -1
- package/dist/src/commands/rebase/index.js +3 -3
- package/dist/src/commands/rebase/patch-loop.js +18 -17
- package/dist/src/commands/register.js +5 -5
- package/dist/src/commands/reset.js +1 -1
- package/dist/src/commands/resolve.d.ts +2 -2
- package/dist/src/commands/resolve.js +3 -3
- package/dist/src/commands/run.js +26 -26
- package/dist/src/commands/setup-support.js +4 -4
- package/dist/src/commands/setup.js +1 -1
- package/dist/src/commands/source.js +1 -1
- package/dist/src/commands/status-check.d.ts +3 -3
- package/dist/src/commands/status-check.js +4 -4
- package/dist/src/commands/status-json.d.ts +14 -13
- package/dist/src/commands/status-json.js +9 -8
- package/dist/src/commands/status-output.d.ts +3 -3
- package/dist/src/commands/status-output.js +3 -3
- package/dist/src/commands/status-ownership.d.ts +3 -3
- package/dist/src/commands/status-ownership.js +3 -3
- package/dist/src/commands/status.js +22 -22
- package/dist/src/commands/test-build-phase.d.ts +1 -1
- package/dist/src/commands/test-build-phase.js +17 -17
- package/dist/src/commands/test-diagnose.d.ts +1 -1
- package/dist/src/commands/test-diagnose.js +20 -20
- package/dist/src/commands/test-modes.d.ts +2 -2
- package/dist/src/commands/test-modes.js +4 -4
- package/dist/src/commands/test-run.d.ts +11 -11
- package/dist/src/commands/test-run.js +15 -15
- package/dist/src/commands/test-stale-gate.d.ts +12 -12
- package/dist/src/commands/test-stale-gate.js +13 -13
- package/dist/src/commands/test-verdict.d.ts +6 -6
- package/dist/src/commands/test-verdict.js +11 -11
- package/dist/src/commands/test.d.ts +3 -3
- package/dist/src/commands/test.js +36 -36
- package/dist/src/commands/token-coverage.js +3 -3
- package/dist/src/commands/token-list.js +5 -5
- package/dist/src/commands/token.js +9 -9
- package/dist/src/commands/tree.js +19 -19
- package/dist/src/commands/typecheck.d.ts +6 -6
- package/dist/src/commands/typecheck.js +7 -7
- package/dist/src/commands/verify.d.ts +3 -3
- package/dist/src/commands/verify.js +10 -10
- package/dist/src/commands/watch.js +11 -11
- package/dist/src/commands/wire.js +13 -13
- package/dist/src/core/ast-utils.d.ts +7 -7
- package/dist/src/core/ast-utils.js +8 -8
- package/dist/src/core/branding.d.ts +5 -5
- package/dist/src/core/branding.js +3 -3
- package/dist/src/core/browser-wire.d.ts +1 -1
- package/dist/src/core/browser-wire.js +4 -4
- package/dist/src/core/build-audit-platform.d.ts +6 -6
- package/dist/src/core/build-audit-platform.js +26 -26
- package/dist/src/core/build-audit-registration.d.ts +5 -5
- package/dist/src/core/build-audit-registration.js +7 -7
- package/dist/src/core/build-audit-resolve.d.ts +5 -5
- package/dist/src/core/build-audit-resolve.js +6 -6
- package/dist/src/core/build-audit-skip.d.ts +8 -8
- package/dist/src/core/build-audit-skip.js +12 -12
- package/dist/src/core/build-audit-transforms.d.ts +2 -2
- package/dist/src/core/build-audit-transforms.js +3 -3
- package/dist/src/core/build-audit.d.ts +8 -8
- package/dist/src/core/build-audit.js +39 -37
- package/dist/src/core/build-baseline-types.d.ts +19 -18
- package/dist/src/core/build-baseline-types.js +1 -1
- package/dist/src/core/build-baseline.d.ts +8 -8
- package/dist/src/core/build-baseline.js +14 -14
- package/dist/src/core/build-jar-escalation.d.ts +8 -8
- package/dist/src/core/build-jar-escalation.js +15 -15
- package/dist/src/core/build-overwrite-guard.d.ts +4 -4
- package/dist/src/core/build-overwrite-guard.js +13 -13
- package/dist/src/core/build-prepare.d.ts +4 -4
- package/dist/src/core/build-prepare.js +16 -15
- package/dist/src/core/config-mutate.js +4 -4
- package/dist/src/core/config-state.js +2 -2
- package/dist/src/core/config-validate-build-audit.js +3 -3
- package/dist/src/core/config-validate-file-size.d.ts +1 -1
- package/dist/src/core/config-validate-file-size.js +2 -2
- package/dist/src/core/config-validate.js +8 -9
- package/dist/src/core/config.d.ts +10 -10
- package/dist/src/core/config.js +10 -10
- package/dist/src/core/coverage-extend.d.ts +16 -16
- package/dist/src/core/coverage-extend.js +16 -16
- package/dist/src/core/destructive.d.ts +14 -14
- package/dist/src/core/destructive.js +9 -9
- package/dist/src/core/diff-hunks.d.ts +2 -2
- package/dist/src/core/diff-hunks.js +7 -7
- package/dist/src/core/discard-baseline.d.ts +10 -10
- package/dist/src/core/discard-baseline.js +15 -16
- package/dist/src/core/display-state.d.ts +11 -11
- package/dist/src/core/display-state.js +12 -12
- package/dist/src/core/engine-changes.d.ts +2 -2
- package/dist/src/core/engine-changes.js +2 -2
- package/dist/src/core/engine-precondition.d.ts +4 -4
- package/dist/src/core/engine-precondition.js +2 -2
- package/dist/src/core/engine-session-lock.d.ts +18 -18
- package/dist/src/core/engine-session-lock.js +37 -37
- package/dist/src/core/export-moved-code-shape.d.ts +7 -7
- package/dist/src/core/export-moved-code-shape.js +8 -8
- package/dist/src/core/file-lock-owner.d.ts +11 -11
- package/dist/src/core/file-lock-owner.js +18 -18
- package/dist/src/core/file-lock.d.ts +12 -12
- package/dist/src/core/file-lock.js +52 -39
- package/dist/src/core/firefox-cache.d.ts +1 -1
- package/dist/src/core/firefox-cache.js +10 -10
- package/dist/src/core/firefox-download.d.ts +3 -3
- package/dist/src/core/firefox-download.js +6 -6
- package/dist/src/core/firefox-extract.d.ts +2 -2
- package/dist/src/core/firefox-extract.js +13 -13
- package/dist/src/core/firefox.d.ts +5 -5
- package/dist/src/core/firefox.js +8 -8
- package/dist/src/core/furnace-apply-dry-run.js +1 -1
- package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
- package/dist/src/core/furnace-apply-ftl.js +8 -8
- package/dist/src/core/furnace-apply-helpers.d.ts +9 -9
- package/dist/src/core/furnace-apply-helpers.js +21 -21
- package/dist/src/core/furnace-apply-output.js +1 -1
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
- package/dist/src/core/furnace-apply-overwrite-warn.js +9 -9
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
- package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
- package/dist/src/core/furnace-apply.d.ts +3 -3
- package/dist/src/core/furnace-apply.js +22 -21
- package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
- package/dist/src/core/furnace-checksum-utils.js +5 -5
- package/dist/src/core/furnace-config-custom.d.ts +1 -1
- package/dist/src/core/furnace-config-custom.js +2 -2
- package/dist/src/core/furnace-config-order.js +1 -1
- package/dist/src/core/furnace-config-tokens.d.ts +3 -3
- package/dist/src/core/furnace-config-tokens.js +3 -3
- package/dist/src/core/furnace-config-validate.js +2 -2
- package/dist/src/core/furnace-config.d.ts +4 -4
- package/dist/src/core/furnace-config.js +18 -18
- package/dist/src/core/furnace-constants.d.ts +6 -6
- package/dist/src/core/furnace-constants.js +6 -6
- package/dist/src/core/furnace-css-fragments.d.ts +6 -6
- package/dist/src/core/furnace-css-fragments.js +11 -11
- package/dist/src/core/furnace-dir-entry.d.ts +1 -1
- package/dist/src/core/furnace-dir-entry.js +1 -1
- package/dist/src/core/furnace-jsconfig.d.ts +7 -7
- package/dist/src/core/furnace-jsconfig.js +22 -20
- package/dist/src/core/furnace-operation.d.ts +21 -20
- package/dist/src/core/furnace-operation.js +36 -34
- package/dist/src/core/furnace-precondition.d.ts +10 -10
- package/dist/src/core/furnace-precondition.js +8 -8
- package/dist/src/core/furnace-refresh.js +2 -2
- package/dist/src/core/furnace-registration-ast.d.ts +2 -2
- package/dist/src/core/furnace-registration-ast.js +9 -9
- package/dist/src/core/furnace-registration-remove.d.ts +4 -4
- package/dist/src/core/furnace-registration-remove.js +6 -6
- package/dist/src/core/furnace-registration-validate.d.ts +2 -2
- package/dist/src/core/furnace-registration-validate.js +2 -2
- package/dist/src/core/furnace-registration.d.ts +5 -5
- package/dist/src/core/furnace-registration.js +7 -7
- package/dist/src/core/furnace-rollback.d.ts +1 -1
- package/dist/src/core/furnace-rollback.js +5 -5
- package/dist/src/core/furnace-stale-export.d.ts +17 -16
- package/dist/src/core/furnace-stale-export.js +16 -15
- package/dist/src/core/furnace-staleness.d.ts +2 -2
- package/dist/src/core/furnace-staleness.js +2 -2
- package/dist/src/core/furnace-state-persist.d.ts +10 -10
- package/dist/src/core/furnace-state-persist.js +10 -10
- package/dist/src/core/furnace-step-errors.d.ts +6 -6
- package/dist/src/core/furnace-step-errors.js +6 -6
- package/dist/src/core/furnace-validate-accessibility.js +14 -14
- package/dist/src/core/furnace-validate-compatibility.js +9 -9
- package/dist/src/core/furnace-validate-registration.d.ts +2 -2
- package/dist/src/core/furnace-validate-registration.js +13 -13
- package/dist/src/core/furnace-validate-structure.d.ts +1 -1
- package/dist/src/core/furnace-validate-structure.js +4 -4
- package/dist/src/core/furnace-validate.js +9 -9
- package/dist/src/core/furnace-version-drift.d.ts +5 -5
- package/dist/src/core/furnace-version-drift.js +5 -5
- package/dist/src/core/git-base.d.ts +4 -4
- package/dist/src/core/git-base.js +9 -9
- package/dist/src/core/git-diff-new-file.d.ts +4 -4
- package/dist/src/core/git-diff-new-file.js +8 -8
- package/dist/src/core/git-diff.d.ts +4 -4
- package/dist/src/core/git-diff.js +35 -34
- package/dist/src/core/git-file-ops.d.ts +6 -6
- package/dist/src/core/git-file-ops.js +7 -7
- package/dist/src/core/git-readonly-index.d.ts +12 -12
- package/dist/src/core/git-readonly-index.js +12 -12
- package/dist/src/core/git-status.d.ts +4 -4
- package/dist/src/core/git-status.js +4 -4
- package/dist/src/core/git.d.ts +3 -3
- package/dist/src/core/git.js +14 -14
- package/dist/src/core/harness-orphans.d.ts +17 -17
- package/dist/src/core/harness-orphans.js +20 -20
- package/dist/src/core/history-log.d.ts +3 -3
- package/dist/src/core/history-log.js +3 -3
- package/dist/src/core/license-headers.d.ts +19 -18
- package/dist/src/core/license-headers.js +29 -28
- package/dist/src/core/mach-build-artifacts.d.ts +21 -21
- package/dist/src/core/mach-build-artifacts.js +23 -23
- package/dist/src/core/mach-error-hints.d.ts +5 -5
- package/dist/src/core/mach-error-hints.js +13 -13
- package/dist/src/core/mach-known-noise-filter.d.ts +41 -38
- package/dist/src/core/mach-known-noise-filter.js +53 -50
- package/dist/src/core/mach-mozconfig.d.ts +6 -6
- package/dist/src/core/mach-mozconfig.js +15 -15
- package/dist/src/core/mach-python.d.ts +2 -1
- package/dist/src/core/mach-python.js +4 -3
- package/dist/src/core/mach-resource-shim.d.ts +12 -12
- package/dist/src/core/mach-resource-shim.js +20 -20
- package/dist/src/core/mach.d.ts +23 -23
- package/dist/src/core/mach.js +36 -36
- package/dist/src/core/marionette-port.d.ts +15 -13
- package/dist/src/core/marionette-port.js +34 -31
- package/dist/src/core/marionette-preflight.d.ts +6 -6
- package/dist/src/core/marionette-preflight.js +23 -23
- package/dist/src/core/markdown-table.d.ts +9 -9
- package/dist/src/core/markdown-table.js +14 -14
- package/dist/src/core/mochitest-server-port.d.ts +8 -8
- package/dist/src/core/mochitest-server-port.js +14 -14
- package/dist/src/core/module-resolution-preflight.d.ts +8 -8
- package/dist/src/core/module-resolution-preflight.js +11 -11
- package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
- package/dist/src/core/moz-manifest-helpers.js +7 -7
- package/dist/src/core/moz-manifest-register.d.ts +1 -1
- package/dist/src/core/moz-manifest-register.js +2 -2
- package/dist/src/core/moz-manifest-rules.js +11 -11
- package/dist/src/core/moz-manifest-tokenizers.js +1 -1
- package/dist/src/core/ownership-table.d.ts +5 -5
- package/dist/src/core/ownership-table.js +7 -7
- package/dist/src/core/parser-fallback.d.ts +3 -3
- package/dist/src/core/parser-fallback.js +3 -3
- package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
- package/dist/src/core/patch-apply-fuzz.js +9 -9
- package/dist/src/core/patch-apply.d.ts +9 -9
- package/dist/src/core/patch-apply.js +30 -30
- package/dist/src/core/patch-export-update.d.ts +4 -4
- package/dist/src/core/patch-export-update.js +3 -3
- package/dist/src/core/patch-export.d.ts +10 -10
- package/dist/src/core/patch-export.js +13 -13
- package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
- package/dist/src/core/patch-identifier-suggest.js +4 -4
- package/dist/src/core/patch-lint-binary.d.ts +7 -7
- package/dist/src/core/patch-lint-cache.d.ts +2 -2
- package/dist/src/core/patch-lint-cache.js +13 -13
- package/dist/src/core/patch-lint-checkjs.d.ts +26 -26
- package/dist/src/core/patch-lint-checkjs.js +42 -41
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
- package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
- package/dist/src/core/patch-lint-creators.d.ts +3 -3
- package/dist/src/core/patch-lint-creators.js +3 -3
- package/dist/src/core/patch-lint-cross.d.ts +13 -13
- package/dist/src/core/patch-lint-cross.js +21 -21
- package/dist/src/core/patch-lint-css.d.ts +1 -1
- package/dist/src/core/patch-lint-css.js +5 -5
- package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
- package/dist/src/core/patch-lint-diff-tag.js +5 -5
- package/dist/src/core/patch-lint-diff.d.ts +4 -4
- package/dist/src/core/patch-lint-diff.js +4 -4
- package/dist/src/core/patch-lint-file-size.d.ts +3 -3
- package/dist/src/core/patch-lint-file-size.js +3 -3
- package/dist/src/core/patch-lint-forward-registration.d.ts +4 -4
- package/dist/src/core/patch-lint-forward-registration.js +12 -12
- package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
- package/dist/src/core/patch-lint-jsdoc.js +11 -11
- package/dist/src/core/patch-lint-module-registration.d.ts +1 -1
- package/dist/src/core/patch-lint-module-registration.js +1 -1
- package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
- package/dist/src/core/patch-lint-mozbuild.js +10 -10
- package/dist/src/core/patch-lint-observer.d.ts +3 -3
- package/dist/src/core/patch-lint-observer.js +7 -7
- package/dist/src/core/patch-lint-ownership.d.ts +6 -6
- package/dist/src/core/patch-lint-ownership.js +6 -6
- package/dist/src/core/patch-lint-prettier.d.ts +6 -6
- package/dist/src/core/patch-lint-prettier.js +6 -6
- package/dist/src/core/patch-lint-queue-types.d.ts +1 -1
- package/dist/src/core/patch-lint-queue-types.js +1 -1
- package/dist/src/core/patch-lint-staged-registration.d.ts +2 -2
- package/dist/src/core/patch-lint-staged-registration.js +6 -6
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
- package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
- package/dist/src/core/patch-lint.d.ts +27 -26
- package/dist/src/core/patch-lint.js +48 -46
- package/dist/src/core/patch-lock.d.ts +1 -1
- package/dist/src/core/patch-lock.js +8 -8
- package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
- package/dist/src/core/patch-manifest-consistency.js +16 -17
- package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
- package/dist/src/core/patch-manifest-files-affected.js +3 -3
- package/dist/src/core/patch-manifest-io.d.ts +14 -14
- package/dist/src/core/patch-manifest-io.js +27 -27
- package/dist/src/core/patch-manifest-query.d.ts +1 -1
- package/dist/src/core/patch-manifest-query.js +4 -4
- package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
- package/dist/src/core/patch-manifest-resolve.js +7 -7
- package/dist/src/core/patch-manifest-validate.js +3 -3
- package/dist/src/core/patch-manifest.d.ts +2 -2
- package/dist/src/core/patch-manifest.js +2 -2
- package/dist/src/core/patch-parse.d.ts +14 -14
- package/dist/src/core/patch-parse.js +16 -16
- package/dist/src/core/patch-registration-refs.d.ts +4 -4
- package/dist/src/core/patch-registration-refs.js +7 -7
- package/dist/src/core/patch-transform.d.ts +8 -8
- package/dist/src/core/patch-transform.js +13 -13
- package/dist/src/core/process-cpu-time.d.ts +1 -1
- package/dist/src/core/process-cpu-time.js +5 -5
- package/dist/src/core/rebase-session.d.ts +7 -7
- package/dist/src/core/rebase-session.js +8 -8
- package/dist/src/core/register-result.d.ts +1 -1
- package/dist/src/core/register-result.js +1 -1
- package/dist/src/core/register-scaffold.d.ts +2 -2
- package/dist/src/core/register-scaffold.js +3 -3
- package/dist/src/core/register-shared-css.d.ts +3 -3
- package/dist/src/core/register-shared-css.js +4 -4
- package/dist/src/core/register-xpcshell-test.d.ts +2 -2
- package/dist/src/core/register-xpcshell-test.js +2 -2
- package/dist/src/core/run-log-redact.d.ts +12 -12
- package/dist/src/core/run-log-redact.js +16 -16
- package/dist/src/core/run-log.d.ts +9 -9
- package/dist/src/core/run-log.js +14 -14
- package/dist/src/core/shared-ftl.d.ts +2 -2
- package/dist/src/core/shared-ftl.js +6 -6
- package/dist/src/core/signal-critical.d.ts +2 -2
- package/dist/src/core/signal-critical.js +2 -2
- package/dist/src/core/smoke-patterns.d.ts +5 -5
- package/dist/src/core/smoke-patterns.js +9 -9
- package/dist/src/core/state-file.d.ts +3 -3
- package/dist/src/core/status-binary.d.ts +8 -8
- package/dist/src/core/status-binary.js +12 -12
- package/dist/src/core/status-classify.d.ts +17 -17
- package/dist/src/core/status-classify.js +11 -11
- package/dist/src/core/test-changed-prefs.d.ts +12 -12
- package/dist/src/core/test-changed-prefs.js +15 -15
- package/dist/src/core/test-harness-crash.d.ts +39 -39
- package/dist/src/core/test-harness-crash.js +67 -67
- package/dist/src/core/test-harness-output.d.ts +7 -7
- package/dist/src/core/test-harness-output.js +7 -7
- package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
- package/dist/src/core/test-harness-verdict-notes.js +4 -4
- package/dist/src/core/test-path-scope.d.ts +8 -8
- package/dist/src/core/test-path-scope.js +11 -11
- package/dist/src/core/test-stale-check.d.ts +22 -21
- package/dist/src/core/test-stale-check.js +29 -28
- package/dist/src/core/test-stale-symlink.d.ts +1 -1
- package/dist/src/core/test-stale-symlink.js +1 -1
- package/dist/src/core/test-stall-triage.d.ts +9 -9
- package/dist/src/core/test-stall-triage.js +22 -22
- package/dist/src/core/token-category.d.ts +4 -4
- package/dist/src/core/token-category.js +13 -12
- package/dist/src/core/token-coverage.js +4 -5
- package/dist/src/core/token-dark-mode.d.ts +17 -9
- package/dist/src/core/token-dark-mode.js +41 -28
- package/dist/src/core/token-docs.d.ts +1 -1
- package/dist/src/core/token-inventory.d.ts +6 -6
- package/dist/src/core/token-inventory.js +7 -7
- package/dist/src/core/token-manager.d.ts +3 -3
- package/dist/src/core/token-manager.js +21 -21
- package/dist/src/core/token-scaffold.d.ts +4 -4
- package/dist/src/core/token-scaffold.js +4 -4
- package/dist/src/core/token-variant.d.ts +14 -14
- package/dist/src/core/token-variant.js +32 -32
- package/dist/src/core/toolchain-preflight.d.ts +15 -15
- package/dist/src/core/toolchain-preflight.js +22 -22
- package/dist/src/core/tree-cow.d.ts +3 -3
- package/dist/src/core/tree-cow.js +6 -6
- package/dist/src/core/tree-guard.d.ts +3 -3
- package/dist/src/core/tree-guard.js +23 -23
- package/dist/src/core/tree-store.d.ts +15 -15
- package/dist/src/core/tree-store.js +35 -33
- package/dist/src/core/typecheck-shim.d.ts +16 -15
- package/dist/src/core/typecheck-shim.js +26 -25
- package/dist/src/core/typecheck.d.ts +12 -12
- package/dist/src/core/typecheck.js +31 -31
- package/dist/src/core/wire-destroy.d.ts +2 -2
- package/dist/src/core/wire-destroy.js +5 -5
- package/dist/src/core/wire-dom-fragment.d.ts +3 -3
- package/dist/src/core/wire-dom-fragment.js +6 -6
- package/dist/src/core/wire-init.d.ts +2 -2
- package/dist/src/core/wire-init.js +7 -7
- package/dist/src/core/wire-subscript.d.ts +1 -1
- package/dist/src/core/wire-subscript.js +3 -3
- package/dist/src/core/wire-utils.d.ts +9 -9
- package/dist/src/core/wire-utils.js +11 -11
- package/dist/src/core/xpcshell-appdir.d.ts +20 -20
- package/dist/src/core/xpcshell-appdir.js +26 -26
- package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
- package/dist/src/core/xpcshell-profile-dir.js +7 -7
- package/dist/src/errors/base.d.ts +22 -21
- package/dist/src/errors/base.js +22 -21
- package/dist/src/errors/build.d.ts +6 -6
- package/dist/src/errors/build.js +6 -6
- package/dist/src/errors/codes.d.ts +10 -10
- package/dist/src/errors/codes.js +10 -10
- package/dist/src/errors/furnace.d.ts +2 -2
- package/dist/src/errors/git.d.ts +1 -1
- package/dist/src/errors/git.js +1 -1
- package/dist/src/errors/patch.d.ts +3 -3
- package/dist/src/errors/patch.js +3 -3
- package/dist/src/errors/rebase.d.ts +1 -1
- package/dist/src/errors/rebase.js +1 -1
- package/dist/src/errors/run.d.ts +1 -1
- package/dist/src/errors/run.js +1 -1
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.js +4 -4
- package/dist/src/types/commands/options.d.ts +86 -85
- package/dist/src/types/commands/patches.d.ts +19 -19
- package/dist/src/types/commands/project.d.ts +3 -3
- package/dist/src/types/config.d.ts +24 -23
- package/dist/src/types/furnace.d.ts +17 -17
- package/dist/src/types/json.d.ts +3 -3
- package/dist/src/types/json.js +2 -2
- package/dist/src/types/typecheck.d.ts +3 -3
- package/dist/src/utils/assert.d.ts +1 -1
- package/dist/src/utils/assert.js +6 -6
- package/dist/src/utils/build-info.d.ts +5 -5
- package/dist/src/utils/build-info.js +6 -6
- package/dist/src/utils/child-env.d.ts +5 -5
- package/dist/src/utils/child-env.js +5 -5
- package/dist/src/utils/concurrency.d.ts +2 -2
- package/dist/src/utils/concurrency.js +2 -2
- package/dist/src/utils/elapsed.js +1 -1
- package/dist/src/utils/errors.d.ts +8 -8
- package/dist/src/utils/errors.js +8 -8
- package/dist/src/utils/fs.d.ts +1 -1
- package/dist/src/utils/fs.js +8 -8
- package/dist/src/utils/line-dispatch.d.ts +3 -3
- package/dist/src/utils/line-dispatch.js +5 -5
- package/dist/src/utils/logger.d.ts +4 -4
- package/dist/src/utils/logger.js +11 -11
- package/dist/src/utils/machine-output.js +2 -2
- package/dist/src/utils/options.d.ts +13 -13
- package/dist/src/utils/options.js +20 -20
- package/dist/src/utils/package-root.js +2 -2
- package/dist/src/utils/paths.d.ts +4 -4
- package/dist/src/utils/paths.js +4 -4
- package/dist/src/utils/process-group.d.ts +8 -8
- package/dist/src/utils/process-group.js +19 -19
- package/dist/src/utils/process.d.ts +34 -33
- package/dist/src/utils/process.js +20 -19
- package/dist/src/utils/ps-duration.d.ts +4 -4
- package/dist/src/utils/ps-duration.js +6 -6
- package/dist/src/utils/regex.d.ts +4 -4
- package/dist/src/utils/regex.js +7 -7
- package/dist/src/utils/sleep.d.ts +7 -7
- package/dist/src/utils/sleep.js +7 -7
- package/dist/src/utils/stdio-drain.d.ts +7 -7
- package/dist/src/utils/stdio-drain.js +8 -8
- package/dist/src/utils/validation.d.ts +11 -12
- package/dist/src/utils/validation.js +20 -21
- package/docs/README.md +2 -2
- package/docs/configuration.md +120 -114
- package/docs/exit-codes.md +63 -58
- package/docs/furnace.md +20 -19
- package/docs/lifecycle-invariants.md +412 -251
- package/docs/machine-output.md +33 -32
- package/docs/patch-workflow.md +48 -45
- package/docs/run-logs.md +62 -58
- package/docs/testing.md +101 -101
- package/docs/verification-trees.md +23 -22
- package/package.json +2 -2
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
* Foreign-drift preview + `--refuse-foreign-drift` gate for `re-export`.
|
|
3
3
|
*
|
|
4
4
|
* A scan-less re-export rebuilds each patch body as a whole-file
|
|
5
|
-
* `git diff HEAD` over the owned files
|
|
5
|
+
* `git diff HEAD` over the owned files, so a concurrent session's
|
|
6
6
|
* uncommitted lines inside a file the patch already owns are silently
|
|
7
7
|
* absorbed into the refreshed body. The adjacency advisory
|
|
8
|
-
* (`re-export-adjacent.ts`) warns about unmanaged
|
|
8
|
+
* (`re-export-adjacent.ts`) warns about unmanaged neighbour files but is
|
|
9
9
|
* structurally blind to drift inside owned files. This module compares
|
|
10
10
|
* the old body against the refreshed body per file and reports the
|
|
11
|
-
* payload lines that are about to
|
|
11
|
+
* payload lines that are about to enter the body. Under
|
|
12
12
|
* `--refuse-foreign-drift` the patch is skipped and the run exits
|
|
13
13
|
* non-zero, mirroring `--refuse-adjacent-unmanaged`.
|
|
14
14
|
*
|
|
15
15
|
* "Foreign" is decided by content, not authorship: re-export's legitimate
|
|
16
16
|
* job is capturing intentional engine edits, so the preview always prints
|
|
17
17
|
* and the hard stop is an explicit opt-in for multi-session checkouts.
|
|
18
|
-
* The comparison is offset-insensitive
|
|
19
|
-
* payload lines
|
|
18
|
+
* The comparison is offset-insensitive, using per-file multisets of `+`/`-`
|
|
19
|
+
* payload lines, because a refresh legitimately shifts hunk offsets and
|
|
20
20
|
* context without changing what the patch does.
|
|
21
21
|
*/
|
|
22
22
|
import type { PatchMetadata } from '../types/commands/index.js';
|
|
@@ -55,14 +55,14 @@ export interface FileForeignDrift {
|
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Pure comparison: per owned file, which `+`/`-` payload lines the
|
|
58
|
-
* refreshed body carries that the old body did not. Files
|
|
59
|
-
* `previousFilesAffected` are skipped
|
|
60
|
-
* (`--scan`)
|
|
58
|
+
* refreshed body carries that the old body did not. Files not in
|
|
59
|
+
* `previousFilesAffected` are skipped, since those are intentional
|
|
60
|
+
* adoptions (`--scan`) rather than drift.
|
|
61
61
|
*/
|
|
62
62
|
export declare function computeForeignDrift(oldBody: string, newBody: string, previousFilesAffected: readonly string[]): FileForeignDrift[];
|
|
63
63
|
/**
|
|
64
64
|
* Reads the old body, prints the always-on drift preview (including under
|
|
65
|
-
* dry-run and `--scan`), and
|
|
65
|
+
* dry-run and `--scan`), and, when `ctx.refuseForeignDrift` is set,
|
|
66
66
|
* records a refusal and returns `true` so the caller skips the write.
|
|
67
67
|
*/
|
|
68
68
|
export declare function reportForeignDrift(args: {
|
|
@@ -75,7 +75,7 @@ export declare function reportForeignDrift(args: {
|
|
|
75
75
|
/**
|
|
76
76
|
* Names `--expect` paths that never drifted this run. A typo'd
|
|
77
77
|
* `--expect` path silently degrades the flag back to refusing the slice it
|
|
78
|
-
* was meant to admit, so surface the mismatch
|
|
78
|
+
* was meant to admit, so surface the mismatch, but only as a warning: an
|
|
79
79
|
* expected file legitimately shows no drift in several shapes, all named
|
|
80
80
|
* below.
|
|
81
81
|
*/
|
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
* Foreign-drift preview + `--refuse-foreign-drift` gate for `re-export`.
|
|
4
4
|
*
|
|
5
5
|
* A scan-less re-export rebuilds each patch body as a whole-file
|
|
6
|
-
* `git diff HEAD` over the owned files
|
|
6
|
+
* `git diff HEAD` over the owned files, so a concurrent session's
|
|
7
7
|
* uncommitted lines inside a file the patch already owns are silently
|
|
8
8
|
* absorbed into the refreshed body. The adjacency advisory
|
|
9
|
-
* (`re-export-adjacent.ts`) warns about unmanaged
|
|
9
|
+
* (`re-export-adjacent.ts`) warns about unmanaged neighbour files but is
|
|
10
10
|
* structurally blind to drift inside owned files. This module compares
|
|
11
11
|
* the old body against the refreshed body per file and reports the
|
|
12
|
-
* payload lines that are about to
|
|
12
|
+
* payload lines that are about to enter the body. Under
|
|
13
13
|
* `--refuse-foreign-drift` the patch is skipped and the run exits
|
|
14
14
|
* non-zero, mirroring `--refuse-adjacent-unmanaged`.
|
|
15
15
|
*
|
|
16
16
|
* "Foreign" is decided by content, not authorship: re-export's legitimate
|
|
17
17
|
* job is capturing intentional engine edits, so the preview always prints
|
|
18
18
|
* and the hard stop is an explicit opt-in for multi-session checkouts.
|
|
19
|
-
* The comparison is offset-insensitive
|
|
20
|
-
* payload lines
|
|
19
|
+
* The comparison is offset-insensitive, using per-file multisets of `+`/`-`
|
|
20
|
+
* payload lines, because a refresh legitimately shifts hunk offsets and
|
|
21
21
|
* context without changing what the patch does.
|
|
22
22
|
*/
|
|
23
23
|
import { stat } from 'node:fs/promises';
|
|
@@ -115,9 +115,9 @@ function countExcess(excess) {
|
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
117
117
|
* Pure comparison: per owned file, which `+`/`-` payload lines the
|
|
118
|
-
* refreshed body carries that the old body did not. Files
|
|
119
|
-
* `previousFilesAffected` are skipped
|
|
120
|
-
* (`--scan`)
|
|
118
|
+
* refreshed body carries that the old body did not. Files not in
|
|
119
|
+
* `previousFilesAffected` are skipped, since those are intentional
|
|
120
|
+
* adoptions (`--scan`) rather than drift.
|
|
121
121
|
*/
|
|
122
122
|
export function computeForeignDrift(oldBody, newBody, previousFilesAffected) {
|
|
123
123
|
const owned = new Set(previousFilesAffected);
|
|
@@ -156,7 +156,7 @@ export function computeForeignDrift(oldBody, newBody, previousFilesAffected) {
|
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Reads the old body, prints the always-on drift preview (including under
|
|
159
|
-
* dry-run and `--scan`), and
|
|
159
|
+
* dry-run and `--scan`), and, when `ctx.refuseForeignDrift` is set,
|
|
160
160
|
* records a refusal and returns `true` so the caller skips the write.
|
|
161
161
|
*/
|
|
162
162
|
export async function reportForeignDrift(args) {
|
|
@@ -225,13 +225,13 @@ export async function reportForeignDrift(args) {
|
|
|
225
225
|
/**
|
|
226
226
|
* Splits the drifting files into "you probably wrote this" and "this predates
|
|
227
227
|
* your last export". `--refuse-foreign-drift` calls every absorbed line
|
|
228
|
-
* "foreign"
|
|
229
|
-
* and "foreign" reads as "another session's", which is
|
|
230
|
-
*
|
|
231
|
-
*
|
|
228
|
+
* "foreign", including the operator's own additions from the same session,
|
|
229
|
+
* and "foreign" reads as "another session's", which is the case where
|
|
230
|
+
* proceeding would be wrong. Authorship is unknowable, but recency is not:
|
|
231
|
+
* a file whose mtime is newer than the patch body this run is refreshing
|
|
232
232
|
* changed after the last export, which on a single-operator slice is the
|
|
233
|
-
* operator's own edit. Returns the subset of `files` that qualifies
|
|
234
|
-
* unstattable path is reported as
|
|
233
|
+
* operator's own edit. Returns the subset of `files` that qualifies. An
|
|
234
|
+
* unstattable path is reported as not recently edited, so the cautious
|
|
235
235
|
* wording is the fallback.
|
|
236
236
|
*/
|
|
237
237
|
async function findFilesEditedSinceLastExport(engineDir, patchBodyPath, files) {
|
|
@@ -257,7 +257,7 @@ async function findFilesEditedSinceLastExport(engineDir, patchBodyPath, files) {
|
|
|
257
257
|
}
|
|
258
258
|
/**
|
|
259
259
|
* Fail-closed baseline handling: a missing or unreadable old
|
|
260
|
-
* patch body means the drift comparison
|
|
260
|
+
* patch body means the drift comparison cannot run, so under
|
|
261
261
|
* `--refuse-foreign-drift` the patch is refused rather than written on the
|
|
262
262
|
* strength of a check that never happened. Without the flag this stays the
|
|
263
263
|
* historical advisory skip (the preview is best-effort there).
|
|
@@ -272,28 +272,28 @@ function refuseUnreadableBaseline(ctx, patchFilename, detail) {
|
|
|
272
272
|
return true;
|
|
273
273
|
}
|
|
274
274
|
/**
|
|
275
|
-
* States, verbatim in the notice,
|
|
276
|
-
* against and
|
|
275
|
+
* States, verbatim in the notice, what the `--expect` whitelist is compared
|
|
276
|
+
* against and when. This notice is the only feedback an operator gets that
|
|
277
277
|
* the drift belt looked at the files they named, and a downstream report
|
|
278
278
|
* showed the previous copy actively misleading: it warned "showed no drift"
|
|
279
|
-
* over an edit that
|
|
279
|
+
* over an edit that was captured correctly, and none of the causes it named
|
|
280
280
|
* held, so the operator's only recourse was `grep -c` on the written body.
|
|
281
281
|
*
|
|
282
282
|
* The measurement, stated exactly:
|
|
283
283
|
*
|
|
284
|
-
* -
|
|
285
|
-
* `+`/`-` payload lines the
|
|
284
|
+
* - Compared: for each file already in the patch's `filesAffected`, the
|
|
285
|
+
* `+`/`-` payload lines the refreshed body carries that the old patch
|
|
286
286
|
* body did not (`computeForeignDrift`). It is a content comparison, and
|
|
287
|
-
* it is
|
|
288
|
-
* -
|
|
289
|
-
*
|
|
287
|
+
* it is one-directional: excess in the new body only.
|
|
288
|
+
* - When: per patch, on the body about to be written, before the write.
|
|
289
|
+
* Never against post-write state.
|
|
290
290
|
*
|
|
291
291
|
* The one-directional half is what the earlier copy hid, and it is the
|
|
292
292
|
* cause the report's first shape actually hit: deleting a line from an
|
|
293
|
-
* engine file makes the refreshed body
|
|
294
|
-
* is absorbed, so
|
|
295
|
-
*
|
|
296
|
-
*
|
|
293
|
+
* engine file makes the refreshed body drop that file's `+` line. Nothing
|
|
294
|
+
* is absorbed, so there is no drift to see. The belt exists to catch a
|
|
295
|
+
* concurrent session's edits being silently swallowed into a body, not
|
|
296
|
+
* every difference between two bodies. Stating that is the fix. Widening
|
|
297
297
|
* the comparison would turn every ordinary line removal into a refusal.
|
|
298
298
|
*/
|
|
299
299
|
const EXPECT_MEASUREMENT_NOTE = '--expect is evaluated against CONTENT, before the write: for each file already in the ' +
|
|
@@ -302,7 +302,7 @@ const EXPECT_MEASUREMENT_NOTE = '--expect is evaluated against CONTENT, before t
|
|
|
302
302
|
/**
|
|
303
303
|
* Names `--expect` paths that never drifted this run. A typo'd
|
|
304
304
|
* `--expect` path silently degrades the flag back to refusing the slice it
|
|
305
|
-
* was meant to admit, so surface the mismatch
|
|
305
|
+
* was meant to admit, so surface the mismatch, but only as a warning: an
|
|
306
306
|
* expected file legitimately shows no drift in several shapes, all named
|
|
307
307
|
* below.
|
|
308
308
|
*/
|
|
@@ -19,9 +19,9 @@ import { projectEntryBody } from './patch/entry-projection.js';
|
|
|
19
19
|
* Computes the effective `tier` and `lintIgnore` carrying both the patch's
|
|
20
20
|
* existing values and the CLI flag overrides.
|
|
21
21
|
*
|
|
22
|
-
* Tier resolution: the CLI flag takes precedence
|
|
22
|
+
* Tier resolution: the CLI flag takes precedence. The patch's existing tier
|
|
23
23
|
* is the fallback. Lint-ignore resolution: union of the patch's existing list
|
|
24
|
-
* and the CLI flag values, de-duplicated
|
|
24
|
+
* and the CLI flag values, de-duplicated. An empty result returns `undefined`
|
|
25
25
|
* so the caller can drop the field rather than write an empty array.
|
|
26
26
|
*/
|
|
27
27
|
function resolveEffectiveTierAndLintIgnore(target, options) {
|
|
@@ -110,7 +110,7 @@ async function confirmFilesModeProjection(args) {
|
|
|
110
110
|
title: `Re-export ${target.filename} with --files`,
|
|
111
111
|
summary,
|
|
112
112
|
// A captured deletion still needs the confirmation: the patch will now
|
|
113
|
-
//
|
|
113
|
+
// remove those files wherever it is applied, which is the same class of
|
|
114
114
|
// consequence as shrinking the scope.
|
|
115
115
|
yes: removed.length === 0 && deletedFiles.length === 0 ? true : options.yes === true,
|
|
116
116
|
dryRun: isDryRun,
|
|
@@ -122,13 +122,13 @@ async function confirmFilesModeProjection(args) {
|
|
|
122
122
|
* Splits the requested paths into what can be diffed and what is a deletion.
|
|
123
123
|
*
|
|
124
124
|
* A path absent from disk is one of two very different things, and
|
|
125
|
-
* collapsing them is what made a
|
|
125
|
+
* collapsing them is what made a deletion impossible to capture.
|
|
126
126
|
*
|
|
127
127
|
* Tracked in HEAD: a deletion. `git diff HEAD -- <path>` renders it as a
|
|
128
|
-
* proper `deleted file mode` section, so it
|
|
129
|
-
* comment this replaces claimed the diff "would fail" on any missing path
|
|
130
|
-
* true only for the never-tracked case.) Dropping these produced
|
|
131
|
-
* dangerous shape: a re-export that reported success while writing a patch
|
|
128
|
+
* proper `deleted file mode` section, so it stays in the diff scope. (The
|
|
129
|
+
* comment this replaces claimed the diff "would fail" on any missing path,
|
|
130
|
+
* which is true only for the never-tracked case.) Dropping these produced
|
|
131
|
+
* the dangerous shape: a re-export that reported success while writing a patch
|
|
132
132
|
* whose own file list claimed a path it did not restore, so a fresh clone
|
|
133
133
|
* would apply it and resurrect exactly what the change meant to remove.
|
|
134
134
|
*
|
|
@@ -185,8 +185,8 @@ export async function reExportFilesInPlace(paths, selectedPatches, options, conf
|
|
|
185
185
|
throw new InvalidArgumentError('reExportFilesInPlace called with no --files.', '--files');
|
|
186
186
|
}
|
|
187
187
|
const requested = [...new Set(filesOption)].sort();
|
|
188
|
-
// Stale-furnace-source gate: same refusal as the generic re-export path
|
|
189
|
-
// the projected diff would capture stale deployed copies.
|
|
188
|
+
// Stale-furnace-source gate: same refusal as the generic re-export path,
|
|
189
|
+
// since the projected diff would capture stale deployed copies.
|
|
190
190
|
await enforceFreshFurnaceSources(paths.root, requested, options.allowStaleFurnace === true, 're-export');
|
|
191
191
|
const removed = target.filesAffected.filter((f) => !requested.includes(f));
|
|
192
192
|
const added = requested.filter((f) => !target.filesAffected.includes(f));
|
|
@@ -203,12 +203,11 @@ export async function reExportFilesInPlace(paths, selectedPatches, options, conf
|
|
|
203
203
|
}
|
|
204
204
|
const actualProjectedFiles = extractAffectedFiles(projectedDiff);
|
|
205
205
|
const actualProjectedSet = new Set(actualProjectedFiles);
|
|
206
|
-
// Domain is the
|
|
206
|
+
// Domain is the full requested list, not the diffable subset. When the
|
|
207
207
|
// subset was used, any path filtered out upstream was invisible to this
|
|
208
|
-
// check
|
|
209
|
-
//
|
|
210
|
-
//
|
|
211
|
-
// wrong, so an explicitly named path that produced no hunk is a refusal.
|
|
208
|
+
// check, which is how a dropped deletion slipped through while the run
|
|
209
|
+
// reported success. A patch must do what its own file list claims, so an
|
|
210
|
+
// explicitly named path that produced no hunk is a refusal.
|
|
212
211
|
const noDiffFiles = requested.filter((file) => !actualProjectedSet.has(file));
|
|
213
212
|
if (noDiffFiles.length > 0) {
|
|
214
213
|
throw new InvalidArgumentError(`Refusing to re-export ${target.filename} with --files because ${noDiffFiles.length} requested path${noDiffFiles.length === 1 ? '' : 's'} produced no diff hunks (${noDiffFiles.join(', ')}). ` +
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hoisted + cached lint context for `re-export`.
|
|
3
3
|
*
|
|
4
|
-
* Rebuilding the whole patch-queue context
|
|
4
|
+
* Rebuilding the whole patch-queue context and a fresh queue-wide checkJs
|
|
5
5
|
* TypeScript program for every patch costs tens of seconds of fixed setup
|
|
6
6
|
* per patch, so an N-patch re-export pays it N times. This module:
|
|
7
7
|
*
|
|
8
|
-
* -
|
|
9
|
-
* controller
|
|
10
|
-
* per-patch findings out of it
|
|
11
|
-
* -
|
|
12
|
-
* (`.fireforge/lint-cache/per-patch-v1.json`) across invocations
|
|
8
|
+
* - Builds the queue context and the {@link PerRunCheckJs} program
|
|
9
|
+
* controller once per invocation (`buildReExportLintContext`) and slices
|
|
10
|
+
* per-patch findings out of it.
|
|
11
|
+
* - Reuses the existing per-patch lint result cache
|
|
12
|
+
* (`.fireforge/lint-cache/per-patch-v1.json`) across invocations, since
|
|
13
13
|
* re-export lints the identical input `lint --per-patch` does (the fresh
|
|
14
14
|
* `git diff HEAD` of the owned files), and the key already hashes engine
|
|
15
15
|
* HEAD, per-file content, patch body, config, shims, and ownership, so a
|
|
16
|
-
* repeat single re-export is a warm hit. `--no-cache` opts out
|
|
17
|
-
* checkJs globals are never cached and are emitted once per invocation
|
|
18
|
-
* -
|
|
16
|
+
* repeat single re-export is a warm hit. `--no-cache` opts out. Run-level
|
|
17
|
+
* checkJs globals are never cached and are emitted once per invocation.
|
|
18
|
+
* - Keeps the in-memory queue context honest after each write
|
|
19
19
|
* (`refreshQueueCtxEntry`), so later iterations of an `--all` run lint
|
|
20
20
|
* against the just-refreshed body instead of the stale one.
|
|
21
21
|
*/
|
|
@@ -29,12 +29,12 @@ export interface ReExportLintContext {
|
|
|
29
29
|
projectRoot: string;
|
|
30
30
|
paths: ProjectPaths;
|
|
31
31
|
config: FireForgeConfig;
|
|
32
|
-
/** Whole-queue context, built
|
|
33
|
-
* match `lint --per-patch
|
|
32
|
+
/** Whole-queue context, built with config so the forward-import hints
|
|
33
|
+
* match `lint --per-patch`. Undefined when no patches dir. */
|
|
34
34
|
patchQueueCtx: PatchQueueContext | undefined;
|
|
35
|
-
/** Queue-wide checkJs controller
|
|
35
|
+
/** Queue-wide checkJs controller. Undefined when checkJs is off. */
|
|
36
36
|
checkJs: PerRunCheckJs | undefined;
|
|
37
|
-
/** Per-patch result cache
|
|
37
|
+
/** Per-patch result cache. Undefined under `--no-cache`. */
|
|
38
38
|
cache: PerPatchLintCacheFile | undefined;
|
|
39
39
|
engineHeadSha: string | undefined;
|
|
40
40
|
cacheDirty: boolean;
|
|
@@ -53,20 +53,20 @@ export interface ReExportLintResult {
|
|
|
53
53
|
lintIgnore: string[];
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
|
-
* Lints one re-exported patch body using the hoisted context
|
|
57
|
-
*
|
|
58
|
-
* miss
|
|
56
|
+
* Lints one re-exported patch body using the hoisted context. A cache hit
|
|
57
|
+
* replays the stored issues through the shared reporter and returns `null`.
|
|
58
|
+
* A miss lints with the queue-wide program's pre-attributed slices (or a
|
|
59
59
|
* per-patch build when the fresh diff creates files the hoisted program
|
|
60
|
-
* never saw
|
|
60
|
+
* never saw, the `--scan` adoption case) and returns the payload for
|
|
61
61
|
* {@link storeReExportLintResult}. Throws exactly like `runPatchLint` on
|
|
62
62
|
* errors (unless `skipLint`).
|
|
63
63
|
*
|
|
64
|
-
* The cache key is built over the
|
|
64
|
+
* The cache key is built over the projected metadata (current
|
|
65
65
|
* filesAffected, merged lintIgnore, effective tier) so `--tier` /
|
|
66
|
-
* `--lint-ignore` flags change the key. The entry itself is stored
|
|
67
|
-
* the body write
|
|
68
|
-
* very run is about to rewrite
|
|
69
|
-
* later run
|
|
66
|
+
* `--lint-ignore` flags change the key. The entry itself is stored after
|
|
67
|
+
* the body write, because the key hashes the on-disk `.patch` file that
|
|
68
|
+
* this very run is about to rewrite, so a pre-write store could never
|
|
69
|
+
* match a later run.
|
|
70
70
|
*/
|
|
71
71
|
export declare function lintReExportedPatch(args: {
|
|
72
72
|
lintCtx: ReExportLintContext;
|
|
@@ -79,16 +79,16 @@ export declare function lintReExportedPatch(args: {
|
|
|
79
79
|
patchTier?: 'branding';
|
|
80
80
|
}): Promise<ReExportLintResult | null>;
|
|
81
81
|
/**
|
|
82
|
-
* Stores a fresh lint result
|
|
83
|
-
* just-written `.patch` file and the refreshed queue context
|
|
84
|
-
* a later identical invocation will observe (call
|
|
82
|
+
* Stores a fresh lint result after the body write, keying against the
|
|
83
|
+
* just-written `.patch` file and the refreshed queue context, which is the
|
|
84
|
+
* state a later identical invocation will observe (call
|
|
85
85
|
* {@link refreshQueueCtxEntry} first).
|
|
86
86
|
*/
|
|
87
87
|
export declare function storeReExportLintResult(lintCtx: ReExportLintContext, patchFilename: string, projectedMetadata: PatchMetadata, existingFiles: string[], result: ReExportLintResult): Promise<void>;
|
|
88
88
|
/**
|
|
89
89
|
* Refreshes the in-memory queue entry for a just-rewritten patch so later
|
|
90
90
|
* iterations (and later cache keys) lint against the new body instead of
|
|
91
|
-
* the stale one. The on-disk write is the authority
|
|
91
|
+
* the stale one. The on-disk write is the authority. This mirrors it.
|
|
92
92
|
*/
|
|
93
93
|
export declare function refreshQueueCtxEntry(lintCtx: ReExportLintContext, patchFilename: string, diffContent: string): void;
|
|
94
94
|
/** Persists cache writes and reports reuse, once after the loop. */
|
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Hoisted + cached lint context for `re-export`.
|
|
4
4
|
*
|
|
5
|
-
* Rebuilding the whole patch-queue context
|
|
5
|
+
* Rebuilding the whole patch-queue context and a fresh queue-wide checkJs
|
|
6
6
|
* TypeScript program for every patch costs tens of seconds of fixed setup
|
|
7
7
|
* per patch, so an N-patch re-export pays it N times. This module:
|
|
8
8
|
*
|
|
9
|
-
* -
|
|
10
|
-
* controller
|
|
11
|
-
* per-patch findings out of it
|
|
12
|
-
* -
|
|
13
|
-
* (`.fireforge/lint-cache/per-patch-v1.json`) across invocations
|
|
9
|
+
* - Builds the queue context and the {@link PerRunCheckJs} program
|
|
10
|
+
* controller once per invocation (`buildReExportLintContext`) and slices
|
|
11
|
+
* per-patch findings out of it.
|
|
12
|
+
* - Reuses the existing per-patch lint result cache
|
|
13
|
+
* (`.fireforge/lint-cache/per-patch-v1.json`) across invocations, since
|
|
14
14
|
* re-export lints the identical input `lint --per-patch` does (the fresh
|
|
15
15
|
* `git diff HEAD` of the owned files), and the key already hashes engine
|
|
16
16
|
* HEAD, per-file content, patch body, config, shims, and ownership, so a
|
|
17
|
-
* repeat single re-export is a warm hit. `--no-cache` opts out
|
|
18
|
-
* checkJs globals are never cached and are emitted once per invocation
|
|
19
|
-
* -
|
|
17
|
+
* repeat single re-export is a warm hit. `--no-cache` opts out. Run-level
|
|
18
|
+
* checkJs globals are never cached and are emitted once per invocation.
|
|
19
|
+
* - Keeps the in-memory queue context honest after each write
|
|
20
20
|
* (`refreshQueueCtxEntry`), so later iterations of an `--all` run lint
|
|
21
21
|
* against the just-refreshed body instead of the stale one.
|
|
22
22
|
*/
|
|
@@ -62,26 +62,26 @@ function checkJsFilesInDiff(diffContent, checkJs) {
|
|
|
62
62
|
return files;
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
|
-
* Lints one re-exported patch body using the hoisted context
|
|
66
|
-
*
|
|
67
|
-
* miss
|
|
65
|
+
* Lints one re-exported patch body using the hoisted context. A cache hit
|
|
66
|
+
* replays the stored issues through the shared reporter and returns `null`.
|
|
67
|
+
* A miss lints with the queue-wide program's pre-attributed slices (or a
|
|
68
68
|
* per-patch build when the fresh diff creates files the hoisted program
|
|
69
|
-
* never saw
|
|
69
|
+
* never saw, the `--scan` adoption case) and returns the payload for
|
|
70
70
|
* {@link storeReExportLintResult}. Throws exactly like `runPatchLint` on
|
|
71
71
|
* errors (unless `skipLint`).
|
|
72
72
|
*
|
|
73
|
-
* The cache key is built over the
|
|
73
|
+
* The cache key is built over the projected metadata (current
|
|
74
74
|
* filesAffected, merged lintIgnore, effective tier) so `--tier` /
|
|
75
|
-
* `--lint-ignore` flags change the key. The entry itself is stored
|
|
76
|
-
* the body write
|
|
77
|
-
* very run is about to rewrite
|
|
78
|
-
* later run
|
|
75
|
+
* `--lint-ignore` flags change the key. The entry itself is stored after
|
|
76
|
+
* the body write, because the key hashes the on-disk `.patch` file that
|
|
77
|
+
* this very run is about to rewrite, so a pre-write store could never
|
|
78
|
+
* match a later run.
|
|
79
79
|
*/
|
|
80
80
|
export async function lintReExportedPatch(args) {
|
|
81
81
|
const { lintCtx, patch, projectedMetadata, existingFiles, diffContent } = args;
|
|
82
82
|
const { paths, config, patchQueueCtx, checkJs, cache } = lintCtx;
|
|
83
|
-
// Tier notice, identical to runPatchLint's head
|
|
84
|
-
// cached and fresh paths so the governing tier is never silent.
|
|
83
|
+
// Tier notice, identical to runPatchLint's head. It is surfaced on both
|
|
84
|
+
// the cached and fresh paths so the governing tier is never silent.
|
|
85
85
|
const tierDecision = resolvePatchSizeTier(existingFiles, args.patchTier);
|
|
86
86
|
if (tierDecision.tier === 'branding') {
|
|
87
87
|
info(tierDecision.source === 'explicit'
|
|
@@ -126,8 +126,8 @@ export async function lintReExportedPatch(args) {
|
|
|
126
126
|
}
|
|
127
127
|
else {
|
|
128
128
|
// Fresh `--scan` adoption created checkJs-relevant files the hoisted
|
|
129
|
-
// program has never seen
|
|
130
|
-
// usual report scope
|
|
129
|
+
// program has never seen, so fall back to a per-patch build with the
|
|
130
|
+
// usual report scope and nothing is silently unchecked.
|
|
131
131
|
lintOptions.checkJsReportScope = resolvePatchOwnedSysMjs(detectNewFilesInDiff(diffContent));
|
|
132
132
|
}
|
|
133
133
|
}
|
|
@@ -149,9 +149,9 @@ export async function lintReExportedPatch(args) {
|
|
|
149
149
|
};
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
152
|
-
* Stores a fresh lint result
|
|
153
|
-
* just-written `.patch` file and the refreshed queue context
|
|
154
|
-
* a later identical invocation will observe (call
|
|
152
|
+
* Stores a fresh lint result after the body write, keying against the
|
|
153
|
+
* just-written `.patch` file and the refreshed queue context, which is the
|
|
154
|
+
* state a later identical invocation will observe (call
|
|
155
155
|
* {@link refreshQueueCtxEntry} first).
|
|
156
156
|
*/
|
|
157
157
|
export async function storeReExportLintResult(lintCtx, patchFilename, projectedMetadata, existingFiles, result) {
|
|
@@ -182,7 +182,7 @@ export async function storeReExportLintResult(lintCtx, patchFilename, projectedM
|
|
|
182
182
|
/**
|
|
183
183
|
* Refreshes the in-memory queue entry for a just-rewritten patch so later
|
|
184
184
|
* iterations (and later cache keys) lint against the new body instead of
|
|
185
|
-
* the stale one. The on-disk write is the authority
|
|
185
|
+
* the stale one. The on-disk write is the authority. This mirrors it.
|
|
186
186
|
*/
|
|
187
187
|
export function refreshQueueCtxEntry(lintCtx, patchFilename, diffContent) {
|
|
188
188
|
const ctx = lintCtx.patchQueueCtx;
|
|
@@ -198,7 +198,7 @@ export function refreshQueueCtxEntry(lintCtx, patchFilename, diffContent) {
|
|
|
198
198
|
const modifiedFileAdditions = new Map();
|
|
199
199
|
for (const [file, lines] of addedLinesByFile) {
|
|
200
200
|
if (newFilePaths.has(file)) {
|
|
201
|
-
// A created file's content
|
|
201
|
+
// A created file's content is its added lines.
|
|
202
202
|
newFiles.set(file, lines.join('\n'));
|
|
203
203
|
}
|
|
204
204
|
else {
|
|
@@ -11,7 +11,7 @@ export interface NormalizedReExportArguments {
|
|
|
11
11
|
* `re-export <patch> --files`. Commander's `--files <paths>` consumes one
|
|
12
12
|
* comma-separated value, so `re-export 006-x --files a/b.js c/d.js` parks
|
|
13
13
|
* `c/d.js` in the positional patches and fails with "--files operates on
|
|
14
|
-
* exactly one target patch"
|
|
14
|
+
* exactly one target patch", pointing at the wrong argument. When every
|
|
15
15
|
* positional beyond the first looks like a file path, fold them into the
|
|
16
16
|
* file list.
|
|
17
17
|
*/
|
|
@@ -14,7 +14,7 @@ function looksLikeFilePath(value) {
|
|
|
14
14
|
* `re-export <patch> --files`. Commander's `--files <paths>` consumes one
|
|
15
15
|
* comma-separated value, so `re-export 006-x --files a/b.js c/d.js` parks
|
|
16
16
|
* `c/d.js` in the positional patches and fails with "--files operates on
|
|
17
|
-
* exactly one target patch"
|
|
17
|
+
* exactly one target patch", pointing at the wrong argument. When every
|
|
18
18
|
* positional beyond the first looks like a file path, fold them into the
|
|
19
19
|
* file list.
|
|
20
20
|
*/
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Split out of `re-export.ts`, which was otherwise over the per-file line
|
|
5
5
|
* cap. The split direction matches the existing `re-export-scan.ts` /
|
|
6
|
-
* `re-export-options.ts` boundary
|
|
6
|
+
* `re-export-options.ts` boundary. Folding `re-export-files.ts` back into
|
|
7
7
|
* the orchestrator would go the wrong way.
|
|
8
8
|
*/
|
|
9
9
|
import { Command } from 'commander';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Split out of `re-export.ts`, which was otherwise over the per-file line
|
|
6
6
|
* cap. The split direction matches the existing `re-export-scan.ts` /
|
|
7
|
-
* `re-export-options.ts` boundary
|
|
7
|
+
* `re-export-options.ts` boundary. Folding `re-export-files.ts` back into
|
|
8
8
|
* the orchestrator would go the wrong way.
|
|
9
9
|
*/
|
|
10
10
|
import { Command, Option } from 'commander';
|
|
@@ -30,7 +30,7 @@ export declare function confirmBroadScanAdditions(args: {
|
|
|
30
30
|
}): Promise<boolean>;
|
|
31
31
|
/**
|
|
32
32
|
* Refuses scan adoptions whose candidate files import modules created by
|
|
33
|
-
*
|
|
33
|
+
* later patches. Modeled on the `re-export --files` cross-patch
|
|
34
34
|
* projection: the candidates' diffs are projected into the adopting
|
|
35
35
|
* patch's queue entry, the queue lint runs baseline vs projection, and
|
|
36
36
|
* only forward-import regressions attributable to the candidates block.
|
|
@@ -57,10 +57,10 @@ async function scanPatchFiles(args) {
|
|
|
57
57
|
discoveredFiles.add(f);
|
|
58
58
|
}
|
|
59
59
|
// Git pathspecs recurse, so a claimed file in a shallow directory would
|
|
60
|
-
// sweep entire subtrees into the candidate set
|
|
60
|
+
// sweep entire subtrees into the candidate set: with several patches
|
|
61
61
|
// sharing a parent directory, every unmanaged file in the tree gets
|
|
62
62
|
// offered to whichever patch is scanned first. Constrain the broad scan
|
|
63
|
-
// to the patch's exact directory footprint
|
|
63
|
+
// to the patch's exact directory footprint. Deeper paths need an
|
|
64
64
|
// explicit --scan-file / --scan-files assignment.
|
|
65
65
|
const parentDirSet = new Set(parentDirs);
|
|
66
66
|
const currentSet = new Set(currentFilesAffected);
|
|
@@ -78,7 +78,7 @@ async function scanPatchFilesTargeted(args) {
|
|
|
78
78
|
// Phase-split for bounded concurrency: the sync claimed-by-others check
|
|
79
79
|
// first (first offender in argument order, as before), then pooled
|
|
80
80
|
// existence probes with the refusal chosen by ordered iteration so the
|
|
81
|
-
//
|
|
81
|
+
// first missing file in argument order is named deterministically.
|
|
82
82
|
for (const file of scanFiles) {
|
|
83
83
|
if (claimedByOthers.has(file)) {
|
|
84
84
|
throw new InvalidArgumentError(`--scan-file path is already claimed by another patch: ${file}`, '--scan-file');
|
|
@@ -99,12 +99,12 @@ async function scanPatchFilesTargeted(args) {
|
|
|
99
99
|
return reportScanResult(currentFilesAffected, patchFilename, isDryRun, added.sort(), removed);
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
|
-
* Paths that have genuinely left the patch's ownership: absent from disk
|
|
102
|
+
* Paths that have genuinely left the patch's ownership: absent from disk and
|
|
103
103
|
* untracked in engine HEAD.
|
|
104
104
|
*
|
|
105
|
-
* An absent path that
|
|
105
|
+
* An absent path that is tracked in HEAD is a deletion, not a de-ownership.
|
|
106
106
|
* The diff carries it as a `deleted file mode` section, so it must stay in
|
|
107
|
-
* `filesAffected
|
|
107
|
+
* `filesAffected`. Pruning it desynchronises the manifest from the patch
|
|
108
108
|
* body in the direction that hurts: the body says "delete this file", the
|
|
109
109
|
* file list says the patch has nothing to do with it.
|
|
110
110
|
*/
|
|
@@ -161,7 +161,7 @@ function scanAdditionsNeedConfirmation(added) {
|
|
|
161
161
|
}
|
|
162
162
|
/**
|
|
163
163
|
* Refuses scan adoptions whose candidate files import modules created by
|
|
164
|
-
*
|
|
164
|
+
* later patches. Modeled on the `re-export --files` cross-patch
|
|
165
165
|
* projection: the candidates' diffs are projected into the adopting
|
|
166
166
|
* patch's queue entry, the queue lint runs baseline vs projection, and
|
|
167
167
|
* only forward-import regressions attributable to the candidates block.
|
|
@@ -33,7 +33,7 @@ export interface ReExportSinglePatchArgs {
|
|
|
33
33
|
* Retries a single patch re-export exactly once when the failure is
|
|
34
34
|
* transient git `index.lock` contention (an external git process holding
|
|
35
35
|
* the engine repo's index). The retry re-enters `reExportSinglePatch`
|
|
36
|
-
* from the top, so it re-reads clean state
|
|
36
|
+
* from the top, so it re-reads clean state. A second lock failure
|
|
37
37
|
* propagates to the loop's honest "N of M" accounting.
|
|
38
38
|
*/
|
|
39
39
|
export declare function reExportSinglePatchWithIndexLockRetry(args: ReExportSinglePatchArgs): Promise<boolean>;
|