113 lines
3.3 KiB
Markdown
113 lines
3.3 KiB
Markdown
<!-- file: deltas/0.3.3/pre.010.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# Delta `0.3.3-pre.010` — hardening/completeness RawTransaction
|
||
|
||
## 1. Base acquise
|
||
|
||
Base opérateur :
|
||
|
||
```text
|
||
0.3.3-pre.9.fix.6
|
||
```
|
||
|
||
Le gate standard est entièrement propre et la preuve opt-in `postgres_raw_transaction_live` passe sur PostgreSQL 17. `pre.009`, corrections incluses, est donc fermée.
|
||
|
||
## 2. Version
|
||
|
||
```text
|
||
workspace.package.version = 0.3.3-pre.10
|
||
```
|
||
|
||
## 3. Nature de la tranche
|
||
|
||
`pre.010` est une tranche de hardening uniquement. Aucun fichier de production, aucune ressource SQL et aucune migration ne sont modifiés.
|
||
|
||
Elle ajoute des canaris de complétude qui figent la vertical slice acquise avant le gate technique final.
|
||
|
||
## 4. Conformance des six capacités
|
||
|
||
Les tests exigent exactement une implémentation de chacun des traits suivants sur `PostgresBackend` puis sur `Store` :
|
||
|
||
```text
|
||
RawTransactionRead
|
||
RawTransactionWrite
|
||
RawTransactionObservationRead
|
||
RawTransactionObservationWrite
|
||
RawTransactionRetentionRead
|
||
RawTransactionRetentionWrite
|
||
```
|
||
|
||
Le hardening refuse simultanément toute ouverture prématurée des quatre capacités `RawAccountState`/observation et toute ressource de migration `ksp_raw_account*`.
|
||
|
||
## 5. Hardening SQL privé
|
||
|
||
Le canari backend fige les propriétés physiques utiles à la vertical slice :
|
||
|
||
- keyset ASC/DESC sur `(slot, signature)` ;
|
||
- `LIMIT` physique sans `OFFSET` ;
|
||
- `FOR UPDATE` pour les chemins concurrents ;
|
||
- `ON CONFLICT DO NOTHING` pour l’idempotence canonique ;
|
||
- archive payload séparée ;
|
||
- absence de `SELECT *`, `ON CONFLICT DO UPDATE`, `processing_state`, `batch_size` ou `priority`.
|
||
|
||
Ce scan ne crée aucune policy worker dans Store.
|
||
|
||
## 6. Mapping d’erreurs exhaustif
|
||
|
||
Les 18 variantes actuelles de `PostgresBackendErrorKind` sont toutes exercées :
|
||
|
||
- dans `ksp-store-postgres-lib`, vers le contrat `ksp-store-api` ;
|
||
- dans `ksp-store-lib`, vers les codes stables possédés par la façade.
|
||
|
||
Le canari backend vérifie en plus que le rendu de l’erreur mappée ne contient ni URI PostgreSQL ni SQL.
|
||
|
||
## 7. Migrations
|
||
|
||
Inchangées :
|
||
|
||
```text
|
||
V000 d29068b8c13b9dc0cc9ef6aaadd0fa12d41e0fe4c56541a1118c4bfc846a1450
|
||
V001 31488cda2f08f3f46c4cdbdbb6c18c243662fada02eac4487040c8735d72cc51
|
||
```
|
||
|
||
V001 reste à 40 ressources.
|
||
|
||
## 8. Fichiers modifiés
|
||
|
||
```text
|
||
Cargo.toml
|
||
crates/ksp-store-postgres-lib/tests/hardening_completeness.rs
|
||
crates/ksp-store-postgres-lib/unit_tests/runtime.rs
|
||
crates/ksp-store-lib/tests/hardening_completeness.rs
|
||
crates/ksp-store-lib/unit_tests/store.rs
|
||
docs/plans/024-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION_PLAN.md
|
||
docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md
|
||
deltas/0.3.3/pre.010.md
|
||
```
|
||
|
||
Aucune suppression.
|
||
|
||
## 9. Gate opérateur 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
|
||
```
|
||
|
||
Aucun nouveau live PostgreSQL n’est requis en `pre.010`, car le runtime et les migrations sont byte-identiques à la base live validée `pre.009-fix.006`.
|
||
|
||
## 10. Suite si le gate est vert
|
||
|
||
```text
|
||
0.3.3-pre.011 — gate technique final
|
||
```
|