v0.3.3-pre.012

This commit is contained in:
2026-08-30 17:02:44 +02:00
parent 8428b75b96
commit 9f2d5ea704
13 changed files with 249 additions and 40 deletions

View File

@@ -1,8 +1,20 @@
<!-- file: CHANGELOG.md -->
<!-- version: 20 -->
<!-- version: 21 -->
# Changelog KSP
## 0.3.3 — Store/PostgreSQL RawTransaction vertical slice — 2026-08-30
`0.3.3` complète la première vertical slice RAW physique sur le couple `ksp-store-lib` / `ksp-store-postgres-lib` sans modifier les contrats backend-agnostic acquis dans `ksp-store-api`. `PostgresBackend` et la façade `Store` implémentent désormais les six capabilities `RawTransactionRead`, `RawTransactionWrite`, `RawTransactionObservationRead`, `RawTransactionObservationWrite`, `RawTransactionRetentionRead` et `RawTransactionRetentionWrite`. Une base PostgreSQL reste liée à un unique `RawNetworkId` par `ksp_store_identity`; le mauvais réseau est refusé avant I/O, les slots `u64` sont conservés exactement en `NUMERIC(20,0)`, et la migration logique V001 reste découpée en ressources tables/contraintes/indexes avec vérification de compatibilité du schéma effectif.
La persistence canonique utilise une transaction PostgreSQL unique pour `RawTransaction + observation`, tente l'insert sous contrainte d'unicité puis compare le contenu réel sous verrou en cas de collision : contenu identique -> idempotence, divergence -> `store_api.raw_conflict`. Les observations supplémentaires conservent leur provenance complète et ne créent jamais implicitement un canonical absent. La lecture reconstruit `Full` depuis le payload chaud et `Archived` depuis la relation archive ; `Purged` reste un tombstone minimal. La navigation est une keyset stricte `(slot, signature)` ASC/DESC sans `OFFSET`, avec cursor V1 opaque de 109 octets lié au réseau, à la direction, aux bornes et à la dernière clé. Aucun plafond métier de batch n'est introduit : seule la borne physique PostgreSQL de `LIMIT requested + 1` est appliquée.
La rétention physique supportée est `Full -> Archived -> Purged`, sérialisée par `FOR UPDATE`, avec outcomes `Applied`, `AlreadyAtTarget` et `ExpectedStateMismatch`. Le mode normal respecte le tombstone après purge ; `ForceRehydrate` reste explicite et atomique. `Compacted` demeure volontairement non supporté physiquement et retourne `store.postgres_retention_compaction_unsupported` plutôt que de présenter TOAST ou une compression implicite comme contrat KSP. Les erreurs backend sont réduites à des classes/phases statiques puis projetées vers des codes Store/API stables, sans URI, SQL, SQLSTATE, bind ni texte serveur.
La preuve PostgreSQL réelle a conduit à durcir l'introspection de schéma PostgreSQL 17 : canonicalisation ciblée des CHECK numériques reconstruits par le catalogue, conservation des littéraux texte, restauration des helpers de classification de schéma et distinction d'un drift d'une migration déjà enregistrée lorsque `schema_autoupdate=false`. Les ressources SQL V000/V001 et leurs checksums sont restés inchangés pendant ces corrections (`V000 d29068b8c13b9dc0cc9ef6aaadd0fa12d41e0fe4c56541a1118c4bfc846a1450`, `V001 31488cda2f08f3f46c4cdbdbb6c18c243662fada02eac4487040c8735d72cc51`).
Le gate technique final `pre.011` passe audits Rust/Markdown, `cargo check --workspace`, Clippy all-targets, les tests ciblés Store/API/PostgreSQL/Config, les tests et checks façade avec `--no-default-features`, `cargo test --workspace` et les graphes Cargo. Le live `postgres_raw_transaction_live` est ensuite rejoué avec succès sur **PostgreSQL 17**, couvrant bootstrap/drift-repair, atomicité, concurrence identique/divergente, rollback sur collision et annulation, pagination/cursor, rétention/races, ForceRehydrate et réouverture durable. Aucun build Tauri supplémentaire n'est requis : `0.3.3` ne change ni resources applicatives ni packaging desktop. `RawAccountState` PostgreSQL et la complétude RAW restent réservés à `0.3.4`.
## 0.3.2 — Store/PostgreSQL runtime foundation — 2026-08-30
`0.3.2` introduit ensemble `ksp-store-lib` et `ksp-store-postgres-lib` comme fondation runtime/backend PostgreSQL au-dessus des contrats backend-agnostic de `ksp-store-api`, sans encore implémenter de capability RAW métier. La façade `Store` conserve un backend connu `Postgres` activé par défaut via Cargo feature, reste compilable avec `--no-default-features`, lie chaque instance à exactement un `RawNetworkId` et n'expose aucun `Pool`, `Client`, `Row`, `Statement`, driver ou SQL physique. `ksp-config-lib` possède désormais `std.store` avec trois targets nommés `devnet`, `mainnet` et `testnet`, chacun associé à un réseau explicite et à une URI PostgreSQL Secret indépendante ; Store/backend ne lisent directement ni `.env`, ni `KSP_*`, ni `PG*`, ni `.pgpass`.

