From dad18c16d5a420ba1336dc9366c915c4132193d2 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sun, 30 Aug 2026 21:45:30 +0200 Subject: [PATCH] v0.3.4-pre.003-fix.001 --- Cargo.toml | 4 +- .../ksp-store-postgres-lib/src/migration.rs | 4 +- deltas/0.3.4/pre.003-fix.001.md | 111 ++++++++++++++++++ ...-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md | 18 ++- .../021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md | 24 +++- 5 files changed, 147 insertions(+), 14 deletions(-) create mode 100644 deltas/0.3.4/pre.003-fix.001.md diff --git a/Cargo.toml b/Cargo.toml index e4bab5e..f2f726d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 367 +# version: 368 [workspace] 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"] [workspace.package] -version = "0.3.4-pre.3" +version = "0.3.4-pre.3.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-store-postgres-lib/src/migration.rs b/crates/ksp-store-postgres-lib/src/migration.rs index 72bd076..28f0670 100644 --- a/crates/ksp-store-postgres-lib/src/migration.rs +++ b/crates/ksp-store-postgres-lib/src/migration.rs @@ -1,5 +1,5 @@ // file: crates/ksp-store-postgres-lib/src/migration.rs -// version: 9 +// version: 10 use sha2::Digest; // rust-rules: trait-import @@ -32,8 +32,8 @@ const EMBEDDED_MIGRATIONS: &[EmbeddedMigration] = &[ ]; const HEX_LOWER: &[u8; 16] = b"0123456789abcdef"; const HISTORY_INSERT_SQL: &str = "INSERT INTO ksp_store_schema_migrations (version, name, checksum, applied_at) VALUES ($1, $2, $3, CURRENT_TIMESTAMP)"; -const HISTORY_UPDATE_CHECKSUM_SQL: &str = "UPDATE ksp_store_schema_migrations SET checksum = $1 WHERE version = $2 AND name = $3 AND checksum = $4"; const HISTORY_LOAD_SQL: &str = "SELECT version, name, checksum FROM ksp_store_schema_migrations ORDER BY version"; +const HISTORY_UPDATE_CHECKSUM_SQL: &str = "UPDATE ksp_store_schema_migrations SET checksum = $1 WHERE version = $2 AND name = $3 AND checksum = $4"; const IDENTITY_INSERT_SQL: &str = "INSERT INTO ksp_store_identity (singleton, network) VALUES (1, $1)"; const IDENTITY_LOAD_SQL: &str = "SELECT singleton, network FROM ksp_store_identity ORDER BY singleton LIMIT 2"; const LOCK_POLL_INTERVAL_MS: u64 = 25; diff --git a/deltas/0.3.4/pre.003-fix.001.md b/deltas/0.3.4/pre.003-fix.001.md new file mode 100644 index 0000000..7437edf --- /dev/null +++ b/deltas/0.3.4/pre.003-fix.001.md @@ -0,0 +1,111 @@ + + + +# Delta `0.3.4-pre.003-fix.001` — conformité `RUST-FMT-104` du bloc migration + +## 1. Base requise + +```text +0.3.4-pre.003 +workspace.package.version = 0.3.4-pre.3 +``` + +Le gate opérateur du 2026-08-30 confirme : + +```text +Markdown audit PASS, 239 tables / 138 files +cargo check --workspace PASS +cargo clippy --workspace --all-targets PASS +cargo test -p ksp-store-api PASS +cargo test -p ksp-store-lib PASS +cargo test -p ksp-store-postgres-lib PASS, 45 tests +cargo test -p ksp-config-lib PASS, 128 tests +cargo check -p ksp-store-lib --no-default-features PASS +Rust rule audit FAIL, 1 x RUST-FMT-104 +``` + +## 2. Objectif + +Corriger l'unique violation de conformité restante de `pre.003` sans modifier le comportement de migration ni le schéma V002. + +## 3. Correction + +Dans `crates/ksp-store-postgres-lib/src/migration.rs`, le bloc homogène de constantes est remis dans l'ordre alphabétique attendu par `RUST-FMT-104` : + +```text +HISTORY_INSERT_SQL +HISTORY_LOAD_SQL +HISTORY_UPDATE_CHECKSUM_SQL +``` + +`HISTORY_LOAD_SQL` est seulement déplacée avant `HISTORY_UPDATE_CHECKSUM_SQL`. Aucune valeur de constante, chaîne SQL ou logique de code n'est modifiée. + +## 4. Version + +Le correctif touche un fichier Rust ; `VER-ID-007/010` impose donc : + +```text +workspace.package.version = 0.3.4-pre.3.fix.1 +label = 0.3.4-pre.003-fix.001 +``` + +## 5. Fichiers ajoutés + +```text +deltas/0.3.4/pre.003-fix.001.md +``` + +## 6. Fichiers modifiés + +```text +Cargo.toml +crates/ksp-store-postgres-lib/src/migration.rs +docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md +docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md +``` + +## 7. Fichiers supprimés + +Aucun. + +## 8. Invariants conservés + +- V002 reste à 32 resources : 2 tables, 29 contraintes, 1 index ; +- checksum V002 final inchangé : `ff21605ed45f7ab4c0f92bbb692700b4118a9488b04d50a31d259ac59bdb550e` ; +- checksum provisoire `pre.002` inchangé et bridge conditionnel inchangé ; +- V000/V001 inchangées ; +- aucune ressource SQL modifiée ; +- aucun repository `raw_account`, dispatch Store ou implémentation `RawAccount*` ajouté ; +- aucun changement fonctionnel, de migration, de runtime ou de configuration hors identifiant technique Cargo du fix. + +## 9. Validations exécutées dans l'environnement d'assemblage + +```text +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 +``` + +## 10. Validations non exécutées dans l'environnement d'assemblage + +`cargo` n'est pas disponible dans cet environnement. Le gate opérateur complet du fix reste à 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 +``` + +## 11. Décisions + +Le défaut appartient strictement au couloir `pre.003` : il est donc corrigé par `pre.003-fix.001` et ne justifie pas l'ouverture de `pre.004`. + +## 12. Questions ouvertes + +Aucune. diff --git a/docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md b/docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md index e13fa5a..65d8d2e 100644 --- a/docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md +++ b/docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md @@ -1,11 +1,11 @@ - + # Plan `0.3.4` — Store/PostgreSQL `RawAccountState` + complétude RAW ## 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, toujours sans repository account ni dispatch façade. +`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, toujours sans repository account ni dispatch façade ; `pre.003-fix.001` corrige ensuite uniquement l'ordre alphabétique du bloc `const` de `migration.rs` révélé par `RUST-FMT-104`. Base canonique auditée : @@ -17,8 +17,8 @@ workspace.package.version = 0.3.3 Version de travail de cette prerelease : ```text -workspace.package.version = 0.3.4-pre.3 -label = 0.3.4-pre.003 +workspace.package.version = 0.3.4-pre.3.fix.1 +label = 0.3.4-pre.003-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. @@ -585,7 +585,7 @@ Aucune ressource SQL, migration, table, contrainte, index, surface runtime ou ca ### `pre.003` — Contraintes, index et schema compatibility V002 -**Statut : réalisé ; gate opérateur à rejouer.** +**Statut : réalisé ; corrigé par `pre.003-fix.001`, gate opérateur complet du fix à rejouer.** Budget cible : **15-20 min**. V002 est complétée à **32 resources** : deux tables, 29 contraintes (PK/FK incluses) et un index non unique `(slot, pubkey, state_hash)` sans prédicat. Les contraintes matérialisent les bornes backend-agnostic existantes : fixed-width 32/64 bytes, domaines `u64` via `NUMERIC(20,0)`, data `<= 16 MiB`, codes de provenance 1..128 octets/alphabet sûr, timestamps bornés, ordre `observed_at <= received_at` et source payload `<= 64 MiB`. @@ -595,6 +595,14 @@ Le probe d'adoption reconnaît désormais aussi les deux tables V002. Aucun `src Gate de base `pre.002-fix.001` fourni le 2026-08-30 : audits Rust/Markdown, `cargo check --workspace`, Clippy all-targets, suites `ksp-store-api`, `ksp-store-lib`, `ksp-store-postgres-lib`, `ksp-config-lib` et `ksp-store-lib --no-default-features` sont tous PASS. +#### `pre.003-fix.001` — ordre alphabétique du bloc `const` migration + +**Statut : réalisé ; gate opérateur complet du fix à rejouer.** + +Le gate opérateur de `pre.003` confirme `cargo check --workspace`, Clippy all-targets, `ksp-store-api`, `ksp-store-lib`, `ksp-store-postgres-lib` (45 tests), `ksp-config-lib` et `ksp-store-lib --no-default-features`, mais l'audit Rust détecte une unique violation `RUST-FMT-104` dans `src/migration.rs`. Le correctif déplace seulement `HISTORY_LOAD_SQL` avant `HISTORY_UPDATE_CHECKSUM_SQL` afin de restaurer l'ordre alphabétique du bloc homogène de constantes. + +Aucune valeur de constante, requête SQL, ressource V002, checksum, logique de migration, compatibilité de schéma, repository ou capability n'est modifiée. La version Cargo devient `0.3.4-pre.3.fix.1` conformément à `VER-ID-007/010`, car un fichier Rust est modifié. + ### `pre.004` — Mapping privé et lectures `get` **Statut : planifié.** diff --git a/docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md b/docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md index fbd2d4d..ff34ac6 100644 --- a/docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md +++ b/docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md @@ -1,11 +1,11 @@ - + # Validation `0.3.4` — Store/PostgreSQL `RawAccountState` + complétude RAW ## 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. Les repositories et les quatre capabilities account restent volontairement pending. +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` de migration. Les repositories et les quatre capabilities account restent volontairement pending. Base : @@ -273,7 +273,7 @@ Le test live account devra être opt-in/ignored, URI stdin, sans environnement n |---------|-------------------------------------------------------------------|---------| | pre.001 | audit, kbot3, threat model, V002 design, sizing, plan/validation | DONE | | pre.002 | V002 registry + deux tables + PK/FK de base, sans repository | PASS | -| pre.003 | contraintes complètes, index, schema compatibility, checksum V002 | GATE | +| pre.003 | contraintes complètes, index, schema compatibility, checksum V002 | FIXED | | pre.004 | mapping privé state/observation + get reads + hostile rows | PLANNED | | pre.005 | acquisition atomique state+observation + idempotence/conflict | PLANNED | | pre.006 | observation supplémentaire + races/cancellation unitaires | PLANNED | @@ -354,7 +354,7 @@ Gate opérateur du correctif du 2026-08-30 : **PASS complet** — audits Rust/Ma ## 19. Verdict `pre.003` -V002 finale : **PASS statique / gate Cargo opérateur à rejouer**. +V002 finale : **PASS fonctionnel opérateur ; fix de conformité Rust requis**. Inventaire final : @@ -381,4 +381,18 @@ Compatibilité de prerelease : le checksum provisoire V002 de `pre.002` n'est ac Le probe d'adoption couvre V001 + V002. V000/V001 et leurs checksums restent inchangés. Aucune surface repository/runtime account n'est ouverte : `src/raw_account.rs` absent, aucune implémentation `RawAccount*` et aucun dispatch Store. -Audits exécutables dans l'environnement d'assemblage : Rust rules **PASS** ; audit Markdown à rejouer après cette mise à jour documentaire. Les commandes Cargo ne sont pas disponibles dans cet environnement et restent donc explicitement à rejouer par l'opérateur. +Gate opérateur de `pre.003` du 2026-08-30 : `cargo check --workspace`, Clippy all-targets, Store API, Store façade, backend PostgreSQL (45 tests), Config et `--no-default-features` sont **PASS**. L'audit Markdown est **PASS**. L'unique défaut est `RUST-FMT-104` dans `src/migration.rs` : le bloc `const` n'est pas intégralement trié alphabétiquement. + +## 20. Correctif `pre.003-fix.001` + +Le correctif est strictement hygiénique : `HISTORY_LOAD_SQL` est déplacée avant `HISTORY_UPDATE_CHECKSUM_SQL`. Les valeurs, types et usages des constantes restent identiques. + +Invariants du fix : + +- aucune ressource V002 modifiée ; +- checksum V002 final inchangé : `ff21605ed45f7ab4c0f92bbb692700b4118a9488b04d50a31d259ac59bdb550e` ; +- checksum provisoire `pre.002` et bridge de migration inchangés ; +- aucune modification de schéma, repository, dispatch ou capability ; +- `workspace.package.version = 0.3.4-pre.3.fix.1` conformément à `VER-ID-007/010`. + +L'audit Rust du fix doit être **PASS** avant `pre.004`. Le gate Cargo complet du fix reste à rejouer par l'opérateur.