v0.2.14-pre.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/000-README.md -->
|
||||
<!-- version: 29 -->
|
||||
<!-- version: 30 -->
|
||||
|
||||
# Validations KSP
|
||||
|
||||
@@ -25,3 +25,4 @@ Documents :
|
||||
- [`014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md`](014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md) — matrice historique clôturée de `0.2.11` : SOL/USD multi-provider, numeric safety, rate limiting/availability, Config capability-aware et smoke keyless final `7/7`.
|
||||
- [`015-V0_2_12_SOL_PRICES_DESK.md`](015-V0_2_12_SOL_PRICES_DESK.md) — matrice historique clôturée de `0.2.12` : screen/features, DTO/commands, Config/composite, frontières provider-neutral, sécurité, Wallet integration, packaging Tauri et gates live/build.
|
||||
- [`016-V0_2_13_INTERFACE.md`](016-V0_2_13_INTERFACE.md) — matrice candidate finale de `0.2.13` : ownership Interface/Core/Transport/Program, surface passive, bornes/adversarial, façade publique exacte, consumer externe, release completeness, dependency firewall et gate technique `pre.006` intégralement vert.
|
||||
- [`017-V0_2_14_PROGRAM_API.md`](017-V0_2_14_PROGRAM_API.md) — matrice active de `0.2.14 — Program API foundation`; elle suit le gate d’audit `pre.001`, l’open-world external implementation canary, le firewall Core/Interface et les gates techniques/documentaires futurs.
|
||||
|
||||
162
docs/validation/017-V0_2_14_PROGRAM_API.md
Normal file
162
docs/validation/017-V0_2_14_PROGRAM_API.md
Normal file
@@ -0,0 +1,162 @@
|
||||
<!-- file: docs/validation/017-V0_2_14_PROGRAM_API.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Validation `0.2.14` — Program API foundation
|
||||
|
||||
## 1. Objet
|
||||
|
||||
Cette matrice est ouverte par `0.2.14-pre.001`. Elle distingue les preuves déjà acquises par le gate d'audit des validations futures qui ne doivent pas être déclarées PASS avant exécution.
|
||||
|
||||
Le scope validé par `pre.001` est une foundation instruction-only avec output associé à l'implémentation. Registry runtime, payload canonique D3 et `ProgramExecutionPreparer` sont explicitement reportés.
|
||||
|
||||
## 2. Gate `pre.001`
|
||||
|
||||
| Critère | Statut | Preuve |
|
||||
|----------------------------|---------|--------------------------------------------------------------------------------|
|
||||
| base stable `0.2.13` | PASS | Cargo `0.2.13`, `rel.001` et prompt 019 présents |
|
||||
| metadata Git/tag | N/A | archive opérateur sans metadata Git exploitable |
|
||||
| `ksp-interface-lib` stable | PASS | surface et canaris `0.2.13` relus |
|
||||
| `ksp-program-api` absent | PASS | aucun répertoire de crate sur la base |
|
||||
| `ksp-program-lib` absent | PASS | aucun répertoire de crate sur la base |
|
||||
| archive kbot3 disponible | PASS | archive historique réellement extraite et auditée |
|
||||
| règles Program/API relues | PASS | règles KSP/Dependencies/Workflow prescrites relues |
|
||||
| architecture durable relue | PASS | `002` à `010`, avec `006-WIRE_AND_PROGRAM.md` central |
|
||||
| audit Core + Interface | PASS | input `ProgramInstruction` jugé suffisant pour instruction-only |
|
||||
| matrice héritage kbot3 | PASS | `REPRENDRE / REDESSINER / REPORTER / REJETER` dans le plan 021 |
|
||||
| ownership matrix | PASS | Core/Interface/Program/CORE/Execution séparés dans le plan 021 |
|
||||
| API candidate | PASS | recognition + generic outcome + associated-output decoder |
|
||||
| payload canonique | REPORTÉ | aucune représentation D3 inventée en `0.2.14` |
|
||||
| registry runtime | REPORTÉ | aucune composition dyn hétérogène dans la release |
|
||||
| execution preparer | REPORTÉ | attend un intent technique réel de vertical slice |
|
||||
| dependency graph | PASS | cible Core + Interface uniquement |
|
||||
| threat/API model | PASS | payload, Debug, open-world, externe hostile, exactness et scope creep couverts |
|
||||
| stratégie de tests | PASS | unit/public/external/firewall/completeness, aucun live smoke |
|
||||
| sizing | PASS | release réduite à decoder instruction-only et couloirs de fermeture séparés |
|
||||
|
||||
## 3. Décisions API à prouver par le code
|
||||
|
||||
| Contrat | Décision `pre.001` | Gate futur |
|
||||
|--------------------------------------------|---------------------------------------------------------|--------------------------------|
|
||||
| `ProgramInstructionRecognition` | `NoMatch / ProgramMatch / ExactMatch`, non exhaustif | `pre.003` |
|
||||
| `ProgramInstructionDecodeOutcome<Decoded>` | `Decoded(Decoded) / Unsupported`, non exhaustif | `pre.003` |
|
||||
| decoder failure | `ksp_core_lib::Result`, aucun statut `Failed` parallèle | `pre.003` / `pre.004` |
|
||||
| `ProgramInstructionDecoder` | `Send + Sync`, associated `Decoded` | `pre.004` |
|
||||
| input | `&ProgramInstruction` | `pre.004` |
|
||||
| Program IDs déclarés | `&[Pubkey]`, opaque et open-world | `pre.004` |
|
||||
| output | type concret de l'implémentation | `pre.004` |
|
||||
| registry dyn | absent | completeness `pre.005` |
|
||||
| identity/version/coverage | absents | completeness `pre.005` |
|
||||
| Program Account/Event/ReturnData decoder | absents | completeness `pre.005` |
|
||||
| ProgramExecutionPreparer | absent | completeness `pre.005` |
|
||||
| serde/JSON/codec | absents | firewall `pre.002` / `pre.005` |
|
||||
| runtime/logging | absents | firewall `pre.002` / `pre.005` |
|
||||
|
||||
## 4. External implementation canary
|
||||
|
||||
La preuve finale doit utiliser une crate consommatrice séparée et vérifier :
|
||||
|
||||
```text
|
||||
implementation de ProgramInstructionDecoder
|
||||
associated output défini hors KSP
|
||||
Program Pubkey absent du registry Core
|
||||
construction de ProgramInstruction via la facade publique retenue
|
||||
recognition ProgramMatch ou ExactMatch déterministe
|
||||
decode vers Decoded(external value)
|
||||
aucun ksp-program-lib
|
||||
aucun module privé
|
||||
```
|
||||
|
||||
Ce canari remplace toute affirmation documentaire non exécutable d'extensibilité.
|
||||
|
||||
## 5. Dependency firewall cible
|
||||
|
||||
Graphe normal attendu :
|
||||
|
||||
```text
|
||||
ksp-program-api
|
||||
├── ksp-core-lib
|
||||
│ └── solana-pubkey
|
||||
└── ksp-interface-lib
|
||||
└── ksp-core-lib
|
||||
```
|
||||
|
||||
Interdits :
|
||||
|
||||
```text
|
||||
Transport
|
||||
Store
|
||||
Wallet
|
||||
Materializer
|
||||
Config
|
||||
Tauri
|
||||
ksp-program-lib
|
||||
ksp-logging-lib
|
||||
serde / serde_json
|
||||
borsh / wincode / bincode
|
||||
solana-instruction
|
||||
reqwest / tokio / tonic
|
||||
tracing
|
||||
```
|
||||
|
||||
## 6. Threat/API gates futurs
|
||||
|
||||
| Gate | Attendu | Statut initial |
|
||||
|---------------------------|--------------------------------------------------------------------------|----------------|
|
||||
| unknown Program Pubkey | utilisable sans registry Core | PENDING |
|
||||
| max Interface input | decoder consomme l'input déjà borné sans nouvelle allocation obligatoire | PENDING |
|
||||
| malformed program payload | `Err` ou `Unsupported` selon contrat, sans payload dans l'erreur | PENDING |
|
||||
| Debug recognition | aucun payload | PENDING |
|
||||
| Debug outcome | contenu `Decoded` non rendu automatiquement | PENDING |
|
||||
| default methods | aucun default method susceptible de masquer panic/policy | PENDING |
|
||||
| closed-world enum | aucun inventaire central de Program kinds | PENDING |
|
||||
| serde accidental | aucune dependency/derive | PENDING |
|
||||
| runtime creep | aucun réseau, wallet, store, logging ou UI | PENDING |
|
||||
| external output | type tiers accepté sans `Any`/JSON central | PENDING |
|
||||
| dyn claim | aucune assertion d'object-safety hétérogène dans cette release | PENDING |
|
||||
|
||||
## 7. Gates de fermeture
|
||||
|
||||
### Gate technique final
|
||||
|
||||
À exécuter dans la prerelease dédiée :
|
||||
|
||||
```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 --workspace
|
||||
cargo tree -p ksp-program-api --edges normal
|
||||
cargo tree --duplicates
|
||||
```
|
||||
|
||||
### Réconciliation documentaire
|
||||
|
||||
Doit fermer :
|
||||
|
||||
```text
|
||||
ksp-program-api README/USAGE
|
||||
plan 021
|
||||
validation 017
|
||||
indexes/références durables concernées
|
||||
```
|
||||
|
||||
Sans `CHANGELOG.md`, `ROADMAP.md` ni prompt suivant.
|
||||
|
||||
### Préparation de publication
|
||||
|
||||
Doit rester limitée à :
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
CHANGELOG.md
|
||||
ROADMAP.md
|
||||
prompt de démarrage 0.3.1
|
||||
delta de la prerelease
|
||||
```
|
||||
|
||||
## 8. Statut courant
|
||||
|
||||
`0.2.14-pre.001` ne matérialise aucune crate Program et n'exécute aucun decoder. Le gate de design est considéré cohérent lorsque les validations statiques de l'overlay passent; toutes les preuves fonctionnelles restent `PENDING` jusqu'aux tranches correspondantes.
|
||||
Reference in New Issue
Block a user