Fund Detail: Vault Operations
Operations By Screen Group
Refresh Vault State
Selecting Refresh Vault state runs the reads below together.
| Button name | Underlying operation | Explanation |
|---|---|---|
| Refresh Vault state | GET /auth/funds/{slug}/offer-wallet | Loads the Self-Custody Wallet address, chain-account state, owner email, and verification state. |
| Refresh Vault state | GET /auth/funds/{slug}/strategy | Loads the deployed Treasury Wallet, latest finalized valuation snapshot, strategy-operation history, asset and share metadata, and scanner position. A 409 means the Vault is not deployed and is shown as an unavailable contract rather than a page failure. |
| Refresh Vault state | GET /auth/funds/{slug}/investment-management | Loads the holdings, protocol snapshot, ledger rows, and deposit/redemption state used by the tiles and charts. |
| Refresh Vault state | USDC.balanceOf(TreasuryWallet) | Reads the Treasury Wallet's current USDC balance directly from the configured Sepolia provider. If this browser read fails, Tahoe falls back to an indexed observed balance and then to the latest finalized snapshot. |
Refresh is read-only. It does not move assets, authorize a wallet, fulfill a deposit or redemption, issue shares, burn shares, or finalize NAV.
Contract Utilities
| Button or link | Underlying operation | Explanation |
|---|---|---|
| Copy fund wallet address | Browser clipboard write | Copies the Self-Custody Wallet address. No blockchain or backend state changes. |
| Open fund wallet in explorer | External explorer navigation | Opens the Self-Custody Wallet address for the configured chain. |
| Copy Vault contract address | Browser clipboard write | Copies the Treasury Wallet contract address. No blockchain or backend state changes. |
| Open Vault or asset in explorer | External explorer navigation | Opens the Treasury Wallet or USDC contract address for independent inspection. |
Information Shown
Summary Tiles
| Tile | Primary source | Fallback or interpretation |
|---|---|---|
| AUM | Latest finalized navAssetsRaw | Fund Detail AUM when no finalized snapshot exists. |
| NAV / share | Latest finalized navUsdcRaw | Latest manager-visible NAV from NAV Management. |
| Shares issued | Finalized Vault share supply | Fulfilled-ledger share total when the finalized supply is absent or zero. |
| Holders | Current Investment Management holdings | Fund investor count when holdings have not loaded. |
| Deposits in flight | Investment Management Incoming Request lane | Sum and count of subscriptions still awaiting the next funding operation. |
| Claimable redemptions | Protocol claimableRedemptionAssetsRaw | $0 when no claimable amount is reported. |
The tiles intentionally mix finalized, indexed, ledger-derived, and fallback values. A tile is an operating indicator, not a proof that every source was observed at the same block or timestamp.
Self-Custody Wallet Card
The card shows:
- wallet address and explorer link;
- active or setup state;
- chain-account verification status;
- observed EIP-7702 delegation address;
- chain; and
- registered owner email.
The Self-Custody Wallet owns fund-controlled signatures. EIP-7702 designation does not grant Tahoe a reusable business authorization. Each money movement or Vault call still requires one exact durable operation and the owner signature described on the Self-Custody Wallet page.
Treasury Wallet Card
The card shows:
- deployed contract address and explorer link;
- Vault/share-token name and symbol;
- reported shares issued;
- USDC asset contract; and
- best available current USDC balance.
The Treasury Wallet owns pending and claimable subscription/redemption accounting. See Treasury Wallet for its operating semantics.
Shares Outstanding Chart
The chart is a Tahoe projection, not a historical totalSupply() query. It uses current ledger rows that have reached fulfilled states:
- fulfilled investments add shares;
- fulfilled or claimed redemptions subtract shares; and
- pending requests do not change the chart.
Each step uses the ledger row's creation time because the read model does not provide a separate fulfillment timestamp for the chart. The final value extends to the current time.
Assets In Vault Chart
The chart adds fulfilled investment amounts and subtracts fulfilled redemption amounts using the same ledger timestamps. Its final point is replaced with the current direct chain balance when available. This makes the endpoint align with the current Treasury Wallet balance, but it does not create a complete historical series for strategy drawdowns, returns, fees, or other asset movements.
Backend Operations Not Exposed On This Page
The fund-manager backend and Tahoe API adapter contain strategy commands, but the Vault Operations tab intentionally exposes no money-movement controls.
| Capability | Backend operation | Current page status |
|---|---|---|
| Draw assets from the Treasury Wallet for strategy use | POST /auth/funds/{slug}/strategy/drawdown with amountRaw and idempotencyKey | No button, sheet, ViewModel command, or owner-signing handoff on this page. |
| Return approved strategy liquidity to the Treasury Wallet | POST /auth/funds/{slug}/strategy/return with amountRaw and idempotencyKey | No button, sheet, ViewModel command, or owner-signing handoff on this page. |
| Report strategy assets for NAV | Backend strategy/report operation visible in strategy history | No Tahoe page action initiates the report from Vault Operations. |
| Fulfill subscriptions or redemptions | Investment and redemption fulfillment routes | Owned by Investment Management, not this page. |
| Record NAV | NAV routes | Owned by NAV Management, not this page. |
Do not infer an available manager workflow from an API helper alone. A usable fund-controlled strategy transfer also requires exact operation preparation, owner authentication, sponsored call preparation, owner signature, submission, and receipt reconciliation.
Actors And Permissions
| Actor | Read and refresh Vault Operations | Backend strategy drawdown or return |
|---|---|---|
| Owner | funds.read | nav.write, but not exposed on this page |
| Admin | funds.read | nav.write, but not exposed on this page |
| Ops | funds.read | nav.write, but not exposed on this page |
| Auditor | funds.read | Not permitted |
Opening Fund Detail is also blocked until the fund's Self-Custody Wallet exists and its chain account is verified. Wallet creation, registration, and EIP-7702 activation belong to the Fund Detail wallet gate, not to the visible Vault Operations tab.
Controls, Failures, And Recovery
| Condition | Page behavior or required response |
|---|---|
| Self-Custody Wallet is still being prepared | Show the setup state and complete the blocking wallet gate before relying on Fund Detail. |
| Treasury Wallet is not deployed | The strategy endpoint returns 409; show Not deployed and no Treasury Wallet facts. Deployment is out of band. |
| Wallet, strategy, or Investment Management read fails | Show Vault state could not be loaded and allow Refresh. |
| Direct USDC balance read fails | Fall back to an indexed balance only when it has an observed block, then to the latest finalized snapshot. |
| Indexed balance is zero with no observed block | Treat it as unavailable, not proof that the Treasury Wallet is empty. |
| No issued shares exist | Show the empty shares chart. |
| No fulfilled deposits exist | Show the empty assets chart. |
| Submitted chain operation is visible elsewhere | Wait for receipt reconciliation. Do not treat submission as confirmed balance or supply. |
| Development mock data is visible | Do not use it as evidence of wallet, Vault, balance, or settlement state. |
Capability Status
| Capability | Maturity | Execution owner or location | Current boundary |
|---|---|---|---|
| Read Self-Custody Wallet state | Live | This page | Same-site fund wallet status from the fund-manager API. |
| Read Treasury Wallet and finalized strategy state | Live | This page | Requires a deployed Vault; undeployed state is represented as unavailable. |
| Read current Treasury Wallet USDC balance | Partial | This page and configured Sepolia provider | Direct browser read with indexed and finalized fallbacks; deployed provider parity was not checked. |
| View AUM, NAV, supply, holders, deposits, and claimable redemptions | Partial | This page | Values come from sources with different observation times and fallback rules. |
| View shares and assets history | Partial | This page | Charts are ledger-derived projections, not complete historical chain queries. |
| Refresh all Vault monitoring state | Live | This page | Read-only and protected by funds.read. |
| Initiate strategy drawdown from Vault Operations | Unsupported | No Tahoe page action | Backend endpoint and API helper exist, but the workflow is not wired to this tab. |
| Initiate strategy return from Vault Operations | Unsupported | No Tahoe page action | Backend endpoint and API helper exist, but the workflow is not wired to this tab. |
| Initiate strategy asset report | Unsupported | External backend process | Report operations can appear in history, but this page has no command. |
| Fulfill a subscription or redemption | Live | Investment Management | This page monitors the result only. |
Owner Operating Checklist
Daily monitoring
- Refresh Vault state and confirm both wallet identities belong to the selected fund.
- Confirm the Self-Custody Wallet is verified and the Treasury Wallet is deployed.
- Reconcile the current Treasury Wallet balance with expected deposits, redemptions, and strategy movements.
- Compare shares issued and holders with Investment Management and the ledger.
- Investigate deposits in flight, claimable redemptions, and stale values.
Before relying on a value
- Check whether it is finalized, chain-read, indexed, ledger-derived, or a Fund Detail fallback.
- Confirm the valuation timestamp or observed block where one is available.
- Use the block explorer or owning workflow for independent evidence of an irreversible operation.
During an incident
- Preserve the selected fund, wallet addresses, Vault address, chain, operation id, transaction hash, and observed block.
- Refresh once and compare the owning backend and chain state before retrying any operation on another page.
- Never infer success from a toast, submitted call, or chart endpoint alone.
Known Product And Documentation Risks
- The tab is named Vault Operations, but its only business control is a read-only refresh. Strategy mutation routes are not wired into the page.
- The current card copy says the Self-Custody Wallet authorizes share issuance. More precisely, it signs a prepared Vault fulfillment; the investor later claims the shares.
- Summary tiles combine sources observed at different times and do not display a single shared as-of timestamp.
- Chart timestamps use ledger creation time instead of fulfillment or claim confirmation time.
- The assets chart does not reconstruct historical strategy drawdowns and returns; only the final live balance can reflect them.
- The direct balance helper currently uses the configured Sepolia provider path. Repository behavior was verified, but deployed chain/provider parity was not checked.
Technical Traceability
Frontend
- View:
apps/tahoe/src/views/AdminFundDetailView.vue - ViewModel:
apps/tahoe/src/features/admin/view-models/useTahoeAdminViewModels.ts - API adapter:
apps/tahoe/src/features/fund-manager/data/tahoeApi.ts - Direct chain balance read:
apps/tahoe/src/features/fund-manager/data/offerWalletDelegation.ts - Investment Management state:
apps/tahoe/src/features/admin/stores/adminStore.ts
Fund-Manager API
| Contract | Permission | Purpose |
|---|---|---|
GET /auth/funds/{slug}/offer-wallet | funds.read | Return Self-Custody Wallet setup and identity. |
GET /auth/funds/{slug}/strategy | funds.read | Return Treasury Wallet identity, finalized valuation state, and strategy-operation history. |
GET /auth/funds/{slug}/investment-management | funds.read | Return holdings, ledger, and protocol state used by tiles and charts. |
POST /auth/funds/{slug}/strategy/drawdown | nav.write | Backend-only strategy drawdown facade; not exposed on this page. |
POST /auth/funds/{slug}/strategy/return | nav.write | Backend-only strategy return facade; not exposed on this page. |
Backend evidence:
../fund-manager-api/app/routes.py../fund-manager-api/app/views/fund_manager_admin/vault.py../fund-manager-api/app/views/fund_manager_admin/common.py../fund-manager-api/app/schemas/fund_manager.py../fund-manager-api/utils/consts/group.py../evm-api/internal/app/vaultlifecycle/strategy.go
Focused Tests
apps/tahoe/src/__tests__/adminFundDetailOverview.test.tsapps/tahoe/src/__tests__/adminFundWalletGate.test.tsapps/tahoe/src/features/fund-manager/data/__tests__/tahoeApi.characterization.test.ts../fund-manager-api/tests/e2e/test_fund_manager_vault_commands.py../evm-api/internal/app/vaultlifecycle/strategy_test.go
Revision History
| Version | Date | Change |
|---|---|---|
| 1.0 | 2026-08-21 | Initial source-backed project-owner description of Vault Operations. |