Vendor the anti-slop Oxlint plugin at tools/oxlint/anti-slop and register it in oxlint.config.ts, with Oxlint's own rule categories disabled so ESLint stays the general-purpose linter. Add scripts/anti-slop.mjs (bun run deslop) mirroring the React Doctor batch interface: next-batch, check-batch, active, release, top, file. Batch handoff directories now double as file claims shared across clones via ~/.openchamber/maintenance-claims, so concurrent maintenance batches from either pipeline never select the same file. Harden both scheduled maintenance flows: stop on a dirty worktree, stop on NO BATCH AVAILABLE, validate per package instead of workspace-wide, and pin react-doctor to 0.9.12. The anti-slop task command documents concrete good and bad fixes and forbids laundering types to satisfy a rule.
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { defineConfig } from "oxlint";
|
|
|
|
// Oxlint here runs only the vendored anti-slop plugin; ESLint remains the
|
|
// general-purpose linter for this repository.
|
|
export default defineConfig({
|
|
categories: {
|
|
correctness: "off",
|
|
},
|
|
ignorePatterns: [
|
|
"**/node_modules/**",
|
|
"**/dist/**",
|
|
"**/build/**",
|
|
"**/out/**",
|
|
"**/.next/**",
|
|
"**/ios/**",
|
|
"**/android/**",
|
|
".agents/**",
|
|
".claude/**",
|
|
".conductor/**",
|
|
".opencode/**",
|
|
".openchamber/**",
|
|
".tmp/**",
|
|
"patches/**",
|
|
"bun-patches/**",
|
|
"tools/oxlint/anti-slop/**",
|
|
],
|
|
jsPlugins: [
|
|
{ name: "anti-slop", specifier: "./tools/oxlint/anti-slop/index.ts" },
|
|
],
|
|
rules: {
|
|
"anti-slop/no-chained-type-assertions": "error",
|
|
"anti-slop/no-conditional-empty-object-spread": "error",
|
|
"anti-slop/no-known-value-widening": "error",
|
|
"anti-slop/no-module-mocking": "error",
|
|
"anti-slop/no-object-parameters": "error",
|
|
"anti-slop/no-reflect-apply": "error",
|
|
"anti-slop/no-reflect-get": "error",
|
|
"anti-slop/no-runtime-typeof": "error",
|
|
"anti-slop/no-shape-in-symbol-names": "error",
|
|
"anti-slop/no-unknown-parameters": "error",
|
|
"anti-slop/no-unknown-returns": "error",
|
|
"anti-slop/no-unknown-type-aliases": "error",
|
|
"anti-slop/no-unsafe-dictionary-type": "error",
|
|
"anti-slop/no-widen-then-assert": "error",
|
|
"anti-slop/require-safety-comment-for-type-assertion": "error",
|
|
},
|
|
});
|