ci: make lint pass, so tests actually run - #67
Merged
Merged
Conversation
CI has failed on every branch since February. `npm run lint` runs `prettier --check .`, which walked into generated build output, and because lint runs before `lerna run test`, the test suite has not executed on a pull request in months. The publish workflow tests separately, so releases were still gated; pull requests were not. Two causes. Prettier had no ignore for generated output. `.prettierignore` listed node_modules, dist and archive*, while the eslint config additionally ignored dist-test. So prettier checked `dist-test` and `.svelte-kit`, which exist only after a build, and failed on 106 files that nobody wrote. Aligned the two ignore lists and added `.svelte-kit` and `.claude`. Eslint reported 14 errors. Seven came from `.claude/worktrees`, a local directory eslint should never have been reading. The rest were the rest-sibling idiom used to strip private members from a JWK, where naming the discarded fields is how the omission works -- they are not unused. Set `ignoreRestSiblings` rather than scattering disable comments, which also retired the ones already in the tree. Removing those disables reformatted the files they were in, which prettier then flagged. That is a real ordering problem in the script: `prettier --check . && eslint --fix` runs the formatter check before the fixer, so anything eslint rewrites is never formatted, and the failure surfaces on someone else's next run. Left the script alone and committed the formatted result, but the order is worth revisiting -- `--fix` in CI mutates a checkout nothing will commit. Verified: prettier clean, eslint clean, lint exits 0, and httpsig, better-auth and email-verification all pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LXExbWHeem2SNb7tZ2LGnc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI has failed on every branch since February. Because
npm run lintruns beforelerna run test, the test suite has not executed on a pull request in months — PR #65 merged in anUNSTABLEstate for this reason. The publish workflow tests separately, so releases stayed gated; pull requests did not.Two causes
Prettier had no ignore for generated output.
.prettierignorelistednode_modules,dist,archive*; the eslint config additionally ignoreddist-test. The two lists disagreed, so prettier checkeddist-testand.svelte-kit— which only exist after a build — and failed on 106 files nobody wrote. Aligned them and added.svelte-kitand.claude.Eslint reported 14 errors. Seven from
.claude/worktrees, a local directory it should never have read. The other seven were this idiom:Naming the discarded fields is how the omission works — they are not unused. Set
ignoreRestSiblingsinstead of scatteringeslint-disablecomments, which also retired the ones already in the tree.One thing worth revisiting separately
Removing those disables reformatted the files they were in, which prettier then flagged. That is an ordering problem in the script:
The formatter check runs before the fixer, so anything eslint rewrites is never checked, and the failure surfaces on someone else’s next run. I left the script alone and committed the formatted result rather than change the lint contract in a fix PR — but
--fixin CI mutates a checkout nothing will commit, soeslintwithout--fixis probably what CI wants.Verified
prettier --checkclean,eslintclean,npm run lintexits 0, and httpsig (145), better-auth and email-verification all pass.🤖 Generated with Claude Code
https://claude.ai/code/session_01LXExbWHeem2SNb7tZ2LGnc