v0.3.15-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md -->
|
||||
<!-- version: 9 -->
|
||||
<!-- version: 10 -->
|
||||
|
||||
# Plan v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -414,7 +414,7 @@ route_id -> Worker handle + snapshot source + terminal task ownership
|
||||
Start d'une route :
|
||||
|
||||
```text
|
||||
1. recevoir route_id + inventory_generation + commitment
|
||||
1. recevoir profile_id + route_id + inventory_generation + commitment
|
||||
2. re-résoudre la Config côté Rust
|
||||
3. vérifier que la génération/route existe toujours
|
||||
4. revalider réseau Transport/Store
|
||||
@@ -523,7 +523,7 @@ Le texte détaillé des erreurs provider n'est jamais projeté tel quel.
|
||||
|---------------------------------|---------------------|------------------------------------------------------------------------------|------------------------------------------|
|
||||
| `RawIngestDeskOptionsDto` | backend -> frontend | profils logiques sûrs, réseaux, commitments supportés, génération inventaire | URL, secret, Store URI |
|
||||
| `RawIngestRouteDto` | backend -> frontend | route_id, family, label, network, state, selectable, reason code | endpoint name/URL/token/source key |
|
||||
| `RawIngestRouteStartRequestDto` | frontend -> backend | route_id, inventory_generation, commitment | endpoint/credential/client |
|
||||
| `RawIngestRouteStartRequestDto` | frontend -> backend | profile_id, route_id, inventory_generation, commitment | endpoint/credential/client |
|
||||
| `RawIngestRouteStopRequestDto` | frontend -> backend | route_id | Worker handle |
|
||||
| `RawIngestRouteRuntimeDto` | backend -> frontend | route_id, lifecycle/health/activity, compteurs source-neutral | payload brut, erreur provider arbitraire |
|
||||
| `CommandErrorDto` | backend -> frontend | code stable + contexte whiteliste | texte remote arbitraire |
|
||||
@@ -746,9 +746,23 @@ Une route liée à un provider n'est projetée que si le composite réseau décl
|
||||
|
||||
### `pre.007` — reconstruction Start des ressources Transport
|
||||
|
||||
Revalider Config au Start et reconstruire les ressources Transport exactes nécessaires aux routes applicables du réseau sélectionné, dans le catalogue global de cinq IDs V1, sans lancer encore le Worker. Le choix des endpoints physiques reste Transport-owned.
|
||||
**État : implémenté.** Le backend introduit un préflight `validate_route_start` qui reçoit une sélection logique sûre (`profile_id`, `route_id`, `inventory_generation`, `commitment`), refuse une génération stale, recharge le même snapshot d'environnement Config, reconstruit l'inventaire au même numéro puis revalide Store et Transport sur le réseau sélectionné.
|
||||
|
||||
Budget cible : une tranche intégration Transport/Desk.
|
||||
Le `profile_id` est ajouté au DTO de Start par rapport au candidat de `pre.001` : après le passage réseau-centrique de `pre.006-fix.001`, un `route_id` existe sur plusieurs réseaux et ne peut donc pas identifier seul la composition à reconstruire. Ce champ est un identifiant logique sûr (`devnet`, `mainnet`, `testnet`) et ne révèle aucun provider ni endpoint.
|
||||
|
||||
La reconstruction exacte réutilise les contrats lower-layer existants :
|
||||
|
||||
```text
|
||||
yellowstone-hydrated -> YellowstoneGrpcChannel::prepare + RawTransactionIngestYellowstoneSource::new
|
||||
standard-logs-hydrated -> HttpTransportPool + RawTransactionIngestStandardLogsSource::new
|
||||
standard-block-direct -> RawTransactionIngestStandardBlockSource::new
|
||||
helius-transaction-hydrated -> HttpTransportPool + RawTransactionIngestHeliusTransactionSource::new
|
||||
http-block-polling -> HttpTransportPool + RawTransactionIngestHttpBlockPollingSource::new
|
||||
```
|
||||
|
||||
HTTP conserve son pool Transport-owned. Pour WS/gRPC, le profil source doit produire exactement un endpoint activé correspondant au protocole/capability/réseau attendu ; le Desk refuse l'ambiguïté au lieu d'inventer un choix physique. Les constructeurs Worker reçoivent des presets backend bornés (`AllWithVotes`, `All`, filtre transaction général, commitment confirmed/finalized).
|
||||
|
||||
Le préflight instancie puis détruit immédiatement le contrat source. Il ne fait aucun `connect`, aucun `Store::open`, aucun `start_with_runtime_resources`, ne conserve aucun handle et ne publie jamais `Running`. Le Start réel, l'ouverture Store et le lifecycle mono-route restent `pre.008`.
|
||||
|
||||
### `pre.008` — Store lifecycle et Start/Stop mono-route
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
|
||||
<!-- version: 10 -->
|
||||
<!-- version: 11 -->
|
||||
|
||||
# Validation v0.3.15 — Raw Transaction Ingest Desk
|
||||
|
||||
@@ -315,7 +315,7 @@ frontend sans endpoints/secrets/handles/source keys/payloads bruts
|
||||
|---------------------------------|---------------------|------------------------------------------------------------------------------|------------------------------------------|
|
||||
| `RawIngestDeskOptionsDto` | backend -> frontend | profils logiques sûrs, réseaux, commitments supportés, génération inventaire | URL, secret, Store URI |
|
||||
| `RawIngestRouteDto` | backend -> frontend | route_id, family, label, network, state, selectable, reason code | endpoint name/URL/token/source key |
|
||||
| `RawIngestRouteStartRequestDto` | frontend -> backend | route_id, inventory_generation, commitment | endpoint/credential/client |
|
||||
| `RawIngestRouteStartRequestDto` | frontend -> backend | profile_id, route_id, inventory_generation, commitment | endpoint/credential/client |
|
||||
| `RawIngestRouteStopRequestDto` | frontend -> backend | route_id | Worker handle |
|
||||
| `RawIngestRouteRuntimeDto` | backend -> frontend | route_id, lifecycle/health/activity, compteurs source-neutral | payload brut, erreur provider arbitraire |
|
||||
| `CommandErrorDto` | backend -> frontend | code stable + contexte whiteliste | texte remote arbitraire |
|
||||
@@ -384,7 +384,22 @@ Le catalogue global reste exactement cinq IDs V1, mais l'inventaire d'un profil
|
||||
|
||||
### `pre.007` — ressources Start
|
||||
|
||||
Reconstruction/revalidation Start des ressources Transport pour les routes applicables du réseau sélectionné, dans le catalogue global de cinq IDs V1, sans launch Worker.
|
||||
**Statut : implémenté, gate opérateur à exécuter.** Le préflight backend `validate_route_start` est generation-bound et revalide la sélection contre un inventaire Config reconstruit avant toute ressource. La requête contient désormais `profile_id + route_id + inventory_generation + commitment` : `profile_id` est nécessaire depuis que les profils applicatifs sont réseau-centriques et qu'un même route ID existe sur plusieurs réseaux.
|
||||
|
||||
La preuve Start-time exige ensuite :
|
||||
|
||||
```text
|
||||
Store Config résolu et réseau identique
|
||||
Transport de base résolu et same-network
|
||||
source provider-specific résolue seulement pour Helius/Yellowstone
|
||||
HTTP role unique satisfaisant l'ensemble des méthodes requises
|
||||
WS/gRPC endpoint unique correspondant au protocole/capability/réseau
|
||||
constructeur public Worker de la famille exacte accepté
|
||||
```
|
||||
|
||||
Les cinq constructeurs source Worker sont effectivement réutilisés. `HttpTransportPool::new` et `YellowstoneGrpcChannel::prepare` restent sans requête réseau ; la source reconstruite est détruite immédiatement après validation. Sont encore interdits dans cette tranche : `Store::open`, connexion WS/gRPC active, `RawTransactionIngestRuntimeResources`, `RawTransactionIngestWorker::start_with_runtime_resources`, handle Worker, Start/Stop réel et état `Running`.
|
||||
|
||||
Attendus de sécurité : la réponse de préflight ne contient que profil logique, réseau, route, génération et commitment ; les erreurs lower-layer sont remappées derrière des codes/messages app bornés. Aucun endpoint, URL, credential, metadata secrète, URI Store, source key ou payload RAW ne traverse IPC.
|
||||
|
||||
### `pre.008` — runtime mono-route
|
||||
|
||||
|
||||
Reference in New Issue
Block a user