v0.3.15-pre.006-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Plan v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -199,16 +199,18 @@ Aucun gap Store n'est identifié. L'application ne dépend jamais de `ksp-store-
|
||||
| `mainnet_public` | mainnet | HTTP + WS Solana standard | non | oui | capabilities stables déclarées ; `Logs` oui ; `Block` non |
|
||||
| `helius_mainnet` | mainnet | HTTP public + WS Helius | API key Helius | oui | `HeliusTransaction` oui ; `Block`/`Vote` non |
|
||||
| `mainnet_backfill_pool` | mainnet | plusieurs HTTP + WS standard | selon endpoints | oui | `Logs` déclaré ; profil conservé hors composite Raw Ingest Desk |
|
||||
| `publicnode_mainnet` | mainnet | HTTP + WS standard + Yellowstone gRPC | x-token secret | oui | `Logs` déclaré ; gRPC composable seulement si secret résolu |
|
||||
| `publicnode_testnet` | testnet | HTTP + WS standard + Yellowstone gRPC | x-token secret | oui | `Logs` déclaré ; gRPC composable seulement si secret résolu |
|
||||
| `publicnode_mainnet` | mainnet | HTTP + WS standard + Yellowstone gRPC | x-token secret | oui | source Yellowstone optionnelle du profil applicatif `mainnet` |
|
||||
| `testnet_public` | testnet | HTTP + WS Solana standard | non | oui | socle keyless du profil applicatif `testnet` |
|
||||
| `publicnode_testnet` | testnet | HTTP + WS standard + Yellowstone gRPC | x-token secret | oui | source Yellowstone optionnelle du profil applicatif `testnet` |
|
||||
|
||||
Conséquences :
|
||||
|
||||
```text
|
||||
un fichier sous config/examples/ ne rend aucune route disponible
|
||||
une capability provider documentée sur le Web ne rend aucune route disponible
|
||||
un secret requis mais non résolu rend le profil concerné non composable
|
||||
un secret requis par une source optionnelle ne rend indisponible que la route qui dépend de cette source
|
||||
le Desk ne synthétise pas une capability à partir de provider == helius/publicnode/orbitflare
|
||||
les profils applicatifs du Desk sont des réseaux logiques, pas des providers
|
||||
```
|
||||
|
||||
## 7. Modèle de route V1
|
||||
@@ -726,10 +728,14 @@ Restauration du template Desk KSP clair, bornage de la grille de routes et corre
|
||||
|
||||
Résoudre Config côté Rust et projeter les routes composables/non composables avec raisons sûres et génération d'inventaire, sans endpoint, URL, secret ou source key côté frontend.
|
||||
|
||||
**État : implémenté côté assemblage.** Le Desk ouvre uniquement la dépendance directe `ksp-onchain-transport-lib` nécessaire aux capabilities typées. Le backend énumère les profils du composite validé, résout Transport et Store via `ksp-config-lib`, exige un réseau logique unique identique au Store, puis calcule les cinq routes sans I/O réseau. HTTP est prouvé directement par rôles + `request_kinds` sur les settings typés, sans construire de pool/client ; WS repose sur `WsProtocolKind` + `WsSubscriptionKind`; Yellowstone exige un endpoint gRPC activé. L'inventaire expose profil, réseau, génération, route/state/selectable et reason codes sûrs. Il n'ouvre ni Store, ni session Transport, ni Worker et ne projette aucune ressource physique.
|
||||
**État : implémenté puis corrigé par `pre.006-fix.001`.** Le Desk ouvre uniquement la dépendance directe `ksp-onchain-transport-lib` nécessaire aux capabilities typées. Le composite applicatif est réseau-centrique (`devnet`, `mainnet`, `testnet`) et peut référencer plusieurs profils Transport du même réseau. Le backend agrège leurs capabilities sans inférer quoi que ce soit du provider : PublicNode Mainnet Yellowstone est donc une capability de `mainnet`, pas un pseudo-réseau ni un profil opérateur séparé. Les sources optionnelles Helius/Yellowstone dont le secret manque ne désactivent que la route qui dépend de cette source. HTTP est prouvé directement par rôles + `request_kinds`, WS par `WsProtocolKind` + `WsSubscriptionKind`, Yellowstone par présence d'un endpoint gRPC activé. Aucun Store, session Transport ou Worker n'est ouvert.
|
||||
|
||||
Budget cible : une tranche composition.
|
||||
|
||||
#### `pre.006-fix.001` — profils réseau-centriques et agrégation des capabilities
|
||||
|
||||
Correction du modèle de classification : les providers redeviennent des sources Transport same-network et le sélecteur applicatif ne porte plus que `devnet`, `mainnet` et `testnet`. Ajout d'un profil `testnet_public` sans secret pour dissocier le Transport standard Testnet de PublicNode Yellowstone. Les canaris d'inventaire utilisent désormais des racines Config committées et un environnement injecté, sans dépendre du Config utilisateur de la machine.
|
||||
|
||||
### `pre.007` — reconstruction Start des ressources Transport
|
||||
|
||||
Revalider Config au Start et reconstruire les ressources Transport exactes nécessaires aux cinq routes, sans lancer encore le Worker. Le choix des endpoints physiques reste Transport-owned.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
|
||||
<!-- version: 7 -->
|
||||
<!-- version: 8 -->
|
||||
|
||||
# Validation v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -190,19 +190,21 @@ HTTP : rôles et `request_kinds` sont déjà projetables côté Rust.
|
||||
|
||||
WS : le protocol kind est projetable, mais `WsEndpointSettings` ne porte pas de liste de `WsSubscriptionKind`. C'est le gap déterminant de `pre.001`.
|
||||
|
||||
Profils committed vs exemple :
|
||||
Profils Transport sources audités (ils ne constituent pas les profils applicatifs du Desk) :
|
||||
|
||||
| Profil/config | Réseau | Surfaces | Secret requis | Committed ? | Observation |
|
||||
|-------------------------|------------------------------|---------------------------------------|-----------------------|----------------------|-------------------------------------------|
|
||||
| `devnet_public` | devnet | HTTP + WS Solana standard | non | oui | pas de capability WS fine aujourd’hui |
|
||||
| `orbitflare_devnet` | devnet | HTTP + WS standard + Yellowstone gRPC | token gRPC secret | conditionnel | profil complet seulement si secret résolu |
|
||||
| `mainnet_public` | mainnet | HTTP + WS Solana standard | non | oui | pas de capability WS fine aujourd’hui |
|
||||
| `mainnet_backfill_pool` | mainnet | plusieurs HTTP + WS standard | selon endpoint/config | oui si profil résolu | priorités/rôles restent Transport-owned |
|
||||
| `publicnode_mainnet` | mainnet | HTTP + WS standard + Yellowstone gRPC | x-token secret | conditionnel | gRPC provider-gated |
|
||||
| `publicnode_testnet` | testnet | HTTP + WS standard + Yellowstone gRPC | x-token secret | conditionnel | gRPC provider-gated |
|
||||
| Helius exemple | mainnet/devnet selon exemple | WS `helius_laserstream` | API key secret | non committed | exemple != profil actif |
|
||||
| Profil/config | Réseau | Surfaces | Secret requis | Committed ? | Observation |
|
||||
|-------------------------|---------|---------------------------------------|-----------------------|----------------------|-------------------------------------------|
|
||||
| `devnet_public` | devnet | HTTP + WS Solana standard | non | oui | pas de capability WS fine aujourd’hui |
|
||||
| `orbitflare_devnet` | devnet | HTTP + WS standard + Yellowstone gRPC | token gRPC secret | conditionnel | profil complet seulement si secret résolu |
|
||||
| `mainnet_public` | mainnet | HTTP + WS Solana standard | non | oui | pas de capability WS fine aujourd’hui |
|
||||
| `mainnet_backfill_pool` | mainnet | plusieurs HTTP + WS standard | selon endpoint/config | oui si profil résolu | priorités/rôles restent Transport-owned |
|
||||
| `publicnode_mainnet` | mainnet | HTTP + WS standard + Yellowstone gRPC | x-token secret | conditionnel | source Yellowstone same-network |
|
||||
| `testnet_public` | testnet | HTTP + WS Solana standard | non | oui | socle keyless Testnet |
|
||||
| `publicnode_testnet` | testnet | HTTP + WS standard + Yellowstone gRPC | x-token secret | conditionnel | source Yellowstone same-network |
|
||||
| `helius_devnet` | devnet | HTTP public + WS Helius | API key secret | conditionnel | source Helius same-network |
|
||||
| `helius_mainnet` | mainnet | HTTP public + WS Helius | API key secret | conditionnel | source Helius same-network |
|
||||
|
||||
Aucun profil Helius WS n'est committed dans `config/std.transport.json`; sa présence dans un exemple ne constitue pas une availability V1.
|
||||
Ces profils sont des sources Transport. Le composite applicatif Raw Ingest les agrège désormais sous `devnet`, `mainnet` et `testnet`; un provider n'est jamais une identité réseau.
|
||||
|
||||
## 9. Audit Store
|
||||
|
||||
@@ -360,7 +362,11 @@ Le forecast durable est porté par la section 20 du plan `036` sous forme hiéra
|
||||
|
||||
### `pre.006` — inventaire composable
|
||||
|
||||
**Statut : réalisé côté assemblage ; gate opérateur requis.** Le backend énumère les profils du composite Config validé et reconstruit une génération complète d'inventaire sans probe réseau. Transport et Store sont résolus par `ksp-config-lib`; la cohérence impose un réseau unique identique au Store. Les capabilities HTTP sont vérifiées par rôle/méthodes sans dispatch, les capabilities WS par `WsProtocolKind` + `WsSubscriptionKind`, et Yellowstone par présence d'un endpoint gRPC activé. Les cinq routes produisent uniquement `Configured` ou `Unavailable` avec reason codes sûrs. Le frontend reçoit seulement profil logique, réseau, génération, IDs/familles/labels, state/selectable/reason ; aucun endpoint, URL, secret, metadata, Store URI, source key ou handle runtime n'est projeté. Aucun Store, session Transport ou Worker n'est démarré.
|
||||
**Statut : gate opérateur de `pre.006` en échec fonctionnel, corrigé par `pre.006-fix.001`.** Le premier inventaire classait encore les capabilities par profil Transport fournisseur : `Yellowstone + HTTP hydration` Mainnet n'était donc `Configured` que sous `publicnode_mainnet`. Le fix remplace cette projection par trois profils réseau (`devnet`, `mainnet`, `testnet`) qui agrègent les sources Transport same-network. PublicNode, Helius et OrbitFlare restent des sources de capabilities et ne deviennent jamais des identités réseau. Un secret optionnel absent n'invalide que la route dépendante. Le canari qui dépendait du Config utilisateur de la machine est remplacé par un moteur Config committé et un environnement injecté. Aucun I/O runtime n'est ajouté.
|
||||
|
||||
#### `pre.006-fix.001` — correction classification réseau
|
||||
|
||||
Attendus : `mainnet` expose Yellowstone dès que la source PublicNode Mainnet est effectivement résolue, quelle que soit la source HTTP/WS standard retenue dans le même profil réseau ; `mainnet` reste utilisable pour Standard Logs et HTTP Block Polling lorsque les secrets Helius/PublicNode sont absents. Le même principe s'applique à Devnet et Testnet.
|
||||
|
||||
### `pre.007` — ressources Start
|
||||
|
||||
|
||||
Reference in New Issue
Block a user