Skip to content

chore(lint): enforce cyclomatic complexity ceiling - #861

Open
benvinegar wants to merge 1 commit into
refactor/simplify-session-cli-dispatchfrom
chore/enforce-complexity-ceiling
Open

chore(lint): enforce cyclomatic complexity ceiling#861
benvinegar wants to merge 1 commit into
refactor/simplify-session-cli-dispatchfrom
chore/enforce-complexity-ceiling

Conversation

@benvinegar

Copy link
Copy Markdown
Member

Problem

The codebase has no automated ceiling for cyclomatic complexity, so a function can accumulate new control-flow paths without lint feedback. The recent audit found the session command dispatcher at 91 before #857 split it into focused handlers.

Approach

  • enable Oxlint's ESLint-compatible complexity rule globally;
  • set an initial maximum of 80;
  • rely on the existing bun run lint CI step to enforce it.

This is intentionally an initial regression ceiling rather than the long-term target. On this branch the highest existing score is 78 (App), followed by 76 (validateFileViewLayout), so 80 adds enforcement without grandfathering or suppressions. The ceiling can be ratcheted downward as existing hotspots are simplified.

This PR is stacked on #857 and should merge after it. Targeting its branch keeps this diff to the Oxlint configuration and an empty maintenance Changeset.

Validation

Tested on Linux:

  • bun run lint — 782 files, 93 rules, zero warnings/errors;
  • bun run typecheck;
  • focused oxfmt --check for the changed files;
  • generated complexity-80 boundary probe passes;
  • generated complexity-81 probe fails with Maximum allowed is 80;
  • git diff --check.

Follow-up

Lower the ceiling as the remaining high-complexity functions are simplified. A global ceiling does not prevent a function below 80 from growing toward it.

This PR description was generated by Pi using OpenAI GPT-5.6 Sol

@vercel

vercel Bot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hunk-web Ignored Ignored Aug 26, 2026 1:50pm

Request Review

@greptile-apps

greptile-apps Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds an Oxlint cyclomatic-complexity ceiling as an initial regression guard without changing runtime behavior.

  • Enables the ESLint-compatible complexity rule globally with a maximum of 80.
  • Adds the repository-standard empty Changeset for maintenance-only work.

Confidence Score: 5/5

The PR appears safe to merge with no actionable correctness, security, or release-process issues identified.

The lint configuration is limited to static analysis, and the empty Changeset matches the repository’s documented and tested maintenance-release workflow.

Important Files Changed

Filename Overview
.oxlintrc.json Adds the global complexity rule at the documented ceiling; no actionable defect was established.
.changeset/enforce-complexity-ceiling.md Adds a canonical empty maintenance Changeset consistent with repository release conventions.

Reviews (1): Last reviewed commit: "chore(lint): enforce complexity ceiling" | Re-trigger Greptile

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