Skip to content

refactor!: enforce spawn invariants mechanically - #14

Open
P4suta wants to merge 7 commits into
mainfrom
ci/release-dry-run
Open

P4suta wants to merge 7 commits into
mainfrom
ci/release-dry-run

Conversation

@P4suta

@P4suta P4suta commented Aug 4, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • replaces weak spawn flags, semantic booleans, raw handles, correlated resource options, and field-order cleanup with closed policy types, typed handles, and consuming spawn states
  • always creates suspended, pins attribute backing, reclaims transferred resources before resume, and preserves primary plus cleanup failures
  • uses one closed, statically dispatched backend adapter so production and deterministic fault injection execute the same spawn state machine
  • forbids handwritten trait objects except the exact standard Error::source contract, along with runtime reflection, shared interior mutability, implicit globals, and nondeterministic collections
  • builds the current OComment main revision from source and enforces the zero-comment policy across tracked files
  • adds structured invariants plus Kani, Miri, cargo-careful, coverage, mutation, fuzz, stress, supply-chain, package, and release dry-run gates
  • documents the 0.2 migration and static-dispatch decision, and updates the public API snapshot

Local verification

  • OComment source revision 897c441e50a800817bfc16746bfe5c289b955ce5, confirmed against upstream main
  • comment policy, source policy, invariant registry, formatting, Clippy, rustdoc, MSRV 1.75, x64/i686/ARM64 target checks, and Linux empty-API check
  • default and all-feature suites: 110/110 each; default and all-feature doctests: 5/5 each
  • coverage: 3,698/3,698 regions, 447/447 functions, and 2,783/2,783 lines
  • mutation: 542 tested, 251 caught, 291 unviable, zero survivors, zero timeouts
  • stress: x64 10,000 spawn/cleanup cycles and i686 2,000 cycles with handle-count checks
  • cargo-deny, cargo-vet, and REUSE 3.3 compliance for 79/79 files
  • clean package build and packaged REUSE verification through cargo xtask ci

Remote verification

  • 29 applicable checks passed with zero failures
  • Kani, Miri, address sanitizer, cargo-careful, CodeQL, dependency review, coverage, Windows 2022/2025 stable and MSRV, Windows ARM64, stress, four mutation shards, and both 30-minute fuzz targets passed
  • scheduled-only nightly fuzz was skipped as intended for a pull request

Release safety

No package publication, tag creation, release workflow dispatch, GitHub Release operation, merge, or auto-merge is performed by this PR. The release-path CI job uses dry-run mode with read-only contents permission.

P4suta and others added 3 commits August 4, 2026 20:47
Every defect found in the release path so far was invisible to CI, because CI
tests the crate and nothing runs the release. The list, all from real failed
releases: an action missing from the repository allowlist, and then two more
that release-plz itself calls; a release-plz configuration that disagreed with
a manifest; a runner that cannot build the crate `cargo publish` verifies; a
`release_always` setting that made the crate permanently unreleasable. Each
one was found by attempting a release and reading the failure.

Run the real release action with `dry_run`. It downloads the same actions,
including the ones release-plz calls internally, parses the same
configuration, resolves the same versions, and performs the same `cargo
publish` verification build. It uploads nothing.

That covers the whole class: an unlisted action fails when it is downloaded, a
configuration conflict fails when it is parsed, and a runner that cannot build
the crate fails in the verification build -- all on the pull request instead of
during a release.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 19, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: bcc93b60-fe3a-413a-8784-c6ff39cba613


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@P4suta P4suta changed the title ci: exercise the release path on every pull request refactor!: enforce spawn invariants mechanically Sep 19, 2026
@P4suta
P4suta enabled auto-merge (squash) September 19, 2026 12:21
@P4suta
P4suta disabled auto-merge September 19, 2026 17:00
Comment thread .github/workflows/ci.yml
Comment on lines +241 to +246
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.head_ref || github.ref_name }}
- uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9

This branch has not been deployed

No deployments
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