docs: Trading-first rewrite of all four Meteora pages - #343
Merged
Conversation
Chain-level cubes led every Meteora page while the Trading cubes are the house default. Across the set the mix was 33 chain-level query blocks to 6 Trading; it is now 26 Trading to 14, with chain-level kept only for what the Trading cubes cannot do: pool creation, pool reserves, and history older than the ~30-day Trading window. Data bugs fixed: - DBC launch tracking missed initialize_virtual_pool_with_token2022, 425 of 1,208 launches in 24h. Both launch instructions are now matched. - DAMM v2 pool creation filtered the EvtInitializePool event, whose row carries one account and an empty AccountNames list, so the mints and vaults the prose promised were unreadable. Now filters the three real instructions (initialize_pool, initialize_pool_with_dynamic_config, initialize_customizable_pool). - The DYN page led with a pool-creation stream for DAMM v1, which has had no pool-creation instructions at all. That section is replaced with a ranking of the pools that still trade, and the page says plainly that new DAMM v1 pools are no longer created. - DBC carried three dead hardcoded addresses and a query that timed out. Bonding-curve mints are short lived, so examples are placeholders plus a query that returns mints trading right now. - Volume examples used Solana(dataset: combined) with sum(Trade_Side_AmountInUSD). On the same 7-day window that undercounts by 22% against both realtime and the Trading cube, and adding the USD field to a grouped archive query shatters one row per month into hundreds. All four pages now take USD from the Trading cubes and aggregate native amounts on archive, with a caution box explaining it. - Top-trader queries selected Side.Type and Side.Account as dimensions, splitting each wallet into separate buy and sell rows. Replaced with Trading.Trades grouped by Trader.Address. Naming and metadata: - The DYN page is Meteora's DAMM v1; "DYN" is not a Meteora product name and drew 0 clicks at position 13.2. Retitled to Meteora DAMM v1 API, URL unchanged, with a note explaining the rename. - Real titles, descriptions and keywords replace the templated "Solana Meteora Damm V2 API" metadata. DAMM v2 was the worst CTR of the set: 5,603 impressions, 2 clicks, position 6.8. - FAQ blocks added to DBC (9) and DAMM v1 (7); DAMM v2 grows 4 to 9. - Every page gains a program-ID section, a four-program comparison table, a facts-only comparison against Meteora's own APIs, and a pricing section. Meteora publishes no data API for DBC at all. - Existing section slugs are pinned with explicit heading ids so indexed anchors keep resolving. Every query and subscription on all four pages was executed live on 2026-09-09: 29 queries returned rows and 16 subscriptions delivered. Pool-creation and graduation streams stay quiet inside a 25-second window because those events arrive roughly once a minute; each was confirmed with the same filter run as a 24-hour query. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Scope grew from one page to all four Meteora pages. The original commit rewrote the DLMM page; the review question that followed was why every Meteora page led with
DEXTradesandDEXTradeByTokenswhen the Trading cubes are the house default. An audit of all four pages answered it and turned up several data bugs, so this PR now covers the whole set.Cube mix across the four pages: 33 chain-level query blocks and 6 Trading before, 14 and 26 after. Chain-level cubes are kept only where the Trading cubes cannot answer the question: pool creation, pool reserves, and history older than the roughly 30-day Trading window.
Data bugs found and fixed
1. DBC launch tracking missed every Token-2022 launch. The subscription filtered
initialize_virtual_pool_with_spl_tokenonly. Over 24 hours that method fired 783 times andinitialize_virtual_pool_with_token2022fired 425, so a third of new DBC tokens were invisible to anyone who copied the example. Both are matched now.2. DAMM v2 pool creation used the event, not the instruction. The example filtered
EvtInitializePool, whose row carries a single account and an emptyAccountNameslist, while the prose promised "pool creator, token vaults and token mints". Replaced with the three real instructions (initialize_pool181/24h,initialize_pool_with_dynamic_config940,initialize_customizable_pool113), which do carry the full named account list.3. The DYN page led with a dead code path. "Track Latest created pools on Meteora DYN" filtered
initializePermissionlessConstantProductPoolWithConfig2on theammprogram. Zeroinitialize*instructions fired on that program in 24 hours; Meteora files DAMM v1 under legacy products and new pools are not created. Replaced with a ranking of the pools that still trade, and the page now says so plainly.4.
dataset: combinedundercounts, and USD aggregates break on archive. Same 7-day window, TRUMP/USDC on DLMM:Solana(dataset: combined)SolanarealtimeTrading.TradesRealtime and the Trading cube agree within 1 percent;
combinedis 22 percent light. Separately, addingsum(of: Trade_Side_AmountInUSD)to a groupedarchivequery shatters one row per month into 717 rows, and a query with no dimensions at all into 192. Aggregating nativeTrade_Amountreturns the correct 12 rows. All four pages now take USD from the Trading cubes and aggregate native amounts onarchive, with a caution box.This pattern is site-wide: 23 other docs pages carry
Solana(dataset: combined)withTrade_Side_AmountInUSD. Out of scope here, worth its own pass.5. Dead examples on DBC. Three hardcoded addresses returned nothing (
7GMB7Xbt…in the market-cap section, whose query also timed out;GowkHeDk…in the PnL section;4kJkgxzu…in prose). Bonding-curve mints die in hours, so the page now opens with a query that returns mints trading right now and uses placeholders everywhere else.6. Top-trader queries split each wallet in two. All three unrefreshed pages selected
Side.TypeandSide.Accountas dimensions, producing "bought 0 / sold N" rows per wallet. Replaced withTrading.Tradesgrouped byTrader.Address.7. DLMM swap variants still are not decoded (carried from the earlier audit, re-confirmed 2026-09-09).
swapExactOut,swapExactOut2andswapWithPriceImpact2produce no rows in the chain-level or Trading cubes: 6 of 6 sample transactions per method returned nothing, against 6 of 6 with rows forswap2. That is about 20 percent of DLMM swap instructions. The DLMM page carries a note; the fix belongs in the indexer.Naming and metadata
sidebar_labelto match.Solana Meteora Damm V2 API. Real title, description and keywords now.Verified facts
Trading.PairsandSolana.DEXTradesInstructionson all four programsEvt*rows are event logs with no account namesEvtInitializePoolrows on DAMM v2damm-api.meteora.ag; no DBC data APIInstructionsdocs/plans/*,docs/graphql/data-coverage-retention.mdxQuery execution (live token, 2026-09-09)
Every GraphQL block on all four pages was extracted from the final files and executed.
Every quiet subscription was confirmed alive by running the same filter as a 24-hour query. DBC placeholder examples were run with a mint that was trading at the time.
Baseline (GSC, 28 days to 2026-09-08)
Re-measure 28 days after merge.
Checks
npm run buildpasses with no broken-link or MDX warnings.Follow-ups
Solana(dataset: combined)withTrade_Side_AmountInUSDand are understating volume the same way.docs/graphql/data-coverage-retention.mdxstill says every Solanacombinedcube returns a 500; it returns rows, just fewer than it should.🤖 Generated with Claude Code