v0.1.1-pre.004

This commit is contained in:
2026-08-14 15:54:52 +02:00
parent 4a86a76ca8
commit b01fb3fa53
5 changed files with 143 additions and 14 deletions

View File

@@ -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"

View File

@@ -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;

View File

@@ -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");

120
deltas/0.1.1/pre.004.md Normal file
View File

@@ -0,0 +1,120 @@
<!-- file: deltas/0.1.1/pre.004.md -->
<!-- version: 1 -->
# 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
```

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# 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