Skip to content

fix(rust): make clawdstrike publishable on crates.io again#213

Merged
bb-connor merged 6 commits intomainfrom
fix/clawdstrike-publishability
Mar 19, 2026
Merged

fix(rust): make clawdstrike publishable on crates.io again#213
bb-connor merged 6 commits intomainfrom
fix/clawdstrike-publishability

Conversation

@bb-connor
Copy link
Copy Markdown
Collaborator

@bb-connor bb-connor commented Mar 18, 2026

Summary

  • align clawdstrike with the published hushspec 0.1.1 API instead of the stale vendored 0.1.0 surface
  • refresh the vendored hushspec snapshot to match the published crate and keep local builds consistent with crates.io verification
  • remove the fork-only nono::CapabilitySet::signal_mode() dependency from clawdstrike attestation output
  • update HushSpec compiler tests and point the crate manifest at the crate-local README

Why

cargo publish --dry-run -p clawdstrike was failing for 0.2.7, which is the root reason the Rust release lane drifted after the v0.2.7 release. This patch gets clawdstrike itself back to a real publishable state.

Validation

  • cargo test -p clawdstrike --lib
  • cargo test -p clawdstrike --test hushspec_compiler
  • cargo publish --dry-run --locked --allow-dirty -p clawdstrike

Note

Medium Risk
Touches policy compilation/merge semantics and sandbox attestation serialization, which can affect enforcement defaults and receipt output, but changes are localized and covered by new/updated tests.

Overview
Makes clawdstrike publishable again by updating its manifest metadata (crate-local README.md) and aligning the vendored hushspec dependency to 0.1.1 (lockfiles refreshed accordingly).

Updates the HushSpec compiler and decompiler to match the hushspec 0.1.1 API where several detection/origins fields are now optional, and adds merge-aware tracking so sparse overlays preserve inherited prompt_injection/jailbreak values instead of overwriting with defaults (plus new regression tests).

Adjusts sandbox attestation signal_mode reporting to be compatible with upstream nono: adds a build.rs probe + cfg gate and falls back to emitting "isolated" when signal_mode() is unavailable; CI coverage gating also excludes vendor/hushspec/ changes and a new vendored infra/vendor/diff snapshot is added.

Written by Cursor Bugbot for commit f490f3e. This will update automatically on new commits. Configure here.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e9921a34cd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.


if has_signal_mode {
println!("cargo:rustc-cfg=has_nono_signal_mode");
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Build script missing rerun-if-changed for external file

Low Severity

The build script reads infra/vendor/nono/src/capability.rs to decide whether to set has_nono_signal_mode, but never emits a cargo:rerun-if-changed directive for that path. Without it, Cargo only reruns the script when files inside the clawdstrike package change. If the nono vendor source is updated to add signal_mode() but no clawdstrike file changes, the cfg flag stays stale at false and signal_mode_label silently hard-codes "isolated" in attestation output—even when the sandbox actually allows signals.

Fix in Cursor Fix in Web

@bb-connor bb-connor merged commit 2a0e9d4 into main Mar 19, 2026
52 checks passed
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