chore(release): licence, MSRV, packaging and CI gates for 0.1.0 - #14
Merged
Conversation
Everything needed before `cargo publish`, and nothing else. LICENSE. Cargo.toml has declared MIT since the first commit while no licence text shipped, so the copyright notice the licence requires was missing. Body is byte-identical to nam-rs's. rust-version = "1.86". Without it a user on an older toolchain gets a wall of edition-2024 syntax errors instead of cargo's "requires rustc 1.86" message. The floor comes from url -> idna_adapter -> icu_*, not from this crate. exclude = [".github/", "scripts/", "Makefile", "CLAUDE.md", "docs/"]. CLAUDE.md in particular referenced gitignored design docs a consumer will never have. tests/ and examples/ stay: they are documentation. The tarball is 42 files. Cargo.lock is committed. It binds nothing downstream for a library, but it makes CI reproducible under --locked and gives Dependabot something to update. Dependabot for cargo and github-actions, weekly, with minor and patch grouped into one PR and majors arriving individually so they get read. This is the gap that let reqwest 0.13 sit unnoticed for eight months. Three new CI jobs: - docs: `cargo doc` with -D warnings. Not hygiene — docs.rs builds with these lints, and the broken link caught in review would have published 0.1.0 with a red "build failed" page and no documentation at all. - package: `cargo publish --dry-run`, so packaging breaks on a PR rather than on release day. - msrv: pinned to 1.86. Library only: wiremock 0.6 itself needs 1.88, and dev-dependencies are not what a consumer compiles. A declared MSRV with nothing enforcing it rots silently. `cargo test` now runs --locked so CI uses the committed lockfile. CHANGELOG.md is hand-written for this release; git-cliff can take over at 0.2.0 once the release shape is known. It records the three behaviours that will otherwise surprise people: no anonymous access, models() serving one architecture at a time, and models_count meaning different things on different endpoints. Verified locally: fmt, clippy, 70 tests, cargo doc with -D warnings, and cargo check on 1.86 all clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Prepares tone3000-rs for the 0.1.0 crates.io release by adding required licensing, tightening packaging metadata, and introducing CI/Dependabot gates that make release readiness and MSRV enforceable.
Changes:
- Add MIT
LICENSEand a first-releaseCHANGELOG.md. - Declare MSRV (
rust-version = "1.86"), commitCargo.lock, and trim the published crate contents viaexclude. - Add CI jobs for docs (
rustdocwarnings as errors), packaging (cargo publish --dry-run), and MSRV checking; add weekly Dependabot updates.
Reviewed changes
Copilot reviewed 5 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| LICENSE | Adds MIT license text required for publishing. |
| CHANGELOG.md | Introduces a 0.1.0 changelog entry and release links. |
| Cargo.toml | Declares MSRV, adds publish excludes, and keeps release metadata consistent. |
| Cargo.lock | Commits a lockfile to enable reproducible CI via --locked. |
| .gitignore | Stops ignoring Cargo.lock so it can be committed. |
| .github/workflows/ci.yml | Adds docs/package/MSRV CI gates and runs tests with --locked. |
| .github/dependabot.yml | Configures weekly Dependabot updates (cargo + GitHub Actions). |
Suppressed comments (1)
.github/workflows/ci.yml:27
cargo docshould also run with--lockedto ensure docs builds use the committedCargo.lock(matchingcargo test --locked/cargo publish --dry-run --locked) and to prevent lockfile drift being masked in CI.
- uses: dtolnay/rust-toolchain@stable
- run: cargo doc --no-deps --all-features
env:
RUSTDOCFLAGS: -D warnings
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
Last PR before
cargo publish. Everything needed to release, nothing else.The blocker
LICENSEdid not exist.Cargo.tomlhas declaredlicense = "MIT"since the first commit while no licence text shipped — so the copyright notice MIT requires was missing from both the repo and the crate. Body is byte-identical tonam-rs's.Packaging
rust-version = "1.86"— without it, a user on an older toolchain gets a wall of edition-2024 syntax errors instead of cargo'srequires rustc 1.86message. The floor comes fromurl→idna_adapter→icu_*, not from our code.exclude = [".github/", "scripts/", "Makefile", "CLAUDE.md", "docs/"].CLAUDE.mdin particular referenced gitignored design docs a consumer will never have.tests/andexamples/stay — they're documentation. Tarball is 42 files, 206.6KiB (56.3KiB compressed).Cargo.lockis now committed. It binds nothing downstream for a library, but it makes CI reproducible under--lockedand gives Dependabot something to update.Dependabot
Cargo and github-actions, weekly. Minor and patch grouped into one PR; majors arrive individually so they actually get read. This is precisely the gap that let reqwest 0.13 sit unnoticed for eight months.
Three new CI jobs
docs—cargo docwith-D warningspackage—cargo publish --dry-runmsrv— pinned to 1.86cargo testalso runs--lockednow.CHANGELOG
Hand-written for this release;
git-cliffcan take over at 0.2.0 once the release shape is known. It records the three things that will otherwise surprise people: no anonymous access,models()serving one architecture at a time, andmodels_countmeaning different things on different endpoints.Verification
Ran every CI job locally:
cargo fmt --check,clippy --all-targets --all-features -D warnings,cargo test --all-features --locked(70 passing),cargo docwithRUSTDOCFLAGS=-D warnings,cargo +1.86 check --locked, andcargo publish --dry-run --locked— which packaged and compiled the crate standalone.🤖 Generated with Claude Code