Files
2026-08-18 22:43:09 +02:00

14 KiB

Delta 0.2.4-pre.009 — clôture HTTP finale, compliance 52/52 + 14/14 et préparation Wallet

Base requise

Livraison précédente validée :

0.2.4-pre.008-fix.001
workspace.package.version = "0.2.4-pre.8.fix.1"

La validation locale fournie pour cette base est entièrement propre :

cargo fmt --all                         -> terminé
cargo check --workspace                 -> terminé sans warning
cargo clippy --workspace --all-targets  -> terminé sans warning
cargo test -p ksp-onchain-transport-lib -> 240 unit tests OK
                                           26 public API tests OK
                                           21 release-completeness tests OK
                                           1 smoke Devnet ignoré comme prévu
                                           0 échec

Cette base inclut donc le fix purement Clippy de pre.008-fix.001 sans modification fonctionnelle de getInflationReward.

Objectif

pre.009 est la prerelease de clôture de la série HTTP commencée en 0.2.1.

Elle ne doit ajouter aucun nouveau comportement RPC standard. Elle doit au contraire prouver et documenter que la surface acquise est complète et cohérente :

52 méthodes HTTP courantes officielles
52 wrappers typed KSP correspondants
14 méthodes historiques Deprecated / runtime Removed
14 descriptors historiques KSP correspondants
partition typed : 4 foundation + 22 Accounts/Tokens/Cluster + 11 Transactions + 15 Blocks/Economics

Elle doit également :

  • réauditer la référence HTTP officielle et les SIMDs susceptibles de modifier cette surface ;
  • figer les canaries finales de présence, de classification et de frontières ;
  • étendre le smoke Transport pur aux nouvelles familles Blocks/Economics ;
  • publier le document de conformité final 0.2.4 ;
  • mettre à jour les documents vivants de la série ;
  • fournir le prompt de démarrage de 0.2.5 — Wallet foundation ;
  • préparer rel.001, qui devra rester strictement publicationnel.

Version Cargo

Nouvelle prerelease technique :

0.2.4-pre.8.fix.1 -> 0.2.4-pre.9

Aucune dépendance, feature Cargo ou frontière de crate n'est modifiée.

Réaudit officiel final de la surface HTTP

Le réaudit de la référence Solana HTTP courante retrouve exactement les 52 méthodes enregistrées par KSP.

La comparaison est effectuée sur les noms, pas seulement sur un compteur :

officiel courant - registre KSP = {}
registre KSP - officiel courant = {}

Les 14 méthodes historiques présentées dans la navigation Deprecated officielle correspondent également exactement au registre historique KSP :

officiel Deprecated - historique KSP = {}
historique KSP - officiel Deprecated = {}

Aucun nouveau RPC HTTP standard n'est donc introduit dans la release à cette date.

La baseline runtime de contrat utilisée pendant 0.2.4 reste :

Agave v4.2.1

La rollout Agave v4.2 est en cours pendant cette clôture ; cette prerelease ne transforme pas un calendrier de déploiement en affirmation d'activation cluster-wide.

Réaudit SIMD final

Les statuts upstream observés pendant la clôture sont :

SIMD Sujet lié au HTTP KSP Statut courant Conséquence pour 0.2.4
0180 leader schedule keyed by vote account Review aucune nouvelle méthode HTTP officielle ; conserver le wire stable audité
0298 bank_hash dans le block footer Idea ne pas ajouter bankHash spéculativement
0301 remplacement proposé par parent_bank_hash PR fermé, non mergé aucune surface KSP
0307 block footer + extension getBlock Review pas de footer dans le contrat stable v4.2.1
0385 transaction V1 Review conserver SolanaTransactionVersion::Number(u8) générique
0490 Stake Program v5 / minimum delegation Review valeur fournie par le runtime, jamais codée en dur
0550 double disinflation Review valeurs inflation runtime, aucune formule KSP
0553 base inclusion + resource fee Draft évolution économique/fee ; aucun nouveau wrapper HTTP stable

Les extensions wire déjà acquises sont également réauditées pour éviter qu'une clôture centrée sur la watchlist n'en perde une :

SIMD Statut courant Contrat KSP confirmé
0118 Partitioned Epoch Rewards Distribution Activated numRewardPartitions reste lossless en omitted/null/value ; aucune synthèse locale
0291 Commission Rate in Basis Points Review commission et commissionBps restent indépendants dans les rewards ; aucun calcul de conversion local

