v0.2.9-pre.008

This commit is contained in:
2026-08-24 16:16:48 +02:00
parent 05aec88178
commit affa18a6e9
9 changed files with 1198 additions and 40 deletions

73
deltas/0.2.9/pre.008.md Normal file
View File

@@ -0,0 +1,73 @@
<!-- file: deltas/0.2.9/pre.008.md -->
<!-- version: 1 -->
# Delta `0.2.9-pre.008` — Yellowstone Blocks + block_meta + entry
## 1. Base et signal technique
Base : `0.2.9-pre.007`, fermée sur gate opérateur intégralement vert.
```text
workspace.package.version = 0.2.9-pre.8
```
## 2. Scope
La tranche complète uniquement la dernière famille de filtres/updates standard avant louverture bidi : Blocks, `block_meta` et `entry`.
| Surface | Matérialisation |
|----------------------------|-----------------|
| filtre Blocks | complet |
| `blocks_meta` | marker inchangé |
| `entry` | marker inchangé |
| `SubscribeUpdateBlock` | DTO + decode |
| `SubscribeUpdateBlockMeta` | DTO + decode |
| `SubscribeUpdateEntry` | DTO + decode |
| stream bidi / lifecycle | OUT |
| reconnect / replay | OUT |
| PublicNode / Config V3 | OUT |
| `SubscribeDeshred` | OUT `0.2.9` |
## 3. Filtre Blocks
`YellowstoneSubscribeBlockFilter` matérialise exactement le wire courant : `account_include[]`, `include_transactions?`, `include_accounts?`, `include_entries?` et `cuckoo_account_include?`. Les account selectors utilisent `ksp_core_lib::Pubkey`, restent ordonnés et bornés ; `Debug` ne rend aucune adresse.
## 4. Updates Blocks
`YellowstoneBlockUpdate` conserve la metadata de bloc, rewards, temps/hauteur optionnels, parent, compteurs et payloads optionnels. Les transactions réutilisent `YellowstoneTransactionInfo`, les comptes réutilisent `YellowstoneAccountInfo`, et les entries utilisent `YellowstoneEntryInfo`.
`YellowstoneBlockMetaUpdate` conserve la variante metadata-only. `YellowstoneEntryUpdate` enveloppe la même `YellowstoneEntryInfo` réutilisée dans les blocs. `starting_transaction_index` reste explicite, y compris sa valeur legacy `0`.
Les compteurs serveur sont indépendants des tailles de vecteurs : aucune égalité artificielle nest imposée quand les flags `include_*` demandent lomission dun payload.
## 5. Validation et sécurité
Les blockhash textuels sont bornés, trim-exacts et Base58-décodés vers exactement 32 octets ; les hash dentrée sont exactement 32 octets. Les collections Block/Rewards sont bornées. `Debug` ne copie aucun blockhash, parent blockhash, reward pubkey, account selector, données account, transaction, instruction ou entry hash.
Les conversions protobuf et décodeurs restent sous `#[cfg(test)]` jusquà louverture du stream runtime en `pre.009`.
## 6. Tests/canaries ajoutés
```text
block filter exact wire + redaction
block update complet avec Transaction/Account/Entry réutilisés
server counts distincts des payload-vector lengths
block-meta optional states
entry starting_transaction_index + malformed hash
public API canary pre.008
release completeness canary pre.008
```
## 7. Gate opérateur
```bash
cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test -p ksp-core-lib --test workspace_dependencies
cargo test --workspace
```
Aucune dépendance ni feature Cargo nest modifiée ; aucun `cargo tree` supplémentaire nest requis.