Repository navigation
v1.0.0
What's Changed
RustForge 1.0.0 — the Phase 1 release-readiness items from docs/roadmap-production-ready.md land together: the adoption path is verified in CI rather than just documented, Miri is a first-class citizen for undefined-behavior detection, and machine-readable reports (JSON/LCOV/SARIF) exist for automated consumers. CI is now a 15-job pipeline.
Added
Phase 1.1 of docs/roadmap-production-ready.md: the adoption path is now verified in CI, not just documented. New stable-only adoption job (.github/workflows/ci.yml) exercises both adoption flows from docs/adoption.md end-to-end: cargo generate --path . output runs cargo test --workspace, and RustForge's crates/ copied into a synthetic host workspace (own root package, [workspace.package] and [workspace.lints.rust] inheritance tables present — the one gotcha that broke during manual testing) does the same. scripts/adoption-check.sh mirrors both legs locally via just adopt-test (the cargo-generate leg self-skips when the tool isn't installed). CI is now a 13-job pipeline (README/ci/README.md updated to match).
cargo-generate.toml: added a [template] exclude list so cargo generate actually works on this template. Two file classes needed it: the justfile (its just {{target}} variable syntax is valid liquid and would have been silently substituted away) and fuzz/seed_corpus/** (the binary utf8_input/invalid_bytes seed fails liquid parsing with "found invalid syntax"). Excluded files are still copied to the output — just verbatim. Previously cargo generate --git aborted on the binary seed file.
Phase 1.2 of docs/roadmap-production-ready.md: Miri is now a first-class citizen. New nightly-only miri CI job (.github/workflows/ci.yml) runs cargo +nightly miri test -p core-tests -p semantic-tests — interpreting the suite to detect undefined behavior and data races that native execution and fuzzing miss (shared_counter_after_workers' Arc pattern is exactly what Miri is built to check). just miri mirrors it locally (needs rustup toolchain install nightly --component miri). Scoped to two crates with default features because Miri can't run the other categories' tooling (tokio's runtime, loom's instrumentation, Criterion benches, trybuild's UI tests). See "Run Miri on the UB-prone corners" in docs/best-practices.md.
Phase 1.3 of docs/roadmap-production-ready.md: machine-readable outputs for automated consumers (CI dashboards, AI evaluators, anything that parses instead of reading logs):
nextest job now emits --message-format libtest-json (with NEXTEST_EXPERIMENTAL_LIBTEST_JSON=1 — the format is experimental in nextest; uploaded as the nextest-json artifact); the coverage job additionally emits LCOV (coverage-lcov artifact).
deny job emits cargo deny --format sarif check (the --format flag is global in cargo-deny, before the subcommand) and uploads it to GitHub code scanning (security-events: write scoped to the job, continue-on-error so forks/private repos without GHAS don't get a red job they didn't ask for).
New stable-only reports job: clippy diagnostics as JSON (clippy-json artifact) plus SARIF via clippy-sarif uploaded to code scanning — re-runs clippy deliberately (keeps the test job's gate human-readable) and omits -D warnings (reports findings, doesn't gate on them).
Local recipes: just test-json, just coverage-lcov, just clippy-json, just deny-json, just mutants-list-json / just mutants-json (cargo-mutants' --json serializes the mutant list only; run outcomes come from -o mutants.out's outcomes.json — see docs/machine-readable-outputs.md). Mutation results stay local-only — mutation testing remains exploratory, never a CI gate.
New doc docs/machine-readable-outputs.md indexes every structured report, its consumer, and where to get it.
CI is now a 15-job pipeline (README/ci/README.md updated to match).
Removed
Phase 1.4 of docs/roadmap-production-ready.md: release hygiene. Version cut from 0.2.0-alpha to 1.0.0. Removed the placeholder root tests/README.md (and the tests/ line in README's workspace layout) — it documented a "top-level integration tests when a root package is present" flow that can't exist in this virtual workspace (there is no root [package]), and adopters copying crates/ into their own workspace never use this repo's root tests/ directory anyway. Adopters who want top-level integration tests add a root package (or a tests/ dir) in their workspace, per docs/adoption.md.
- Phases 5-7: docs, lint consolidation, tooling, and advanced testing by @rwilliamspbg-ops in #11
- Phase 8 + Release prep: verification-focused CI additions, v0.2.0-alpha by @rwilliamspbg-ops in #12
- Bump schneegans/dynamic-badges-action from 1.7.0 to 1.9.0 by @dependabot[bot] in #13
- Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #14
- Bump insta from 1.48.0 to 1.49.0 in the cargo-dependencies group by @dependabot[bot] in #15
- Bump tokio from 1.53.1 to 1.53.2 in the cargo-dependencies group by @dependabot[bot] in #16
- Feat/phase 1 release readiness by @rwilliamspbg-ops in #17
Full Changelog: v0.1.0-alpha...v1.0.0