Appearance
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.
| Event | Admin | Operator | FM | Investor | Critical? |
|---|---|---|---|---|---|
deposit_confirmed | — | Yes (granted) | Yes (Fund) | Yes | Yes |
lp_minted | — | — | — | Yes | Yes |
redemption_requested | — | Yes | Yes (Fund) | — | Yes |
redemption_completed | — | — | — | Yes | Yes |
yield_distributed | — | — | — | Yes | Yes |
kyc_approved | — | — | — | Yes | Yes |
kyc_rejected | — | — | — | Yes | Yes |
sbt_mint_failed | Yes | — | — | — | Yes |
lp_mint_failed | Yes | — | — | — | Yes |
fm_notification_failed | Yes | — | — | — | Yes |
pool_nav_update | — | Yes | Yes | — | No |
pool_matured | Yes | Yes | Yes | Yes | Yes |
large_deposit (>threshold) | Yes | Yes | — | — | No |
Notification rules
- Critical = Yes: Always sent. Cannot be disabled in notification preferences.
- Critical = No: Respects
notification_preferencestable (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
| Setting | Value |
|---|---|
| Retention period | 2 years (730 days). Older records archived/deleted via scheduled job. |
| Export format | CSV. Admin-only (Operators cannot export). |
| Dashboard default | Last 48 hours. "View All" opens full log with date range filters. |
| PII in export | Wallet addresses included (pseudonymous). Emails NOT included. |
| Source table | activity_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.
- On each successful LP mint → system recalculates:
new_tvl = tvl + deposit_amount - If
new_tvl >= capacity→ setinvestment_blocked = true - On new deposit submission → check flag FIRST. If
true→ reject immediately, show "Pool is fully subscribed" - 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.