| 6000 | 0x1770 | MarketNotActive | Market is not active | Market.is_active is false. Wait for the operator to reactivate the market. |
| 6001 | 0x1771 | InvalidAmount | Invalid amount | A zero amount, a redeem with l_amount or s_amount at 0, a redeem whose balanced pair has a zero leg (for example one atom of L worth less than one base unit of S), more than the outstanding supply, or a token account whose mint doesn’t match the market. Keeper price writes also raise it for a move over 25% or a Stress exit that skips Recovery. It also covers a rebalance_collateral from a market to itself or between two markets that share a vault, and a wrong vault account on the collateral instructions. |
| 6002 | 0x1772 | InsufficientCollateral | Insufficient collateral in vault | A keeper single-side redeem would leave the market under 100%, or a withdrawal would take it below its target ratio. rebalance_collateral raises it when the source has nothing above its target, and deploy_collateral_to_yield when the vault holds less than the amount. User mint and redeem don’t raise it. |
| 6003 | 0x1773 | InvalidOracle | Invalid oracle account | At setup or on a Normal-state read: the oracle account isn’t the market’s OracleConfig PDA (Continuum) or doesn’t parse as a Pyth feed. A wrong oracle on mint or redeem fails Anchor’s address check (2012) instead. |
| 6004 | 0x1774 | UnsupportedOracleType | Unsupported oracle type | oracle_type is Switchboard. Only Pyth and Continuum are accepted. |
| 6005 | 0x1775 | OraclePriceUnavailable | Oracle price unavailable | No usable price: a Normal-state oracle read failed (Pyth older than 60 s, or confidence over 2% of price), the confidence band is as wide as the price, or a keeper write carried a rejected source timestamp. |
| 6006 | 0x1776 | MathOverflow | Math overflow | Arithmetic overflow. Not expected in normal use. |
| 6007 | 0x1777 | SymbolTooLong | Asset symbol too long | initialize_market symbol over 10 bytes, or create_token_metadata name over 32, symbol over 10 or URI over 200 bytes. |
| 6008 | 0x1778 | FeeTooHigh | Fee too high (max 10%) | A mint or redeem fee above 1,000 bps, or dev_tax_pct above 25. |
| 6009 | 0x1779 | MintNotAllowedInStress | Minting not allowed during Stress mode | The market is in Stress and allow_mint_in_stress is false (the default, and the setting on every live market). Use the bin book. |
| 6010 | 0x177a | RedeemNotAllowedInStress | Redeeming not allowed during Stress mode | The market is in Stress and allow_redeem_in_stress is false (the default, and the setting on every live market). Use the bin book. |
| 6011 | 0x177b | ExceedsStressMintCap | Amount exceeds stress mode mint cap | Stress only, when minting is allowed and stress_mint_cap is non-zero: the deposit is above the cap. Live markets block mint in Stress, so this can’t fire today. |
| 6012 | 0x177c | TwapNotAvailable | TWAP price not available - keeper has not updated | The market price is 0 or more than 300 s old. The keeper stops pushing while the underlying market is closed, so mint and redeem revert until it reopens. Trade on the bin book meanwhile. |
| 6013 | 0x177d | AlreadyEnabled | Multi-collateral mode already enabled | enable_multi_collateral on a market where it is already on. |
| 6014 | 0x177e | MultiCollateralNotEnabled | Multi-collateral mode not enabled | add_collateral_vault before enable_multi_collateral. |
| 6015 | 0x177f | MaxCollateralTypesExceeded | Maximum number of collateral types exceeded | A sixth collateral_vaults entry. The limit is 5. |
| 6016 | 0x1780 | InvalidWeight | Invalid weight - must be between 1 and 10000 | A collateral weight of 0 or above 10,000 bps. |
| 6017 | 0x1781 | CollateralAlreadyExists | Collateral type already exists | add_collateral_vault with a mint that is already listed. |
| 6018 | 0x1782 | CollateralNotFound | Collateral type not found | update_collateral_vault with a mint that isn’t listed. |
| 6019 | 0x1783 | BelowMinimum | Amount below minimum ($10) | A mint deposit under 10 cUSDC (10_000_000 base units), or a redeem whose balanced pair is worth under 10 cUSDC at the quoted NAV. |
| 6020 | 0x1784 | UnauthorizedKeeper | Unauthorized keeper | The signer isn’t market.keeper_authority, redeem_single_for_vault wasn’t signed by the market’s CLP PDA, or realloc_market wasn’t signed by market.authority. |
| 6021 | 0x1785 | Unauthorized | Unauthorized: not the market authority | devTokenAccount isn’t owned by market.feeRecipient, or permissionless_burn isn’t signed by the account owner. fund_collateral and fund_collateral_from raise it for a signer other than market.authority, and fund_collateral_from also when funder doesn’t own funder_collateral. Other admin calls with the wrong signer usually fail with Anchor’s ConstraintHasOne (2001) instead. |
| 6022 | 0x1786 | InsufficientLiquidCollateral | Insufficient liquid collateral; recall yield deployment first | The payout is larger than this market’s liquid share (total_collateral - deployed_to_yield) or the vault balance. rebalance_collateral raises it when the source has no liquid collateral. For a redeem, queue it with request_redemption (see Redeem) or retry after the keeper recalls from lending. |
| 6023 | 0x1787 | ExceedsYieldCeiling | Deployment would exceed yield ceiling | A yield deployment above yield_ceiling_bps of total_collateral, or a ceiling above 10,000 bps. |
| 6024 | 0x1788 | YieldManagementDisabled | Collateral yield management is disabled for this market | Yield deployment or harvest while yield_enabled is false. It is true on every live market as of 11 Oct 2026, and initialize_market sets it to true on new markets. |
| 6025 | 0x1789 | RecallExceedsDeployed | Recall amount exceeds deployed_to_yield balance | A recall or impairment larger than deployed_to_yield. |
| 6026 | 0x178a | SingleSideMintStressFloor | Single-side mint would leave the vault under-collateralized under an adverse NAV shock | keeper_mint_single would leave the market’s collateral ratio below the lower of its pre-trade ratio and 100%. |
| 6027 | 0x178b | GammaMustRatchetDown | s_gamma_index may only ratchet down; raising the short decay scalar is rejected | set_s_gamma_index with a value above the current γ. |
| 6028 | 0x178c | GammaOutOfRange | s_gamma_index is outside [GAMMA_FLOOR, GAMMA_ONE]; out-of-range writes are rejected, not clamped | set_s_gamma_index outside 0.5 to 1.0 (500_000_000 to 1_000_000_000). Out-of-range values are rejected, not clamped. |
| 6029 | 0x178d | GammaStepTooLarge | unused (γ per-transaction rate cap removed) | Reserved placeholder. The per-transaction γ cap was removed and this code is never raised; it stays so later codes don’t shift. |
| 6030 | 0x178e | GammaDailyCapExceeded | unused (γ per-day rate cap removed) | Reserved placeholder. The per-day γ cap was removed and this code is never raised; it stays so later codes don’t shift. |
| 6031 | 0x178f | Retired6031 | Retired error code | Retired. Nothing returns it. The code stays so later codes keep their numbers. |
| 6032 | 0x1790 | Retired6032 | Retired error code | Retired. Nothing returns it. The code stays so later codes keep their numbers. |
| 6033 | 0x1791 | ReanchorNoDecay | Nothing to re-anchor: γ is already 1.0 (or unset) | reanchor_gamma while γ is already 1.0 (or unset). |
| 6034 | 0x1792 | InvalidPosition | Account does not match the expected CLP-owned account | A wrong market, token account or mint passed to clp_burn_excess. |
| 6035 | 0x1793 | ReanchorPrecisionFloor | Re-anchor would leave the short anchor without enough precision to price against | The folded initial_s_price would drop below 1,000 (0.001 cUSDC) or below 1/10,000 of its genesis value. |
| 6036 | 0x1794 | ReanchorNotValueConserving | Re-anchor failed its value-conservation invariant and was rejected | The fold would change initial_l_price × initial_s_price × γ by more than rounding. |
| 6037 | 0x1795 | ReanchorBadState | Market is in a degenerate state (zero anchor) and cannot be re-anchored | initial_l_price or initial_s_price is 0. |
| 6038 | 0x1796 | MarketNotEmpty | Cannot close a market that still has outstanding supply or collateral | close_market_admin while L or S supply, total_collateral or deployed_to_yield is non-zero. |
| 6039 | 0x1797 | CorporateActionBadRatio | Corporate-action ratio has a zero term | ratio_num or ratio_den is 0. |
| 6040 | 0x1798 | CorporateActionNoOp | Corporate-action ratio is 1:1; nothing to apply | ratio_num equals ratio_den. |
| 6041 | 0x1799 | CorporateActionRatioOutOfRange | Corporate-action ratio is implausibly large (fat-finger guard) | A ratio beyond 1,000:1 in either direction. |
| 6042 | 0x179a | CorporateActionPrecisionExhausted | Cumulative corporate-action ratio would exceed its precision budget (cash dividends are deliberately out of scope) | The reduced cumulative ratio would have a term above 1,000,000,000. |
| 6043 | 0x179b | PriceAdjustOverflow | Oracle price could not be mapped into genesis share units (corporate-action adjustment overflowed) | Applying price_adjust_num / price_adjust_den to a price overflowed or truncated it to 0. |
| 6044 | 0x179c | CorporateActionEffectiveTooFarAhead | Corporate-action effective_ts is implausibly far ahead; check the unit (seconds, not milliseconds) | effective_ts more than 400 days ahead, usually milliseconds passed as seconds. |
| 6045 | 0x179d | CorporateActionPendingExists | A future corporate action is already pending; wait until it takes effect | Another action is armed and hasn’t taken effect yet. |
| 6046 | 0x179e | UnauthorizedInitializer | Market initialization requires the program upgrade authority | initialize_market signed by anyone other than the mint-redeem program’s upgrade authority. Only the admin can list a market. |
| 6047 | 0x179f | InvalidProgramData | Market initialization requires this program's ProgramData account | initialize_market passed a program_data account that is not this program’s ProgramData. |
| 6048 | 0x17a0 | UnifiedVaultRetired | The unified vault is retired; migrate_to_unified_vault is disabled | No longer returned. migrate_to_unified_vault was removed on 11 Oct 2026. |
| 6049 | 0x17a1 | NotOnUnifiedVault | Market collateral is not held in the unified vault | No longer returned. exit_unified_vault and sweep_unified_surplus were removed on 11 Oct 2026. |
| 6050 | 0x17a2 | MixedVaultRebalance | Cannot rebalance between the unified vault and a per-market vault; exit the unified vault first | No longer returned. A rebalance_collateral between two markets that share a vault now fails with InvalidAmount (6001). |
| 6051 | 0x17a3 | UnauthorizedSweep | Sweeping the unified vault requires the program upgrade authority | No longer returned. sweep_unified_surplus was removed on 11 Oct 2026. |
| 6052 | 0x17a4 | SweepExceedsSurplus | Sweep would take collateral still attributed to a market on the unified vault | No longer returned. sweep_unified_surplus was removed on 11 Oct 2026. |
| 6053 | 0x17a5 | NothingToSettle | No part of this redemption request fits in the vault's cash now | settle_redemption on a request with nothing left, or when the vault’s cash pays out nothing for any part of it. The request stays open; the keeper retries as cash arrives, and the owner can cancel_redemption. |
| 6054 | 0x17a6 | AdvanceCapExceeded | Advance would exceed this market's advance cap | receive_advance (or the CLP’s advance_to_market) would push the outstanding advance above max_advance_bps of total_collateral. |
| 6055 | 0x17a7 | AdvanceRepayExceedsOutstanding | Repayment exceeds the outstanding advance | repay_advance or write_off_advance for more than is outstanding. |
| 6056 | 0x17a8 | AdvanceWouldTakeOwnLiquidity | Repayment would take the market's own liquid collateral | repay_advance would leave the vault with less than the market’s own liquid collateral. Only the advance’s own cash can be repaid. |
| 6057 | 0x17a9 | AdvanceLenderLocked | The advance lender can change only while nothing is outstanding | configure_market_advance with a new lender while an advance is outstanding. |
| 6058 | 0x17aa | AdvanceOutstanding | A treasury advance is outstanding: write it off or repay it first | mark_yield_impairment or close_market_admin while an advance is outstanding. |
| 6059 | 0x17ab | InvalidAdvanceLender | The advance lender must be the CLP treasury vault (GlobalClp's cUSDC account) | configure_market_advance with a lender that isn’t the GlobalClp PDA’s cUSDC account. |
| 6060 | 0x17ac | ExposureCapExceeded | This would push the market's net exposure past its cap | No longer raised by redeem_paired or request_redemption since 14 Oct 2026, because they burn a balanced pair that moves traders’ net position by less than $1. The check stays in the code as a guard. The swap-path cap error is CLP 6045. |
| 6061 | 0x17ad | ExposureAccountMismatch | An exposure account is not the market's CLP, pool synth vault or CLP token account | No longer raised by redemptions since 14 Oct 2026, which take no exposure remaining accounts. Kept as a guard. It meant one of them had the wrong address, owner or mint. Pass the market’s Clp account, then the pool long and short synth vaults, then the CLP’s long and short token accounts. |
| 6062 | 0x17ae | ExposureAccountsMissing | A lopsided redemption must pass the exposure accounts: CLP, pool vaults, CLP token accounts | No longer raised by redemptions since 14 Oct 2026, which take no exposure remaining accounts (balanced burn). Kept as a guard. The swap-path missing-account error is CLP 6046. |