v0.2.9-pre.008-fix.001
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 247
|
# version: 248
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.2.9-pre.8"
|
version = "0.2.9-pre.8.fix.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: crates/ksp-app-config-desk/Cargo.toml
|
# file: crates/ksp-app-config-desk/Cargo.toml
|
||||||
# version: 8
|
# version: 9
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "ksp-app-config-desk"
|
name = "ksp-app-config-desk"
|
||||||
@@ -22,6 +22,7 @@ path = "src/main.rs"
|
|||||||
tauri-build.workspace = true
|
tauri-build.workspace = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
chrono = { workspace = true, features = ["std", "now"] }
|
||||||
fs2.workspace = true
|
fs2.workspace = true
|
||||||
ksp-config-lib = { path = "../ksp-config-lib" }
|
ksp-config-lib = { path = "../ksp-config-lib" }
|
||||||
ksp-core-lib = { path = "../ksp-core-lib" }
|
ksp-core-lib = { path = "../ksp-core-lib" }
|
||||||
@@ -30,7 +31,6 @@ serde = { workspace = true, features = ["derive"] }
|
|||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
tauri.workspace = true
|
tauri.workspace = true
|
||||||
tauri-plugin-tracing.workspace = true
|
tauri-plugin-tracing.workspace = true
|
||||||
chrono = { workspace = true, features = ["std", "now"] }
|
|
||||||
tokio = { workspace = true, features = ["time"] }
|
tokio = { workspace = true, features = ["time"] }
|
||||||
ts-rs.workspace = true
|
ts-rs.workspace = true
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: crates/ksp-config-lib/Cargo.toml
|
# file: crates/ksp-config-lib/Cargo.toml
|
||||||
# version: 7
|
# version: 8
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "ksp-config-lib"
|
name = "ksp-config-lib"
|
||||||
@@ -9,12 +9,12 @@ repository.workspace = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
directories.workspace = true
|
directories.workspace = true
|
||||||
|
jsonschema.workspace = true
|
||||||
ksp-core-lib = { path = "../ksp-core-lib" }
|
ksp-core-lib = { path = "../ksp-core-lib" }
|
||||||
ksp-logging-lib = { path = "../ksp-logging-lib" }
|
ksp-logging-lib = { path = "../ksp-logging-lib" }
|
||||||
ksp-onchain-transport-lib = { path = "../ksp-onchain-transport-lib" }
|
ksp-onchain-transport-lib = { path = "../ksp-onchain-transport-lib" }
|
||||||
serde = { workspace = true, features = ["derive"] }
|
serde = { workspace = true, features = ["derive"] }
|
||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
jsonschema.workspace = true
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile.workspace = true
|
tempfile.workspace = true
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: crates/ksp-logging-lib/Cargo.toml
|
# file: crates/ksp-logging-lib/Cargo.toml
|
||||||
# version: 5
|
# version: 6
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "ksp-logging-lib"
|
name = "ksp-logging-lib"
|
||||||
@@ -10,8 +10,8 @@ repository.workspace = true
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
ksp-core-lib = { path = "../ksp-core-lib" }
|
ksp-core-lib = { path = "../ksp-core-lib" }
|
||||||
tracing = { workspace = true, features = ["std"] }
|
tracing = { workspace = true, features = ["std"] }
|
||||||
tracing-subscriber = { workspace = true, features = ["fmt", "json", "ansi"] }
|
|
||||||
tracing-appender.workspace = true
|
tracing-appender.workspace = true
|
||||||
|
tracing-subscriber = { workspace = true, features = ["fmt", "json", "ansi"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread"] }
|
tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread"] }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: crates/ksp-onchain-transport-lib/Cargo.toml
|
# file: crates/ksp-onchain-transport-lib/Cargo.toml
|
||||||
# version: 8
|
# version: 9
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "ksp-onchain-transport-lib"
|
name = "ksp-onchain-transport-lib"
|
||||||
@@ -8,10 +8,10 @@ edition.workspace = true
|
|||||||
repository.workspace = true
|
repository.workspace = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
ksp-core-lib = { path = "../ksp-core-lib" }
|
|
||||||
ksp-logging-lib = { path = "../ksp-logging-lib" }
|
|
||||||
futures-util = { workspace = true, features = ["sink", "std"] }
|
futures-util = { workspace = true, features = ["sink", "std"] }
|
||||||
http.workspace = true
|
http.workspace = true
|
||||||
|
ksp-core-lib = { path = "../ksp-core-lib" }
|
||||||
|
ksp-logging-lib = { path = "../ksp-logging-lib" }
|
||||||
reqwest = { workspace = true, features = ["rustls"] }
|
reqwest = { workspace = true, features = ["rustls"] }
|
||||||
serde = { workspace = true, features = ["derive"] }
|
serde = { workspace = true, features = ["derive"] }
|
||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
// file: crates/ksp-onchain-transport-lib/unit_tests/grpc_subscribe.rs
|
// file: crates/ksp-onchain-transport-lib/unit_tests/grpc_subscribe.rs
|
||||||
// version: 4
|
// version: 5
|
||||||
|
|
||||||
fn filter_name(value: &str) -> crate::YellowstoneSubscribeFilterName {
|
fn filter_name(value: &str) -> crate::YellowstoneSubscribeFilterName {
|
||||||
return crate::YellowstoneSubscribeFilterName::new(value).expect("fixture filter name must validate");
|
return crate::YellowstoneSubscribeFilterName::new(value).expect("fixture filter name must validate");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn minimal_transaction_info(signature_byte: u8, index: u64) -> yellowstone_grpc_proto::geyser::SubscribeUpdateTransactionInfo {
|
fn minimal_transaction_info(signature_byte: u8, index: u64) -> yellowstone_grpc_proto::geyser::SubscribeUpdateTransactionInfo {
|
||||||
let mut meta = yellowstone_grpc_proto::solana::storage::confirmed_block::TransactionStatusMeta::default();
|
let meta = yellowstone_grpc_proto::solana::storage::confirmed_block::TransactionStatusMeta { fee: 5_000, ..std::default::Default::default() };
|
||||||
meta.fee = 5_000;
|
|
||||||
return yellowstone_grpc_proto::geyser::SubscribeUpdateTransactionInfo {
|
return yellowstone_grpc_proto::geyser::SubscribeUpdateTransactionInfo {
|
||||||
signature: vec![signature_byte; 64],
|
signature: vec![signature_byte; 64],
|
||||||
is_vote: false,
|
is_vote: false,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: crates/ksp-wallet-lib/Cargo.toml
|
# file: crates/ksp-wallet-lib/Cargo.toml
|
||||||
# version: 6
|
# version: 7
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "ksp-wallet-lib"
|
name = "ksp-wallet-lib"
|
||||||
@@ -9,12 +9,12 @@ repository.workspace = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
argon2 = { workspace = true, features = ["alloc", "zeroize"] }
|
argon2 = { workspace = true, features = ["alloc", "zeroize"] }
|
||||||
|
base64.workspace = true
|
||||||
chacha20poly1305 = { workspace = true, features = ["alloc", "zeroize"] }
|
chacha20poly1305 = { workspace = true, features = ["alloc", "zeroize"] }
|
||||||
ed25519-dalek = { workspace = true, features = ["signature", "zeroize"] }
|
ed25519-dalek = { workspace = true, features = ["signature", "zeroize"] }
|
||||||
getrandom.workspace = true
|
getrandom.workspace = true
|
||||||
ksp-core-lib = { path = "../ksp-core-lib" }
|
ksp-core-lib = { path = "../ksp-core-lib" }
|
||||||
ksp-logging-lib = { path = "../ksp-logging-lib" }
|
ksp-logging-lib = { path = "../ksp-logging-lib" }
|
||||||
base64.workspace = true
|
|
||||||
serde = { workspace = true, features = ["derive"] }
|
serde = { workspace = true, features = ["derive"] }
|
||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
solana-keypair.workspace = true
|
solana-keypair.workspace = true
|
||||||
|
|||||||
59
deltas/0.2.9/pre.008-fix.001.md
Normal file
59
deltas/0.2.9/pre.008-fix.001.md
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<!-- file: deltas/0.2.9/pre.008-fix.001.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta `0.2.9-pre.008-fix.001` — hygiène Clippy fixture Blocks
|
||||||
|
|
||||||
|
## 1. Objet
|
||||||
|
|
||||||
|
Corriger l'unique warning Clippy observé au premier gate opérateur de `pre.008`, sans modifier le contrat fonctionnel Blocks + `block_meta` + `entry`.
|
||||||
|
|
||||||
|
## 2. Preuve opérateur avant fix
|
||||||
|
|
||||||
|
```text
|
||||||
|
cargo fmt --all PASS
|
||||||
|
workspace Rust audit PASS / clean
|
||||||
|
cargo check --workspace PASS
|
||||||
|
cargo clippy --workspace --all-targets PASS + 1 warning field_reassign_with_default
|
||||||
|
Transport unit 370/370 PASS
|
||||||
|
Transport public_api 47/47 PASS
|
||||||
|
Transport release_completeness 41/41 PASS
|
||||||
|
Transport doctests 4/4 PASS
|
||||||
|
Core dependency canary 3/3 PASS
|
||||||
|
cargo test --workspace PASS
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Correction
|
||||||
|
|
||||||
|
| Surface | Correction | Justification |
|
||||||
|
|---------------------------------------------|--------------------------------------------------------------|------------------------------------------------|
|
||||||
|
| `minimal_transaction_info()` fixture Blocks | `TransactionStatusMeta { fee: 5_000, ..Default::default() }` | supprime `clippy::field_reassign_with_default` |
|
||||||
|
| workspace version | `0.2.9-pre.8.fix.1` | signal technique du delta fix |
|
||||||
|
| `016` + `012` | preuve du gate et statut `fix.001` | traçabilité de fermeture de `pre.008` |
|
||||||
|
|
||||||
|
## 4. Non-changements
|
||||||
|
|
||||||
|
```text
|
||||||
|
aucun changement runtime N1/N2
|
||||||
|
aucun changement du filtre Blocks
|
||||||
|
aucun changement des DTOs Block/BlockMeta/Entry
|
||||||
|
aucun changement du wire protobuf
|
||||||
|
aucune dépendance/feature Cargo
|
||||||
|
aucun allow Clippy
|
||||||
|
aucun stream bidi
|
||||||
|
aucun reconnect/replay
|
||||||
|
aucun PublicNode / Config V3
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. Gate attendu
|
||||||
|
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
|
||||||
|
Critère de fermeture : même gate vert, cette fois sans warning `field_reassign_with_default`.
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<!-- file: docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md -->
|
<!-- file: docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md -->
|
||||||
<!-- version: 16 -->
|
<!-- version: 17 -->
|
||||||
|
|
||||||
# Plan `0.2.9` — moteur Yellowstone gRPC + standard Solana + PublicNode
|
# Plan `0.2.9` — moteur Yellowstone gRPC + standard Solana + PublicNode
|
||||||
|
|
||||||
> **Statut : `0.2.9-pre.007` est fermée sur gate opérateur intégralement vert : fmt/audit/check/Clippy/workspace PASS, Transport 367 unit + 46 public API + 40 completeness + 4 doctests. `0.2.9-pre.008` est candidate et complète uniquement Blocks + `block_meta` + `entry` du `Subscribe` standard : filtre Blocks courant complet, rewards/time/height, réutilisation des DTOs Transaction/Account, compteurs serveur indépendants des payloads optionnels et `starting_transaction_index`. Aucun stream bidi n’est encore ouvert ; lifecycle reste `pre.009`.**
|
> **Statut : `0.2.9-pre.008` est fonctionnellement verte sur gate opérateur : fmt/audit/check/tests/workspace PASS, Transport 370 unit + 47 public API + 41 completeness + 4 doctests. Clippy passe mais émet un unique warning `field_reassign_with_default` dans la fixture `unit_tests/grpc_subscribe.rs`. `0.2.9-pre.008-fix.001` est candidate et corrige uniquement cette hygiène de fixture ; aucun changement runtime Blocks ni bidi.**
|
||||||
|
|
||||||
## 1. Objet, base et état d'ouverture
|
## 1. Objet, base et état d'ouverture
|
||||||
|
|
||||||
@@ -931,8 +931,8 @@ pre.006 DONE — structure Transport : namespace privé HTTP explicite
|
|||||||
pre.007 DONE — standard Solana : Transactions + transaction_status
|
pre.007 DONE — standard Solana : Transactions + transaction_status
|
||||||
budget : 15–20 min ; preuve : include/exclude/required/Cuckoo/token expansion + tx/meta + TransactionConfig V1
|
budget : 15–20 min ; preuve : include/exclude/required/Cuckoo/token expansion + tx/meta + TransactionConfig V1
|
||||||
|
|
||||||
pre.008 CANDIDATE — standard Solana : Blocks + block_meta + entry
|
pre.008 FIX.001 CANDIDATE — standard Solana : Blocks + block_meta + entry
|
||||||
budget : 15–20 min ; preuve : counts/arrays/optional/oneof/payload bounds
|
budget : 15–20 min ; gate fonctionnel PASS 370/47/41/4 + workspace ; fix fixture Clippy warning-only
|
||||||
|
|
||||||
pre.009 moteur partagé : bidi mutation + Ping/Pong + half-close + backpressure + shutdown
|
pre.009 moteur partagé : bidi mutation + Ping/Pong + half-close + backpressure + shutdown
|
||||||
budget : 15–20 min ; preuve : actor/session local + bounded queues + cleanup déterministe
|
budget : 15–20 min ; preuve : actor/session local + bounded queues + cleanup déterministe
|
||||||
@@ -1335,3 +1335,12 @@ Les compteurs serveur ne sont volontairement pas comparés aux longueurs des vec
|
|||||||
Les conversions request protobuf et décodeurs Block/BlockMeta/Entry restent `#[cfg(test)]` jusqu’à l’ouverture du stream runtime en `pre.009`. Aucun `SubscribeDeshred`, provider PublicNode, Config V3, Ping/Pong lifecycle ou reconnect n’entre dans cette tranche.
|
Les conversions request protobuf et décodeurs Block/BlockMeta/Entry restent `#[cfg(test)]` jusqu’à l’ouverture du stream runtime en `pre.009`. Aucun `SubscribeDeshred`, provider PublicNode, Config V3, Ping/Pong lifecycle ou reconnect n’entre dans cette tranche.
|
||||||
|
|
||||||
**Gate candidat :** audit statique clean ; compilation/Clippy/tests opérateur requis avant fermeture.
|
**Gate candidat :** audit statique clean ; compilation/Clippy/tests opérateur requis avant fermeture.
|
||||||
|
|
||||||
|
## 25. `pre.008-fix.001` — hygiène Clippy de la fixture Blocks
|
||||||
|
|
||||||
|
Le premier gate opérateur de `pre.008` confirme l'intégralité du contrat Blocks : fmt/audit/check/tests/workspace passent, avec Transport 370/370 unit, 47/47 public API, 41/41 completeness et 4/4 doctests. Clippy termine également avec succès mais signale un unique `field_reassign_with_default` dans `minimal_transaction_info()` de la fixture `grpc_subscribe`.
|
||||||
|
|
||||||
|
Le fix remplace la construction `TransactionStatusMeta::default()` suivie de `meta.fee = 5_000` par un initialiseur struct avec `fee: 5_000` et `..Default::default()`. Aucun `allow`, aucune API, aucun DTO, aucun wire et aucune logique runtime ne changent.
|
||||||
|
|
||||||
|
**Gate attendu :** même gate opérateur, sans warning Clippy. Le bidi reste strictement `pre.009`.
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<!-- file: docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md -->
|
<!-- file: docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md -->
|
||||||
<!-- version: 17 -->
|
<!-- version: 18 -->
|
||||||
|
|
||||||
# Validation `0.2.9` — moteur Yellowstone + standard Solana + PublicNode
|
# Validation `0.2.9` — moteur Yellowstone + standard Solana + PublicNode
|
||||||
|
|
||||||
> **Statut : `pre.007` est fermée sur gate opérateur intégralement vert : fmt/audit/check/Clippy/workspace PASS, Transport 367 unit + 46 public API + 40 completeness + 4 doctests. `0.2.9-pre.008` est candidate Blocks + `block_meta` + `entry` : filtre Blocks courant complet, metadata/rewards/time/height, payloads Transaction/Account réutilisés, Entry complète et compteurs serveur conservés indépendamment des payloads optionnels. Bidi reste `pre.009`.**
|
> **Statut : `pre.008` est fonctionnellement verte : fmt/audit/check/tests/workspace PASS, Transport 370 unit + 47 public API + 41 completeness + 4 doctests. Clippy passe avec un unique warning `field_reassign_with_default` dans la fixture Blocks. `pre.008-fix.001` corrige uniquement ce warning ; bidi reste `pre.009`.**
|
||||||
|
|
||||||
## 1. Autorités du gate
|
## 1. Autorités du gate
|
||||||
|
|
||||||
@@ -410,7 +410,7 @@ pre.004 DONE standard: Subscribe common/from_slot/bounds 15
|
|||||||
pre.005 DONE standard: accounts + slots 15–20 min ; gate final fix.001 PASS
|
pre.005 DONE standard: accounts + slots 15–20 min ; gate final fix.001 PASS
|
||||||
pre.006 DONE structure: namespace privé HTTP `http_*` 15–20 min ; gate PASS
|
pre.006 DONE structure: namespace privé HTTP `http_*` 15–20 min ; gate PASS
|
||||||
pre.007 DONE standard: transactions + transaction_status 15–20 min ; gate PASS
|
pre.007 DONE standard: transactions + transaction_status 15–20 min ; gate PASS
|
||||||
pre.008 CANDIDATE standard: blocks + block_meta + entry 15–20 min
|
pre.008 FIX.001 CANDIDATE standard: blocks + block_meta + entry 15–20 min ; gate fonctionnel PASS, 1 warning Clippy fixture
|
||||||
pre.009 TODO moteur: bidi/backpressure/half-close/shutdown 15–20 min
|
pre.009 TODO moteur: bidi/backpressure/half-close/shutdown 15–20 min
|
||||||
pre.010 TODO moteur: reconnect/replay/gap/duplicate 15–20 min
|
pre.010 TODO moteur: reconnect/replay/gap/duplicate 15–20 min
|
||||||
pre.011 TODO Config V3 + protocol/provider + profils PublicNode 15–20 min
|
pre.011 TODO Config V3 + protocol/provider + profils PublicNode 15–20 min
|
||||||
@@ -834,32 +834,53 @@ Le proto 12.6.0 ajoute à la représentation de transaction le `Message.config`
|
|||||||
|
|
||||||
## 25. Gate `pre.008` — Blocks + `block_meta` + `entry` candidate
|
## 25. Gate `pre.008` — Blocks + `block_meta` + `entry` candidate
|
||||||
|
|
||||||
| Surface / invariant | État candidate |
|
| Surface / invariant | État candidate |
|
||||||
|-------------------------------------------------------|----------------|
|
|-------------------------------------------------------|--------------------------|
|
||||||
| workspace version | `0.2.9-pre.8` |
|
| workspace version | `0.2.9-pre.8` |
|
||||||
| Blocks `account_include[]` | SOURCE+TEST |
|
| Blocks `account_include[]` | SOURCE+TEST |
|
||||||
| `include_transactions?` / `include_accounts?` | SOURCE+TEST |
|
| `include_transactions?` / `include_accounts?` | SOURCE+TEST |
|
||||||
| `include_entries?` | SOURCE+TEST |
|
| `include_entries?` | SOURCE+TEST |
|
||||||
| Cuckoo block account include | SOURCE+TEST |
|
| Cuckoo block account include | SOURCE+TEST |
|
||||||
| `SubscribeUpdateBlock` | SOURCE+TEST |
|
| `SubscribeUpdateBlock` | SOURCE+TEST |
|
||||||
| rewards + `num_partitions?` | SOURCE+TEST |
|
| rewards + `num_partitions?` | SOURCE+TEST |
|
||||||
| block time / block height optionnels | SOURCE+TEST |
|
| block time / block height optionnels | SOURCE+TEST |
|
||||||
| transactions réutilisent `YellowstoneTransactionInfo` | SOURCE+TEST |
|
| transactions réutilisent `YellowstoneTransactionInfo` | SOURCE+TEST |
|
||||||
| accounts réutilisent `YellowstoneAccountInfo` | SOURCE+TEST |
|
| accounts réutilisent `YellowstoneAccountInfo` | SOURCE+TEST |
|
||||||
| compteurs serveur indépendants des payload vectors | SOURCE+TEST |
|
| compteurs serveur indépendants des payload vectors | SOURCE+TEST |
|
||||||
| `SubscribeUpdateBlockMeta` | SOURCE+TEST |
|
| `SubscribeUpdateBlockMeta` | SOURCE+TEST |
|
||||||
| `SubscribeUpdateEntry` + `starting_transaction_index` | SOURCE+TEST |
|
| `SubscribeUpdateEntry` + `starting_transaction_index` | SOURCE+TEST |
|
||||||
| blockhash/parent blockhash Base58 -> 32 octets | SOURCE+TEST |
|
| blockhash/parent blockhash Base58 -> 32 octets | SOURCE+TEST |
|
||||||
| entry hash exactement 32 octets | SOURCE+TEST |
|
| entry hash exactement 32 octets | SOURCE+TEST |
|
||||||
| Debug sans hashes/sélecteurs/payloads imbriqués | SOURCE+TEST |
|
| Debug sans hashes/sélecteurs/payloads imbriqués | SOURCE+TEST |
|
||||||
| stream bidi / Ping-Pong / lifecycle | OUT pre.008 |
|
| stream bidi / Ping-Pong / lifecycle | OUT pre.008 |
|
||||||
| reconnect / replay | OUT pre.008 |
|
| reconnect / replay | OUT pre.008 |
|
||||||
| PublicNode / Config V3 | OUT pre.008 |
|
| PublicNode / Config V3 | OUT pre.008 |
|
||||||
| audit Rust workspace local | PASS / clean |
|
| audit Rust workspace local | PASS / clean |
|
||||||
| fmt/check/Clippy/tests | opérateur TODO |
|
| fmt/audit/check/tests/workspace | PASS |
|
||||||
|
| Clippy | PASS + 1 warning fixture |
|
||||||
|
|
||||||
Les `executed_transaction_count`, `updated_account_count` et `entries_count` sont conservés tels que fournis par le serveur ; ils ne sont pas forcés à égaler les tailles de `transactions[]`, `accounts[]` ou `entries[]`, car les trois flags `include_*` peuvent omettre ces payloads. Les messages imbriqués Transaction et Account réutilisent strictement les DTOs déjà introduits ; aucune seconde projection n’est créée.
|
Les `executed_transaction_count`, `updated_account_count` et `entries_count` sont conservés tels que fournis par le serveur ; ils ne sont pas forcés à égaler les tailles de `transactions[]`, `accounts[]` ou `entries[]`, car les trois flags `include_*` peuvent omettre ces payloads. Les messages imbriqués Transaction et Account réutilisent strictement les DTOs déjà introduits ; aucune seconde projection n’est créée.
|
||||||
|
|
||||||
Les helpers wire/decode restent test-only jusqu’au premier consommateur runtime en `pre.009`.
|
Les helpers wire/decode restent test-only jusqu’au premier consommateur runtime en `pre.009`.
|
||||||
|
|
||||||
**Verdict `pre.008` : candidate source prête ; fermeture après gate Cargo opérateur.**
|
**Verdict `pre.008` : contrat fonctionnel validé ; fix warning-only requis avant fermeture.**
|
||||||
|
|
||||||
|
## 26. Gate `pre.008-fix.001` — warning Clippy fixture
|
||||||
|
|
||||||
|
| Gate / observation | Résultat `pre.008` | Correctif `fix.001` |
|
||||||
|
|------------------------------------------|--------------------------------------|---------------------------------------|
|
||||||
|
| `cargo fmt --all` | PASS | à réexécuter |
|
||||||
|
| audit Rust workspace | PASS / clean | PASS local / clean |
|
||||||
|
| `cargo check --workspace` | PASS | inchangé |
|
||||||
|
| `cargo clippy --workspace --all-targets` | PASS + `field_reassign_with_default` | initialiseur struct, warning supprimé |
|
||||||
|
| Transport unit | 370/370 PASS | contrat inchangé |
|
||||||
|
| Transport `public_api` | 47/47 PASS | contrat inchangé |
|
||||||
|
| Transport `release_completeness` | 41/41 PASS | contrat inchangé |
|
||||||
|
| Transport doctests | 4/4 PASS | contrat inchangé |
|
||||||
|
| Core dependency canary | 3/3 PASS | dépendances inchangées |
|
||||||
|
| `cargo test --workspace` | PASS | contrat inchangé |
|
||||||
|
|
||||||
|
Le warning provient uniquement de `minimal_transaction_info()` dans `unit_tests/grpc_subscribe.rs`. `fix.001` initialise `TransactionStatusMeta.fee` directement dans le literal struct et conserve `..Default::default()`. Aucun `allow`, aucun changement runtime, aucune dépendance et aucun élargissement vers le bidi.
|
||||||
|
|
||||||
|
**Verdict `fix.001` : candidate warning-only ; fermeture de `pre.008` après gate opérateur sans warning.**
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user