v0.1.1-pre.005
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/000-README.md -->
|
||||
<!-- version: 8 -->
|
||||
<!-- version: 9 -->
|
||||
|
||||
# Documentation KSP
|
||||
|
||||
@@ -34,7 +34,8 @@ docs/
|
||||
├── plans/
|
||||
│ ├── 000-README.md
|
||||
│ ├── 001-V0_0_3_PLAN.md
|
||||
│ └── 002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
│ ├── 002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
│ └── 003-V0_1_1_CORE_FOUNDATION_PLAN.md
|
||||
└── rules/
|
||||
├── FILE_CONTRACTS.md
|
||||
├── PROMPT_STRUCTURE.md
|
||||
@@ -51,7 +52,7 @@ D'autres sous-répertoires seront ajoutés uniquement lorsque leur rôle aura é
|
||||
|
||||
## Documents de planification
|
||||
|
||||
Le plan historique de la phase fondatrice clôturée est conservé dans [`plans/001-V0_0_3_PLAN.md`](plans/001-V0_0_3_PLAN.md). La séquence active des premières releases fonctionnelles est définie dans [`plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md`](plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md).
|
||||
Le plan historique de la phase fondatrice clôturée est conservé dans [`plans/001-V0_0_3_PLAN.md`](plans/001-V0_0_3_PLAN.md). La séquence active des premières releases fonctionnelles est définie dans [`plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md`](plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md). Le plan détaillé de la première release fonctionnelle est conservé dans [`plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md`](plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md).
|
||||
|
||||
`IDEAS.md` conserve les pistes et questions qui ne sont pas encore des engagements du roadmap ni des décisions architecturales.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/000-README.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Plans KSP
|
||||
|
||||
@@ -10,8 +10,8 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou
|
||||
## Plans de référence
|
||||
|
||||
- [`001-V0_0_3_PLAN.md`](001-V0_0_3_PLAN.md) — plan historique de la phase fondatrice `0.0.3`, clôturée ;
|
||||
- [`002-FUNCTIONAL_RELEASE_SEQUENCE.md`](002-FUNCTIONAL_RELEASE_SEQUENCE.md) — séquence active de référence des premières releases fonctionnelles, dont `0.1.1`.
|
||||
- [`003-V0_1_1_CORE_FOUNDATION_PLAN.md`](003-V0_1_1_CORE_FOUNDATION_PLAN.md) — plan actif détaillé de `0.1.1`, établi par `0.1.1-pre.001`.
|
||||
- [`002-FUNCTIONAL_RELEASE_SEQUENCE.md`](002-FUNCTIONAL_RELEASE_SEQUENCE.md) — séquence active de référence des premières releases fonctionnelles ;
|
||||
- [`003-V0_1_1_CORE_FOUNDATION_PLAN.md`](003-V0_1_1_CORE_FOUNDATION_PLAN.md) — plan détaillé de `0.1.1`, établi par `0.1.1-pre.001` et consolidé jusqu'à sa tranche de clôture.
|
||||
|
||||
Le `pre.001` de chaque release fonctionnelle peut introduire son propre plan détaillé lorsque la release s'ouvre.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Séquence des releases fonctionnelles KSP
|
||||
|
||||
@@ -48,27 +48,24 @@ Stabiliser `ksp-core-lib` comme fondation N1 minimale et durable.
|
||||
|
||||
Le Core possède uniquement les contrats réellement transversaux nécessaires aux couches supérieures.
|
||||
|
||||
### Périmètre initial
|
||||
### Surface stabilisée
|
||||
|
||||
À auditer précisément dans `0.1.1-pre.001`, avec comme candidats acquis :
|
||||
`0.1.1` stabilise :
|
||||
|
||||
- type public commun `ksp_core_lib::Error` ;
|
||||
- alias public commun `Result<T>` ou forme équivalente validée ;
|
||||
- architecture d'erreur permettant aux domaines supérieurs d'ajouter du contexte sans faire connaître tous les futurs domaines à Core ;
|
||||
- Program IDs fondamentaux appartenant à KSP Core ;
|
||||
- primitives/identités réellement communes et déjà justifiées ;
|
||||
- conventions de version/provenance N1 uniquement si un besoin concret existe ;
|
||||
- exports crate-root et documentation publique ;
|
||||
- tests unitaires/integration appropriés ;
|
||||
- respect complet des règles Rust/workspace.
|
||||
- `ksp_core_lib::ErrorCode`, `ErrorContext`, `Error` et `Result<T>` comme contrat d'erreur ouvert aux domaines supérieurs ;
|
||||
- `ksp_core_lib::Pubkey` comme primitive Solana réexportée par Core ;
|
||||
- 18 Program IDs fondamentaux possédés par KSP avec paires `PRGID_*` / `PRGIDPK_*` ;
|
||||
- `declare_program_id!` pour construire la représentation texte et `Pubkey` depuis une déclaration canonique unique ;
|
||||
- `ProgramIdEntry`, `ProgramIdFilter`, `ProgramIdKind` et le registre enumerable/recherchable ;
|
||||
- des vues par domaine/famille/protocole et `native_program_ids()` sans registres secondaires ;
|
||||
- une taxonomie extensible séparant notamment `subfamily` et `program_version` ;
|
||||
- les réexports crate-root, rustdocs et tests publics correspondants.
|
||||
|
||||
### Dépendances
|
||||
|
||||
Core ne dépend pas de `ksp-logging-lib`, Config, Wallet, Store, Transport, Program ou Materializer.
|
||||
|
||||
Une primitive Solana/Anza officiellement stable peut être ajoutée seulement lorsqu'un item Core concret en a besoin.
|
||||
|
||||
`solana-pubkey` est un candidat naturel pour les Program IDs ; les autres primitives autorisées ne sont pas ajoutées par anticipation.
|
||||
La seule dépendance externe directe de `ksp-core-lib` à la clôture est `solana-pubkey`, déclarée au workspace avec la génération `^4.3`, `default-features = false`, puis héritée par la crate avec `.workspace = true`. Aucune feature optionnelle supplémentaire n'est activée dans `0.1.1`.
|
||||
|
||||
### Hors scope
|
||||
|
||||
@@ -87,20 +84,20 @@ Une primitive Solana/Anza officiellement stable peut être ajoutée seulement lo
|
||||
|
||||
### Lifecycle de la release
|
||||
|
||||
Le nombre de prereleases n'est pas figé avant `pre.001`.
|
||||
|
||||
Trajectoire candidate :
|
||||
Trajectoire réellement suivie :
|
||||
|
||||
```text
|
||||
pre.001 brainstorming + audit + plan détaillé
|
||||
pre.002 Error/Result + fondation API
|
||||
pre.003 primitives/Program IDs réellement retenus
|
||||
pre.004 compléments/tests/audits
|
||||
pre.005 validation finale/docs/cleanup/prompt 0.1.2
|
||||
pre.001 brainstorming + audit + plan détaillé
|
||||
pre.001-fix.001/.002 corrections de cadrage Program IDs/taxonomie
|
||||
pre.002 Error/Result + fondation API
|
||||
pre.002-fix.001 corrections de tests/lints
|
||||
pre.003 Pubkey + Program IDs
|
||||
pre.003-fix.001 politique Cargo workspace + corrections Clippy
|
||||
pre.004 intégration Core + audits
|
||||
pre.005 validation finale/docs/cleanup/prompt 0.1.2
|
||||
rel.001 publication stable après validation de pre.005
|
||||
```
|
||||
|
||||
Cette séquence est indicative. `pre.001` peut la modifier.
|
||||
|
||||
## `0.1.2` — Logging foundation
|
||||
|
||||
### Dépendances
|
||||
@@ -325,7 +322,7 @@ Les directions restent celles du roadmap :
|
||||
|
||||
Ces séries sont des objectifs fonctionnels, pas un calendrier contractuel.
|
||||
|
||||
# Sélection de la première release
|
||||
# Progression de la série `0.1.x`
|
||||
|
||||
La première release fonctionnelle est :
|
||||
|
||||
@@ -333,10 +330,15 @@ La première release fonctionnelle est :
|
||||
0.1.1 — Core foundation
|
||||
```
|
||||
|
||||
Le prompt de démarrage associé est :
|
||||
Son prompt historique d'ouverture reste :
|
||||
|
||||
```text
|
||||
prompts/001-V0_1_1_START_PROMPT.md
|
||||
```
|
||||
|
||||
`0.0.3` est désormais la base fondatrice stable. La prochaine phase ouvre `0.1.1-pre.001` à partir du prompt final `prompts/001-V0_1_1_START_PROMPT.md`.
|
||||
À la clôture de `0.1.1-pre.005`, la surface Core est prête pour validation puis publication stable via `0.1.1-rel.001`. Après le tag `v0.1.1`, la release suivante s'ouvre avec :
|
||||
|
||||
```text
|
||||
0.1.2 — Logging foundation
|
||||
prompts/002-V0_1_2_START_PROMPT.md
|
||||
```
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<!-- file: docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md -->
|
||||
<!-- version: 8 -->
|
||||
<!-- version: 9 -->
|
||||
|
||||
# Plan KSP 0.1.1 — Core foundation
|
||||
|
||||
## Statut
|
||||
|
||||
Plan de travail de `0.1.1`, établi par `0.1.1-pre.001`.
|
||||
Plan de travail de `0.1.1`, établi par `0.1.1-pre.001` puis consolidé jusqu'à la tranche de clôture `0.1.1-pre.005`.
|
||||
|
||||
Cette première prerelease reste une tranche de brainstorming, audit et planification. Elle ne développe pas encore la surface fonctionnelle Core.
|
||||
La surface fonctionnelle Core prévue par ce plan est désormais implémentée et validée jusqu'à `pre.004`. `pre.005` finalise la documentation, le prompt `0.1.2` et la préparation de publication ; la version stable `0.1.1` reste à publier par un delta `rel.001` après validation de cette dernière prerelease.
|
||||
|
||||
## Base auditée
|
||||
|
||||
@@ -185,6 +185,10 @@ Décision pour `0.1.1` :
|
||||
- n'activer ni Borsh, ni Wincode, ni Serde, ni Rand, ni feature cryptographique par anticipation ;
|
||||
- réexporter le type `Pubkey` depuis `ksp_core_lib` afin que son utilisation fasse partie intentionnellement du contrat Core.
|
||||
|
||||
L'audit final `pre.005` confirme qu'aucune feature optionnelle de `solana-pubkey` ne doit être activée dans `0.1.1`. La surface Core actuelle utilise uniquement l'identité `Pubkey`, la construction compile-time des Program IDs et les opérations déjà disponibles avec la dépendance retenue. Les features `alloc`, `borsh`, `bytemuck`, `curve25519`, `rand`, `serde`, `sha2`, `std` et `wincode` restent need-driven et seront activées uniquement dans la crate propriétaire lorsqu'un contrat réel l'exigera.
|
||||
|
||||
Le `cargo tree -p ksp-core-lib -e features` exécuté par le user montre des features de `solana-address` telles que `copy`, `decode`, `error`, `sanitize`, `syscalls` et `default`. Elles proviennent de la composition interne résolue de `solana-pubkey`/`solana-address` et ne justifient pas d'activer une feature optionnelle KSP supplémentaire sur `solana-pubkey`.
|
||||
|
||||
Depuis `pre.003-fix.001`, la règle générale KSP impose la centralisation des dépendances externes sous `[workspace.dependencies]` et l'héritage `.workspace = true` dans les crates membres. La résolution Cargo observée pour la contrainte `^4.3` reste `solana-pubkey 4.3.0` au moment de cette tranche.
|
||||
|
||||
### `solana-address`
|
||||
@@ -628,23 +632,30 @@ Résultat de l'audit d'intégration :
|
||||
- aucune primitive N1 supplémentaire n'est démontrée nécessaire ;
|
||||
- les modules d'implémentation restent privés et les contrats consommables sont réexportés explicitement au crate-root ;
|
||||
- le test d'intégration public vérifie aussi qu'un consommateur peut déclarer un `const ErrorCode`, usage requis par les futures crates propriétaires de domaines ;
|
||||
- la rustdoc crate-level est complétée pour expliciter la frontière Core ;
|
||||
- les validations de `pre.003-fix.001` communiquées par le user confirment 14 tests unitaires, 3 tests d'intégration, un `cargo tree` limité à `solana-pubkey` et ses dépendances fondamentales, et aucun doublon avec `cargo tree -d`.
|
||||
- la rustdoc crate-level est complétée pour expliciter la frontière Core.
|
||||
|
||||
La tranche ne change ni le contrat Error, ni la taxonomie, ni l'inventaire des 18 Program IDs. Le contrôle résolu des features reste à confirmer sur le dépôt cible avec `cargo tree -p ksp-core-lib -e features` en complément des validations Cargo usuelles.
|
||||
Validations `pre.004` exécutées avec succès par le user le 2026-08-14 :
|
||||
|
||||
- `cargo fmt --all` ;
|
||||
- `cargo check --workspace` ;
|
||||
- `cargo test --workspace` : 14 tests unitaires et 3 tests d'intégration publics réussis ;
|
||||
- `cargo clippy --workspace --all-targets` : succès sans warning communiqué ;
|
||||
- `cargo tree -p ksp-core-lib` : dépendance directe unique `solana-pubkey 4.3.0`, résolvant `solana-address 2.7.0` ;
|
||||
- `cargo tree -p ksp-core-lib -d` : aucun doublon ;
|
||||
- `cargo tree -p ksp-core-lib -e features` : graphe des features inspecté, sans besoin d'activer une feature optionnelle `solana-pubkey` supplémentaire pour le contrat Core actuel.
|
||||
|
||||
La tranche ne change ni le contrat Error, ni la taxonomie, ni l'inventaire des 18 Program IDs.
|
||||
|
||||
### `0.1.1-pre.005` — clôture
|
||||
|
||||
Objectifs :
|
||||
Résultat de clôture préparé :
|
||||
|
||||
- validations finales workspace ;
|
||||
- audits documentaires applicables ;
|
||||
- correction des écarts résiduels ;
|
||||
- documentation finale et éventuel `USAGE.md` de Core si l'API justifie alors un exemple durable ;
|
||||
- nettoyage/archivage des éléments temporaires ;
|
||||
- mise à jour du changelog général s'il existe alors ;
|
||||
- production du prompt final de démarrage `0.1.2` ;
|
||||
- préparation de la publication stable et du tag `v0.1.1`.
|
||||
- aucune nouvelle primitive Core et aucune nouvelle feature `solana-pubkey` ne sont ajoutées ;
|
||||
- les documents de référence de `0.1.1` sont réalignés avec la surface effectivement livrée ;
|
||||
- aucun `README.md`/`USAGE.md` spécifique à la crate n'est ajouté : la rustdoc crate-level et les tests publics couvrent suffisamment la petite surface actuelle ;
|
||||
- aucun changelog général n'existe dans la base actuelle, donc aucun fichier de changelog artificiel n'est créé uniquement pour cette release ;
|
||||
- le prompt final `prompts/002-V0_1_2_START_PROMPT.md` est créé pour ouvrir Logging après publication stable de `0.1.1` ;
|
||||
- la publication stable reste volontairement séparée dans un futur delta `0.1.1-rel.001`, conformément au workflow de versionnement.
|
||||
|
||||
Un `pre.NNN-fix.NNN` corrige la tranche correspondante sans réécrire son historique.
|
||||
|
||||
@@ -669,6 +680,4 @@ Un `pre.NNN-fix.NNN` corrige la tranche correspondante sans réécrire son histo
|
||||
|
||||
## Questions ouvertes non bloquantes
|
||||
|
||||
- Décider en `pre.005`, à partir de l'API réellement stabilisée, si un `README.md`/`USAGE.md` de crate apporte suffisamment de valeur pour être créé maintenant.
|
||||
|
||||
Aucune de ces questions ne justifie d'élargir le périmètre fonctionnel de `0.1.1`.
|
||||
Aucune question ouverte ne bloque la publication de `0.1.1`. Les capacités volontairement différées restent soumises à la règle need-driven des releases futures plutôt qu'à des placeholders Core.
|
||||
|
||||
Reference in New Issue
Block a user