Appearance
Changelog
Architecture decisions and doc updates over time. Most recent first.
📅 March 20, 2026 — Per-Pool Stablecoin Configuration
💱 Per-pool stablecoin selection + docs correction
Per-pool stablecoins: Each pool defines which USD-backed stablecoins it accepts (USDC, USDT, DAI). Stored in pools.accepted_currencies (currency[] array, default '{USDC}'). Admin selects at pool creation; immutable once ACTIVE.
Docs fix: pool_accepted_currencies junction table in schema docs was incorrect — actual implementation uses pools.accepted_currencies array column. Docs updated to match DB.
Invest flow: Investor selects stablecoin if pool accepts multiple. Deposit records currency used. Contract addresses are chain-specific (not pool-specific).
Admin UI: Platform-level stablecoin config removed (was localStorage-only, never backend-connected). Replaced by per-pool selection in pool create wizard.
Smart contracts: addStablecoin() / removeStablecoin() documented for on-chain stablecoin management.
📅 March 17, 2026 — schema v2.17 R18
🔄 compound() → reinvest() rename + Reinvest V1 policy
Rename: compound() → reinvest() across contracts, API, and docs. /yield/compound/{distributionId} → /yield/reinvest.
BD5 Decided: Manual Reinvest V1 — investor clicks "Reinvest" CTA, calls pool.reinvest(totalYield) on-chain → new LP minted. Full yield only (no partial), same-pool only, lockup exempt.
New fields: min_reinvest_amount NUMERIC DEFAULT 50 on pools, is_reinvestment BOOLEAN DEFAULT false on deposits.
📅 March 14, 2026 — schema v2.15 R17
🗂️ Pool Categories → dynamic table
pool_category enum deprecated → category TEXT → FK pool_categories(name). Notion-style select UI. pool_categories table added with GET/POST /pool-categories endpoints.
📅 March 12, 2026 — schema v2.14 R16
🏦 Non-Custodial Architecture + 10 Gap Decisions Resolved
Architecture: All funds flow through Pool Smart Contracts. Aset as facilitator, not custodian. No VASP license required.
Deprecated: escrow_model (always SMART_CONTRACT), yield_distribution_model (always MANUAL_CLAIM), risk_tier (replaced by data-point approach).
New fields: collateral_type, collateral_ratio, yield_frequency, yield_trigger, allow_rollover, next_yield_due, yield_overdue.
Contract: PlatformEscrow merged into PlatformPool. New functions: claimYield(), reinvest(), mintLP(), fundRedemption(), distributeYield().
Brand: EF_POOL → AS_POOL, EMERGEFI_ISSUED → PLATFORM_ISSUED, EMERGEFI → PLATFORM (transfer_source).
Gap decisions: Risk transparency (Gap 1), Pool creation fields (Gap 2), Yield claim-based (Gap 3), Escrow release = LP mint (Gap 4), KYC RETRY/FINAL (Gap 5), FM onboarding (Gap 6), Early penalty per-investor (Gap 7), TVL cap (Gap 8), Notification matrix (Gap 9), Audit retention (Gap 10).
📅 March 2026 — schema v2.13 R15 (Admin Platform Release)
📦 Full schema rebuild for admin platform
v2.13 R15 — Detailed Changelog
Table Renames
issuers→fundsissuer_admins→fund_memberspending_receipts→deposits
Column Renames
pool_status→lifecycle_status(6-state enum)fund_wallet→pool_walletissuer_id→fund_idinvestment_blocked— restored with new semantics (TVL cap, not NAV-based)
New Tables (11)
admin_users,admin_user_permissions,admin_sessionsfund_pool_assignments,pool_accepted_currencies,pool_tvl_historyyield_distribution_investorsnotification_logs,notification_preferencesplatform_config,activity_events
New Enums (13 added to existing 6)
- pool_type, lifecycle_status, escrow_model, yield_distribution_model, lp_issuance_model
- penalty_type, yield_status, sbt_status, reject_type
- notification_channel, notification_status, notification_failure_type, transfer_source
Removed Tables (3)
platform_admins— merged intoadmin_usersfund_manager_assignments— replaced byfund_memberskyc_submissions— KYC fields merged intouserstable
Breaking Changes
- LP issuance: AUTO/MANUAL → FUND_ISSUED/PLATFORM_ISSUED
- Redemption: 2-stage admin approval → pool_type-specific flows (4 variants)
- Redemption status: APPROVED legacy removed → single-stage (Admin approve), FM_ACCEPTED/FAILED added
- Fund status: 3-state (ACTIVE/PAUSED/OFFBOARDED) → 2-state (ACTIVE/INACTIVE)
- Deposit: receipt_status → deposit_status (5-state)
- Re-added
investment_blocked BOOLEAN DEFAULT falseto pools — no longer NAV-based. Now auto-set true when TVL >=capacity. Manual admin toggle viais_pausedremains separate.
📅 February 2026 — 5 updates
✅ Feb 20, 2026 — PD1–PD4 decided + Gap report fixes (v6)
Oracle decisions finalized: PD1 integrated into PlatformPool, PD2 ORACLE_ROLE, PD3 Aset-operated, PD4 no fallback (admin pool pause for emergencies). Added ORACLE_ROLE to contracts. 13 missing DB fields added. yield_distributions placeholder table added. NAV Update status machine added. 10+ planned API endpoints. Removed NAV Emergency Override. Phase 3 Redemption added to Investment Lifecycle.
🔄 Feb 19, 2026 — Product spec sync + safety bounds simplified
PD6 (NAV Safety Bounds) removed — no floor, no per-tx limit, NAV capped at $1.0 max only. PD1 recommendation updated: Integrated into PlatformPool is now recommended over separate oracle contract. Tech stack verified from GitHub repo. API endpoints: 15 built, rest planned.
🔄 Feb 19, 2026 — Decisions System Overhaul (Batch 5)
Upgraded DECISIONS data model to BD1–BD6 + PD1–PD5 with dependsOn, blocks, referencedIn schema. Merged Business Decisions + Product Decisions into unified Decisions page. Side panel now shows dependency graph.
🗂️ Feb 11, 2026 — Docs Site Restructure (Batch 4)
Converted horizontal tab navigation to sidebar navigation docs site. Added: Overview & Architecture, Core Concepts, Smart Contracts, API Reference, Decisions, Timeline, and Changelog sections. Split Writedown & Redemption into two separate sections. Added decision badge system with slide-out panels.
📐 Feb 15, 2026 — NAV Model Migration (v5)
Replaced Principal Factor (PF) multiplier with NAV (nav_per_token) as the single loss indicator. Investment is no longer auto-blocked when NAV < $1.00. New investors pay fair current price. Writedown formula updated throughout. NAV changes no longer auto-block investment — only is_paused (manual) and investment_blocked (TVL cap) block new deposits.
📅 January 2026 — 2 updates
👥 Jan 2026 — RBAC Update: Fund Manager Role Added (v4)
Added Fund Manager as a third role (active fund-scoped operations). Clarified Admin vs Operator split. Updated permission matrix.
⏳ Mar 2026 — Single-Stage Redemption (v4)
Redemption simplified to single-stage: Admin approves → reserve check → payout. Operator recommend step removed (merged into approveRedemption). FIFO queue enforced. NAV snapshot locked at request time.
📅 December 2025 — 1 update
🚀 Dec 2025 — Initial Backend Logic Map Published (v1)
First version with Investment Lifecycle, Status Machines, Database Schema, and Business Decisions. Deployed to Vercel via GitHub integration.