3.4 KiB
Delta 0.2.7-pre.009-fix.002 — robustesse du fixture HTTP one-shot Transactions
Base
Base directe publiée :
0.2.7-pre.009-fix.001
Cargo 0.2.7-pre.9.fix.1
La validation opérateur de fix.001 confirme :
cargo fmt --all: vert ;- audit Python KSP : vert ;
cargo check --workspace: vert ;cargo clippy --workspace --all-targets: vert ;- premier
cargo test -p ksp-onchain-transport-lib: 294 tests unitaires verts, 33 tests d'API publique verts, 22 tests de release completeness verts ; - le passage ultérieur via
cargo test --workspacereproduit une seule défaillance intermittente dans un canari HTTP historiquegetTransaction, avechttp_connection_failed / Connection refusedsur son endpoint local one-shot.
Le wrapper WebSocket pre.009 et le correctif Clippy fix.001 ne sont pas en cause : le même test getTransaction est passé quelques secondes auparavant dans le premier run Transport.
Signal technique
livraison = 0.2.7-pre.009-fix.002
workspace.package.version = 0.2.7-pre.9.fix.2
commit = v0.2.7-pre.009-fix.002
Aucun tag Git n'est requis pour ce fix de prerelease.
Diagnostic
Le helper historique serve_transaction_once consommait sans distinction la première connexion TCP acceptée :
accept
-> read_transaction_request
-> réponse fixture
-> fermeture du listener
read_transaction_request peut cependant revenir sur EOF avant qu'une requête HTTP complète ait été reçue. Une connexion locale ouverte puis abandonnée avant l'envoi complet de la requête pouvait donc consommer le serveur one-shot. Une tentative cliente suivante rencontrait alors un listener déjà fermé et pouvait échouer avec Connection refused.
Cette faiblesse appartient uniquement au fixture de test local. Aucun changement du runtime HTTP ou WebSocket n'est requis.
Correction
serve_transaction_once ignore désormais toute connexion qui se termine avant que transaction_request_complete(...) soit vrai. Le body fixture n'est consommé et le listener n'est terminé qu'après réception d'une requête HTTP complète.
Un canari déterministe est ajouté :
transaction_fixture_ignores_abandoned_connection_before_complete_request
Il ouvre volontairement une première connexion TCP locale puis la ferme sans envoyer de requête, avant d'exécuter un getTransaction normal. Le fixture doit rester disponible et servir correctement la requête complète suivante.
Le correctif est exclusivement test-only : aucun fichier src/, aucun DTO, aucune règle de retry, aucun wrapper RPC et aucune sémantique WebSocket ne changent.
Fichiers
Cargo.toml
crates/ksp-onchain-transport-lib/unit_tests/rpc_transactions.rs
deltas/0.2.7/pre.009-fix.002.md
ROADMAP.md, CHANGELOG.md, le plan et le document de validation restent inchangés.
Validation attendue
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 --workspace
Comptages Transport attendus :
unit tests = 295
public API tests = 33
release completeness = 22
Les validations Cargo doivent être exécutées par l'opérateur ; elles ne sont pas revendiquées depuis l'environnement de préparation du delta.