v0.2.14-pre.004
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/021-V0_2_14_PROGRAM_API_PLAN.md -->
|
||||
<!-- version: 3 -->
|
||||
<!-- version: 4 -->
|
||||
|
||||
# Plan `0.2.14` — Program API foundation
|
||||
|
||||
@@ -549,13 +549,15 @@ Aucun trait decoder, recognition, outcome, registry, codec, runtime logging ou e
|
||||
|
||||
### `pre.003` — Recognition + outcome minimal
|
||||
|
||||
**Statut : matérialisé ; gate opérateur à confirmer.**
|
||||
**Statut : réalisé ; gate opérateur intégralement PASS.**
|
||||
|
||||
`ProgramInstructionRecognition` et `ProgramInstructionDecodeOutcome<Decoded>` sont ajoutés dans un module privé puis réexportés depuis le crate-root. Les deux enums sont `#[non_exhaustive]`. Le `Debug` de l'outcome est manuel, ne requiert pas `Decoded: Debug` et n'affiche jamais la valeur décodée. Aucun descriptor, registry ou trait decoder n'est avancé.
|
||||
|
||||
### `pre.004` — `ProgramInstructionDecoder` + external implementation
|
||||
|
||||
Introduire le trait `Send + Sync` avec associated output, `program_ids`, `recognize`, `decode`, puis prouver une implémentation depuis une crate externe avec Program Pubkey non enregistré.
|
||||
**Statut : matérialisé ; gate opérateur à confirmer.**
|
||||
|
||||
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
|
||||
|
||||
@@ -620,7 +622,32 @@ registry / canonical payload / preparer absents
|
||||
normal dependencies inchangées : Core + Interface
|
||||
```
|
||||
|
||||
Les tests unitaires vérifient notamment qu'un type décodé externe dépourvu de `Debug` peut être contenu et formaté via l'outcome sans exposer sa valeur. Le passage à `pre.004` reste conditionné au gate opérateur de cet overlay.
|
||||
Les tests unitaires vérifient notamment qu'un type décodé externe dépourvu de `Debug` peut être contenu et formaté via l'outcome sans exposer sa valeur. Le gate opérateur `pre.003` fourni le 28 août 2026 est intégralement vert et autorise `pre.004`.
|
||||
|
||||
## 13.3 État préparé après `pre.004`
|
||||
|
||||
La tranche matérialise exactement :
|
||||
|
||||
```text
|
||||
ProgramInstructionDecoder public depuis le crate-root
|
||||
supertraits Send + Sync
|
||||
associated output type Decoded possédé par l'implémentation
|
||||
program_ids &[Pubkey] opaque/open-world
|
||||
recognize &ProgramInstruction -> Recognition
|
||||
decode &ProgramInstruction -> Result<Outcome<Self::Decoded>>
|
||||
default methods aucun
|
||||
external implementation canary présent comme crate d'intégration séparée
|
||||
external decoded type défini hors code de production KSP
|
||||
external Program Pubkey explicitement absent du registry Core
|
||||
central Program enum / Any / JSON absents
|
||||
registry dyn / descriptor / D3 payload absents
|
||||
ProgramExecutionPreparer absent
|
||||
normal dependencies inchangées : Core + Interface
|
||||
```
|
||||
|
||||
Le canari externe utilise uniquement la façade `ksp_program_api::*` pour l'implémentation du trait ; l'accès direct à `ksp_core_lib::find_program_pubkey` est limité à l'assertion de test prouvant que le Program choisi n'est pas enregistré. Aucune API de registry n'est réexportée par Program API.
|
||||
|
||||
`pre.005` reste une tranche de hardening/completeness : elle ne doit pas élargir le contrat fonctionnel.
|
||||
|
||||
## 14. Hors périmètre confirmé
|
||||
|
||||
|
||||
Reference in New Issue
Block a user