v0.3.8-pre.013
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 472
|
# version: 473
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib"]
|
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.3.8-pre.12.fix.1"
|
version = "0.3.8-pre.13"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: README.md -->
|
<!-- file: README.md -->
|
||||||
<!-- version: 9 -->
|
<!-- version: 10 -->
|
||||||
|
|
||||||
# Khadhroony Solana Project
|
# Khadhroony Solana Project
|
||||||
|
|
||||||
@@ -53,6 +53,8 @@ La couche RAW dispose d'une façade Store backend-neutral et d'un premier job hi
|
|||||||
|
|
||||||
`ksp-app-backfill-desk` fournit la surface desktop spécialisée de composition de ce runtime : sélection d'un scope historique et d'un rôle HTTP logique, validation backend des bornes, Start single-run, monitoring latest-value, Cancel ciblé et Resume in-session sur checkpoint Rust-only. L'application ouvre Transport et Store via leurs façades KSP, ne dépend d'aucun backend Store concret et n'expose ni URL/credential, ni payload RAW, ni checkpoint opaque au frontend.
|
`ksp-app-backfill-desk` fournit la surface desktop spécialisée de composition de ce runtime : sélection d'un scope historique et d'un rôle HTTP logique, validation backend des bornes, Start single-run, monitoring latest-value, Cancel ciblé et Resume in-session sur checkpoint Rust-only. L'application ouvre Transport et Store via leurs façades KSP, ne dépend d'aucun backend Store concret et n'expose ni URL/credential, ni payload RAW, ni checkpoint opaque au frontend.
|
||||||
|
|
||||||
|
`ksp-app-store-desk` fournit l'inspection desktop read-only du Store RAW via `ksp-store-lib` : health/runtime backend-neutral, tables server-side `RawTransaction` et `RawAccountState`, observations associées, détails avec previews bornées et lecture des états de rétention/tombstones. DataTables possède l'unique pagination visible de l'inspection random-access ; la pagination cursor/keyset des consumers machine reste distincte et intacte.
|
||||||
|
|
||||||
Ces contrats restent distincts des futurs workers continus : un job borné n'est ni un service worker ni un pipeline générique imposé aux autres couches.
|
Ces contrats restent distincts des futurs workers continus : un job borné n'est ni un service worker ni un pipeline générique imposé aux autres couches.
|
||||||
|
|
||||||
## Points d'entrée
|
## Points d'entrée
|
||||||
|
|||||||
106
crates/ksp-app-store-desk/README.md
Normal file
106
crates/ksp-app-store-desk/README.md
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
<!-- file: crates/ksp-app-store-desk/README.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# `ksp-app-store-desk`
|
||||||
|
|
||||||
|
`ksp-app-store-desk` est l’application desktop spécialisée d’inspection read-only du Store KSP.
|
||||||
|
|
||||||
|
Elle reste une couche de composition Tauri : Config sélectionne le profil Store et Logging, `ksp-store-lib` possède la façade backend-neutral et les contrats d’inspection, et le backend physique reste entièrement masqué à l’application comme au frontend.
|
||||||
|
|
||||||
|
## Package
|
||||||
|
|
||||||
|
```text
|
||||||
|
package : ksp-app-store-desk
|
||||||
|
lib : ksp_app_store_desk_lib
|
||||||
|
bin : ksp-app-store-desk
|
||||||
|
```
|
||||||
|
|
||||||
|
Le binaire est un launcher mince. La bibliothèque applicative possède le bootstrap, le lifecycle Store, les DTOs Tauri, les commands, les projections de détail bornées et le bridge de tracing frontend.
|
||||||
|
|
||||||
|
## Composition
|
||||||
|
|
||||||
|
```text
|
||||||
|
ksp-config-lib -> composite, profils, secrets et runtime packagé
|
||||||
|
ksp-core-lib -> erreurs et primitives communes
|
||||||
|
ksp-store-lib -> façade Store backend-neutral et contrats RAW/inspection
|
||||||
|
ksp-logging-lib -> logging/tracing applicatif
|
||||||
|
ksp-app-store-desk -> orchestration Tauri + projections sûres read-only
|
||||||
|
```
|
||||||
|
|
||||||
|
L’application ne dépend pas directement de `ksp-store-api`, `ksp-store-postgres-lib`, `tokio-postgres` ou d’un autre backend physique. Elle ne possède aucun SQL.
|
||||||
|
|
||||||
|
## Vues
|
||||||
|
|
||||||
|
La surface utilisateur comprend :
|
||||||
|
|
||||||
|
- **Overview** : état du runtime Store, health portable, réseau, backend logique, migration et compteurs de pool sûrs ;
|
||||||
|
- **RAW Transactions** : inspection DataTables server-side, filtres de slot et direction, état de rétention et détail explicite ;
|
||||||
|
- **RAW Accounts** : inspection DataTables server-side, filtre pubkey exact, plage de slots, direction et détail explicite ;
|
||||||
|
- **Diagnostics** : projection sûre du shell, de Config et du runtime Store.
|
||||||
|
|
||||||
|
Les détails Transaction et Account contiennent également leurs observations dans des DataTables server-side dédiées lorsque ces observations existent.
|
||||||
|
|
||||||
|
## Pagination et inspection
|
||||||
|
|
||||||
|
Store Desk utilise la surface d’inspection random-access de `ksp-store-lib` : `offset + limit` avec counts exacts. DataTables est l’unique propriétaire de la pagination visible et les tailles admises sont `25`, `50` et `100`.
|
||||||
|
|
||||||
|
Cette voie d’inspection humaine ne remplace pas la pagination cursor/keyset du Store. Les workers, jobs et autres consumers machine peuvent continuer à utiliser `RawPageCursor` / `RawPageRequest`; Store Desk ne consomme pas ces cursors.
|
||||||
|
|
||||||
|
Le frontend conserve `draw` localement et ne transmet ni search globale DataTables, ni ordre de colonnes arbitraire, ni cursor, ni réseau physique au Store.
|
||||||
|
|
||||||
|
## Rows, détails et observations
|
||||||
|
|
||||||
|
Les rows de table ne transportent jamais les bytes RAW complets :
|
||||||
|
|
||||||
|
- Transaction : identité, slot, format, hash, taille éventuelle et état de rétention ;
|
||||||
|
- Account : pubkey, slot, state hash, owner, lamports, executable, rent epoch et longueur de data ;
|
||||||
|
- Observation : provenance d’acquisition sûre et metadata bornées, sans source payload bytes.
|
||||||
|
|
||||||
|
Un détail est chargé explicitement pour une seule entité. Les previews payload Transaction et data Account sont limitées à **512 bytes**, rendues en hexadécimal et accompagnées de la taille exacte et d’un indicateur de troncature.
|
||||||
|
|
||||||
|
Pour une Transaction, les états `Full`, `Archived` et `Purged` restent distincts. Un état `Purged` est représenté via son tombstone ; Store Desk n’offre aucune action d’archive, purge ou force-rehydrate.
|
||||||
|
|
||||||
|
## Valeurs longues et copie
|
||||||
|
|
||||||
|
Les signatures, hashes, pubkeys, owners et autres identifiants longs sont tronqués visuellement au centre tout en restant disponibles via tooltip et bouton de copie. La copie n’ajoute aucune capability Tauri : elle utilise le WebView et le tracing ne transporte que l’identifiant logique du champ, jamais la valeur copiée.
|
||||||
|
|
||||||
|
## Config et réseaux
|
||||||
|
|
||||||
|
Le composite dédié est :
|
||||||
|
|
||||||
|
```text
|
||||||
|
cfg.composite.ksp-app-store-desk
|
||||||
|
```
|
||||||
|
|
||||||
|
Les profils committed couvrent `mainnet`, `devnet` et `testnet`. Mainnet est le profil par défaut. Le composite contient uniquement Logging + Store ; aucun Transport n’est ouvert par l’application.
|
||||||
|
|
||||||
|
Le frontend ne reçoit jamais URI Store, credential, secret Config, SQL, handle pool ou type backend physique.
|
||||||
|
|
||||||
|
## Sécurité et ownership
|
||||||
|
|
||||||
|
Store Desk est read-only par contrat applicatif : aucun command Tauri d’écriture Store n’est exposé. Les capabilities guest restent limitées à `core:default` et `tracing:default`.
|
||||||
|
|
||||||
|
Le frontend ne possède ni accès réseau navigateur direct, ni persistence navigateur des données RAW, ni accès filesystem, ni dialogue natif pour contourner les façades KSP.
|
||||||
|
|
||||||
|
Les comptes et counts `u64` susceptibles d’excéder le domaine entier sûr JavaScript traversent IPC sous forme décimale et sont vérifiés avant conversion côté TypeScript.
|
||||||
|
|
||||||
|
## Ports et développement
|
||||||
|
|
||||||
|
```text
|
||||||
|
Vite HTTP : 1438
|
||||||
|
Vite WS : 1439
|
||||||
|
```
|
||||||
|
|
||||||
|
Lancement :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(cd crates/ksp-app-store-desk && cargo tauri dev)
|
||||||
|
```
|
||||||
|
|
||||||
|
Build production :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(cd crates/ksp-app-store-desk && cargo tauri build)
|
||||||
|
```
|
||||||
|
|
||||||
|
Voir également [`USAGE.md`](USAGE.md), [`../ksp-store-lib/README.md`](../ksp-store-lib/README.md), [`../../docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md`](../../docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md) et [`../../docs/validation/025-V0_3_8_STORE_DESK.md`](../../docs/validation/025-V0_3_8_STORE_DESK.md).
|
||||||
149
crates/ksp-app-store-desk/USAGE.md
Normal file
149
crates/ksp-app-store-desk/USAGE.md
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
<!-- file: crates/ksp-app-store-desk/USAGE.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Utilisation de `ksp-app-store-desk`
|
||||||
|
|
||||||
|
## 1. Lancement
|
||||||
|
|
||||||
|
Depuis la racine du workspace :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(cd crates/ksp-app-store-desk && cargo tauri dev)
|
||||||
|
```
|
||||||
|
|
||||||
|
Le runtime charge le composite Store Desk via `ksp-config-lib`, initialise Logging puis ouvre le Store sélectionné via `ksp-store-lib`.
|
||||||
|
|
||||||
|
## 2. Profil et readiness
|
||||||
|
|
||||||
|
Le composite `cfg.composite.ksp-app-store-desk` sélectionne un profil Logging et un profil Store. Mainnet est le profil par défaut ; Devnet et Testnet sont également définis dans la configuration committed.
|
||||||
|
|
||||||
|
La vue **Overview** expose notamment :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Store open
|
||||||
|
health state
|
||||||
|
profile
|
||||||
|
network
|
||||||
|
backend kind
|
||||||
|
migration version / pending migrations
|
||||||
|
pool size / capacity / available / waiting
|
||||||
|
```
|
||||||
|
|
||||||
|
Ces informations sont des projections portables. Elles ne contiennent jamais URI PostgreSQL, credential, secret ou handle physique.
|
||||||
|
|
||||||
|
## 3. RAW Transactions
|
||||||
|
|
||||||
|
La vue **RAW Transactions** charge les données côté serveur via la façade d’inspection Store.
|
||||||
|
|
||||||
|
Filtres disponibles :
|
||||||
|
|
||||||
|
```text
|
||||||
|
slot minimum
|
||||||
|
slot maximum
|
||||||
|
direction ascending / descending
|
||||||
|
```
|
||||||
|
|
||||||
|
La table affiche des summaries sans payload RAW complet. Les signatures et hashes longs restent copiables sans que leur valeur soit journalisée.
|
||||||
|
|
||||||
|
Le bouton de détail recharge explicitement une seule Transaction. Le modal affiche les metadata canoniques, l’état de rétention et, lorsqu’un payload est encore retenu, un preview hexadécimal limité à 512 bytes avec taille exacte et indicateur de troncature.
|
||||||
|
|
||||||
|
Un état `Purged` est présenté à partir du tombstone disponible. Aucune opération d’archive, purge ou force-rehydrate n’est proposée par l’application.
|
||||||
|
|
||||||
|
## 4. RAW Accounts
|
||||||
|
|
||||||
|
La vue **RAW Accounts** utilise le même modèle d’inspection server-side.
|
||||||
|
|
||||||
|
Filtres disponibles :
|
||||||
|
|
||||||
|
```text
|
||||||
|
pubkey exacte
|
||||||
|
slot minimum
|
||||||
|
slot maximum
|
||||||
|
direction ascending / descending
|
||||||
|
```
|
||||||
|
|
||||||
|
La table ne transporte pas les bytes Account. Elle expose seulement les metadata utiles : pubkey, slot, state hash, owner, lamports, executable, rent epoch et longueur de data.
|
||||||
|
|
||||||
|
Le détail recharge exactement l’identité `(pubkey, slot, state_hash)` puis affiche un preview hexadécimal de data limité à 512 bytes, la longueur exacte et l’indicateur de troncature.
|
||||||
|
|
||||||
|
## 5. Observations
|
||||||
|
|
||||||
|
Les modals Transaction et Account contiennent une table **Observations** associée à l’entité actuellement ouverte.
|
||||||
|
|
||||||
|
La table est server-side et expose uniquement de la provenance sûre : provider logique, protocole, méthode/origine d’acquisition, timestamps, endpoint/session/filter/commitment lorsqu’ils existent, hash/taille de source et metadata Account optionnelles admises.
|
||||||
|
|
||||||
|
Les bytes du payload source ne traversent jamais IPC.
|
||||||
|
|
||||||
|
## 6. Pagination DataTables
|
||||||
|
|
||||||
|
Les tables Transactions, Accounts et Observations utilisent DataTables comme unique pager visible.
|
||||||
|
|
||||||
|
Tailles disponibles :
|
||||||
|
|
||||||
|
```text
|
||||||
|
25
|
||||||
|
50
|
||||||
|
100
|
||||||
|
```
|
||||||
|
|
||||||
|
Le frontend mappe `start` vers l’offset Store et `length` vers la limite. Les counts exacts restent des chaînes décimales jusqu’à vérification du domaine `Number.MAX_SAFE_INTEGER`.
|
||||||
|
|
||||||
|
La pagination d’inspection est distincte de la pagination cursor/keyset utilisée par les consumers machine du Store. Store Desk n’accepte ni cursor, ni search globale DataTables, ni tri arbitraire de colonnes.
|
||||||
|
|
||||||
|
## 7. Rafraîchissement et filtres
|
||||||
|
|
||||||
|
**Refresh** redessine la table concernée avec ses filtres Store explicites. Un changement de filtre repart de la première page.
|
||||||
|
|
||||||
|
Les valeurs de filtre sont validées côté Rust : slots décimaux, pubkey canonique et direction autorisée. Elles ne sont pas injectées dans les logs frontend.
|
||||||
|
|
||||||
|
## 8. Valeurs longues et copie
|
||||||
|
|
||||||
|
Les valeurs longues sont affichées sous forme tronquée au centre. Le survol permet de consulter la valeur complète et le bouton de copie copie la valeur actuellement affichée par le frontend.
|
||||||
|
|
||||||
|
Les événements de tracing de copie transportent uniquement un `fieldId` logique. Ils ne contiennent jamais signature, pubkey, owner, hash ou preview hex.
|
||||||
|
|
||||||
|
## 9. Read-only et frontières
|
||||||
|
|
||||||
|
Store Desk est un outil d’inspection. Il ne fournit aucune commande pour :
|
||||||
|
|
||||||
|
```text
|
||||||
|
écrire une entité RAW
|
||||||
|
ajouter une observation
|
||||||
|
archiver
|
||||||
|
purger
|
||||||
|
force-rehydrate
|
||||||
|
démarrer un backfill
|
||||||
|
démarrer un worker
|
||||||
|
modifier la configuration Store
|
||||||
|
```
|
||||||
|
|
||||||
|
Ces responsabilités appartiennent aux composants KSP propriétaires.
|
||||||
|
|
||||||
|
Le frontend ne reçoit jamais :
|
||||||
|
|
||||||
|
```text
|
||||||
|
URI Store
|
||||||
|
credentials/secrets
|
||||||
|
SQL
|
||||||
|
handles backend/pool
|
||||||
|
payload RAW complet
|
||||||
|
data Account complète
|
||||||
|
source payload bytes
|
||||||
|
contexte d’erreur arbitraire
|
||||||
|
```
|
||||||
|
|
||||||
|
## 10. Fermeture
|
||||||
|
|
||||||
|
La fermeture de la fenêtre principale bloque les nouvelles admissions puis ferme le Store de manière bornée avant de terminer le process.
|
||||||
|
|
||||||
|
Le shutdown applicatif n’effectue aucune mutation métier de rétention ou de données.
|
||||||
|
|
||||||
|
## 11. Build production
|
||||||
|
|
||||||
|
Depuis la racine du workspace :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(cd crates/ksp-app-store-desk && cargo tauri build)
|
||||||
|
```
|
||||||
|
|
||||||
|
Le build frontend passe par TypeScript puis Vite avant le build Tauri. Les resources Config enregistrées sont packagées selon le contrat commun des applications Desk KSP.
|
||||||
142
deltas/0.3.8/pre.013.md
Normal file
142
deltas/0.3.8/pre.013.md
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
<!-- file: deltas/0.3.8/pre.013.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta `0.3.8-pre.013` — réconciliation documentaire finale Store Desk
|
||||||
|
|
||||||
|
## 1. Base requise
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.3.8-pre.012-fix.001
|
||||||
|
workspace.package.version = 0.3.8-pre.12.fix.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Le gate technique final de cette base est entièrement vert : format check, audits Rust/Markdown, `cargo check`, Clippy all-targets/all-features avec `-D warnings`, tests workspace all-targets/all-features, Store façade sans default features, graphes Cargo et build Tauri Linux `deb`/`rpm`.
|
||||||
|
|
||||||
|
## 2. Objectif
|
||||||
|
|
||||||
|
Réconcilier exclusivement la documentation durable avec la surface réellement livrée de Store Desk. Aucun runtime, test, frontend, Config, Store API/façade/PostgreSQL, SQL, migration ou manifest de crate n'est rouvert.
|
||||||
|
|
||||||
|
## 3. Version
|
||||||
|
|
||||||
|
```text
|
||||||
|
workspace.package.version = 0.3.8-pre.13
|
||||||
|
```
|
||||||
|
|
||||||
|
Le bump prerelease est mécanique ; aucune autre propriété Cargo n'est modifiée.
|
||||||
|
|
||||||
|
## 4. Réconciliation durable
|
||||||
|
|
||||||
|
- ajout des `README.md` et `USAGE.md` de `ksp-app-store-desk` ;
|
||||||
|
- README racine et index docs/plans/validation synchronisés ;
|
||||||
|
- architecture Layers/Contracts/Inventory/Dependency Graph/Data & Store/Apps & Services réalignée ;
|
||||||
|
- plan Store Desk réconcilié sur la surface finale ;
|
||||||
|
- validation finale enrichie avec la preuve opérateur du gate `pre.012-fix.001`.
|
||||||
|
|
||||||
|
`USAGE.md` reste strictement version-neutral : aucun journal de prerelease/gate n'y est ajouté.
|
||||||
|
|
||||||
|
## 5. Contrat final documenté
|
||||||
|
|
||||||
|
```text
|
||||||
|
Config + Core + Logging + ksp-store-lib
|
||||||
|
Overview / Diagnostics backend-neutral
|
||||||
|
RAW Transactions server-side + détail borné
|
||||||
|
RAW Accounts server-side + détail borné
|
||||||
|
observations Transaction/Account server-side
|
||||||
|
DataTables = seul pager visible
|
||||||
|
inspection = offset/limit/counts exacts
|
||||||
|
machine/replay = keyset/cursor conservé
|
||||||
|
previews detail = 512 bytes max
|
||||||
|
rétention/tombstone = lecture uniquement
|
||||||
|
aucun SQL/backend physique/Transport/write Store
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Gate technique enregistré
|
||||||
|
|
||||||
|
```text
|
||||||
|
1 592 tests passés
|
||||||
|
0 échec
|
||||||
|
15 tests ignorés opt-in/operator-only
|
||||||
|
Clippy -D warnings propre
|
||||||
|
ksp-store-lib --no-default-features propre
|
||||||
|
frontend tsc + Vite build propre
|
||||||
|
2 bundles Tauri Linux : deb, rpm
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. Hors scope
|
||||||
|
|
||||||
|
```text
|
||||||
|
CHANGELOG.md
|
||||||
|
ROADMAP.md
|
||||||
|
prompt suivant
|
||||||
|
src/**
|
||||||
|
tests/** hors documentation existante
|
||||||
|
frontend/**
|
||||||
|
Config runtime
|
||||||
|
Store API/façade/PostgreSQL
|
||||||
|
SQL/schema/migrations
|
||||||
|
manifest de crate
|
||||||
|
nouvelle dépendance
|
||||||
|
```
|
||||||
|
|
||||||
|
Ces surfaces de publication restent réservées à `pre.014`.
|
||||||
|
|
||||||
|
## 8. Fichiers ajoutés
|
||||||
|
|
||||||
|
```text
|
||||||
|
crates/ksp-app-store-desk/README.md
|
||||||
|
crates/ksp-app-store-desk/USAGE.md
|
||||||
|
deltas/0.3.8/pre.013.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9. Fichiers modifiés
|
||||||
|
|
||||||
|
```text
|
||||||
|
Cargo.toml
|
||||||
|
README.md
|
||||||
|
docs/000-README.md
|
||||||
|
docs/plans/000-README.md
|
||||||
|
docs/validation/000-README.md
|
||||||
|
docs/architecture/002-LAYERS_AND_DEPENDENCIES.md
|
||||||
|
docs/architecture/003-COMPONENT_CONTRACTS.md
|
||||||
|
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||||
|
docs/architecture/005-DEPENDENCY_GRAPH.md
|
||||||
|
docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md
|
||||||
|
docs/architecture/010-APPS_SERVICES_SCENARIOS_AND_CONTROL.md
|
||||||
|
docs/plans/029-V0_3_8_STORE_DESK_PLAN.md
|
||||||
|
docs/validation/025-V0_3_8_STORE_DESK.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## 10. Fichiers supprimés
|
||||||
|
|
||||||
|
Aucun.
|
||||||
|
|
||||||
|
## 11. Validations de l’environnement d’assemblage
|
||||||
|
|
||||||
|
```text
|
||||||
|
python3 scripts/audit_rust_workspace_rules.py : clean
|
||||||
|
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas : clean, 314 tables / 721 fichiers
|
||||||
|
contrôle différentiel strict : 3 ajouts / 13 modifications / 0 suppression
|
||||||
|
CHANGELOG.md / ROADMAP.md : inchangés
|
||||||
|
USAGE.md : version-neutral
|
||||||
|
reconstruction exacte de l’overlay sur pre.012-fix.001
|
||||||
|
```
|
||||||
|
|
||||||
|
Cargo/rustc/rustfmt/Tauri ne sont pas disponibles dans l’environnement d’assemblage ; le gate technique autoritaire reste celui de `pre.012-fix.001`.
|
||||||
|
|
||||||
|
## 12. Gate documentaire après application
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 scripts/audit_rust_workspace_rules.py
|
||||||
|
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||||||
|
```
|
||||||
|
|
||||||
|
Aucun replay du build Tauri ou des 1 592 tests n’est requis pour cette tranche documentaire si ces deux audits restent propres et si l’overlay appliqué est exactement celui livré.
|
||||||
|
|
||||||
|
## 13. Suite
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.3.8-pre.014 — préparation publication + prompt 0.3.9
|
||||||
|
0.3.8-rel.001 — publication stable v0.3.8
|
||||||
|
```
|
||||||
|
|
||||||
|
Tout défaut strictement documentaire découvert dans cette tranche ouvre `pre.013-fix.NNN`. Aucun rattrapage fonctionnel n'est admis dans la lane de publication.
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/002-LAYERS_AND_DEPENDENCIES.md -->
|
<!-- file: docs/architecture/002-LAYERS_AND_DEPENDENCIES.md -->
|
||||||
<!-- version: 10 -->
|
<!-- version: 11 -->
|
||||||
|
|
||||||
# Couches et dépendances KSP
|
# Couches et dépendances KSP
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ Les applications Tauri restent minces :
|
|||||||
- instrumentation frontend ;
|
- instrumentation frontend ;
|
||||||
- aucun déplacement de logique de transport, Wallet, Config, Program, Store ou Materializer dans Tauri.
|
- 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
|
## Workers et jobs
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/003-COMPONENT_CONTRACTS.md -->
|
<!-- file: docs/architecture/003-COMPONENT_CONTRACTS.md -->
|
||||||
<!-- version: 14 -->
|
<!-- version: 15 -->
|
||||||
|
|
||||||
# Contrats initiaux des composants KSP
|
# 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-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
|
## Progression verticale Program
|
||||||
|
|
||||||
À partir de DECODE :
|
À partir de DECODE :
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/004-COMPONENT_INVENTORY.md -->
|
<!-- file: docs/architecture/004-COMPONENT_INVENTORY.md -->
|
||||||
<!-- version: 32 -->
|
<!-- version: 33 -->
|
||||||
|
|
||||||
# Inventaire initial des composants KSP
|
# 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 |
|
| 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 | `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 |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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
|
## Questions restantes
|
||||||
|
|
||||||
- nom exact de Backfill Desk ;
|
|
||||||
- nécessité future d'un pool automatique WS ;
|
- nécessité future d'un pool automatique WS ;
|
||||||
- types exacts `ksp-materializer-api` lors de l'ouverture DECODE ;
|
- types exacts `ksp-materializer-api` lors de l'ouverture DECODE ;
|
||||||
- nom/packaging précis du premier RAW worker et du CORE normalizer ;
|
- nom/packaging précis du premier RAW worker et du CORE normalizer ;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/005-DEPENDENCY_GRAPH.md -->
|
<!-- file: docs/architecture/005-DEPENDENCY_GRAPH.md -->
|
||||||
<!-- version: 21 -->
|
<!-- version: 22 -->
|
||||||
|
|
||||||
# Graphe de dépendances KSP
|
# 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.
|
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
|
### Market Desk
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md -->
|
<!-- file: docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md -->
|
||||||
<!-- version: 5 -->
|
<!-- version: 6 -->
|
||||||
|
|
||||||
# Data, Materialization et Store
|
# 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.
|
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`
|
## `ksp-materializer-api` et `ksp-materializer-lib`
|
||||||
|
|
||||||
Ils sont introduits seulement lorsque le premier groupe DECODE démontre le contrat réel.
|
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 -->
|
<!-- file: docs/architecture/010-APPS_SERVICES_SCENARIOS_AND_CONTROL.md -->
|
||||||
<!-- version: 9 -->
|
<!-- version: 10 -->
|
||||||
|
|
||||||
# Applications, services, scenarios et control plane
|
# Applications, services, scenarios et control plane
|
||||||
|
|
||||||
@@ -117,6 +117,9 @@ ksp-app-backfill-desk
|
|||||||
-> ksp-store-lib
|
-> ksp-store-lib
|
||||||
|
|
||||||
ksp-app-store-desk
|
ksp-app-store-desk
|
||||||
|
-> ksp-config-lib
|
||||||
|
-> ksp-core-lib
|
||||||
|
-> ksp-logging-lib
|
||||||
-> ksp-store-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.
|
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.
|
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
|
## Tauri
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/000-README.md -->
|
<!-- file: docs/plans/000-README.md -->
|
||||||
<!-- version: 71 -->
|
<!-- version: 72 -->
|
||||||
|
|
||||||
# Plans KSP
|
# 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.
|
- [`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.
|
- [`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.
|
- [`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.
|
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 -->
|
<!-- file: docs/plans/029-V0_3_8_STORE_DESK_PLAN.md -->
|
||||||
<!-- version: 14 -->
|
<!-- version: 15 -->
|
||||||
|
|
||||||
# Plan v0.3.8 — Store Desk V1 RAW
|
# 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
|
### 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
|
### 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.
|
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 -->
|
<!-- file: docs/validation/000-README.md -->
|
||||||
<!-- version: 36 -->
|
<!-- version: 37 -->
|
||||||
|
|
||||||
# Validations KSP
|
# 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.
|
- [`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.
|
- [`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.
|
- [`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 -->
|
<!-- file: docs/validation/025-V0_3_8_STORE_DESK.md -->
|
||||||
<!-- version: 28 -->
|
<!-- version: 29 -->
|
||||||
|
|
||||||
# Validation v0.3.8 — Store Desk V1 RAW
|
# 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.004` PostgreSQL + façade inspection RawTransaction ;
|
||||||
- [X] `pre.005` PostgreSQL + façade inspection RawAccountState ;
|
- [X] `pre.005` PostgreSQL + façade inspection RawAccountState ;
|
||||||
- [X] `pre.006` composite Logging+Store + Overview/health ;
|
- [X] `pre.006` composite Logging+Store + Overview/health ;
|
||||||
- [ ] `pre.007` RawTransaction DataTables serverSide + détail ;
|
- [X] `pre.007` RawTransaction DataTables serverSide + détail ;
|
||||||
- [ ] `pre.008` RawAccountState DataTables serverSide + détail ;
|
- [X] `pre.008` RawAccountState DataTables serverSide + détail ;
|
||||||
- [ ] `pre.009` observation listing/inspection Store ;
|
- [X] `pre.009` observation listing/inspection Store ;
|
||||||
- [ ] `pre.010` observations UI + hardening UX ;
|
- [X] `pre.010` observations UI + hardening UX ;
|
||||||
- [ ] `pre.011` security/dependency/release completeness ;
|
- [X] `pre.011` security/dependency/release completeness ;
|
||||||
- [ ] `pre.012` gate technique final + Tauri build + smoke read-only opt-in ;
|
- [X] `pre.012` gate technique final + Tauri build + smoke read-only opt-in ;
|
||||||
- [ ] `pre.013` réconciliation documentaire ;
|
- [X] `pre.013` réconciliation documentaire ;
|
||||||
- [ ] `pre.014` prompt suivant + CHANGELOG + ROADMAP ;
|
- [ ] `pre.014` prompt suivant + CHANGELOG + ROADMAP ;
|
||||||
- [ ] `rel.001` publication stable v0.3.8.
|
- [ ] `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é.
|
- [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.
|
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