The prohibition-enforcement real-runner tests linted src/clock.cts (a .cts) as their clean target. Under eslint.config.mjs's type-aware block for src/**/*.cts (recommendedTypeChecked + parserOptions.project: tsconfig.build.json), each eslint spawn loaded the WHOLE tsconfig.build.json program (~2s, CPU-heavy). The real-runner tests spawn eslint repeatedly; under --test-concurrency those full-program type-checks oversubscribed the bench CPU and blew the 60s subprocess bound -> fail-closed (intermittent, load-dependent — passed 24241/24241 in an earlier run, failed here). Root fix (not a retry/timeout bandaid; measured projectService = no faster since a single-file .cts lint still loads type info): add tests/_ff_lint_clean.cjs, a KNOWN-CLEAN lint-scoped .cjs companion to _ff_lint_violation.cjs, with a flat-config block enabling local/no-source-grep so the clean pass stays non-vacuous. Repoint the 6 src/clock.cts real-runner usages (5 targets + the FF-02 toothless violationFixture) at it. Each spawn is now ~0.8s non-type-aware (no whole-program load) — starvation removed. All 6 tests' semantics verified in-process (SF-01 greens; toothless/fail-closed stay unverified); full-repo `eslint .` green. Refs #2126, #1259 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
1.2 KiB
JavaScript
20 lines
1.2 KiB
JavaScript
// PERMANENT LOAD-BEARING FIXTURE for #1259 / #2126 — DO NOT delete or rename to `*.test.cjs`.
|
|
//
|
|
// A KNOWN-CLEAN, lint-scoped `.cjs` companion to `_ff_lint_violation.cjs`. It has NO
|
|
// `local/no-source-grep` violation, so the prohibition-enforcement real-runner tests can use it as
|
|
// the "clean target" for a NON-VACUOUS pass — the rule RUNS on it (enabled via the flat-config
|
|
// block below) and finds nothing.
|
|
//
|
|
// Why a `.cjs` and not `src/clock.cts`: linting a `src/**/*.cts` file is type-aware
|
|
// (`recommendedTypeChecked` + `parserOptions.project`), which loads the whole `tsconfig.build.json`
|
|
// program on every eslint spawn (~2s, CPU-heavy). The real-runner tests spawn eslint repeatedly and,
|
|
// under `--test-concurrency`, those full-program type-checks oversubscribe the bench CPU and blow the
|
|
// 60s subprocess bound (#2126). A plain `.cjs` is linted non-type-aware (~0.8s) — same coverage of
|
|
// the AST-only `no-source-grep` rule, no starvation.
|
|
//
|
|
// PLAIN `.cjs` (NOT `*.test.cjs`) on purpose — same reason as the violation fixture: keep it OFF the
|
|
// `node --test` runner glob so it is only ever linted, never executed.
|
|
'use strict';
|
|
|
|
module.exports = {};
|