v0.2.13-pre.002
This commit is contained in:
205
deltas/0.2.13/pre.002.md
Normal file
205
deltas/0.2.13/pre.002.md
Normal file
@@ -0,0 +1,205 @@
|
||||
<!-- file: deltas/0.2.13/pre.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.13-pre.002` — scaffold `ksp-interface-lib`
|
||||
|
||||
## 1. Base requise
|
||||
|
||||
Cette tranche s'applique exclusivement sur :
|
||||
|
||||
```text
|
||||
v0.2.12
|
||||
+ 0.2.13-pre.001
|
||||
```
|
||||
|
||||
Le gate opérateur fourni pour `pre.001` est intégralement vert : `cargo fmt --all`, audits Rust/Markdown, `cargo check --workspace`, Clippy workspace et `cargo test --workspace` passent.
|
||||
|
||||
La version workspace passe de :
|
||||
|
||||
```text
|
||||
0.2.13-pre.1
|
||||
```
|
||||
|
||||
à :
|
||||
|
||||
```text
|
||||
0.2.13-pre.2
|
||||
```
|
||||
|
||||
## 2. Objectif
|
||||
|
||||
Créer uniquement le scaffold de `ksp-interface-lib` et verrouiller sa frontière avant les types wire fonctionnels.
|
||||
|
||||
La tranche matérialise :
|
||||
|
||||
```text
|
||||
nouveau membre workspace ksp-interface-lib
|
||||
manifest avec ksp-core-lib comme seule dépendance normale
|
||||
façade crate-root explicite
|
||||
réexport contrôlé de ksp_core_lib::Pubkey
|
||||
README/USAGE initiaux
|
||||
canari public API minimal
|
||||
canari dependency firewall
|
||||
```
|
||||
|
||||
Elle ne matérialise pas encore :
|
||||
|
||||
```text
|
||||
ProgramAccountMeta
|
||||
ProgramInstruction
|
||||
bornes instruction
|
||||
codes d'erreur Interface
|
||||
serde / serde_json
|
||||
borsh / bincode / wincode
|
||||
solana-instruction
|
||||
network/runtime
|
||||
Program behavior
|
||||
```
|
||||
|
||||
## 3. Décision Logging
|
||||
|
||||
`0.2.13` reste une foundation de contrats passifs. Aucun comportement runtime n'est actuellement prévu dans `ksp-interface-lib`, donc aucun événement/span n'a besoin d'être émis.
|
||||
|
||||
En conséquence, la tranche maintient explicitement absents :
|
||||
|
||||
```text
|
||||
ksp-logging-lib
|
||||
src/constants.rs
|
||||
TRACING_TARGET
|
||||
tracing direct
|
||||
```
|
||||
|
||||
Cette absence est volontaire et couverte par le canari de dépendances. Si un comportement runtime réel apparaît dans une future évolution d'Interface, l'instrumentation devra être ajoutée via `ksp-logging-lib`; `DEP-LOG-010` imposera alors un `pub(crate) const TRACING_TARGET: &str` possédé par `src/constants.rs`.
|
||||
|
||||
Les futures validations de bornes de `pre.003`/`pre.004` doivent retourner des erreurs structurées ; elles ne justifient pas à elles seules des logs runtime.
|
||||
|
||||
## 4. Surface publique de scaffold
|
||||
|
||||
La seule primitive publique nouvellement exposée est :
|
||||
|
||||
```rust
|
||||
pub use ksp_core_lib::Pubkey;
|
||||
```
|
||||
|
||||
Ce réexport confirme l'ownership décidé : Interface n'introduit aucun wrapper `ProgramId`/`Pubkey` parallèle et utilisera la primitive Core dans ses futurs contrats wire.
|
||||
|
||||
La façade ne contient aucun `pub mod`. Les types d'instruction restent absents pour éviter d'avancer `pre.003`/`pre.004`.
|
||||
|
||||
## 5. Dependency firewall
|
||||
|
||||
Le manifest membre possède exactement :
|
||||
|
||||
```text
|
||||
[dependencies]
|
||||
ksp-core-lib = { path = "../ksp-core-lib" }
|
||||
```
|
||||
|
||||
Le canari `tests/dependency_boundary.rs` vérifie notamment l'absence de :
|
||||
|
||||
```text
|
||||
ksp-logging-lib
|
||||
ksp-program-*
|
||||
ksp-*-transport-lib
|
||||
ksp-config-lib
|
||||
ksp-store-*
|
||||
ksp-wallet-lib
|
||||
serde / serde_json
|
||||
borsh / bincode / wincode
|
||||
solana-instruction
|
||||
reqwest / tokio / tonic / tauri / tracing
|
||||
```
|
||||
|
||||
Il verrouille aussi l'absence de `src/constants.rs` et `TRACING_TARGET` tant que la crate reste passive.
|
||||
|
||||
## 6. Tests ajoutés
|
||||
|
||||
`tests/public_api.rs` vérifie que le `Pubkey` canonique est consommable uniquement depuis le crate-root Interface.
|
||||
|
||||
`tests/dependency_boundary.rs` vérifie :
|
||||
|
||||
```text
|
||||
dépendance normale exacte = ksp-core-lib
|
||||
absence des dépendances interdites
|
||||
absence de ProgramAccountMeta/ProgramInstruction en pre.002
|
||||
absence de surface Logging runtime
|
||||
```
|
||||
|
||||
Aucun unit test métier n'est ajouté : aucune primitive fonctionnelle n'existe encore.
|
||||
|
||||
## 7. Fichiers ajoutés
|
||||
|
||||
```text
|
||||
crates/ksp-interface-lib/Cargo.toml
|
||||
crates/ksp-interface-lib/README.md
|
||||
crates/ksp-interface-lib/USAGE.md
|
||||
crates/ksp-interface-lib/src/lib.rs
|
||||
crates/ksp-interface-lib/tests/dependency_boundary.rs
|
||||
crates/ksp-interface-lib/tests/public_api.rs
|
||||
deltas/0.2.13/pre.002.md
|
||||
```
|
||||
|
||||
## 8. Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
docs/plans/020-V0_2_13_INTERFACE_PLAN.md
|
||||
docs/validation/016-V0_2_13_INTERFACE.md
|
||||
```
|
||||
|
||||
## 9. Fichiers volontairement inchangés
|
||||
|
||||
```text
|
||||
README.md
|
||||
ROADMAP.md
|
||||
CHANGELOG.md
|
||||
.env.example
|
||||
docs/architecture/**
|
||||
docs/rules/**
|
||||
crates/ksp-core-lib/**
|
||||
crates/ksp-logging-lib/**
|
||||
crates/ksp-onchain-transport-lib/**
|
||||
crates/ksp-offchain-transport-lib/**
|
||||
crates/ksp-config-lib/**
|
||||
crates/ksp-wallet-lib/**
|
||||
crates/ksp-app-*/**
|
||||
prompts/**
|
||||
```
|
||||
|
||||
Aucune architecture durable n'est rouverte : le graphe `Interface -> Core`, avec Logging uniquement lorsqu'un runtime logging réel existe, est déjà documenté.
|
||||
|
||||
## 10. Validations de génération
|
||||
|
||||
Les audits Python sont rejoués sur l'arbre matérialisé avant livraison. Le sandbox de génération ne fournit pas `cargo`, `rustc` ou `rustfmt`; aucun PASS Cargo nouveau n'est donc revendiqué localement.
|
||||
|
||||
## 11. Gate opérateur attendu
|
||||
|
||||
Après application :
|
||||
|
||||
```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.2.13
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test -p ksp-interface-lib
|
||||
cargo test --workspace
|
||||
cargo tree -p ksp-interface-lib --edges normal
|
||||
cargo tree --duplicates
|
||||
```
|
||||
|
||||
Le `cargo tree -p ksp-interface-lib --edges normal` doit montrer Core comme unique dépendance KSP directe et ne doit pas révéler de codec/runtime ajouté par Interface.
|
||||
|
||||
Une correction découverte par ce gate reste un `0.2.13-pre.002-fix.NNN` et n'avance pas `pre.003`.
|
||||
|
||||
## 12. Suite
|
||||
|
||||
Après gate vert, `pre.003` pourra matérialiser uniquement :
|
||||
|
||||
```text
|
||||
ProgramAccountMeta
|
||||
constante de borne account metas
|
||||
modèle d'erreur Interface minimal nécessaire
|
||||
unit/public canaries correspondants
|
||||
```
|
||||
|
||||
`ProgramInstruction`, sa data bound et son Debug résumé restent réservés à `pre.004`.
|
||||
Reference in New Issue
Block a user