# Delta `0.2.11-pre.002-fix.003` — nommage public `MarketPrice*` ## 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 + 0.2.11-pre.002-fix.001 + 0.2.11-pre.002-fix.002 ``` La version Cargo attendue avant application est : ```text 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 : ```text 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 : ```text MarketPrice* ``` et toute constante correspondante : ```text MARKET_PRICE_* ERROR_CODE_MARKET_PRICE_* ``` Exemples principaux : ```text 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 : ```text 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 : ```text 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 : ```text 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 : ```text 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 : ```text 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 ```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 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` : ```text 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 ```text 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é ```text deltas/0.2.11/pre.002-fix.003.md ```