Repository navigation
Add licensing, spelling, and unsafe-documentation gates - #7
Merged
Merged
Conversation
Closes the two baseline gaps that separated this repository from its siblings, both of which turned up real findings. Licensing and spelling: - Add REUSE.toml and LICENSES/, reaching REUSE 3.3 compliance at 58/58 files. This was the only one of the four Windows crates with no REUSE metadata at all. Annotations are path-based rather than per-file SPDX headers, matching windows-spawn, so no source file needed touching. - Add _typos.toml and run both tools in a new required CI job. The spell-check found one real misspelling in a CI helper test label. - Ship REUSE.toml and LICENSES/ in the package, as the siblings do. Unsafe documentation: - Deny clippy::undocumented_unsafe_blocks workspace-wide. CONTRIBUTING already required a specific safety justification on every unsafe block and ADR 0003 confines unsafe to src/sys.rs, but nothing checked it. - Fifteen blocks had no justification. Two were production code (RmCancelCurrentTask and RmEndSession, where the argument is that the `ended` guard serializes the call and keeps the session alive). The other thirteen were the hardening tests that deliberately fabricate malformed RM_FILTER_INFO records with out-of-bounds and misaligned pointers -- precisely where the invariants most needed writing down. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
P4suta
enabled auto-merge (squash)
August 3, 2026 11:40
fsfe/reuse-action and crate-ci/typos are not on this repository's Actions allowlist, so the CI workflow failed at startup rather than running. The allowlist is a deliberate security control, so install both tools directly rather than widening it; taiki-e/install-action is already allowed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the two baseline gaps that separated this repository from its siblings. Both turned up real findings rather than just adding ceremony.
Licensing and spelling
REUSE.tomlandLICENSES/, reaching REUSE 3.3 compliance at 58/58 files. This was the only one of the four Windows crates with no REUSE metadata at all. Annotations are path-based rather than per-file SPDX headers — matchingwindows-spawn— so no source file needed touching._typos.tomland run both tools in a new requiredLicensing and spellingjob. The spell-check found one real misspelling in a CI helper test label (unparseable→unparsable); the helper self-test still passes.REUSE.tomlandLICENSES/in the package, as the siblings do.Unsafe documentation
Deny
clippy::undocumented_unsafe_blocksworkspace-wide.CONTRIBUTING.mdalready required a specific safety justification on everyunsafeblock, and ADR 0003 confinesunsafetosrc/sys.rs— but nothing enforced either.Fifteen blocks had no justification:
RmCancelCurrentTaskandRmEndSession, where the argument is that theendedguard serializes the call and the upgradedArckeeps the session alive across it.RM_FILTER_INFOrecords with out-of-bounds and misalignedstrFilenamepointers and unterminated strings. That is precisely where the invariants most needed writing down: the reader has to be able to tell "this pointer is bogus on purpose, and the parser must reject it without dereferencing" from an actual defect.Verification
fmt,clippy -D warnings(with the new lint),test --workspace --all-targets --all-features,test --doc,typos,reuse lint,cargo deny check, and the Dependabot policy self-test all pass locally.cargo package --listconfirms the new licensing files ship.Does not touch #4.