0.7.55
This commit is contained in:
134
docs/reports/PUMP_FEES_EVENT_COVERAGE_REPORT.md
Normal file
134
docs/reports/PUMP_FEES_EVENT_COVERAGE_REPORT.md
Normal file
@@ -0,0 +1,134 @@
|
||||
<!-- file: docs/reports/PUMP_FEES_EVENT_COVERAGE_REPORT.md -->
|
||||
|
||||
# Pump Fees event coverage report — 0.7.55 final
|
||||
|
||||
## Portée
|
||||
|
||||
Programme cible : `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ`.
|
||||
|
||||
Source locale prioritaire : `idls/pump_fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.json`.
|
||||
|
||||
L'IDL locale couvre `29` instructions, `20` events Anchor, `9` accounts et `34` types. La tranche ajoute un decoder local maximal `pump_fees` depuis l'IDL locale, le registre Carbon partiel et les discriminators observés via Solscan/corpus.
|
||||
|
||||
## Décisions métier
|
||||
|
||||
- `pump_fees` est traité comme programme fee/config/accounting.
|
||||
- Aucun `k_sol_trade_events` ni candle ne doit être créé pour `pump_fees` sans preuve transactionnelle stricte d'un swap autonome.
|
||||
- `get_fees` reste decoded-only : il décrit un calcul/preview de fees, pas un paiement réalisé.
|
||||
- Les claims social fee alimentent `k_sol_reward_events` seulement si transaction OK et montant/acteur/mint exploitables.
|
||||
- Les flux donation/buyback alimentent `k_sol_fee_events` seulement si transaction OK et montant fiable.
|
||||
- Les créations/configurations/autorités/tiers alimentent `k_sol_pool_lifecycle_events` ou `k_sol_pool_admin_events` selon classification.
|
||||
- Les transactions failed restent decoded-only/audit-only.
|
||||
|
||||
## Résultat build/test
|
||||
|
||||
```text
|
||||
cargo test -p kb_lib -> 431 passed / 0 failed
|
||||
cargo clippy -p kb_lib --all-targets -- -D warnings -> OK
|
||||
```
|
||||
|
||||
## Replay final rapporté
|
||||
|
||||
```text
|
||||
127 replayed
|
||||
0 decode skipped
|
||||
150 ledger upserts
|
||||
125 unsafe ledger rows
|
||||
4 trades
|
||||
0 liquidity
|
||||
115 lifecycle
|
||||
0 tokenAccount
|
||||
16 candle upserts
|
||||
instructionObservations = 2234
|
||||
resetDeleted = 1644
|
||||
catalog = 11 tokens / 10 pools / 10 pairs
|
||||
```
|
||||
|
||||
Les `4 trades` et `16 candle upserts` du replay proviennent d'autres surfaces du corpus local ; le contrôle anti-trade `pump_fees` est vide.
|
||||
|
||||
## Coverage local
|
||||
|
||||
### Instructions observées et couvertes
|
||||
|
||||
| Instruction | Discriminator | Observation principale | Matérialisation |
|
||||
|---|---:|---:|---|
|
||||
| `sweep_buyback` | `8a21cc26cfa19fe2` | `96` | `k_sol_fee_events` |
|
||||
| `create_fee_sharing_config` | `c34e564c6f34fbd5` | `42` observations / `36` decoded | `k_sol_pool_lifecycle_events` |
|
||||
| `update_fee_shares` | `bd0d8863bba4ed23` | `26` observations / `16` decoded | `k_sol_pool_admin_events` |
|
||||
| `claim_social_fee_pda_v2` | `114df0863abc3595` | `25` | `k_sol_reward_events` |
|
||||
| `update_fee_shares_v2` | `6ffb31064e4e6a12` | `19` | `k_sol_pool_admin_events` |
|
||||
| `claim_social_fee_pda` | `e115fb85a11ec7e2` | `15` observations / `10` decoded | `k_sol_reward_events` |
|
||||
| `crank_donation_fee_pda` | `dc0abda7a9111945` | `14` | `k_sol_fee_events` |
|
||||
| `get_fees` | `e7257e55cf5b3f34` | `13` observations / `5` decoded | decoded-only |
|
||||
| `transfer_fee_sharing_authority` | `ca0a4bc8a422d260` | `12` | `k_sol_pool_admin_events` |
|
||||
| `initialize_fee_program_global` | `23d78254e9387ca7` | `1` | `k_sol_pool_lifecycle_events` |
|
||||
|
||||
Le discriminator `e445a52e51cb9a1d` est classé comme `pump_fees.anchor_self_cpi_log` transport Anchor self-CPI : `271` observations / `119` tx.
|
||||
|
||||
### Instructions IDL non observées mais programmées
|
||||
|
||||
Ces entrées n'ont pas de signature Solscan/corpus au moment de la clôture, mais restent décodables si des transactions futures apparaissent :
|
||||
|
||||
| Instruction | Discriminator | Classification | Target prévu |
|
||||
|---|---:|---|---|
|
||||
| `reset_fee_sharing_config_v2` | `a9f511d15e5bf880` | admin_config | `k_sol_pool_admin_events` |
|
||||
| `set_authority` | `85fa25156ea31a79` | admin_config | `k_sol_pool_admin_events` |
|
||||
| `set_claim_rate_limit` | `b9d39faed4315804` | audit | decoded-only |
|
||||
| `set_disable_flags` | `c2d9702372de33be` | admin_config | `k_sol_pool_admin_events` |
|
||||
| `set_social_claim_authority` | `9336b89a88edb999` | admin_config | `k_sol_pool_admin_events` |
|
||||
|
||||
### Anchor events IDL non observés mais testés synthétiquement
|
||||
|
||||
| Event Anchor | Discriminator | Statut |
|
||||
|---|---:|---|
|
||||
| `SetAuthorityEvent` | `12af8442d0c957f2` | decoder + test synthétique |
|
||||
| `SetClaimRateLimitEvent` | `0d8f8febb5133328` | decoder + test synthétique |
|
||||
| `SetDisableFlagsEvent` | `0508b3413137917e` | decoder + test synthétique |
|
||||
| `SetSocialClaimAuthorityEvent` | `3c767f84ef34fe0e` | decoder + test synthétique |
|
||||
|
||||
### Discriminators Solscan hors IDL locale
|
||||
|
||||
Ces discriminators ont été trouvés par filtres Solscan, mais ne sont pas observés dans le corpus local final et ne sont pas dans l'IDL locale fournie. Ils restent conservés en coverage comme surfaces futures :
|
||||
|
||||
| Event | Discriminator | Statut |
|
||||
|---|---:|---|
|
||||
| `revoke_fee_sharing_authority_event` | `7217653c0ebe993e` | `upstream_git_mapped_unverified` |
|
||||
| `transfer_fee_sharing_authority_event` | `7c8fc6f54db808ec` | `upstream_git_mapped_unverified` |
|
||||
|
||||
## Écarts observed/materialized
|
||||
|
||||
Les écarts `observed_count > materialized_count` sont expliqués par des transactions failed ou par une politique decoded-only. La requête `09b` documente notamment :
|
||||
|
||||
| Entrée | Observed | Materialized | Explication |
|
||||
|---|---:|---:|---|
|
||||
| `get_fees` | `5` | `0` | decoded-only volontaire |
|
||||
| `claim_social_fee_pda_v2` | `25` | `21` | `4` failed decoded |
|
||||
| `create_fee_sharing_config` | `36` | `33` | `3` failed decoded |
|
||||
| `initialize_fee_config` | `5` | `2` | `3` failed decoded |
|
||||
| `social_fee_pda_claimed` | `17` | `15` | `2` failed decoded |
|
||||
| `crank_donation_fee_pda` | `14` | `12` | `2` failed decoded |
|
||||
| `update_fee_shares_v2` | `19` | `17` | `2` failed decoded |
|
||||
| `revoke_fee_sharing_authority` | `6` | `5` | `1` failed decoded |
|
||||
|
||||
La requête `06` confirme qu'il n'existe aucun successful non-materialized sans skip/policy explicite.
|
||||
|
||||
## Checks de fermeture
|
||||
|
||||
SQL dédié : `validation_sql/SQL_VALIDATION_PUMP_FEES_0_7_55.sql`.
|
||||
|
||||
Résultats de fermeture rapportés :
|
||||
|
||||
- fallback `upstream_git` `pump_fees` : vide ;
|
||||
- `instruction_name` `pump_fees` vide : vide ;
|
||||
- `event_family = unknown` ou vide pour instruction/event : vide ;
|
||||
- decoded `pump_fees` sans coverage : vide ;
|
||||
- fallback résiduel pour entrées couvertes localement : vide ;
|
||||
- successful non-materialized sans skip/policy : vide ;
|
||||
- failed transaction avec business materialization : vide ;
|
||||
- multi-target materialization : vide ;
|
||||
- anti-trade/candle direct `pump_fees` : vide ;
|
||||
- watchlist globale : plus aucun `pump_fees`, reste seulement `jupiter_swap.route_v2` comme backlog ponctuel.
|
||||
|
||||
## Statut final
|
||||
|
||||
`0.7.55 pump_fees` est clôturé techniquement. Ne pas rouvrir `pump_fees`, `pump_fun`, `pump_swap` ou Raydium sans bug prouvé par SQL/code ou apparition d'un nouveau discriminant/corpus externe exploitable.
|
||||
Reference in New Issue
Block a user