Skip to content

Operations & Compliance

Notification matrix, audit log retention, yield overdue tracking, and TVL cap enforcement.

Notification Event Matrix

V1: Email only. Critical notifications are locked ON — users cannot disable them.

EventAdminOperatorFMInvestorCritical?
deposit_confirmedYes (granted)Yes (Fund)YesYes
lp_mintedYesYes
redemption_requestedYesYes (Fund)Yes
redemption_completedYesYes
yield_distributedYesYes
kyc_approvedYesYes
kyc_rejectedYesYes
sbt_mint_failedYesYes
lp_mint_failedYesYes
fm_notification_failedYesYes
pool_nav_updateYesYesNo
pool_maturedYesYesYesYesYes
large_deposit (>threshold)YesYesNo

Notification rules

  • Critical = Yes: Always sent. Cannot be disabled in notification preferences.
  • Critical = No: Respects notification_preferences table (email_enabled = true/false).
  • Failed notifications retry 3x with exponential backoff before marking as FAILED.
  • V1: Email channel only. Telegram/Slack deferred to V2.

Audit Log Retention & Export

SettingValue
Retention period2 years (730 days). Older records archived/deleted via scheduled job.
Export formatCSV. Admin-only (Operators cannot export).
Dashboard defaultLast 48 hours. "View All" opens full log with date range filters.
PII in exportWallet addresses included (pseudonymous). Emails NOT included.
Source tableactivity_events — single audit source for V1.

Yield Overdue Tracking

Yield Overdue Tracking

Calculation: next_yield_due = last_distribution_date + yield_frequency

Trigger: If now > next_yield_due and no distribution recorded → set yield_overdue = true

Action: Alert Admin + Investors. Overdue badge shown on pool detail and admin yield dashboard.

TVL Cap Enforcement

TVL Cap Enforcement

Flag: investment_blocked BOOLEAN DEFAULT false on pools table.

  1. On each successful LP mint → system recalculates: new_tvl = tvl + deposit_amount
  2. If new_tvl >= capacity → set investment_blocked = true
  3. On new deposit submission → check flag FIRST. If true → reject immediately, show "Pool is fully subscribed"
  4. Admin CAN manually toggle investment_blocked (e.g., reopen after redemptions reduce TVL)

⚠️ Edge cases

  • Deposits already PENDING when cap hit: continue processing (accepted before flag was set)
  • PENDING deposit's LP mint pushes TVL over: still processes (flag was false at submission time)
  • The flag is a forward-looking gate, not retroactive

D+7 Auto-Refund Safety Net

D+7 Auto-Refund Safety Net

Rule: If LP NOT minted within 7 days → contract auto-refunds USDC to investor.

refund_eligible_at = deposit_timestamp + 7 days

  • AS_POOL: Shouldn't trigger (auto-mint is instant) — safety net only.
  • FUND_POOL: Protects investor if FM is unresponsive.