From b01fb3fa539631e6bc3c75b9b41dc23af75385db Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Fri, 14 Aug 2026 15:54:52 +0200 Subject: [PATCH] v0.1.1-pre.004 --- Cargo.toml | 4 +- crates/ksp-core-lib/src/lib.rs | 7 +- crates/ksp-core-lib/tests/public_api.rs | 8 +- deltas/0.1.1/pre.004.md | 120 ++++++++++++++++++ docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md | 18 +-- 5 files changed, 143 insertions(+), 14 deletions(-) create mode 100644 deltas/0.1.1/pre.004.md diff --git a/Cargo.toml b/Cargo.toml index c405a69..0c5edc6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 22 +# version: 23 [workspace] resolver = "3" members = ["crates/ksp-core-lib"] [workspace.package] -version = "0.1.1-pre.3.fix.1" +version = "0.1.1-pre.4" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-core-lib/src/lib.rs b/crates/ksp-core-lib/src/lib.rs index f0ad1f2..298306f 100644 --- a/crates/ksp-core-lib/src/lib.rs +++ b/crates/ksp-core-lib/src/lib.rs @@ -1,10 +1,15 @@ // file: crates/ksp-core-lib/src/lib.rs -// version: 5 +// version: 6 #![warn(missing_docs)] #![deny(unreachable_pub)] #![forbid(unsafe_code)] //! Core contracts shared by the foundational KSP layers. +//! +//! `ksp-core-lib` owns the common KSP error contract, the Solana [`Pubkey`] +//! primitive used by the project, and the KSP-owned registry of fundamental +//! Solana Program IDs. Higher-level domains extend these contracts without +//! introducing reverse dependencies from Core. mod error; mod program_ids; diff --git a/crates/ksp-core-lib/tests/public_api.rs b/crates/ksp-core-lib/tests/public_api.rs index a4b2cf0..56db808 100644 --- a/crates/ksp-core-lib/tests/public_api.rs +++ b/crates/ksp-core-lib/tests/public_api.rs @@ -1,12 +1,14 @@ // file: crates/ksp-core-lib/tests/public_api.rs -// version: 3 +// version: 4 //! Integration tests for the public `ksp-core-lib` contracts. ksp_core_lib::declare_program_id!(TEST_PRGID_SYSTEM, TEST_PRGIDPK_SYSTEM, "11111111111111111111111111111111"); +const TEST_ERROR_CODE: ksp_core_lib::ErrorCode = ksp_core_lib::ErrorCode::new("consumer", "failed"); + fn public_result() -> ksp_core_lib::Result<()> { - let error = ksp_core_lib::Error::new(ksp_core_lib::ErrorCode::new("consumer", "failed"), "consumer failure").with_context("operation", "public_api"); + let error = ksp_core_lib::Error::new(TEST_ERROR_CODE, "consumer failure").with_context("operation", "public_api"); return std::result::Result::Err(error); } @@ -18,7 +20,7 @@ fn error_contract_is_consumable_from_crate_root() { std::result::Result::Ok(()) => return, std::result::Result::Err(error) => error, }; - assert_eq!(error.code(), ksp_core_lib::ErrorCode::new("consumer", "failed")); + assert_eq!(error.code(), TEST_ERROR_CODE); assert_eq!(error.message(), "consumer failure"); assert_eq!(error.context(), &[ksp_core_lib::ErrorContext::new("operation", "public_api")]); assert_eq!(std::string::ToString::to_string(&error), "consumer.failed: consumer failure"); diff --git a/deltas/0.1.1/pre.004.md b/deltas/0.1.1/pre.004.md new file mode 100644 index 0000000..1b6f79d --- /dev/null +++ b/deltas/0.1.1/pre.004.md @@ -0,0 +1,120 @@ + + + +# Delta `0.1.1-pre.004` — intégration Core + audits + +## Statut + +Tranche d'intégration préparée après validation réussie par le user de `0.1.1-pre.003-fix.001`. + +La base validée utilise : + +```text +workspace.package.version = "0.1.1-pre.3.fix.1" +``` + +Le présent delta ouvre : + +```text +workspace.package.version = "0.1.1-pre.4" +``` + +## Validation de la base précédente + +Le user a exécuté avec succès : + +```bash +cargo fmt --all +cargo check --workspace +cargo test --workspace +cargo clippy --workspace --all-targets +cargo tree -p ksp-core-lib +cargo tree -p ksp-core-lib -d +``` + +Résultats communiqués : + +- 14 tests unitaires passent ; +- 3 tests d'intégration publics passent ; +- Clippy ne rapporte plus de warning ou d'erreur ; +- `cargo tree` résout `solana-pubkey 4.3.0` puis `solana-address 2.7.0` et leurs dépendances fondamentales ; +- `cargo tree -d` ne rapporte aucun doublon. + +## Audit d'intégration Core + +L'audit conjoint de `Error` / `Result`, `Pubkey` et Program IDs ne démontre aucun besoin de primitive N1 supplémentaire dans `0.1.1`. + +La façade conserve les propriétés attendues : + +- les modules d'implémentation restent privés ; +- les contrats consommables sont réexportés explicitement au crate-root ; +- `ksp-core-lib` ne dépend d'aucune couche KSP supérieure ; +- `solana-pubkey` reste l'unique dépendance externe directe de Core ; +- aucun codec wire, RPC/client, signer/keypair, store, logging ou configuration n'est introduit ; +- le registre Program IDs reste descriptif et distinct de tout registry de decoder/executor. + +## Rustdocs + +La rustdoc crate-level de `ksp-core-lib` est complétée afin de rendre explicites : + +- le contrat d'erreur commun ; +- la propriété de `Pubkey` dans la façade Core ; +- la propriété KSP du registre de Program IDs fondamentaux ; +- l'absence de dépendance inverse vers les domaines supérieurs. + +## Test public renforcé + +`tests/public_api.rs` déclare désormais : + +```text +const TEST_ERROR_CODE: ksp_core_lib::ErrorCode = ... +``` + +Le test confirme ainsi depuis une crate consommatrice que `ErrorCode::new(...)` est réellement utilisable en contexte `const`, ce qui permettra aux futures crates de domaine de posséder leurs codes sans faire connaître leurs domaines à Core. + +Aucune signature publique n'est modifiée. + +## Documentation du plan + +`docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md` passe en version documentaire 8 pour enregistrer le résultat de l'audit `pre.004` et ajouter le contrôle explicite des features résolues : + +```bash +cargo tree -p ksp-core-lib -e features +``` + +## Fichiers modifiés + +```text +Cargo.toml +crates/ksp-core-lib/src/lib.rs +crates/ksp-core-lib/tests/public_api.rs +docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md +``` + +## Fichier ajouté + +```text +deltas/0.1.1/pre.004.md +``` + +## Validations à exécuter sur le dépôt cible + +```bash +cargo fmt --all +cargo check --workspace +cargo test --workspace +cargo clippy --workspace --all-targets +cargo tree -p ksp-core-lib +cargo tree -p ksp-core-lib -d +cargo tree -p ksp-core-lib -e features +``` + +Aucune validation non exécutée dans l'environnement de préparation n'est déclarée réussie pour ce delta. + +## Suite + +Si cette tranche est propre, la suite prévue est : + +```text +0.1.1-pre.005 — clôture, documentation finale et prompt 0.1.2 +``` diff --git a/docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md b/docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md index 3a0cab0..74f66a3 100644 --- a/docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md +++ b/docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md @@ -1,5 +1,5 @@ - + # Plan KSP 0.1.1 — Core foundation @@ -564,6 +564,7 @@ Audits complémentaires prévus lorsque la dépendance Solana existe : ```bash cargo tree -p ksp-core-lib cargo tree -p ksp-core-lib -d +cargo tree -p ksp-core-lib -e features ``` Objectifs : @@ -621,15 +622,16 @@ Objectifs : ### `0.1.1-pre.004` — intégration Core + audits -Objectifs : +Résultat de l'audit d'intégration : -- auditer ensemble Error/Result, Pubkey et Program IDs comme façade Core ; -- compléter rustdocs et tests publics manquants ; -- vérifier imports/réexports/visibilités et `unreachable_pub` ; -- vérifier le graphe de dépendances et les features ; -- n'ajouter une primitive N1 supplémentaire que si un besoin concret découvert par cet audit la justifie explicitement. +- `Error` / `Result`, `Pubkey` et le registre Program IDs composent une façade Core cohérente sans dépendance vers une couche KSP supérieure ; +- aucune primitive N1 supplémentaire n'est démontrée nécessaire ; +- les modules d'implémentation restent privés et les contrats consommables sont réexportés explicitement au crate-root ; +- le test d'intégration public vérifie aussi qu'un consommateur peut déclarer un `const ErrorCode`, usage requis par les futures crates propriétaires de domaines ; +- la rustdoc crate-level est complétée pour expliciter la frontière Core ; +- les validations de `pre.003-fix.001` communiquées par le user confirment 14 tests unitaires, 3 tests d'intégration, un `cargo tree` limité à `solana-pubkey` et ses dépendances fondamentales, et aucun doublon avec `cargo tree -d`. -Cette tranche peut rester petite si `pre.002` et `pre.003` sont déjà complètes. +La tranche ne change ni le contrat Error, ni la taxonomie, ni l'inventaire des 18 Program IDs. Le contrôle résolu des features reste à confirmer sur le dépôt cible avec `cargo tree -p ksp-core-lib -e features` en complément des validations Cargo usuelles. ### `0.1.1-pre.005` — clôture