Files
khadhroony-bobobot/validation_sql/SQL_VALIDATION_METEORA_DBC_0_7_56.sql
2026-06-17 16:06:09 +02:00

441 lines
16 KiB
SQL

-- file: validation_sql/SQL_VALIDATION_METEORA_DBC_0_7_56.sql
-- 0.7.56 meteora_dbc validation and corpus-seed checklist.
-- Run on a dedicated fresh SQLite database for the Meteora DBC tranche.
-- Recommended replay settings after each backfill group:
-- skipDexDecode=no, forceDexDecode=yes, deferInstructionObservations=yes.
-- This file is intentionally read-only: it never mutates the database.
-- 00. Corpus seed: upstream fallback samples to backfill first.
SELECT
json_extract(de.payload_json, '$.upstreamEntryName') AS upstream_entry_name,
json_extract(de.payload_json, '$.upstreamDiscriminatorHex') AS upstream_discriminator_hex,
json_extract(de.payload_json, '$.upstreamSourceRepo') AS source_repo,
COUNT(*) AS fallback_count,
COUNT(DISTINCT de.transaction_id) AS tx_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events de
LEFT JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
WHERE de.protocol_name = 'upstream_git'
AND de.event_kind = 'upstream_git.instruction_match'
AND json_extract(de.payload_json, '$.upstreamDecoderCode') = 'meteora_dbc'
GROUP BY upstream_entry_name, upstream_discriminator_hex, source_repo
ORDER BY fallback_count DESC, upstream_entry_name, upstream_discriminator_hex;
-- 01. Corpus seed: local instruction observations.
SELECT
instruction_name,
discriminator_hex,
COUNT(*) AS observed_count,
COUNT(DISTINCT signature) AS tx_count,
MIN(signature) AS sample_signature
FROM k_sol_instruction_observations
WHERE decoder_code = 'meteora_dbc'
GROUP BY instruction_name, discriminator_hex
ORDER BY observed_count DESC, instruction_name, discriminator_hex;
-- 02. Coverage meteora_dbc.
SELECT
entry_name,
entry_kind,
event_family,
expected_db_target,
proof_status,
local_event_kind,
discriminator_hex,
observed_count,
materialized_count,
trade_count
FROM k_sol_dex_event_coverage_entries
WHERE decoder_code = 'meteora_dbc'
ORDER BY entry_kind, entry_name, discriminator_hex;
-- 03. Decoded events summary.
SELECT
de.event_kind,
COUNT(*) AS decoded_count,
COUNT(DISTINCT de.transaction_id) AS tx_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events de
LEFT JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
WHERE de.protocol_name = 'meteora_dbc'
GROUP BY de.event_kind
ORDER BY decoded_count DESC, de.event_kind;
-- 04. Decoded meteora_dbc events without coverage.
-- Target after closure: empty for all locally decoded meteora_dbc rows.
SELECT
de.event_kind,
COUNT(*) AS decoded_count,
COUNT(DISTINCT de.transaction_id) AS tx_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events de
LEFT JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
LEFT JOIN k_sol_dex_event_coverage_entries ce
ON ce.decoder_code = 'meteora_dbc'
AND ce.local_event_kind = de.event_kind
WHERE de.protocol_name = 'meteora_dbc'
AND ce.id IS NULL
GROUP BY de.event_kind
ORDER BY decoded_count DESC, de.event_kind;
-- 05. Residual upstream fallback for entries covered locally.
-- Target after local promotion: empty for every entry that has a local_event_kind.
SELECT
json_extract(ug.payload_json, '$.upstreamEntryName') AS upstream_entry_name,
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS upstream_discriminator_hex,
json_extract(ug.payload_json, '$.upstreamSourceRepo') AS source_repo,
ce.local_event_kind,
ce.expected_db_target,
ce.proof_status,
COUNT(*) AS fallback_count,
COUNT(DISTINCT ug.transaction_id) AS tx_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events ug
LEFT JOIN k_sol_chain_transactions tx
ON tx.id = ug.transaction_id
JOIN k_sol_dex_event_coverage_entries ce
ON ce.decoder_code = json_extract(ug.payload_json, '$.upstreamDecoderCode')
AND ce.entry_name = json_extract(ug.payload_json, '$.upstreamEntryName')
AND COALESCE(ce.discriminator_hex, '') = COALESCE(json_extract(ug.payload_json, '$.upstreamDiscriminatorHex'), '')
AND ce.local_event_kind IS NOT NULL
AND ce.local_event_kind <> ''
WHERE ug.protocol_name = 'upstream_git'
AND ug.event_kind = 'upstream_git.instruction_match'
AND json_extract(ug.payload_json, '$.upstreamDecoderCode') = 'meteora_dbc'
GROUP BY upstream_entry_name, upstream_discriminator_hex, source_repo, ce.local_event_kind, ce.expected_db_target, ce.proof_status
ORDER BY fallback_count DESC, upstream_entry_name;
-- 06. Successful non-materialized events without explicit skip reason.
-- Target after closure: empty. Decoded-only rows must carry skip*Reason or informational/audit policy.
SELECT
de.event_kind,
COUNT(*) AS unexplained_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events de
JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
LEFT JOIN k_sol_trade_events te
ON te.decoded_event_id = de.id
LEFT JOIN k_sol_launch_events lae
ON lae.decoded_event_id = de.id
LEFT JOIN k_sol_liquidity_events lie
ON lie.decoded_event_id = de.id
LEFT JOIN k_sol_pool_lifecycle_events ple
ON ple.decoded_event_id = de.id
LEFT JOIN k_sol_fee_events fee
ON fee.decoded_event_id = de.id
LEFT JOIN k_sol_reward_events rew
ON rew.decoded_event_id = de.id
LEFT JOIN k_sol_pool_admin_events adm
ON adm.decoded_event_id = de.id
LEFT JOIN k_sol_orderbook_events obe
ON obe.decoded_event_id = de.id
LEFT JOIN k_sol_token_account_events tae
ON tae.decoded_event_id = de.id
WHERE de.protocol_name = 'meteora_dbc'
AND (tx.err_json IS NULL OR tx.err_json = '' OR tx.err_json = 'null')
AND COALESCE(json_extract(de.payload_json, '$.eventActionability'), '') NOT IN (
'informational',
'decoded_only_anchor_event',
'decoded_only_missing_mint_context',
'decoded_only_with_explicit_skip_reason'
)
AND te.id IS NULL
AND lae.id IS NULL
AND lie.id IS NULL
AND ple.id IS NULL
AND fee.id IS NULL
AND rew.id IS NULL
AND adm.id IS NULL
AND obe.id IS NULL
AND tae.id IS NULL
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipTradeReason')), '') = ''
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipCandleReason')), '') = ''
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipLiquidityReason')), '') = ''
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipLifecycleReason')), '') = ''
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipCatalogReason')), '') = ''
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipFeeReason')), '') = ''
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipAdminReason')), '') = ''
GROUP BY de.event_kind
ORDER BY unexplained_count DESC, de.event_kind;
-- 07. Failed transaction materialization safety.
-- Target after closure: empty. Failed transactions may be decoded for audit, but must not be business-materialized.
SELECT
de.event_kind,
COUNT(DISTINCT de.id) AS decoded_failed_count,
COUNT(DISTINCT te.id) AS trade_count,
COUNT(DISTINCT lae.id) AS launch_count,
COUNT(DISTINCT lie.id) AS liquidity_count,
COUNT(DISTINCT ple.id) AS lifecycle_count,
COUNT(DISTINCT fee.id) AS fee_count,
COUNT(DISTINCT rew.id) AS reward_count,
COUNT(DISTINCT adm.id) AS admin_count,
COUNT(DISTINCT obe.id) AS orderbook_count,
COUNT(DISTINCT tae.id) AS token_account_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events de
JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
LEFT JOIN k_sol_trade_events te
ON te.decoded_event_id = de.id
LEFT JOIN k_sol_launch_events lae
ON lae.decoded_event_id = de.id
LEFT JOIN k_sol_liquidity_events lie
ON lie.decoded_event_id = de.id
LEFT JOIN k_sol_pool_lifecycle_events ple
ON ple.decoded_event_id = de.id
LEFT JOIN k_sol_fee_events fee
ON fee.decoded_event_id = de.id
LEFT JOIN k_sol_reward_events rew
ON rew.decoded_event_id = de.id
LEFT JOIN k_sol_pool_admin_events adm
ON adm.decoded_event_id = de.id
LEFT JOIN k_sol_orderbook_events obe
ON obe.decoded_event_id = de.id
LEFT JOIN k_sol_token_account_events tae
ON tae.decoded_event_id = de.id
WHERE de.protocol_name = 'meteora_dbc'
AND tx.err_json IS NOT NULL
AND tx.err_json <> ''
AND tx.err_json <> 'null'
GROUP BY de.event_kind
HAVING trade_count > 0
OR launch_count > 0
OR liquidity_count > 0
OR lifecycle_count > 0
OR fee_count > 0
OR reward_count > 0
OR admin_count > 0
OR orderbook_count > 0
OR token_account_count > 0
ORDER BY decoded_failed_count DESC, de.event_kind;
-- 08. Multi-target materialization safety.
-- Target after closure: empty. One decoded event must not feed several business targets.
SELECT *
FROM (
SELECT
de.id AS decoded_event_id,
de.event_kind,
tx.signature,
(CASE WHEN te.id IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN lae.id IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN lie.id IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN ple.id IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN fee.id IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN rew.id IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN adm.id IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN obe.id IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN tae.id IS NULL THEN 0 ELSE 1 END) AS target_count
FROM k_sol_dex_decoded_events de
JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
LEFT JOIN k_sol_trade_events te
ON te.decoded_event_id = de.id
LEFT JOIN k_sol_launch_events lae
ON lae.decoded_event_id = de.id
LEFT JOIN k_sol_liquidity_events lie
ON lie.decoded_event_id = de.id
LEFT JOIN k_sol_pool_lifecycle_events ple
ON ple.decoded_event_id = de.id
LEFT JOIN k_sol_fee_events fee
ON fee.decoded_event_id = de.id
LEFT JOIN k_sol_reward_events rew
ON rew.decoded_event_id = de.id
LEFT JOIN k_sol_pool_admin_events adm
ON adm.decoded_event_id = de.id
LEFT JOIN k_sol_orderbook_events obe
ON obe.decoded_event_id = de.id
LEFT JOIN k_sol_token_account_events tae
ON tae.decoded_event_id = de.id
WHERE de.protocol_name = 'meteora_dbc'
)
WHERE target_count > 1
ORDER BY target_count DESC, event_kind, signature;
-- 09. Materialization summary by table with successful/failed split.
SELECT
de.event_kind,
COUNT(DISTINCT de.id) AS decoded_count,
COUNT(DISTINCT CASE WHEN tx.err_json IS NULL OR tx.err_json = '' OR tx.err_json = 'null' THEN de.id END) AS successful_decoded_count,
COUNT(DISTINCT CASE WHEN tx.err_json IS NOT NULL AND tx.err_json <> '' AND tx.err_json <> 'null' THEN de.id END) AS failed_decoded_count,
COUNT(DISTINCT te.id) AS trade_count,
COUNT(DISTINCT lie.id) AS liquidity_count,
COUNT(DISTINCT ple.id) AS lifecycle_count,
COUNT(DISTINCT fee.id) AS fee_count,
COUNT(DISTINCT adm.id) AS admin_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events de
JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
LEFT JOIN k_sol_trade_events te
ON te.decoded_event_id = de.id
LEFT JOIN k_sol_liquidity_events lie
ON lie.decoded_event_id = de.id
LEFT JOIN k_sol_pool_lifecycle_events ple
ON ple.decoded_event_id = de.id
LEFT JOIN k_sol_fee_events fee
ON fee.decoded_event_id = de.id
LEFT JOIN k_sol_pool_admin_events adm
ON adm.decoded_event_id = de.id
WHERE de.protocol_name = 'meteora_dbc'
GROUP BY de.event_kind
ORDER BY decoded_count DESC, de.event_kind;
-- 10. Instruction observation versus coverage.
-- Target after closure: every observed discriminator must map to a known coverage row.
SELECT
io.instruction_name,
io.discriminator_hex,
COUNT(*) AS observed_count,
MIN(io.signature) AS sample_signature,
ce.entry_name,
ce.local_event_kind,
ce.expected_db_target,
ce.proof_status
FROM k_sol_instruction_observations io
LEFT JOIN k_sol_dex_event_coverage_entries ce
ON ce.decoder_code = 'meteora_dbc'
AND (
ce.discriminator_hex = io.discriminator_hex
OR ce.entry_name = io.instruction_name
)
WHERE io.decoder_code = 'meteora_dbc'
GROUP BY io.instruction_name, io.discriminator_hex, ce.entry_name, ce.local_event_kind, ce.expected_db_target, ce.proof_status
ORDER BY observed_count DESC, io.instruction_name, io.discriminator_hex;
-- 11. Anti-faux trade/candle for non-swap events.
-- Target after closure: empty.
SELECT
de.event_kind,
COUNT(DISTINCT te.id) AS trade_count,
COUNT(DISTINCT pc.id) AS candle_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events de
JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
LEFT JOIN k_sol_trade_events te
ON te.decoded_event_id = de.id
LEFT JOIN k_sol_pair_candles pc
ON pc.pair_id = te.pair_id
WHERE de.protocol_name = 'meteora_dbc'
AND de.event_kind NOT IN ('meteora_dbc.swap', 'meteora_dbc.swap2')
GROUP BY de.event_kind
HAVING trade_count > 0 OR candle_count > 0
ORDER BY trade_count DESC, candle_count DESC, de.event_kind;
-- 12. Global watchlist after replay.
-- Target after closure: no meteora_dbc as dominant backlog; unrelated residuals may remain.
SELECT
COALESCE(json_extract(de.payload_json, '$.upstreamDecoderCode'), de.protocol_name) AS backlog_decoder,
de.event_kind,
json_extract(de.payload_json, '$.upstreamEntryName') AS upstream_entry_name,
json_extract(de.payload_json, '$.upstreamDiscriminatorHex') AS upstream_discriminator_hex,
COUNT(*) AS decoded_count,
COUNT(DISTINCT de.transaction_id) AS tx_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_dex_decoded_events de
LEFT JOIN k_sol_chain_transactions tx
ON tx.id = de.transaction_id
WHERE de.protocol_name IN ('upstream_git', 'meteora_dbc')
GROUP BY backlog_decoder, de.event_kind, upstream_entry_name, upstream_discriminator_hex
ORDER BY decoded_count DESC, backlog_decoder, de.event_kind
LIMIT 100;
-- 13. Fee parent/legs summary after 0.7.56 fee model.
SELECT
de.protocol_name,
de.event_kind,
COUNT(DISTINCT fee.id) AS fee_parent_count,
COUNT(DISTINCT CASE
WHEN COALESCE(TRIM(fee.fee_token_mint), '') <> ''
AND COALESCE(TRIM(fee.fee_amount_raw), '') <> ''
THEN fee.id
ELSE NULL
END) AS parent_with_scalar_amount_count,
COUNT(DISTINCT fea.id) AS fee_amount_leg_count,
MIN(tx.signature) AS sample_signature
FROM k_sol_fee_events fee
JOIN k_sol_dex_decoded_events de
ON de.id = fee.decoded_event_id
JOIN k_sol_chain_transactions tx
ON tx.id = fee.transaction_id
LEFT JOIN k_sol_fee_event_amounts fea
ON fea.fee_event_id = fee.id
WHERE de.protocol_name = 'meteora_dbc'
GROUP BY
de.protocol_name,
de.event_kind
ORDER BY
de.protocol_name,
de.event_kind;
-- 14. Fee parent scalar without amount leg.
-- Target after closure: empty.
SELECT
de.protocol_name,
de.event_kind,
tx.signature,
fee.id AS fee_event_id,
fee.fee_token_mint,
fee.fee_amount_raw,
fee.payload_json
FROM k_sol_fee_events fee
JOIN k_sol_dex_decoded_events de
ON de.id = fee.decoded_event_id
JOIN k_sol_chain_transactions tx
ON tx.id = fee.transaction_id
LEFT JOIN k_sol_fee_event_amounts fea
ON fea.fee_event_id = fee.id
WHERE de.protocol_name = 'meteora_dbc'
AND COALESCE(TRIM(fee.fee_token_mint), '') <> ''
AND COALESCE(TRIM(fee.fee_amount_raw), '') <> ''
AND fea.id IS NULL
ORDER BY
de.protocol_name,
de.event_kind,
tx.signature
LIMIT 100;
-- 15. Orphan fee amount legs.
-- Target after closure: empty.
SELECT
fea.id,
fea.fee_event_id,
fea.transaction_id,
fea.decoded_event_id
FROM k_sol_fee_event_amounts fea
LEFT JOIN k_sol_fee_events fee
ON fee.id = fea.fee_event_id
WHERE fee.id IS NULL;
-- 16. Generic allowlisted recovery must not be used by DBC.
-- Target after closure: empty; DBC uses protocol-specific fee recovery paths.
SELECT
de.protocol_name,
de.event_kind,
tx.signature,
fee.id AS fee_event_id,
fea.leg_index,
fea.token_mint,
fea.amount_raw,
fea.amount_source
FROM k_sol_fee_event_amounts fea
JOIN k_sol_fee_events fee
ON fee.id = fea.fee_event_id
JOIN k_sol_dex_decoded_events de
ON de.id = fee.decoded_event_id
JOIN k_sol_chain_transactions tx
ON tx.id = fee.transaction_id
WHERE de.protocol_name = 'meteora_dbc'
AND fea.amount_source = 'allowlisted_inner_spl_transfer'
ORDER BY
de.event_kind,
tx.signature,
fea.leg_index;