From 5b3967327aff810cf369fd6a000aa448dab6c61e Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Tue, 18 Aug 2026 23:51:56 +0200 Subject: [PATCH] v0.2.4-rel.001 --- CHANGELOG.md | 6 +- Cargo.toml | 4 +- ROADMAP.md | 6 +- crates/ksp-onchain-transport-lib/README.md | 8 +- crates/ksp-onchain-transport-lib/USAGE.md | 6 +- .../tests/public_api.rs | 7 +- .../tests/release_completeness.rs | 11 +- .../tests/transport_devnet_smoke.rs | 5 +- deltas/0.2.4/rel.001.md | 185 ++++++++++++++++++ docs/000-README.md | 4 +- docs/architecture/004-COMPONENT_INVENTORY.md | 74 +++---- docs/plans/000-README.md | 4 +- docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md | 8 +- .../011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md | 31 ++- docs/validation/000-README.md | 4 +- .../007-V0_2_4_HTTP_FINAL_COMPLIANCE.md | 141 ++++++++----- prompts/000-README.md | 4 +- 17 files changed, 374 insertions(+), 134 deletions(-) create mode 100644 deltas/0.2.4/rel.001.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 197b514..a8cf8ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,12 @@ - + # Changelog KSP +## 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. + 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.3 — HTTP Transactions — 2026-08-18 diff --git a/Cargo.toml b/Cargo.toml index a1259f2..c2fd353 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 141 +# version: 142 [workspace] resolver = "3" members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib"] [workspace.package] -version = "0.2.4-pre.9" +version = "0.2.4" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/ROADMAP.md b/ROADMAP.md index 6ac0109..f006a58 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,5 +1,5 @@ - + # Roadmap KSP @@ -48,8 +48,8 @@ Le roadmap décrit les objectifs à atteindre et les grandes étapes prévues. U - [X] `0.2.1` — **HTTP transport foundation réduite par le gate `pre.001`** : crate/settings/JSON-RPC/registry 52 current + 14 deprecated historiques, pool/rôles/limites/retry, Config adapter, documentation et 4 méthodes typées canari (`getBalance`, `getGenesisHash`, `getHealth`, `getVersion`) publiés stables. - [X] `0.2.2` — HTTP Accounts + Tokens + Cluster : 22 wrappers typés (5 Accounts + 5 Tokens + 12 Cluster), canaries de complétude 52+14, smoke Devnet Transport pur et smoke historique Config -> Transport validés, documentation durable et prompt `0.2.3` publiés stables. - [X] `0.2.3` — HTTP Transactions stable : 11/11 wrappers typés publiés, classification `8 Read / 2 WriteSubmission / 1 Simulation`, no-resend ambigu prouvé pour les write submissions, `KSP-TRANSPORT-007` réaudité conforme sur les 37 wrappers HTTP courants, graphes Cargo et deux smokes Devnet validés ; `0.2.4` reprend les 15 Blocks/Economics restants. -- [/] `0.2.4` — candidate de clôture HTTP Blocks + Economics : 15/15 wrappers `V0_2_4` implémentés, surface typed portée à 52/52 méthodes courantes, 14/14 historiques conservées, réaudit SIMD/inventaire final et `KSP-TRANSPORT-007` global préparés par `pre.009`; publication stable encore réservée à `rel.001`. -- [ ] `0.2.5` — Introduire `ksp-wallet-lib`, le format `.kspwallet`, la gestion sûre des secrets et une architecture d'import/export extensible ; exclure `WalletPolicy`. +- [X] `0.2.4` — HTTP Blocks + Economics stable : 15/15 wrappers `V0_2_4` publiés, surface typed complète à 52/52 méthodes courantes, 14/14 historiques conservées, réaudit SIMD/inventaire final et `KSP-TRANSPORT-007` global validés ; deux smokes Devnet passés avant publication. +- [ ] `0.2.5` — Introduire `ksp-wallet-lib` et le format interopérable `.kspwallet` avec threat model offline, capacités indépendantes VIEW/OWNER, metadata protégées, signature, rotations de key slots et import/export extensible ; exclure `WalletPolicy`. - [ ] `0.2.6` — Introduire `ksp-app-wallet-desk` utilisant Config composite + Wallet + transport HTTP, notamment pour afficher l'identité et le solde d'un wallet. - [ ] `0.2.7` — Étendre `ksp-onchain-transport-lib` au WebSocket Solana standard complet ; permettre plusieurs sessions sur une même URL sans imposer encore un pool automatique complexe. - [ ] `0.2.8` — Ajouter Helius LaserStream WebSocket comme extension du moteur WebSocket standard, sans duplication de client. diff --git a/crates/ksp-onchain-transport-lib/README.md b/crates/ksp-onchain-transport-lib/README.md index d698534..db088c2 100644 --- a/crates/ksp-onchain-transport-lib/README.md +++ b/crates/ksp-onchain-transport-lib/README.md @@ -1,5 +1,5 @@ - + # `ksp-onchain-transport-lib` @@ -69,7 +69,7 @@ Le registre porte notamment : - remplacement historique éventuel ; - release de couverture typée KSP. -La candidate `0.2.4-pre.009` complète la surface typée des **52 méthodes courantes** : +La release stable `0.2.4` complète la surface typée des **52 méthodes courantes** : ```text 0.2.1 foundation : 4 @@ -81,7 +81,7 @@ total : 52 `0.2.4` ajoute les dix wrappers Blocks et les cinq wrappers Economics. Les points sensibles restent notamment `getBlock` moderne + bare encoding legacy deprecated, les quatre `transactionDetails`, les versions transaction numériques génériques, `numRewardPartitions`, `commissionBps`, les overloads de `getBlocks`, les ranges de production, les valeurs d'inflation/minimum de délégation fournies par le runtime et les `null` positionnels de `getInflationReward`. -`KSP-TRANSPORT-007` impose qu'un wrapper typé couvre toutes les possibilités RPC supportées retenues par l'audit : paramètres/options, overloads et formes legacy encore supportées, contraintes déterministes utiles et variantes de réponse pertinentes sans perte. Le réaudit final `0.2.4-pre.009` agrège le réaudit 37/37 de `0.2.3` avec les 15 nouveaux wrappers et porte la preuve candidate à **52/52**. +`KSP-TRANSPORT-007` impose qu'un wrapper typé couvre toutes les possibilités RPC supportées retenues par l'audit : paramètres/options, overloads et formes legacy encore supportées, contraintes déterministes utiles et variantes de réponse pertinentes sans perte. Le réaudit final `0.2.4` agrège le réaudit 37/37 de `0.2.3` avec les 15 nouveaux wrappers et porte la preuve stable à **52/52**. Les 14 méthodes historiques restent découvrables pour la compliance mais sont `Removed` et ne sont pas simulées comme appelables. @@ -147,5 +147,5 @@ Les deux sont `ignored` par défaut. Le smoke Transport appartient durablement - [`../../docs/plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md`](../../docs/plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md) — plan historique clôturé de `0.2.3` ; - [`../../docs/validation/006-V0_2_3_HTTP_TRANSACTIONS.md`](../../docs/validation/006-V0_2_3_HTTP_TRANSACTIONS.md) — matrice finale validée `0.2.3` ; - [`../../docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`](../../docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md) — plan Blocks/Economics et compliance HTTP finale ; -- [`../../docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md`](../../docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md) — matrice candidate `52/52 + 14/14` et audit `KSP-TRANSPORT-007` global ; +- [`../../docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md`](../../docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md) — matrice finale validée `52/52 + 14/14` et audit `KSP-TRANSPORT-007` global ; - [`../../config/std.transport.json`](../../config/std.transport.json) — configuration standard HTTP. diff --git a/crates/ksp-onchain-transport-lib/USAGE.md b/crates/ksp-onchain-transport-lib/USAGE.md index f7093ac..9c3d522 100644 --- a/crates/ksp-onchain-transport-lib/USAGE.md +++ b/crates/ksp-onchain-transport-lib/USAGE.md @@ -1,5 +1,5 @@ - + # Utilisation de `ksp-onchain-transport-lib` @@ -96,7 +96,7 @@ let epoch = pool.get_epoch_info(&role, None).await; let vote_accounts = pool.get_vote_accounts(&role, None).await; ``` -La candidate `0.2.4-pre.009` contient les **52 wrappers typés courants** : 4 foundation + 22 Accounts/Tokens/Cluster + 11 Transactions + 10 Blocks + 5 Economics. Les DTOs Transport conservent les `null`, options, overloads et formes wire sans décodage Program/SPL métier. +La release stable `0.2.4` contient les **52 wrappers typés courants** : 4 foundation + 22 Accounts/Tokens/Cluster + 11 Transactions + 10 Blocks + 5 Economics. Les DTOs Transport conservent les `null`, options, overloads et formes wire sans décodage Program/SPL métier. Exemples Transaction représentatifs : @@ -182,7 +182,7 @@ La configuration standard route les événements `info` de Transport vers un fic ## 9. Smokes Devnet opt-in -Le smoke **Transport pur** construit ses settings programmatiquement et exerce un sous-ensemble représentatif d'Accounts/Tokens/Cluster, trois reads Transactions, puis des reads Blocks/Economics de la candidate `0.2.4` : +Le smoke **Transport pur** construit ses settings programmatiquement et exerce un sous-ensemble représentatif d'Accounts/Tokens/Cluster, trois reads Transactions, puis des reads Blocks/Economics de la release stable `0.2.4` : ```bash cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture diff --git a/crates/ksp-onchain-transport-lib/tests/public_api.rs b/crates/ksp-onchain-transport-lib/tests/public_api.rs index 7fc5435..8d44bef 100644 --- a/crates/ksp-onchain-transport-lib/tests/public_api.rs +++ b/crates/ksp-onchain-transport-lib/tests/public_api.rs @@ -396,7 +396,6 @@ fn public_v0_2_4_pre_003_simple_block_wrappers_are_available_from_crate_root() { let _minimum_ledger_slot = ksp_onchain_transport_lib::HttpTransportPool::minimum_ledger_slot; } - #[test] fn public_v0_2_4_pre_004_range_and_performance_wrappers_are_available_from_crate_root() { let _get_blocks = ksp_onchain_transport_lib::HttpTransportPool::get_blocks; @@ -406,9 +405,7 @@ fn public_v0_2_4_pre_004_range_and_performance_wrappers_are_available_from_crate #[test] fn public_v0_2_4_pre_005_block_production_wrapper_is_available_from_crate_root() { - let identity = "11111111111111111111111111111111" - .parse::() - .expect("public fixture identity must parse"); + let identity = "11111111111111111111111111111111".parse::().expect("public fixture identity must parse"); let range = ksp_onchain_transport_lib::SolanaBlockProductionRange::new(10, std::option::Option::Some(20)); let config = ksp_onchain_transport_lib::SolanaBlockProductionConfig::new( std::option::Option::Some(ksp_onchain_transport_lib::SolanaCommitment::Finalized), @@ -420,7 +417,6 @@ fn public_v0_2_4_pre_005_block_production_wrapper_is_available_from_crate_root() let _method = ksp_onchain_transport_lib::HttpTransportPool::get_block_production; } - #[allow(deprecated)] #[test] fn public_v0_2_4_pre_006_get_block_complete_request_forms_are_available_from_crate_root() { @@ -440,7 +436,6 @@ fn public_v0_2_4_pre_006_get_block_complete_request_forms_are_available_from_cra assert_eq!(config.rewards(), std::option::Option::Some(true)); } - #[test] fn public_v0_2_4_pre_007_simple_economics_wrappers_are_available_from_crate_root() { let _get_inflation_governor = ksp_onchain_transport_lib::HttpTransportPool::get_inflation_governor; diff --git a/crates/ksp-onchain-transport-lib/tests/release_completeness.rs b/crates/ksp-onchain-transport-lib/tests/release_completeness.rs index 370cbe4..8f821fe 100644 --- a/crates/ksp-onchain-transport-lib/tests/release_completeness.rs +++ b/crates/ksp-onchain-transport-lib/tests/release_completeness.rs @@ -445,13 +445,7 @@ fn release_v0_2_4_descriptor_set_is_exact_and_remains_read_retry_safe_through_wr "getRecentPerformanceSamples", "minimumLedgerSlot", ]; - let mut expected_economics = std::vec![ - "getInflationGovernor", - "getInflationRate", - "getInflationReward", - "getStakeMinimumDelegation", - "getSupply", - ]; + let mut expected_economics = std::vec!["getInflationGovernor", "getInflationRate", "getInflationReward", "getStakeMinimumDelegation", "getSupply",]; let mut actual_blocks = std::vec::Vec::new(); let mut actual_economics = std::vec::Vec::new(); for descriptor in ksp_onchain_transport_lib::current_http_rpc_methods() { @@ -503,7 +497,6 @@ fn release_v0_2_4_pre_003_simple_blocks_subset_is_exact_and_retry_safe() { assert_eq!(actual.len(), 5); } - #[test] fn release_v0_2_4_pre_004_range_performance_subset_is_exact_and_retry_safe() { let mut expected = std::vec!["getBlocks", "getBlocksWithLimit", "getRecentPerformanceSamples"]; @@ -538,7 +531,6 @@ fn release_v0_2_4_pre_005_block_production_subset_is_exact_and_retry_safe() { assert_eq!(descriptor.transport_retry_class(), ksp_onchain_transport_lib::TransportRetryClass::RetrySafe); } - #[test] fn release_v0_2_4_pre_006_get_block_completes_all_ten_block_wrappers_with_legacy_marker() { let expected = std::vec![ @@ -572,7 +564,6 @@ fn release_v0_2_4_pre_006_get_block_completes_all_ten_block_wrappers_with_legacy assert!(get_block.request_form_status().has_deprecated_legacy()); } - #[test] fn release_v0_2_4_pre_007_simple_economics_subset_is_exact_and_retry_safe() { let mut expected = std::vec!["getInflationGovernor", "getInflationRate", "getStakeMinimumDelegation", "getSupply"]; diff --git a/crates/ksp-onchain-transport-lib/tests/transport_devnet_smoke.rs b/crates/ksp-onchain-transport-lib/tests/transport_devnet_smoke.rs index ed15def..e949e5e 100644 --- a/crates/ksp-onchain-transport-lib/tests/transport_devnet_smoke.rs +++ b/crates/ksp-onchain-transport-lib/tests/transport_devnet_smoke.rs @@ -118,10 +118,7 @@ async fn programmatic_devnet_transport_reaches_accounts_tokens_cluster_transacti .expect("Devnet getTransactionCount smoke must succeed"); assert!(transaction_count > 0); - let block_height = pool - .get_block_height(&role, std::option::Option::Some(&transaction_context)) - .await - .expect("Devnet getBlockHeight smoke must succeed"); + let block_height = pool.get_block_height(&role, std::option::Option::Some(&transaction_context)).await.expect("Devnet getBlockHeight smoke must succeed"); assert!(block_height > 0); let inflation_rate = pool.get_inflation_rate(&role).await.expect("Devnet getInflationRate smoke must succeed"); diff --git a/deltas/0.2.4/rel.001.md b/deltas/0.2.4/rel.001.md new file mode 100644 index 0000000..d50ae1d --- /dev/null +++ b/deltas/0.2.4/rel.001.md @@ -0,0 +1,185 @@ + + + +# Delta `v0.2.4-rel.001` + +## Base + +Base attendue : + +```text +v0.2.4-pre.009-fix.001 +``` + +Le fix `pre.009-fix.001` est documentation-only : + +```text +workspace.package.version = "0.2.4-pre.9" +prompt 0.2.5 = version 2 +``` + +Version Cargo cible : + +```text +0.2.4 +``` + +## Objectif + +Publier `0.2.4 — HTTP Blocks + Economics + compliance HTTP finale` sans ajouter de capacité fonctionnelle après `pre.009`. + +`rel.001` est strictement publicationnelle : + +- passage du workspace à la version stable `0.2.4` ; +- clôture `[X]` de `0.2.4` dans le ROADMAP ; +- ajout de l'entrée stable `0.2.4` au CHANGELOG ; +- clôture du plan `011` et de la matrice `validation/007` avec les preuves opérateur ; +- synchronisation des index, de l'inventaire composant et des README/USAGE Transport vers le statut stable ; +- conservation du prompt `prompts/010-V0_2_5_START_PROMPT.md` version 2 comme point d'ouverture de `0.2.5`. + +Aucun fichier Rust de production, aucune API publique, aucune configuration runtime, aucune dépendance et aucune feature Cargo ne changent dans cette livraison. + +## Surface stable publiée + +La série HTTP `0.2.1`–`0.2.4` est complète : + +```text +0.2.1 Foundation 4 +0.2.2 Accounts/Tokens/Cluster 22 +0.2.3 Transactions 11 +0.2.4 Blocks/Economics 15 +------------------------------------- +Current typed 52/52 +Historical Deprecated/Removed 14/14 +``` + +`0.2.4` publie exactement les dix wrappers Blocks et cinq wrappers Economics. + +Points sensibles stabilisés notamment : + +```text +getBlock moderne + bare encoding legacy deprecated +transactionDetails full/signatures/none/accounts +versions transaction numériques génériques +SIMD-0118 numRewardPartitions omitted/null/value +SIMD-0291 commission / commissionBps indépendants +overloads getBlocks et limites runtime auditées +getBlockProduction range/identity/context +Economics sans formule/minimum local codé en dur +getInflationReward ordre/doublons/null positionnels/cardinalité +``` + +La canary publique référence les 52 wrappers courants plus les deux formes legacy séparées `get_block_legacy` et `get_transaction_legacy`. La canary release fige les ensembles exacts 52 + 14 et leur partition `4/22/11/15`. + +## Validation opérateur de la candidate + +Les résultats fournis le **18 août 2026** confirment : + +```text +cargo test -p ksp-config-lib OK +cargo test -p ksp-core-lib OK +cargo test -p ksp-app-config-desk OK +cargo test --workspace OK +``` + +Dans le workspace, Transport passe : + +```text +240 unit +27 public API +22 release completeness +``` + +Les canaries Core de dépendances et les canaries Logging d'ownership passent également. + +Les deux smokes Devnet opt-in ont été exécutés explicitement : + +```text +Transport pur Accounts/Tokens/Cluster/Transactions/Blocks/Economics 1 passed +Config -> Transport -> foundation 1 passed +``` + +Le smoke Config -> Transport reste une exception transitoire cross-crates et devra migrer vers une future surface d'intégration/orchestration/demo lorsqu'elle existera. + +Les sorties manuelles `cargo tree` demandées par la candidate ne figurent pas dans le journal opérateur fourni à la construction de `rel.001`. Elles ne sont donc pas marquées artificiellement comme exécutées ; la gate post-application ci-dessous les rejoue avant création du tag stable. + +## Documentation de clôture + +Mises à jour : + +```text +Cargo.toml +CHANGELOG.md +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 +docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md +prompts/000-README.md +``` + +Ajout : + +```text +deltas/0.2.4/rel.001.md +``` + +Le prompt `prompts/010-V0_2_5_START_PROMPT.md` reste inchangé par `rel.001` et conserve exactement la version 2 livrée par `pre.009-fix.001` : interopérabilité externe `.kspwallet`, threat model offline, metadata protégées, capacités VIEW/OWNER indépendantes, key slots/rotations à auditer et choix KDF/AEAD non préjugés avant `0.2.5-pre.001`. + +Tous les deltas historiques `0.2.4` précédents restent inchangés. + +## Commit et tag + +Identifiant de commit attendu : + +```text +v0.2.4-rel.001 +``` + +Le tag stable ne doit être créé qu'après application et validation de ce delta : + +```text +v0.2.4 +``` + +## Validation finale après application + +Gate stable : + +```bash +cargo fmt --all +cargo check --workspace +cargo clippy --workspace --all-targets +cargo test --workspace +``` + +Puis dernière inspection des graphes : + +```bash +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 +``` + +Vérifier en particulier : + +```text +ksp-config-lib -> ksp-onchain-transport-lib +Transport -X-> Config/Store/Program/tracing direct +aucun solana-client/rpc-client haut niveau +``` + +Après succès : commit `v0.2.4-rel.001`, puis création du tag `v0.2.4`. + +La session suivante s'ouvre avec `prompts/010-V0_2_5_START_PROMPT.md` et `0.2.5-pre.001` commence par audit officiel actuel + héritage utile + brainstorming + threat model + sizing avant implémentation cryptographique lourde. diff --git a/docs/000-README.md b/docs/000-README.md index 29da658..c64b2c0 100644 --- a/docs/000-README.md +++ b/docs/000-README.md @@ -1,5 +1,5 @@ - + # Documentation KSP @@ -69,7 +69,7 @@ D'autres sous-répertoires seront ajoutés uniquement lorsque leur rôle aura é ## Documents de planification -Le plan historique de la phase fondatrice clôturée est conservé dans [`plans/001-V0_0_3_PLAN.md`](plans/001-V0_0_3_PLAN.md). La séquence active des premières releases fonctionnelles est définie dans [`plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md`](plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md). Le plan détaillé de la release stable `0.1.1` est conservé comme historique clôturé dans [`plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md`](plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.2` est conservé comme historique clôturé dans [`plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md`](plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.3 — Configuration foundation` est conservé comme historique clôturé dans [`plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md`](plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.4 — ksp-app-config-desk` est conservé comme historique clôturé dans [`plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md`](plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md), avec sa matrice finale [`validation/001-V0_1_4_CONFIG_DESKTOP.md`](validation/001-V0_1_4_CONFIG_DESKTOP.md). Son prompt d'ouverture historique reste [`../prompts/004-V0_1_4_START_PROMPT.md`](../prompts/004-V0_1_4_START_PROMPT.md). La release stable `0.2.0` clôt l'audit de bot3 et le découpage de la série. Son plan directeur est conservé comme historique clôturé dans [`plans/007-V0_2_0_SERIES_PLANNING.md`](plans/007-V0_2_0_SERIES_PLANNING.md), avec sa matrice finale [`validation/002-V0_2_0_SERIES_PLANNING.md`](validation/002-V0_2_0_SERIES_PLANNING.md). La release stable `0.2.1 — HTTP Solana foundation` a été ouverte par [`../prompts/006-V0_2_1_START_PROMPT.md`](../prompts/006-V0_2_1_START_PROMPT.md). Son gate de sizing et sa matrice exhaustive sont conservés dans [`plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md), avec la validation finale [`validation/003-V0_2_1_ONCHAIN_HTTP.md`](validation/003-V0_2_1_ONCHAIN_HTTP.md), README/USAGE Transport et le smoke Devnet opt-in de composition Config -> Transport. Le prompt [`../prompts/007-V0_2_2_START_PROMPT.md`](../prompts/007-V0_2_2_START_PROMPT.md) a ouvert la release stable `0.2.2 — HTTP Accounts + Tokens + Cluster`. Son plan clôturé [`plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) conserve l'audit et l'implémentation des 22 wrappers typés, tandis que [`validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) enregistre les validations déterministes, les graphes Cargo et les deux smokes Devnet passés avant publication. Le prompt [`../prompts/008-V0_2_3_START_PROMPT.md`](../prompts/008-V0_2_3_START_PROMPT.md) a ouvert la release stable `0.2.3 — HTTP Transactions`. Son plan clôturé [`plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md`](plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md) conserve l'audit et l'implémentation des 11 wrappers ; le réaudit [`validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md`](validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md) confirme la complétude des 37 wrappers HTTP typés et [`validation/006-V0_2_3_HTTP_TRANSACTIONS.md`](validation/006-V0_2_3_HTTP_TRANSACTIONS.md) enregistre les validations finales, graphes Cargo et deux smokes Devnet passés avant publication. Le prompt [`../prompts/009-V0_2_4_START_PROMPT.md`](../prompts/009-V0_2_4_START_PROMPT.md) ouvre `0.2.4 — HTTP Blocks + Economics + compliance HTTP finale`. Son plan [`plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`](plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md), établi par `0.2.4-pre.001`, est amené en candidate par `pre.009` après implémentation des 15 wrappers et compliance `52/52 + 14/14`; la matrice [`validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md`](validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md) porte la preuve finale candidate. Le prompt [`../prompts/010-V0_2_5_START_PROMPT.md`](../prompts/010-V0_2_5_START_PROMPT.md) prépare `0.2.5 — Wallet foundation` après publication stable de `0.2.4`. +Le plan historique de la phase fondatrice clôturée est conservé dans [`plans/001-V0_0_3_PLAN.md`](plans/001-V0_0_3_PLAN.md). La séquence active des premières releases fonctionnelles est définie dans [`plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md`](plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md). Le plan détaillé de la release stable `0.1.1` est conservé comme historique clôturé dans [`plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md`](plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.2` est conservé comme historique clôturé dans [`plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md`](plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.3 — Configuration foundation` est conservé comme historique clôturé dans [`plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md`](plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.4 — ksp-app-config-desk` est conservé comme historique clôturé dans [`plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md`](plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md), avec sa matrice finale [`validation/001-V0_1_4_CONFIG_DESKTOP.md`](validation/001-V0_1_4_CONFIG_DESKTOP.md). Son prompt d'ouverture historique reste [`../prompts/004-V0_1_4_START_PROMPT.md`](../prompts/004-V0_1_4_START_PROMPT.md). La release stable `0.2.0` clôt l'audit de bot3 et le découpage de la série. Son plan directeur est conservé comme historique clôturé dans [`plans/007-V0_2_0_SERIES_PLANNING.md`](plans/007-V0_2_0_SERIES_PLANNING.md), avec sa matrice finale [`validation/002-V0_2_0_SERIES_PLANNING.md`](validation/002-V0_2_0_SERIES_PLANNING.md). La release stable `0.2.1 — HTTP Solana foundation` a été ouverte par [`../prompts/006-V0_2_1_START_PROMPT.md`](../prompts/006-V0_2_1_START_PROMPT.md). Son gate de sizing et sa matrice exhaustive sont conservés dans [`plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md), avec la validation finale [`validation/003-V0_2_1_ONCHAIN_HTTP.md`](validation/003-V0_2_1_ONCHAIN_HTTP.md), README/USAGE Transport et le smoke Devnet opt-in de composition Config -> Transport. Le prompt [`../prompts/007-V0_2_2_START_PROMPT.md`](../prompts/007-V0_2_2_START_PROMPT.md) a ouvert la release stable `0.2.2 — HTTP Accounts + Tokens + Cluster`. Son plan clôturé [`plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) conserve l'audit et l'implémentation des 22 wrappers typés, tandis que [`validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) enregistre les validations déterministes, les graphes Cargo et les deux smokes Devnet passés avant publication. Le prompt [`../prompts/008-V0_2_3_START_PROMPT.md`](../prompts/008-V0_2_3_START_PROMPT.md) a ouvert la release stable `0.2.3 — HTTP Transactions`. Son plan clôturé [`plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md`](plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md) conserve l'audit et l'implémentation des 11 wrappers ; le réaudit [`validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md`](validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md) confirme la complétude des 37 wrappers HTTP typés et [`validation/006-V0_2_3_HTTP_TRANSACTIONS.md`](validation/006-V0_2_3_HTTP_TRANSACTIONS.md) enregistre les validations finales, graphes Cargo et deux smokes Devnet passés avant publication. Le prompt [`../prompts/009-V0_2_4_START_PROMPT.md`](../prompts/009-V0_2_4_START_PROMPT.md) a ouvert la release stable `0.2.4 — HTTP Blocks + Economics + compliance HTTP finale`. Son plan clôturé [`plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`](plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md) conserve l’implémentation des 15 wrappers et la compliance `52/52 + 14/14`; la matrice finale [`validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md`](validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md) enregistre le réaudit SIMD/inventaire, les canaries globales et les preuves opérateur avant publication. Le prompt [`../prompts/010-V0_2_5_START_PROMPT.md`](../prompts/010-V0_2_5_START_PROMPT.md), finalisé par `0.2.4-pre.009-fix.001`, ouvre `0.2.5 — Wallet foundation` sur la base stable `v0.2.4`. `IDEAS.md` conserve les pistes et questions qui ne sont pas encore des engagements du roadmap ni des décisions architecturales. diff --git a/docs/architecture/004-COMPONENT_INVENTORY.md b/docs/architecture/004-COMPONENT_INVENTORY.md index da6f5b9..550c500 100644 --- a/docs/architecture/004-COMPONENT_INVENTORY.md +++ b/docs/architecture/004-COMPONENT_INVENTORY.md @@ -1,5 +1,5 @@ - + # Inventaire initial des composants KSP @@ -17,41 +17,41 @@ Ce document maintient l'inventaire synthétique des composants retenus ou presse ## Inventaire synthétique -| Domaine | Composant | Type | Statut | Première cible actuelle | Mission | -|-------------------------|------------------------------------------|--------------------|--------------|---------------------------------|----------------------------------------------------------| -| Core | `ksp-core-lib` | lib | Stable | `0.1.1` | Error/Result, Program IDs et primitives fondamentales | -| Logging | `ksp-logging-lib` | lib | Stable | `0.1.2` | façade unique tracing KSP | -| Config | `ksp-config-lib` | lib | Stable | `0.1.3` | documents, profils, env et persistence Config | -| Config Desk | `ksp-app-config-desk` | app | Stable | `0.1.4` | validation/management Config | -| On-chain HTTP | `ksp-onchain-transport-lib` | lib | Stable | `0.2.1` | foundation stable + candidate HTTP typed 52/52 en 0.2.4 | -| Wallet | `ksp-wallet-lib` | lib | Retenu | `0.2.5` | `.kspwallet`, secrets, signature, import/export | -| Wallet Desk | `ksp-app-wallet-desk` | app | Retenu | `0.2.6` | Wallet + Config composite + HTTP/balance | -| Standard WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.7` | WebSocket Solana complet, sessions/subscriptions | -| Helius WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.8` | LaserStream WebSocket comme extension du moteur standard | -| Yellowstone | `ksp-onchain-transport-lib` | lib | Pressenti | `0.2.9` | client gRPC standard/provider-neutral | -| Off-chain price | `ksp-offchain-transport-lib` | lib | Retenu | `0.2.10` | première abstraction/provider de prix SOL/USD, SOL/EUR | -| Price Desk | nom à fixer | app | Retenu | `0.2.11` | visualisation/validation des prix | -| Wire | `ksp-interface-lib` | lib | Retenu | `0.2.12` | façade wire officielle + API publique wire | -| Program API | `ksp-program-api` | API | Retenu | `0.2.13` | contrats extensibles Program | -| Program impl. | `ksp-program-lib` | lib | Retenu | vertical slices ultérieurs | implementations Program officielles | -| Program extension | `ksp-program--lib` | lib externe | À la demande | dès besoin | implementation externe de `ksp-program-api` | -| Store API | `ksp-store-api` | API | Retenu | `0.3.1` | contrats persistence backend-agnostic, RAW d'abord | -| Store PostgreSQL | `ksp-store-lib` | lib | Retenu | `0.3.1` | backend PostgreSQL officiel, RAW d'abord | -| Job lifecycle | `ksp-job-api` | API | Retenu | `0.3.3` | lifecycle des jobs terminables | -| Backfill | `ksp-job-backfill` | job/lib à préciser | Retenu | `0.3.3` | acquisition historique vers RAW | -| Backfill Desk | nom à fixer | app | Retenu | `0.3.4` | contrôle/inspection du backfill RAW | -| Worker lifecycle | `ksp-worker-api` | API | Retenu | fin couche RAW | lifecycle des services continus | -| RAW worker | `ksp-worker-raw-retriever` ou nom révisé | worker | Retenu | fin couche RAW | acquisition live vers RAW | -| CORE processor | nom à fixer | processor/lib | Retenu | couche CORE | normalisation Solana générique RAW -> CORE | -| CORE worker | nom à fixer | worker | Retenu | fin couche CORE | backlog RAW -> CORE continu | -| Materializer API | `ksp-materializer-api` | API | Retenu | premier groupe DECODE | contrats extensibles matérialisation | -| Materializer impl. | `ksp-materializer-lib` | lib | Retenu | premier groupe DECODE | implementations officielles communes | -| Execution policy | `ksp-execution-policy-api` | API | Retenu | premier vrai besoin execution | décision/safety multi-contexte | -| Execution orchestration | `ksp-execution-lib` | lib | Retenu | premier vrai cycle execution | Program + policy + Wallet + transport | -| Scenarios | `ksp-scenario--lib` | lib | Retenu | vertical slices | validation métier/devnet par groupe | -| Scenario API | `ksp-scenario-api` | API | Non retenu | — | norme souple avant trait commun | -| Market Desk | `ksp-app-market-desk` | app | Pressenti | après Meteora/Raydium/Pump/Orca | tokens, pools, trades, liquidity, price, OHLC | -| Trading Intelligence | noms à définir | libs/jobs | Futur | après données stables | features/signaux/anomalies/ML | +| Domaine | Composant | Type | Statut | Première cible actuelle | Mission | +|-------------------------|------------------------------------------|--------------------|--------------|---------------------------------|-------------------------------------------------------------| +| Core | `ksp-core-lib` | lib | Stable | `0.1.1` | Error/Result, Program IDs et primitives fondamentales | +| Logging | `ksp-logging-lib` | lib | Stable | `0.1.2` | façade unique tracing KSP | +| Config | `ksp-config-lib` | lib | Stable | `0.1.3` | documents, profils, env et persistence Config | +| Config Desk | `ksp-app-config-desk` | app | Stable | `0.1.4` | validation/management Config | +| On-chain HTTP | `ksp-onchain-transport-lib` | lib | Stable | `0.2.1`–`0.2.4` | HTTP standard complet : 52/52 current + 14/14 historical | +| Wallet | `ksp-wallet-lib` | lib | Retenu | `0.2.5` | `.kspwallet`, VIEW/OWNER, secrets, signature, import/export | +| Wallet Desk | `ksp-app-wallet-desk` | app | Retenu | `0.2.6` | Wallet + Config composite + HTTP/balance | +| Standard WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.7` | WebSocket Solana complet, sessions/subscriptions | +| Helius WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.8` | LaserStream WebSocket comme extension du moteur standard | +| Yellowstone | `ksp-onchain-transport-lib` | lib | Pressenti | `0.2.9` | client gRPC standard/provider-neutral | +| Off-chain price | `ksp-offchain-transport-lib` | lib | Retenu | `0.2.10` | première abstraction/provider de prix SOL/USD, SOL/EUR | +| Price Desk | nom à fixer | app | Retenu | `0.2.11` | visualisation/validation des prix | +| Wire | `ksp-interface-lib` | lib | Retenu | `0.2.12` | façade wire officielle + API publique wire | +| Program API | `ksp-program-api` | API | Retenu | `0.2.13` | contrats extensibles Program | +| Program impl. | `ksp-program-lib` | lib | Retenu | vertical slices ultérieurs | implementations Program officielles | +| Program extension | `ksp-program--lib` | lib externe | À la demande | dès besoin | implementation externe de `ksp-program-api` | +| Store API | `ksp-store-api` | API | Retenu | `0.3.1` | contrats persistence backend-agnostic, RAW d'abord | +| Store PostgreSQL | `ksp-store-lib` | lib | Retenu | `0.3.1` | backend PostgreSQL officiel, RAW d'abord | +| Job lifecycle | `ksp-job-api` | API | Retenu | `0.3.3` | lifecycle des jobs terminables | +| Backfill | `ksp-job-backfill` | job/lib à préciser | Retenu | `0.3.3` | acquisition historique vers RAW | +| Backfill Desk | nom à fixer | app | Retenu | `0.3.4` | contrôle/inspection du backfill RAW | +| Worker lifecycle | `ksp-worker-api` | API | Retenu | fin couche RAW | lifecycle des services continus | +| RAW worker | `ksp-worker-raw-retriever` ou nom révisé | worker | Retenu | fin couche RAW | acquisition live vers RAW | +| CORE processor | nom à fixer | processor/lib | Retenu | couche CORE | normalisation Solana générique RAW -> CORE | +| CORE worker | nom à fixer | worker | Retenu | fin couche CORE | backlog RAW -> CORE continu | +| Materializer API | `ksp-materializer-api` | API | Retenu | premier groupe DECODE | contrats extensibles matérialisation | +| Materializer impl. | `ksp-materializer-lib` | lib | Retenu | premier groupe DECODE | implementations officielles communes | +| Execution policy | `ksp-execution-policy-api` | API | Retenu | premier vrai besoin execution | décision/safety multi-contexte | +| Execution orchestration | `ksp-execution-lib` | lib | Retenu | premier vrai cycle execution | Program + policy + Wallet + transport | +| Scenarios | `ksp-scenario--lib` | lib | Retenu | vertical slices | validation métier/devnet par groupe | +| Scenario API | `ksp-scenario-api` | API | Non retenu | — | norme souple avant trait commun | +| Market Desk | `ksp-app-market-desk` | app | Pressenti | après Meteora/Raydium/Pump/Orca | tokens, pools, trades, liquidity, price, OHLC | +| Trading Intelligence | noms à définir | libs/jobs | Futur | après données stables | features/signaux/anomalies/ML | ## Contrats séparés retenus @@ -78,7 +78,7 @@ ksp-data-api ## Transport -`ksp-onchain-transport-lib` doit couvrir l'intégralité des opérations documentées de la surface ciblée par chaque release. `0.2.1` stabilise la foundation HTTP et quatre wrappers typés canari, `0.2.2` ajoute 22 wrappers Accounts/Tokens/Cluster et `0.2.3` stabilise les 11 Transactions. La candidate `0.2.4-pre.009` ajoute les 10 Blocks + 5 Economics et atteint 52/52 méthodes HTTP courantes typées, avec 14/14 historiques Deprecated/Removed conservées pour compliance. Les statuts deprecated/obsolete encore fonctionnels et unstable/experimental restent exposés avec warning runtime KSP. +`ksp-onchain-transport-lib` doit couvrir l'intégralité des opérations documentées de la surface ciblée par chaque release. `0.2.1` stabilise la foundation HTTP et quatre wrappers typés canari, `0.2.2` ajoute 22 wrappers Accounts/Tokens/Cluster et `0.2.3` stabilise les 11 Transactions. La release stable `0.2.4` ajoute les 10 Blocks + 5 Economics et atteint 52/52 méthodes HTTP courantes typées, avec 14/14 historiques Deprecated/Removed conservées pour compliance. Les statuts deprecated/obsolete encore fonctionnels et unstable/experimental restent exposés avec warning runtime KSP. La Config standard Transport appartient à `ksp-config-lib`, qui adapte vers les settings publics du transport ; le transport ne dépend jamais de Config. diff --git a/docs/plans/000-README.md b/docs/plans/000-README.md index f311699..ce3ee17 100644 --- a/docs/plans/000-README.md +++ b/docs/plans/000-README.md @@ -1,5 +1,5 @@ - + # Plans KSP @@ -19,7 +19,7 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou - [`008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](008-V0_2_1_ONCHAIN_HTTP_PLAN.md) — plan de `0.2.1`, établi par `0.2.1-pre.001`, recalibré par `pre.001-fix.001` et amené en clôture candidate par `pre.007`; il conserve l'inventaire 52 méthodes HTTP courantes + 14 Deprecated historiques, le design Transport/Config et le split de couverture typée sur `0.2.1`–`0.2.4`. - [`009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) — plan clôturé de la release stable `0.2.2`, établi par `pre.001`, corrigé après réaudit Agave v4.2.1 puis exécuté jusqu'à `pre.007-fix.002`; il couvre les 22 wrappers Accounts/Tokens/Cluster, le smoke Transport opt-in et la préparation de `0.2.3`. - [`010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md`](010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md) — plan historique clôturé de la release stable `0.2.3 — HTTP Transactions`, ouvert par `pre.001`, exécuté jusqu'à `pre.009` puis publié par `rel.001`; il couvre les 11 méthodes, la classification `8 Read / 2 WriteSubmission / 1 Simulation`, `KSP-TRANSPORT-007`, le no-resend et la préparation de `0.2.4`. -- [`011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`](011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md) — plan de `0.2.4`, ouvert par `pre.001` et amené en clôture candidate par `pre.009`; il couvre les 10 Blocks + 5 Economics, les overloads/legacy, les wires/runtime sensibles et la compliance finale `52/52 + 14/14` sous `KSP-TRANSPORT-007`. +- [`011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`](011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md) — plan historique clôturé de la release stable `0.2.4`, ouvert par `pre.001`, exécuté jusqu’à `pre.009`, complété par le fix documentaire Wallet `pre.009-fix.001` puis publié par `rel.001`; il couvre les 10 Blocks + 5 Economics et la compliance finale `52/52 + 14/14` sous `KSP-TRANSPORT-007`. Le `pre.001` de chaque release fonctionnelle peut introduire son propre plan détaillé lorsque la release s'ouvre. diff --git a/docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md b/docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md index 16ca04a..dc69a69 100644 --- a/docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md +++ b/docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md @@ -1,5 +1,5 @@ - + # Séquence des releases fonctionnelles KSP @@ -394,15 +394,15 @@ Chaque `pre.001` réaudite la documentation officielle actuelle. Les méthodes D `0.2.3-pre.001` réaudite le 2026-08-18 la catégorie Transactions contre la documentation Solana actuelle et Agave v4.2.1 : les 11 méthodes prévues restent exactes, la classification `8 Read / RetrySafe`, `2 WriteSubmission / NeverAfterDispatch` et `1 Simulation / RetrySafe` reste correcte, et le gate de sizing est positif. `pre.002`–`pre.007` livrent ensuite les primitives wire puis les 11 wrappers, `pre.008` réaudite rétroactivement `KSP-TRANSPORT-007` sur les 37 wrappers HTTP typés sans remédiation fonctionnelle, et `pre.009` prépare la candidate finale avec documentation, smoke Transport read-only étendu et prompt `0.2.4`. `0.2.3-rel.001` publie cette surface stable après validation du workspace, des graphes Cargo Transport/Config et des deux smokes Devnet. Aucun `base64`, `bs58`, `wincode` ni client RPC Solana supplémentaire n'est ajouté : les payloads sérialisés restent opaques dans Transport tant qu'un besoin de décodage local n'est pas démontré. Le plan détaillé clôturé est `docs/plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md`. -`0.2.4-pre.001` réaudite le même jour l'inventaire HTTP officiel et la baseline runtime actuelle : les 15 méthodes réservées restent exactement 10 Blocks + 5 Economics, la navigation Deprecated reste à 14 historiques et Agave stable `v4.2.1` confirme les overloads/limites/extensions sensibles (`getBlock` legacy, `getBlocks`, plafond 500_000, performance samples 720, `commissionBps`). Le gate de sizing est positif sans split de release. `pre.002`–`pre.008` livrent ensuite les DTOs/wires et les 15 wrappers ; `pre.008-fix.001` corrige uniquement la conformité Clippy. `pre.009` réaudite l'index officiel et les SIMDs HTTP sensibles, confirme l'égalité exacte des ensembles 52 current + 14 Deprecated avec le registre, ajoute les canaries de wrapper/compliance globales, étend le smoke Transport aux familles Blocks/Economics, synchronise la documentation et prépare `0.2.5 — Wallet foundation`. Le plan détaillé est `docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`. +`0.2.4-pre.001` réaudite le même jour l'inventaire HTTP officiel et la baseline runtime actuelle : les 15 méthodes réservées restent exactement 10 Blocks + 5 Economics, la navigation Deprecated reste à 14 historiques et Agave stable `v4.2.1` confirme les overloads/limites/extensions sensibles (`getBlock` legacy, `getBlocks`, plafond 500_000, performance samples 720, `commissionBps`). Le gate de sizing est positif sans split de release. `pre.002`–`pre.008` livrent ensuite les DTOs/wires et les 15 wrappers ; `pre.008-fix.001` corrige uniquement la conformité Clippy. `pre.009` réaudite l'index officiel et les SIMDs HTTP sensibles, confirme l'égalité exacte des ensembles 52 current + 14 Deprecated avec le registre, ajoute les canaries de wrapper/compliance globales, étend le smoke Transport aux familles Blocks/Economics et synchronise la documentation. `pre.009-fix.001` finalise ensuite le prompt Wallet sans changement Cargo. `0.2.4-rel.001` publie la surface stable après validation du workspace et des deux smokes Devnet. Le plan détaillé clôturé est `docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`. ## `0.2.5` — Wallet foundation Mission : créer `ksp-wallet-lib` et le format `.kspwallet`. -Inclure protection du secret, pubkey/identity, signature, import/export extensible, changement de mot de passe et publication sûre. +Inclure un format `.kspwallet` documenté et interopérable, un threat model d’attaque offline, des capacités indépendantes `VIEW`/`OWNER`, Pubkey/alias/notes protégés lorsque verrouillé, key slots/rotations sans changement de keypair, signature sans exposition publique du secret brut et import/export extensible. -Exclure : temporary wallet JSON historique et `WalletPolicy`. +`pre.001` doit auditer les choix KDF/AEAD/key wrapping/secret memory actuels avant de figer V1. Exclure : temporary wallet JSON historique et `WalletPolicy`. ## `0.2.6` — Wallet Desk diff --git a/docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md b/docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md index 714c252..c6bdb16 100644 --- a/docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md +++ b/docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md @@ -1,5 +1,5 @@ - + # Plan `0.2.4` — HTTP Blocks + Economics + compliance HTTP finale @@ -18,7 +18,7 @@ Ce plan ouvre `0.2.4` par `0.2.4-pre.001` sur la base stable attendue `v0.2.3`. La mission de `0.2.4` est strictement de compléter les **10 Blocks + 5 Economics** déjà affectées à `V0_2_4`, puis de fermer la compliance HTTP globale **52/52 current + 14/14 historical** sous la règle `KSP-TRANSPORT-007`. -`0.2.4-pre.009` amène ce plan au statut **candidate de clôture** : les 15/15 wrappers `V0_2_4` sont implémentés, l'inventaire officiel final reste 52 current + 14 Deprecated, les deux ensembles correspondent exactement au registre KSP et la matrice durable de clôture est `docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md`. Le statut stable reste réservé à `rel.001`. +`0.2.4-rel.001` clôt ce plan sous statut **stable** : les 15/15 wrappers `V0_2_4` sont publiés, l'inventaire final reste 52 current + 14 Deprecated, les deux ensembles correspondent exactement au registre KSP et la matrice durable de clôture est `docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md`. ## Gate de sizing `pre.001` @@ -542,8 +542,31 @@ réécriture des deltas historiques - dernière prerelease candidate complète ; - `0.2.4-rel.001` strictement publicationnelle. +## Publication stable `rel.001` + +La candidate `pre.009`, complétée par le fix documentaire `pre.009-fix.001`, a reçu les preuves opérateur de clôture suivantes le **18 août 2026** : + +```text +cargo test -p ksp-config-lib OK +cargo test -p ksp-core-lib OK +cargo test -p ksp-app-config-desk OK +cargo test --workspace OK + +Transport dans le workspace : + 240 unit passed + 27 public API passed + 22 release completeness passed + +smoke Devnet Transport pur 1 passed +smoke Devnet Config -> Transport 1 passed +``` + +Les canaries workspace de dépendances et d’ownership Logging passent également dans `cargo test --workspace`. Les sorties manuelles `cargo tree` n’étant pas présentes dans le journal opérateur fourni à la publication, elles ne sont pas déclarées artificiellement comme exécutées ; les contrôles de graphe restent à rejouer avec la gate finale post-application de `rel.001` avant création du tag. + +`rel.001` ne modifie aucun wrapper, DTO, comportement réseau, dépendance ou feature Cargo : il passe uniquement le workspace à `0.2.4` stable et synchronise la documentation de publication. + ## Questions ouvertes -Aucune question bloquante pour la candidate `pre.009`. +Aucune question fonctionnelle ou wire bloquante pour `0.2.4`. -Les choix fonctionnels et wire de `0.2.4` sont désormais figés pour cette release. Toute nouvelle évolution officielle détectée après cette candidate appartient à une release ultérieure, sauf défaut de conformité démontré nécessitant un fix avant publication. +Les choix fonctionnels et wire de `0.2.4` sont figés. Toute nouvelle évolution officielle détectée après publication appartient à une release ultérieure, sauf défaut de conformité démontré nécessitant un correctif stable explicite. diff --git a/docs/validation/000-README.md b/docs/validation/000-README.md index 8b122a7..22b9f39 100644 --- a/docs/validation/000-README.md +++ b/docs/validation/000-README.md @@ -1,5 +1,5 @@ - + # Validations KSP @@ -16,4 +16,4 @@ Documents : - [`005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md`](005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md) — réaudit rétroactif de complétude `KSP-TRANSPORT-007` des 37 wrappers HTTP typés livrés de `0.2.1` à `0.2.3-pre.007`, avec preuves Solana/Agave et verdict méthode par méthode. - [`006-V0_2_3_HTTP_TRANSACTIONS.md`](006-V0_2_3_HTTP_TRANSACTIONS.md) — matrice finale validée de `0.2.3`, 11 wrappers Transactions, sécurité write/simulation, réaudit 52+14, `KSP-TRANSPORT-007` 37/37, graphes Cargo et deux smokes Devnet passés avant publication stable. -- [`007-V0_2_4_HTTP_FINAL_COMPLIANCE.md`](007-V0_2_4_HTTP_FINAL_COMPLIANCE.md) — matrice candidate de clôture `0.2.4`, inventaire exact 52 current + 14 Deprecated, preuve typed 52/52, audit SIMD final, `KSP-TRANSPORT-007`, smokes et gates de graphes/publication. +- [`007-V0_2_4_HTTP_FINAL_COMPLIANCE.md`](007-V0_2_4_HTTP_FINAL_COMPLIANCE.md) — matrice finale validée de `0.2.4`, inventaire exact 52 current + 14 Deprecated, preuve typed 52/52, audit SIMD final, `KSP-TRANSPORT-007`, workspace complet et deux smokes Devnet passés avant publication stable. diff --git a/docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md b/docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md index d36b460..76b3312 100644 --- a/docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md +++ b/docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md @@ -1,11 +1,11 @@ - + -# Validation candidate `0.2.4` — HTTP Blocks + Economics + compliance finale +# Validation finale `0.2.4` — HTTP Blocks + Economics + compliance finale ## Objet -Cette matrice porte la preuve de clôture candidate de `0.2.4 — HTTP Blocks + Economics + compliance HTTP finale`. +Cette matrice porte la preuve de clôture stable de `0.2.4 — HTTP Blocks + Economics + compliance HTTP finale`. Elle complète les validations historiques : @@ -16,7 +16,7 @@ Elle complète les validations historiques : `0.2.4-pre.009` n'ajoute pas de nouvelle méthode RPC métier. Il agrège les preuves de complétude, étend le smoke live aux familles nouvellement livrées, synchronise la documentation et prépare `0.2.5`. -`0.2.4-rel.001` reste strictement publicationnelle après validation opérateur complète de cette candidate. +`0.2.4-rel.001` est strictement publicationnelle : aucun contrat RPC ou comportement réseau n’est ajouté après la candidate. ## Base opérateur validée @@ -266,7 +266,7 @@ Points de sensibilité couverts : - `commission` nullable et `commissionBps` présent/omis/null indépendants ; - erreurs RPC de contexte/rewards period conservées comme erreurs applicatives distantes. -Verdict candidate : +Verdict final : ```text KSP-TRANSPORT-007 current wrappers == 52/52 @@ -341,44 +341,75 @@ Interprétation importante : `tracing` peut apparaître **transitivement** sous Les canaries workspace de dépendances restent des règles globales et ne sont pas déplacées dans Transport. -## Gate candidate `0.2.4-pre.009` +## Gate opérateur finale `0.2.4-pre.009` -Validation déterministe immédiate attendue : - -```bash -cargo fmt --all -cargo check --workspace -cargo clippy --workspace --all-targets -cargo test -p ksp-onchain-transport-lib -``` - -Compteurs Transport attendus après les deux nouvelles canaries finales : +Les résultats opérateur fournis le **18 août 2026** confirment les tests de clôture suivants : ```text -240 unit -27 public API -22 release completeness -1 smoke live ignored par défaut -``` - -Gate de clôture avant `rel.001` : - -```bash cargo test -p ksp-config-lib + 95 unit passed + 5 ownership passed + 13 public API passed + 1 smoke Devnet ignored par défaut + cargo test -p ksp-core-lib + 14 unit passed + 3 public API passed + 2 workspace_dependencies passed + 1 workspace_logging passed + cargo test -p ksp-app-config-desk -cargo test --workspace + 63 unit passed + 2 desktop_contract passed + 2 desktop_security passed + 1 public API passed + +cargo test --workspace passed + +Transport observé dans le workspace + 240 unit passed + 27 public API passed + 22 release completeness passed + 1 smoke Devnet ignored par défaut ``` -Puis inspection des huit graphes Cargo ci-dessus et exécution explicite des deux smokes Devnet. +Le workspace valide également les suites Logging, dont les canaries d'ownership de la façade tracing. Les tests `workspace_dependencies` de Core confirment notamment que le manifest Transport préserve le firewall de dépendances. -Les résultats opérateur de `pre.009` seront enregistrés ici pendant `rel.001`; ils ne sont pas anticipés dans la candidate. +Les deux smokes réseau ont ensuite été exécutés explicitement : + +```text +Transport pur : + programmatic_devnet_transport_reaches_accounts_tokens_cluster_transactions_blocks_and_economics_reads + -> 1 passed + +Config -> Transport : + committed_devnet_transport_profile_reaches_all_foundation_canaries + -> 1 passed +``` + +Le premier smoke est durable et appartient à Transport. Le second reste l'exception transitoire cross-crates déjà documentée. + +### Graphes Cargo + +La candidate définit les huit graphes et recherches de frontière à inspecter dans la section précédente. Le journal opérateur fourni pour `rel.001` ne contient pas leurs sorties textuelles ; cette matrice **ne les déclare donc pas comme exécutés**. + +En revanche, les canaries automatisées correspondantes passent dans le workspace : + +```text +workspace_dependency_table_does_not_activate_consumer_features passed +transport_manifest_preserves_ksp_dependency_firewall passed +behavioral_crates_own_explicit_tracing_targets passed +workspace_crates_do_not_bypass_ksp_logging_facade passed +``` + +Les contrôles `cargo tree` restent à rejouer avant création du tag stable afin de disposer d'une dernière preuve manuelle de graphe sur la version `0.2.4` publiée. ## Documentation et prochaine release -La candidate synchronise : +La publication synchronise : ```text +CHANGELOG.md ROADMAP.md README/USAGE Transport inventaire composant @@ -394,36 +425,50 @@ prompts/010-V0_2_5_START_PROMPT.md 0.2.5 — Wallet foundation ``` -Il conserve notamment les frontières déjà décidées : +Sa **version 2**, livrée par le fix documentaire `0.2.4-pre.009-fix.001`, ajoute notamment : ```text -ksp-wallet-lib -.kspwallet -protection des secrets -signature -import/export extensible -changement de mot de passe -atomicité/no-clobber - -Wallet -X-> Config -Wallet -X-> Transport -Wallet -X-> execution policy -WalletPolicy hors Wallet +interopérabilité externe du .kspwallet +threat model de bruteforce offline +VIEW / OWNER indépendants +Pubkey / alias / notes non lisibles wallet verrouillé +key slots / key wrapping à auditer +rotation des passwords sans changement de keypair +read-only cryptographique VIEW à étudier ``` ## Publication `rel.001` -Après validation opérateur complète : +La livraison publicationnelle applique : ```text workspace.package.version -> 0.2.4 ROADMAP : 0.2.4 -> [X] CHANGELOG : synthèse stable 0.2.4 -plan 011 / validation 007 : preuves finales opérateur + statut stable -README/USAGE/inventaires : candidate -> stable +plan 011 / validation 007 : statut stable + preuves opérateur deltas/0.2.4/rel.001.md -commit : v0.2.4-rel.001 -tag stable : v0.2.4 +commit attendu : v0.2.4-rel.001 +tag stable après gate finale : v0.2.4 ``` -Aucun wrapper, DTO, comportement runtime, dependency ou feature Cargo ne doit être ajouté pendant `rel.001`. +Aucun wrapper, DTO, comportement runtime, dependency ou feature Cargo n'est ajouté pendant `rel.001`. + +Gate finale post-application avant commit/tag : + +```bash +cargo fmt --all +cargo check --workspace +cargo clippy --workspace --all-targets +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 +``` + +Les smokes Devnet ont déjà été passés sur `pre.009`; comme `rel.001` ne modifie aucun code/runtime, leur répétition n'est pas nécessaire à la démonstration fonctionnelle, mais reste autorisée avant tag si l'opérateur souhaite une ultime vérification réseau. diff --git a/prompts/000-README.md b/prompts/000-README.md index 4b3c67e..d57a691 100644 --- a/prompts/000-README.md +++ b/prompts/000-README.md @@ -1,5 +1,5 @@ - + # Prompts KSP @@ -30,4 +30,4 @@ Le prompt générique `0.1.x` a été affiné pendant `0.0.3` puis remplacé par - [`007-V0_2_2_START_PROMPT.md`](007-V0_2_2_START_PROMPT.md) — prompt préparé par la dernière prerelease de `0.2.1`, destiné à ouvrir `0.2.2 — HTTP Accounts + Tokens + Cluster` après publication stable de `0.2.1`; il cible les 22 wrappers typés restants de ces familles et impose un nouvel audit officiel/gate de sizing à `pre.001`. - [`008-V0_2_3_START_PROMPT.md`](008-V0_2_3_START_PROMPT.md) — prompt préparé par la dernière prerelease de `0.2.2`, destiné à ouvrir `0.2.3 — HTTP Transactions` après publication stable de `0.2.2`; il cible les 11 méthodes Transactions et impose un audit actuel ainsi que la politique no-resend des write submissions. - [`009-V0_2_4_START_PROMPT.md`](009-V0_2_4_START_PROMPT.md) — prompt préparé par `0.2.3-pre.009`, destiné à ouvrir `0.2.4 — HTTP Blocks + Economics + compliance HTTP finale` après publication stable de `0.2.3`; il cible les 15 wrappers restants et impose `KSP-TRANSPORT-007` ainsi qu'un nouvel audit/sizing à `pre.001`. -- [`010-V0_2_5_START_PROMPT.md`](010-V0_2_5_START_PROMPT.md) — prompt préparé par `0.2.4-pre.009`, destiné à ouvrir `0.2.5 — Wallet foundation` après publication stable de `0.2.4`; il impose un `pre.001` d'audit/brainstorming/sizing avant choix cryptographiques et cadre `.kspwallet`, secrets, signature, persistence atomique et import/export extensible sans `WalletPolicy`. +- [`010-V0_2_5_START_PROMPT.md`](010-V0_2_5_START_PROMPT.md) — prompt préparé par `0.2.4-pre.009` puis finalisé en version 2 par `pre.009-fix.001`, destiné à ouvrir `0.2.5 — Wallet foundation` sur la base stable `v0.2.4`; il impose audit/threat-model/sizing avant choix cryptographiques et cadre `.kspwallet` interopérable, capacités indépendantes VIEW/OWNER, metadata protégées, key slots/rotations, signature, persistence atomique et import/export extensible sans `WalletPolicy`.