5.9 KiB
Delta 0.2.11-pre.002-fix.003 — nommage public MarketPrice*
1. Base requise
Ce correctif s'applique exclusivement après :
v0.2.10
+ 0.2.11-pre.001
+ 0.2.11-pre.001-fix.001
+ 0.2.11-pre.002
+ 0.2.11-pre.002-fix.001
+ 0.2.11-pre.002-fix.002
La version Cargo attendue avant application est :
0.2.11-pre.2.fix.2
2. Motif du correctif
pre.002-fix.001 a correctement classé la première capacité de ksp-offchain-transport-lib sous les modules privés market_price_*, mais sa façade crate-root conservait des noms publics génériques Price*.
Cette asymétrie créerait une dette publique dès l'apparition d'autres familles hétérogènes, notamment :
swap_quote_*
metadata_*
autres données off-chain futures
Des noms tels que PriceProviderId, PriceProviderState ou PriceTimestamp pourraient alors être interprétés comme des abstractions crate-wide alors qu'ils ne sont actuellement prouvés que pour la famille market_price.
Le correctif applique donc la même frontière de responsabilité aux modules privés et à la façade publique avant l'introduction du runtime HTTP de pre.003.
3. Convention publique retenue
Toute API spécifique à la famille market_price porte désormais le préfixe :
MarketPrice*
et toute constante correspondante :
MARKET_PRICE_*
ERROR_CODE_MARKET_PRICE_*
Exemples principaux :
PriceDecimal -> MarketPriceDecimal
SolUsdPriceObservation -> MarketPriceObservation
PriceTimestamp -> MarketPriceTimestamp
PriceProvenance -> MarketPriceProvenance
PricePair -> MarketPricePair
PriceSemantics -> MarketPriceSemantics
PriceProviderId -> MarketPriceProviderId
PriceProviderDescriptor -> MarketPriceProviderDescriptor
PriceProviderRateLimit -> MarketPriceProviderRateLimit
PriceProviderAvailability -> MarketPriceProviderAvailability
PriceProviderState -> MarketPriceProviderState
PriceProviderCommonSettings -> MarketPriceProviderCommonSettings
Les enums de rate-limit/quota/auth suivent la même règle.
Aucun alias public Price* n'est conservé. La release est encore en prerelease et conserver ces aliases figerait précisément l'ambiguïté que ce correctif doit supprimer.
4. Observation V1
SolUsdPriceObservation devient MarketPriceObservation plutôt que MarketPriceSolUsdObservation.
La paire réellement supportée reste portée explicitement par :
MarketPricePair::SolUsd
Cette forme évite un nouveau renommage du type observation si une version ultérieure étend proprement la famille market_price à d'autres paires, tout en conservant le gate V1 strictement limité à SOL/USD.
5. Codes d'erreur
Les identifiants publics et les codes textuels spécifiques à cette famille sont également namespacés :
market_price_decimal_invalid
market_price_provider_descriptor_invalid
market_price_provider_id_invalid
market_price_observation_invalid
market_price_provider_settings_invalid
Le domaine ksp_core_lib::ErrorCode reste :
offchain_transport
Une future famille peut ainsi ajouter ses propres codes sans collision sémantique avec market_price.
6. Version technique
Le correctif modifie du Rust public. VER-ID-007 et VER-ID-010 imposent donc :
workspace.package.version = 0.2.11-pre.2.fix.3
7. Validation opérateur acquise avant ce fix
L'état 0.2.11-pre.002-fix.002 a été validé par l'opérateur le 2026-08-25 avec :
cargo fmt --all exécuté
python3 scripts/audit_rust_workspace_rules.py clean
python3 scripts/audit_markdown_tables.py clean, 116 tables / 104 files
cargo check --workspace PASS
cargo test -p ksp-offchain-transport-lib PASS, 10 unit + 1 boundary + 2 public API
cargo clippy --workspace --all-targets PASS
cargo test --workspace n'a pas été rejoué après pre.002-fix.002 et n'est donc pas déclaré PASS pour cet état exact.
8. Validations demandées après application
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 canari public doit notamment compiler exclusivement avec les noms MarketPrice* et ne plus trouver de surface publique Price* historique.
9. Scope inchangé
Ce correctif reste strictement rattaché à la fondation pre.002 :
aucun reqwest
aucun client HTTP
aucun limiter actif
aucun adapter provider
aucun credential provider
aucune nouvelle paire
aucune quote Jupiter
pre.003 reste propriétaire du premier runtime HTTP commun.
10. Fichiers modifiés
Cargo.toml
crates/ksp-offchain-transport-lib/src/error.rs
crates/ksp-offchain-transport-lib/src/lib.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/tests/public_api.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
docs/plans/018-V0_2_11_OFFCHAIN_PRICE_TRANSPORT_PLAN.md
docs/validation/014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md
11. Fichier ajouté
deltas/0.2.11/pre.002-fix.003.md