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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user