v0.2.11-pre.010-fix.001

This commit is contained in:
2026-08-26 12:34:48 +02:00
parent 2db3c4be78
commit 98708df6e0
5 changed files with 148 additions and 27 deletions

View File

@@ -1,9 +1,9 @@
<!-- file: docs/plans/018-V0_2_11_OFFCHAIN_PRICE_TRANSPORT_PLAN.md -->
<!-- version: 17 -->
<!-- version: 18 -->
# Plan `0.2.11` — Off-chain price transport SOL/USD multi-provider
**Statut courant : `0.2.11-pre.010` durcit la façade et les invariants avant le gate live. Les enums publiques évolutives de `market_price` sont désormais `#[non_exhaustive]`, des canaries release-level verrouillent l'inventaire exact des huit providers, la redaction et les frontières Config/HTTP, et des tests adversariaux complètent numeric safety, timestamps et provenance. `README.md` / `USAGE.md` de la nouvelle crate sont introduits comme brouillons techniques uniquement ; la réconciliation documentaire finale reste réservée à `pre.012`. Le gate opérateur de `pre.009` est intégralement PASS.**
**Statut courant : `0.2.11-pre.010-fix.001` corrige uniquement un canari de hardening qui dupliquait lexicalement le scanner global de ownership logging et faisait échouer `cargo test --workspace`. Le hardening fonctionnel de `pre.010` reste inchangé ; l'autorité de détection des bypass logging demeure `ksp-logging-lib/tests/ownership.rs`. Le gate du fix doit être rejoué avant `pre.011`.**
## 1. Base et autorité
@@ -776,10 +776,12 @@ Ajout de `cfg.std.offchain_transport` / `schema.std.offchain_transport`, du docu
### `pre.010` — Hardening et complétude technique
**Statut : réalisé côté delta ; gate Cargo opérateur à rejouer.**
**Statut : réalisé ; `pre.010-fix.001` corrige un faux positif du canari local de hardening, gate du fix à rejouer.**
Durcissement de la façade publique avec `#[non_exhaustive]` sur les enums évolutives, absorption future-safe de ces enums par l'adapter Config, canaries de complétude exacte des huit providers, tests adversariaux numeric/timestamps/provenance/redaction et vérification de l'absence d'URL/rate-limit provider configurables. Les premiers `README.md` / `USAGE.md` d'Off-chain Transport et les ajouts Config associés sont des brouillons techniques ; `pre.012` reste seule propriétaire de la réconciliation documentaire finale. Le contrat `refresh_many`/`refresh_all` V1 est explicitement réaffirmé séquentiel et déterministe.
`pre.010-fix.001` retire du canari Off-chain la vérification lexicale du chemin logging direct : elle dupliquait le scanner global de `ksp-logging-lib` et son propre littéral de test était lui-même détecté comme bypass. Le scanner workspace reste l'autorité unique pour cette frontière ; aucune politique logging ni logique runtime Off-chain ne change.
### `pre.011` — Gate technique et live final
**Statut : planifié.**

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md -->
<!-- version: 16 -->
<!-- version: 17 -->
# Validation `0.2.11` — Off-chain price transport SOL/USD
@@ -315,27 +315,29 @@ La tranche n'ajoute aucune URL provider configurable, aucun SDK provider et aucu
## 3.13 Gate `0.2.11-pre.010`
| Critère | Statut | Preuve |
|------------------------------------------------------------------------|---------|------------------------------------------------------|
| version workspace `0.2.11-pre.10` | PASS | `Cargo.toml` racine |
| enums publiques évolutives marquées `#[non_exhaustive]` | PASS | provider/access modes/setup + canari completeness |
| adapter Config future-safe face aux access modes non exhaustifs | PASS | branches wildcard vers erreur effective sûre |
| inventaire exact des huit providers et sémantiques verrouillé | PASS | `tests/release_completeness.rs` |
| aucun environnement lu par les modules `market_price_*` | PASS | `tests/security_hardening.rs` |
| aucun `as_f64` utilisé comme vérité de prix `market_price` | PASS | `tests/security_hardening.rs` |
| aucun `tracing::` direct dans `market_price_*` | PASS | `tests/security_hardening.rs` |
| Debug keyed settings/service ne divulgue pas les API keys | PASS | canari secret déterministe |
| Config rejette URL provider et override de rate limit | PASS | schema strict + test Config adversarial |
| timestamps RFC3339/pre-epoch/overflow durcis | PASS | unit test `market_price_adapter` |
| JSON numeric pathologique/null/non-numérique rejeté | PASS | unit test `market_price_decimal` |
| provenance accepte la borne et rejette trim/control/oversize | PASS | unit test `market_price_observation` |
| `refresh_many` / `refresh_all` V1 documentés séquentiels/déterministes | PASS | plan + `README.md` / `USAGE.md` Off-chain |
| README/USAGE techniques créés sans usurper la réconciliation finale | PASS | crate Off-chain + compléments Config |
| audit Rust sandbox | PLANNED | à exécuter sur l'état final de l'archive |
| audit Markdown sandbox | PLANNED | à exécuter sur l'état final de l'archive |
| `cargo check` / Clippy / tests ciblés et workspace | PLANNED | gate opérateur requis après application de `pre.010` |
| Critère | Statut | Preuve |
|------------------------------------------------------------------------|---------|-----------------------------------------------------|
| version workspace `0.2.11-pre.10.fix.1` | PASS | `Cargo.toml` racine |
| enums publiques évolutives marquées `#[non_exhaustive]` | PASS | provider/access modes/setup + canari completeness |
| adapter Config future-safe face aux access modes non exhaustifs | PASS | branches wildcard vers erreur effective sûre |
| inventaire exact des huit providers et sémantiques verrouillé | PASS | `tests/release_completeness.rs` |
| aucun environnement lu par les modules `market_price_*` | PASS | `tests/security_hardening.rs` |
| aucun `as_f64` utilisé comme vérité de prix `market_price` | PASS | `tests/security_hardening.rs` |
| aucun bypass logging direct dans le workspace | PASS | scanner global `ksp-logging-lib/tests/ownership.rs` |
| Debug keyed settings/service ne divulgue pas les API keys | PASS | canari secret déterministe |
| Config rejette URL provider et override de rate limit | PASS | schema strict + test Config adversarial |
| timestamps RFC3339/pre-epoch/overflow durcis | PASS | unit test `market_price_adapter` |
| JSON numeric pathologique/null/non-numérique rejeté | PASS | unit test `market_price_decimal` |
| provenance accepte la borne et rejette trim/control/oversize | PASS | unit test `market_price_observation` |
| `refresh_many` / `refresh_all` V1 documentés séquentiels/déterministes | PASS | plan + `README.md` / `USAGE.md` Off-chain |
| README/USAGE techniques créés sans usurper la réconciliation finale | PASS | crate Off-chain + compléments Config |
| audit Rust sandbox | PASS | clean, 0 candidate export |
| audit Markdown sandbox | PASS | clean sur le fix |
| gate brut `pre.010` | FAIL | workspace ownership logging : 1 canari FAIL |
| fix `pre.010-fix.001` statique | PASS | doublon lexical retiré, audits sandbox |
| gate Cargo complet du fix | PLANNED | à rejouer avant `pre.011` |
`pre.010` ne fait aucun smoke live, ne change aucun endpoint provider et n'introduit ni fallback, ni consensus, ni scheduler. Les documents crate créés ici sont des brouillons techniques courants ; `pre.012` reste seule propriétaire de la réconciliation documentaire finale après le gate technique/live de `pre.011`.
`pre.010` ne fait aucun smoke live, ne change aucun endpoint provider et n'introduit ni fallback, ni consensus, ni scheduler. Les documents crate créés ici sont des brouillons techniques courants ; `pre.012` reste seule propriétaire de la réconciliation documentaire finale après le gate technique/live de `pre.011`. Le gate brut de `pre.010` a passé audits, `cargo check`, Clippy et tests ciblés, puis `cargo test --workspace` a échoué dans `ksp-logging-lib/tests/ownership.rs` parce que `tests/security_hardening.rs` contenait littéralement le chemin logging interdit dans une assertion destinée à le bannir. `pre.010-fix.001` supprime ce scanner local redondant et conserve `ksp-logging-lib/tests/ownership.rs` comme autorité workspace unique.
## 4. Matrice provider prévue