Skip to content

feat: scoped-unfreeze by reason bitmask (#607) - #699

Merged
thlpkee20-wq merged 2 commits into
RevoraOrg:masterfrom
believetimothy:feat/freeze-scoped-unfreeze
Jul 29, 2026
Merged

feat: scoped-unfreeze by reason bitmask (#607)#699
thlpkee20-wq merged 2 commits into
RevoraOrg:masterfrom
believetimothy:feat/freeze-scoped-unfreeze

Conversation

@believetimothy

Copy link
Copy Markdown
Contributor

Closes #607. Adds reason-scoped unfreeze via u32 bitmask so clearing one reason does not unfreeze the holder while other reasons remain active.

- Add #[repr(u32)] to FreezeReason with explicit discriminants and
  to_bitmask() helper for safe bitmask operations
- Introduce DataKey2::HolderFreezeMask storing a u32 bitmask instead
  of a single FreezeReason, with legacy EmergencyFreeze fallback on read
- emergency_freeze_holder now ORs reason bits into the mask;
  idempotent when the reason is already active
- Add clear_freeze_reason(reason) to clear a single reason bit;
  only fully unfreezes (removes key, emits frz_clr) when mask == 0;
  emits frz_rc (freeze_reason_cleared) for partial clears
- emergency_unfreeze_holder delegates to clear_freeze_reason for
  backward compatibility
- process_ofac_attestation ORs SanctionsMatch bit with legacy migration
- Add get_holder_freeze_reasons query returning the raw bitmask
- Update storage layout schema with HolderFreezeMask and pre-existing
  missing registrations
- Add 10 comprehensive tests covering multi-reason freeze/clear,
  idempotency, event emission, and OFAC+manual interaction
@drips-wave

drips-wave Bot commented Jul 29, 2026

Copy link
Copy Markdown

@believetimothy Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@thlpkee20-wq
thlpkee20-wq merged commit 9c2e25c into RevoraOrg:master Jul 29, 2026
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.

Add freeze-reason-scoped unfreeze allowing partial thaw when only one reason is cleared

2 participants