Repository navigation
Package thirdshift for crates.io and publish it on every release - #48
Merged
Merged
Conversation
The manifest gains a licence and an include list limited to the sources, the Factory skills, the README and the LICENSE. A custom dist publish job publishes the tagged version with trusted publishing once the release, and so the Rocky and WSL smoke jobs, has succeeded, skipping a version already on crates.io. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Also spell the test's "license" as the rest of the repository does. Co-Authored-By: Claude Opus 5.5 <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.
Summary
thirdshift can now be published to crates.io, and every release tag publishes it.
The new dist publish job runs after
host.hostonly runs once the Rocky and WSL smoke jobs have passed:release.ymlwas regenerated withdist generatefrompublish-jobs = ["./publish-crates"]indist-workspace.toml.Setup needed on crates.io after 0.1.0 is published by hand: add a trusted publisher for
JacobStephens2/thirdshiftwith workflowrelease.yml, notpublish-crates.yml. crates.io matches the OIDCworkflow_refclaim, which is the workflow that started the run, not the reusable one it calls.Evidence
cargo test --test packagingfails:.agents/skills/ask-matt/PHASE-BOUNDARIES.md is in the packageAfter: both packaging tests pass:
cargo packagepacks 36 files and builds the verify step from them.dist generate --checkis clean. The onlyCARGO_REGISTRY_TOKENin the repository is the short-lived output ofcrates-io-auth-action, and no secret is referenced.ci::waits_for_github_to_work_out_whether_the_pr_is_mergeable, which failed intermittently (1 of 3 runs) under load. This branch changes nosrccode, so it's a pre-existing timing flake.Merge Danger
Door: two-way. Publishing to crates.io itself is one-way, since versions can only be yanked, but merging this doesn't publish anything. That only happens on the next release tag, and only after the trusted publisher is set up.
Blast Radius: releases
If the crates.io publish fails, the GitHub Release is already out, but dist skips
announceand the release notes. That is dist's standard gating. Prerelease tags are not published to crates.io (dist's default).Unaddressed findings
Standards
includelist already leaves out (duplication): skipped. The issue's acceptance criteria name exactly these paths, so the test pins them explicitly.Spec
tests/packaging.rswas not asked for (scope creep): kept. It checks two acceptance criteria automatically and takes about 0.1s.announcenow waits on the publish job: skipped. This is dist-generated behaviour, andrelease.ymlmust not be hand-edited.cargo packagewarns that it is ignoring test targets: skipped. This is cosmetic, andautotests = falsewould turn off the repository's own tests.id-token/packages, and the workflow comment records the assumption.publish-crates.yml: skipped. The publish job never runs on pull requests, so running the smoke jobs on them would test nothing new.Closes #35
🤖 Generated with Claude Code