v0.2.14-pre.005
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/021-V0_2_14_PROGRAM_API_PLAN.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Plan `0.2.14` — Program API foundation
|
||||
|
||||
@@ -555,13 +555,15 @@ Aucun trait decoder, recognition, outcome, registry, codec, runtime logging ou e
|
||||
|
||||
### `pre.004` — `ProgramInstructionDecoder` + external implementation
|
||||
|
||||
**Statut : matérialisé ; gate opérateur à confirmer.**
|
||||
**Statut : réalisé ; gate opérateur intégralement PASS.**
|
||||
|
||||
Le trait `ProgramInstructionDecoder: Send + Sync` expose l'associated type `Decoded`, `program_ids`, `recognize` et `decode`. Un test d'intégration downstream-style l'implémente avec un type décodé tiers et un `Pubkey` explicitement absent du registry Core. L'implémentation ne requiert ni `ksp-program-lib`, ni enum centrale, ni `Any`, JSON ou codec.
|
||||
|
||||
### `pre.005` — Adversarial/API hardening + completeness
|
||||
|
||||
Verrouiller bounds/Debug/error safety, exact export inventory, absence de closed-world enum, absence de serde/codec/logging/runtime et scope négatif registry/preparer/payload canonique.
|
||||
**Statut : matérialisé ; gate opérateur à confirmer.**
|
||||
|
||||
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
|
||||
|
||||
@@ -649,6 +651,30 @@ Le canari externe utilise uniquement la façade `ksp_program_api::*` pour l'impl
|
||||
|
||||
`pre.005` reste une tranche de hardening/completeness : elle ne doit pas élargir le contrat fonctionnel.
|
||||
|
||||
## 13.4 État préparé après `pre.005`
|
||||
|
||||
Le gate opérateur `pre.004` fourni le 28 août 2026 est intégralement vert : audits Rust/Markdown, check, Clippy, tests ciblés, workspace complet, canari externe et graphes Cargo passent.
|
||||
|
||||
La tranche `pre.005` ajoute uniquement des preuves de fermeture :
|
||||
|
||||
```text
|
||||
exact crate-root exports 10 exports explicitement verrouillés
|
||||
production modules lib + decode vocabulary + decoder trait uniquement
|
||||
public enums Recognition + DecodeOutcome uniquement
|
||||
public traits ProgramInstructionDecoder uniquement
|
||||
closed-world Program enum absent
|
||||
registry / descriptors / preparer absents
|
||||
serde / JSON / Any / codecs absents
|
||||
logging / runtime / IO absents
|
||||
max Interface instruction consommable par référence
|
||||
malformed hostile payload Err Core sûr sans copie automatique du payload
|
||||
associated Decoded bounds aucun bound implicite ajouté
|
||||
dyn heterogeneous registry aucune promesse
|
||||
normal dependencies inchangées : Core + Interface
|
||||
```
|
||||
|
||||
`pre.006` reste un gate technique final sans développement fonctionnel.
|
||||
|
||||
## 14. Hors périmètre confirmé
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user