Skip to content

ci: add the missing lint gate, and put typecheck in verify - #4

Merged
catomean merged 1 commit into
mainfrom
worktree-verify-floor-lint
Aug 16, 2026
Merged

ci: add the missing lint gate, and put typecheck in verify#4
catomean merged 1 commit into
mainfrom
worktree-verify-floor-lint

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

Third instance of one scaffold defect. ai-forms (#11) and ai-ration (#2) had exactly this, and so does threadkit:

  • No lint at all. ESLint was not a dependency, there was no config, and no script referenced it — so the fleet verify floor (lint AND typecheck AND test) was unmet.
  • typecheck existed but was not in verify. build is tsc -p, so types were checked only as a side effect of emitting. That conflates "compiles to dist" with "types are sound", and it evaporates the moment the build strategy changes.

verify = lint → typecheck → build → test.

The part worth acting on

Three repos with the same gap is a template problem, not three coincidences. The instance is fixed here; whatever generates "verify": "npm run build && npm test" needs the same edit, or repo four is born with it.

Naming that explicitly rather than quietly fixing instance three — an un-encoded "I'll remember" is exactly what the never-twice rule exists to prevent.

Verification

Recommended presets only; ~500 lines of library code doesn't need a bespoke rule set. Lint is clean on arrival, so this closes a hole rather than deferring a backlog.

npm run verify passes — eslint clean, tsc clean, build clean, 31/31 tests. CI needs no change; ci.yml already calls npm run verify verbatim.

🤖 Generated with Claude Code

Third instance of one scaffold defect. ai-forms (#11) and ai-ration (#2) had
exactly this, and so does threadkit:

  - No lint at all. ESLint was not a dependency, there was no config, and no
    script referenced it — so the fleet verify floor (lint AND typecheck AND
    test) was unmet.
  - `typecheck` existed but was not in `verify`. `build` is `tsc -p`, so types
    were checked only as a side effect of emitting. That conflates "compiles
    to dist" with "types are sound", and it evaporates the moment the build
    strategy changes.

verify = lint → typecheck → build → test.

Three repos with the same gap is a template problem, not three coincidences.
The instance is fixed here; the generator that produces `"verify": "npm run
build && npm test"` needs the same edit, or repo four is born with it. Naming
that explicitly rather than quietly fixing instance three — an un-encoded
"I'll remember" is the thing the never-twice rule exists to prevent.

Recommended presets only. ~500 lines of library code does not need a bespoke
rule set. Lint is clean on arrival, so this closes a hole rather than deferring
a backlog.

CI needs no change — ci.yml already calls `npm run verify` verbatim.

Verified: `npm run verify` passes — eslint clean, tsc clean, build clean,
31/31 tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@catomean
catomean merged commit 4856fb0 into main Aug 16, 2026
1 check passed
@catomean
catomean deleted the worktree-verify-floor-lint branch August 16, 2026 14:44
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.

1 participant