test(#1970): consolidate 61 install-suite regression tests into function suites

Fold 61 issue-named install/codex/runtime regression files into the canonical
test file that owns each subject-under-test, preserving every assertion and its
origin issue number as provenance (block-scoped describe wrappers, zero assertion
loss — 652 subtests conserved 1:1). Routes:

- codex-config.test.cjs        +19 (codex config/toml/hooks/adapter/skill surface)
- install.test.cjs             +18 (node-runner norm, manifest, arg parse, finishInstall)
- install-runtime-artifacts    +13 (per-runtime conversion + emission)
- install-minimal-hooks        +6  (hook-event dialects + guards)
- path-replacement             +2  (opencode absolute pathPrefix)
- install-write-confinement    +2  (pristine dir writes)
- install-regressions          +1  (user-artifact preservation)

Removes 61 tests/ files → 61 fewer CI processes. Regenerates the regression-name
allowlist (271→222), ratchets the file-count allowlist (config 10→9, install 12→9),
and makes 13 relocated allow-test-rule exemptions issue-ref-compliant (ADR-456;
prunes 13 stale allowlist ids). Repoints ADR-0009's moved-test list. lint:ci green.

Part of epic #1969. Closes #1970.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-07-03 00:31:17 -04:00
parent 15482346ff
commit 4f779eda43
72 changed files with 16020 additions and 15476 deletions

View File

@@ -19,7 +19,6 @@
"tests/bug-17-askuserquestion-option-cap.test.cjs :: source-text-is-the-product",
"tests/bug-170-workflow-fallback-install-hint.test.cjs :: workflow markdown is shipped product text; this test validates fallback hint literals across all workflow files",
"tests/bug-1891-file-resolution.test.cjs :: structural-implementation-guard",
"tests/bug-1924-preserve-user-artifacts.test.cjs :: source-text-is-the-product",
"tests/bug-1967-cache-invalidation.test.cjs :: source-text-is-the-product",
"tests/bug-211-launcher-home-fallback.test.cjs :: structural/behavioral regression for the ~/.claude fallback arm in",
"tests/bug-2136-sh-hook-version.test.cjs :: structural-regression-guard",
@@ -44,13 +43,10 @@
"tests/bug-2559-stale-search-year.test.cjs :: source-text-is-the-product",
"tests/bug-2661-roadmap-sync-parallel.test.cjs :: source-text-is-the-product",
"tests/bug-2686-review-fix-worktree.test.cjs :: source-text-is-the-product",
"tests/bug-2698-crlf-install.test.cjs :: source-text-is-the-product",
"tests/bug-2770-annotate-deps-int-coerce.test.cjs :: source-text-is-the-product",
"tests/bug-2772-gitmodules-path-intersection.test.cjs :: source-text-is-the-product",
"tests/bug-2784-update-cache-clear-path.test.cjs :: structural-regression-guard",
"tests/bug-279-codex-agent-mapping.test.cjs :: source-text-is-the-product [adapter header contract in bin/install.js]",
"tests/bug-2808-skill-hyphen-name.test.cjs :: source-text-is-the-product",
"tests/bug-2831-opencode-home-path-prefix.test.cjs :: source-text-is-the-product",
"tests/bug-2839-review-fix-transactional-cleanup.test.cjs :: source-text-is-the-product",
"tests/bug-2948-spike-wrap-up-dispatch.test.cjs :: source-text-is-the-product",
"tests/bug-2949-sketch-wrap-up-dispatch.test.cjs :: source-text-is-the-product",
@@ -85,7 +81,6 @@
"tests/bug-3521-quick-cleanup-cwd-pin.test.cjs :: source-text-is-the-product",
"tests/bug-3523-cjs-loadconfig-branching-strategy-warning.test.cjs :: validates runtime CLI stdout/stderr warning behavior, not source grep",
"tests/bug-3542-executor-git-stash-prohibition.test.cjs :: source-text-is-the-product",
"tests/bug-3582-codex-skills-materialized.test.cjs :: source-text-is-the-product",
"tests/bug-3605-stale-research-insert-phase-agent-refs.test.cjs :: source-text-is-the-product",
"tests/bug-3628-bundled-hook-classifier-whitelist.test.cjs :: architectural-invariant",
"tests/bug-3657-verify-reapply-patches-pristine-drift.test.cjs :: source-text-is-the-product.",
@@ -108,7 +103,6 @@
"tests/bug-444-resolver-local-claude-install.test.cjs :: structural/behavioral regression for the repo-local .claude/ install",
"tests/bug-474-clock-seam-date-determinism.test.cjs :: source-text-is-the-product",
"tests/bug-503-update-agent-antigravity-detection.test.cjs :: source-text-is-the-product",
"tests/bug-570-codex-leak-scanner.test.cjs :: source-text-is-the-product",
"tests/bug-571-doc-writer-fix-mode-edit-only.test.cjs :: source-text-is-the-product",
"tests/bug-619-codebase-drift-gate-shim.test.cjs :: source-text-is-the-product",
"tests/bug-621-plan-phase-gap-analysis-gsd-run.test.cjs :: source-text-is-the-product",
@@ -117,8 +111,6 @@
"tests/bug-637-workflow-no-hardcoded-home-tool.test.cjs :: source-text-is-the-product",
"tests/bug-685-windowshide-spawn.test.cjs :: source-text-is-the-product",
"tests/bug-687-agy-timeout.test.cjs :: source-text-is-the-product",
"tests/bug-704-codex-launcher-path-corruption.test.cjs :: source-text-is-the-product",
"tests/bug-851-codex-quick-adapter-agent-type-fallback.test.cjs :: source-text-is-the-product",
"tests/bug-891-non-claude-runtime-home-fallback.test.cjs :: structural/behavioral regression for non-Claude runtime-home",
"tests/bug-924-claude-flat-skill-layout.test.cjs :: source-text-is-the-product",
"tests/bug-936-no-nested-spawner-wrap.test.cjs :: source-text-is-the-product",
@@ -126,7 +118,6 @@
"tests/bug-950-quick-summary-status-complete.test.cjs :: source-text-is-the-product",
"tests/bug-967-verify-key-links-strict-paths.test.cjs :: <runtime-contract-is-the-product> the plan-md.md reference",
"tests/bug-967-verify-key-links-strict-paths.test.cjs :: <runtime-contract-is-the-product> the plan-md.md reference example IS the documented authoring surface for key_links; asserting it uses a file path (not an endpoint) directly tests the documented contract.",
"tests/bug-983-trae-windsurf-claude-path-leak.test.cjs :: source-text-is-the-product",
"tests/bug-patterns-reference.test.cjs :: source-text-is-the-product",
"tests/chain-flag-plan-phase.test.cjs :: source-text-is-the-product",
"tests/changeset-cli.test.cjs :: reads a product workflow .md file (not CJS source) to verify",
@@ -180,14 +171,11 @@
"tests/enh-3209-plan-phase-ingest-adr.test.cjs :: source-text-is-the-product",
"tests/enh-48-cwd-drift-guard-e2e.test.cjs :: integration-test-input",
"tests/enh-72-business-context.test.cjs :: source-text-is-the-product",
"tests/enh-769-context-fork-effort.install.test.cjs :: integration-test-input",
"tests/enh-770-claude-hook-events.test.cjs :: runtime-contract-is-the-product — hooks.json IS the",
"tests/enh-770-claude-hook-events.test.cjs :: runtime-contract-is-the-product — the hookEventName is",
"tests/enh-770-claude-hook-events.test.cjs :: runtime-contract-is-the-product — the stamp template token",
"tests/enh-770-claude-hook-events.test.cjs :: runtime-contract-is-the-product — the stdin-read and",
"tests/enh-773-codex-exec-automation-flags.test.cjs :: source-text-is-the-product",
"tests/enh-778-cross-runtime-command-enrichment.test.cjs :: source-text-is-the-product",
"tests/enh-789-codebuddy-commands.test.cjs :: source-text-is-the-product",
"tests/eslint-rules.test.cjs :: <source-grep reason> must still error",
"tests/eslint-rules.test.cjs :: pending migration",
"tests/eslint-rules.test.cjs :: source-text-is-the-product",
@@ -207,7 +195,6 @@
"tests/feat-3210-fallow-integration.test.cjs :: source-text-is-the-product",
"tests/feat-3210-fallow-integration.test.cjs :: source-text-is-the-product — code-review.md IS the workflow the orchestrator",
"tests/feat-3309-human-verify-mode.test.cjs :: source-text-is-the-product",
"tests/feat-443-effort-install-wiring.install.test.cjs :: integration-test-input",
"tests/feat-488-effort-sync.test.cjs :: structural-regression-guard — readFileSync asserts on installed agent .md files (the product under mutation) to verify dry-run safety and apply correctness; stderr.includes guards the CLI argument-rejection contract.",
"tests/fix-3722-execute-phase-human-needed-checkpoint.test.cjs :: source-text-is-the-product",
"tests/forensics.test.cjs :: source-text-is-the-product",

View File

@@ -1,6 +1,5 @@
[
"bug-10-semver-policy-consolidation.test.cjs",
"bug-130-finishinstall-opencode-testmode.test.cjs",
"bug-131-release-tarball-smoke-explicit-home.test.cjs",
"bug-1367-claude-local-flat-command-layout.test.cjs",
"bug-14-progress-auto-flag-dropped.test.cjs",
@@ -8,11 +7,8 @@
"bug-1695-state-patch-clobbers-phase-name.test.cjs",
"bug-17-askuserquestion-option-cap.test.cjs",
"bug-170-workflow-fallback-install-hint.test.cjs",
"bug-1736-local-install-commands.test.cjs",
"bug-1754-js-hook-guard.test.cjs",
"bug-1760-state-prune-noop-template-field.test.cjs",
"bug-1761-state-sync-wrong-progress.test.cjs",
"bug-1817-sh-hook-guard.test.cjs",
"bug-1818-unknown-flags.test.cjs",
"bug-1826-phases-clear-confirm.test.cjs",
"bug-1829-inherit-model-profile.test.cjs",
@@ -20,8 +16,6 @@
"bug-1891-file-resolution.test.cjs",
"bug-190-bridge-collapse.test.cjs",
"bug-1906-hook-relative-paths.test.cjs",
"bug-1908-uninstall-manifest.test.cjs",
"bug-1924-preserve-user-artifacts.test.cjs",
"bug-1967-cache-invalidation.test.cjs",
"bug-1974-context-exhaustion-record.test.cjs",
"bug-2002-offer-next-context.test.cjs",
@@ -33,19 +27,15 @@
"bug-214-writer-agents-write-truncation-contract.test.cjs",
"bug-222-research-synthesizer-write-contract.test.cjs",
"bug-224-pick-stdout-capture.test.cjs",
"bug-2248-local-install-statusline.test.cjs",
"bug-2256-model-overrides-transport.test.cjs",
"bug-2268-parallel-discuss.test.cjs",
"bug-2344-read-guard-claudecode-env.test.cjs",
"bug-2346-agent-read-loop-guards.test.cjs",
"bug-2351-intel-kilo-layout.test.cjs",
"bug-2376-opencode-windows-home-path.test.cjs",
"bug-2384-post-merge-deletion-audit.test.cjs",
"bug-2388-plan-phase-no-branch-rename.test.cjs",
"bug-2396-makefile-test-priority.test.cjs",
"bug-2399-commit-docs-plan-phase.test.cjs",
"bug-2410-stream-checkpoint-heartbeats.test.cjs",
"bug-2418-antigravity-bare-path.test.cjs",
"bug-2419-project-researcher-agent.test.cjs",
"bug-2421-planner-grep-gate-hygiene.test.cjs",
"bug-2424-reapply-patches-baseline-detection.test.cjs",
@@ -62,7 +52,6 @@
"bug-2523-quick-deferred-items.test.cjs",
"bug-2530-valid-config-keys.test.cjs",
"bug-2543-gsd-slash-namespace.test.cjs",
"bug-2545-copilot-unreplaced-paths.test.cjs",
"bug-2549-2550-2552-discuss-phase-context.test.cjs",
"bug-2554-decimal-phase-filter.test.cjs",
"bug-2557-gemini-local-hook-paths.test.cjs",
@@ -72,24 +61,17 @@
"bug-261-worktree-force-add-guard.test.cjs",
"bug-2630-state-frontmatter-milestone-switch.test.cjs",
"bug-2638-sub-repos-canonical-location.test.cjs",
"bug-2643-skill-frontmatter-name.test.cjs",
"bug-2659-audit-open-crash.test.cjs",
"bug-2660-one-liner-extraction.test.cjs",
"bug-2661-roadmap-sync-parallel.test.cjs",
"bug-2686-review-fix-worktree.test.cjs",
"bug-2698-crlf-install.test.cjs",
"bug-2760-codex-install-defensive.test.cjs",
"bug-2769-requirements-header-variants.test.cjs",
"bug-2770-annotate-deps-int-coerce.test.cjs",
"bug-2771-user-profile-manifest.test.cjs",
"bug-2772-gitmodules-path-intersection.test.cjs",
"bug-2784-update-cache-clear-path.test.cjs",
"bug-279-codex-agent-mapping.test.cjs",
"bug-2794-opencode-model-profile-overrides.test.cjs",
"bug-2798-context-window-config-key.test.cjs",
"bug-2801-ingest-docs-handler.test.cjs",
"bug-2808-skill-hyphen-name.test.cjs",
"bug-2831-opencode-home-path-prefix.test.cjs",
"bug-2836-audit-open-summary-uat-drift.test.cjs",
"bug-2838-summary-rescue-gitignored-planning.test.cjs",
"bug-2839-review-fix-transactional-cleanup.test.cjs",
@@ -105,20 +87,14 @@
"bug-2949-sketch-wrap-up-dispatch.test.cjs",
"bug-2950-stale-command-refs.test.cjs",
"bug-2954-help-md-slash-command-stubs.test.cjs",
"bug-2957-claude-global-postinstall-message.test.cjs",
"bug-2969-verify-reapply-patches.test.cjs",
"bug-2973-profile-user-skills-path.test.cjs",
"bug-2979-hook-absolute-node.test.cjs",
"bug-2986-config-schema-mutation-killers.test.cjs",
"bug-2990-code-fixer-worktree-branch.test.cjs",
"bug-2992-check-latest-version.test.cjs",
"bug-2994-verify-reapply-patches-installed-path.test.cjs",
"bug-2995-post-install-script-paths.test.cjs",
"bug-2998-pristine-dir-populated.test.cjs",
"bug-3017-codex-hook-absolute-node.test.cjs",
"bug-3018-codex-discuss-fallback.test.cjs",
"bug-3019-help-passthrough.test.cjs",
"bug-3037-gemini-duplicate-commands.test.cjs",
"bug-3050-update-backup-eacces-nonfatal.test.cjs",
"bug-3054-stale-gsd-next-references.test.cjs",
"bug-3072-optional-sketch-findings-guard.test.cjs",
@@ -138,7 +114,6 @@
"bug-3156-plan-phase-opencode-dispatch.test.cjs",
"bug-3163-codex-agents-md.test.cjs",
"bug-3168-task-to-agent-rename.test.cjs",
"bug-3181-node-cellar-path.test.cjs",
"bug-3195-quick-resurrection-guard.test.cjs",
"bug-3197-gsd-tools-config-whitelist.test.cjs",
"bug-321-config-defaults-clone-strategy.test.cjs",
@@ -147,28 +122,19 @@
"bug-3236-capture-seed-one-shot.test.cjs",
"bug-3242-state-update-progress-trample.test.cjs",
"bug-3243-dotted-command-form.test.cjs",
"bug-3245-codex-toml-floats.test.cjs",
"bug-3257-nested-plans-undercount.test.cjs",
"bug-3258-no-stale-gsd-intel-references.test.cjs",
"bug-3275-fmstr-non-string-scalars.test.cjs",
"bug-3285-codex-hooks-state-allowed.test.cjs",
"bug-3286-state-write-routing.test.cjs",
"bug-3288-model-catalog-install-path.test.cjs",
"bug-3290-intel-updater-layout-block.test.cjs",
"bug-33-settings-model-profile-adaptive.test.cjs",
"bug-3320-planner-deep-work-rules.test.cjs",
"bug-3321-verifier-runs-probes.test.cjs",
"bug-3346-codex-aot-toml-key.test.cjs",
"bug-3357-codex-legacy-hooks-json-migration.test.cjs",
"bug-3360-codex-execute-phase-worktrees.test.cjs",
"bug-338-local-install-settings-local-json.test.cjs",
"bug-3381-verify-work-workstream.test.cjs",
"bug-3384-secondary-defects.test.cjs",
"bug-3407-pristine-stale-content.test.cjs",
"bug-3413-shell-command-projection.test.cjs",
"bug-3418-progress-flag-routing.test.cjs",
"bug-3426-codex-windows-hooks.test.cjs",
"bug-3427-3433-codex-install-shape.test.cjs",
"bug-3430-planner-phase-contract.test.cjs",
"bug-3431-debug-command-yaml.test.cjs",
"bug-3441-path-action-projection.test.cjs",
@@ -185,10 +151,6 @@
"bug-3537-padded-id-against-unpadded-roadmap.test.cjs",
"bug-3541-installer-migration-prompt-user-resolution.test.cjs",
"bug-3542-executor-git-stash-prohibition.test.cjs",
"bug-3562-codex-install-skill-surface.test.cjs",
"bug-3566-codex-hooks-feature-canonical-key.test.cjs",
"bug-3571-configuration-manifest-install-path.test.cjs",
"bug-3582-codex-skills-materialized.test.cjs",
"bug-3584-runtime-slash-emitters.test.cjs",
"bug-3584-runtime-slash-formatter.test.cjs",
"bug-3588-npm-audit-clean.test.cjs",
@@ -214,17 +176,13 @@
"bug-3727-code-review-fix-flag-dispatch.test.cjs",
"bug-3735-profiles-core-includes-surface.test.cjs",
"bug-3739-gap-checker-padded-prefix-context.test.cjs",
"bug-376-claude-js-hook-gsd-rewriter.test.cjs",
"bug-378-update-check-scoped-name.test.cjs",
"bug-3784-gsd-settings-model-profile-ui-omits-adaptive.test.cjs",
"bug-3805-fast-md-log-to-state-schema.test.cjs",
"bug-3808-codex-adapter-text-mode-fallback.test.cjs",
"bug-3810-no-gsd-sdk-runtime-refs.test.cjs",
"bug-384-agents-runtime-aware.test.cjs",
"bug-397-state-preserve-executor-authored.test.cjs",
"bug-410-install-defaults-test-mode-guard.test.cjs",
"bug-416-archive-dir-null.test.cjs",
"bug-442-config-dir-equals-in-path.test.cjs",
"bug-444-resolver-local-claude-install.test.cjs",
"bug-447-gap-analysis-phase-req-ids.test.cjs",
"bug-474-clock-seam-date-determinism.test.cjs",
@@ -232,10 +190,8 @@
"bug-500-planned-phase-progress-corruption.test.cjs",
"bug-501-flat-phase-details-milestone-leak.test.cjs",
"bug-503-update-agent-antigravity-detection.test.cjs",
"bug-505-remove-dead-sdk-verification.test.cjs",
"bug-549-total-phases-overcounts-with-phase-section-heading.test.cjs",
"bug-557-details-summary-milestone-strip.test.cjs",
"bug-570-codex-leak-scanner.test.cjs",
"bug-571-doc-writer-fix-mode-edit-only.test.cjs",
"bug-580-local-sh-hook-bash-wrapper.test.cjs",
"bug-619-codebase-drift-gate-shim.test.cjs",
@@ -247,11 +203,8 @@
"bug-663-redos-roadmap-phase-parsing.test.cjs",
"bug-685-windowshide-spawn.test.cjs",
"bug-687-agy-timeout.test.cjs",
"bug-704-codex-launcher-path-corruption.test.cjs",
"bug-730-milestone-phase-details-scope.test.cjs",
"bug-782-cline-skills-emission.test.cjs",
"bug-783-kilo-global-skills-base.test.cjs",
"bug-851-codex-quick-adapter-agent-type-fallback.test.cjs",
"bug-853-bg-dispatch-runtime-gating.test.cjs",
"bug-866-profile-pipeline-temp-root.test.cjs",
"bug-891-non-claude-runtime-home-fallback.test.cjs",
@@ -267,7 +220,5 @@
"bug-967-verify-key-links-strict-paths.test.cjs",
"bug-969-test-infra-flake-hardening.test.cjs",
"bug-974-graphify-budget-missing-value.test.cjs",
"bug-977-fnm-multishell-path.test.cjs",
"bug-978-milestone-complete-force.test.cjs",
"bug-983-trae-windsurf-claude-path-leak.test.cjs"
"bug-978-milestone-complete-force.test.cjs"
]

View File

@@ -16,7 +16,6 @@
"bug-2943-config-get-context-window-default.test.cjs",
"bug-321-config-defaults-clone-strategy.test.cjs",
"bug-3227-config-set-model-overrides.test.cjs",
"bug-442-config-dir-equals-in-path.test.cjs",
"config-field-docs.test.cjs",
"config-get-default.test.cjs",
"config-schema.property.test.cjs",
@@ -110,12 +109,12 @@
"bug-3454-state-dollar-backreference-growth.test.cjs",
"bug-397-state-preserve-executor-authored.test.cjs",
"bug-905-state-syncstatefrontmatter-preserve-scalars.test.cjs",
"bug-948-state-noop-write-guard.test.cjs",
"state-acquirestatelock-non-eexist.test.cjs",
"state-prune.test.cjs",
"state-rebuild-cli.test.cjs",
"state-rebuild.test.cjs",
"state.test.cjs"
"bug-948-state-noop-write-guard.test.cjs",
"state-acquirestatelock-non-eexist.test.cjs",
"state-prune.test.cjs",
"state-rebuild-cli.test.cjs",
"state-rebuild.test.cjs",
"state.test.cjs"
],
"issue": "180"
},
@@ -137,10 +136,7 @@
},
"install": {
"files": [
"bug-410-install-defaults-test-mode-guard.test.cjs",
"enh-1077-install-hook-events-dialect-drive.test.cjs",
"enh-1082-install-plan-capstone.test.cjs",
"enh-776-install-gemini-hook-events.test.cjs",
"install-minimal-hooks.test.cjs",
"install-nested-layout.test.cjs",
"install-path-detection.test.cjs",