📝 Place test-wide suppressions in the config
Drop the fixed no-floating-promises header exception from CONTRIBUTING.md and AGENTS.md; agents must not add a source disable or edit .oxlintrc.json. Record the split in tooling.md and testing.md: a one-site false positive is a source disable, a file-class one lives in the test override.
This commit is contained in:
1 parent
9b7dec96e0
commit
16904440cf
4 files changed
+29
-23
No files matched your search
@@ -167,8 +167,8 @@ the CLI is for manual inspection.
|
||||
|
||||
## Known issues
|
||||
|
||||
- The type-aware linter misidentifies `expectTypeOf()` as a floating promise, so
|
||||
test files that use it (`src/primitive.test.ts`) carry a file-level
|
||||
`oxlint-disable typescript/no-floating-promises` with an explanatory comment.
|
||||
It is a known false positive, not a rule worth disabling project-wide (see
|
||||
- The type-aware linter misidentifies `expectTypeOf()` as a floating promise.
|
||||
It is a known false positive, so `typescript/no-floating-promises` is off for
|
||||
`**/*.test.ts` in the `.oxlintrc.json` override rather than repeated as a
|
||||
file-level header (see
|
||||
[tooling.md § oxlint-disable directives live next to the code](./tooling.md#oxlint-disable-directives-live-next-to-the-code)).
|
||||
+19
-11
@@ -106,26 +106,34 @@ Type-aware oxlint is enabled via `options.typeAware: true` in `.oxlintrc.json`
|
||||
|
||||
#### Decision (2026-09)
|
||||
|
||||
A type-aware rule that false-positives is silenced with a source-level
|
||||
`oxlint-disable` directive (see `src/primitive.ts`,
|
||||
`src/primitive.test.ts`), not by turning the rule off in `.oxlintrc.json`.
|
||||
A type-aware rule that false-positives **at one site** is silenced with a
|
||||
source-level `oxlint-disable` directive (see `src/primitive.ts`). A rule that is
|
||||
wrong for a whole **file class** is turned off in a `.oxlintrc.json` `overrides`
|
||||
entry instead — e.g. `typescript/no-floating-promises` (synchronous
|
||||
`expectTypeOf` reads as an unhandled promise) and `unicorn/no-null` (intentional
|
||||
`null` inputs) for `**/*.test.ts`. The same exemption is not repeated as a
|
||||
file-level header in every affected file.
|
||||
|
||||
#### Why
|
||||
|
||||
- The disable sits next to the code it silences, visible to anyone reading the
|
||||
source.
|
||||
- The rule stays on everywhere else, so only the mis-firing line is exempted.
|
||||
- A one-site disable sits next to the code it silences, visible to anyone
|
||||
reading the source, and the rule stays on everywhere else.
|
||||
- A file-class rule is a property of the file class, not of one line; the
|
||||
override states it once, where the rest of the file-class config lives.
|
||||
|
||||
#### Rejected
|
||||
|
||||
- A project-wide disable in `.oxlintrc.json` for a false positive: it hides the
|
||||
exemption from the reader of the affected code and switches the rule off
|
||||
repo-wide for a one-site problem.
|
||||
- A project-wide disable in `.oxlintrc.json` for a one-site false positive: it
|
||||
hides the exemption from the reader of the affected code and switches the rule
|
||||
off repo-wide for a one-site problem.
|
||||
- A repeated file-level `oxlint-disable` header for a file-class false positive:
|
||||
the copies drift and scatter one config decision across the tree.
|
||||
|
||||
#### Known issue
|
||||
|
||||
- A source-level disable is a _human_ last resort. AI agents must not add one;
|
||||
they fix the type at its root (see [AGENTS.md § Never do](../AGENTS.md#never-do)).
|
||||
- Both placements are _human_ last resorts. AI agents must neither add a source
|
||||
disable nor edit `.oxlintrc.json`; they fix the type at its root (see
|
||||
[AGENTS.md § Never do](../AGENTS.md#never-do)).
|
||||
|
||||
### Unwanted stylistic rules are turned off in the config
|
||||
|
||||
|
||||
Reference in new issue
Block a user