View File

@@ -1,12 +1,12 @@
# file: Cargo.toml
# version: 361
# version: 362
[workspace]
resolver = "3"
members = ["crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-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]
version = "0.3.3-pre.11"
version = "0.3.3-pre.12"
edition = "2024"
license = "MIT"
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"

View File

@@ -1,5 +1,5 @@
<!-- file: ROADMAP.md -->
<!-- version: 95 -->
<!-- version: 96 -->
# Roadmap KSP
@@ -95,7 +95,7 @@ RAW -> STRUCTURAL -> DECODED -> DOMAIN
- [X] `0.3.1``ksp-store-api` stable : modèles N1 RAW backend-agnostic `RawTransaction` et `RawAccountState` avec observations, provenance, payload/hash/timestamps bornés, 10 capabilities object-safe, queries cursorisées sans plafond métier arbitraire, outcomes idempotence/conflit et lifecycle logique rétention/tombstone/force-rehydrate ; aucun backend physique, Config, runtime Store, notification dédiée ni surface STRUCTURAL/DECODED/DOMAIN.
- [X] `0.3.2``ksp-store-lib` + `ksp-store-postgres-lib` stables comme fondation runtime/backend PostgreSQL : feature `postgres` par défaut, `Store` lié à un unique `RawNetworkId`, Config `std.store` avec targets/bases `devnet`/`mainnet`/`testnet`, pool Deadpool borné, `tokio-postgres`, TLS Rustls `Disabled`/`VerifyFull`, moteur de migrations privé `V000` + SHA-256/advisory lock, health/readiness portable et close borné. Gate complet + PostgreSQL réel major 17 verts ; aucune table/capability `RawTransaction`/`RawAccountState` métier n'est encore ajoutée.
- [ ] `0.3.3`Étendre le même couple avec la vertical slice PostgreSQL `RawTransaction` complète : les six capabilities transaction/observation/rétention de `ksp-store-api`, persistence acquisition atomique, get/list cursorisé, idempotence/conflit, binding réseau, rétention/tombstone/force-rehydrate, concurrence et rollback validés sur PostgreSQL réel.
- [X] `0.3.3`Vertical slice PostgreSQL `RawTransaction` complète sur `ksp-store-lib` + `ksp-store-postgres-lib` : six capabilities transaction/observation/rétention, V001 physique liée à un réseau, acquisition canonical+observation atomique, idempotence/conflit, get/list keyset cursorisé, archive/purge/tombstone/ForceRehydrate, hardening des erreurs et du schéma, concurrence et rollback validés sur PostgreSQL 17.
- [ ] `0.3.4` — Étendre le même couple avec `RawAccountState` + observation, puis fermer la complétude/conformance RAW cross-family, les indexes/migrations physiques nécessaires et le hardening PostgreSQL final.
- [ ] `0.3.5` — Étendre `ksp-interface-lib` uniquement avec les modèles passifs/events réellement partagés par les premiers consumers dacquisition, sans dupliquer les modèles persistants de `ksp-store-api`.
- [ ] `0.3.6` — Introduire `ksp-job-api` et un premier job de backfill historique concret consommant `ksp-store-lib`, avec policy/batch-size/progression possédés par le job et non par Store.
@@ -113,7 +113,8 @@ RAW -> STRUCTURAL -> DECODED -> DOMAIN
- [ ] **REJET ACTUEL** — Yellowstone `Entry` : trop bas niveau et aucune destination replay/decomposition/event métier justifiant un modèle KSP nest identifiée.
- [ ] **TODO** — processing ledger : reprendre lidée kbot2/kbot3 `stage + processor identity/version + input identity/hash + terminal status`, sans faire dun `processed: bool` la preuve durable unique ; prévoir force replay/version upgrades lorsque les processors seront ouverts.
- [X] lifecycle RAW logique — `RawRetentionState`, tombstone minimal, normal-skip et force-rehydrate sont stabilisés en `0.3.1` pour `RawTransaction`.
- [ ] **TODO** rétention physique : définir plus tard compression/archive backend, critères déligibilité fondés sur les preuves de processing et maintenance worker/job ; Store applique une transition demandée mais ne décide pas seul quun RAW peut être purgé.
- [X] rétention physique `RawTransaction` PostgreSQL — `0.3.3` matérialise `Full -> Archived -> Purged`, tombstone et ForceRehydrate atomiques ; `Compacted` reste explicitement unsupported tant quaucune représentation compactée réelle nexiste.
- [ ] **TODO** — policy de rétention/compaction : définir les critères déligibilité fondés sur les preuves de processing et la maintenance worker/job ; Store applique une transition demandée mais ne décide pas seul quun RAW peut être archivé/purgé, et la compaction physique ne sera ajoutée quavec un besoin réel.
- [X] frontière `ksp-interface-lib` / `ksp-store-api` — ownership documenté et canaris de non-duplication stabilisés en `0.3.1`; les events passifs non persistés restent Interface, les modèles persistants/replayables restent Store API.
- [ ] **IDEA** — réauditer la structure de processing/decode/materialization historique kbot2/kbot3 lors de louverture de N2/N3 ; conserver lisolation instruction/CPI et les statuts terminal/versionnés, sans reprendre automatiquement le schéma SQL historique.

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-store-lib/README.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# ksp-store-lib
@@ -75,7 +75,7 @@ Les credentials restent dans les variables `KSP_SECRET_STORE_*_POSTGRES_URI` ou
## Surface actuelle et hors périmètre
Depuis `0.3.3-pre.008`, `Store` implémente les six capabilities transactionnelles acquises dans `ksp-store-api` :
Depuis `0.3.3`, `Store` implémente les six capabilities transactionnelles acquises dans `ksp-store-api` :
```text
RawTransactionRead
@@ -104,4 +104,6 @@ La vertical slice `RawTransaction` est désormais dispatchée ; `RawAccountState
- [`../../config/std.store.json`](../../config/std.store.json) — targets Store committed ;
- [`../../docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md`](../../docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md) — architecture durable Store ;
- [`../../docs/plans/023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md`](../../docs/plans/023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md) — plan de fondation ;
- [`../../docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md`](../../docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md) — matrice de validation.
- [`../../docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md`](../../docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md) — validation de fondation ;
- [`../../docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md`](../../docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md) — plan `RawTransaction` ;
- [`../../docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md`](../../docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md) — validation `RawTransaction`.

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-store-lib/USAGE.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# Utilisation de ksp-store-lib
@@ -218,7 +218,7 @@ Aucun snapshot n'expose URI, host, user, database, SQL, handle backend ou texte
## 7. Utiliser les capabilities RawTransaction
Depuis `0.3.3-pre.008`, `Store` implémente directement les six traits `RawTransaction*`. Le consumer importe le trait correspondant puis appelle la méthode sur la façade :
Depuis `0.3.3`, `Store` implémente directement les six traits `RawTransaction*`. Le consumer importe le trait correspondant puis appelle la méthode sur la façade :
```rust
use ksp_store_lib::RawTransactionRead;
@@ -250,3 +250,12 @@ Les conflits et queries invalides conservent les codes API acquis `store_api.raw
## 8. Limite fonctionnelle actuelle
La façade n'implémente pas encore les capabilities `RawAccount*`. Elles appartiennent à la vertical slice `0.3.4`.
## 9. Preuve finale `0.3.3`
La conformance de la façade est verrouillée par les tests publics/hardening avec et sans feature PostgreSQL. Le gate technique final `0.3.3-pre.011` a également rejoué le workspace complet et la preuve PostgreSQL réelle `RawTransaction` sur PostgreSQL 17.
Références durables :
- [`../../docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md`](../../docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md) ;
- [`../../docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md`](../../docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md).

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-store-postgres-lib/README.md -->
<!-- version: 8 -->
<!-- version: 9 -->
# ksp-store-postgres-lib
@@ -161,7 +161,7 @@ Le backend verrouille la ligne canonique avec `FOR UPDATE`, valide la forme phys
Toute transition dont `expected` ou `target` vaut `Compacted` est rejetée avant `pool.get()` avec `RetentionCompactionUnsupported` et le code stable `store.postgres_retention_compaction_unsupported`. PostgreSQL n'utilise pas TOAST comme faux contrat de compaction.
## Preuve PostgreSQL live `0.3.3-pre.009`
## Preuve PostgreSQL live `0.3.3`
La vertical slice `RawTransaction` possède un test PostgreSQL réel opt-in dédié :
@@ -171,7 +171,7 @@ postgres_raw_transaction_live
Il refuse une base où une table KSP gérée existe déjà, lit lURI dédiée uniquement sur `stdin`, ne laffiche jamais et nettoie seulement le schéma quil a lui-même créé. La preuve couvre bootstrap V000/V001, binding réseau, réparation additive contrôlée, écritures atomiques, concurrence réelle, observations, pagination/cursor, rétention/ForceRehydrate, races et rollback par annulation dune tâche bloquée sur un verrou PostgreSQL.
Le test reste `#[ignore]` dans les gates ordinaires. Son exécution réelle et le major PostgreSQL exercé sont enregistrés dans la matrice de validation de la release.
Le test reste `#[ignore]` dans les gates ordinaires. Après les corrections de compatibilité catalogue/drift de `pre.009-fix.001..006`, il passe sur PostgreSQL 17 et a été rejoué une seconde fois avec succès au gate technique final `pre.011`. Son exécution réelle et le major exercé sont enregistrés dans la matrice de validation de la release.
## Hors périmètre actuel
@@ -188,4 +188,6 @@ La crate ne contient encore :
- [`../ksp-store-lib/README.md`](../ksp-store-lib/README.md) — façade runtime destinée aux consumers ;
- [`../../docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md`](../../docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md) — architecture Store ;
- [`../../docs/plans/023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md`](../../docs/plans/023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md) — décisions pool/TLS/migrations ;
- [`../../docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md`](../../docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md) — preuves déterministes et PostgreSQL réel.
- [`../../docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md`](../../docs/validation/019-V0_3_2_STORE_POSTGRES_FOUNDATION.md) — preuves de fondation ;
- [`../../docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md`](../../docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md) — design et séquencement `RawTransaction` ;
- [`../../docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md`](../../docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md) — preuves déterministes et PostgreSQL réel `RawTransaction`.

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-store-postgres-lib/USAGE.md -->
<!-- version: 8 -->
<!-- version: 9 -->
# Utilisation de ksp-store-postgres-lib
@@ -243,8 +243,9 @@ La tranche ne fournit pas les capabilities `RawAccount*`. Elles appartiennent à
Le test `postgres_raw_transaction_live` exige une base PostgreSQL dédiée et vide de toute table KSP gérée. Il lit son URI sur lentrée standard afin de ne pas contourner Config par une variable denvironnement de test :
```bash
printf '%s\n' '<URI_POSTGRES_DEDIEE>' | cargo test -p ksp-store-postgres-lib --test postgres_raw_transaction_live -- --ignored --nocapture
printf '%s\n' '<URI_POSTGRES_DEDIEE>' | cargo test -p ksp-store-postgres-lib --test postgres_raw_transaction_live -- --ignored --nocapture --test-threads=1
```
Le test refuse de démarrer si une table KSP V000/V001 existe déjà. Il ne logge pas lURI et ne supprime que le schéma quil a prouvé absent avant son propre bootstrap.
Le gate technique final `0.3.3-pre.011` a rejoué cette preuve sur PostgreSQL 17 avec succès. Pour l'inventaire précis des scénarios et des corrections de compatibilité catalogue, voir [`../../docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md`](../../docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md).

168
deltas/0.3.3/pre.012.md Normal file
View File

@@ -0,0 +1,168 @@
<!-- file: deltas/0.3.3/pre.012.md -->
<!-- version: 1 -->
# Delta `0.3.3-pre.012` — réconciliation documentaire finale RawTransaction
## 1. Base requise
Base directe attendue :
```text
0.3.3-pre.011
workspace.package.version = 0.3.3-pre.11
```
Le gate technique final `pre.011` du **30 août 2026** est entièrement vert.
## 2. Résultat du gate technique `pre.011`
```text
audits Rust / export / KSP PASS / clean
audit Markdown PASS / clean — 214 tables / 154 fichiers
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
tests ciblés Store API / façade / PostgreSQL PASS
ksp-config-lib PASS — 128 unit + ownership/public API
ksp-store-lib --no-default-features test/check PASS
cargo test --workspace PASS
graphes Cargo normal/features/duplicates exécutés
PostgreSQL RawTransaction live PASS — major 17, 1 test
builds Tauri N/A — aucune resource/package desktop modifiée
```
Le replay PostgreSQL final confirme de nouveau bootstrap V000/V001, drift/repair, atomicité, concurrence, rollback, pagination/cursor, rétention/races, ForceRehydrate et réouverture durable.
## 3. Objectif
Appliquer la réconciliation documentaire finale de `0.3.3` sans rouvrir la surface technique :
```text
README/USAGE ksp-store-lib
README/USAGE ksp-store-postgres-lib
index docs global
index plans
index validations
plan 024
validation 020
CHANGELOG 0.3.3
ROADMAP 0.3.3
```
Aucun changement n'est apporté à `src/**`, tests, Config runtime, architectures, règles, manifests de crate, dépendances ou migrations.
## 4. Version Cargo
```text
0.3.3-pre.11
-> 0.3.3-pre.12
```
## 5. Surface stable candidate enregistrée
La documentation durable fixe désormais :
```text
PostgresBackend + Store implémentent les six RawTransaction*
1 base = 1 RawNetworkId via ksp_store_identity
slot u64 exact = NUMERIC(20,0)
V001 logique = ressources tables/constraints/indexes
canonical + acquisition observation atomiques
idempotence réelle / divergence = store_api.raw_conflict
observations séparées et provenance complète
get Full/Archived/Purged + tombstone séparé
list keyset (slot, signature), cursor V1 109 bytes, sans OFFSET
aucun cap métier Store de batch/page
Full -> Archived -> Purged atomique
ForceRehydrate explicite
Compacted unsupported honnête
erreurs physiques redacted et codes stables
PostgreSQL >= 15, preuve finale major 17
RawAccountState physique reporté à 0.3.4
```
## 6. Rétention et roadmap
`ROADMAP.md` distingue désormais deux faits :
- la mécanique physique `RawTransaction` PostgreSQL `Full -> Archived -> Purged` est acquise en `0.3.3` ;
- la policy d'éligibilité, la maintenance worker/job et une éventuelle vraie représentation `Compacted` restent futures.
Store applique une transition demandée ; il ne décide toujours pas seul qu'un RAW peut être archivé ou purgé.
## 7. Migrations
Aucune ressource SQL n'est modifiée.
```text
V000 d29068b8c13b9dc0cc9ef6aaadd0fa12d41e0fe4c56541a1118c4bfc846a1450
V001 31488cda2f08f3f46c4cdbdbb6c18c243662fada02eac4487040c8735d72cc51
```
Les corrections `pre.009-fix.001..006` ont porté sur le test live, la comparaison du catalogue et la classification du drift, jamais sur les bytes des migrations.
## 8. Documents relus et volontairement inchangés
Les architectures Store restent cohérentes et ne sont pas modifiées artificiellement :
```text
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/009-ACQUISITION_WORKERS_AND_JOBS.md
```
`ksp-config-lib` README/USAGE restent également inchangés : `0.3.3` n'a modifié ni `std.store`, ni les targets, ni la propriété des secrets.
## 9. Fichiers ajoutés
```text
deltas/0.3.3/pre.012.md
```
## 10. Fichiers modifiés
```text
Cargo.toml
CHANGELOG.md
ROADMAP.md
crates/ksp-store-lib/README.md
crates/ksp-store-lib/USAGE.md
crates/ksp-store-postgres-lib/README.md
crates/ksp-store-postgres-lib/USAGE.md
docs/000-README.md
docs/plans/000-README.md
docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md
docs/validation/000-README.md
docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md
```
## 11. Fichiers supprimés
Aucun.
## 12. Gate attendu
```bash
cargo fmt --all
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/0.3.3
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-store-api
cargo test -p ksp-store-lib
cargo test -p ksp-store-postgres-lib
cargo test -p ksp-config-lib
cargo check -p ksp-store-lib --no-default-features
```
Le replay PostgreSQL et `cargo test --workspace` n'ont pas besoin d'être répétés dans cette tranche purement documentaire : ils constituent la preuve technique finale acquise de `pre.011`.
## 13. Suite
Après gate documentaire propre :
```text
0.3.3-pre.013 — préparation de publication + prompt 0.3.4
0.3.3-rel.001 — publication stable
```

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/000-README.md -->
<!-- version: 69 -->
<!-- version: 70 -->
# Plans KSP
@@ -32,6 +32,7 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou
- [`021-V0_2_14_PROGRAM_API_PLAN.md`](021-V0_2_14_PROGRAM_API_PLAN.md) — plan historique clôturé de la release stable `0.2.14 — Program API foundation`; il fixe la façade instruction-only ouverte, les enums Recognition/Outcome, `ProgramInstructionDecoder`, l'output associé possédé par l'implémentation, le canari externe avec Program Pubkey non enregistré, le firewall Core/Interface et le report du payload canonique D3, du registry runtime et de `ProgramExecutionPreparer`.
- [`022-V0_3_1_STORE_RAW_PLAN.md`](022-V0_3_1_STORE_RAW_PLAN.md) — plan candidat réconcilié de `0.3.1 — Store API RAW foundation`; il fixe `ksp-store-api` seul, les modèles transaction/account + observations, queries/outcomes/capabilities, rétention/tombstone, la frontière event-only/Interface et le report de `ksp-store-lib` + PostgreSQL à `0.3.2`.
- [`023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md`](023-V0_3_2_STORE_POSTGRES_FOUNDATION_PLAN.md) — plan candidat réconcilié de `0.3.2 — Store/PostgreSQL runtime foundation`; il fixe le split façade/backend, `std.store` multi-target réseau-spécifique, tokio-postgres/Deadpool/Rustls, migrations metadata-only, health/readiness, live PostgreSQL et les reports des vertical slices RAW vers `0.3.3`/`0.3.4`.
- [`024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md`](024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md) — plan candidat réconcilié de `0.3.3 — Store/PostgreSQL RawTransaction vertical slice`; il fixe V001, binding réseau, mappings entiers exacts, écritures/observations atomiques, pagination keyset/cursor, rétention/tombstone/ForceRehydrate, hardening et preuve PostgreSQL 17.
Le `pre.001` de chaque release fonctionnelle peut introduire son propre plan détaillé lorsque la release s'ouvre.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md -->
<!-- version: 12 -->
<!-- version: 13 -->
# Plan `0.3.3` — Store/PostgreSQL RawTransaction vertical slice
@@ -36,15 +36,16 @@ Tranches techniques validées :
0.3.3-pre.008 + fix.001 — six capabilities PostgreSQL + dispatch façade
0.3.3-pre.009 + fix.001..fix.006 — preuve PostgreSQL 17 complète RawTransaction
0.3.3-pre.010 + fix.001 — hardening/completeness final de la vertical slice
0.3.3-pre.011 — gate technique final + replay PostgreSQL 17
```
Tranche technique courante :
Tranche courante :
```text
0.3.3-pre.011gate technique final
0.3.3-pre.012réconciliation documentaire finale
```
Les gates opérateur jusqu'à `pre.010-fix.001` sont verts. `pre.009-fix.006` a aussi passé le live PostgreSQL 17 complet. `pre.011` n'ajoute aucun comportement métier, test fonctionnel, SQL ou migration : elle rejoue la preuve technique globale avant la réconciliation documentaire.
Tous les gates techniques jusqu'à `pre.011` sont verts. Le gate final a rejoué audits, workspace check/Clippy, tests ciblés, façade avec `--no-default-features`, `cargo test --workspace`, graphes Cargo et le live `postgres_raw_transaction_live` sur PostgreSQL 17. `pre.012` ne rouvre aucun comportement, SQL, migration ou Config runtime ; elle fige uniquement la documentation durable et l'état de release candidate.
## 2. Sources et autorité
@@ -1217,10 +1218,14 @@ Tranche matérialisée sans changement fonctionnel :
### `0.3.3-pre.012` — réconciliation documentaire
- plan/validation finalisés ;
- docs Store concernées uniquement ;
- ROADMAP/CHANGELOG selon workflow de clôture ;
- tableaux reformattés RustRover.
Tranche matérialisée :
- résultat réel du gate `pre.011` enregistré, y compris `cargo test --workspace`, graphes Cargo et replay PostgreSQL 17 ;
- README/USAGE de `ksp-store-lib` et `ksp-store-postgres-lib` réconciliés avec la surface finale `RawTransaction` ;
- indexes docs/plans/validation complétés avec le plan `024` et la validation `020` ;
- `CHANGELOG.md` fixe la surface stable candidate `0.3.3` ;
- `ROADMAP.md` ferme `0.3.3`, garde `RawAccountState` en `0.3.4` et distingue la rétention physique acquise de la future policy worker/compaction ;
- aucun `src/**`, test, Config, architecture, règle, migration ou checksum n'est modifié.
### `0.3.3-pre.013` — préparation publication

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/000-README.md -->
<!-- version: 33 -->
<!-- version: 34 -->
# Validations KSP
@@ -28,3 +28,4 @@ Documents :
- [`017-V0_2_14_PROGRAM_API.md`](017-V0_2_14_PROGRAM_API.md) — matrice historique clôturée de la release stable `0.2.14 — Program API foundation` : façade instruction-only ouverte, Recognition/Outcome, trait externe, Program Pubkey non enregistré, hardening adversarial, release completeness et firewall Core/Interface.
- [`018-V0_3_1_STORE_RAW.md`](018-V0_3_1_STORE_RAW.md) — matrice candidate finale de `0.3.1 — Store API RAW foundation` : modèles transaction/account, observations, capabilities backend, pagination sans policy executor, outcomes, rétention/tombstone, hardening, gate complet `pre.008` et reports explicites vers `0.3.2+`.
- [`019-V0_3_2_STORE_POSTGRES_FOUNDATION.md`](019-V0_3_2_STORE_POSTGRES_FOUNDATION.md) — matrice candidate finale de `0.3.2 — Store/PostgreSQL runtime foundation` : feature graph, settings/Config, pool/TLS, migrations metadata-only, health, hardening, graphes, builds Tauri et preuve PostgreSQL réelle major 17.
- [`020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md`](020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md) — matrice candidate finale de `0.3.3 — Store/PostgreSQL RawTransaction vertical slice` : six capabilities backend/façade, V001 et compatibilité schéma, atomicité/idempotence/conflit, keyset/cursor, rétention/races/rehydrate, hardening et replay PostgreSQL 17 final.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md -->
<!-- version: 23 -->
<!-- version: 24 -->
# Validation `0.3.3` — Store/PostgreSQL RawTransaction vertical slice
@@ -675,7 +675,7 @@ cap 500/1000 dans Store pagination
- publication stable.
## 22. Gate courant `pre.009`
## 22. Gate courant `pre.012`
```bash
cargo fmt --all
@@ -848,14 +848,21 @@ cargo check -p ksp-store-lib --no-default-features
### `pre.011` — gate technique final
- [MATÉRIALISÉ] aucune modification fonctionnelle, SQL, migration, Config runtime, README/USAGE, CHANGELOG/ROADMAP ou prompt ;
- [À FAIRE] `cargo fmt --all` + audits Rust/Markdown ;
- [À FAIRE] `cargo check --workspace` + `cargo clippy --workspace --all-targets` ;
- [À FAIRE] tests ciblés `ksp-store-api`, `ksp-store-lib`, `ksp-store-postgres-lib`, `ksp-config-lib` ;
- [À FAIRE] `cargo test -p ksp-store-lib --no-default-features` + `cargo check -p ksp-store-lib --no-default-features` ;
- [À FAIRE] `cargo test --workspace` ;
- [À FAIRE] graphes Cargo façade/backend/features/duplicates ;
- [À FAIRE] replay du live PostgreSQL `postgres_raw_transaction_live` sur URI dédiée ;
- [PASS] `cargo fmt --all`, audits Rust/Markdown, `cargo check --workspace` et Clippy all-targets le 2026-08-30 ;
- [PASS] tests ciblés `ksp-store-api`, `ksp-store-lib`, `ksp-store-postgres-lib` et `ksp-config-lib` ;
- [PASS] `ksp-store-lib` testé et compilé avec `--no-default-features` ;
- [PASS] `cargo test --workspace` sur l'ensemble des crates ;
- [PASS] graphes Cargo normal/features/duplicates exécutés pour la façade et le backend ;
- [PASS] replay `postgres_raw_transaction_live` sur PostgreSQL major 17 : `1 passed`, avec bootstrap/drift-repair, atomicité/concurrence, rollback, pagination, rétention/races, ForceRehydrate et réouverture ;
- [N/A] builds Tauri : aucune resource applicative ni packaging desktop n'est modifié par `0.3.3` ;
- [INVARIANT] V000/V001 et leurs checksums restent byte-identiques à la preuve live `pre.009-fix.006`.
- [PASS] V000/V001 et leurs checksums restent byte-identiques à la preuve live `pre.009-fix.006` ;
- [PASS] `pre.011` ferme la preuve technique et autorise la réconciliation documentaire `pre.012`.
### `pre.012` — réconciliation documentaire finale
- [MATÉRIALISÉ] README/USAGE Store façade/backend réconciliés ;
- [MATÉRIALISÉ] plan `024`, validation `020` et indexes durables finalisés ;
- [MATÉRIALISÉ] `CHANGELOG.md` et `ROADMAP.md` alignés sur la surface stable candidate ;
- [INVARIANT] aucun code, test, Config runtime, architecture, règle, SQL ou migration n'est rouvert ;
- [À FAIRE] gate documentaire/opérateur de `pre.012`.