98 lines
4.3 KiB
Markdown
98 lines
4.3 KiB
Markdown
<!-- file: deltas/0.3.7/pre.005-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.3.7-pre.005-fix.001` — Canari Store/Transport déterministe
|
|
|
|
## 1. Base requise
|
|
|
|
```text
|
|
0.3.7-pre.005
|
|
workspace.package.version = 0.3.7-pre.5
|
|
```
|
|
|
|
## 2. Objectif
|
|
|
|
Corriger l'unique échec du gate opérateur `pre.005` sans modifier le runtime Store/Transport : le test de cohérence réseau des trois profils Backfill ne doit pas exiger un secret Yellowstone gRPC PublicNode lorsqu'il vérifie seulement le réseau HTTP déclaré et le réseau logique Store.
|
|
|
|
## 3. Cause
|
|
|
|
`pre_005_all_composite_profiles_keep_resolved_transport_and_store_networks_identical` appelait `resolve_transport_config_profile()` pour `publicnode_testnet`. Cette API résout légitimement l'ensemble du profil Transport V3, y compris `grpc_endpoints.secret_metadata`, et exige donc `KSP_SECRET_PUBLICNODE_TESTNET_GRPC_X_TOKEN`.
|
|
|
|
Le secret est pertinent pour un runtime gRPC réel, mais il n'est pas une précondition du canari déterministe de cohérence réseau HTTP/Store. Le test mélangeait donc deux responsabilités.
|
|
|
|
## 4. Correction
|
|
|
|
- remplacer dans le test de composition `pre.005` le mapping Transport complet par la lecture des champs non secrets du `ResolvedConfigProfile` déjà validé ;
|
|
- extraire, trier et dédupliquer les `cluster` des seuls endpoints HTTP `enabled` ;
|
|
- lire le champ `network` du profil Store composé ;
|
|
- conserver l'exigence d'exactement un réseau HTTP et de son égalité stricte avec le réseau Store pour `devnet`, `mainnet` et `testnet` ;
|
|
- ne modifier ni le composite de production, ni `std.transport`, ni `std.store`, ni le runtime Backfill Desk.
|
|
|
|
Les tests propriétaires de `ksp-config-lib` restent responsables de la résolution des credentials PublicNode gRPC ; les tests unitaires `store_runtime` restent responsables de la comparaison runtime effective avant `Store::open`.
|
|
|
|
## 5. Version
|
|
|
|
Le correctif modifie un test Rust compilé. Conformément à `VER-ID-007` et `VER-ID-010` :
|
|
|
|
```text
|
|
workspace.package.version = 0.3.7-pre.5.fix.1
|
|
label = 0.3.7-pre.005-fix.001
|
|
```
|
|
|
|
## 6. Fichiers ajoutés
|
|
|
|
```text
|
|
deltas/0.3.7/pre.005-fix.001.md
|
|
```
|
|
|
|
## 7. Fichiers modifiés
|
|
|
|
```text
|
|
Cargo.toml
|
|
crates/ksp-app-backfill-desk/tests/config_composition.rs
|
|
docs/validation/024-V0_3_7_BACKFILL_DESK.md
|
|
```
|
|
|
|
## 8. Fichiers supprimés
|
|
|
|
Aucun.
|
|
|
|
## 9. Validations exécutées dans l'environnement d'assemblage
|
|
|
|
```text
|
|
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.3.7
|
|
```
|
|
|
|
Contrôles ciblés :
|
|
|
|
- parse TOML du workspace ;
|
|
- test source : aucune référence au secret `KSP_SECRET_PUBLICNODE_TESTNET_GRPC_X_TOKEN` dans le canari Backfill `pre.005` ;
|
|
- test source : le composite de production et les fichiers `std.transport.json` / `std.store.json` restent byte-for-byte inchangés par rapport à `pre.005` ;
|
|
- test source : la vérification conserve exactement les profils `devnet`, `mainnet`, `testnet` et l'exigence d'un réseau HTTP unique identique au réseau Store.
|
|
|
|
## 10. Validations non exécutées dans l'environnement d'assemblage
|
|
|
|
`cargo` et `rustfmt` ne sont pas disponibles dans cet environnement. Gate opérateur :
|
|
|
|
```text
|
|
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.3.7
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-app-backfill-desk
|
|
cargo tree -p ksp-app-backfill-desk --edges normal
|
|
cargo tree -p ksp-app-backfill-desk -e features
|
|
```
|
|
|
|
## 11. Décisions et suite
|
|
|
|
Le fix reste strictement dans le périmètre `pre.005` conformément à `VER-LIFECYCLE-009`.
|
|
|
|
La décision suivante est enregistrée mais explicitement différée conformément à `VER-LIFECYCLE-010` : Backfill Desk doit cibler Mainnet par défaut, tout en restant reconfigurable vers Devnet/Testnet, et doit permettre de tester les moyens de transport historiques pertinents — HTTP standard, HTTP provider/configuré (notamment Helius) et Yellowstone gRPC. WebSocket n'est pas retenu pour le backfill V1 tant qu'aucun besoin fonctionnel n'est démontré. Cette correction Config/Transport ouvrira une prerelease dédiée après validation du présent fix ; elle ne sera pas mélangée à `pre.006` DTO/request initialement prévu.
|
|
|
|
## 12. Questions ouvertes
|
|
|
|
Aucune pour ce correctif.
|