Files
2026-08-17 22:43:07 +02:00

9.6 KiB
Raw Permalink Blame History

Delta v0.2.1-pre.007

Base

Base attendue :

v0.2.1-pre.006-fix.002

Cette base a été validée localement par l'opérateur le 2026-08-17 avec :

  • cargo fmt --all ;
  • cargo check --workspace ;
  • cargo clippy --workspace --all-targets ;
  • cargo test -p ksp-onchain-transport-lib ;
  • cargo test -p ksp-app-config-desk ;
  • cargo test -p ksp-config-lib ;
  • cargo test -p ksp-core-lib ;
  • cargo test --workspace.

Le test Transport renforcé contre la fuite d'URL dans les sources reqwest::Error passe également sur cette base.

Version Cargo cible :

0.2.1-pre.7

Objectif

Fermer la dernière prerelease fonctionnelle de 0.2.1 sans rouvrir le périmètre HTTP :

  • revérifier la matrice officielle Solana ;
  • figer la complétude 52 + 14 et la partition 4 / 22 / 11 / 15 par des canaries publiques ;
  • fournir un smoke Devnet opt-in de bout en bout Config -> Transport ;
  • produire le README et le guide d'utilisation durables de Transport ;
  • remettre la baseline Logging Transport à info avant stable ;
  • absorber les écarts documentaires réservés par l'audit complet de pre.006-fix.002 ;
  • produire la matrice de validation finale et le prompt de démarrage 0.2.2 ;
  • préparer un rel.001 strictement publicationnel.

Aucune cinquième méthode HTTP typée n'est ajoutée dans cette tranche.

Revérification officielle HTTP Solana

La documentation officielle Solana a été revérifiée le 2026-08-17 :

https://solana.com/docs/rpc/http
https://solana.com/docs/rpc/deprecated/confirmtransaction

Le résultat reste compatible avec la matrice acquise :

52 méthodes HTTP courantes
14 méthodes historiques Deprecated

L'index courant confirme également le transport JSON-RPC 2.0 sur HTTP POST avec Content-Type: application/json.

Les 14 méthodes historiques restent représentées dans KSP comme Deprecated / Removed / Historical et ne sont pas simulées comme appelables.

Canaries de complétude de release

Nouveau test public :

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

Il fige depuis l'API publique :

current == 52
historical == 14
coverage == 4 / 22 / 11 / 15
V0_2_1 == getBalance/getGenesisHash/getHealth/getVersion
historical => Deprecated + Removed + Historical + NotApplicable

La candidate déclare désormais 80 tests Transport.

La surface raw/générique execute_standard_rpc() reste disponible mais ne compte pas comme couverture typée des 48 méthodes reportées à 0.2.20.2.4.

Smoke Devnet opt-in Config -> Transport

Nouveau test :

crates/ksp-config-lib/tests/transport_devnet_smoke.rs

Il est volontairement :

#[ignore = "opt-in live Solana Devnet smoke; performs external network requests"]

Le chemin validé est :

ConfigFileRegistry::defaults()
  -> cfg.std.transport
  -> profile devnet_public
  -> ConfigEnvironment
  -> ResolvedTransportConfig
  -> HttpTransportSettings
  -> HttpTransportPool
  -> getHealth
  -> getGenesisHash
  -> getVersion
  -> getBalance(System Program)

Transport ne lit donc toujours pas directement l'environnement.

Le test Config nécessite Tokio uniquement comme dev-dependency local :

[dev-dependencies]
tokio = { workspace = true, features = ["macros", "rt"] }

La candidate déclare 114 tests Config, dont cet unique smoke Devnet ignored.

Exécution opt-in :

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

Un incident ou rate-limit du RPC public Devnet reste un signal externe à analyser ; les gates reproductibles restent les tests déterministes par défaut.

Logging Transport avant stable

Le sink dédié introduit pendant le développement est conservé, mais sa baseline revient de debug à info conformément à la politique de clôture :

output_id : file.onchain_transport.info
path      : transport/onchain/ksp-onchain-transport.log
target    : ksp-onchain-transport-lib
level     : info

La console et le fichier général restent à info. Un niveau debug/trace ciblé peut être réactivé temporairement via Config lors d'un futur développement, puis doit être refermé avant publication stable.

Documentation durable Transport

Nouveaux documents :

crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md

Ils documentent :

  • responsabilités et firewall de dépendances ;
  • registre 52 current + 14 historical ;
  • différence raw/générique vs couverture typée ;
  • quatre canaris 0.2.1 ;
  • pool/routing/admission/résilience ;
  • retry/no-resend ;
  • sécurité des URLs et sources reqwest ;
  • target Logging explicite ;
  • construction directe ou via Config ;
  • snapshots et smoke Devnet opt-in.