Le statut Review de SIMD-0291 ne retire pas le wire déjà livré par Agave v4.2.1. Le réaudit ne justifie donc aucune extension wire spéculative dans pre.009 ni aucune suppression d'un champ stable déjà acquis.

Canarie public API finale

tests/public_api.rs ajoute :

public_v0_2_4_pre_009_all_52_current_typed_wrappers_and_legacy_forms_are_available_from_crate_root

Cette canarie référence les 52 wrappers typed des méthodes courantes via HttpTransportPool.

Elle référence aussi séparément les deux formes legacy de requête qui ne constituent pas des méthodes RPC supplémentaires :

get_block_legacy
get_transaction_legacy

Le but est de détecter immédiatement une suppression ou une invisibilité accidentelle d'un wrapper public pendant les futures refactorisations.

Canarie release-completeness finale

tests/release_completeness.rs ajoute :

release_v0_2_4_pre_009_final_http_inventory_and_coverage_partition_are_exact

Elle fige explicitement :

52 noms courants exacts
14 noms historiques exacts
4  méthodes Foundation
22 méthodes V0_2_2
11 méthodes V0_2_3
15 méthodes V0_2_4

Elle vérifie également les invariants de classification :

courant     -> runtime Supported, documentation non Deprecated
Read        -> RetrySafe
Simulation  -> RetrySafe
WriteSubmission -> NeverAfterDispatch
historique  -> Deprecated + Removed + Historical + NotApplicable

Cette preuve complète les canaries KSP-TRANSPORT-007 déjà acquises ; elle ne les remplace pas.

Compliance KSP-TRANSPORT-007

Le document final :

docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md

consolide la preuve 52/52 et les points sensibles accumulés depuis 0.2.1 :

  • ordre et cardinalité des paramètres/réponses ;
  • configs omises versus objets explicitement présents ;
  • overloads modernes et historiques ;
  • validations déterministes avant I/O ;
  • préservation omitted / null / value ;
  • listes positionnelles et ordre provider ;
  • getBlock moderne + bare encoding legacy ;
  • transactionDetails complet ;
  • SIMD-0118 numRewardPartitions ;
  • SIMD-0291 commissionBps ;
  • version transaction numérique non nulle ;
  • Economics runtime sans constantes locales inventées ;
  • getInflationReward positionnel et cardinalité stricte.

Smoke Transport pur final

Le smoke opt-in :

crates/ksp-onchain-transport-lib/tests/transport_devnet_smoke.rs

reste :

  • purement Transport ;
  • settings construits programmatiquement ;
  • read-only ;
  • opt-in / ignoré par défaut ;
  • indépendant de Config.

Il conserve les appels déjà présents Accounts/Tokens/Cluster/Transactions et ajoute trois appels peu fragiles :

getBlockHeight(finalized)
getInflationRate()
getStakeMinimumDelegation(finalized)

Aucune valeur économique exacte n'est codée en dur. Le smoke vérifie uniquement des invariants de santé de réponse.

Le smoke de composition Config -> Transport -> Devnet reste une exception transitoire dans ksp-config-lib et doit toujours migrer vers une future surface dédiée d'intégration/orchestration/demo.

Documentation finale 0.2.4

Sont mis à jour :

ROADMAP.md
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
docs/000-README.md
docs/architecture/004-COMPONENT_INVENTORY.md
docs/plans/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md
docs/validation/000-README.md
prompts/000-README.md

Le plan 011 passe en version 6 et enregistre le réaudit final sans modifier les contrats RPC déjà matérialisés.

Le raw RPC est désormais décrit comme une surface d'extension provider/diagnostic hors registre standard ; il ne constitue pas une alternative aux 52 wrappers typed standard.

CHANGELOG.md reste volontairement inchangé dans cette prerelease : la publication stable et son entrée finale appartiennent à rel.001.

Document de validation final

Ajout :

docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md

Ce document sert de point de contrôle avant rel.001. Il contient notamment :

  • le réaudit officiel 52 + 14 ;
  • la matrice des 52 méthodes courantes ;
  • la matrice des 14 historiques ;
  • la partition 4 / 22 / 11 / 15 ;
  • le réaudit SIMD ;
  • les contrats sensibles Blocks/Economics ;
  • les commandes de validation immédiate et finale ;
  • les audits cargo tree de frontières ;
  • les deux smokes Devnet opt-in ;
  • les conditions de passage à rel.001.

