chore(lint): vendor anti-slop oxlint plugin and add batched cleanup pipeline
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.
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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",
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user