Skip to content

fix(windows): gate chmod behind cfg(unix) to unblock v0.4.0 release#153

Merged
avrabe merged 1 commit intomainfrom
fix/windows-build
Apr 20, 2026
Merged

fix(windows): gate chmod behind cfg(unix) to unblock v0.4.0 release#153
avrabe merged 1 commit intomainfrom
fix/windows-build

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented Apr 20, 2026

Summary

The v0.4.0 release workflow (run 24649587813) failed on the Windows target:

```
error[E0433]: cannot find `unix` in `os`
error[E0599]: no function or associated item named `from_mode` found for struct `std::fs::Permissions`
```

`install_hook()` used `std::os::unix::fs::PermissionsExt` and `Permissions::from_mode(0o755)` without a platform gate. Wrapping the chmod in `#[cfg(unix)]` fixes it. On Windows, git runs hooks through Git-Bash regardless of NTFS executable bits, so the chmod is a no-op anyway.

`externals.rs` already handles this pattern correctly — this is the only remaining unix-only call site.

Test plan

  • `cargo check` clean on darwin
  • CI green (Linux + macOS + Windows cross-build via release.yml on tag, but CI's Test job will cover the type check here)

After merge: delete the (unreleased) `v0.4.0` tag and re-tag from the fix commit to retry the release.

🤖 Generated with Claude Code

install_hook() called Permissions::from_mode(0o755) unconditionally,
breaking the Windows release build with E0433/E0599. Windows git runs
hooks through Git-Bash regardless of NTFS executable bits, so skipping
the chmod is safe.

Blocks the v0.4.0 cross-platform release.

Trace: skip
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 2372ef7 Previous: 9a46e86 Ratio
store_insert/10000 17367452 ns/iter (± 3791841) 11232856 ns/iter (± 511354) 1.55
link_graph_build/10000 34816124 ns/iter (± 2286116) 27288200 ns/iter (± 1972523) 1.28

This comment was automatically generated by workflow using github-action-benchmark.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 20, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe avrabe merged commit aa706fc into main Apr 20, 2026
19 of 23 checks passed
@avrabe avrabe deleted the fix/windows-build branch April 20, 2026 05:39
avrabe added a commit that referenced this pull request Apr 21, 2026
Addresses three gaps found in the post-v0.4.0 dogfooding audit.

**v0.4.0 shipped-work artifacts** — `artifacts/v040-features.yaml` was
last touched 2026-04-12 and describes variant/PLE work (FEAT-106..114),
not the verification pyramid that actually shipped on 2026-04-19. New
file `artifacts/v040-verification.yaml` authors 4 design decisions
(DD-052 four-layer verification pyramid, DD-053 suffix-based
yaml-section matching, DD-054 non-blocking framing for formal CI
jobs, DD-055 cfg-gate platform syscalls), 8 features
(FEAT-115..122 covering Kani 27-harness expansion, differential YAML
tests, operation-sequence proptest, STPA-Sec suite, suffix-based UCA
extraction, nested control-action extraction, Zola export, Windows
support), and 1 requirement (REQ-060 cross-platform binaries).
Counts were verified against the actual codebase — 27 `#[kani::proof]`
attrs in proofs.rs, 6 differential tests, 16 STPA-Sec tests.

**Retroactive trailer map** — extended `AGENTS.md` with three more
legacy orphans (51f2054 #126, f958a7e, 75521b8 #44), a new v0.4.0
PR-level section for #150/#151/#152/#153, and an honest
"genuinely-unmappable" section calling out `ca97dd9f` (#95) whose
`SC-EMBED-*` trailers point to artifacts that were never authored.

**Verus Proofs → hard gate** — rules_verus PR #21 (merged as
5bc96f39) fixes the hub-repo's ambiguous `:all` alias by emitting
proper `toolchain()` wrappers per platform. Updates the git_override
pin from e2c1600a (Feb 2026, broken) to 5bc96f39 and removes
`continue-on-error: true` from the Verus job.

Implements: REQ-030, REQ-060
Refs: DD-052, DD-053, DD-054, DD-055, FEAT-115, FEAT-116, FEAT-117, FEAT-118, FEAT-119, FEAT-120, FEAT-121, FEAT-122
Verifies: REQ-030
avrabe added a commit that referenced this pull request Apr 21, 2026
Addresses three gaps found in the post-v0.4.0 dogfooding audit.

**v0.4.0 shipped-work artifacts** — `artifacts/v040-features.yaml` was
last touched 2026-04-12 and describes variant/PLE work (FEAT-106..114),
not the verification pyramid that actually shipped on 2026-04-19. New
file `artifacts/v040-verification.yaml` authors 4 design decisions
(DD-052 four-layer verification pyramid, DD-053 suffix-based
yaml-section matching, DD-054 non-blocking framing for formal CI
jobs, DD-055 cfg-gate platform syscalls), 8 features
(FEAT-115..122 covering Kani 27-harness expansion, differential YAML
tests, operation-sequence proptest, STPA-Sec suite, suffix-based UCA
extraction, nested control-action extraction, Zola export, Windows
support), and 1 requirement (REQ-060 cross-platform binaries).
Counts were verified against the actual codebase — 27 `#[kani::proof]`
attrs in proofs.rs, 6 differential tests, 16 STPA-Sec tests.

**Retroactive trailer map** — extended `AGENTS.md` with three more
legacy orphans (51f2054 #126, f958a7e, 75521b8 #44), a new v0.4.0
PR-level section for #150/#151/#152/#153, and an honest
"genuinely-unmappable" section calling out `ca97dd9f` (#95) whose
`SC-EMBED-*` trailers point to artifacts that were never authored.

**Verus Proofs → hard gate** — rules_verus PR #21 (merged as
5bc96f39) fixes the hub-repo's ambiguous `:all` alias by emitting
proper `toolchain()` wrappers per platform. Updates the git_override
pin from e2c1600a (Feb 2026, broken) to 5bc96f39 and removes
`continue-on-error: true` from the Verus job.

Implements: REQ-030, REQ-060
Refs: DD-052, DD-053, DD-054, DD-055, FEAT-115, FEAT-116, FEAT-117, FEAT-118, FEAT-119, FEAT-120, FEAT-121, FEAT-122
Verifies: REQ-030
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.

1 participant