PrimerPadDocs

Economics

Graduation, migration and LP lock

A PrimerPad market graduates when its real quote reserve reaches the migration threshold. Liquidity moves into Meteora DAMM v2, is permanently locked, and the Primitive stays the quote.

Graduation progression

0%0 USDX
25%3,360 USDX
50%6,720 USDX
75%10,080 USDX
100%13,441 USDX
Real quote reserve vs the migration threshold of the Primer Standard v1 production config (USDX).
BONDINGquoteReserve ≥ thresholdREADY_TO_MIGRATEsimulate, then submitMIGRATINGconfirmed + verifiedMIGRATED
MIGRATION_FAILEDsimulation or submission failed: retried with an attempt limit; the chain is re-read before every retry
before: DBCHOUSE / USDXbonding curve
the Primitive remains the quote
after: DAMM v2HOUSE / USDXpermanently locked LP

Every fork and devnet run verified the graduated DAMM v2 pool holds the base token as token A and the Primitive as token B. FORK PROOF PUBLIC DEVNET

ProofToken A (base)Token B (quote)DAMM v2 protocol feeFee collection
mainnet:morttest-usdxJ6TpirEw…9Gst2E7K…20%quote only
devnet:testhouse-pprimequote5nQrVCVK…HM9Qvwz9…20%quote only
fork:ptest-syrupusdcEVcvsDwL…AvZZF1Ya…20%quote only
fork:ptest-usdy7UF9PSmL…A1KLoBrK…20%quote only
fork:ptest-cptx5iyEc84z…XsvoRXtZ…20%quote only
fork:ptest-essxDpUsJEUa…XsZsYW1U…20%quote only
fork:ptest-invhx7B8pqY6S…XsQFmCYj…20%quote only
fork:ptest-ieionAUCjS25V…wuzf2FDZ…20%quote only
fork:ptest-tbllxEtaBnKVx…XsqBC5tc…20%quote only
fork:ptest-schfx2TFNQyba…XsWAnFM7…20%quote only
fork:ptest-iemgxCuuFfPUT…XsFnZawJ…20%quote only
fork:ptest-vgkxBNSpkFyd…XsosCAu1…20%quote only
fork:ptest-ewqxkinB7M9h…Xs1neEMH…20%quote only
fork:ptest-ewuxHc4PdNCt…XsbWCMXP…20%quote only
fork:ptest-ewgxJ6DviT8M…XsM51PKx…20%quote only
fork:ptest-indaonF1s7FGgb…DBNwt3Fo…20%quote only
fork:ptest-fxion3tjUboNe…CeFbGYXD…20%quote only
fork:ptest-ewzonGSitiq74…CBKcmEvV…20%quote only
fork:ptest-ewyx5o4eoMr1…XswenHXJ…20%quote only
fork:ptest-iwmx7grbxJ3w…XsbELVbL…20%quote only
fork:ptest-vtix2bx4REam…XsssYEQj…20%quote only
fork:ptest-qqqx3mG21LT7…Xs8S1uUs…20%quote only
fork:ptest-spyxHPpHz5g8…XsoCS1Tf…20%quote only
fork:credtest-hygon96H3DycY…c5ug15fw…20%quote only
fork:bondtest-tlton6ZCWpP1T…KaSLSWBy…20%quote only
fork:landtest-vnqon6asFnWMB…F3dMJ9H1…20%quote only
fork:japantest-ewjon7S8BbpER…C6c7Vcxu…20%quote only
fork:morttest-usdx8nfJJjWC…9Gst2E7K…20%quote only
fork:testhouse-pprimequoteDUco7hx8…479bAVrN…20%quote only

Liquidity locking

Primer Standard v1 sets 0% claimable LP and 100% permanently locked LP, split 77% partner and 23% creator to mirror the fee ratio. Meteora requires at least 10% of migrated LP to be locked or vesting for at least a day; PrimerPad locks all of it. At migration the DBC program mints one DAMM v2 position to the config's fee claimer and one to the pool creator. SOURCE CODEmigrate_damm_v2_initialize_pool.rs

