ci: make the release publishable and the typecheck real - #48
Merged
Conversation
Two gates in the workflows were not doing their job. Found while
preparing the first release tag.
release.yml ran `go test ./...` without -p 1. ci.yml has that flag with
a comment explaining why: the db, handler and sshproxy integration
packages each reset the schema on the same database, so running packages
in parallel fails outright. Reproduced locally — 3 packages fail without
the flag, all pass with it. Tagging a release today would have died at
the test job and published nothing, leaving a tag with no image behind
it.
Both workflows also ran `npx tsc --noEmit`, which checks nothing here.
The root tsconfig is solution-style ("files": [] plus project
references), so that invocation compiles zero files and exits 0
regardless of the code. Verified by injecting a type error: `tsc -b
--noEmit` reports it, the previous command exits 0 on the same file.
CLAUDE.md already documents this trap; the workflows had not caught up,
so type errors could reach a release unchallenged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Found while preparing the first release tag. Two workflow gates were not doing their job, and one of them blocks releasing at all.
release.ymlcould not publishIt ran
go test ./...without-p 1.ci.ymlhas that flag with a comment explaining why: thedb,handlerandsshproxyintegration packages each reset the schema on the same database, so running packages in parallel fails outright.Reproduced locally against a real Postgres:
Pushing a tag today would have died at the
testjob and published nothing, leaving a dangling tag with no image and no release behind it.The typecheck checked nothing
Both workflows ran
npx tsc --noEmit. The roottsconfig.jsonis solution-style —"files": []plus project references — so that invocation compiles zero files and exits 0 no matter what the code says.Verified by injecting a deliberate type error:
CLAUDE.mdalready documents this trap in its command list; the workflows had never caught up. Type errors could reach a release unchallenged.Testing
Both corrected commands pass on
mainas-is, so this tightens the gates without changing any product code. The-p 1change makesrelease.ymlmatchci.yml, which has been green on this repo for months.Post-Deploy Monitoring & Validation
No runtime impact — CI configuration only. The validation is the next release: a tag push should now reach
build_and_releaseand publishghcr.io/forgeutah/deuce:<version>. If thetestjob still fails, the cause is a genuine test failure rather than the parallelism race.🤖 Generated with Claude Code