Skip to content

Establish a Ruff baseline and CI adoption policy #67

Description

@bigsmartben

Problem

The repository CI runs uvx ruff check src/. On PR #65, this reports 572 findings in existing src/ code, including files and lines outside the PR diff. The functional, integration, security, shell, and cross-platform test checks pass, but the repository-wide lint baseline prevents a clean merge signal.

This is a quality-governance concern, not a behavior-testability or requirement-gate change.

Goal

Establish a documented Ruff baseline and CI adoption policy that prevents new lint debt while allowing independently validated feature PRs to remain attributable to their own changes.

Scope

  • Reproduce and record the current ruff check src/ baseline on main.
  • Decide and document the transition model (for example: a tracked baseline/ratchet, scoped changed-file enforcement, or a staged per-rule/per-directory cleanup).
  • Ensure CI fails when a PR introduces or worsens Ruff findings in the enforced scope.
  • Define an incremental cleanup plan to converge the repository to a fully clean ruff check src/.
  • Keep all existing Ruff rules visible; do not silently disable rules merely to make CI green.
  • Update CI/documentation and add regression coverage for the chosen policy.

Non-goals

Acceptance criteria

  • The baseline count and command are reproducible from the default branch.
  • CI distinguishes pre-existing findings from PR-introduced findings.
  • A deliberately introduced violation in an enforced file makes CI fail.
  • An unrelated feature PR with no new violations can pass CI while historical findings remain tracked.
  • The chosen baseline artifact/process has an owner and a removal/convergence path.
  • The policy and contributor-facing commands are documented.

Related work

  • Issue #61: feature delivery that exposed the baseline.
  • PR #65: remains Draft pending this policy decision and review.

Created on behalf of @bigsmartben by Codex (model: GPT-5).

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions