18 KiB
Changelog KSP
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.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.