77% PrimerPad position23%
Withdraw liquidity No (permanently locked)Claim trading fees YesOwners fee claimer (77%), creator (23%)
DBC splits migrated liquidity with floor rounding; at most 1 liquidity unit out of about 10^29 to 10^30 remains unlocked in the creator position. It withdraws to zero tokens.
ProofPool liquidityPermanently lockedUnlocked dustCreator share
mainnet:morttest-usdx452047581461…452047581461…1 unit22.99%
devnet:testhouse-pprimequote451759717551…451759717551…1 unit22.99%
fork:ptest-syrupusdc414740048097…414740048097…1 unit22.99%
fork:ptest-usdy421916152416…421916152416…1 unit22.99%
fork:ptest-cptx459542044317…459542044317…1 unit22.99%
fork:ptest-essx274860439618…274860439618…1 unit22.99%
fork:ptest-invhx888396344356…888396344356…1 unit22.99%
fork:ptest-ieion133296755568…133296755568…1 unit22.99%
fork:ptest-tbllx435182336098…435182336098…1 unit22.99%
fork:ptest-schfx498853516930…498853516930…1 unit22.99%
fork:ptest-iemgx496523355554…496523355554…1 unit22.99%
fork:ptest-vgkx489061591487…489061591487…1 unit22.99%
fork:ptest-ewqx704511126057…704511126057…1 unit22.99%
fork:ptest-ewux667990528717…667990528717…1 unit22.99%
fork:ptest-ewgx708210872283…708210872283…1 unit22.99%
fork:ptest-indaon209230261575…209230261575…1 unit22.99%
fork:ptest-fxion244794244227…244794244227…1 unit22.99%
fork:ptest-ewzon216777529583…216777529583…1 unit22.99%
fork:ptest-ewyx326489144124…326489144124…1 unit22.99%
fork:ptest-iwmx402525160624…402525160624…1 unit22.99%
fork:ptest-vtix233121859570…233121859570…1 unit22.99%
fork:ptest-qqqx163940985810…163940985810…1 unit22.99%
fork:ptest-spyx161751555205…161751555205…1 unit22.99%
fork:credtest-hygon157499775634…157499775634…1 unit22.99%
fork:bondtest-tlton159029367328…159029367328…1 unit22.99%
fork:landtest-vnqon147056712938…147056712938…1 unit22.99%
fork:japantest-ewjon143751151921…143751151921…1 unit22.99%
fork:morttest-usdx451549187073…451549187073…1 unit22.99%
fork:testhouse-pprimequote451759717551…451759717551…1 unit22.99%

Locked does not mean fee-less

Permanent lock removes the ability to withdraw liquidity. It does not stop trading fees: both positions claimed DAMM v2 fees after post-migration trades in every run. See post-graduation fees.

Migration watcher

Migration is a permissionless instruction. Meteora operates mainnet keepers for qualifying DBC pools, but coverage depends on the quote asset and migration conditions, so PrimerPad does not rely on it for unusual financial quote assets. The PrimerPad migration watcher (primer migration-watcher) discovers every pool created on a PrimerPad config and graduates it.

  • Simulation first. Every migration is simulated, and the transaction must reference the expected quote mint, config and pool before it is sent.
  • Idempotent. Before any submit the watcher re-reads isMigrated and checks whether the DAMM v2 pool already exists. If anyone else migrated first, the market simply becomes MIGRATED.
  • Restart-safe. A MIGRATING record stores its signature immediately; on restart the signature is resolved before anything else, so a crash cannot cause a second submission. One watcher per network (lock file).
  • Live. Helius WebSocket log subscriptions on each PrimerPad config trigger an early check; polling is the backstop.
  • Mainnet gated. Submission on mainnet requires --execute-mainnet and an interactive confirmation; a configurable delay lets an external keeper act first.

PUBLIC DEVNET The watcher graduated 2 devnet markets on its own, each verified (pair and LP lock) after confirmation. Example: 5QPdn3…y4TBEm, DAMM v2 pool 37Skc8…U1Zb7s. In the live test the market went from BONDING to MIGRATED about four seconds after its curve filled, while the indexer recorded the same transitions in real time.

Not every Primitive has the same depth

A graduation moves the threshold amount of the quote asset into a locked pool. If the quote asset has little supply on Solana, a standard threshold can require more of the asset than exists. PrimerPad measures this before enabling a Primitive.

required quote = graduation USD target / quote price
How much of the quote asset the standard profile needs at graduation.
supply share = required quote / circulating Solana supply
How much of the asset's current Solana supply that represents.
cap = 15% × available inventory
Status: HEALTHY when the standard target fits under 15% of available inventory; LIMITED when the cap still allows at least $100; UNSAFE otherwise (production configs refused).