Normalisation documentaire issue de l'audit complet

Les écarts purement documentaires réservés par pre.006-fix.002 sont absorbés ici :

  • FILE-GEN-003 décrit désormais bindings/ et gen/ comme artefacts générés/reconstructibles ignorés par défaut, et non comme convention encore future ;
  • crates/ksp-config-lib/README.md ne présente plus ksp-app-config-desk comme future ;
  • l'inventaire des composants décrit 0.2.1 comme foundation HTTP + registre 52+14 + quatre wrappers canari, et non comme surface typed HTTP complète ;
  • les index docs/plans/validation/prompts sont synchronisés avec les nouveaux livrables ;
  • le ROADMAP conserve uniquement l'état synthétique de la candidate et reste [/] jusqu'à la publication stable.

Les prompts et deltas historiques consommés restent immuables même lorsqu'ils décrivent l'état de leur époque.

Matrice de validation finale

Nouveau document :

docs/validation/003-V0_2_1_ONCHAIN_HTTP.md

Il regroupe les critères de clôture, les preuves acquises, les commandes Cargo/cargo-tree attendues et les conditions de passage à rel.001.

Prompt de reprise 0.2.2

Nouveau prompt :

prompts/007-V0_2_2_START_PROMPT.md

Il ouvre 0.2.2 — HTTP Accounts + Tokens + Cluster par un nouveau pre.001 d'audit/brainstorming/sizing et conserve la partition nominale actuelle de 22 méthodes :

Accounts : 5
Tokens   : 5
Cluster  : 12

Il exige une revérification officielle du jour avant toute implémentation lourde et rappelle que l'appel raw ne vaut jamais couverture typée.

Préparation de rel.001

CHANGELOG.md n'est volontairement pas modifié dans cette prerelease. Si la candidate passe les validations opérateur, rel.001 doit rester minimal :

workspace.package.version -> 0.2.1
ROADMAP : 0.2.1 -> [X]
CHANGELOG : synthèse stable 0.2.1
plan 008 / validation 003 : statut clôturé + preuves opérateur
deltas/0.2.1/rel.001.md
commit v0.2.1-rel.001
tag v0.2.1

Aucune nouvelle fonctionnalité HTTP ne doit être introduite dans rel.001.

Fichiers ajoutés

crates/ksp-config-lib/tests/transport_devnet_smoke.rs
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
docs/validation/003-V0_2_1_ONCHAIN_HTTP.md
prompts/007-V0_2_2_START_PROMPT.md
deltas/0.2.1/pre.007.md

Fichiers modifiés

Cargo.toml
ROADMAP.md
config/std.logging.json
crates/ksp-config-lib/Cargo.toml
crates/ksp-config-lib/README.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/008-V0_2_1_ONCHAIN_HTTP_PLAN.md
docs/rules/FILE_CONTRACTS.md
docs/validation/000-README.md
prompts/000-README.md

Aucun ancien delta et aucun CHANGELOG.md ne sont modifiés.

Validation statique de génération

Effectuée dans le sandbox :

  • comparaison différentielle avec pre.006-fix.002 ;
  • parsing de tous les TOML et JSON du workspace ;
  • validation Draft 2020-12 de std.logging.json, std.transport.json et de l'exemple Transport contre leurs schemas ;
  • contrôle des headers et incréments de version des fichiers modifiés ;
  • contrôle de l'unique fin de ligne des fichiers livrés ;
  • contrôle des lignes Rust/TOML <= 160 colonnes ;
  • contrôle des fences Markdown et des liens Markdown relatifs des fichiers modifiés ;
  • confirmation que les anciens deltas sont byte-for-byte inchangés ;
  • contrôle de la baseline Logging Transport info ;
  • comptage statique de 80 tests Transport et 114 tests Config, dont un smoke Config ignored ;
  • contrôle des tableaux de registre Rust [52] et [14].

Non exécutées dans le sandbox : cargo, rustc et rustfmt n'y sont pas disponibles. Aucune réussite Cargo de pre.007 n'est donc déclarée avant validation opérateur.

Validation requise après application

cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets

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

cargo tree -p ksp-onchain-transport-lib
cargo tree -p ksp-onchain-transport-lib -d
cargo tree -p ksp-onchain-transport-lib -e features
cargo tree -p ksp-onchain-transport-lib -e normal

cargo tree -p ksp-config-lib
cargo tree -p ksp-config-lib -d
cargo tree -p ksp-config-lib -e features
cargo tree -p ksp-config-lib -e normal

Puis, de manière opt-in :

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

Les cargo tree Config sont requis car pre.007 ajoute un dev-dependency Tokio local au smoke live. Si les validations déterministes et les audits de graphe sont propres, la tranche suivante est 0.2.1-rel.001.