Skip to content

feat: chainsaw-grade maturity upgrade (v0.2.0)#1

Merged
rocketman-code merged 4 commits intomainfrom
feat/chainsaw-grade-maturity
Feb 23, 2026
Merged

feat: chainsaw-grade maturity upgrade (v0.2.0)#1
rocketman-code merged 4 commits intomainfrom
feat/chainsaw-grade-maturity

Conversation

@rocketman-code
Copy link
Copy Markdown
Owner

Summary

Upgrades cargo-avail from v0.1.0 to v0.2.0 with production-grade maturity, driven by a pre-release code review.

Code fixes

  • Exit code 3 for network errors (previously conflated with "unavailable" as exit 1)
  • Honest CheckError::Internal variant for thread panics (no longer masquerades as IndexLookup)
  • --version flag

Features

  • --json flag for NDJSON machine-readable output

Infrastructure

  • clippy::pedantic enabled (zero suppressions needed)
  • Toolchain pinned via rust-toolchain.toml (1.85.0)
  • CI hardened: pinned toolchain, publish-check job on tags
  • CLAUDE.md project guide
  • CONTRIBUTING.md
  • GitHub issue templates (bug report, feature request) and PR template
  • docs/plans/ gitignored

Test plan

  • cargo test -- 40 pass, 0 fail, 5 ignored (network)
  • cargo clippy --all-targets -- -D warnings -- clean
  • cargo fmt --check -- clean
  • cargo doc --no-deps -- clean

rocketman-code added a commit that referenced this pull request Feb 23, 2026
- Make --json and --quiet mutually exclusive via clap conflicts_with
- Recover original crate name on thread panic instead of "?"
- Use "invalid" status in JSON output for InvalidName (matches tab format)
- Normalize #[ignore] style to string-message form in tests/api.rs
rocketman-code added a commit that referenced this pull request Feb 23, 2026
- Update README JSON example to match actual --json output (status "invalid" not "error")
- Gate publish-check CI job on quality checks via needs: directive
- Remove redundant serde_json from [dev-dependencies]
Exit code 1 now strictly means "at least one name is unavailable"
(taken, reserved, or invalid). Network and internal errors use exit
code 3, so CI scripts can distinguish "definitively unavailable" from
"we couldn't check."

- Add CheckError::Internal variant for honest thread-panic reporting
  (no longer masquerades as IndexLookup)
- Recover original crate name on thread panic via zip instead of "?"
- Normalize #[ignore] attributes to string-message form
--json outputs one JSON object per line (NDJSON) with name, status,
and optional error fields. InvalidName gets status "invalid" to match
tab-separated output; network errors get status "error".

--version prints the crate name and version from Cargo.toml.

--json and --quiet are mutually exclusive via clap conflicts_with.
- Enable clippy::pedantic (zero suppressions needed)
- Pin toolchain to 1.85.0 via rust-toolchain.toml
- CI: pin all jobs to 1.85.0, gate publish-check on quality jobs
- Add CLAUDE.md project guide
- Add CONTRIBUTING.md
- Add GitHub issue templates and PR template
Update Cargo.toml version, changelog, README examples, and gitignore
docs/plans/. Remove obsolete plan documents.
@rocketman-code rocketman-code force-pushed the feat/chainsaw-grade-maturity branch from 7ef86a6 to 69fd243 Compare February 23, 2026 01:02
@rocketman-code rocketman-code merged commit bceea3f into main Feb 23, 2026
7 checks passed
@rocketman-code rocketman-code deleted the feat/chainsaw-grade-maturity branch February 23, 2026 01:06
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