ADR 0003: Do not adopt @eslint/object-schema for plugin internals
- Status: Accepted
- Date: 2026-02-22
Context
@eslint/object-schema provides keyed validation/merge schemas for structured object merging and validation strategies.
This repository does not currently maintain a complex multi-source runtime object-merging engine in plugin internals. Rule option validation is handled by standard ESLint rule meta.schema definitions.
Decision
Do not add direct adoption of @eslint/object-schema in plugin runtime or rule internals at this time.
Rationale
- Rule options are already validated by ESLint rule schemas (
meta.schema), making object-schema redundant for current rule configuration needs. - No major internal object-merge subsystem exists that would benefit from object-schema strategy definitions.
- Avoid unnecessary abstraction/dependency overhead when native TypeScript types + explicit merge logic are sufficient.
Consequences
- Keep rule option contracts in
meta.schema+ TypeScript types. - Keep explicit merge logic where needed, localized and tested.
Revisit Triggers
Re-evaluate if we introduce:
- multi-layer preset composition requiring non-trivial merge semantics,
- plugin/runtime user config ingestion with schema-driven merge behavior,
- or repeated ad-hoc object validation/merge logic indicating abstraction pressure.