v0.3.8-pre.013
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/002-LAYERS_AND_DEPENDENCIES.md -->
|
||||
<!-- version: 10 -->
|
||||
<!-- version: 11 -->
|
||||
|
||||
# Couches et dépendances KSP
|
||||
|
||||
@@ -134,7 +134,7 @@ Les applications Tauri restent minces :
|
||||
- instrumentation frontend ;
|
||||
- aucun déplacement de logique de transport, Wallet, Config, Program, Store ou Materializer dans Tauri.
|
||||
|
||||
Des applications spécialisées sont ajoutées au fur et à mesure pour valider les couches : Config Desk, Wallet Desk, `ksp-app-solprices-desk`, `ksp-app-backfill-desk`, Store/RAW tooling, CORE tooling puis Market Desk. `ksp-app-solprices-desk` reste une HID mince : elle consomme l’inventaire, les observations, les états et les opérations génériques de `ksp-offchain-transport-lib` sans connaître les providers, leurs endpoints, leurs credentials ni leurs limites. `ksp-app-backfill-desk` compose Config, Transport HTTP, Store et `ksp-job-backfill-lib` sans absorber découverte, retry/rate-limit, persistance ou checkpoint ; son frontend ne reçoit que des DTOs sûrs et le checkpoint de reprise reste Rust-only.
|
||||
Des applications spécialisées sont ajoutées au fur et à mesure pour valider les couches : Config Desk, Wallet Desk, `ksp-app-solprices-desk`, `ksp-app-backfill-desk`, `ksp-app-store-desk`, CORE tooling puis Market Desk. `ksp-app-solprices-desk` reste une HID mince : elle consomme l’inventaire, les observations, les états et les opérations génériques de `ksp-offchain-transport-lib` sans connaître les providers, leurs endpoints, leurs credentials ni leurs limites. `ksp-app-backfill-desk` compose Config, Transport HTTP, Store et `ksp-job-backfill-lib` sans absorber découverte, retry/rate-limit, persistance ou checkpoint ; son frontend ne reçoit que des DTOs sûrs et le checkpoint de reprise reste Rust-only. `ksp-app-store-desk` compose Config, Logging et `ksp-store-lib` pour une inspection RAW read-only : il n'accède ni au backend physique ni au SQL et sépare la pagination random-access de l'interface de la pagination cursor/keyset réservée aux consumers machine.
|
||||
|
||||
## Workers et jobs
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/003-COMPONENT_CONTRACTS.md -->
|
||||
<!-- version: 14 -->
|
||||
<!-- version: 15 -->
|
||||
|
||||
# Contrats initiaux des composants KSP
|
||||
|
||||
@@ -214,6 +214,8 @@ Une application globale reste future.
|
||||
|
||||
`ksp-app-backfill-desk` est l'interface spécialisée du premier job historique. Elle dépend des façades KSP nécessaires à la composition (`ksp-config-lib`, `ksp-job-api`, `ksp-job-backfill-lib`, `ksp-onchain-transport-lib`, `ksp-store-lib`, Core et Logging), garde Store/Transport/checkpoint côté Rust et expose uniquement les options, demandes opérateur bornées, états latest-value et acquittements de contrôle sûrs.
|
||||
|
||||
`ksp-app-store-desk` est l'interface spécialisée d'inspection du Store RAW. Elle dépend de `ksp-config-lib`, `ksp-core-lib`, `ksp-logging-lib` et `ksp-store-lib`, conserve le Store ouvert côté Rust, expose uniquement des DTOs app-owned backend-neutral et ne fournit aucun command d'écriture. Les tables utilisent les capabilities d'inspection random-access ; les détails rechargent une seule entité et bornent les previews RAW sans déplacer la rétention ou le backend dans Tauri.
|
||||
|
||||
## Progression verticale Program
|
||||
|
||||
À partir de DECODE :
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/004-COMPONENT_INVENTORY.md -->
|
||||
<!-- version: 32 -->
|
||||
<!-- version: 33 -->
|
||||
|
||||
# Inventaire initial des composants KSP
|
||||
|
||||
@@ -43,6 +43,7 @@ Ce document maintient l'inventaire synthétique des composants retenus ou presse
|
||||
| Job lifecycle | `ksp-job-api` | API | Implémenté | `0.3.6` | identité/lifecycle/annulation/notifications latest-value runtime-neutral |
|
||||
| Backfill | `ksp-job-backfill-lib` | lib | Implémenté | `0.3.6` | backfill `RawTransaction` borné via Transport observé + Store, checkpoint et runtime |
|
||||
| Backfill Desk | `ksp-app-backfill-desk` | app | Implémenté | `0.3.7` | Start/monitoring/Cancel/Resume in-session du backfill RAW via façades KSP |
|
||||
| Store Desk | `ksp-app-store-desk` | app | Implémenté | `0.3.8` | inspection RAW read-only Transaction/Account/Observation via façade Store |
|
||||
| Worker lifecycle | `ksp-worker-api` | API | Retenu | fin couche RAW | lifecycle des services continus |
|
||||
| RAW worker | `ksp-worker-raw-retriever` ou nom révisé | worker | Retenu | fin couche RAW | acquisition live vers RAW |
|
||||
| CORE processor | nom à fixer | processor/lib | Retenu | couche CORE | normalisation Solana générique RAW -> CORE |
|
||||
@@ -150,7 +151,6 @@ Market Desk est progressive : V1 après les DEX prioritaires, puis enrichissemen
|
||||
|
||||
## Questions restantes
|
||||
|
||||
- nom exact de Backfill Desk ;
|
||||
- nécessité future d'un pool automatique WS ;
|
||||
- types exacts `ksp-materializer-api` lors de l'ouverture DECODE ;
|
||||
- nom/packaging précis du premier RAW worker et du CORE normalizer ;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/005-DEPENDENCY_GRAPH.md -->
|
||||
<!-- version: 21 -->
|
||||
<!-- version: 22 -->
|
||||
|
||||
# Graphe de dépendances KSP
|
||||
|
||||
@@ -440,6 +440,18 @@ ksp-app-backfill-desk
|
||||
|
||||
La Desk compose les ressources et contrôles du job sans traverser la façade Store : aucune dépendance directe à `ksp-store-api`, `ksp-store-postgres-lib`, `tokio-postgres`, `reqwest`, `tonic` ou `yellowstone-grpc-proto`. Le frontend ne connaît que des rôles HTTP logiques et des DTOs sûrs ; endpoints, credentials, backend Store, RAW et checkpoint concret restent sous les composants Rust propriétaires.
|
||||
|
||||
### Store Desk
|
||||
|
||||
```text
|
||||
ksp-app-store-desk
|
||||
-> ksp-config-lib
|
||||
-> ksp-core-lib
|
||||
-> ksp-logging-lib
|
||||
-> ksp-store-lib
|
||||
```
|
||||
|
||||
Store Desk est un consumer read-only de la façade Store. Il ne dépend pas directement de `ksp-store-api`, `ksp-store-postgres-lib` ou `tokio-postgres`, ne possède aucun SQL et n'ouvre aucun Transport. Les capabilities d'inspection random-access alimentent les DataTables server-side ; les reads par identité alimentent les détails bornés. Les URI, secrets, handles backend, payloads complets et source bytes ne traversent pas la frontière frontend.
|
||||
|
||||
### Market Desk
|
||||
|
||||
```text
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md -->
|
||||
<!-- version: 5 -->
|
||||
<!-- version: 6 -->
|
||||
|
||||
# Data, Materialization et Store
|
||||
|
||||
@@ -325,6 +325,21 @@ Le backend PostgreSQL officiel appartient à `ksp-store-postgres-lib`. Cette cra
|
||||
|
||||
La pagination/cursorisation reste un contrat de navigation Store. Une limite demandée par l’appelant peut être validée pour sa forme/sécurité, mais aucun plafond métier global arbitraire ni batch-size de worker n’est introduit par le runtime Store.
|
||||
|
||||
### Navigation machine et inspection humaine
|
||||
|
||||
Deux contrats complémentaires coexistent sans collision :
|
||||
|
||||
```text
|
||||
workers / jobs / replay -> RawPageRequest + RawPageCursor -> keyset
|
||||
inspection UI -> RawInspectionPageRequest -> offset + limit + counts exacts
|
||||
```
|
||||
|
||||
La voie cursor/keyset reste canonique pour la navigation machine et les replays : le cursor est opaque, lié au contexte de query et ne dépend pas d'un `OFFSET` profond.
|
||||
|
||||
La voie `RawInspectionPageRequest` est backend-neutral mais conçue pour une inspection humaine random-access. Elle peut demander des counts exacts et un offset absolu ; le backend PostgreSQL peut implémenter cette capability avec `COUNT` et `OFFSET` privés. Ce choix ne réécrit jamais les statements keyset historiques.
|
||||
|
||||
`ksp-app-store-desk` est le consumer actuel de cette voie d'inspection. DataTables possède l'unique pager visible et l'application ne reçoit aucun cursor Store. Les summaries d'inspection restent sans payload/data RAW ; un détail explicite peut recharger une seule entité avec une projection applicative bornée.
|
||||
|
||||
## `ksp-materializer-api` et `ksp-materializer-lib`
|
||||
|
||||
Ils sont introduits seulement lorsque le premier groupe DECODE démontre le contrat réel.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/010-APPS_SERVICES_SCENARIOS_AND_CONTROL.md -->
|
||||
<!-- version: 9 -->
|
||||
<!-- version: 10 -->
|
||||
|
||||
# Applications, services, scenarios et control plane
|
||||
|
||||
@@ -117,6 +117,9 @@ ksp-app-backfill-desk
|
||||
-> ksp-store-lib
|
||||
|
||||
ksp-app-store-desk
|
||||
-> ksp-config-lib
|
||||
-> ksp-core-lib
|
||||
-> ksp-logging-lib
|
||||
-> ksp-store-lib
|
||||
```
|
||||
|
||||
@@ -124,6 +127,8 @@ ksp-app-store-desk
|
||||
|
||||
Backfill Desk suit exactement cette règle : elle ouvre Store via `ksp-store-lib`, construit le pool HTTP via `ksp-onchain-transport-lib`, puis remet ces ressources à `ksp-job-backfill-lib`. Start/Cancel/Resume restent des opérations applicatives de composition ; le checkpoint de reprise et les ressources physiques ne deviennent jamais des DTOs Tauri.
|
||||
|
||||
Store Desk suit la même frontière sans Transport : Config sélectionne Logging + Store, `ksp-store-lib` fournit health, reads et inspection backend-neutral, et le Store ouvert reste côté Rust. Les DataTables frontend consomment des summaries server-side et counts exacts ; les détails chargent une seule entité avec preview bornée. Aucun command d'écriture, SQL, cursor opaque, backend physique ou secret Store n'est exposé à Tauri/TypeScript.
|
||||
|
||||
Les couches N1–N4 expriment des responsabilités et une direction de dépendances ; elles n'imposent pas de traverser toutes les couches intermédiaires.
|
||||
|
||||
## Tauri
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/000-README.md -->
|
||||
<!-- version: 71 -->
|
||||
<!-- version: 72 -->
|
||||
|
||||
# Plans KSP
|
||||
|
||||
@@ -36,6 +36,8 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou
|
||||
- [`025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md`](025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md) — plan historique clôturé de `0.3.4 — Store/PostgreSQL RawAccountState + complétude RAW`; il complète le backend/façade à dix capabilities RAW et ferme V002.
|
||||
- [`026-V0_3_5_INTERFACE_ACQUISITION_EVENTS_PLAN.md`](026-V0_3_5_INTERFACE_ACQUISITION_EVENTS_PLAN.md) — plan historique clôturé de `0.3.5 — Interface acquisition events`; il fixe les faits passifs provider-neutral `SlotLifecycleEvent` et `TransactionExecutionEvent` sans runtime ni persistence.
|
||||
- [`027-V0_3_6_JOB_API_BACKFILL_PLAN.md`](027-V0_3_6_JOB_API_BACKFILL_PLAN.md) — plan candidat de `0.3.6 — Job API + RAW transaction backfill`; il fixe le contrat Job runtime-neutral, les quatre scopes historiques, RAW v1, provenance observée, persistance Store normale, concurrence/frontier/checkpoint et runtime latest-value annulable.
|
||||
- [`028-V0_3_7_BACKFILL_DESK_PLAN.md`](028-V0_3_7_BACKFILL_DESK_PLAN.md) — plan historique clôturé de `0.3.7 — Backfill Desk`; il fixe la composition Config/Transport/Store/Job, Start single-run, monitoring latest-value, Cancel ciblé, Resume in-session Rust-only, autocomplete Program IDs et packaging Tauri.
|
||||
- [`029-V0_3_8_STORE_DESK_PLAN.md`](029-V0_3_8_STORE_DESK_PLAN.md) — plan candidat réconcilié de `0.3.8 — Store Desk V1 RAW`; il fixe la composition Config+Store, l'inspection backend-neutral Transaction/Account/Observation, DataTables server-side random-access, détails bornés, rétention read-only et le maintien de la pagination keyset/cursor machine.
|
||||
|
||||
Le `pre.001` de chaque release fonctionnelle peut introduire son propre plan détaillé lorsque la release s'ouvre.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/029-V0_3_8_STORE_DESK_PLAN.md -->
|
||||
<!-- version: 14 -->
|
||||
<!-- version: 15 -->
|
||||
|
||||
# Plan v0.3.8 — Store Desk V1 RAW
|
||||
|
||||
@@ -661,7 +661,7 @@ Un défaut ouvre `pre.012-fix.NNN`; aucune réconciliation README/USAGE durable
|
||||
|
||||
### pre.013 — réconciliation documentaire finale
|
||||
|
||||
README/USAGE Store Desk, architecture/index, plan/validation. Aucun changement runtime.
|
||||
README/USAGE Store Desk, architecture/index, plan/validation. Aucun changement runtime. Le gate technique autoritaire est `pre.012-fix.001`, entièrement vert après réalignement du `tsconfig.json` Store Desk sur le gabarit Desk commun.
|
||||
|
||||
### pre.014 — préparation publication
|
||||
|
||||
@@ -694,3 +694,19 @@ browser persistence RAW
|
||||
|
||||
L'utilisation de `OFFSET` et `COUNT` est autorisée uniquement dans l'implémentation privée PostgreSQL de la nouvelle capability d'inspection ; elle reste interdite dans l'application et ne remplace pas les queries keyset existantes.
|
||||
|
||||
## 21. Réconciliation documentaire finale
|
||||
|
||||
La surface réellement livrée est désormais réconciliée sans rouvrir le runtime :
|
||||
|
||||
- `ksp-app-store-desk` est documentée comme application read-only de `ksp-store-lib` composée avec Config/Core/Logging ;
|
||||
- Overview expose uniquement health/runtime portable et diagnostics sûrs ;
|
||||
- Transactions et Accounts utilisent DataTables server-side avec inspection random-access backend-neutral, counts exacts et tailles 25/50/100 ;
|
||||
- les observations sont listées server-side dans le détail de leur entité exacte ;
|
||||
- les rows restent sans payload/data/source bytes et les previews de détail restent bornés à 512 bytes ;
|
||||
- les états Transaction `Full` / `Archived` / `Purged` et tombstones sont lisibles sans action destructive ;
|
||||
- la pagination machine `RawPageCursor`/keyset et l'inspection `RawInspectionPageRequest`/offset restent deux contrats distincts ;
|
||||
- aucun Transport, SQL app-owned, backend PostgreSQL direct, write Store, archive/purge/force-rehydrate, backfill ou worker control n'entre dans Store Desk.
|
||||
|
||||
Le gate technique final autoritaire a validé 1 592 tests, zéro échec, 15 tests opt-in/operator-only ignorés, Clippy `-D warnings`, la façade Store sans default features et deux bundles Tauri Linux (`deb`, `rpm`).
|
||||
|
||||
La lane suivante reste strictement publication-only : `pre.014` peut modifier CHANGELOG/ROADMAP et produire le prompt `0.3.9`, sans rouvrir la documentation technique ou le code de `0.3.8`.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/000-README.md -->
|
||||
<!-- version: 36 -->
|
||||
<!-- version: 37 -->
|
||||
|
||||
# Validations KSP
|
||||
|
||||
@@ -33,3 +33,4 @@ Documents :
|
||||
- [`022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md`](022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md) — matrice finale de `0.3.5 — Interface acquisition events` : événements passifs slot/transaction, façade crate-root, bornes/debug et firewall Interface.
|
||||
- [`023-V0_3_6_JOB_API_BACKFILL.md`](023-V0_3_6_JOB_API_BACKFILL.md) — matrice candidate de `0.3.6 — Job API + RAW transaction backfill` : lifecycle/notifications runtime-neutral, scopes, provenance, RAW v1, Store/idempotence, concurrence/checkpoint, annulation/snapshots, hardening externe et gate workspace final.
|
||||
- [`024-V0_3_7_BACKFILL_DESK.md`](024-V0_3_7_BACKFILL_DESK.md) — matrice candidate de `0.3.7 — Backfill Desk` : composition Config/Transport/Store/Job, scopes et rôles HTTP, single-run, monitoring latest-value, Cancel, Resume in-session Rust-only, autocomplete Program IDs, hardening et gate workspace/Tauri final.
|
||||
- [`025-V0_3_8_STORE_DESK.md`](025-V0_3_8_STORE_DESK.md) — matrice candidate finale de `0.3.8 — Store Desk V1 RAW` : composition Config/Store, inspection random-access Transaction/Account/Observation, DataTables server-side, DTOs payload/data-free, détails bornés, rétention/tombstones read-only, hardening IPC/frontend, release completeness et gate workspace/Tauri final.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
|
||||
<!-- version: 28 -->
|
||||
<!-- version: 29 -->
|
||||
|
||||
# Validation v0.3.8 — Store Desk V1 RAW
|
||||
|
||||
@@ -94,13 +94,13 @@ Le journal opérateur fourni pour v0.3.7 rapporte un gate complet. Il reste une
|
||||
- [X] `pre.004` PostgreSQL + façade inspection RawTransaction ;
|
||||
- [X] `pre.005` PostgreSQL + façade inspection RawAccountState ;
|
||||
- [X] `pre.006` composite Logging+Store + Overview/health ;
|
||||
- [ ] `pre.007` RawTransaction DataTables serverSide + détail ;
|
||||
- [ ] `pre.008` RawAccountState DataTables serverSide + détail ;
|
||||
- [ ] `pre.009` observation listing/inspection Store ;
|
||||
- [ ] `pre.010` observations UI + hardening UX ;
|
||||
- [ ] `pre.011` security/dependency/release completeness ;
|
||||
- [ ] `pre.012` gate technique final + Tauri build + smoke read-only opt-in ;
|
||||
- [ ] `pre.013` réconciliation documentaire ;
|
||||
- [X] `pre.007` RawTransaction DataTables serverSide + détail ;
|
||||
- [X] `pre.008` RawAccountState DataTables serverSide + détail ;
|
||||
- [X] `pre.009` observation listing/inspection Store ;
|
||||
- [X] `pre.010` observations UI + hardening UX ;
|
||||
- [X] `pre.011` security/dependency/release completeness ;
|
||||
- [X] `pre.012` gate technique final + Tauri build + smoke read-only opt-in ;
|
||||
- [X] `pre.013` réconciliation documentaire ;
|
||||
- [ ] `pre.014` prompt suivant + CHANGELOG + ROADMAP ;
|
||||
- [ ] `rel.001` publication stable v0.3.8.
|
||||
|
||||
@@ -913,3 +913,43 @@ Le `tsconfig.json` de Store Desk avait divergé du gabarit commun Config/Wallet/
|
||||
- [X] `workspace.package.version` devient `0.3.8-pre.12.fix.1` car `tsconfig.json` est un changement build/config et un test Rust est ajouté.
|
||||
|
||||
Le gate final doit être rejoué sur l'overlay officiel. Le build Tauri reste la dernière opération lourde et doit passer avec le `tsconfig.json` versionné par ce fix, sans correction locale supplémentaire.
|
||||
|
||||
## 42. Clôture `pre.012-fix.001` et réconciliation `pre.013`
|
||||
|
||||
Le gate opérateur rejoué sur l'overlay officiel `0.3.8-pre.12.fix.1` est entièrement vert :
|
||||
|
||||
```text
|
||||
cargo fmt --all -- --check: PASS
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
Markdown table audit: clean (314 table(s), 718 file(s))
|
||||
cargo check --workspace: PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings: PASS
|
||||
cargo test --workspace --all-targets --all-features: PASS
|
||||
1 592 passed
|
||||
0 failed
|
||||
15 ignored opt-in/operator-only
|
||||
cargo check -p ksp-store-lib --no-default-features: PASS
|
||||
cargo tree Store Desk / Store façade / features / duplicates: exécutés sans gate rouge
|
||||
Store Desk frontend tsc + Vite build: PASS
|
||||
Tauri release build: PASS
|
||||
deb
|
||||
rpm
|
||||
```
|
||||
|
||||
Le canari `pre_012_fix_001_tsconfig_matches_common_ksp_desk_template_byte_exact` passe dans la suite `desktop_contract`, ce qui confirme que le réalignement TypeScript est bien versionné et non une correction locale.
|
||||
|
||||
La surface fonctionnelle finale vérifiée reste :
|
||||
|
||||
- [X] Overview/Diagnostics backend-neutral et secret-free ;
|
||||
- [X] RAW Transactions DataTables server-side, filtres Store explicites, détail borné et rétention/tombstone read-only ;
|
||||
- [X] RAW Accounts DataTables server-side, filtre pubkey exact/range/direction et détail data borné ;
|
||||
- [X] observations Transaction/Account server-side, metadata/provenance uniquement et sans source bytes ;
|
||||
- [X] counts exacts conservés en texte décimal jusqu'au contrôle JS-safe ;
|
||||
- [X] DataTables est l'unique pager visible ;
|
||||
- [X] la navigation machine cursor/keyset reste distincte et intacte ;
|
||||
- [X] aucun SQL/backend physique, Transport, browser storage/network, dialogue natif ou command Store mutatif n'entre dans l'application ;
|
||||
- [X] fermeture Store bornée avant exit.
|
||||
|
||||
`pre.013` réconcilie exclusivement README/USAGE, architecture/index et plan/validation sur cette preuve. `CHANGELOG.md`, `ROADMAP.md` et le prompt suivant restent réservés à `pre.014`.
|
||||
|
||||
Reference in New Issue
Block a user