Prompt 0.2.5 — Wallet foundation

Ajout :

prompts/010-V0_2_5_START_PROMPT.md

Le prompt impose une 0.2.5-pre.001 d'audit + brainstorming + sizing avant toute implémentation cryptographique lourde.

Il cadre notamment :

ksp-wallet-lib
format natif versionné .kspwallet
Wallet -> Core/Logging + primitives crypto/key low-level seulement
Wallet -X-> Config/Transport/Store/Tauri/ExecutionPolicy
pas de crypto maison
pas de secret dans Config
pas de WalletPolicy dans 0.2.5
pas de Wallet Desk dans 0.2.5

La sélection du KDF, de l'AEAD, du CSPRNG et de la stratégie de secret en mémoire n'est pas préjugée : elle doit être auditée contre les primitives actuelles lors de pre.001.

Le prompt exige également les invariants de sécurité principaux : mauvais mot de passe, tampering, format inconnu/tronqué, redaction, absence de secret en clair, changement de mot de passe sans changement de keypair, persistence atomique/no-clobber et signature vérifiable.

Fichiers modifiés

Cargo.toml
ROADMAP.md
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
crates/ksp-onchain-transport-lib/src/lib.rs
crates/ksp-onchain-transport-lib/tests/public_api.rs
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
crates/ksp-onchain-transport-lib/tests/transport_devnet_smoke.rs
docs/000-README.md
docs/architecture/004-COMPONENT_INVENTORY.md
docs/plans/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md
docs/validation/000-README.md
prompts/000-README.md

Fichiers ajoutés

docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md
prompts/010-V0_2_5_START_PROMPT.md
deltas/0.2.4/pre.009.md

Aucun fichier n'est supprimé.

Validation immédiate attendue

Après application de l'overlay :

cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib

Compte attendu pour Transport :

240 unit tests OK
27 public API tests OK
22 release-completeness tests OK
1 smoke Devnet ignoré comme prévu
0 échec

Le nombre de unit tests reste volontairement stable : pre.009 ajoute des canaries d'intégration/public API et non une nouvelle logique RPC.

Checkpoint final avant rel.001

Une fois la validation immédiate propre, exécuter aussi :

cargo test -p ksp-config-lib
cargo test -p ksp-core-lib
cargo test -p ksp-app-config-desk
cargo test --workspace

Audits de graphes :

cargo tree -p ksp-onchain-transport-lib -i ksp-config-lib
cargo tree -p ksp-onchain-transport-lib -i ksp-store-lib
cargo tree -p ksp-onchain-transport-lib -i ksp-program-lib
cargo tree -p ksp-onchain-transport-lib -i tracing
cargo tree -p ksp-config-lib -i ksp-onchain-transport-lib
cargo tree -p ksp-config-lib -i tracing
cargo tree -p ksp-onchain-transport-lib | grep -E 'solana-(client|rpc-client|rpc-client-api)'
cargo tree -p ksp-onchain-transport-lib | grep -E 'ksp-(config|store|program)'

Les commandes cargo tree -i qui signalent qu'un package n'existe pas dans le graphe sont acceptables lorsqu'elles démontrent précisément l'absence de dépendance recherchée ; le résultat doit être interprété et consigné, pas masqué. Pour tracing, une présence transitive sous ksp-logging-lib est conforme : l'interdit architectural porte sur une dépendance directe de Transport vers tracing, pas sur l'absence totale de tracing dans son graphe transitif.

Smokes réseau opt-in :

cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture

Le premier est le smoke Transport pur durable. Le second reste la composition transitoire Config -> Transport déjà documentée.

Commit attendu

Après validation immédiate et checkpoint final propres :

v0.2.4-pre.009

Suite — rel.001

La livraison suivante doit être :

0.2.4-rel.001

Elle doit être strictement publicationnelle :

  • finaliser CHANGELOG.md et les statuts ROADMAP/documents de publication ;
  • produire deltas/0.2.4/rel.001.md ;
  • passer workspace.package.version de la prerelease candidate à 0.2.4 ;
  • ne pas ajouter de wrapper, DTO, validation RPC ou comportement réseau ;
  • rejouer les contrôles de publication nécessaires ;
  • créer le tag stable v0.2.4 après validation et commit de la release.

0.2.5 ne commence qu'après cette publication stable.