diff --git a/Cargo.toml b/Cargo.toml index f90ece8..33a8976 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ 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-wallet-lib"] [workspace.package] -version = "0.3.1-pre.11" +version = "0.3.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/deltas/0.3.1/rel.001.md b/deltas/0.3.1/rel.001.md new file mode 100644 index 0000000..f48bff9 --- /dev/null +++ b/deltas/0.3.1/rel.001.md @@ -0,0 +1,272 @@ + + + +# Delta `0.3.1-rel.001` — publication stable Store API RAW foundation + +## 1. Base requise + +Base directe attendue : + +```text +0.3.1-pre.011 +workspace.package.version = 0.3.1-pre.11 +``` + +Commit attendu pour cette livraison : + +```text +v0.3.1-rel.001 +``` + +Tag stable attendu après validation : + +```text +v0.3.1 +``` + +## 2. Responsabilité de `rel.001` + +Cette livraison effectue uniquement la mécanique de publication stable définie par `VER-LIFECYCLE-012`. + +Elle : + +- passe `workspace.package.version` de `0.3.1-pre.11` à `0.3.1` ; +- ajoute le présent delta `rel.001` ; +- ne corrige ni code, ni test, ni manifest de crate, ni README/USAGE, ni plan/validation, ni architecture/règle, ni prompt, ni `CHANGELOG.md`, ni `ROADMAP.md`. + +Tout défaut appartenant à un couloir antérieur doit renvoyer vers une prerelease appropriée ; `rel.001` n'est jamais une tranche de rattrapage. + +## 3. Preuves acquises avant publication + +Le gate technique complet de `0.3.1-pre.008`, exécuté le **29 août 2026** après `cargo clean`, a reconstruit et validé la workspace depuis zéro : + +```text +cargo clean PASS +cargo fmt --all PASS +python3 scripts/audit_rust_workspace_rules.py PASS + General Rust rule audit clean + Rust export completeness audit 0 candidate(s) + KSP workspace Rust rule audit clean +python3 scripts/audit_markdown_tables.py PASS +cargo check --workspace PASS +cargo clippy --workspace --all-targets PASS +cargo test --workspace PASS +cargo tauri build — SOL Prices Desk PASS +cargo tauri build — Wallet Desk PASS +cargo tauri build — Config Desk PASS +cargo tree -p ksp-store-api --edges normal inspecté +cargo tree --duplicates inspecté +``` + +Le test ciblé `ksp-program-api`, initialement invoqué sous un nom de package erroné dans la séquence opérateur, a ensuite été rejoué explicitement avec le bon package et est passé intégralement. + +Le gate ciblé de la préparation minimale de publication `0.3.1-pre.011`, exécuté le **29 août 2026**, est également vert : + +```text +cargo fmt --all PASS +python3 scripts/audit_rust_workspace_rules.py PASS + General Rust rule audit clean + Rust export completeness audit 0 candidate(s) + KSP workspace Rust rule audit clean +python3 scripts/audit_markdown_tables.py PASS — 186 tables / 137 fichiers +cargo check --workspace PASS +cargo clippy --workspace --all-targets PASS +cargo test -p ksp-store-api PASS + unit 15 passed + dependency_boundary 2 passed + external_backend 1 passed + public_api 7 passed + release_completeness 5 passed + security_hardening 4 passed + doc-tests 0 failed +``` + +Les tranches `pre.009`, `pre.010` et `pre.011` n'ont rouvert aucun code Rust de `ksp-store-api` ni aucune dépendance runtime ; elles ont porté la réconciliation documentaire, le redécoupage de la trajectoire Store/PostgreSQL puis la préparation de publication. + +## 4. Version stable publiée + +La version Cargo devient : + +```text +workspace.package.version = 0.3.1 +``` + +La release stable publiée est : + +```text +0.3.1 — Store API RAW foundation +``` + +La surface stable comprend notamment : + +```text +ksp-store-api +RawTransaction + RawTransactionObservation +RawAccountState + RawAccountObservation +primitives RAW bornées et redaction-safe +10 capabilities backend-agnostic fines et object-safe +queries/cursors sans plafond métier arbitraire imposé par Store +outcomes d'idempotence et de conflit +lifecycle RawTransaction Full -> Compacted -> Archived -> Purged +RawTransactionTombstone minimal +ForceRehydrate explicite +ExpectedStateMismatch pour compare-and-transition concurrent +60 exports crate-root exacts +runtime dependency normale : ksp-core-lib uniquement +``` + +Restent volontairement absents de `0.3.1` : + +```text +ksp-store-lib runtime +ksp-store-postgres-lib +PostgreSQL / SQL / migrations runtime +Config std.store +worker / job / executor policy +N2 STRUCTURAL +N3 DECODED +N4 DOMAIN +RawLog persistant +TransactionStatusObservation commun +backend-specific rows / SQL ids +``` + +La frontière de responsabilité stable reste : + +```text +ksp-store-api + = modèles persistants/replayables + capabilities backend-agnostic + +ksp-interface-lib + = contrats passifs/event-only inter-composants lorsqu'ils existent + +worker / job / executor + = batch-size, priorité, stratégie de sélection, policy de traitement +``` + +La pagination Store reste une primitive de navigation/cursorisation. Une limite physique future d'un backend peut être exposée ou gérée par continuation, mais Store n'invente pas de plafond métier global inférieur. + +## 5. Trajectoire suivante confirmée + +Le redécoupage final conserve `ksp-store-lib` et `ksp-store-postgres-lib` développés ensemble à chaque release, en trois slices verticales : + +```text +0.3.2 fondation runtime/backend PostgreSQL +0.3.3 vertical slice PostgreSQL RawTransaction complète +0.3.4 vertical slice PostgreSQL RawAccountState + complétude Store RAW +0.3.5 Interface events partagés réellement nécessaires +0.3.6 Job API + premier backfill RAW +0.3.7 application backfill/inspection RAW +``` + +Le prompt actif de la prochaine release est : + +```text +prompts/021-V0_3_2_START_PROMPT.md +``` + +Il exige l'archive historique `khadhroony-bot3_v0.5.3-pre.005-fix010.zip` pour l'audit ciblé des anciennes surfaces Store/PostgreSQL, sans lui donner d'autorité normative sur KSP. + +## 6. Fichiers ajoutés + +```text +deltas/0.3.1/rel.001.md +``` + +## 7. Fichiers modifiés + +```text +Cargo.toml +``` + +## 8. Fichiers supprimés + +```text +aucun +``` + +## 9. Validations exécutées pour préparer le delta + +Contrôles statiques de l'overlay : + +```text +Cargo.toml version 0.3.1 +payload rel.001 2 fichiers exactement +CHANGELOG.md non rouvert +ROADMAP.md non rouvert +prompt 021 non rouvert +README/USAGE non rouverts +plan / validation non rouverts +architecture / règles non rouvertes +code / tests non rouverts +aucun fichier de rattrapage présent +``` + +La préparation de l'archive ne rejoue aucun test Cargo dans l'environnement de génération. Les preuves techniques acquises sont celles des gates opérateur ci-dessus ; le gate stable final reste à exécuter après application. + +## 10. Validation stable après application + +Exécuter avant commit/tag : + +```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.1 +cargo check --workspace +cargo clippy --workspace --all-targets +cargo test --workspace +``` + +Il n'est pas nécessaire de rejouer les trois builds Tauri, les graphes Cargo ni les smokes live : `rel.001` ne modifie ni code/runtime, ni dépendance, ni Config, ni surface desktop. + +## 11. Questions ouvertes + +Aucune question ouverte ne bloque la publication de `0.3.1`. + +Les choix de pool, TLS, mécanisme de migrations/checksums/verrouillage, forme exacte de `StoreSettings/std.store` et health/readiness appartiennent à l'audit/sizing de `0.3.2-pre.001`. + +Les capabilities PostgreSQL métier `RawTransaction` et `RawAccountState` restent volontairement reportées à `0.3.3` et `0.3.4` respectivement. + +## 12. Commit et tag stable + +Après succès du gate stable : + +```text +commit : v0.3.1-rel.001 +tag : v0.3.1 +``` + +Aucun tag intermédiaire `rel.001` n'est requis. + +Commandes Git typiques : + +```bash +git add Cargo.toml deltas/0.3.1/rel.001.md +git commit -m "v0.3.1-rel.001" +git tag v0.3.1 +git push +git push origin v0.3.1 +``` + +## 13. Suite + +Après publication du tag stable `v0.3.1`, ouvrir exclusivement : + +```text +0.3.2-pre.001 — Store runtime / PostgreSQL foundation +``` + +avec : + +```text +prompts/021-V0_3_2_START_PROMPT.md +``` + +La session suivante doit recevoir : + +```text +archive opérateur exacte de v0.3.1 +khadhroony-bot3_v0.5.3-pre.005-fix010.zip +``` + +`0.3.2-pre.001` reste une tranche d'audit/brainstorming/sizing avant implémentation lourde et doit préserver strictement le découpage `0.3.2` / `0.3.3` / `0.3.4` défini en fin de `0.3.1`.