v0.3.3-pre.009

This commit is contained in:
2026-08-30 14:29:33 +02:00
parent 7f0a642972
commit ce658e58f7
8 changed files with 1450 additions and 12 deletions

View File

@@ -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 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.
## 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.

View File

@@ -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 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
```
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.

View File

@@ -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;
}

File diff suppressed because it is too large Load Diff