Skip to content

Permissive start + progressive ratchet: CI-safe lint, presets, and ratchet DX #210

@mojoatomic

Description

@mojoatomic

Summary

Introduce a first-class "permissive start" mode and progressive ratcheting workflow to avoid CI breakage and improve onboarding.

Motivation

Current strict-by-default approach overwhelms teams (hundreds of violations) and breaks CI. We want:

  • CI green on day 1
  • Fix one category at a time
  • Lock progress with ratchet
  • Repeat

Scope

  1. Permissive start (generator + preset)
  • Init flag: --permissive / --permissive-start
  • Generate flat config with measure-only rules (warn, not error)
  • Include Jest/browser overrides to remove no-undef noise
  • Export configs['permissive-start'] from the plugin for flat-config users
  1. CI-safe lint + ratchet gate
  • package.json scripts (generated):
    • lint: eslint .
    • lint:ci: eslint . || true
    • ratchet: eslint-plugin-ai-code-snifftest ratchet
  • GitHub Actions snippet in docs: run lint:ci, then ratchet (only ratchet can fail)
  1. Ratchet DX improvements
  • Better fail message with: rule, baseline, current, first N new occurrences (file:line), and "how to fix" tip
  • Add --unlock=<rule> path documented in message
  • Script alias: ratchet:explain to print baseline JSON
  1. Issue creation hygiene (optional, separate PR if large)
  • create-issues --phase=1|2|3 to avoid dumping all issues at once
  • Priority labels in titles: [P0-Quick-Win], [P1-High-Impact], etc.
  • START HERE issue or TECH-DEBT.md scaffold with weekly trend

Acceptance Criteria

  • init --permissive generates permissive ESLint config (warn-only) + Jest/browser overrides
  • Plugin exports configs['permissive-start']
  • Generator adds lint:ci + ratchet scripts and docs snippet
  • Ratchet prints actionable failure messaging (with example and unlock hint)

Non-Goals

  • Changing default behavior for existing strict users
  • Enforcing env-based severity switching (prefer ratchet gating)

Notes

This enables: CI stays green, teams fix one rule at a time, and ratchet prevents backsliding.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions