Skip to content

chore(ci): make lint runnable and enforced#27

Merged
lesquel merged 1 commit into
mainfrom
chore/fix-lint-script
May 17, 2026
Merged

chore(ci): make lint runnable and enforced#27
lesquel merged 1 commit into
mainfrom
chore/fix-lint-script

Conversation

@lesquel

@lesquel lesquel commented May 17, 2026

Copy link
Copy Markdown
Owner

Summary

Addresses the broken lint script item of #25 (the first follow-up from the v1.21.0 audit).

bun run lint invoked oxlint . but oxlint was never in devDependencies, so the script exited 127 on any clean environment. The CI step masked this with continue-on-error: true — net effect: linting never actually ran on this project, despite a lint script and a CI step existing.

Changes

  • Add oxlint@^1.65.0 to devDependencies. bun run puts node_modules/.bin on PATH, so the existing bare oxlint . script resolves with no script change.
  • Remove continue-on-error: true (and the stale "may not be configured yet" comment) from the CI lint step, so lint errors gate CI going forward.

State after this PR

bun run lint → exit 0: 0 errors, 185 warnings, 167 files.

  • 173/185 warnings are eslint(no-unused-vars); 167 are in src/dashboard/, dominated by the intentional catch (_) {} pattern.
  • The remaining ~12 are minor (no-useless-escape ×2, no-unsafe-optional-chaining ×2 — both in handlers.test.ts, test-only, no-unused-expressions ×1).

Deliberately NOT done here (maintainer call)

I did not add an .oxlintrc.json to silence the 185 warnings. AGENTS.md §"No silent failures" treats try {} catch {} as a bug-waiting-to-happen, not a sanctioned convention. Configuring oxlint to suppress no-unused-vars on catch bindings would be configuring away your own guardrail — that's a policy decision for you, not something to slip into a tooling fix. Options for a follow-up (tracked in #25):

  1. Accept the dashboard catch (_) pattern as exempt → add a scoped .oxlintrc.json override for src/dashboard/.
  2. Treat it as real debt → handle/log those catches per AGENTS.md §86.
  3. Leave warnings visible as-is (current state) — lint errors gate CI; warnings are advisory.

Testing

  • bun run lint → exit 0 (0 errors)
  • bun run typecheck unaffected
  • No source behavior change (deps + CI config only)

Refs #25 (partial — remaining audit follow-ups stay open there). Does not close #25.

oxlint was invoked by `bun run lint` but was never a dependency, so the
script failed with exit 127 on any clean environment, and the CI step
masked that with `continue-on-error: true`. Net effect: linting never
actually ran on this project.

- Add oxlint to devDependencies. `bun run` puts node_modules/.bin on
  PATH, so the existing bare `oxlint .` script now resolves — no script
  change needed.
- Drop `continue-on-error` (and the stale "may not be configured yet"
  comment) from the CI lint step so lint *errors* gate CI going forward.

Current state: `bun run lint` exits 0 — 0 errors, 185 warnings. The
warnings are pre-existing and dominated by intentional `catch (_)`
bindings in src/dashboard/. Left as-is on purpose: whether to enforce
AGENTS.md's no-silent-failure stance on dashboard code is a maintainer
policy call, tracked in #25 — not silently configured away here.

Refs #25
@lesquel lesquel merged commit de64743 into main May 17, 2026
2 checks passed
@lesquel lesquel deleted the chore/fix-lint-script branch May 17, 2026 20:14
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.

feat: v1.21.0 audit follow-ups — broken lint script + architecture/quality debt (non-security)

1 participant