v0.2.11-pre.002-fix.001

This commit is contained in:
2026-08-25 20:17:31 +02:00
parent 4f92fb03f1
commit 3fd540a9db
18 changed files with 358 additions and 67 deletions

View File

@@ -0,0 +1,193 @@
<!-- file: deltas/0.2.11/pre.002-fix.001.md -->
<!-- version: 1 -->
# Delta `0.2.11-pre.002-fix.001` — Rustdoc, Logging et taxonomie Off-chain
## 1. Base requise
Ce correctif s'applique exclusivement après :
```text
v0.2.10
+ 0.2.11-pre.001
+ 0.2.11-pre.001-fix.001
+ 0.2.11-pre.002
```
Conformément à `VER-ID-007` et `VER-ID-010`, la version Cargo devient `0.2.11-pre.2.fix.1` car ce correctif modifie du code Rust et un manifeste de crate.
## 2. Motifs du correctif
La validation opérateur de `pre.002` a montré que `cargo check` et les tests passaient, mais que `cargo clippy --workspace --all-targets` émettait deux warnings `missing_docs` sur les crates d'intégration :
```text
crates/ksp-offchain-transport-lib/tests/dependency_boundary.rs
crates/ksp-offchain-transport-lib/tests/public_api.rs
```
Le gate n'était donc pas propre malgré le succès fonctionnel. Les résultats opérateur complets de `pre.002` restent l'autorité sur cette constatation.
Une relecture des règles a également confirmé les contrats suivants :
```text
RUST-DOC-001/003 rustdocs utiles sur les surfaces concernées
DEP-LOG-004 runtime KSP instrumenté via ksp-logging-lib
DEP-LOG-010 target explicite dans src/constants.rs
DEP-LOG-011 pas de target dérivé implicitement de Cargo
FILE_CONTRACTS modules séparés selon responsabilités/invariants
```
Enfin, la fondation initiale utilisait des noms internes trop génériques (`decimal.rs`, `observation.rs`, `provider.rs`, `settings.rs`) alors que `ksp-offchain-transport-lib` est destinée à porter plusieurs familles off-chain hétérogènes.
## 3. Corrections Rustdoc
Les deux tests d'intégration possèdent désormais une rustdoc de crate explicite, ce qui supprime les warnings `missing_docs` attendus sous `#![warn(missing_docs)]`.
Aucun lint n'est désactivé ou abaissé.
## 4. Logging KSP
`ksp-offchain-transport-lib` dépend désormais réellement de `ksp-logging-lib`.
Le fichier suivant est ajouté :
```text
crates/ksp-offchain-transport-lib/src/constants.rs
```
avec le target propriétaire :
```text
ksp-offchain-transport-lib
```
Les validations/constructions comportementales de la fondation émettent uniquement via les macros `ksp-logging-lib` et `crate::TRACING_TARGET`. Aucune dépendance directe à `tracing`, `tracing-subscriber` ou `tracing-appender` n'est ajoutée.
Les logs de validation ne recopient ni identifiant rejeté, ni display name rejeté, ni futur credential.
## 5. Taxonomie de modules
La crate est explicitement traitée comme un transport off-chain hétérogène et non comme une crate dédiée exclusivement aux prix.
Les modules V1 de prix sont renommés :
```text
decimal.rs -> market_price_decimal.rs
observation.rs -> market_price_observation.rs
provider.rs -> market_price_provider.rs
settings.rs -> market_price_settings.rs
```
Les tests unitaires en miroir suivent la même convention.
La façade publique reste au crate-root ; aucun `pub mod` n'est introduit. Les noms publics `Price*` restent ceux du contrat V1, tandis que le classement physique privé rend explicite leur appartenance à la famille `market_price`.
La taxonomie durable prévue est :
```text
constants.rs / error.rs partagé crate-wide
http_* mécanique HTTP partageable lorsqu'elle existe réellement
market_price_* prix de marché / spot
swap_quote_* futures quotes montant/route
autres familles ajoutées seulement avec un scope réel
```
Cette organisation suit le précédent KSP des familles `http_*`, `ws_*`, `grpc_*` et `rpc_*` de On-chain Transport.
## 6. Lecture/écriture
`market_price` V1 reste strictement read-only. La crate n'est pas déclarée définitivement read-only pour toute évolution future : la sémantique métier décide de l'ownership, pas le simple verbe HTTP.
Une future quote Jupiter appartient à une famille distincte `swap_quote`; une soumission ou signature de transaction Solana reste hors de cette crate. Toute vraie mutation d'un service distant demandera un contrat explicite avant implémentation.
## 7. Tests et canaries modifiés
`dependency_boundary.rs` vérifie désormais au minimum :
```text
ksp-logging-lib présent
aucune dépendance tracing directe
constants.rs et TRACING_TARGET explicites
modules V1 préfixés market_price_*
anciens modules internes génériques absents
Config, reqwest et SDK providers toujours absents de pre.002
```
`public_api.rs` conserve les canaries de façade de `pre.002` avec sa rustdoc de crate.
## 8. Validations demandées après application
```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/0.2.11
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-offchain-transport-lib
cargo test --workspace
```
Le résultat attendu de Clippy est **sans warning rustdoc** pour `ksp-offchain-transport-lib`.
## 9. Scope inchangé
Le correctif n'ajoute aucun client HTTP, limiter actif, adapter provider, credential Config, quote Jupiter ou nouvelle paire. `pre.003` reste propriétaire du premier runtime HTTP commun.
## 10. Validation opérateur de `pre.002` ayant déclenché le fix
La validation fournie par l'opérateur avant ce correctif donne :
```text
cargo fmt --all exécuté
python3 scripts/audit_rust_workspace_rules.py clean
python3 scripts/audit_markdown_tables.py clean, 115 tables / 102 files
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS fonctionnel avec 2 warnings missing_docs
cargo test -p ksp-offchain-transport-lib PASS, 10 unit + 1 boundary + 2 public API
cargo test --workspace PASS, ignored opt-in/diagnostic inchangés
```
Les deux warnings Clippy sont précisément la raison rustdoc du présent fix ; ils ne sont pas requalifiés en PASS propre.
## 11. Fichiers ajoutés
```text
crates/ksp-offchain-transport-lib/src/constants.rs
crates/ksp-offchain-transport-lib/src/market_price_decimal.rs
crates/ksp-offchain-transport-lib/src/market_price_observation.rs
crates/ksp-offchain-transport-lib/src/market_price_provider.rs
crates/ksp-offchain-transport-lib/src/market_price_settings.rs
crates/ksp-offchain-transport-lib/unit_tests/market_price_decimal.rs
crates/ksp-offchain-transport-lib/unit_tests/market_price_observation.rs
crates/ksp-offchain-transport-lib/unit_tests/market_price_provider.rs
crates/ksp-offchain-transport-lib/unit_tests/market_price_settings.rs
deltas/0.2.11/pre.002-fix.001.md
```
## 12. Fichiers modifiés
```text
Cargo.toml
crates/ksp-offchain-transport-lib/Cargo.toml
crates/ksp-offchain-transport-lib/src/error.rs
crates/ksp-offchain-transport-lib/src/lib.rs
crates/ksp-offchain-transport-lib/tests/dependency_boundary.rs
crates/ksp-offchain-transport-lib/tests/public_api.rs
docs/plans/018-V0_2_11_OFFCHAIN_PRICE_TRANSPORT_PLAN.md
docs/validation/014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md
```
## 13. Fichiers supprimés par renommage
```text
crates/ksp-offchain-transport-lib/src/decimal.rs
crates/ksp-offchain-transport-lib/src/observation.rs
crates/ksp-offchain-transport-lib/src/provider.rs
crates/ksp-offchain-transport-lib/src/settings.rs
crates/ksp-offchain-transport-lib/unit_tests/decimal.rs
crates/ksp-offchain-transport-lib/unit_tests/observation.rs
crates/ksp-offchain-transport-lib/unit_tests/provider.rs
crates/ksp-offchain-transport-lib/unit_tests/settings.rs
```
Ces suppressions font partie du correctif : les anciens fichiers génériques ne doivent pas coexister avec les fichiers `market_price_*` après application.