# Delta `0.3.15-pre.006-fix.001` — classification réseau des capabilities Raw Ingest ## Base requise ```text 0.3.15-pre.006 workspace.package.version = 0.3.15-pre.6 deltas/0.3.15/pre.006.md présent ``` ## Défauts observés Le gate opérateur de `pre.006` révèle deux défauts distincts. Le canari `pre_006_committed_devnet_public_inventory_proves_only_config_composability` échoue car il construit `ConfigManagement` depuis les racines utilisateur courantes au lieu d'utiliser une racine Config de test déterministe. Le contrôle fonctionnel du Desk révèle surtout une mauvaise frontière de classification : `Yellowstone + HTTP hydration` sur Mainnet n'est `Configured` que lorsque le profil applicatif sélectionné est `publicnode_mainnet`. Ce comportement confond le profil Transport d'un provider avec l'identité du réseau logique. ## Correction du modèle applicatif Le composite Raw Transaction Ingest Desk devient réseau-centrique : ```text devnet mainnet testnet ``` Chaque profil applicatif possède un Transport de base et peut référencer des sources Transport optionnelles du même réseau : ```text transport transport.helius transport.yellowstone ``` Le provider reste une propriété de la source Transport. Il ne devient ni un réseau ni un profil opérateur du Desk. Ainsi, pour `mainnet`, les capabilities sont agrégées depuis : ```text mainnet_public helius_mainnet publicnode_mainnet ``` Lorsque `KSP_SECRET_PUBLICNODE_MAINNET_GRPC_X_TOKEN` est résolu, Yellowstone gRPC est une capability de `mainnet`; le choix d'un pseudo-profil `publicnode_mainnet` n'existe plus dans l'UI applicative. Le même principe s'applique à Devnet avec `devnet_public`, `helius_devnet` et `orbitflare_devnet`. ## Testnet indépendant du token PublicNode Un nouveau profil Transport `testnet_public` fournit le socle HTTP + WebSocket Solana standard sans secret. `publicnode_testnet` reste une source Yellowstone optionnelle. L'absence du token PublicNode Testnet ne rend donc plus les routes HTTP/WS standard Testnet indisponibles. ## Secrets optionnels Une erreur `ERROR_CODE_ENVIRONMENT_VARIABLE_MISSING` sur une source Transport optionnelle ne rend plus tout le profil réseau indisponible. Elle affecte uniquement la route qui dépend de cette source : ```text transport.helius -> Helius Transaction + HTTP hydration transport.yellowstone -> Yellowstone + HTTP hydration ``` Les routes satisfaites par le Transport de base restent `Configured`. Toute source Transport effectivement résolue doit néanmoins prouver exactement le même réseau que Store. Un mismatch reste fail-closed. ## Canaris déterministes Les tests du Desk n'utilisent plus les racines Config utilisateur. Ils construisent un `ConfigDocumentEngine` sur les fichiers committed du workspace et injectent explicitement l'environnement nécessaire. Les nouveaux canaris vérifient notamment : ```text inventaire applicatif exact = devnet/mainnet/testnet ; agrégation Helius/Yellowstone same-network ; mainnet Yellowstone configuré lorsque le token PublicNode Mainnet est résolu ; routes standard Mainnet toujours configurées lorsque les secrets optionnels sont absents ; absence des identités provider dans la projection frontend ; Testnet standard utilisable sans token PublicNode. ``` ## Frontières conservées ```text aucun probe réseau ; aucune ouverture Store ; aucune session Transport ; aucun Worker ; aucun Start/Stop ; aucune inférence depuis provider ; aucune URL, credential, metadata secrète, URI Store ou handle projeté au frontend. ``` ## Fichiers ajoutés ```text deltas/0.3.15/pre.006-fix.001.md ``` ## Fichiers modifiés ```text Cargo.toml config/composite.ksp-app-raw-transaction-ingest-desk.json config/std.transport.json crates/ksp-app-raw-transaction-ingest-desk/README.md crates/ksp-app-raw-transaction-ingest-desk/USAGE.md crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html crates/ksp-app-raw-transaction-ingest-desk/frontend/ts/main.ts crates/ksp-app-raw-transaction-ingest-desk/src/constants.rs crates/ksp-app-raw-transaction-ingest-desk/src/lib.rs crates/ksp-app-raw-transaction-ingest-desk/src/route_inventory.rs crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_inventory.rs crates/ksp-config-lib/README.md crates/ksp-config-lib/USAGE.md crates/ksp-config-lib/unit_tests/composite.rs crates/ksp-config-lib/unit_tests/fixtures/composite.ksp-app-raw-transaction-ingest-desk.json crates/ksp-config-lib/unit_tests/transport.rs docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md ``` ## Fichiers supprimés ```text aucun ``` ## Version Cargo ```text header Cargo.toml : 602 -> 603 workspace.package.version : 0.3.15-pre.6 -> 0.3.15-pre.6.fix.1 ``` ## Gate opérateur attendu ```bash cargo fmt --all cargo fmt --all -- --check 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.15 cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-config-lib --all-targets --all-features cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features cargo test --workspace --all-targets --all-features (cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev) ``` Aucun `npm run build` direct n'appartient à ce gate ; Tauri possède le cycle frontend via ses hooks.