166 lines
4.9 KiB
Markdown
166 lines
4.9 KiB
Markdown
<!-- file: deltas/0.3.10/pre.004-fix.001.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# Delta `0.3.10-pre.004-fix.001` — correction du canari HTTP block et du gate Clippy
|
||
|
||
## Base requise
|
||
|
||
```text
|
||
livraison : 0.3.10-pre.004
|
||
workspace.package.version = 0.3.10-pre.4
|
||
```
|
||
|
||
Le delta historique `deltas/0.3.10/pre.004.md` reste inchangé. Le présent fix trace séparément le défaut révélé par la validation opérateur du 2026-09-06.
|
||
|
||
## Résultat opérateur de la base
|
||
|
||
La validation communiquée confirme :
|
||
|
||
```text
|
||
cargo fmt --all : exécuté
|
||
General Rust rule audit: clean
|
||
Rust export completeness audit: 0 candidate(s)
|
||
KSP workspace Rust rule audit: clean
|
||
Markdown table audit: clean (339 table(s), 757 file(s))
|
||
cargo check --workspace : PASS
|
||
cargo clippy --workspace --all-targets --all-features -- -D warnings : FAIL
|
||
cargo test -p ksp-raw-transaction-lib : PASS
|
||
cargo test -p ksp-onchain-transport-lib : PASS
|
||
cargo test -p ksp-job-backfill-lib --test http_block_material : PASS
|
||
```
|
||
|
||
Les tests fonctionnels communiqués confirment notamment :
|
||
|
||
```text
|
||
ksp-raw-transaction-lib : 12 unit + 9 intégration, 0 échec
|
||
ksp-onchain-transport-lib : 387 unit + 51 public API + 43 release completeness + 4 doctests, 0 échec
|
||
http_block_material : 1 test, PASS
|
||
smokes live Transport : ignorés comme prévu
|
||
```
|
||
|
||
Les arbres normaux communiqués conservent les frontières prévues : la common RAW dépend de `base64`, `ksp-core-lib`, `ksp-store-api`, `serde_json`, `sha2`, et `ksp-onchain-transport-lib` ne dépend pas de `ksp-raw-transaction-lib`.
|
||
|
||
## Motif du fix
|
||
|
||
Le gate strict :
|
||
|
||
```bash
|
||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||
```
|
||
|
||
échoue exclusivement sur sept `clippy::expect_used` dans les deux helpers privés du nouveau test d’intégration :
|
||
|
||
```text
|
||
pool_for_url(...)
|
||
serve_once(...)
|
||
```
|
||
|
||
Les usages concernés sont :
|
||
|
||
```text
|
||
parsing HttpEndpointUrl
|
||
construction HttpTransportPool
|
||
bind du listener local
|
||
lecture de local_addr
|
||
accept de la connexion fixture
|
||
read de la requête fixture
|
||
write de la réponse fixture
|
||
```
|
||
|
||
La configuration commune autorise `expect` dans les fonctions de test, mais ces helpers ne portent pas eux-mêmes l’attribut `#[test]`/`#[tokio::test]` et sont donc correctement rejetés par Clippy.
|
||
|
||
## Correction
|
||
|
||
Aucun lint n’est désactivé.
|
||
|
||
`pool_for_url(...)` retourne désormais explicitement :
|
||
|
||
```text
|
||
ksp_core_lib::Result<HttpTransportPool>
|
||
```
|
||
|
||
et propage les deux erreurs possibles par `match` explicite.
|
||
|
||
`serve_once(...)` retourne désormais :
|
||
|
||
```text
|
||
std::io::Result<(String, JoinHandle<std::io::Result<()>>)>
|
||
```
|
||
|
||
Le bind, `local_addr`, `accept`, `read` et `write_all` retournent leurs erreurs par contrôle de flux explicite. Les assertions/`expect()` de fixture restent uniquement dans le corps `#[tokio::test]`, conformément à `allow-expect-in-tests = true`.
|
||
|
||
## Version Cargo
|
||
|
||
Ce fix modifie du Rust de test. Le signal technique Cargo est donc synchronisé :
|
||
|
||
```text
|
||
0.3.10-pre.4 -> 0.3.10-pre.4.fix.1
|
||
```
|
||
|
||
Le header du `Cargo.toml` racine passe de `494` à `495`.
|
||
|
||
## Invariants volontairement inchangés
|
||
|
||
```text
|
||
get_block_observed : inchangé
|
||
winner provider/endpoint : inchangé
|
||
RAW_TRANSACTION_FORMAT_ID = ksp.solana.raw_transaction
|
||
RAW_TRANSACTION_FORMAT_VERSION = 1
|
||
extraction Base64/short_vec : inchangée
|
||
projection 2 transactions / index 0-1 : inchangée
|
||
TR-C2 : adapter productif toujours Worker-owned
|
||
aucun changement de code production
|
||
aucune dépendance ou feature ajoutée
|
||
aucun nouveau Worker
|
||
```
|
||
|
||
## Fichiers modifiés
|
||
|
||
```text
|
||
Cargo.toml
|
||
crates/ksp-job-backfill-lib/tests/http_block_material.rs
|
||
docs/plans/031-V0_3_10_RAW_TRANSACTION_INGEST_PLAN.md
|
||
docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md
|
||
```
|
||
|
||
## Fichier ajouté
|
||
|
||
```text
|
||
deltas/0.3.10/pre.004-fix.001.md
|
||
```
|
||
|
||
## Fichiers supprimés
|
||
|
||
Aucun.
|
||
|
||
## Validations exécutées dans l’environnement d’assemblage
|
||
|
||
```text
|
||
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
|
||
|
||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||
Markdown table audit: clean (339 table(s), 758 file(s))
|
||
```
|
||
|
||
L’environnement d’assemblage ne fournit ni `cargo`, ni `rustc`, ni `rustfmt`; aucun gate Cargo du fix n’est donc déclaré PASS localement.
|
||
|
||
## Validation à rejouer
|
||
|
||
```bash
|
||
cargo fmt --all
|
||
python3 scripts/audit_rust_workspace_rules.py
|
||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||
cargo check --workspace
|
||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||
cargo test -p ksp-raw-transaction-lib
|
||
cargo test -p ksp-onchain-transport-lib
|
||
cargo test -p ksp-job-backfill-lib --test http_block_material
|
||
cargo tree -p ksp-raw-transaction-lib --edges normal
|
||
cargo tree -p ksp-onchain-transport-lib --edges normal
|
||
```
|
||
|
||
`pre.005` reste bloquée tant que ce gate n’est pas intégralement vert.
|