Files
khadhroony-solana-project/deltas/0.2.9/pre.006.md
2026-08-24 13:17:24 +02:00

6.0 KiB

Delta 0.2.9-pre.006 — namespace privé HTTP explicite

1. Base requise

0.2.9-pre.5.fix.1

Le gate opérateur de pre.005-fix.001 est intégralement vert : fmt, audit Rust, check, Clippy, Transport 364 unit + 45 public API + 38 release-completeness + 4 doctests, dependency canary Core 3/3 et workspace complet.

2. Objectif

Réduire l'ambiguïté croissante dans ksp-onchain-transport-lib maintenant que HTTP, WebSocket et Yellowstone gRPC coexistent dans la même crate.

Cinq modules privés sont exclusivement propriétaires de la pile HTTP et reçoivent un préfixe explicite :

client.rs      -> http_client.rs
executor.rs    -> http_executor.rs
pool.rs        -> http_pool.rs
resilience.rs  -> http_resilience.rs
settings.rs    -> http_settings.rs

Les unit tests miroirs suivent exactement les mêmes renommages.

3. Frontière du renommage

Le renommage n'est pas appliqué mécaniquement à tous les anciens modules.

rpc_accounts, rpc_blocks, rpc_transactions et rpc_common portent déjà des DTOs/types Solana réutilisés par WebSocket et/ou gRPC. Le préfixe http_ y serait donc architecturalement faux. Les autres rpc_* restent dans la même famille cohérente.

json_rpc décrit une couche de protocole/enveloppe et conserve son nom. constants et error sont transverses à plusieurs transports et restent également inchangés.

Aucun type ou nom public n'est renommé : les surfaces HTTP publiques utilisent déjà des noms Http* et restent réexportées depuis le crate root.

4. Forecast recalibré

L'ancien pre.006 fonctionnel est décalé afin de ne pas mélanger ce refactor de fichiers avec l'ajout Transactions/transaction_status.

pre.006  namespace privé HTTP explicite
pre.007  Transactions + transaction_status
pre.008  Blocks + block_meta + entry
pre.009  bidi/backpressure/half-close/shutdown
pre.010  reconnect/replay/gaps/duplicates
pre.011  Config V3 + protocol/provider + profils PublicNode
pre.012  PublicNode live + compliance + docs/prompt 0.2.10
rel.001

Le contenu fonctionnel des tranches décalées ne change pas.

5. Fichiers ajoutés par renommage

crates/ksp-onchain-transport-lib/src/http_client.rs
crates/ksp-onchain-transport-lib/src/http_executor.rs
crates/ksp-onchain-transport-lib/src/http_pool.rs
crates/ksp-onchain-transport-lib/src/http_resilience.rs
crates/ksp-onchain-transport-lib/src/http_settings.rs
crates/ksp-onchain-transport-lib/unit_tests/http_client.rs
crates/ksp-onchain-transport-lib/unit_tests/http_executor.rs
crates/ksp-onchain-transport-lib/unit_tests/http_pool.rs
crates/ksp-onchain-transport-lib/unit_tests/http_resilience.rs
crates/ksp-onchain-transport-lib/unit_tests/http_settings.rs

6. Fichiers supprimés

Un ZIP overlay ne peut pas supprimer ces chemins. L'opérateur doit donc les retirer explicitement après extraction :

crates/ksp-onchain-transport-lib/src/client.rs
crates/ksp-onchain-transport-lib/src/executor.rs
crates/ksp-onchain-transport-lib/src/pool.rs
crates/ksp-onchain-transport-lib/src/resilience.rs
crates/ksp-onchain-transport-lib/src/settings.rs
crates/ksp-onchain-transport-lib/unit_tests/client.rs
crates/ksp-onchain-transport-lib/unit_tests/executor.rs
crates/ksp-onchain-transport-lib/unit_tests/pool.rs
crates/ksp-onchain-transport-lib/unit_tests/resilience.rs
crates/ksp-onchain-transport-lib/unit_tests/settings.rs

Commande opérateur :

rm \
  crates/ksp-onchain-transport-lib/src/{client,executor,pool,resilience,settings}.rs \
  crates/ksp-onchain-transport-lib/unit_tests/{client,executor,pool,resilience,settings}.rs

7. Fichiers modifiés

Cargo.toml
crates/ksp-onchain-transport-lib/src/lib.rs
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md
docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md
deltas/0.2.9/pre.006.md

workspace.package.version devient :

0.2.9-pre.6

8. Canaries

Le nouveau canari release-completeness vérifie :

  • les cinq déclarations privées mod http_* ;
  • l'absence des cinq anciennes déclarations ambiguës ;
  • la présence des types/fonctions HTTP structurants dans les nouveaux fichiers ;
  • le maintien volontaire des modules partagés/protocolaires rpc_*, json_rpc, constants, error ;
  • l'absence de changement de surface publique requise par ce refactor.

9. Documentation Markdown

Les tableaux touchés dans 016 et 012 sont reformattés selon le comportement JetBrains RustRover : largeur de chaque colonne basée sur son contenu le plus large, puis exactement un espace de padding de part et d'autre du contenu avant les pipes.

10. Validations exécutées lors de la préparation

python3 scripts/audit_rust_workspace_rules.py
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean

Contrôles statiques supplémentaires :

5 nouveaux modules HTTP source présents
5 nouveaux unit tests miroirs présents
5 anciens modules source absents du worktree final
5 anciens unit tests absents du worktree final
aucun renommage des modules rpc_* partagés
aucun changement de dépendance Cargo
aucune modification de public_api.rs

11. Validations non exécutées dans l'environnement de préparation

Cargo/Rust ne sont pas disponibles dans l'environnement de préparation. L'opérateur doit exécuter après extraction et suppression des anciens chemins :

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

Aucun cargo tree n'est requis : aucune dépendance ni feature ne change.

12. Verdict

pre.006 est une candidate structurelle sans changement fonctionnel ni API publique. Sa fermeture exige l'absence effective des dix anciens chemins et un gate Cargo intégralement vert.