Skip to content

feat: complaincies#183

Merged
1nonlypiece merged 5 commits intoCommitlabs-Org:masterfrom
Yunusabdul38:compliancies
Feb 26, 2026
Merged

feat: complaincies#183
1nonlypiece merged 5 commits intoCommitlabs-Org:masterfrom
Yunusabdul38:compliancies

Conversation

@Yunusabdul38
Copy link
Contributor

Closes: #131

verify_compliance Implementation for Different Commitment States

Issue Description

The verify_compliance function needed to return defined results for commitments in different states (settled, violated, active).

Implementation

Changes Made

1. Updated verify_compliance in contracts/attestation_engine/src/lib.rs

The function now handles all commitment states explicitly:

  • "settled": Returns true (commitment was compliant until settlement)
  • "violated": Returns false (rule violation occurred)
  • "early_exit": Returns false (exited before maturity)
  • "active": Checks current metrics against rules (drawdown_percent <= max_loss && compliance_score >= 50)
  • Unknown status: Returns false (safe default)

2. Added Comprehensive Test Coverage in contracts/attestation_engine/src/tests.rs

Added 7 new test cases:

  1. test_verify_compliance_settled_commitment_returns_true - Verifies settled commitments return true
  2. test_verify_compliance_violated_commitment_returns_false - Verifies violated commitments return false
  3. test_verify_compliance_early_exit_returns_false - Verifies early exit commitments return false
  4. test_verify_compliance_active_commitment_within_rules_returns_true - Verifies active commitments within rules return true
  5. test_verify_compliance_active_commitment_exceeds_loss_returns_false - Verifies active commitments exceeding loss limit return false
  6. test_verify_compliance_nonexistent_commitment_returns_false - Verifies nonexistent commitments return false
  7. test_verify_compliance_uninitialized_contract_returns_false - Verifies uninitialized contract returns false

3. Fixed Test Compilation Issues in contracts/commitment_core/src/tests.rs

Added missing grace_period_days: 0 field to all CommitmentRules struct initializations that were missing it.

Test Results

All tests pass successfully:

Running unittests src/lib.rs (attestation_engine)
running 9 tests
test tests::test_initialize_and_getters ... ok
test tests::test_initialize_twice_fails ... ok
test tests::test_verify_compliance_settled_commitment_returns_true ... ok
test tests::test_verify_compliance_violated_commitment_returns_false ... ok
test tests::test_verify_compliance_early_exit_returns_false ... ok
test tests::test_verify_compliance_active_commitment_within_rules_returns_true ... ok
test tests::test_verify_compliance_active_commitment_exceeds_loss_returns_false ... ok
test tests::test_verify_compliance_nonexistent_commitment_returns_false ... ok
test tests::test_verify_compliance_uninitialized_contract_returns_false ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

Workspace tests also pass:

cargo test --workspace --lib
test result: ok. All workspace tests passed

Acceptance Criteria Met

verify_compliance(commitment_id) when commitment status is "settled" → returns true
verify_compliance(commitment_id) when "violated" → returns false
verify_compliance(commitment_id) when "early_exit" → returns false
verify_compliance(commitment_id) when "active" and rules met → returns true
verify_compliance(commitment_id) when "active" and rules violated → returns false
✅ Behavior for non-active commitments is defined and tested
✅ All workspace tests pass without errors

CI Workflow Compatibility

The implementation is compatible with the .github/workflows/soroban-contracts-ci.yml workflow:

  1. ✅ Builds successfully with cargo build --target wasm32-unknown-unknown --release
  2. ✅ All unit tests pass with cargo test --workspace
  3. ✅ No compilation errors or warnings in modified files
  4. ✅ Code follows existing patterns and conventions

Files Modified

  1. contracts/attestation_engine/src/lib.rs - Updated verify_compliance function
  2. contracts/attestation_engine/src/tests.rs - Added 7 comprehensive test cases
  3. contracts/commitment_core/src/tests.rs - Fixed missing grace_period_days fields

Documentation

The verify_compliance function now includes comprehensive documentation explaining the behavior for each commitment state:

/// Verify commitment compliance
/// 
/// Returns compliance status based on commitment state:
/// - "settled": true (compliant until settlement)
/// - "violated": false (rule violation occurred)
/// - "early_exit": false (exited before maturity)
/// - "active": checks current metrics against rules
pub fn verify_compliance(e: Env, commitment_id: String) -> bool

@Yunusabdul38
Copy link
Contributor Author

@1nonlypiece please review

@1nonlypiece
Copy link
Contributor

please resolve the conflicts

@Yunusabdul38
Copy link
Contributor Author

please resolve the conflicts

@1nonlypiece conflict resolved

@1nonlypiece 1nonlypiece merged commit 7f9af67 into Commitlabs-Org:master Feb 26, 2026
1 check 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.

Add tests for verify_compliance when commitment is already settled

2 participants