Files
khadhroony-solana-project/deltas/0.2.11/pre.002-fix.003.md

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