Skip to content

ci: cut the nightly deep verification to about an hour - #41

Merged
P4suta merged 3 commits into
mainfrom
ci/nightly-budget
Oct 13, 2026
Merged

P4suta merged 3 commits into
mainfrom
ci/nightly-budget

Conversation

@P4suta

@P4suta P4suta commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Summary

Closes #40.

The nightly deep verification spent about twelve hours of runner time each night, ten of them fuzzing.
It now spends about an hour.

  • Each fuzz target runs for fifteen minutes instead of five hours.
  • The stress test runs 20000 spawns on x64, where it ran 100000, and 5000 on i686, where it ran 20000.
  • The random cases run at ten times their size instead of fifty.
  • The job timeouts follow the new budget, and ADR 0017 and CONTRIBUTING state it.

The PR checks don't change.

The PR also removes eight of the eleven registered lint exceptions.

  • The spawn tests no longer silence as, expect, and unwrap_in_result across the whole file, and their crate doc keeps missing_docs satisfied off Windows.
    Handles pass between Win32 calls as pointers, a probe's handle travels as {:p} text, and a malformed probe or an open gate returns an error.
  • A value becomes a handle through a byte offset from null, and the DWORD conversions move to domain::conversion_rules and convert through bytes.
    Three of the four as exceptions in sys and its truncation exception go, and Kani proves the width conversions for every input.
  • Reading a handle's value, the sys module's unsafe, and a probe's exit keep their exceptions, because Rust 1.75 has neither addr nor #[expect].

Validation

  • actionlint passed, and zizmor reports nothing for deep-verification.yml.
  • On Windows 11, 1300 stress spawns took 7.7 seconds on x64 and 10.5 seconds on i686, so the nightly stress runs take minutes.
  • On macOS, each fuzz target ran 2 million or more cases in one minute, so fifteen minutes still exercise them well.
  • On Windows 11, cargo xtask ci passed through the Linux-empty step.
    There cargo deny couldn't refresh its advisory database, and on macOS it passed with the cached one.
  • cargo xtask proofs kani verified every proof, including the three new ones, and every negative control failed on its marker.
  • cargo miri test passed the conversion unit tests.
  • Clippy passed for x64, i686, and ARM64 Windows, and Rust 1.75 checked x64 and i686.

Checklist

  • The relevant local tests ran.
  • Deterministic tests cover each behavior change.
  • The docs state each new or changed ownership, safety, or cleanup contract.
  • The public API doesn't change.
  • The PR holds no secrets or public vulnerability details.
  • The PR stays focused and updates the relevant documentation.

@coderabbitai ignore

The nightly workflow spent about twelve hours of runner time, ten of them fuzzing two small targets that keep no corpus.
Each fuzz target now runs for fifteen minutes, the stress test 20000 times on x64 and 5000 times on i686, and the random cases at ten times their size.
ADR 0017 and CONTRIBUTING state the new budget.

Refs #40
…ptions

The spawn tests no longer silence `as`, `expect`, and `unwrap_in_result` across the whole file, and their crate doc keeps `missing_docs` satisfied off Windows.
Handles pass between Win32 calls as pointers, a probe's handle travels as `{:p}` text, and a malformed probe or an open gate returns an error.
A value becomes a handle through a byte offset from null.
The `DWORD` conversions move to `domain::conversion_rules` and convert through bytes, and Kani proves them for every input.
Reading a handle's value keeps the one `as` exception until the MSRV has `addr`.
@P4suta
P4suta marked this pull request as ready for review October 13, 2026 17:29
@P4suta
P4suta merged commit d4d51da into main Oct 13, 2026
32 checks passed
@P4suta
P4suta deleted the ci/nightly-budget branch October 13, 2026 17:29
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.

ci: cut the nightly deep verification to about an hour

1 participant