LIVE CHAIN READsupply via Helius, price via Jupiter

15% cap100% of supply
USDY0%
syrupUSDC0%
SPYx0%
QQQx0%
SCHFx0%
TBLLx0.1%
VTIx0.1%
IEMGx0.1%
EWYx0.1%
EWUx0.1%
EWGx0.1%
EWQx0.1%
VGKx0.1%
IWMx0.2%
ESSx0.2%
INVHx0.3%
CPTx0.3%
USDX1%
IEIon7.1%
EWZon7.3%
TLTon11.3%
FXIon27%
INDAon136.4%
EWJon172.2%
VNQon456.1%
HYGon12,328.3%
Log scale. Share of current Solana supply a standard graduation would require. Hover a bar.
Issuer mint-on-demand inventory is unknown and counted as zero.
QuoteStatusStandard targetShare of supplyAvailable on SolanaRecommended target
USDXHEALTHY$13,4411%$1,412,884 (1,418,243.8594 tokens)$13,441 (1%)
EWJonLIMITED$2,403172.2%$1,396 (14.1305 tokens)$209 (15%)
VNQonUNSAFE$2,403456.1%$527 (5.5813 tokens)$79 (15%)
TLTonHEALTHY$6,72011.3%$59,714 (739.9796 tokens)$6,720 (11.3%)
HYGonUNSAFE$2,40312,328.3%$19 (0.2369 tokens)$3 (15%)
SPYxHEALTHY$13,4410%$74,305,243 (95,230.8422 tokens)$13,441 (0%)
QQQxHEALTHY$13,4410%$63,992,291 (84,360.0426 tokens)$13,441 (0%)
VTIxHEALTHY$13,4410.1%$18,511,651 (49,294 tokens)$13,441 (0.1%)
IWMxHEALTHY$13,4410.2%$7,302,822 (57,977.7539 tokens)$13,441 (0.2%)
EWYxHEALTHY$13,4410.1%$12,231,787 (63,886.9078 tokens)$13,441 (0.1%)
EWZonHEALTHY$2,4037.3%$33,076 (761.6059 tokens)$2,403 (7.3%)
FXIonLIMITED$2,40327%$8,897 (261.2265 tokens)$1,335 (15%)
INDAonLIMITED$2,403136.4%$1,761 (37.7702 tokens)$264 (15%)
EWGxHEALTHY$13,4410.1%$11,637,813 (286,010.3683 tokens)$13,441 (0.1%)
EWUxHEALTHY$13,4410.1%$11,835,504 (258,769.1812 tokens)$13,441 (0.1%)
EWQxHEALTHY$13,4410.1%$11,007,666 (267,704.7354 tokens)$13,441 (0.1%)
VGKxHEALTHY$13,4410.1%$10,239,277 (120,000 tokens)$13,441 (0.1%)
IEMGxHEALTHY$13,4410.1%$17,832,155 (215,410.9992 tokens)$13,441 (0.1%)
SCHFxHEALTHY$13,4410%$34,034,323 (414,999.9996 tokens)$13,441 (0%)
TBLLxHEALTHY$13,4410.1%$26,644,617 (247,249.9998 tokens)$13,441 (0.1%)
IEIonHEALTHY$2,4037.1%$34,011 (296.1052 tokens)$2,403 (7.1%)
INVHxHEALTHY$13,4410.3%$5,121,312 (198,052.4839 tokens)$13,441 (0.3%)
ESSxHEALTHY$13,4410.2%$5,490,228 (20,323.4821 tokens)$13,441 (0.2%)
CPTxHEALTHY$13,4410.3%$4,990,749 (51,641.7782 tokens)$13,441 (0.3%)
USDYHEALTHY$13,4410%$179,389,965 (156,471,407.3581 tokens)$13,441 (0%)
syrupUSDCHEALTHY$13,4410%$88,821,968 (74,858,196.2975 tokens)$13,441 (0%)

This is why a Primitive can be CERTIFIED without being LIVE. The Config Factory enforces it: UNSAFE Primitives get no production config, and LIMITED ones get a graduation profile scaled to the recommended target.

See also: Status model, Migration threshold, Failure modes