0.7.52
This commit is contained in:
@@ -369,3 +369,16 @@ Règles validées :
|
||||
- les side effects SPL Token / Token-2022 restent transversaux.
|
||||
|
||||
Contrôle final AMM v4 : le SQL `materialized_target_count > 1` doit rester vide.
|
||||
|
||||
## 0.7.52 — Raydium Stable Swap DB model decision
|
||||
|
||||
No schema migration is introduced for `raydium_stable_swap` at tranche opening.
|
||||
|
||||
Stable Swap maps to existing DB targets:
|
||||
|
||||
- `initialize` / `pre_initialize` → `k_sol_pool_lifecycle_events` when pool context is sufficient;
|
||||
- `deposit` / `withdraw` → `k_sol_liquidity_events` when pool/pair context is sufficient;
|
||||
- `swap_base_in` / `swap_base_out` → `k_sol_trade_events` and candles only when mints and amounts are reliable;
|
||||
- `swap_event` → `k_sol_dex_decoded_events` only until a corpus-backed materialization decision exists.
|
||||
|
||||
Side effects from SPL Token, Token-2022, Serum/OpenBook-style accounts or router transport remain transverse evidence and are not promoted as direct `raydium_stable_swap.*` business events without an explicit later DB decision.
|
||||
|
||||
@@ -31,8 +31,8 @@ Cette matrice complète `kb_lib/src/dex_support_matrix.rs`. Elle documente **ce
|
||||
| 1 | `raydium_cpmm` | `supported / 0.7.50-pre-r2 closure recheck` | Couverture CPMM clôturée : swaps, lifecycle, fees, admin/config, deposit/withdraw, `lp_change_event`, `swap_event` decoded-only, `cpi_event` transport Carbon et `anchor_idl_instruction` Solscan/manual pour `40f4bc78a7e9690a`. | Ne pas promouvoir `anchor_idl_instruction` : c'est de la gestion Anchor IDL, pas un événement AMM métier. |
|
||||
| 2 | `raydium_clmm` | `supported / 0.7.50-pre-r2 closure recheck` | Couverture CLMM complétée : `cpi_event`, `update_dynamic_fee_config`, Program-data events locaux, `create_support_mint_associated` vers `k_sol_token_account_events`, familles sans `unknown`, router/swap Program-data en decoded-only. | Rejouer la base CLMM et confirmer que les seuls résidus sont `decoded_events_only`, transactions failed ou absence prouvée de contexte pool/pair. |
|
||||
| 3 | `raydium_launchpad` | `bootstrap / 0.7.50` | Surface canonique normalisée, 1 entrée programme + 26 discriminants Carbon/IDL listés, fallback audit/mapped decoder, SQL dédié. | Créer DB neuve, backfill par discriminant, replay forcé, promouvoir seulement après corpus local. |
|
||||
| 4 | `raydium_amm_v4` | `supported / 0.7.51 closed` | Decoder maximal AMM v4 `00..11`, swaps spécialisés, lifecycle/liquidity/fees/admin/orderbook validés. | Rechecks CPMM/CLMM/Launchpad puis `raydium_stable`. |
|
||||
| 5 | `raydium_stable_swap` | `planned / 0.7.52` | Entrée conservée. | Reprendre Stable séparément : swaps stables, pool lifecycle, liquidity, fees/admin, montants/prix exploitables. |
|
||||
| 4 | `raydium_amm_v4` | `supported / 0.7.51 closed` | Decoder maximal AMM v4 `00..11`, swaps spécialisés, lifecycle/liquidity/fees/admin/orderbook validés. | Stable Swap clôturé ensuite en `0.7.52`; surveiller les surfaces restantes. |
|
||||
| 5 | `raydium_stable_swap` | `supported / 0.7.52 closed` | Decoder legacy 1 octet, surface `00..0d`, swaps matérialisés depuis deltas vault exacts. | Surveiller seulement de nouveaux discriminants ou `swap_event` observé. |
|
||||
| 6 | `raydium_pool_v4` | `to_verify / 0.7.53 conditional audit` | IDL annexe mentionnée par fnzero, non présente dans l'archive locale, pas de program id/rôle confirmé ici. | Ne pas promouvoir tant que program id distinct, rôle exact et corpus exploitable ne sont pas confirmés. |
|
||||
| 7 | `pump_swap` | `supported / 0.7.54 planned` | `buy`/`sell` décodés et matérialisés ; trade/candle OK. | Ajouter tous les events Carbon/Solana Streamer : cashback, fee, volume accumulator, admin/config ; conserver les non-trades hors candles. |
|
||||
| 8 | `pump_fun` | `partial / 0.7.55 launch_surface` | Création/token launch partiellement décodée ; intégrée au pipeline de listings. | Traiter tous les events Pump.fun disponibles : buy/sell/migrate/create/update ; séparer bonding/launch de DEX effectif ; valider migration vers PumpSwap. |
|
||||
@@ -99,7 +99,7 @@ Un event peut devenir `materialized` uniquement si :
|
||||
| `raydium_launchpad` | `launch_surface` | `launch` | `known` | non | oui | non | `bootstrap` | decoded_events_only_until_local_corpus |
|
||||
| `raydium_liquidity_locking` | `to_verify` | `liquidity_locking` | `to_verify` | non | non | non | `to_verify` | upstream_git_program_id_requires_local_corpus_verification |
|
||||
| `raydium_router` | `aggregator_router` | `router` | `known` | non | non | non | `partial` | router_not_materialized_as_direct_trade_surface |
|
||||
| `raydium_stable_swap` | `dex_effective` | `AMM` | `known` | non | non | non | `planned` | deprecated_program_not_prioritized |
|
||||
| `raydium_stable_swap` | `dex_effective` | `AMM` | `known` | oui | oui | oui | `supported` | 0.7.52 closed; swaps via `stable_swap_vault_balance_delta` uniquement |
|
||||
| `meteora_dlmm` | `dex_effective` | `DLMM` | `known` | oui | oui | oui | `supported` | |
|
||||
| `meteora_dlc` | `to_verify` | `unknown` | `to_verify` | non | non | non | `to_verify` | surface_and_program_id_to_verify |
|
||||
| `meteora_damm_v1` | `dex_effective` | `AMM` | `known` | oui | oui | non | `partial` | meteora_damm_v1_swap_without_amount_payload |
|
||||
@@ -266,3 +266,10 @@ La clôture `0.7.50-pre-r2` complète les tranches `0.7.48` et `0.7.49` sans rou
|
||||
|
||||
La tranche a été validée sur base SQLite dédiée : tous les discriminants `00..11` sont observés localement. Les gaps de matérialisation restants sont expliqués par decoded-only, transaction failed ou absence de catalogue/deltas exploitables.
|
||||
|
||||
|
||||
## 0.7.52 — Raydium Stable Swap
|
||||
|
||||
| decoder_code | program id | status | layout | notes |
|
||||
|---|---|---|---|---|
|
||||
| `raydium_stable_swap` | `5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h` | supported / closed | legacy 1 octet | Surface locale `00..0d` couverte ; swaps `swap_base_in/out` matérialisés uniquement depuis deltas vault exacts ; instruction bounds et failed tx restent decoded-only. |
|
||||
|
||||
|
||||
@@ -189,3 +189,28 @@ Validation locale finale : tous les discriminants AMM v4 officiels `00..11` sont
|
||||
| `cpi/informational` | `simulate_info` | observed decoded-only | `k_sol_dex_decoded_events_only` | Audit technique uniquement. |
|
||||
| `token side effects` | SPL Token / Token-2022 inner instructions | transversal | decoded-only actuellement | Ne pas promouvoir comme AMM v4 direct. |
|
||||
| `unknown/unmapped audit` | residual `raydium_amm_v4.instruction_audit` | vide | decoded-only si futur inconnu | Tout residual doit être expliqué avant promotion. |
|
||||
|
||||
## 0.7.52 — `raydium_stable_swap`
|
||||
|
||||
Status: **closed on local corpus**.
|
||||
|
||||
| entry | discriminator | family | expected target | local event kind | status |
|
||||
|---|---:|---|---|---|---|
|
||||
| `initialize` | `00` | `pool_create` | `k_sol_pool_lifecycle_events` | `raydium_stable_swap.initialize` | observed/materialized when context complete |
|
||||
| `init_model_data` | `01` | `model_setup` | decoded-only | `raydium_stable_swap.init_model_data` | observed decoded-only / explained |
|
||||
| `update_model_data` | `02` | `admin_config` | `k_sol_pool_admin_events` | `raydium_stable_swap.update_model_data` | observed/materialized |
|
||||
| `deposit` | `03` | `liquidity_add` | `k_sol_liquidity_events` | `raydium_stable_swap.deposit` | observed/materialized |
|
||||
| `withdraw` | `04` | `liquidity_remove` | `k_sol_liquidity_events` | `raydium_stable_swap.withdraw` | observed/materialized |
|
||||
| `monitor_step` | `05` | `order_place` | `k_sol_orderbook_events` | `raydium_stable_swap.monitor_step` | observed/materialized |
|
||||
| `set_params` | `06` | `admin_config` | `k_sol_pool_admin_events` | `raydium_stable_swap.set_params` | observed/materialized |
|
||||
| `withdraw_pnl` | `07` | `fee` | `k_sol_fee_events` | `raydium_stable_swap.withdraw_pnl` | observed/materialized |
|
||||
| `withdraw_srm` | `08` | `fee` | `k_sol_fee_events` | `raydium_stable_swap.withdraw_srm` | observed/materialized when context complete |
|
||||
| `swap_base_in` | `09` | `swap` | `k_sol_trade_events` from vault deltas only | `raydium_stable_swap.swap_base_in` | success/vault-delta materialized; failed decoded-only |
|
||||
| `pre_initialize` | `0a` | `pool_create` | lifecycle or decoded-only | `raydium_stable_swap.pre_initialize` | observed decoded-only / explained in current corpus |
|
||||
| `swap_base_out` | `0b` | `swap` | `k_sol_trade_events` from vault deltas only | `raydium_stable_swap.swap_base_out` | success/vault-delta materialized; failed decoded-only |
|
||||
| `simulate_info` | `0c` | `cpi_transport` | decoded-only | `raydium_stable_swap.simulate_info` | observed decoded-only / explained |
|
||||
| `admin_cancel_orders` | `0d` | `orderbook_admin` | `k_sol_orderbook_events` | `raydium_stable_swap.admin_cancel_orders` | observed/materialized when context complete |
|
||||
| `swap_event` | `40c6cde8260871e2` | `cpi_transport` | decoded-only | `raydium_stable_swap.swap_event` | upstream mapped; not observed locally |
|
||||
|
||||
Stable Swap swaps are not materialized from instruction min/max bounds. `swap_base_in/out` require `amountSource=stable_swap_vault_balance_delta`; `stable_swap_instruction_bounds_only` remains decoded-only and, in the final corpus, appears only on failed transactions.
|
||||
|
||||
|
||||
@@ -10,9 +10,6 @@ This file records the manual Solscan account inventory added during the `0.7.50`
|
||||
| `Aldrin AMM V2` | `CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4` | `no_idl` | https://solscan.io/account/CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4 |
|
||||
| `ApePro Smart Wallet Program` | `JSW99DKmxNyREQM14SQLDykeBvEUG63TeohrvmofEiw` | `solscan_program_idl` | https://solscan.io/account/JSW99DKmxNyREQM14SQLDykeBvEUG63TeohrvmofEiw#programIdl |
|
||||
| `Aquifer` | `AQU1FRd7papthgdrwPTTq5JacJh8YtwEXaBfKU3bTz45` | `no_idl` | https://solscan.io/account/AQU1FRd7papthgdrwPTTq5JacJh8YtwEXaBfKU3bTz45 |
|
||||
| `Arbitrage Bot (3s1rA)` | `3s1rAymURnacreXreMy718GfqW6kygQsLNka1xDyW8pC` | `no_idl` | https://solscan.io/account/3s1rAymURnacreXreMy718GfqW6kygQsLNka1xDyW8pC |
|
||||
| `Arbitrage Bot (6MWVT)` | `6MWVTis8rmmk6Vt9zmAJJbmb3VuLpzoQ1aHH4N6wQEGh` | `no_idl` | https://solscan.io/account/6MWVTis8rmmk6Vt9zmAJJbmb3VuLpzoQ1aHH4N6wQEGh |
|
||||
| `Arbitrage Bot (9Zzf9)` | `9Zzf9QqTy3TkyXysvJBsXyuRjda5aXCEJ9vXfL2HKSYv` | `no_idl` | https://solscan.io/account/9Zzf9QqTy3TkyXysvJBsXyuRjda5aXCEJ9vXfL2HKSYv |
|
||||
| `Axiom Trade` | `FLASHX8DrLbgeR8FcfNV1F5krxYcYMUdBkrP1EPBtxB9` | `no_idl` | https://solscan.io/account/FLASHX8DrLbgeR8FcfNV1F5krxYcYMUdBkrP1EPBtxB9 |
|
||||
| `Bags: Token Authority` | `BAGSB9TpGrZxQbEsrEznv5jXXdwyP6AXerN8aVRiAmcv` | `solscan_account` | https://solscan.io/account/BAGSB9TpGrZxQbEsrEznv5jXXdwyP6AXerN8aVRiAmcv |
|
||||
| `Believe : Token Authority` | `5qWya6UjwWnGVhdSBL3hyZ7B45jbk6Byt1hwd7ohEGXE` | `no_idl` | https://solscan.io/account/5qWya6UjwWnGVhdSBL3hyZ7B45jbk6Byt1hwd7ohEGXE |
|
||||
|
||||
67
docs/VALIDATION_STATUS_0_7_52_FINAL.md
Normal file
67
docs/VALIDATION_STATUS_0_7_52_FINAL.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Validation status — 0.7.52 Raydium Stable Swap final
|
||||
|
||||
## Scope
|
||||
|
||||
Decoder: `raydium_stable_swap`
|
||||
|
||||
Program id:
|
||||
|
||||
```text
|
||||
5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h
|
||||
```
|
||||
|
||||
## Local commands
|
||||
|
||||
```text
|
||||
cargo test -p kb_lib
|
||||
407 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
|
||||
|
||||
cargo clippy -p kb_lib --all-targets -- -D warnings
|
||||
ok
|
||||
```
|
||||
|
||||
## Final replay snapshot
|
||||
|
||||
```text
|
||||
replayed=298
|
||||
decode_skipped=0
|
||||
ledger_upserts=298
|
||||
unsafe_ledger_rows=258
|
||||
trades=290
|
||||
liquidity=16
|
||||
lifecycle=4
|
||||
tokenAccount=0
|
||||
candle_upserts=1160
|
||||
instructionObservations=5317
|
||||
resetDeleted=1059
|
||||
catalog=40 tokens / 59 pools / 59 pairs
|
||||
```
|
||||
|
||||
## Stable Swap swap closure
|
||||
|
||||
```text
|
||||
raydium_stable_swap.swap_base_in stable_swap_instruction_bounds_only failed decoded=27 trades=0
|
||||
raydium_stable_swap.swap_base_in stable_swap_vault_balance_delta success decoded=171 trades=171
|
||||
raydium_stable_swap.swap_base_out stable_swap_instruction_bounds_only failed decoded=2 trades=0
|
||||
raydium_stable_swap.swap_base_out stable_swap_vault_balance_delta success decoded=4 trades=4
|
||||
```
|
||||
|
||||
No successful Stable Swap swap remains without trade or skip reason.
|
||||
|
||||
## Invariants
|
||||
|
||||
| invariant | status |
|
||||
|---|---|
|
||||
| residual local `instruction_audit` | empty |
|
||||
| residual `upstream_git.instruction_match` for covered entries | empty |
|
||||
| decoded without coverage | empty |
|
||||
| non-swap materialized as trade | empty |
|
||||
| failed tx materialized as trade | empty |
|
||||
| multi-target materialization | empty |
|
||||
| unexplained successful non-materialized event | empty |
|
||||
| successful swap via vault deltas | `trade_count = decoded_count` |
|
||||
| failed swap instruction bounds only | `trade_count = 0` |
|
||||
|
||||
## Decision
|
||||
|
||||
`0.7.52 raydium_stable_swap` is closed for the current local corpus.
|
||||
162
docs/reports/RAYDIUM_STABLE_SWAP_EVENT_COVERAGE_REPORT.md
Normal file
162
docs/reports/RAYDIUM_STABLE_SWAP_EVENT_COVERAGE_REPORT.md
Normal file
@@ -0,0 +1,162 @@
|
||||
# Raydium Stable Swap event coverage report — 0.7.52 final
|
||||
|
||||
## Scope
|
||||
|
||||
`0.7.52` closes the `raydium_stable_swap` tranche after `0.7.51 raydium_amm_v4`.
|
||||
|
||||
Canonical local decoder code:
|
||||
|
||||
```text
|
||||
raydium_stable_swap
|
||||
```
|
||||
|
||||
Canonical program id validated by local corpus:
|
||||
|
||||
```text
|
||||
5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h
|
||||
```
|
||||
|
||||
Stable Swap is handled as a Raydium legacy AMM-style program with a one-byte instruction discriminator layout. Anchor-like 8-byte discriminants remain upstream discovery evidence only and are not business proof.
|
||||
|
||||
## Final implementation status
|
||||
|
||||
Implemented and locally validated:
|
||||
|
||||
- `kb_lib/src/dex/raydium_stable_swap.rs`.
|
||||
- `RaydiumStableSwapDecoder` re-exported through `kb_lib/src/dex.rs` and `kb_lib/src/lib.rs`.
|
||||
- Stable Swap route in `DexDecodeService` before generic Raydium instruction-audit preservation.
|
||||
- One-byte Stable Swap instruction observation support.
|
||||
- Coverage entries for all locally observed Stable Swap discriminants `00..0d`.
|
||||
- Materialization into lifecycle/liquidity/fee/admin/orderbook/trade tables when the local corpus proves a safe target.
|
||||
- Swap materialization from exact vault balance deltas only.
|
||||
- Validation SQL in `validation_sql/SQL_VALIDATION_RAYDIUM_STABLE_SWAP_0_7_52.sql`.
|
||||
|
||||
## Instruction surface
|
||||
|
||||
| entry | discriminator | family | final target | local event kind | final status |
|
||||
|---|---:|---|---|---|---|
|
||||
| `initialize` | `00` | `pool_create` | `k_sol_pool_lifecycle_events` | `raydium_stable_swap.initialize` | observed/materialized when context complete |
|
||||
| `init_model_data` | `01` | `model_setup` | decoded-only | `raydium_stable_swap.init_model_data` | observed decoded-only / explained |
|
||||
| `update_model_data` | `02` | `admin_config` | `k_sol_pool_admin_events` | `raydium_stable_swap.update_model_data` | observed/materialized |
|
||||
| `deposit` | `03` | `liquidity_add` | `k_sol_liquidity_events` | `raydium_stable_swap.deposit` | observed/materialized |
|
||||
| `withdraw` | `04` | `liquidity_remove` | `k_sol_liquidity_events` | `raydium_stable_swap.withdraw` | observed/materialized |
|
||||
| `monitor_step` | `05` | `order_place` | `k_sol_orderbook_events` | `raydium_stable_swap.monitor_step` | observed/materialized |
|
||||
| `set_params` | `06` | `admin_config` | `k_sol_pool_admin_events` | `raydium_stable_swap.set_params` | observed/materialized |
|
||||
| `withdraw_pnl` | `07` | `fee` | `k_sol_fee_events` | `raydium_stable_swap.withdraw_pnl` | observed/materialized |
|
||||
| `withdraw_srm` | `08` | `fee` | `k_sol_fee_events` | `raydium_stable_swap.withdraw_srm` | observed/materialized when context complete |
|
||||
| `swap_base_in` | `09` | `swap` | `k_sol_trade_events` only from vault deltas | `raydium_stable_swap.swap_base_in` | observed, materialized for successful swaps with exact deltas |
|
||||
| `pre_initialize` | `0a` | `pool_create` | decoded-only or lifecycle when complete | `raydium_stable_swap.pre_initialize` | observed decoded-only / explained in current corpus |
|
||||
| `swap_base_out` | `0b` | `swap` | `k_sol_trade_events` only from vault deltas | `raydium_stable_swap.swap_base_out` | observed, materialized for successful swaps with exact deltas |
|
||||
| `simulate_info` | `0c` | `cpi_transport` | decoded-only | `raydium_stable_swap.simulate_info` | observed decoded-only / explained |
|
||||
| `admin_cancel_orders` | `0d` | `orderbook_admin` | `k_sol_orderbook_events` | `raydium_stable_swap.admin_cancel_orders` | observed/materialized when context complete |
|
||||
| `swap_event` | `40c6cde8260871e2` | `cpi_transport` | decoded-only | `raydium_stable_swap.swap_event` | upstream mapped, not observed in local corpus |
|
||||
|
||||
## Swap amount policy
|
||||
|
||||
Stable Swap instruction arguments are retained as instruction bounds, but they are not sufficient for trade/candle materialization:
|
||||
|
||||
```text
|
||||
swap_base_in:
|
||||
amountInRaw = exact input argument
|
||||
minimumAmountOutRaw = slippage lower bound, not exact output
|
||||
|
||||
swap_base_out:
|
||||
amountOutRaw = requested output argument
|
||||
maxAmountInRaw = slippage upper bound, not exact input
|
||||
```
|
||||
|
||||
Therefore, `swap_base_in` and `swap_base_out` materialize as trades/candles only when exact base/quote amounts are inferred from vault balance deltas:
|
||||
|
||||
```text
|
||||
amountSource = stable_swap_vault_balance_delta
|
||||
```
|
||||
|
||||
Instruction-bound-only swaps remain decoded-only:
|
||||
|
||||
```text
|
||||
amountSource = stable_swap_instruction_bounds_only
|
||||
tradeCandidate = false
|
||||
candleCandidate = false
|
||||
```
|
||||
|
||||
For failed transactions the skip reasons are:
|
||||
|
||||
```text
|
||||
skipTradeReason = failed_transaction
|
||||
skipCandleReason = failed_transaction
|
||||
```
|
||||
|
||||
For successful transactions where exact vault deltas cannot be proven, the expected skip reason is:
|
||||
|
||||
```text
|
||||
stable_swap_exact_amounts_unresolved
|
||||
```
|
||||
|
||||
The final local corpus has no successful unresolved Stable Swap swap.
|
||||
|
||||
## Final local validation snapshot
|
||||
|
||||
Latest confirmed local commands:
|
||||
|
||||
```text
|
||||
cargo test -p kb_lib
|
||||
407 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
|
||||
|
||||
cargo clippy -p kb_lib --all-targets -- -D warnings
|
||||
ok
|
||||
```
|
||||
|
||||
Latest replay snapshot:
|
||||
|
||||
```text
|
||||
replayed=298
|
||||
decode_skipped=0
|
||||
ledger_upserts=298
|
||||
unsafe_ledger_rows=258
|
||||
trades=290
|
||||
liquidity=16
|
||||
lifecycle=4
|
||||
token_account=0
|
||||
candle_upserts=1160
|
||||
instructionObservations=5317
|
||||
resetDeleted=1059
|
||||
catalog=40 tokens / 59 pools / 59 pairs
|
||||
```
|
||||
|
||||
Stable Swap swap closure:
|
||||
|
||||
| event kind | amount source | tx status | decoded | trades |
|
||||
|---|---|---|---:|---:|
|
||||
| `raydium_stable_swap.swap_base_in` | `stable_swap_instruction_bounds_only` | failed | 27 | 0 |
|
||||
| `raydium_stable_swap.swap_base_in` | `stable_swap_vault_balance_delta` | success | 171 | 171 |
|
||||
| `raydium_stable_swap.swap_base_out` | `stable_swap_instruction_bounds_only` | failed | 2 | 0 |
|
||||
| `raydium_stable_swap.swap_base_out` | `stable_swap_vault_balance_delta` | success | 4 | 4 |
|
||||
|
||||
UI smoke evidence after the vault-delta correction:
|
||||
|
||||
```text
|
||||
pair 27, timeframe 60s -> 70 candles
|
||||
pair 30, timeframe 60s -> 44 candles
|
||||
```
|
||||
|
||||
## Final invariant status
|
||||
|
||||
Validated as clean on the local corpus:
|
||||
|
||||
- residual `raydium_stable_swap.instruction_audit`: empty;
|
||||
- residual `upstream_git.instruction_match` for covered local entries: empty;
|
||||
- decoded-without-coverage: empty;
|
||||
- non-swap materialized as trade: empty;
|
||||
- failed transaction materialized as business trade: empty;
|
||||
- multi-target materialization: empty;
|
||||
- successful non-materialized swaps without skip reason: empty;
|
||||
- Stable Swap successful swaps with `stable_swap_vault_balance_delta`: `trade_count = decoded_count`;
|
||||
- Stable Swap instruction-bound-only swaps: failed only, `trade_count = 0`.
|
||||
|
||||
## Closure decision
|
||||
|
||||
`0.7.52 raydium_stable_swap` is closed for the currently observed local corpus.
|
||||
|
||||
The decoder has detected all locally observed Stable Swap instruction discriminants, materialized every event that can safely be materialized, and preserved non-materializable/failed events as decoded-only with explicit reasons.
|
||||
|
||||
Future work is not a blocker for `0.7.52` and should be handled as a later tranche if a new local corpus reveals additional discriminants or a direct, reliable `swap_event` path.
|
||||
Reference in New Issue
Block a user