v0.3.3-pre.009
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: crates/ksp-store-postgres-lib/README.md -->
|
||||
<!-- version: 7 -->
|
||||
<!-- version: 8 -->
|
||||
|
||||
# ksp-store-postgres-lib
|
||||
|
||||
@@ -161,12 +161,23 @@ 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`
|
||||
|
||||
La vertical slice `RawTransaction` possède un test PostgreSQL réel opt-in dédié :
|
||||
|
||||
```text
|
||||
postgres_raw_transaction_live
|
||||
```
|
||||
|
||||
Il refuse une base où une table KSP gérée existe déjà, lit l’URI dédiée uniquement sur `stdin`, ne l’affiche jamais et nettoie seulement le schéma qu’il 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 d’une 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.
|
||||
|
||||
## Hors périmètre actuel
|
||||
|
||||
La crate ne contient encore :
|
||||
|
||||
- aucune capability `RawAccount*` ;
|
||||
- aucun dispatch métier dans `ksp-store-lib` ;
|
||||
- aucune implémentation PostgreSQL des capabilities `RawAccount*` ;
|
||||
- aucune orchestration worker/job ;
|
||||
- aucun transport d'acquisition ou decoder Program.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: crates/ksp-store-postgres-lib/USAGE.md -->
|
||||
<!-- version: 7 -->
|
||||
<!-- version: 8 -->
|
||||
|
||||
# Utilisation de ksp-store-postgres-lib
|
||||
|
||||
@@ -237,3 +237,14 @@ Cette conformance est principalement utile aux tests backend et à la façade. L
|
||||
## 12. Ce que cette crate ne permet pas encore
|
||||
|
||||
La tranche ne fournit pas les capabilities `RawAccount*`. Elles appartiennent à `0.3.4`.
|
||||
|
||||
## 13. Exécuter la preuve PostgreSQL live RawTransaction
|
||||
|
||||
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 l’entrée standard afin de ne pas contourner Config par une variable d’environnement de test :
|
||||
|
||||
```bash
|
||||
printf '%s\n' '<URI_POSTGRES_DEDIEE>' | cargo test -p ksp-store-postgres-lib --test postgres_raw_transaction_live -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Le test refuse de démarrer si une table KSP V000/V001 existe déjà. Il ne logge pas l’URI et ne supprime que le schéma qu’il a prouvé absent avant son propre bootstrap.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-store-postgres-lib/tests/hardening_completeness.rs
|
||||
// version: 8
|
||||
// version: 9
|
||||
|
||||
#![warn(missing_docs)]
|
||||
#![deny(unreachable_pub)]
|
||||
@@ -230,3 +230,28 @@ fn pre_009_backend_has_no_env_bypass_reverse_facade_edge_or_raw_account_trait_im
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_009_live_raw_transaction_proof_is_opt_in_isolated_and_secret_safe() {
|
||||
let live = include_str!("postgres_raw_transaction_live.rs");
|
||||
for required in [
|
||||
"#[ignore = \"opt-in real PostgreSQL RawTransaction proof; reads one dedicated URI from stdin\"]",
|
||||
"std::io::stdin().read_line",
|
||||
"managed_schema_preexisting_refusal",
|
||||
"prove_schema_update_policy",
|
||||
"prove_concurrent_identical_insert",
|
||||
"prove_concurrent_divergent_insert",
|
||||
"prove_pagination",
|
||||
"prove_retention_and_rehydrate",
|
||||
"prove_retention_races",
|
||||
"prove_cancellation_rollback",
|
||||
"task.abort()",
|
||||
"cleanup_verification",
|
||||
] {
|
||||
assert!(live.contains(required), "missing pre.009 live proof guard/scenario: {required}");
|
||||
}
|
||||
for forbidden in ["std::env", "KSP_SECRET_", "PGPASSWORD", "connection_uri = %", "connection_uri = ?", "println!(uri", "eprintln!(uri"] {
|
||||
assert!(!live.contains(forbidden), "pre.009 live proof contains forbidden secret/environment material: {forbidden}");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
1176
crates/ksp-store-postgres-lib/tests/postgres_raw_transaction_live.rs
Normal file
1176
crates/ksp-store-postgres-lib/tests/postgres_raw_transaction_live.rs
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user