Point the release job at the artifacts the build actually writes - #18
Conversation
v0.2.30 tagged cleanly and then failed at attestation with "Could not find subject at path release/codetruss-cli-0.2.30.tgz". Typecheck, tests, release:artifact, release:verify, and test:install had all passed; only the subject path was wrong. build-release.mjs writes into public/downloads/, not release/ — the directory moved when the script was rewritten, and release.yml was not updated with it. The script also no longer emits release-manifest.json; the equivalent metadata is public/downloads/codetruss-cli-latest.json, which is not a release asset. Resolve the three artifact paths under public/downloads/ and drop the manifest from the upload list. No other workflow behaviour changes: the archive is still built fresh, byte-compared against the immutable published copy by release:verify, and attested before the release is created. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 27 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
What broke
Tag
v0.2.30fired release run 31145203055, which failed at the attestation step:Everything before it passed —
pnpm typecheck,pnpm test,pnpm release:artifact,pnpm release:verify, andpnpm test:install. No release object and no partial assets were created, so the failure state is clean.Why
packages/cli/scripts/build-release.mjswrites its artifacts intopublic/downloads/. It used to write them intorelease/(const releaseDir = join(repoRoot, 'release')), and the directory moved when the script was rewritten in #16..github/workflows/release.ymlwas not part of that change and still resolvedrelease/codetruss-cli-${VERSION}.*.The rewritten script also no longer emits
release-manifest.json. Its replacement ispublic/downloads/codetruss-cli-latest.json, which is website metadata rather than a release asset, so the upload list simply loses that entry.The change
Three artifact paths repointed at
public/downloads/, andrelease/release-manifest.jsondropped fromgh release upload. Nothing else in the workflow moves.The uploaded asset names are unchanged, because
gh release uploaduses each file's basename —codetruss-cli-0.2.30.tgz,.tgz.sha256, and.sbom.cdx.json, which is whatFormula/codetruss.rbinhomebrew-codetrusspins.On the attestation story
The attested bytes are still built in CI, not trusted from the tree.
build-release.mjsbuilds a fresh deterministic archive, compares its digest against the committed immutable copy, and throws if they differ;release:verifythen byte-compares the archive contents against the eight published files and the SBOM. The subject handed toactions/attestis therefore proven identical to a clean in-CI build before anything is signed.Verification
CI on this branch exercises
release:artifactandrelease:verifyon all nine OS/Node combinations. The workflow path change itself is only provable by tagging, sov0.2.30will be re-cut at this commit once it lands.