Files
msd-core/eslint-rules/no-adhoc-timeout-literal.allowlist.json
Tom Boucher f15887ebb1 feat(#4446): ban ad hoc timeout literals in tests, ship with full legacy allowlist (#4449)
Nothing enforced CONTRIBUTING.md's own stated preference ("A non-literal value
is trusted — that is the shape you should be writing") for timeout values in
tests. local/no-unbounded-spawn requires SOME bound but allows a bare literal;
no-magic-sleep-in-tests and no-elapsed-assertion cover different anti-patterns
entirely. This is exactly how PR #4428's Windows CI incident happened: two
independently-guessed 15000ms literals (one in production's check-latest-
version.cjs, one in this suite's own worker test) collided exactly and raced
two SIGKILLs against each other.

New rule local/no-adhoc-timeout-literal (eslint-rules/no-adhoc-timeout-
literal.cjs) flags a resolvable numeric timeout/timeoutMs literal; an
Identifier or MemberExpression value is trusted. No marker-comment escape —
the fix is always to extract a named constant, which is trivial.

Ships with a full legacy allowlist (126 files, 352 violations, generated
by running the rule with an empty allowlist against tests/) so it can go
live at error severity without breaking CI, mirroring how no-unbounded-spawn
itself was rolled out. Migration is tracked separately in #4445 (this PR
does not close it — only #4446, introducing the gate itself).

Documents the policy and the compliant shapes in TESTING-STANDARDS.md and
TEST-EXAMPLES.md.

Co-authored-by: sim <sim@local>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 21:23:39 -04:00

129 lines
5.1 KiB
JSON

[
"tests/adr-612-bracket-coherence.test.cjs",
"tests/adr-612-bracket-read-tolerance.test.cjs",
"tests/adr-index-gate.test.cjs",
"tests/adr857-core-without-capabilities.test.cjs",
"tests/antigravity-upgrades.test.cjs",
"tests/api-coverage-gate-e2e.test.cjs",
"tests/api-coverage.test.cjs",
"tests/assumption-delta-checkpoint-e2e.test.cjs",
"tests/assumption-delta.test.cjs",
"tests/augment-upgrades.test.cjs",
"tests/capability-cli.test.cjs",
"tests/capability-probe-fallback.test.cjs",
"tests/capability-state.test.cjs",
"tests/capability-trust.test.cjs",
"tests/capability-validator-task-content-resolver.test.cjs",
"tests/capability-writer.test.cjs",
"tests/changeset-new.test.cjs",
"tests/check-env.test.cjs",
"tests/check-gap-analysis-plan-post-e2e.test.cjs",
"tests/check-glossary-refs.test.cjs",
"tests/check-predicate.test.cjs",
"tests/check-tdd-review-checkpoint-e2e.test.cjs",
"tests/ci-rebase-check.test.cjs",
"tests/cjs-command-router-adapter.test.cjs",
"tests/code-review-pipeline-regression.test.cjs",
"tests/code-review.test.cjs",
"tests/commands.test.cjs",
"tests/commit-files-pathspec.test.cjs",
"tests/config-get-default.test.cjs",
"tests/cursor-hook-workspace-roots.test.cjs",
"tests/cursor-hooks.test.cjs",
"tests/dispatcher.test.cjs",
"tests/effort-surface-axis.test.cjs",
"tests/effort-sync-installed-runtime.test.cjs",
"tests/emitted-ack-trailer.test.cjs",
"tests/emitted-attribution.test.cjs",
"tests/execute-wave-post-gate-pipeline-e2e.test.cjs",
"tests/faulty-deps.test.cjs",
"tests/feat-2483-review-claude-mds-guard.test.cjs",
"tests/federated-config.test.cjs",
"tests/fragment-single-edit-propagation.install.test.cjs",
"tests/gate-predicate-evaluator.test.cjs",
"tests/gemini-runtime-removed.test.cjs",
"tests/gen-context-index.test.cjs",
"tests/gen-health-docs.test.cjs",
"tests/gen-section-manifest.test.cjs",
"tests/gen-state-md-docs.test.cjs",
"tests/git-base-branch.test.cjs",
"tests/git-fixture.test.cjs",
"tests/graphify.test.cjs",
"tests/gsd-check-update-worker-platform-gate.test.cjs",
"tests/gsd-mcp-server-bin.test.cjs",
"tests/gsd-secret-read-guard.test.cjs",
"tests/gsd-statusline.test.cjs",
"tests/gsd-validate-commit-crash-policy.test.cjs",
"tests/gsd-write-guard.test.cjs",
"tests/health-validation.test.cjs",
"tests/helpers-process-isolation.test.cjs",
"tests/helpers.cjs",
"tests/hooks-commonjs-marker.test.cjs",
"tests/hooks-crash-policy.test.cjs",
"tests/init.test.cjs",
"tests/install-minimal-hooks.test.cjs",
"tests/install-regressions.test.cjs",
"tests/install-runtime-artifacts.test.cjs",
"tests/install-write-confinement.test.cjs",
"tests/install.test.cjs",
"tests/kilo-upgrades.test.cjs",
"tests/kimi-upgrades.test.cjs",
"tests/kimi-variant-disambiguation.test.cjs",
"tests/lint-docs-command-form.test.cjs",
"tests/locking-bugs-1909-1916-1925-1927.test.cjs",
"tests/loop-hooks-empty-points-e2e.test.cjs",
"tests/loop-hooks-ship-pre-e2e.test.cjs",
"tests/loop-hooks-verify-post-e2e.test.cjs",
"tests/loop-render-hooks.test.cjs",
"tests/loop-walk.qa.test.cjs",
"tests/milestone-lock.test.cjs",
"tests/no-pending-3212-markers.test.cjs",
"tests/npm-integrity-gate.test.cjs",
"tests/opencode-plugin-adapter.test.cjs",
"tests/packaging-shipped-scripts-require-only-shipped.test.cjs",
"tests/pattern.test.cjs",
"tests/perf-316-state-lock-buffer-alloc.test.cjs",
"tests/perf-317-context-monitor-fs.test.cjs",
"tests/phase.test.cjs",
"tests/phase6-capstone-conformance.test.cjs",
"tests/pi-config-dir-env-override.test.cjs",
"tests/plan-phase-stall-detection.test.cjs",
"tests/plan-pre-hook-e2e.test.cjs",
"tests/plan-review-convergence.test.cjs",
"tests/plugin-manifest.test.cjs",
"tests/policy-160-route0-resume.test.cjs",
"tests/pr-branch-planning-filter.test.cjs",
"tests/process-seam.test.cjs",
"tests/prohibition-enforcement.test.cjs",
"tests/prompt-injection-scan.security.test.cjs",
"tests/qa/tdd-walk.cjs",
"tests/quick-batch.test.cjs",
"tests/read-guard.test.cjs",
"tests/read-injection-scanner.property.test.cjs",
"tests/read-injection-scanner.security.test.cjs",
"tests/reapply-verify-hunks.test.cjs",
"tests/release-tarball-smoke.install.test.cjs",
"tests/representative-corpus.test.cjs",
"tests/review-lane-invocation.test.cjs",
"tests/reviewer-manifest-body.test.cjs",
"tests/reviewer-trust-disclosure.test.cjs",
"tests/run-tests-temp-root.test.cjs",
"tests/run-with-timeout.test.cjs",
"tests/secret-scan-lint.security.test.cjs",
"tests/security-prompt-injection.security.test.cjs",
"tests/security-scan.security.test.cjs",
"tests/security.test.cjs",
"tests/shared-hooks-dir-resolution.test.cjs",
"tests/shell-command-projection-dispatch.test.cjs",
"tests/ship-notes-wedged-pr.test.cjs",
"tests/slug-derivation-drift-guard.test.cjs",
"tests/state-document.test.cjs",
"tests/state-todos-render.test.cjs",
"tests/task-command-router-resolve-content.test.cjs",
"tests/task-content-resolution.test.cjs",
"tests/task-content-resolver-grammar-parity.test.cjs",
"tests/teams-status.test.cjs",
"tests/windsurf-hooks-bridge.test.cjs",
"tests/worktree-safety.test.cjs"
]