v0.2.14-pre.006

This commit is contained in:
2026-08-28 15:53:15 +02:00
parent bebfc63b75
commit 4eba9be48c
4 changed files with 213 additions and 7 deletions

View File

@@ -1,12 +1,12 @@
# file: Cargo.toml
# version: 318
# version: 319
[workspace]
resolver = "3"
members = ["crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-wallet-lib"]
[workspace.package]
version = "0.2.14-pre.5.fix.1"
version = "0.2.14-pre.6"
edition = "2024"
license = "MIT"
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"

147
deltas/0.2.14/pre.006.md Normal file
View File

@@ -0,0 +1,147 @@
<!-- file: deltas/0.2.14/pre.006.md -->
<!-- version: 1 -->
# Delta `0.2.14-pre.006` — gate technique final Program API
## 1. Base requise
Cette tranche s'applique exclusivement après `0.2.14-pre.005-fix.001`.
Le gate opérateur du fix est intégralement vert :
```text
cargo fmt --all PASS
python3 scripts/audit_rust_workspace_rules.py PASS / clean
python3 scripts/audit_markdown_tables.py ... PASS / clean — 173 tables / 123 fichiers
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test -p ksp-program-api PASS — 18 tests Rust
cargo test -p ksp-logging-lib --test ownership PASS — 2/2
cargo test --workspace PASS
cargo tree -p ksp-program-api --edges normal Core + Interface uniquement
cargo tree --duplicates inspecté
```
Le faux positif logging de `pre.005` est donc fermé sans changement de production ni de dépendances.
## 2. Objectif
Préparer le gate technique final de `0.2.14` sans rouvrir la surface fonctionnelle.
Aucun nouveau type, trait, test métier, registry, codec, runtime ou comportement n'est ajouté. Les canaris existants couvrent déjà :
```text
ProgramInstructionRecognition
ProgramInstructionDecodeOutcome<Decoded>
ProgramInstructionDecoder: Send + Sync
associated Decoded sans bounds implicites
extension externe avec Pubkey non enregistré
NoMatch / ProgramMatch / ExactMatch
Decoded / Unsupported / Err Core
input Interface maximal 255 comptes / 10 240 bytes
Debug outcome opaque
façade crate-root exacte
inventaire de production exact
absence de ProgramKind / registry / preparer / payload D3
absence de serde / JSON / Any / codecs
absence de logging runtime / IO
firewall Core + Interface
```
## 3. Décision de tranche
`pre.006` reste un gate pur. Ajouter un nouveau test uniquement pour matérialiser le numéro de prerelease augmenterait la surface de changement sans renforcer une propriété non couverte.
La tranche modifie donc seulement la version workspace, le plan, la validation et le présent delta.
## 4. Version
La prerelease non-fix synchronise la version Cargo conformément à `VER-ID-009` :
```text
0.2.14-pre.5.fix.1
0.2.14-pre.6
```
Commit attendu après validation :
```text
v0.2.14-pre.006
```
Aucun tag prerelease.
## 5. Fichier ajouté
```text
deltas/0.2.14/pre.006.md
```
## 6. Fichiers modifiés
```text
Cargo.toml
docs/plans/021-V0_2_14_PROGRAM_API_PLAN.md
docs/validation/017-V0_2_14_PROGRAM_API.md
```
## 7. Fichiers supprimés
Aucun.
## 8. Surface explicitement inchangée
```text
crates/ksp-program-api/src/**
crates/ksp-program-api/tests/**
crates/ksp-program-api/unit_tests/**
crates/ksp-program-api/Cargo.toml
crates/ksp-program-api/README.md
crates/ksp-program-api/USAGE.md
CHANGELOG.md
ROADMAP.md
prompts/**
architectures / règles
```
La réconciliation README/USAGE et des documents durables reste réservée à `pre.007`. La préparation du prompt suivant, du CHANGELOG et du ROADMAP reste réservée à `pre.008`.
## 9. Validations exécutées à la génération
```text
python3 scripts/audit_rust_workspace_rules.py PASS / clean
python3 scripts/audit_markdown_tables.py ... PASS / clean — 174 tables / 124 fichiers
contrôle du diff PASS / 3 modifiés + 1 ajouté
```
Aucun `cargo` n'est disponible dans l'environnement de génération ; aucun PASS Cargo local n'est revendiqué.
## 10. Gate opérateur
```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.14
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-program-api
cargo test -p ksp-logging-lib --test ownership
cargo test --workspace
cargo tree -p ksp-program-api --edges normal
cargo tree --duplicates
```
## 11. Décisions prises
- le scope fonctionnel `0.2.14` est figé ;
- aucun nouveau contrat Program n'est introduit ;
- aucun registry, payload D3 ou `ProgramExecutionPreparer` n'est anticipé ;
- Program API reste déclarative et sans logging runtime ;
- Core + Interface restent les seules dépendances normales ;
- aucun smoke réseau n'est pertinent pour cette crate instruction-only sans I/O ;
- `pre.007` ne commence qu'après gate `pre.006` intégralement vert.
## 12. Questions ouvertes
Aucune question technique bloquante pour `0.2.14`. Après gate vert, la seule étape suivante est la réconciliation documentaire finale.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/021-V0_2_14_PROGRAM_API_PLAN.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# Plan `0.2.14` — Program API foundation
@@ -561,13 +561,15 @@ Le trait `ProgramInstructionDecoder: Send + Sync` expose l'associated type `Deco
### `pre.005` — Adversarial/API hardening + completeness
**Statut : matérialisé ; gate opérateur à confirmer.**
**Statut : réalisé ; `pre.005-fix.001` validé, gate opérateur intégralement PASS.**
Deux canaris de fermeture sont ajoutés : `release_completeness.rs` verrouille l'inventaire exact des exports/modules et l'absence de surface closed-world/runtime ; `security_hardening.rs` couvre input Interface maximal, erreur sûre sur payload hostile et associated output sans bound implicite. Aucun contrat fonctionnel n'est ajouté.
### `pre.006` — Gate technique final
Aucun développement fonctionnel. Audits Rust/Markdown, check, Clippy, `cargo test -p ksp-program-api`, workspace complet et graphes Cargo.
**Statut : matérialisé ; gate opérateur à confirmer.**
Aucun développement fonctionnel. Audits Rust/Markdown, check, Clippy, `cargo test -p ksp-program-api`, ownership Logging ciblé, workspace complet et graphes Cargo. Aucun README/USAGE final ni préparation de publication nest mélangé à cette tranche.
### `pre.007` — Réconciliation documentaire finale
@@ -675,6 +677,27 @@ normal dependencies inchangées : Core + Interface
`pre.006` reste un gate technique final sans développement fonctionnel.
## 13.5 Gate opérateur `pre.005-fix.001` et ouverture de `pre.006`
Le gate opérateur du 28 août 2026 ferme le correctif de `pre.005` :
```text
cargo fmt --all PASS
audit Rust général / exports / workspace PASS
audit Markdown PASS — 173 tables / 123 fichiers
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test -p ksp-program-api PASS — 18 tests Rust
cargo test -p ksp-logging-lib --test ownership PASS — 2 tests
cargo test --workspace PASS
cargo tree -p ksp-program-api --edges normal PASS — Core + Interface uniquement
cargo tree --duplicates exécuté, inventaire workspace observé
```
Le faux positif du canari logging est donc fermé sans changement de production ni de dépendances. Le scope fonctionnel `0.2.14` est figé avant `pre.006`.
La tranche `pre.006` ne matérialise aucun nouveau code ou test : elle synchronise seulement la version workspace, le plan, la validation et son delta afin de rejouer le gate technique final sur la surface candidate déjà durcie.
## 14. Hors périmètre confirmé
```text

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/017-V0_2_14_PROGRAM_API.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# Validation `0.2.14` — Program API foundation
@@ -266,5 +266,41 @@ Ce gate autorise l'ouverture de `pre.005`.
La sécurité des messages/contextes produits volontairement par une implémentation tierce reste sa responsabilité ; `ksp-program-api` garantit seulement qu'il n'ajoute aucun canal parallèle ni copie automatique du payload hostile.
Le gate opérateur de `pre.005` doit confirmer ces canaris avant le gate technique final `pre.006`.
Le gate opérateur de `pre.005` a révélé uniquement le faux positif cross-crate logging corrigé par `pre.005-fix.001`. Le gate du fix est désormais intégralement vert et autorise le gate technique final `pre.006`.
## 14. Gate opérateur `pre.005-fix.001`
Le gate fourni le 28 août 2026 est intégralement vert :
```text
cargo fmt --all PASS
audit Rust général / exports / workspace PASS
audit Markdown PASS — 173 tables / 123 fichiers
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test -p ksp-program-api PASS — 18 tests Rust
cargo test -p ksp-logging-lib --test ownership PASS — 2/2
cargo test --workspace PASS
cargo tree -p ksp-program-api --edges normal PASS — Core + Interface uniquement
cargo tree --duplicates inspecté
```
Le faux positif `tracing` du canari `release_completeness.rs` est fermé sans ajout de dépendance, sans modification de production et sans affaiblissement du scanner logging workspace.
## 15. Gate technique final préparé `pre.006`
`pre.006` ne modifie aucun fichier de production ni de test. Le gate final doit confirmer la candidate suivante sans élargissement :
| Critère | Attendu `pre.006` |
|--------------------------------------|-------------------------------------------|
| API Program | exactement la surface fermée en `pre.005` |
| tests `ksp-program-api` | 18 tests Rust PASS |
| ownership Logging | 2 tests PASS |
| workspace | PASS |
| graphe normal `ksp-program-api` | Core + Interface uniquement |
| registry / preparer / payload D3 | ABSENTS |
| serde / codec / logging runtime / IO | ABSENTS |
| README / USAGE | non réconciliés ici |
| CHANGELOG / ROADMAP / prompt suivant | non modifiés |
Aucun smoke réseau/live n'est requis : `ksp-program-api` reste une API déclarative instruction-only sans I/O.