Description
Currently, the CI workflow has continue-on-error: true for the golangci-lint step, which means lint failures don't block merges. This is reasonable for initial development but allows technical debt to accumulate.
Current Configuration
File: .github/workflows/ci.yml:46-49
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: latest
args: --concurrency=8 --fix
# Allow lint failures to not block CI while we iteratively improve code quality.
continue-on-error: true
Problem
- New code can introduce linting issues without anyone noticing
- The
--fix flag helps with auto-fixable issues, but not all issues are auto-fixable
- Over time, the number of lint issues will grow
- Makes it harder to enforce code quality standards
Proposed Solution
Phase 1: Assess Current State
- Run golangci-lint locally and document all current failures
- Categorize issues by severity and effort to fix
- Create separate issues for each category
Phase 2: Fix Issues
- Fix high-severity issues first (bugs, security)
- Fix medium-severity issues (code quality, maintainability)
- Address or suppress low-severity issues with justification
Phase 3: Enable Full Linting
- Remove
continue-on-error: true
- Consider adding linting to pre-commit hooks
- Document suppression policy (when to use
//nolint and why)
Timeline
Target: Before v0.2.0 release (or set a specific date)
Alternative Approach
If fixing all issues at once is too much work:
- Keep
continue-on-error: true for existing code
- Add a separate lint step for new/changed files only:
- name: Lint changed files
run: golangci-lint run --new-from-rev=main
# This one should NOT have continue-on-error
Acceptance Criteria
Benefits
- Prevents accumulation of technical debt
- Maintains consistent code quality
- Catches potential bugs early
- Makes codebase easier to maintain
Related
Description
Currently, the CI workflow has
continue-on-error: truefor the golangci-lint step, which means lint failures don't block merges. This is reasonable for initial development but allows technical debt to accumulate.Current Configuration
File:
.github/workflows/ci.yml:46-49Problem
--fixflag helps with auto-fixable issues, but not all issues are auto-fixableProposed Solution
Phase 1: Assess Current State
Phase 2: Fix Issues
Phase 3: Enable Full Linting
continue-on-error: true//nolintand why)Timeline
Target: Before v0.2.0 release (or set a specific date)
Alternative Approach
If fixing all issues at once is too much work:
continue-on-error: truefor existing codeAcceptance Criteria
continue-on-errorOR implement alternative approachBenefits
Related