Files
khadhroony-solana-project/deltas/0.3.3/pre.009-fix.002.md

102 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- file: deltas/0.3.3/pre.009-fix.002.md -->
<!-- version: 1 -->
# Delta `0.3.3-pre.009-fix.002` — Clippy live + phase sûre douverture
## 1. Base et constat
Base opérateur :
```text
0.3.3-pre.9.fix.1
```
Le gate standard du 2026-08-30 confirme que le borrow `E0502` de `pre.009-fix.001` est corrigé : `cargo check --workspace`, les tests `ksp-store-api`, `ksp-store-lib`, `ksp-store-postgres-lib`, `ksp-config-lib` et `cargo check -p ksp-store-lib --no-default-features` passent.
Clippy bloque encore le nouveau test live sur trois closures soumises à `clippy::implicit_return = deny` et remonte deux `redundant_guards` sur les tableaux de pagination.
Le premier essai live avec le placeholder littéral `<URI_POSTGRES_DEDIEE>` échoue logiquement à `admin_config` et n'est pas une preuve. Le second essai avec une URI dédiée réelle atteint PostgreSQL 17 puis échoue à `backend_open`. Cette étiquette était trop agrégée : elle supprimait le `phase()` statique, pourtant secret-safe, déjà porté par `PostgresBackendError`.
## 2. Version
```text
workspace.package.version = 0.3.3-pre.9.fix.2
```
## 3. Corrections Clippy
Les trois filtres utilisent désormais un `return` explicite dans leur closure, conformément à la policy KSP :
```rust
.filter(|value| return matches_inserted(value))
.filter(|value| return matches_already_present(value))
```
Les deux validations de pagination utilisent directement le pattern tableau :
```rust
Result::Ok([50, 51, 52, 53, 54])
Result::Ok([54, 53, 52, 51, 50])
```
Aucune exemption Clippy n'est ajoutée.
## 4. Diagnostic live secret-safe
`open_backend` distingue désormais :
- succès backend ;
- erreur backend : `LiveFailure::new(error.phase())` ;
- erreur locale de préparation : propagation du `LiveFailure` existant.
`PostgresBackendError::phase()` est une chaîne statique KSP. Elle ne contient ni URI, ni texte serveur PostgreSQL, ni SQL, ni SQLSTATE, ni bind. Le live peut donc identifier une étape telle que `schema_resource_post_apply`, `store_identity_*`, `history_insert`, etc. sans affaiblir la redaction.
Ce correctif ne modifie volontairement aucune logique de migration tant que la phase réelle n'est pas connue.
## 5. Hors scope / invariants
Aucun changement de :
- production `ksp-store-postgres-lib` ;
- `ksp-store-lib` / `ksp-store-api` / Config ;
- SQL RawTransaction ;
- cursor ;
- rétention ;
- migrations V000/V001 ;
- checksums de migration ;
- scope `RawAccountState`.
## 6. Fichiers modifiés
```text
Cargo.toml
crates/ksp-store-postgres-lib/tests/postgres_raw_transaction_live.rs
docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md
deltas/0.3.3/pre.009-fix.002.md
```
Aucune suppression.
## 7. 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
```
Puis, avec une base PostgreSQL dédiée vide de toute table KSP :
```bash
read -rsp "Dedicated PostgreSQL URI: " KSP_PG_TEST_URI; echo
printf '%s\n' "$KSP_PG_TEST_URI" | cargo test -p ksp-store-postgres-lib --test postgres_raw_transaction_live -- --ignored --nocapture --test-threads=1
unset KSP_PG_TEST_URI
```