Skip to content

Feat/phase 1 release readiness - #17

Merged
rwilliamspbg-ops merged 3 commits into
mainfrom
feat/phase-1-release-readiness
Oct 14, 2026
Merged

rwilliamspbg-ops merged 3 commits into
mainfrom
feat/phase-1-release-readiness

Conversation

@rwilliamspbg-ops

Copy link
Copy Markdown
Owner

What and why

Checklist

  • cargo fmt --all --check passes
  • cargo clippy --workspace --all-targets --all-features -- -D warnings passes
  • cargo test --workspace --all-features passes
  • cargo test -p syntax-tests --features compile-fail passes on stable, if syntax-tests' UI fixtures changed
  • New optional tooling is behind a Cargo feature and MSRV-pinned if needed (see README's "MSRV" section)
  • README.md / docs/adoption.md updated if this adds or changes a category, feature flag, or CI job
  • CHANGELOG.md updated under [Unreleased]

…ate (Phase 1.1)

Phase 1.1 of docs/roadmap-production-ready.md: the adoption path is now
verified in CI, not just documented.

- .github/workflows/ci.yml: new stable-only 'adoption' job exercises both
  adoption flows from docs/adoption.md end-to-end — 'cargo generate --path .'
  output runs 'cargo test --workspace', and 'crates/' copied into a synthetic
  host workspace (own root package, [workspace.package] and
  [workspace.lints.rust] inheritance tables present) does the same. CI is now
  a 13-job pipeline.
- scripts/adoption-check.sh (new): mirrors both legs locally via
  'just adopt-test'; the cargo-generate leg self-skips when the tool isn't
  installed. Committed with the exec bit (git update-index --chmod=+x) so
  './scripts/adoption-check.sh' works from a fresh checkout.
- cargo-generate.toml: [template] exclude list so 'cargo generate' actually
  works — the justfile's {{target}} (valid liquid, would be silently
  substituted away, corrupting the fuzz-run recipe) and fuzz/seed_corpus/**
  (binary utf8_input/invalid_bytes seed fails liquid parsing). Excluded files
  are still copied, verbatim.
- Docs: roadmap, ci/README.md, README (12->13 jobs), docs/adoption.md,
  CHANGELOG, scripts/README.

Verified locally: both legs pass — 16 test binaries / 37 tests (cargo
generate output) and 18 / 37 (synthetic host workspace), 0 failures.
…2, 1.3)

Phases 1.2 and 1.3 of docs/roadmap-production-ready.md.

Phase 1.2 — Miri as a first-class citizen:
- .github/workflows/ci.yml: new nightly-only 'miri' job runs
  'cargo +nightly miri test -p core-tests -p semantic-tests', interpreting
  the suite to detect UB and data races native execution and fuzzing miss.
  'just miri' mirrors it locally. Scoped to two crates with default
  features because tokio/loom/criterion/trybuild tooling can't run under
  interpretation. See "Run Miri on the UB-prone corners" in
  docs/best-practices.md.
- Verified: 9 semantic tests + 4 core doc-tests pass under Miri.

Phase 1.3 — machine-readable outputs for automated consumers:
- 'nextest' job emits '--message-format libtest-json' (needs
  NEXTEST_EXPERIMENTAL_LIBTEST_JSON=1; uploaded as the 'nextest-json'
  artifact); 'coverage' job additionally emits LCOV ('coverage-lcov').
- 'deny' job emits 'cargo deny --format sarif check' and uploads it to
  code scanning ('security-events: write' scoped to the job; upload is
  continue-on-error so forks/private repos without GHAS get no red job).
- New stable-only 'reports' job: clippy JSON ('clippy-json' artifact) +
  SARIF via clippy-sarif to code scanning — re-runs clippy deliberately
  (keeps the 'test' gate human-readable), omits -D warnings (reports
  findings, doesn't gate on them).
- New local recipes: 'just test-json', 'coverage-lcov', 'clippy-json',
  'deny-json', 'mutants-list-json', 'mutants-json'. Mutation results stay
  local-only — mutation testing remains exploratory, never a 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).

Every command was verified against real execution, which caught three
would-be-broken invocations before commit: nextest rejects plain 'json'
(its value is 'libtest-json', gated behind
NEXTEST_EXPERIMENTAL_LIBTEST_JSON=1), and cargo-deny's '--format'/
'--manifest-path' are global flags that belong before 'check'. cargo-mutants'
'--json' turned out to apply to '--list' only, so outcomes ship via the
'-o' directory's outcomes.json instead.
Phase 1.4 of docs/roadmap-production-ready.md — the last Phase 1 item:

- CHANGELOG: the Unreleased section is now [1.0.0] - 2026-10-14 (the
  Phase 1.1-1.3 work), with a fresh empty Unreleased above it. 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 (no root [package]), and adopters copying crates/
  into their own workspace never use this repo's root tests/ dir.
  Adopters wanting top-level integration tests add a root package in
  their own workspace per docs/adoption.md.
- docs/roadmap-production-ready.md: Phase 1 fully complete (1.1-1.4 all
  ✅).
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

@rwilliamspbg-ops
rwilliamspbg-ops merged commit ad61c70 into main Oct 14, 2026
22 checks passed
@rwilliamspbg-ops
rwilliamspbg-ops deleted the feat/phase-1-release-readiness branch October 14, 2026 15:51
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.

2 participants