v0.2.9-pre.010-fix.001
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md -->
|
||||
<!-- version: 21 -->
|
||||
<!-- version: 22 -->
|
||||
|
||||
# Validation `0.2.9` — moteur Yellowstone + standard Solana + PublicNode
|
||||
|
||||
> **Statut : `pre.009-fix.001` est fermé : fmt/audit/check/Clippy sans warning, Transport 379 unit + 48 public API + 42 completeness + 4 doctests, dependency canary et workspace PASS. `pre.010` est candidate reconnect/replay avec observabilité prudente des gaps/duplicates.**
|
||||
> **Statut : `pre.010` est fonctionnellement vert sur le gate opérateur (383 unit + 49 public API + 43 completeness + 4 doctests, workspace PASS), avec deux warnings Clippy `collapsible_if`. `pre.010-fix.001` corrige ces warnings et la description crate-root restée au niveau `pre.009`; aucun changement reconnect/replay n'est introduit. Fermeture requise sans warning avant `pre.011`.**
|
||||
|
||||
## 1. Autorités du gate
|
||||
|
||||
@@ -979,3 +979,34 @@ La détection de gap n'utilise pas les sauts entre slots d'updates filtrés : un
|
||||
Le cache de duplicates retient des identités minimales Account/Slot/Transaction/TransactionStatus/Block/BlockMeta/Entry. Il ne retient pas les payloads complets et ne supprime jamais un update. Pour Block/BlockMeta, le blockhash fait partie de l'identité afin de ne pas classer deux histoires divergentes de même slot comme un simple duplicate ; aucune détection globale d'equivocation n'est prétendue.
|
||||
|
||||
**Gate candidate attendu :** audit statique clean ; après exécution opérateur, Transport attendu autour de 383 unit / 49 public API / 43 release-completeness / 4 doctests. Aucune dépendance/feature changée, donc pas de `cargo tree` supplémentaire.
|
||||
|
||||
## 30. Gate `pre.010-fix.001` — Clippy + cohérence crate-root
|
||||
|
||||
Premier gate opérateur de `pre.010` :
|
||||
|
||||
| Gate | Résultat avant fix | Correctif `fix.001` |
|
||||
|------------------------------------------|--------------------|----------------------------------------------|
|
||||
| `cargo fmt --all` | PASS | à réexécuter |
|
||||
| audit Rust workspace | PASS / clean | à réexécuter |
|
||||
| `cargo check --workspace` | PASS | contrat inchangé |
|
||||
| `cargo clippy --workspace --all-targets` | PASS + 2 warnings | deux `collapsible_if` fusionnés |
|
||||
| Transport unit | 383/383 PASS | contrat attendu inchangé |
|
||||
| Transport `public_api` | 49/49 PASS | contrat attendu inchangé |
|
||||
| Transport `release_completeness` | 43/43 PASS | contrat attendu inchangé |
|
||||
| Transport doctests | 4/4 PASS | contrat attendu inchangé |
|
||||
| `cargo test --workspace` | PASS | contrat attendu inchangé |
|
||||
| description crate-root | stale `pre.009` | synchronisée avec reconnect/replay `pre.010` |
|
||||
|
||||
Warnings observés :
|
||||
|
||||
```text
|
||||
crates/ksp-onchain-transport-lib/src/grpc_stream.rs:491 clippy::collapsible_if
|
||||
crates/ksp-onchain-transport-lib/src/grpc_stream.rs:537 clippy::collapsible_if
|
||||
```
|
||||
|
||||
Le premier concerne uniquement l'éviction lorsque le cache d'identités dépasse 512 entrées ; le second uniquement le chemin `Ping -> send_automatic_ping`. Les let-chains produisent les mêmes conditions et les mêmes sorties qu'avant fix. Aucun `allow` Clippy n'est ajouté.
|
||||
|
||||
La revue de la sémantique `pre.010` ne révèle pas d'écart supplémentaire avec le contrat retenu : `from_slot = max(explicite, last_observed)`, ReplayInfo reste informatif, le clamp n'a lieu que si `first_available > requested`, les duplicates sont comptés mais livrés, et les non-promesses exactly-once/lossless restent explicites.
|
||||
|
||||
**Verdict candidate :** `pre.010-fix.001` est prête pour gate opérateur. `pre.011` reste TODO jusqu'à PASS sans warning.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user