Skip to content

[Migration 0-2] Enable ESLint import/no-cycle + boundaries rules#3349

Merged
tom2drum merged 1 commit intomainfrom
migration/0-2-eslint-boundaries
Apr 8, 2026
Merged

[Migration 0-2] Enable ESLint import/no-cycle + boundaries rules#3349
tom2drum merged 1 commit intomainfrom
migration/0-2-eslint-boundaries

Conversation

@tom2drum
Copy link
Copy Markdown
Collaborator

@tom2drum tom2drum commented Apr 7, 2026

Closes #3348

What changed

  • Added devDependency eslint-plugin-boundaries (^4.2.2) and registered boundaries/elements plus boundaries/element-types for client/**/*.{ts,tsx} and configs/**/*.{ts,tsx,mjs} with default: disallow and the layer rules from ARCH_REDESIGN.md §8. Migration allowances: legacy-lib, legacy-ui, and toolkit where product code still depends on them; configs may import legacy-lib until config-owned types leave lib/. Type-only cross-layer imports use per-rule importKind: 'type' (plugin v4 does not expose allowTypeImports).
  • Enabled import/no-cycle: error for client/**, warn for lib/** and ui/**.
  • Extended consistent-default-export-name to client/**/*.tsx (same rule options as ui/**/[A-Z]*.tsx).
  • Comment in eslint.config.mjs documents §10 intent for enforcing types/api.ts as the public type surface once more client/ modules exist; capture-based rules are deferred.

Codemods

None.

Cross-slice / legacy imports

No application code was moved. client/features/csv-export continues to use existing imports from lib/*, ui/*, toolkit/*, configs/*, and root types/* (paths outside boundaries/elements stay unchecked by element-types).

Checklist

  • pnpm lint:tsc passes
  • pnpm lint:eslint completes with exit 0; client/ has no new issues (existing warnings in ui/**/*.pw.tsx only)

Made with Cursor

Add eslint-plugin-boundaries with element-types matching ARCH_REDESIGN §8,
enable import/no-cycle (error in client/, warn in lib/ and ui/), extend
consistent-default-export-name to client/**/*.tsx, and document §10
types/api.ts enforcement as a follow-up.

Made-with: Cursor
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 7, 2026

Important

Review skipped

Auto reviews are disabled on this repository. To trigger a review, include @coderabbitai review in the PR description. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: e33c4a70-f475-4d07-a400-dfd27cf27559

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@tom2drum tom2drum merged commit a1060de into main Apr 8, 2026
12 checks passed
@tom2drum tom2drum deleted the migration/0-2-eslint-boundaries branch April 8, 2026 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Migration] 0-2: Enable ESLint import/no-cycle + boundaries rules

1 participant