# 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.