v0.3.15-pre.003

This commit is contained in:
2026-09-13 08:11:35 +02:00
parent dc126497db
commit bd376dc479
32 changed files with 1198 additions and 105 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# Plan v0.3.15 — Raw Transaction Ingest Desk
@@ -191,15 +191,16 @@ Aucun gap Store n'est identifié. L'application ne dépend jamais de `ksp-store-
## 6. Profils Transport réellement committed
| Profil/config | Réseau | Surfaces | Secret requis | Committed ? | Observation |
|-------------------------|------------------------------|---------------------------------------|-----------------------|----------------------|-------------------------------------------|
| `devnet_public` | devnet | HTTP + WS Solana standard | non | oui | pas de capability WS fine aujourdhui |
| `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 aujourdhui |
| `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 | capabilities stables déclarées ; `Logs` oui ; `Block` non |
| `helius_devnet` | devnet | HTTP public + WS Helius | API key Helius | oui | `HeliusTransaction` oui ; `Block`/`Vote` non |
| `orbitflare_devnet` | devnet | HTTP + WS standard + Yellowstone gRPC | token gRPC secret | oui | `Logs` déclaré ; gRPC composable seulement si secret résolu |
| `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 |
Conséquences :
@@ -233,13 +234,13 @@ Le frontend reçoit uniquement la projection sûre de ce modèle. Les ressources
## 8. Matrice route / capability / Config / Worker
| Route V1 | Network | Required capability | Optional capability | Config evidence | Worker resource | Composable aujourdhui ? | Missing contract | Live-testable ? |
|-------------------------------|------------------|----------------------------------------------------------------|-------------------------------------------------|-----------------------|-----------------------------------------------|---------------------------------------------------------|--------------------------------------------------|-----------------------------------------------|
| `yellowstone-hydrated` | réseau du profil | Yellowstone gRPC Subscribe + HTTP `getTransaction` même réseau | scan HTTP repair si rôle compatible | gRPC + HTTP role | `RawTransactionIngestYellowstoneSource` | oui sur profil complet et secrets résolus | aucun contrat essentiel | provider-gated selon profil |
| `standard-logs-hydrated` | réseau du profil | WS Solana standard `logsSubscribe` + HTTP `getTransaction` | scan HTTP repair si rôle compatible | WS + HTTP role | `RawTransactionIngestStandardLogsSource` | non prouvable strictement avant capability WS explicite | Transport + Config + enforcement Worker minimaux | oui, notamment Devnet keyless après extension |
| `standard-block-direct` | réseau du profil | WS Solana standard `blockSubscribe` explicitement déclaré | aucune hydration obligatoire | WS capability Block | `RawTransactionIngestStandardBlockSource` | non prouvable aujourdhui | Transport + Config + enforcement Worker minimaux | seulement endpoint prouvé compatible |
| `helius-transaction-hydrated` | réseau du profil | WS Helius `transactionSubscribe` + HTTP `getTransaction` | scan HTTP repair si rôle compatible | Helius WS + HTTP role | `RawTransactionIngestHeliusTransactionSource` | non dans les profils committed actuels | Config data/composite + capability WS explicite | provider-gated Helius |
| `http-block-polling` | réseau du profil | HTTP `getSlot` + `getBlocksWithLimit` + `getBlock` | `getTransaction` pour known-reference hydration | HTTP role | `RawTransactionIngestHttpBlockPollingSource` | oui lorsque le rôle résolu annonce les trois méthodes | aucun contrat essentiel | oui sur endpoint public compatible |
| Route V1 | Network | Required capability | Optional capability | Config evidence | Worker resource | Composable aujourdhui ? | Missing contract | Live-testable ? |
|-------------------------------|------------------|----------------------------------------------------------------|-------------------------------------------------|---------------------------------|-----------------------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------|--------------------------------------|
| `yellowstone-hydrated` | réseau du profil | Yellowstone gRPC Subscribe + HTTP `getTransaction` même réseau | scan HTTP repair si rôle compatible | gRPC + HTTP role | `RawTransactionIngestYellowstoneSource` | oui sur profil complet et secrets résolus | aucun contrat essentiel | provider-gated selon profil |
| `standard-logs-hydrated` | réseau du profil | WS Solana standard `logsSubscribe` + HTTP `getTransaction` | scan HTTP repair si rôle compatible | `Logs` + HTTP role | `RawTransactionIngestStandardLogsSource` | oui côté Config sur profils déclarant `Logs` ; enforcement Worker en `pre.004` | enforcement Worker minimal | oui, notamment Devnet keyless |
| `standard-block-direct` | réseau du profil | WS Solana standard `blockSubscribe` explicitement déclaré | aucune hydration obligatoire | WS capability `Block` | `RawTransactionIngestStandardBlockSource` | non : aucun profil committed ne déclare `Block` | enforcement Worker minimal + endpoint qualifié | seulement endpoint prouvé compatible |
| `helius-transaction-hydrated` | réseau du profil | WS Helius `transactionSubscribe` + HTTP `getTransaction` | scan HTTP repair si rôle compatible | `HeliusTransaction` + HTTP role | `RawTransactionIngestHeliusTransactionSource` | oui côté Config sur `helius_*` si secret résolu ; enforcement Worker en `pre.004` | enforcement Worker minimal | provider-gated Helius |
| `http-block-polling` | réseau du profil | HTTP `getSlot` + `getBlocksWithLimit` + `getBlock` | `getTransaction` pour known-reference hydration | HTTP role | `RawTransactionIngestHttpBlockPollingSource` | oui lorsque le rôle résolu annonce les trois méthodes | aucun contrat essentiel | oui sur endpoint public compatible |
### 8.1 `yellowstone-hydrated`
@@ -292,7 +293,7 @@ HTTP same-network avec getTransaction
commitment confirmed ou finalized
```
Le profil committed stable n'expose actuellement pas cette ressource ; les exemples Helius ne sont pas convertis en disponibilité implicite.
Les profils committed `helius_devnet` et `helius_mainnet` déclarent explicitement `HeliusTransaction` et restent conditionnels à la résolution de `KSP_SECRET_HELIUS_API_KEY`. Aucun profil Helius ne déclare `Block` ou `Vote`. Le provider name ne participe pas à cette preuve.
### 8.5 `http-block-polling`
@@ -693,6 +694,8 @@ Budget cible : une tranche Transport.
Étendre le schema/mapping Config pour porter les capabilities WS déclarées et préparer les composites/profils Raw Transaction Ingest Desk cohérents Transport+Store. Aucun frontend.
**État : implémenté.** Les profils WS committed déclarent désormais leurs capabilities explicitement, deux profils Helius sont committed, et le composite Raw Ingest Desk couple Transport+Store par réseau sans inclure le profil `mainnet_backfill_pool`.
Budget cible : une tranche Config.
### `pre.004` — enforcement Worker des capabilities WS

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# Validation v0.3.15 — Raw Transaction Ingest Desk
@@ -344,11 +344,11 @@ Le forecast durable est porté par la section 20 du plan `036` sous forme hiéra
### `pre.002` — Transport WS capability
Capability WS typed par subscription + tests, sans app.
**Statut : réalisé après `pre.002-fix.001`.** Capability WS typed par subscription + tests, sans app. Le gate opérateur du fix passe `cargo check`, Clippy `-D warnings` et la suite Transport complète.
### `pre.003` — Config capability/composite
Schema/mapping capabilities WS + composite/profils Raw Ingest Desk.
**Statut : réalisé côté assemblage ; gate Cargo opérateur requis.** Schema/mapping capabilities WS + composite/profils Raw Ingest Desk. Les profils standard committed déclarent la surface stable sans `Block`, les profils Helius déclarent explicitement `HeliusTransaction` sans `Block`/`Vote`, et les profils du composite Raw Ingest Desk couplent Transport+Store sur le même réseau.
### `pre.004` — Worker enforcement