28 KiB
Changelog KSP
0.2.12 — SOL Prices Desk + projection prix Wallet — 2026-08-27
0.2.12 ajoute ksp-app-solprices-desk, troisième Desk Tauri spécialisé de KSP, comme HID strictement provider-neutral au-dessus de ksp-offchain-transport-lib. Son composite dédié sélectionne std.logging et std.offchain_transport; la vue Prices expose l’inventaire des huit providers SOL/USD, disponibilité, sémantique, auth, prix exact sous forme de chaîne, timestamps provider/KSP distincts et retry deadline sans inventer de fraîcheur. Les refresh manuel individuel, sélectionné et global passent exclusivement par MarketPriceService; les batchs sont bornés à 1..=64, les états in_flight restent backend-owned et aucun polling, scheduler, fallback, moyenne ou prix canonique n’est introduit dans le Desk. Le frontend conserve l’absence de réseau/persistence navigateur et journalise les interactions sans prix, credential, URL, header ou payload provider.
La même release étend ksp-app-wallet-desk de façon volontairement minimale. Le refresh de balance lance getBalance et le refresh SOL/USD générique, puis calcule côté Rust une moyenne arithmétique uniquement à partir des observations réussies du refresh courant et l’équivalent USD exact du solde, sans f64/f32. Le prix reste auxiliaire : une indisponibilité Off-chain n’invalide jamais une balance Solana réussie et produit simplement N.A.. Le Wallet ne connaît aucun provider concret, n’expose aucune commande Market Price dédiée au frontend et n’ajoute aucune valorisation persistée ou logique de consensus.
Le hardening final ajoute une garde IPC hostile avant parsing pour les sélections de plus de 64 providers, un smoke live de composition SOL Prices composite -> Config -> MarketPriceService -> refresh_all, les canaris de frontières et les builds Tauri Linux. pre.009-fix.001 corrige en outre la politique de version desktop : la version KSP/bundle est Cargo-owned, tauri.conf.json omet désormais version et les package.json privés ne sont plus forcés à suivre chaque bump workspace. Le gate opérateur passe audits Rust/Markdown, cargo check, Clippy, tests ciblés, cargo test --workspace, smoke live, puis builds .deb/.rpm/.AppImage pour SOL Prices, Wallet et Config Desk.
La clôture documentaire réconcilie README/USAGE, architectures, plan et validation, puis prépare prompts/018-V0_2_13_START_PROMPT.md. Ce prompt ouvre 0.2.13 — Interface foundation exclusivement depuis le tag stable v0.2.12. Une reconnaissance préalable de l’archive historique khadhroony-bot3 fournit des idées de contrats wire et d’extension, mais 0.2.13-pre.001 doit les réauditer contre l’architecture KSP actuelle avant toute implémentation : ksp-interface-lib porte les données/wires publics, ksp-program-api reste réservé au comportement extensible de 0.2.14, et les implémentations officielles ksp-program-lib arrivent plus tard.
0.2.11 — Off-chain price transport — 2026-08-26
0.2.11 crée ksp-offchain-transport-lib avec une première surface volontairement bornée à SOL/USD et huit adapters REST V1 : CoinGecko, CoinMarketCap, CoinPaprika, Kraken, Coinbase Exchange, Jupiter Price V3, Birdeye et DexScreener. Les adapters utilisent reqwest directement, sans SDK provider, avec origines HTTPS possédées par la crate, DTOs wire privés et prix normalisés par MarketPriceDecimal sans passage canonique par f64. MarketPriceObservation conserve paire, sémantique, provenance et timestamps réellement disponibles afin de ne pas confondre prix agrégé, dernier trade d'exchange, heuristique Solana, spot provider et prix DEX pair. DexScreener exige une paire Solana explicite et ne réalise aucune discovery ou sélection automatique de pool.
La crate possède désormais le registry provider-neutral, les descriptors/capabilities, les limites et quotas informatifs, les états MarketPriceProviderAvailability, le cooldown et le service générique MarketPriceService. Les consumers disposent de registry, refresh, refresh_many et refresh_all; le batch V1 reste séquentiel et déterministe, ne dort jamais pour attendre un rate limit et n'introduit ni fallback, ni consensus, ni moyenne KSP. Les erreurs provider sont normalisées en états génériques et les credentials/endpoints/raw bodies restent absents des projections et diagnostics publics.
Config ajoute std.offchain_transport V1, son schema, les profils public_keyless et all_free, ainsi que ResolvedOffchainTransportConfig qui construit le service sans dépendance inverse. Les credentials CoinGecko/CoinMarketCap/Jupiter/Birdeye restent sous KSP_SECRET_*; la paire DexScreener utilise une provenance KSP_PUBLIC_*. Les deux applications desktop existantes embarquent les nouvelles resources Config sans encore consommer fonctionnellement le prix. Les canaris de sécurité verrouillent notamment l'absence d'URL/rate-limit provider configurable au-dessus de Config, de lecture directe d'environnement dans Off-chain Transport et de fuite de clés par Debug.
Le gate technique final a passé les audits Rust/Markdown, cargo check, Clippy, les tests ciblés Config/Off-chain, le workspace complet et les graphes Cargo. Le premier smoke live keyless a isolé une erreur de query CoinMarketCap (ids=5426 au lieu de id=5426); pre.011-fix.001 la corrige pour les modes Keyless et Basic, puis le re-smoke passe 7/7 providers keyless. Le smoke keyed Birdeye/CoinGecko Demo/CoinMarketCap Basic/Jupiter Free reste explicitement SKIP opérateur. prompts/017-V0_2_12_START_PROMPT.md ouvre ensuite 0.2.12 — SOL Prices Desk + intégration prix Wallet Desk uniquement depuis le tag stable v0.2.11, avec audit/sizing desktop strict avant toute implémentation UI lourde.
0.2.10 — OrbitFlare Yellowstone gRPC — 2026-08-25
0.2.10 ajoute OrbitFlare comme provider Yellowstone gRPC sur le moteur N1 et le standard N2 acquis dans 0.2.9, sans modifier le moteur gRPC ni créer de façade provider inutile. L'audit et le smoke live ont établi le contrat réel du service Solana Free Devnet : endpoint http://devnet.rpc.orbitflare.com:10000, authentification par metadata gRPC secrète x-token portant la License Key OrbitFlare, et émission du Ping Yellowstone standard. Config Transport V3 représente ce provider avec provider = orbitflare, cluster = devnet, protocol = solana_yellowstone et secret_metadata, tandis que .env.example inventorie KSP_SECRET_ORBITFLARE_DEVNET_GRPC_X_TOKEN sans valeur réelle.
La première tentative live sans metadata a volontairement échoué avec Unauthenticated, ce qui a conduit à pre.002-fix.001 après audit des sources OrbitFlare actuelles. Le smoke corrigé reçoit la License Key uniquement par stdin opérateur, ouvre Subscribe, observe un Slot non nul et un SubscribeUpdate::Ping, puis ferme la session proprement. Le même smoke est repassé au gate technique final pre.003. La clôture conserve donc N1/N2 inchangés, n'ajoute ni heartbeat OrbitFlare, ni SDK provider, ni Config V4, et confirme que la réponse automatique au Ping standard existante suffit.
Le gate final conserve l'ensemble du workspace vert : audits Rust/Markdown, cargo check, Clippy, tests Config et Transport, cargo test --workspace, canaris de dépendances et graphes Cargo. Helius LaserStream gRPC, audité comme largement wire-compatible Yellowstone mais non raisonnablement live-testable sans abonnement payant, est reporté dans les TODO provider sans numéro de release. La séquence active passe donc à 0.2.11 — off-chain price transport; prompts/016-V0_2_11_START_PROMPT.md l'ouvre exclusivement depuis le tag stable v0.2.10 avec audit actuel des sources de prix, de leurs sémantiques et de leur testabilité avant toute implémentation lourde.
Ce changelog résume uniquement les releases KSP considérées comme stables, dans l'ordre chronologique décroissant. Les détails de chaque livraison restent dans deltas/.
0.2.9 — Yellowstone gRPC standard/provider-neutral — 2026-08-24
0.2.9 ajoute à ksp-onchain-transport-lib un moteur Yellowstone gRPC partagé construit directement sur Tonic/Protobuf, avec yellowstone-grpc-proto comme contrat wire upstream et sans yellowstone-grpc-client dans le runtime KSP. La surface Solana standard reste provider-neutral et couvre les sept unary retenues (SubscribeReplayInfo, Ping, GetLatestBlockhash, GetBlockHeight, GetSlot, IsBlockhashValid, GetVersion), Subscribe bidi, les familles accounts/slots/transactions/transaction status/blocks/block meta/entry, les neuf variantes d'update standard retenues, les filtres/common fields actuels, le backpressure, les limites de messages, le half-close/shutdown, ainsi qu'un reconnect/replay prudent depuis le dernier slot observé. Aucune garantie exactly-once, lossless ou d'ordre global gapless n'est introduite ; gaps et duplicates restent observables. SubscribeDeshred reste explicitement hors du standard KSP de cette release.
Config passe à std.transport V3, backward-readable avec V1 HTTP et V2 HTTP+WebSocket, et sépare les axes provider / protocol ainsi que metadata / secret_metadata sans créer de dépendance Transport -> Config/env. PublicNode constitue la première intégration provider : profils Yellowstone Mainnet et Testnet sur https://solana-yellowstone-grpc.publicnode.com:443 et https://solana-testnet-yellowstone-grpc.publicnode.com:443, avec authentification x-token résolue par Config depuis des variables KSP_SECRET_*. Le smoke Transport pur reçoit les credentials uniquement par stdin opérateur, n'en journalise aucun et valide en live Subscribe -> Slot sur les deux réseaux ; le même personal token a été utilisé avec succès pour Mainnet et Testnet, tout en conservant deux entrées Config distinctes par flexibilité opérationnelle.
La clôture conserve les surfaces antérieures HTTP (52 current typed + 14 historiques), WebSocket Solana standard (9 familles / 18 opérations) et Helius LaserStream WebSocket. Le gate final comprend 383/383 tests unit Transport, 49/49 public API, 43/43 release completeness, 4/4 doctests, cargo test --workspace, les canaris de dépendances, le smoke PublicNode live 2/2 PASS et l'inspection des graphes Cargo (yellowstone-grpc-proto 12.6.0, tonic / tonic-prost 0.14.6, prost / prost-types 0.14.4). prompts/015-V0_2_10_START_PROMPT.md ouvre ensuite 0.2.10 — OrbitFlare Yellowstone gRPC uniquement depuis le tag stable v0.2.9, avec audit provider actuel, threat model et sizing en pre.001 avant toute extension provider lourde.
0.2.8 — Helius LaserStream WebSocket — 2026-08-23
0.2.8 étend ksp-onchain-transport-lib avec une façade HeliusLaserStreamWsSession dédiée qui réutilise le même WsSession physique/actor que le WebSocket Solana standard, sans second client, socket, registry ou scheduler. La surface stable Helius réutilise les sept familles standard actuellement retenues (account, logs, program, root, signature, slot, slotsUpdates) et ajoute l’extension typée transactionSubscribe / transactionUnsubscribe; block et vote restent absents de la façade Helius et slotsUpdates conserve son statut unstable. Le heartbeat provider est possédé par l’actor partagé et émet un WebSocket Ping control frame toutes les 60 secondes uniquement pour WsProtocolKind::HeliusLaserStream.
La release ajoute le mapping Config V2 helius_laserstream, les profils Helius mainnet/devnet et le secret KSP_SECRET_HELIUS_API_KEY avec provenance/redaction segmentaire, sans dépendance inverse Transport -> Config ni lecture directe de l’environnement par Transport. Les canaris couvrent erreurs RPC provider, payload oversized, mismatch de notification, reconnect/remap/unsubscribe races, backpressure isolé et diagnostics sans payload brut. La compliance finale conserve simultanément 52 méthodes HTTP courantes + 14 historiques, 9 familles / 18 opérations WebSocket Solana standard, et la surface Helius 7 standard + transaction. Le smoke Helius live cross-crates est volontairement reporté vers une future surface d’intégration/orchestration afin de préserver l’ownership Config du secret. Les graphes Cargo finaux n’introduisent aucun SDK Helius/gRPC ni nouvelle duplication bloquante. prompts/014-V0_2_9_START_PROMPT.md ouvre ensuite 0.2.9 — Yellowstone gRPC standard/provider-neutral uniquement depuis le tag stable v0.2.8, avec audit service/proto/crates/licences/MSRV/features et sizing strict en pre.001 avant toute implémentation lourde.
0.2.7 — WebSocket Solana standard — 2026-08-23
0.2.7 stabilise dans ksp-onchain-transport-lib le moteur WebSocket Solana standard en complément de la surface HTTP déjà complète. La release couvre exactement les 9 familles subscribe + 9 unsubscribe de l’inventaire officiel ciblé : account, block, logs, program, root, signature, slot, slotsUpdates et vote. Les wrappers sont typés, les IDs KSP de session/subscription restent locaux et stables, les IDs serveur restent internes/remappables, et plusieurs sessions physiques peuvent coexister explicitement sur la même URL sans introduire de pool/scheduler automatique. Les familles block, slotsUpdates et vote restent identifiées comme unstable selon l’audit normatif courant et utilisent le warning KSP centralisé.
Le lifecycle WebSocket est borné : actor unique propriétaire du socket, pending JSON-RPC et queues de notifications bornés, WsSession::close().await, control frames Ping/Pong/Close, reconnect fini avec backoff borné, resubscribe déterministe par ID local, continuity_gap_count, isolation des erreurs applicatives et du backpressure par subscription, nettoyage des late ACK/notifications et terminaison one-shot de signatureSubscribe. Config passe à std.transport V2 pour composer HTTP + WebSocket tout en gardant la lecture V1 HTTP-only ; la direction reste Config -> Transport. La compliance finale conserve simultanément 52 méthodes HTTP courantes + 14 historiques, les canaries Transport (309 unit, 36 public API, 24 release completeness), le smoke WebSocket Devnet opt-in slotSubscribe -> notification -> unsubscribe -> close, les frontières de dépendances et la redaction des URLs/credentials. prompts/013-V0_2_8_START_PROMPT.md, renforcé par 0.2.7-pre.014-fix.001, ouvre ensuite 0.2.8 — Helius LaserStream WebSocket uniquement depuis le tag stable v0.2.7.
0.2.6 — Wallet Desk + .kspwallet V2 — 2026-08-22
0.2.6 stabilise ksp-app-wallet-desk comme seconde application Tauri KSP spécialisée et étend ksp-wallet-lib avec le wire binaire .kspwallet V2. Wallet Desk compose Config, Wallet, Transport HTTP et Logging sans déplacer leurs responsabilités : inventory root-scoped et symlink-safe, création/import V2 par défaut, ouverture VIEW/OWNER V1/V2, candidats secrets résolus exclusivement par Config, getBalance Devnet via Transport, administration alias/notes, rotations OWNER/VIEW, disable/recreate VIEW fort et export Solana CLI JSON/Base58. Les secrets, keypairs, handles, chemins complets import/export et credentials Config restent côté Rust ; le frontend ne reçoit que des projections sûres et utilise des modals Bootstrap pour les opérations privilégiées.
Le format V1 JSON reste stable et lisible ; V2 ajoute un framing binaire KSP canonique, des IDs numériques, longueurs big-endian et domains/transcripts distincts tout en conservant Argon2id, XChaCha20-Poly1305 et l'autorité Ed25519 OWNER. Les APIs génériques créent/importent explicitement en V2 et auto-détectent V1/V2 à la lecture, tandis que les variantes _v1/_v2 imposent un format exact et que DEFAULT_WALLET_FORMAT reste indépendant de LATEST_SUPPORTED_WALLET_FORMAT. La migration V1 -> V2 est explicite, OWNER-authentifiée, no-clobber ou atomique in-place avec protection stale-state ; aucune ouverture ne migre silencieusement. La release ferme également le runtime Tauri distribué : les documents Config/schemas sont embarqués comme resources, ksp-config-lib prépare une racine KSP user-writable commune sans écraser les Config utilisateur ni embarquer .env, et les bundles Linux .deb, .rpm et .AppImage ont été produits avec succès après le gate final pre.018-fix.001. Le prompt prompts/012-V0_2_7_START_PROMPT.md ouvre 0.2.7 — WebSocket Solana standard par lectures, audit officiel, threat-model et sizing avant implémentation lourde.
0.2.5 — Wallet foundation — 2026-08-20
0.2.5 publie ksp-wallet-lib et le format natif interopérable .kspwallet V1. La release stabilise les capacités cryptographiquement indépendantes VIEW/OWNER, le masquage de la Pubkey/alias/notes à l’état verrouillé, Argon2id v19 avec paramètres sérialisés et profil de création 65 536 KiB / 3 / 1, XChaCha20-Poly1305, une autorité Ed25519 OWNER distincte de la keypair Solana, les compartiments owner_control/metadata/secret, la création et l’ouverture mémoire/fichier, la persistence no-clobber, la signature Solana OWNER sans getter secret, l’administration alias/notes, les rotations OWNER/VIEW, la révocation forte VIEW avec rekey metadata, la détection de handles stale et les adapters Solana CLI JSON/Base58 pour inspection/import/export. Le wire V1 est documenté indépendamment de Rust dans docs/formats/KSPWALLET_V1.md et couvert par des vecteurs publics ainsi que des canaris adversariaux et une reproduction externe. La release conserve Wallet indépendant de Config/Transport/ExecutionPolicy/Store/Tauri et expose la Pubkey via ksp-core-lib tandis que solana-keypair reste encapsulée dans Wallet.
La clôture technique pre.010-fix.001 à fix.003 met la dépendance directe KSP à ed25519-dalek 3.0.0, accepte la génération 2.2.0 transitive encore imposée par solana-keypair 3.1.2, normalise les sources Rust du workspace et introduit python3 scripts/audit_rust_workspace_rules.py comme gate structurel complémentaire à rustfmt/Clippy. Le checkpoint final pre.010-fix.003 est validé avec audit Python clean, cargo check, Clippy, tests Wallet et workspace complet verts. Le prompt prompts/011-V0_2_6_START_PROMPT.md ouvre ensuite 0.2.6 — Wallet Desk par audit/sizing avant implémentation.
0.2.4 — HTTP Blocks + Economics + compliance HTTP finale — 2026-08-18
0.2.4 achève la surface HTTP Solana standard de ksp-onchain-transport-lib : les 10 wrappers Blocks et 5 wrappers Economics portent la couverture typée à 52/52 méthodes HTTP courantes, tandis que les 14/14 méthodes historiques Deprecated/runtime Removed restent conservées pour compliance. La release stabilise notamment getBlock moderne avec sa forme bare encoding legacy dépréciée, les quatre variantes transactionDetails, les versions transaction numériques génériques, numRewardPartitions (SIMD-0118), commissionBps (SIMD-0291), les overloads de ranges/performance, getBlockProduction, les valeurs Economics fournies par le runtime et getInflationReward positionnel sans plafond d'adresses inventé. Le réaudit final confirme l'égalité exacte entre l'inventaire HTTP officiel courant et le registre KSP, applique KSP-TRANSPORT-007 aux 52/52 wrappers, et ne matérialise aucune extension spéculative issue de la watchlist SIMD. Les canaries de frontières, le workspace complet et les deux smokes Devnet — Transport pur couvrant Accounts/Tokens/Cluster/Transactions/Blocks/Economics et composition Config -> Transport transitoire — sont validés avant publication. Le prompt prompts/010-V0_2_5_START_PROMPT.md, enrichi par pre.009-fix.001, ouvre 0.2.5 — Wallet foundation avec threat model, interopérabilité .kspwallet et capacités indépendantes VIEW/OWNER.
0.2.3 — HTTP Transactions — 2026-08-18
0.2.3 complète la famille HTTP Transactions de ksp-onchain-transport-lib avec 11 wrappers typés, portant la surface HTTP typée courante à 37 méthodes : 4 foundation, 22 Accounts/Tokens/Cluster et 11 Transactions. La release stabilise la classification exacte 8 Read / RetrySafe, 2 WriteSubmission / NeverAfterDispatch (requestAirdrop, sendTransaction) et 1 Simulation / RetrySafe (simulateTransaction), avec preuves end-to-end qu'une write submission n'est jamais resoumise après dispatch ambigu mais peut retenter lorsqu'un échec est prouvé NotDispatched. getTransaction couvre la config moderne complète et la forme bare encoding legacy dépréciée ; les variantes de transaction, metadata, version et transactionIndex restent préservées losslessly. simulateTransaction couvre sa config complète, ses invariants déterministes et son résultat riche sans introduire de client RPC Solana haut niveau ni de décodage transactionnel dans Transport. La release formalise KSP-TRANSPORT-007 et réaudite rétroactivement les 37 wrappers courants sans remédiation fonctionnelle. Les canaries conservent 52 méthodes HTTP courantes, 14 historiques Deprecated/Removed et 15 Blocks/Economics réservées à 0.2.4. Les graphes Cargo et les deux smokes Devnet — Transport pur read-only et composition Config -> Transport transitoire — ont été validés avant publication. Le prompt prompts/009-V0_2_4_START_PROMPT.md ouvre 0.2.4 — HTTP Blocks + Economics + compliance HTTP finale.
0.2.2 — HTTP Accounts + Tokens + Cluster — 2026-08-18
0.2.2 complète la surface HTTP typée de ksp-onchain-transport-lib avec 22 wrappers supplémentaires : 5 Accounts, 5 Tokens et 12 Cluster, portant la couverture typée totale à 26 méthodes avec les quatre canaris foundation de 0.2.1. La release stabilise les DTOs/configs wire communs, préserve les formes Account encodées/jsonParsed, les null et champs optionnels, les selectors Token exclusifs, les contextes RPC, les structures Cluster/leader/vote et les limites locales auditées (getMultipleAccounts <= 100, getProgramAccounts <= 4 filtres, memcmp raw <= 128 octets, getSlotLeaders entre 1 et 5000). Les 22 descriptors restent Read / RetrySafe et passent exclusivement par le flux central descriptor -> execute_standard_rpc -> pool/admission -> executor HTTP. La release n'ajoute aucune dépendance externe, ne crée aucun client HTTP parallèle et conserve le firewall Transport -> Config/Store/Program. Elle ajoute un smoke Devnet pur à Transport avec settings programmatiques couvrant Accounts/Tokens/Cluster, conserve séparément le smoke historique Config -> Transport comme exception transitoire, et valide les deux explicitement avant publication. Les canaries figent toujours 52 méthodes HTTP courantes, 14 historiques Deprecated/Removed et la partition typed 4 / 22 / 11 / 15. Le prompt prompts/008-V0_2_3_START_PROMPT.md ouvre 0.2.3 — HTTP Transactions.
0.2.1 — HTTP Solana foundation — 2026-08-17
0.2.1 stabilise ksp-onchain-transport-lib comme foundation HTTP JSON-RPC Solana provider-neutral : settings publics, endpoints/pool/rôles, priorités et fairness, RPS/burst/concurrence/cooldown, deadline commune, retry/backoff, classification no-resend après dispatch ambigu, snapshots sûrs et exécution HTTP réelle via reqwest/rustls. La release fige un registre audité de 52 méthodes HTTP courantes et 14 méthodes historiques Deprecated/Removed, avec quatre wrappers typés canari (getBalance, getGenesisHash, getHealth, getVersion) et une partition explicite des 48 méthodes restantes sur 0.2.2–0.2.4. Elle ajoute std.transport, son schema/exemple et l'adapter ksp-config-lib -> ksp-onchain-transport-lib, sans dépendance inverse, ainsi que la redaction des URLs/provider credentials, la neutralisation des URLs contenues dans les reqwest::Error, un sink Logging Transport dédié à info, des fixtures HTTP déterministes, des canaries de complétude et un smoke Devnet opt-in validant la composition Config -> Transport. Le smoke cross-crates reste temporairement hébergé dans Config et doit migrer vers une future surface d'intégration/orchestration ; ce placement n'est pas un modèle pour les futurs smokes Config + autre crate. Le prompt prompts/007-V0_2_2_START_PROMPT.md ouvre 0.2.2 — HTTP Accounts + Tokens + Cluster.
0.2.0 — Audit bot3 et planification de la série 0.2.x — 2026-08-17
0.2.0 stabilise le cadrage de la prochaine phase fonctionnelle de KSP après audit de khadhroony-bot3. La release fixe l'ordre 0.2.1+ autour du transport HTTP Solana, du Wallet .kspwallet, de Wallet Desk, des transports WebSocket/LaserStream/Yellowstone, du transport off-chain de prix, de ksp-interface-lib et de ksp-program-api; elle impose la couverture exhaustive des surfaces Transport documentées avec warnings KSP pour les opérations deprecated/obsolete encore fonctionnelles et unstable/experimental. Elle stabilise également la progression durable RAW -> CORE -> DECODE -> SPECIALIZED, RAW/CORE sans décodage Program, puis des vertical slices complets par groupe à partir de DECODE, avec priorité Solana Core, SPL token/trading, metadata token, Anchor, Meteora/Raydium/Pump/Orca, routing et Market Desk progressive. Le prompt prompts/006-V0_2_1_START_PROMPT.md ouvre 0.2.1 — ksp-onchain-transport-lib / HTTP Solana foundation avec un gate de sizing imposant qu'une release concrète reste clôturable dans une seule session.
0.1.4 — Config Desk — 2026-08-17
0.1.4 stabilise ksp-app-config-desk comme première application desktop/Tauri spécialisée et modèle de référence des futures applications KSP. La release valide de bout en bout les contrats de ksp-config-lib et le lifecycle de ksp-logging-lib : shell splash/main, inventaire et diagnostics des documents Config, profils et provenance sûre, management .env avec shadowing et reveal Secret privilégié, éditeur Logging typé multi-profils/multi-sinks, persistence atomique, hot reload transactionnel, rollback, sélection runtime explicite, génération observable, fichiers de logs distincts par lancement, bridge frontend vers la façade KSP et panneau Test Logging pour démontrer le routing niveau/target/domain. Elle ajoute également les audits desktop/ownership/sécurité, un registre extensible file_id -> éditeur spécialisé, une baseline Logging de release info/warn, et prépare 0.2.0 comme release intermédiaire d’audit de khadhroony-bot3 et de planification du reste de 0.2.x.
0.1.3 — Configuration foundation — 2026-08-16
0.1.3 stabilise ksp-config-lib comme propriétaire KSP unique des documents Config, schemas, profils, compositions, variables KSP_*/KSPB_*, .env, placeholders et persistence autorisée. La release introduit le bootstrap non récursif cfgpath/schemapath, le registre logique file_id -> filename, JSON Schema, globals/profils/default_profile, compositions par file_id, priorité process env > .env > fallback, sensibilité Public/Internal/Secret, représentations real/safe avec provenance, management/persistence atomique JSON et .env, ainsi que l'adapter vers ksp_logging_lib::LoggingSettings et les audits d'ownership. Elle complète également ksp-logging-lib avec les contrats/runtime multi-sink, routing structuré domain et hot reload nécessaires au premier document std.logging.json, puis prépare 0.1.4 — ksp-app-config-desk comme validation desktop/Tauri extensible de cette fondation.
0.1.2 — Logging foundation — 2026-08-14
0.1.2 stabilise ksp-logging-lib comme façade KSP unique de logging/tracing runtime. La release introduit les événements et spans KSP, le takeover des targets, le subscriber global unique, LoggingSettings, les sorties console/fichier non bloquantes, rotation, stripping ANSI, compteurs de lignes abandonnées, hot reload transactionnel et instrumentation async indépendante de l'executor. La stack tracing, tracing-subscriber et tracing-appender reste possédée exclusivement par Logging ; Tokio est limité aux tests réels d'instrumentation async.
0.1.1 — Core foundation — 2026-08-14
0.1.1 stabilise ksp-core-lib avec le contrat commun ErrorCode / ErrorContext / Error / Result<T>, la primitive Pubkey, les Program IDs Solana fondamentaux possédés par KSP et leur registre canonique recherché/filtrable. La release fixe également la taxonomie de classification et la politique Cargo workspace utilisée par les crates suivantes.
0.0.3 — Fondation architecture et règles — 2026-08-14
0.0.3 clôt la phase fondatrice : nomenclature KSP, règles Rust/Cargo/documentation, architecture en couches, contrats des composants, workers/jobs/pipelines/scénarios/apps, politique de versions/deltas et séquence des premières releases fonctionnelles. Elle prépare explicitement l'ouverture de 0.1.1 sans ajouter de fonctionnalité métier Solana.