Skip to content

ci: no more pre-push hook; typecheck in five shards on the runners - #130

Merged
filipeforattini merged 4 commits into
mainfrom
ci/release-without-hooks
Sep 5, 2026
Merged

ci: no more pre-push hook; typecheck in five shards on the runners#130
filipeforattini merged 4 commits into
mainfrom
ci/release-without-hooks

Conversation

@filipeforattini

@filipeforattini filipeforattini commented Sep 5, 2026

Copy link
Copy Markdown

The husky pre-push hook typechecked all 37 packages on every push. Too heavy to live with on a laptop — that was already decided — and on a 4-vCPU runner it was killed mid-run inside the changesets action's git push, which is how the 0.17.0 release PR failed to regenerate.

What changes

  • .husky/ is gone, and so are the prepare script and the husky dependency. No git hooks run anywhere.
  • typecheck.yml runs the workspace in five shards, one job each (script/typecheck-shard.ts <index> <total>). Assignment is by sorted package name, deduplicated across overlapping workspace globs, so it is stable across runs and a failure names the package, not the shard. 32 packages carry a typecheck script; each shard gets six or seven.
  • The HUSKY: 0 workaround from the first version of this PR is not needed once the hook does not exist.

https://claude.ai/code/session_014XwJPDhq1ahcm3rd454WzQ

The changesets action pushes the version commit and the tag; each push runs the husky
pre-push hook, a typecheck of all 37 packages, for a commit that only bumps versions. The
runner killed it mid-run and the release PR was never regenerated. HUSKY=0 for that job:
hooks are for developers, and this workflow's inputs were typechecked on the PR that
produced them.

Claude-Session: https://claude.ai/code/session_014XwJPDhq1ahcm3rd454WzQ
The husky pre-push hook typechecked all 37 packages on every push. It was too heavy to
live with on a laptop, and on a 4-vCPU runner it was killed mid-run and took a release
with it. Gone, with husky itself. The typecheck workflow now runs the workspace in five
shards, one job each, assigned by sorted package name so a failure names the package.
The runners typecheck; the laptop does not.

Claude-Session: https://claude.ai/code/session_014XwJPDhq1ahcm3rd454WzQ
@filipeforattini filipeforattini changed the title ci: do not run developer git hooks in the release workflow ci: no more pre-push hook; typecheck in five shards on the runners Sep 5, 2026
@filipeforattini
filipeforattini enabled auto-merge (squash) September 5, 2026 14:30
filipeforattini and others added 2 commits September 5, 2026 11:30
Branch protection requires a status check called "typecheck"; the matrix renamed the
jobs to "typecheck (n/5)", so a green PR stayed blocked. A gate job with the old name
now depends on every shard and passes only when they all did.

Claude-Session: https://claude.ai/code/session_014XwJPDhq1ahcm3rd454WzQ
@filipeforattini
filipeforattini merged commit f527049 into main Sep 5, 2026
13 checks passed
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