Files
khadhroony-solana-project/deltas/0.0.3/pre.005.md
2026-08-14 11:42:19 +02:00

149 lines
4.4 KiB
Markdown

<!-- file: deltas/0.0.3/pre.005.md -->
<!-- version: 1 -->
# Delta 0.0.3-pre.005
## Base requise
`v0.0.3-pre.004`.
## Objectif
Détailler `ksp-execution-policy-api` et `ksp-execution-lib`, fixer la séparation entre préparation Program, décision policy, wallet, transport et orchestration transactionnelle, puis formaliser `ksp-logging-lib` comme façade logging/tracing commune du runtime KSP.
## Version Cargo
`workspace.package.version` passe de :
```text
0.0.3-pre.4
```
à :
```text
0.0.3-pre.5
```
Le header de `Cargo.toml` passe de version 10 à 11.
## Fichiers ajoutés
- `docs/architecture/007-EXECUTION_AND_POLICY.md`
- `deltas/0.0.3/pre.005.md`
## Fichiers modifiés
- `Cargo.toml`
- `docs/architecture/000-README.md`
- `docs/architecture/002-LAYERS_AND_DEPENDENCIES.md`
- `docs/architecture/003-COMPONENT_CONTRACTS.md`
- `docs/architecture/004-COMPONENT_INVENTORY.md`
- `docs/architecture/005-DEPENDENCY_GRAPH.md`
- `docs/rules/RULES_DEPENDENCIES.md`
- `docs/rules/RULES_KSP.md`
- `docs/IDEAS.md`
- `docs/plans/001-V0_0_3_PLAN.md`
- `prompts/001-V0_1_X_START_PROMPT.md`
## Fichiers supprimés
Aucun.
## Décisions principales
### Policy
- `ksp-execution-policy-api` est obligatoire explicitement pour toute exécution réelle via `ksp-execution-lib`.
- Aucun fallback permissif implicite n'est prévu.
- Une policy peut être consultée à plusieurs checkpoints lorsque des informations supplémentaires, notamment simulation, deviennent disponibles.
- Une policy décide/refuse/contraint et peut produire des requirements ; elle ne signe, ne simule, n'appelle le réseau ou l'UI elle-même.
- Une policy peut demander une approbation externe ; le cycle doit pouvoir être suspendu/repris sans dépendance vers Tauri/UI.
### Execution
`ksp-execution-lib` consomme fondamentalement `PreparedProgramExecution` et ne dépend pas de `ksp-program-lib`.
Il orchestre :
- policy checkpoints ;
- assemblage message/transaction ;
- simulation via transport ;
- signature via wallet ;
- submission ;
- confirmation ;
- retry de lifecycle ;
- suspension/reprise sur requirement externe.
Wallet/signers et provider/transport sont sélectionnés/fournis par la composition supérieure.
### Contraintes
Trois sources sont distinguées :
1. contraintes techniques Program, non négociables ;
2. options/contexte du caller ;
3. contraintes supplémentaires de policy.
### Retry
- retry technique d'un appel réseau identique -> transport ;
- retry qui nécessite reconstruction/resimulation/resignature/resubmission -> execution.
### Store
`ksp-execution-lib` ne dépend ni de `ksp-store-api` ni de `ksp-store-lib` et ne persiste pas automatiquement `ExecutionOutcome`.
### Logging
`ksp-logging-lib` est la façade commune de logging/tracing KSP.
Elle importe directement et possède l'initialisation/configuration de :
```text
tracing
tracing-appender
tracing-subscriber
```
Elle peut dépendre de `ksp-core-lib` pour `Error` / `Result`.
`ksp-core-lib` n'a pas de dépendance logging requise.
Les crates runtime KSP peuvent dépendre directement de `ksp-logging-lib` et utilisent sa façade pour :
```text
error
warn
info
debug
trace
```
avec target/domain/champs structurés selon l'API finale.
Les crates `*-api` purement déclaratives ne dépendent pas du logging par défaut.
Une intégration Tauri peut exceptionnellement avoir besoin d'un plugin/d'une dépendance tracing au niveau framework, sans créer une seconde policy logging parallèle.
La forme exacte de la façade (fonctions, macros ou combinaison) est reportée à l'implémentation de `ksp-logging-lib`.
## Idées reportées
- composition générique de plusieurs policies spécialisées ;
- mécanisme exact de reprise après approbation externe ;
- types Rust exacts des checkpoints/decisions/outcomes ;
- crates Solana précises pour message/transaction à sélectionner au moment de l'implémentation.
## Suite
`pre.006` peut maintenant traiter Data / Materializer / Store / Acquisition sans rouvrir les responsabilités Execution/Policy.
## Validations
- headers `file:` / `version:` vérifiés ;
- `Cargo.toml` parsé et version `0.0.3-pre.5` vérifiée ;
- présence de `007-EXECUTION_AND_POLICY.md` et de ses références vérifiée ;
- dépendances/interdictions Execution/Policy/Logging vérifiées dans le graphe et les règles ;
- aucune commande Cargo de build/test exécutée : ce delta reste documentaire et n'ajoute aucun code Rust fonctionnel.