9.0 KiB
Delta 0.1.1-pre.001-fix.001
Base requise
Livraison précédente appliquée et commitée :
0.1.1-pre.001
La base stable initiale khadhroony-solana-project-v0.0.3.zip provient directement de Gitea depuis le tag v0.0.3. L'absence de .git dans cette archive n'impose donc aucune vérification supplémentaire du tag pour le cadrage de cette session.
Type de livraison
ksp-doc-0.1.1-pre.001-fix.001.zip
Objectif
Corriger le plan de 0.1.1-pre.001 après validation du brainstorming Program IDs, sans ouvrir pre.002 et sans modifier de code/runtime.
Ce correctif :
- confirme
solana-pubkeycomme dépendance Solana fondamentale candidate de Core ; - interdit
solana-sdk-idscomme dépendance KSP, y compris de développement ; - fait posséder à KSP ses chaînes Base58 et représentations
Pubkeyde Program IDs ; - fixe les préfixes
PRGID_etPRGIDPK_; - fixe la structure générale de nomenclature
<PREFIX>_<DOMAIN>_<SUBDOMAIN?>_<NAME>_<VERSION?>; - prévoit une macro KSP
declare_program_id!produisant les deux représentations depuis une déclaration unique ; - réintroduit et améliore le concept de registre descriptif enumerable inspiré de l'ancien
ks-program-ids; - supprime le nombre arbitrairement figé de 17 Program IDs avant l'inventaire final de
pre.003; - maintient la séparation stricte entre Program IDs et well-known accounts.
Version Cargo
Aucun fichier participant au code, build, runtime, à la configuration exécutable ou aux migrations n'est modifié.
Conformément à VER-ID-008, workspace.package.version reste donc :
0.1.1-pre.1
Le correctif possède néanmoins son identifiant de livraison/commit propre :
0.1.1-pre.001-fix.001
Fichiers ajoutés
deltas/0.1.1/pre.001-fix.001.md
Fichiers modifiés
docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md— version documentaire 1 -> 2.
Fichiers supprimés
Aucun.
Corrections et décisions incorporées
Provenance de la base stable
La réserve de pre.001 liée à l'absence de .git dans l'archive Gitea est retirée du plan actif.
Dans le workflow KSP fourni, une archive nommée khadhroony-solana-project-vX.Y.Z.zip est produite directement par Gitea depuis le tag correspondant. khadhroony-solana-project-v0.0.3.zip est donc acceptée comme base stable/taguée v0.0.3.
Le delta pre.001 déjà livré n'est pas réécrit ; ce correctif trace explicitement la correction.
Dépendances Solana/Anza
Direction acquise :
ksp-core-lib -> solana-pubkey
lorsque pre.003 implémentera réellement la surface Program IDs.
En revanche :
ksp-core-lib -X-> solana-sdk-ids
s'applique aux dépendances runtime et de développement.
solana-sdk-ids peut être consultée comme source officielle externe lors des audits, mais elle ne doit pas entrer dans le graphe Cargo KSP.
Ownership et représentations des Program IDs
KSP possède la valeur Base58 canonique de chaque Program ID retenu.
Chaque ID expose deux représentations publiques liées :
PRGID_<SUFFIXE> : &'static str
PRGIDPK_<SUFFIXE> : Pubkey
Le suffixe doit être strictement identique entre les deux formes.
La nomenclature générale est :
<PREFIX>_<DOMAIN>_<SUBDOMAIN?>_<NAME>_<VERSION?>
Exemples de convention :
PRGID_SOLANA_SYSTEM
PRGIDPK_SOLANA_SYSTEM
PRGID_SOLANA_LOADER_BPF_V2
PRGIDPK_SOLANA_LOADER_BPF_V2
PRGID_SOLANA_PRECOMPILE_ED25519
PRGIDPK_SOLANA_PRECOMPILE_ED25519
PRGID_SPL_MEMO_V3
PRGIDPK_SPL_MEMO_V3
L'exemple SPL Memo définit uniquement la convention future ; il n'ouvre pas SPL dans le périmètre fonctionnel de 0.1.1.
Macro de déclaration
Le plan prévoit une macro publique KSP initialement nommée :
declare_program_id!
Elle doit prendre une seule valeur Base58 canonique et produire les deux constantes PRGID_* et PRGIDPK_* correspondantes à la compilation.
La macro doit s'inspirer de la mécanique compile-time de solana_address::declare_id!/des primitives accessibles via la génération retenue de solana-pubkey, tout en conservant une API KSP adaptée à plusieurs Program IDs dans la même crate.
Elle ne doit notamment pas imposer des symboles génériques ID, id() ou check_id() qui entreraient en collision entre plusieurs déclarations.
Registre descriptif enumerable
Le rejet initial d'un ProgramIdEntry enumerable est annulé.
L'ancien ks-program-ids fournissait notamment :
ProgramIdEntry
entries()
registered_program_ids()
native_program_ids()
native_well_known_account_ids()
find_registered_program_id()
La surface KSP doit reprendre/améliorer les capacités utiles sans reprendre les redondances historiques.
Direction de pre.003 :
ProgramIdEntry
entries()
native_program_ids()
find_program_id()
Une recherche typée par Pubkey reste autorisée si son utilité est démontrée pendant l'implémentation.
registered_program_ids() n'est pas repris automatiquement s'il ne fait que dupliquer entries().
ProgramIdEntry doit pouvoir exposer au minimum un code KSP stable, les formes PRGID_*/PRGIDPK_* et une classification descriptive minimale permettant les sous-ensembles utiles sans dupliquer plusieurs registres.
Program IDs fondamentaux
La liste de pre.001 n'est plus figée à 17 entrées.
L'inventaire final sera confirmé dans pre.003 contre les sources officielles actuelles, en couvrant notamment :
- System, Stake, Vote, Config, Feature et Compute Budget ;
- Address Lookup Table ;
- loaders BPF historiques/actuels, Loader v4 et Native Loader ;
- précompiles Ed25519, Secp256k1 et Secp256r1 ;
- programmes ZK fondamentaux encore pertinents ;
- toute surface native/historique supplémentaire réellement justifiée.
L'ancien ks-program-ids reste un inventaire historique utile. Son entrée slashing doit par exemple être réévaluée selon son statut officiel actuel plutôt que retenue ou rejetée uniquement parce qu'elle figurait dans bot3.
Program IDs et well-known accounts
Les Program IDs exécutables et les well-known account IDs restent deux concepts distincts.
PRGID_* / PRGIDPK_* ne doivent jamais nommer un compte connu non exécutable.
Le concept historique native_well_known_account_ids() est conservé comme direction architecturale possible, mais 0.1.1 ne crée pas une API vide pour ce domaine si aucun well-known account n'est retenu dans sa surface réelle.
Impact sur les prereleases suivantes
pre.002 ne change pas :
Error / Result
pre.003 est précisé :
Pubkey
+ declare_program_id!
+ PRGID_* / PRGIDPK_*
+ inventaire final des Program IDs fondamentaux
+ ProgramIdEntry / entries() / native_program_ids() / find_program_id()
+ tests de conformité/unicité
Aucune dépendance solana-sdk-ids ne doit y être ajoutée.
Hors scope inchangé
Le correctif n'ouvre toujours pas :
- Logging ;
- Config ;
- Tauri ;
- Wallet/signing ;
- codecs wire ;
- Interface ;
- Program decoding/dispatch registry/
ProgramExecutionPreparer; - execution policy/orchestration ;
- Transport ;
- Store ;
- Materializer ;
- workers/jobs/pipelines ;
- scenarios ;
- trading/ML.
Validations exécutées
- relecture des règles
VERSION_WORKFLOW.mdetFILE_CONTRACTS.mdde la base stable ; - confirmation qu'un fix purement documentaire ne modifie pas la version Cargo ;
- réaudit ciblé de l'ancien
ks-program-idsfourni dans l'archive bot3 de référence :ProgramIdEntry,entries(),registered_program_ids(),native_program_ids(),native_well_known_account_ids()etfind_registered_program_id(); - relecture du plan
003-V0_1_1_CORE_FOUNDATION_PLAN.mdaprès correction ; - contrôle statique du header/version des fichiers livrés ;
- contrôle des fins de fichiers ;
- contrôle de la structure et du contenu de l'archive ;
- vérification de l'absence de fichier Cargo/code/runtime dans ce correctif.
Validations non exécutées
Aucune validation Cargo n'est déclarée pour ce correctif documentaire.
Les commandes suivantes ne sont pas nécessaires pour démontrer le contenu de ce delta, qui ne modifie aucun artefact compilé :
cargo fmt --all
cargo check --workspace
cargo test --workspace
cargo clippy --workspace --all-targets
Elles restent les validations attendues dès la prochaine tranche Rust applicable.
Questions ouvertes
Les décisions nécessaires pour quitter pre.001 sont considérées validées.
Les points d'implémentation suivants sont volontairement reportés à leur tranche propriétaire sans bloquer pre.002 :
- structure Rust exacte et classification minimale de
ProgramIdEntryenpre.003; - présence éventuelle d'une recherche dédiée par
Pubkey; - inventaire final des IDs natifs/historiques à partir des sources officielles actuelles ;
- détail d'expansion de
declare_program_id!selon l'API exacte de la versionsolana-pubkeyretenue.
Suite
Après validation/commit de ce correctif :
0.1.1-pre.002 — Error/Result et fondation API