v0.3.4-pre.008-fix.001
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 375
|
# version: 376
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
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"]
|
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]
|
[workspace.package]
|
||||||
version = "0.3.4-pre.8"
|
version = "0.3.4-pre.8.fix.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-store-postgres-lib/tests/dependency_boundary.rs
|
// file: crates/ksp-store-postgres-lib/tests/dependency_boundary.rs
|
||||||
// version: 23
|
// version: 24
|
||||||
|
|
||||||
#![warn(missing_docs)]
|
#![warn(missing_docs)]
|
||||||
#![deny(unreachable_pub)]
|
#![deny(unreachable_pub)]
|
||||||
@@ -43,6 +43,7 @@ fn pre_005_backend_keeps_environment_sql_migrations_and_physical_types_private()
|
|||||||
assert!(crate_root.contains("mod runtime;"));
|
assert!(crate_root.contains("mod runtime;"));
|
||||||
assert!(crate_root.contains("mod schema;"));
|
assert!(crate_root.contains("mod schema;"));
|
||||||
assert!(crate_root.contains("const _: &str = crate::TRACING_TARGET;"));
|
assert!(crate_root.contains("const _: &str = crate::TRACING_TARGET;"));
|
||||||
|
let runtime = include_str!("../src/runtime.rs");
|
||||||
for forbidden in [
|
for forbidden in [
|
||||||
"pub mod ",
|
"pub mod ",
|
||||||
"ksp_store_lib",
|
"ksp_store_lib",
|
||||||
@@ -128,7 +129,6 @@ fn pre_003_fix_001_migration_engine_uses_split_schema_contract_and_binds_network
|
|||||||
fn pre_003_v002_schema_is_complete_and_keeps_capability_implementation_out_of_schema_layers() {
|
fn pre_003_v002_schema_is_complete_and_keeps_capability_implementation_out_of_schema_layers() {
|
||||||
let migration = include_str!("../src/migration.rs");
|
let migration = include_str!("../src/migration.rs");
|
||||||
let schema = include_str!("../src/schema.rs");
|
let schema = include_str!("../src/schema.rs");
|
||||||
let runtime = include_str!("../src/runtime.rs");
|
|
||||||
let states = include_str!("../migrations/v002_raw_account_state/tables/001_ksp_raw_account_states.sql");
|
let states = include_str!("../migrations/v002_raw_account_state/tables/001_ksp_raw_account_states.sql");
|
||||||
let observations = include_str!("../migrations/v002_raw_account_state/tables/002_ksp_raw_account_observations.sql");
|
let observations = include_str!("../migrations/v002_raw_account_state/tables/002_ksp_raw_account_observations.sql");
|
||||||
let slot_check = include_str!("../migrations/v002_raw_account_state/constraints/005_ck_ksp_raw_account_states_slot.sql");
|
let slot_check = include_str!("../migrations/v002_raw_account_state/constraints/005_ck_ksp_raw_account_states_slot.sql");
|
||||||
|
|||||||
72
deltas/0.3.4/pre.008-fix.001.md
Normal file
72
deltas/0.3.4/pre.008-fix.001.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<!-- file: deltas/0.3.4/pre.008-fix.001.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta `0.3.4-pre.008-fix.001`
|
||||||
|
|
||||||
|
## Base
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.3.4-pre.008
|
||||||
|
```
|
||||||
|
|
||||||
|
## Objectif
|
||||||
|
|
||||||
|
Corriger exclusivement le canari `crates/ksp-store-postgres-lib/tests/dependency_boundary.rs` qui empêche le gate `pre.008` de compiler : une déclaration `runtime` a été retirée du test d'ownership qui la consomme encore et laissée dans le test V002 où elle n'est plus utilisée depuis l'ouverture légitime des capabilities account.
|
||||||
|
|
||||||
|
## Modifications
|
||||||
|
|
||||||
|
- `workspace.package.version` passe à `0.3.4-pre.8.fix.1` ;
|
||||||
|
- restauration de `let runtime = include_str!("../src/runtime.rs");` dans `pre_005_backend_keeps_environment_sql_migrations_and_physical_types_private` ;
|
||||||
|
- suppression de la déclaration désormais inutilisée dans `pre_003_v002_schema_is_complete_and_keeps_capability_implementation_out_of_schema_layers` ;
|
||||||
|
- aucune assertion métier, capability ou règle d'ownership n'est modifiée ;
|
||||||
|
- plan et validation réconciliés avec l'échec ciblé et le fix.
|
||||||
|
|
||||||
|
## Invariants préservés
|
||||||
|
|
||||||
|
```text
|
||||||
|
PostgresBackend Raw* impls = 10
|
||||||
|
Store Raw* impls = 10
|
||||||
|
ksp-store-api inchangée
|
||||||
|
ksp-store-lib production inchangée
|
||||||
|
ksp-store-postgres-lib production inchangée
|
||||||
|
raw_account.rs inchangé
|
||||||
|
raw_account/cursor.rs inchangé
|
||||||
|
runtime.rs inchangé
|
||||||
|
migrations V000/V001/V002 byte-inchangées
|
||||||
|
```
|
||||||
|
|
||||||
|
Checksum V002 inchangé :
|
||||||
|
|
||||||
|
```text
|
||||||
|
ff21605ed45f7ab4c0f92bbb692700b4118a9488b04d50a31d259ac59bdb550e
|
||||||
|
```
|
||||||
|
|
||||||
|
## Fichiers modifiés
|
||||||
|
|
||||||
|
```text
|
||||||
|
Cargo.toml
|
||||||
|
crates/ksp-store-postgres-lib/tests/dependency_boundary.rs
|
||||||
|
docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md
|
||||||
|
docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Fichier ajouté
|
||||||
|
|
||||||
|
```text
|
||||||
|
deltas/0.3.4/pre.008-fix.001.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Gate opérateur à rejouer
|
||||||
|
|
||||||
|
```text
|
||||||
|
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.4
|
||||||
|
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
|
||||||
|
```
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
<!-- file: docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md -->
|
<!-- file: docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md -->
|
||||||
<!-- version: 13 -->
|
<!-- version: 14 -->
|
||||||
|
|
||||||
# Plan `0.3.4` — Store/PostgreSQL `RawAccountState` + complétude RAW
|
# Plan `0.3.4` — Store/PostgreSQL `RawAccountState` + complétude RAW
|
||||||
|
|
||||||
## 1. Statut de la release
|
## 1. Statut de la release
|
||||||
|
|
||||||
`0.3.4-pre.001` a figé le design. `0.3.4-pre.002` a matérialisé la fondation physique V002 minimale puis `pre.002-fix.001` a corrigé deux canaris sans toucher au SQL. `0.3.4-pre.003` complète V002 avec les contraintes de domaine, l'index de navigation, la compatibilité de schéma et le checksum final ; `pre.003-fix.001` corrige uniquement l'ordre alphabétique du bloc `const` de `migration.rs` et son gate opérateur complet est PASS. `0.3.4-pre.004` ouvre le mapping PostgreSQL privé et les deux lectures `get` account ; `pre.004-fix.001` corrige uniquement leur conformité au profil Clippy KSP et un canari inutilisé. `pre.005` ajoute l'acquisition atomique, `pre.006` l'observation supplémentaire, `pre.007` la pagination/cursor account et `pre.007-fix.001` réconcilie ses canaris ; le gate opérateur complet du fix est PASS. `pre.008` ouvre maintenant les quatre capabilities account sur `PostgresBackend` puis leur dispatch dans `Store`, pour porter l'inventaire RAW à 10/10 sans nouveau SQL.
|
`0.3.4-pre.001` a figé le design. `0.3.4-pre.002` a matérialisé la fondation physique V002 minimale puis `pre.002-fix.001` a corrigé deux canaris sans toucher au SQL. `0.3.4-pre.003` complète V002 avec les contraintes de domaine, l'index de navigation, la compatibilité de schéma et le checksum final ; `pre.003-fix.001` corrige uniquement l'ordre alphabétique du bloc `const` de `migration.rs` et son gate opérateur complet est PASS. `0.3.4-pre.004` ouvre le mapping PostgreSQL privé et les deux lectures `get` account ; `pre.004-fix.001` corrige uniquement leur conformité au profil Clippy KSP et un canari inutilisé. `pre.005` ajoute l'acquisition atomique, `pre.006` l'observation supplémentaire, `pre.007` la pagination/cursor account et `pre.007-fix.001` réconcilie ses canaris ; le gate opérateur complet du fix est PASS. `pre.008` ouvre les quatre capabilities account sur `PostgresBackend` puis leur dispatch dans `Store`, pour porter l'inventaire RAW à 10/10 sans nouveau SQL ; son gate initial isole uniquement un déplacement erroné de variable dans un canari et `pre.008-fix.001` le corrige sans toucher à la surface fonctionnelle.
|
||||||
|
|
||||||
Base canonique auditée :
|
Base canonique auditée :
|
||||||
|
|
||||||
@@ -17,8 +17,8 @@ workspace.package.version = 0.3.3
|
|||||||
Version de travail de cette prerelease :
|
Version de travail de cette prerelease :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
workspace.package.version = 0.3.4-pre.8
|
workspace.package.version = 0.3.4-pre.8.fix.1
|
||||||
label = 0.3.4-pre.008
|
label = 0.3.4-pre.008-fix.001
|
||||||
```
|
```
|
||||||
|
|
||||||
Décision de scope : `ksp-store-api` reste inchangée. L'audit n'a révélé aucun gap backend-agnostic bloquant ; la difficulté restante est exclusivement l'implémentation physique PostgreSQL et son dispatch par la façade.
|
Décision de scope : `ksp-store-api` reste inchangée. L'audit n'a révélé aucun gap backend-agnostic bloquant ; la difficulté restante est exclusivement l'implémentation physique PostgreSQL et son dispatch par la façade.
|
||||||
@@ -605,7 +605,7 @@ Aucune valeur de constante, requête SQL, ressource V002, checksum, logique de m
|
|||||||
|
|
||||||
### `pre.004` — Mapping privé et lectures `get`
|
### `pre.004` — Mapping privé et lectures `get`
|
||||||
|
|
||||||
**Statut : réalisé ; gate opérateur complet à rejouer.**
|
**Statut : réalisé ; gate opérateur initial en échec ciblé sur un canari.**
|
||||||
|
|
||||||
Budget cible : **15-20 min**. Le module privé `src/raw_account.rs` possède désormais les deux SELECT de lecture et les codecs physiques de `RawAccountState` / `RawAccountObservation`. `PostgresBackend` expose uniquement `get_raw_account_state` et `get_raw_account_observation` avec des modèles `ksp-store-api` ; aucun `tokio_postgres::Row`, SQL ou type physique ne traverse le bridge.
|
Budget cible : **15-20 min**. Le module privé `src/raw_account.rs` possède désormais les deux SELECT de lecture et les codecs physiques de `RawAccountState` / `RawAccountObservation`. `PostgresBackend` expose uniquement `get_raw_account_state` et `get_raw_account_observation` avec des modèles `ksp-store-api` ; aucun `tokio_postgres::Row`, SQL ou type physique ne traverse le bridge.
|
||||||
|
|
||||||
@@ -679,6 +679,12 @@ Store = 10 capabilities RAW
|
|||||||
|
|
||||||
Les canaris historiques sont transformés pour vérifier l'emplacement des implémentations dans `runtime.rs`, l'absence d'implémentation directe dans `raw_account.rs`, l'inventaire exact 10/10 et l'absence de types/SQL PostgreSQL dans `ksp-store-lib`. `--no-default-features` doit conserver les dix traits sur `Store` tout en retournant `backend_not_compiled` au runtime faute de backend compilé.
|
Les canaris historiques sont transformés pour vérifier l'emplacement des implémentations dans `runtime.rs`, l'absence d'implémentation directe dans `raw_account.rs`, l'inventaire exact 10/10 et l'absence de types/SQL PostgreSQL dans `ksp-store-lib`. `--no-default-features` doit conserver les dix traits sur `Store` tout en retournant `backend_not_compiled` au runtime faute de backend compilé.
|
||||||
|
|
||||||
|
#### `pre.008-fix.001` — Réconciliation du canari `dependency_boundary`
|
||||||
|
|
||||||
|
**Statut : réalisé ; gate opérateur complet à rejouer.**
|
||||||
|
|
||||||
|
Fix strictement borné à `tests/dependency_boundary.rs` : la déclaration `runtime = include_str!("../src/runtime.rs")` est restaurée dans le canari d'ownership `pre.005` qui l'utilise encore pour interdire l'environnement et le SQL physique dans `runtime.rs`, puis retirée du canari V002 `pre.003` où `pre.008` ne l'utilise plus. Aucune assertion de fond, capability, façade, runtime métier, SQL ou migration n'est modifiée.
|
||||||
|
|
||||||
### `pre.009` — Preuve PostgreSQL live account
|
### `pre.009` — Preuve PostgreSQL live account
|
||||||
|
|
||||||
**Statut : planifié.**
|
**Statut : planifié.**
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<!-- file: docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md -->
|
<!-- file: docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md -->
|
||||||
<!-- version: 12 -->
|
<!-- version: 13 -->
|
||||||
|
|
||||||
# Validation `0.3.4` — Store/PostgreSQL `RawAccountState` + complétude RAW
|
# Validation `0.3.4` — Store/PostgreSQL `RawAccountState` + complétude RAW
|
||||||
|
|
||||||
## 1. Portée
|
## 1. Portée
|
||||||
|
|
||||||
Cette matrice est ouverte par `0.3.4-pre.001`. `0.3.4-pre.002` matérialise la fondation V002 minimale et `pre.002-fix.001` corrige deux canaris sans modifier le SQL ; son gate opérateur complet est PASS. `0.3.4-pre.003` complète les contraintes de domaine, l'index de navigation, la compatibilité externe et le checksum V002 final ; `pre.003-fix.001` corrige uniquement l'ordre alphabétique du bloc `const` et son gate opérateur complet est PASS. `pre.004` à `pre.007` matérialisent successivement mapping/read, writes, observation supplémentaire et pagination account ; `pre.007-fix.001` clôt son gate opérateur en PASS. `pre.008` ouvre les quatre capabilities account dans `PostgresBackend` et `Store`, portant l'inventaire RAW statique à 10/10 ; la preuve PostgreSQL live reste réservée à `pre.009`.
|
Cette matrice est ouverte par `0.3.4-pre.001`. `0.3.4-pre.002` matérialise la fondation V002 minimale et `pre.002-fix.001` corrige deux canaris sans modifier le SQL ; son gate opérateur complet est PASS. `0.3.4-pre.003` complète les contraintes de domaine, l'index de navigation, la compatibilité externe et le checksum V002 final ; `pre.003-fix.001` corrige uniquement l'ordre alphabétique du bloc `const` et son gate opérateur complet est PASS. `pre.004` à `pre.007` matérialisent successivement mapping/read, writes, observation supplémentaire et pagination account ; `pre.007-fix.001` clôt son gate opérateur en PASS. `pre.008` ouvre les quatre capabilities account dans `PostgresBackend` et `Store`, portant l'inventaire RAW statique à 10/10 ; son gate initial échoue uniquement sur un canari `dependency_boundary` mal réconcilié et `pre.008-fix.001` corrige ce déplacement de variable sans toucher à la verticale. La preuve PostgreSQL live reste réservée à `pre.009`.
|
||||||
|
|
||||||
Base :
|
Base :
|
||||||
|
|
||||||
@@ -547,7 +547,7 @@ Le checksum V002 reste `ff21605ed45f7ab4c0f92bbb692700b4118a9488b04d50a31d259ac5
|
|||||||
|
|
||||||
## 26. Verdict `pre.008`
|
## 26. Verdict `pre.008`
|
||||||
|
|
||||||
Conformance RAW backend/façade : **10/10 matérialisée ; gate opérateur complet à rejouer**.
|
Conformance RAW backend/façade : **10/10 matérialisée ; gate initial en échec ciblé sur le canari `dependency_boundary`**.
|
||||||
|
|
||||||
Inventaire exact attendu et désormais canarisé :
|
Inventaire exact attendu et désormais canarisé :
|
||||||
|
|
||||||
@@ -587,3 +587,16 @@ no-default-features doit continuer à compiler
|
|||||||
|
|
||||||
Aucune migration V000/V001/V002 n'est modifiée ; le checksum V002 reste `ff21605ed45f7ab4c0f92bbb692700b4118a9488b04d50a31d259ac59bdb550e`. `ksp-store-api` reste inchangée. La preuve réelle PostgreSQL de coexistence, concurrence et cancellation account reste en `pre.009`.
|
Aucune migration V000/V001/V002 n'est modifiée ; le checksum V002 reste `ff21605ed45f7ab4c0f92bbb692700b4118a9488b04d50a31d259ac59bdb550e`. `ksp-store-api` reste inchangée. La preuve réelle PostgreSQL de coexistence, concurrence et cancellation account reste en `pre.009`.
|
||||||
|
|
||||||
|
## 27. Verdict `pre.008-fix.001`
|
||||||
|
|
||||||
|
Le gate opérateur de `pre.008` confirme que les audits Rust/Markdown, le workspace check, `ksp-store-api`, `ksp-store-lib`, `ksp-config-lib` et `--no-default-features` passent. L'unique blocage est la compilation de `ksp-store-postgres-lib/tests/dependency_boundary.rs` : `runtime` est référencé dans le canari d'ownership `pre.005` sans y être déclaré, tandis qu'une déclaration devenue inutilisée subsiste dans le canari V002 `pre.003`.
|
||||||
|
|
||||||
|
Le fix déplace uniquement :
|
||||||
|
|
||||||
|
```text
|
||||||
|
let runtime = include_str!("../src/runtime.rs");
|
||||||
|
```
|
||||||
|
|
||||||
|
vers le canari qui le consomme effectivement. Les assertions de placement 10/10 restent inchangées : les implémentations account demeurent uniques dans `runtime.rs`, absentes de `raw_account.rs`, et les couches migration/schema restent sans capability métier. Aucun fichier de production, SQL runtime ou migration V000/V001/V002 n'est modifié.
|
||||||
|
|
||||||
|
Le checksum V002 reste `ff21605ed45f7ab4c0f92bbb692700b4118a9488b04d50a31d259ac59bdb550e`. Le gate opérateur complet doit être rejoué sur `0.3.4-pre.8.fix.1`.
|
||||||
|
|||||||
Reference in New Issue
Block a user