v0.1.1-pre.004
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
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 -->
|
||||
<!-- 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user