Skip to content

Add lint/format toolchain and split CI into concurrent jobs - #508

Merged
TheGreatAxios merged 1 commit into
mainfrom
cl-6802-port-the-workbench-cilint-toolchain-eslintprettier-with
Aug 22, 2026
Merged

Add lint/format toolchain and split CI into concurrent jobs#508
TheGreatAxios merged 1 commit into
mainfrom
cl-6802-port-the-workbench-cilint-toolchain-eslintprettier-with

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Collaborator

Summary

Stage 1 of CL-6802: port the workbench repo's CI/lint toolchain configuration. This PR lands the toolchain only — a separate stage 2 PR will apply the repo-wide mechanical fix batch (eslint --fix / prettier --write) after 5 currently-open PRs merge, to avoid conflicts.

  • ESLint flat config (eslint.config.js): @eslint/js recommended + typescript-eslint strict + stylistic, zero-suppressions policy (noInlineConfig: true, reportUnusedDisableDirectives: "error"), underscore-prefixed args/vars allowed for no-unused-vars.
  • Prettier: .prettierrc.json + .prettierignore (CHANGELOG.md excluded — formatting it would churn the whole file).
  • package.json scripts: lint (prettier --check --cache . && eslint --cache .) and check (lint + typecheck + build + test, matching CI order).
  • .github/workflows/ci.yml split into concurrent lint / typecheck / build-and-test jobs, each with a bun install cache keyed on bun.lock; the lint job also caches .eslintcache + prettier cache per-SHA with restore-keys. Concurrency group supersedes stale PR runs but never cancels main-branch commits. Existing corbits-specific steps (ripgrep install, randomized-order test run) stay in build-and-test.
  • tsconfig.base.json: incremental: true. Typecheck scope unchanged (tests/evals inclusion is CL-5759).
  • AGENTS.md: names bun run check as the single pre-PR gate.

The codebase is not yet lint-clean (1938 ESLint problems, 599 files with Prettier formatting issues found by an initial scan), so the CI lint job is continue-on-error: true for now with a TODO(CL-6802 stage 2) marker to flip it blocking once the mechanical fix batch lands. The lint script itself stays strict (non-zero exit on any violation).

No src/** code, vendor/, or Linear state touched.

Part of CL-6802
https://linear.app/abklabs/issue/CL-6802

Test plan

  • bun run typecheck — clean
  • bun run lint — executes, fails as expected (599 files need Prettier formatting, 1938 ESLint problems) — confirms the toolchain runs against real violations
  • bun run check — chains lint → typecheck → build → test correctly, stops at lint (expected for stage 1)
  • bunx yaml-lint .github/workflows/ci.yml — parses successfully

@linear-code

linear-code Bot commented Aug 22, 2026

Copy link
Copy Markdown

CL-6802

@TheGreatAxios
TheGreatAxios merged commit 8d99910 into main Aug 22, 2026
3 of 4 checks passed
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.

1 participant