5.4 KiB
Delta 0.3.15-pre.006-fix.001 — classification réseau des capabilities Raw Ingest
Base requise
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 :
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 :
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 :
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 :
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 :
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
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
deltas/0.3.15/pre.006-fix.001.md
Fichiers modifiés
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
aucun
Version Cargo
header Cargo.toml : 602 -> 603
workspace.package.version : 0.3.15-pre.6 -> 0.3.15-pre.6.fix.1
Gate opérateur attendu
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.