v0.1.1-pre.004
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 22
|
# version: 23
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
members = ["crates/ksp-core-lib"]
|
members = ["crates/ksp-core-lib"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.1.1-pre.3.fix.1"
|
version = "0.1.1-pre.4"
|
||||||
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,10 +1,15 @@
|
|||||||
// file: crates/ksp-core-lib/src/lib.rs
|
// file: crates/ksp-core-lib/src/lib.rs
|
||||||
// version: 5
|
// version: 6
|
||||||
#![warn(missing_docs)]
|
#![warn(missing_docs)]
|
||||||
#![deny(unreachable_pub)]
|
#![deny(unreachable_pub)]
|
||||||
#![forbid(unsafe_code)]
|
#![forbid(unsafe_code)]
|
||||||
|
|
||||||
//! Core contracts shared by the foundational KSP layers.
|
//! 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 error;
|
||||||
mod program_ids;
|
mod program_ids;
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
// file: crates/ksp-core-lib/tests/public_api.rs
|
// file: crates/ksp-core-lib/tests/public_api.rs
|
||||||
// version: 3
|
// version: 4
|
||||||
|
|
||||||
//! Integration tests for the public `ksp-core-lib` contracts.
|
//! Integration tests for the public `ksp-core-lib` contracts.
|
||||||
|
|
||||||
ksp_core_lib::declare_program_id!(TEST_PRGID_SYSTEM, TEST_PRGIDPK_SYSTEM, "11111111111111111111111111111111");
|
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<()> {
|
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);
|
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::Ok(()) => return,
|
||||||
std::result::Result::Err(error) => error,
|
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.message(), "consumer failure");
|
||||||
assert_eq!(error.context(), &[ksp_core_lib::ErrorContext::new("operation", "public_api")]);
|
assert_eq!(error.context(), &[ksp_core_lib::ErrorContext::new("operation", "public_api")]);
|
||||||
assert_eq!(std::string::ToString::to_string(&error), "consumer.failed: consumer failure");
|
assert_eq!(std::string::ToString::to_string(&error), "consumer.failed: consumer failure");
|
||||||
|
|||||||
120
deltas/0.1.1/pre.004.md
Normal file
120
deltas/0.1.1/pre.004.md
Normal 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
|
||||||
|
```
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md -->
|
<!-- file: docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md -->
|
||||||
<!-- version: 7 -->
|
<!-- version: 8 -->
|
||||||
|
|
||||||
# Plan KSP 0.1.1 — Core foundation
|
# Plan KSP 0.1.1 — Core foundation
|
||||||
|
|
||||||
@@ -564,6 +564,7 @@ Audits complémentaires prévus lorsque la dépendance Solana existe :
|
|||||||
```bash
|
```bash
|
||||||
cargo tree -p ksp-core-lib
|
cargo tree -p ksp-core-lib
|
||||||
cargo tree -p ksp-core-lib -d
|
cargo tree -p ksp-core-lib -d
|
||||||
|
cargo tree -p ksp-core-lib -e features
|
||||||
```
|
```
|
||||||
|
|
||||||
Objectifs :
|
Objectifs :
|
||||||
@@ -621,15 +622,16 @@ Objectifs :
|
|||||||
|
|
||||||
### `0.1.1-pre.004` — intégration Core + audits
|
### `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 ;
|
- `Error` / `Result`, `Pubkey` et le registre Program IDs composent une façade Core cohérente sans dépendance vers une couche KSP supérieure ;
|
||||||
- compléter rustdocs et tests publics manquants ;
|
- aucune primitive N1 supplémentaire n'est démontrée nécessaire ;
|
||||||
- vérifier imports/réexports/visibilités et `unreachable_pub` ;
|
- les modules d'implémentation restent privés et les contrats consommables sont réexportés explicitement au crate-root ;
|
||||||
- vérifier le graphe de dépendances et les features ;
|
- 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 ;
|
||||||
- n'ajouter une primitive N1 supplémentaire que si un besoin concret découvert par cet audit la justifie explicitement.
|
- 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
|
### `0.1.1-pre.005` — clôture
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user