v0.3.7-pre.006
This commit is contained in:
@@ -136,17 +136,17 @@ Aucun `BackfillCheckpoint`, `Store`, `HttpTransportPool`, sender/receiver Tokio
|
||||
|
||||
Le composite cible est `config/composite.ksp-app-backfill-desk.json` avec trois profils cohérents :
|
||||
|
||||
| Profil composite | Logging | Transport | Store | Réseau |
|
||||
|------------------|----------------|----------------------|-----------|----------------|
|
||||
| `devnet` | `supertrace` | `devnet_public` | `devnet` | `devnet` |
|
||||
| `mainnet` | `console_info` | `mainnet_public` | `mainnet` | `mainnet-beta` |
|
||||
| `testnet` | `console_info` | `publicnode_testnet` | `testnet` | `testnet` |
|
||||
| Profil composite | Logging | Transport | Store | Réseau |
|
||||
|------------------|----------------|-------------------------|-----------|----------------|
|
||||
| `devnet` | `supertrace` | `devnet_public` | `devnet` | `devnet` |
|
||||
| `mainnet` | `supertrace` | `mainnet_backfill_pool` | `mainnet` | `mainnet-beta` |
|
||||
| `testnet` | `console_info` | `publicnode_testnet` | `testnet` | `testnet` |
|
||||
|
||||
Le default V1 est `devnet`, afin de ne pas lancer implicitement une campagne mainnet. Aucun `std.job_backfill.json` n'est créé : les paramètres de campagne restent opérationnels et backend-validés.
|
||||
Le default V1 est désormais `mainnet`, conformément à la finalité lecture seule du Backfill Desk. `devnet` et `testnet` restent sélectionnables par reconfiguration du composite. Pendant le développement de `0.3.7`, Mainnet conserve le profil Logging `supertrace`. Aucun `std.job_backfill.json` n'est créé : les paramètres de campagne restent opérationnels et backend-validés.
|
||||
|
||||
Au bootstrap, l'application charge le composite, résout Logging/Transport/Store via `ksp-config-lib`, construit `HttpTransportPool` et ouvre `ksp_store_lib::Store`. Elle compare le réseau Store au(x) cluster(s) HTTP activés et refuse le readiness si une composition mélange des réseaux.
|
||||
|
||||
Les rôles présentés à l'UI sont dérivés des snapshots/settings Transport, dédupliqués, puis validés côté Rust comme capables de sélectionner à la fois `getSignaturesForAddress` et `getTransaction`. Le rôle `default` est actuellement le seul rôle des profils standard, mais il n'est pas codé en dur comme contrat du Desk.
|
||||
Les routes HTTP présentées à l'UI sont dérivées des snapshots/settings Transport, dédupliquées, puis validées côté Rust comme capables de sélectionner à la fois `getSignaturesForAddress` et `getTransaction`. Sur Mainnet, `backfill_pool` regroupe Solana Public et PublicNode à priorité égale, tandis que `backfill_solana_public` et `backfill_publicnode` ciblent un provider unique. Le frontend ne reçoit que le rôle logique et les labels provider sûrs ; URL, credentials, rate-limit interne et retry restent possédés par Transport.
|
||||
|
||||
Le packaging Config suit le contrat atomique déjà détenu par `ksp-config-lib::prepare_packaged_runtime()` : il traverse l'intégralité de `ConfigFileRegistry::defaults()`. L'ajout du composite Backfill Desk fait donc passer le registre de 13 à 14 descriptors et impose que les quatre applications Desk qui utilisent ce packaging embarquent les 14 resources Config/schema du registre. Backfill Desk embarque ainsi également les documents Wallet/offchain sans les consommer au runtime ; leur présence satisfait le contrat de packaging partagé et n'ouvre aucune dépendance, permission frontend ou responsabilité métier supplémentaire.
|
||||
|
||||
@@ -202,7 +202,7 @@ Aucun JSON, fichier ou table checkpoint n'est inventé. La reprise après crash/
|
||||
| Menace | Surface | Contrôle v0.3.7 |
|
||||
|------------------------------|------------------|----------------------------------------------------------------------------------------------|
|
||||
| fuite URI Store | Config/backend | jamais projetée en DTO/log frontend |
|
||||
| fuite URL/token provider | Transport/Config | uniquement rôle/cluster/readiness sûrs ; aucune URL |
|
||||
| fuite URL/token provider | Transport/Config | rôle + labels provider sûrs uniquement ; aucune URL/credential |
|
||||
| fuite RAW transaction | snapshots/IPC | snapshot existant ne contient aucun payload ; aucun Store read général |
|
||||
| fuite liste signatures | request/logging | input transmis au command, non journalisé ; DTO retour n'en contient pas |
|
||||
| fuite adresse | instrumentation | ne pas journaliser la valeur ; seulement scope kind/action code |
|
||||
@@ -243,7 +243,7 @@ Le replay opérateur de `pre.003-fix.001` est ensuite intégralement propre : au
|
||||
|
||||
### pre.004 — Transport readiness
|
||||
|
||||
Construire `HttpTransportPool`, dériver l'inventaire sûr des réseaux/rôles, vérifier le support simultané de `getSignaturesForAddress` et `getTransaction`, puis exposer `backfill_options()` sans provider, endpoint physique ni URL. `BackfillDeskOptionsDto` apparaît ici comme sous-contrat Transport seulement (`configured_networks`, rôles compatibles, diagnostic sûr, readiness) ; `pre.006` l'étendra avec commitments, scopes et bornes plutôt que d'ouvrir prématurément `ksp-job-backfill-lib`. Une composition Transport avec plusieurs clusters HTTP actifs ou sans rôle compatible reste non-ready. Une erreur de résolution/construction Transport est conservée comme diagnostic sûr afin que le shell puisse rester ouvrable.
|
||||
Construire `HttpTransportPool`, dériver l'inventaire sûr des réseaux/rôles, vérifier le support simultané de `getSignaturesForAddress` et `getTransaction`, puis exposer `backfill_options()` sans provider, endpoint physique ni URL. `BackfillDeskOptionsDto` apparaît ici comme sous-contrat Transport seulement (`configured_networks`, rôles compatibles, diagnostic sûr, readiness) ; `pre.007` l'étendra avec commitments, scopes et bornes après stabilisation du choix HTTP de `pre.006`. Une composition Transport avec plusieurs clusters HTTP actifs ou sans rôle compatible reste non-ready. Une erreur de résolution/construction Transport est conservée comme diagnostic sûr afin que le shell puisse rester ouvrable.
|
||||
|
||||
Le replay opérateur de `pre.004` est acquis : audits, `cargo check --workspace`, Clippy, toutes les suites ciblées Backfill Desk et les deux arbres de dépendances passent. Le lancement `cargo tauri dev` confirme également le profil Logging `supertrace`, le profil Transport `devnet_public`, un réseau HTTP unique, un rôle compatible et `transport_ready = true`; les clics de tabs frontend apparaissent bien au niveau `DEBUG`.
|
||||
|
||||
@@ -253,45 +253,49 @@ Ouvrir uniquement `ksp-store-lib::Store` depuis le profil Store sélectionné pa
|
||||
|
||||
Le `Store` ouvert reste détenu côté Rust et doit être fermé explicitement via `Store::close()` lors d'une demande de fermeture de la fenêtre principale. La Desk intercepte cette fermeture une seule fois, empêche la destruction immédiate, lance le close borné puis quitte l'application. Aucun `BackfillRequest`, `BackfillJobRuntime`, accès backend PostgreSQL direct ou capability Tauri supplémentaire n'est admis dans cette tranche.
|
||||
|
||||
### pre.006 — DTO/request mapping
|
||||
### pre.006 — Mainnet par défaut + sélection route HTTP
|
||||
|
||||
Compléter les DTO TS-RS app-owned commencés par le sous-contrat Transport de `pre.004` : quatre scopes, commitments, min context slot, bornes backend-owned, signatures hostiles et validation de rôle/réseau.
|
||||
Faire de `mainnet` le profil composite par défaut, conserver `supertrace` pendant le développement et ajouter un profil `mainnet_backfill_pool` HTTP-only. Exposer dans `backfill_options()` des routes sûres dérivées des rôles Transport : `backfill_pool` pour Solana Public + PublicNode, `backfill_solana_public` et `backfill_publicnode` pour un ciblage explicite. Le frontend rend ce choix avant Start et trace les changements ; aucune URL/clé ne traverse IPC et `ksp-job-backfill-lib` n'est pas encore ouvert par la Desk.
|
||||
|
||||
### pre.007 — runtime + Start
|
||||
### pre.007 — DTO/request mapping
|
||||
|
||||
Single-active-run state, construction `BackfillJobRuntime`, spawn non bloquant, handle installé avant exécution et snapshot initial/terminal.
|
||||
Ajouter `ksp-job-backfill-lib` et compléter les DTO TS-RS app-owned : quatre scopes HTTP existants, commitments, min context slot, bornes backend-owned, signatures explicites hostiles et rôle HTTP sélectionné. Mapper strictement vers `BackfillRequest`/`HttpRoleName` côté Rust sans Start effectif et refuser toute route qui n'appartient pas à l'inventaire courant.
|
||||
|
||||
### pre.008 — monitoring latest-value
|
||||
### pre.008 — runtime + Start
|
||||
|
||||
Single-active-run state, construction `BackfillJobRuntime`, spawn non bloquant, handle installé avant exécution, admission atomique et snapshot initial/terminal.
|
||||
|
||||
### pre.009 — monitoring latest-value
|
||||
|
||||
Bridge de snapshots, status DTO, événements coalescés, compteurs complets, resynchronisation et absence de log parsing.
|
||||
|
||||
### pre.009 — Cancel et races terminales
|
||||
### pre.010 — Cancel et races terminales
|
||||
|
||||
Cancel, état cancelling, idempotence UX, concurrence Start/Cancel/terminal, sémantique de drain Store et fermeture app.
|
||||
|
||||
### pre.010 — checkpoint/frontier et Resume
|
||||
### pre.011 — checkpoint/frontier et Resume
|
||||
|
||||
Projection sûre, conservation Rust-only du checkpoint, reprise in-session et invariants par scope.
|
||||
|
||||
### pre.011 — frontend fonctionnel et polish
|
||||
### pre.012 — frontend fonctionnel et polish
|
||||
|
||||
Formulaire complet, états responsive, instrumentation sûre, summary terminal, erreurs, boutons contextuels, aucun secret/browser storage.
|
||||
|
||||
### pre.012 — hardening et complétude
|
||||
### pre.013 — hardening et complétude
|
||||
|
||||
Tests desktop/security/dependency/composition/release completeness, canaries DTO et scan des dépendances/interdictions.
|
||||
|
||||
### pre.013 — gate technique final
|
||||
### pre.014 — gate technique final
|
||||
|
||||
`cargo fmt`, audits, check/clippy/tests workspace, arbres Cargo utiles, `cargo tauri build`, smoke opt-in si environnement sûr disponible.
|
||||
`cargo fmt`, audits, check/clippy/tests workspace, arbres Cargo utiles, `cargo tauri build`, smoke Mainnet lecture seule opt-in si environnement sûr disponible.
|
||||
|
||||
### pre.014 — réconciliation documentaire
|
||||
### pre.015 — réconciliation documentaire
|
||||
|
||||
README/USAGE/plan/validation et architecture seulement si la surface finale l'exige. Aucun nouveau runtime.
|
||||
|
||||
### pre.015 — préparation publication
|
||||
### pre.016 — préparation publication
|
||||
|
||||
Prompt 0.3.8, CHANGELOG et ROADMAP uniquement avec le bump prerelease/delta requis.
|
||||
Prompt suivant + CHANGELOG + ROADMAP uniquement avec le bump prerelease/delta requis.
|
||||
|
||||
### rel.001 — publication stable
|
||||
|
||||
@@ -300,3 +304,7 @@ Mécanique de publication `v0.3.7`, sans rattrapage.
|
||||
## 14. Hors périmètre
|
||||
|
||||
Store Desk/navigation RAW, Worker API/service daemon, scheduler/registry générique Job, checkpoint durable, retry Job, sélection provider physique, nouveau protocole Transport, migration Store, decoding/materialization, application globale/control desk.
|
||||
|
||||
## 15. Report transport gRPC
|
||||
|
||||
Le Backfill `0.3.7` reste HTTP-only. Une généralisation de `ksp-job-backfill-lib` et de Backfill Desk vers Yellowstone gRPC est reportée à une version ultérieure, avec `0.3.12+` comme cible indicative à réévaluer. WebSocket reste hors Backfill tant qu'un besoin historique concret ne le justifie pas.
|
||||
|
||||
Reference in New Issue
Block a user