<!-- file: docs/VALIDATION_STATUS_0_7_51_MAX_DECODER.md -->

# Validation status — `0.7.51 raydium_amm_v4 max-decoder`

## Scope

Delta incrémental après le premier patch `0.7.51 raydium_amm_v4`.

Objectifs couverts :

- correction du test `swap_base_in` avec une payload `0x09` ;
- ajout d'un test dédié `swap_base_in_v2` avec une payload `0x10` ;
- suppression de la route métier legacy `raydium_amm_v4.swap` ;
- reconnaissance locale maximale des discriminants AMM v4 officiels `00..11` ;
- conservation des instructions dépréciées comme events decoded-only ou non-trade matérialisables si corpus successful ;
- reclassement orderbook/fee/admin/liquidity/lifecycle pour les non-swaps AMM v4 ;
- reconstruction des observations techniques par transaction avant upsert ;
- extension du SQL de validation AMM v4.

## Sandbox validation

Non exécutée dans l'environnement de génération : `cargo`, `rustc` et `rustfmt` ne sont pas disponibles.

## Validation locale obligatoire

```bash
cargo fmt
cargo test -p kb_lib
cargo clippy -p kb_lib --all-targets -- -D warnings
```

## Replay local attendu

Après application du delta, relancer le replay dédié `0.7.51` avec :

```text
skipDexDecode = no
forceDexDecode = yes
deferInstructionObservations = yes
```

Puis exécuter :

```text
validation_sql/SQL_VALIDATION_RAYDIUM_AMM_V4_0_7_51.sql
```

Les contrôles bloquants attendus vides sont :

- `raydium_amm_v4.instruction_audit` résiduel ;
- `upstream_git.instruction_match` localement couvert ;
- `raydium_amm_v4.swap` legacy ;
- decoded AMM v4 sans coverage entry ;
- observations AMM v4 avec `length(discriminator_hex) > 2` ;
- non-swap AMM v4 avec `trade_count > 0` ;
- failed tx matérialisée en trade.
