v0.2.4-pre.009
This commit is contained in:
429
docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md
Normal file
429
docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md
Normal file
@@ -0,0 +1,429 @@
|
||||
<!-- file: docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Validation candidate `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`.
|
||||
|
||||
Elle complète les validations historiques :
|
||||
|
||||
- [`003-V0_2_1_ONCHAIN_HTTP.md`](003-V0_2_1_ONCHAIN_HTTP.md) — foundation HTTP et registre initial ;
|
||||
- [`004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) — 22 wrappers Accounts/Tokens/Cluster ;
|
||||
- [`005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md`](005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md) — réaudit `KSP-TRANSPORT-007` des 37 wrappers acquis avant `0.2.4` ;
|
||||
- [`006-V0_2_3_HTTP_TRANSACTIONS.md`](006-V0_2_3_HTTP_TRANSACTIONS.md) — 11 wrappers Transactions et clôture stable `0.2.3`.
|
||||
|
||||
`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.
|
||||
|
||||
## Base opérateur validée
|
||||
|
||||
La base `0.2.4-pre.008-fix.001` a été validée le **18 août 2026** avec :
|
||||
|
||||
```text
|
||||
cargo fmt --all OK
|
||||
cargo check --workspace OK
|
||||
cargo clippy --workspace --all-targets OK
|
||||
|
||||
Transport
|
||||
240 unit passed
|
||||
26 public API passed
|
||||
21 release completeness passed
|
||||
1 smoke live ignored par défaut
|
||||
0 failure
|
||||
```
|
||||
|
||||
Le fix ne modifie pas le contrat `getInflationReward`; il ajoute uniquement le `return` explicite exigé par la policy Clippy workspace.
|
||||
|
||||
## Réaudit officiel final — inventaire HTTP
|
||||
|
||||
Dernier contrôle effectué le **18 août 2026** contre l'index HTTP Solana courant :
|
||||
|
||||
```text
|
||||
https://solana.com/docs/rpc/http
|
||||
```
|
||||
|
||||
L'index contient toujours exactement **52 méthodes HTTP courantes**.
|
||||
|
||||
La navigation Deprecated officielle, visible depuis les pages sous :
|
||||
|
||||
```text
|
||||
https://solana.com/docs/rpc/deprecated/
|
||||
```
|
||||
|
||||
contient toujours exactement **14 méthodes historiques**.
|
||||
|
||||
Le rapprochement a été réalisé sur les **noms exacts**, pas uniquement sur les compteurs :
|
||||
|
||||
```text
|
||||
official current names == KSP current registry names == 52/52
|
||||
official deprecated names == KSP historical registry names == 14/14
|
||||
missing == 0
|
||||
extra == 0
|
||||
```
|
||||
|
||||
Aucun nouvel endpoint HTTP issu de SIMD-0180 ou d'une autre évolution d'interface n'apparaît dans l'index officiel actuel.
|
||||
|
||||
## Baseline Agave et audit SIMD final
|
||||
|
||||
La baseline runtime conservée pour le contrat de cette release reste **Agave `v4.2.1`**, déjà auditée depuis `pre.001`.
|
||||
|
||||
Le calendrier public Agave v4.2 observé le 18 août 2026 montre que le rollout v4.2 est encore en cours : Devnet a été livré en juillet/août et les étapes Mainnet-beta d'adoption générale/activation sont positionnées en août. Cette situation ne justifie pas de remplacer rétroactivement la baseline wire de la release sans différence stable démontrée.
|
||||
|
||||
Audit final minimal imposé par le plan :
|
||||
|
||||
| SIMD | Statut observé le 2026-08-18 | Conséquence HTTP KSP |
|
||||
|---------------------------------------------------|------------------------------|-------------------------------------------------------------------------------------------------------------------|
|
||||
| `0180` Vote Account Address Keyed Leader Schedule | Review | aucune nouvelle méthode HTTP officielle ; ne pas changer `getLeaderSchedule` par anticipation |
|
||||
| `0298` Bank Hash in Block Footer | Idea | aucun `bankHash` ajouté au wire stable `getBlock` |
|
||||
| `0301` parent bank hash | PR fermé, non mergé | aucun `parentBankHash` spéculatif |
|
||||
| `0307` Add Block Footer | Review | aucun `footer` ajouté à `SolanaGetBlockConfig`/`SolanaConfirmedBlock` tant que la baseline stable ne l'expose pas |
|
||||
| `0385` Transaction V1 | Review | conserver `SolanaTransactionVersion::Number(u8)` générique et la canary version `1` |
|
||||
| `0490` Stake v5 | Review | `getStakeMinimumDelegation` reflète uniquement la valeur runtime ; aucun minimum local codé en dur |
|
||||
| `0550` Double Disinflation Rate | Review | `getInflationGovernor`/`getInflationRate` reflètent les valeurs runtime ; aucune formule locale |
|
||||
| `0553` Base Inclusion and Resource-based Fee | Draft | changement économique/consensus à surveiller ; aucun nouveau wrapper ou champ HTTP stable ajouté |
|
||||
|
||||
Extensions wire déjà acquises et réauditées explicitement : **SIMD-0118** et **SIMD-0291**.
|
||||
|
||||
| SIMD | Statut observé le 2026-08-18 | Contrat déjà matérialisé dans KSP |
|
||||
|-----------------------------------------------|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `0118` Partitioned Epoch Rewards Distribution | Activated | `getBlock.numRewardPartitions` reste lossless : omission, `null` et valeur sont distincts ; KSP ne synthétise jamais `0` |
|
||||
| `0291` Commission Rate in Basis Points | Review | `commission` et `commissionBps` restent indépendants dans les rewards de bloc et d'inflation ; les sous-arbres transaction restent lossless |
|
||||
|
||||
Le statut documentaire `Review` de SIMD-0291 ne justifie pas de supprimer un champ déjà livré par Agave `v4.2.1`. Inversement, KSP ne déduit jamais `commissionBps` depuis `commission`, ni l'inverse.
|
||||
|
||||
Sources SIMD :
|
||||
|
||||
```text
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0118-partitioned-epoch-reward-distribution.md
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0180-vote-account-leader-schedule.md
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0291-commission-rate-in-basis-points.md
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0298-bank-hash-in-block-footer.md
|
||||
https://github.com/solana-foundation/solana-improvement-documents/pull/301
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0307-add-block-footer.md
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0385-transaction-v1.md
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0490-upgrade-stake-to-v5.md
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0550-double-disinflation.md
|
||||
https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0553-resource-fee-burn.md
|
||||
```
|
||||
|
||||
## Compliance des 52 méthodes courantes
|
||||
|
||||
La canary `public_v0_2_4_pre_009_all_52_current_typed_wrappers_and_legacy_forms_are_available_from_crate_root` référence directement chaque méthode Rust publique ci-dessous. Une méthode ne compte donc pas comme typed-complete uniquement parce qu'un descriptor ou l'exécuteur raw existe.
|
||||
|
||||
| Méthode RPC | Catégorie | Release typed | Classe | Wrapper public |
|
||||
|-------------------------------------|--------------|---------------|--------------------------------------|------------------------------------------|
|
||||
| `getAccountInfo` | Accounts | `0.2.2` | Read / RetrySafe | `get_account_info` |
|
||||
| `getBalance` | Accounts | `0.2.1` | Read / RetrySafe | `get_balance` |
|
||||
| `getLargestAccounts` | Accounts | `0.2.2` | Read / RetrySafe | `get_largest_accounts` |
|
||||
| `getMinimumBalanceForRentExemption` | Accounts | `0.2.2` | Read / RetrySafe | `get_minimum_balance_for_rent_exemption` |
|
||||
| `getMultipleAccounts` | Accounts | `0.2.2` | Read / RetrySafe | `get_multiple_accounts` |
|
||||
| `getProgramAccounts` | Accounts | `0.2.2` | Read / RetrySafe | `get_program_accounts` |
|
||||
| `getTokenAccountBalance` | Tokens | `0.2.2` | Read / RetrySafe | `get_token_account_balance` |
|
||||
| `getTokenAccountsByDelegate` | Tokens | `0.2.2` | Read / RetrySafe | `get_token_accounts_by_delegate` |
|
||||
| `getTokenAccountsByOwner` | Tokens | `0.2.2` | Read / RetrySafe | `get_token_accounts_by_owner` |
|
||||
| `getTokenLargestAccounts` | Tokens | `0.2.2` | Read / RetrySafe | `get_token_largest_accounts` |
|
||||
| `getTokenSupply` | Tokens | `0.2.2` | Read / RetrySafe | `get_token_supply` |
|
||||
| `getFeeForMessage` | Transactions | `0.2.3` | Read / RetrySafe | `get_fee_for_message` |
|
||||
| `getLatestBlockhash` | Transactions | `0.2.3` | Read / RetrySafe | `get_latest_blockhash` |
|
||||
| `getRecentPrioritizationFees` | Transactions | `0.2.3` | Read / RetrySafe | `get_recent_prioritization_fees` |
|
||||
| `getSignaturesForAddress` | Transactions | `0.2.3` | Read / RetrySafe | `get_signatures_for_address` |
|
||||
| `getSignatureStatuses` | Transactions | `0.2.3` | Read / RetrySafe | `get_signature_statuses` |
|
||||
| `getTransaction` | Transactions | `0.2.3` | Read / RetrySafe | `get_transaction` + legacy |
|
||||
| `getTransactionCount` | Transactions | `0.2.3` | Read / RetrySafe | `get_transaction_count` |
|
||||
| `isBlockhashValid` | Transactions | `0.2.3` | Read / RetrySafe | `is_blockhash_valid` |
|
||||
| `requestAirdrop` | Transactions | `0.2.3` | WriteSubmission / NeverAfterDispatch | `request_airdrop` |
|
||||
| `sendTransaction` | Transactions | `0.2.3` | WriteSubmission / NeverAfterDispatch | `send_transaction` |
|
||||
| `simulateTransaction` | Transactions | `0.2.3` | Simulation / RetrySafe | `simulate_transaction` |
|
||||
| `getBlock` | Blocks | `0.2.4` | Read / RetrySafe | `get_block` + legacy |
|
||||
| `getBlockCommitment` | Blocks | `0.2.4` | Read / RetrySafe | `get_block_commitment` |
|
||||
| `getBlockHeight` | Blocks | `0.2.4` | Read / RetrySafe | `get_block_height` |
|
||||
| `getBlockProduction` | Blocks | `0.2.4` | Read / RetrySafe | `get_block_production` |
|
||||
| `getBlocks` | Blocks | `0.2.4` | Read / RetrySafe | `get_blocks` |
|
||||
| `getBlocksWithLimit` | Blocks | `0.2.4` | Read / RetrySafe | `get_blocks_with_limit` |
|
||||
| `getBlockTime` | Blocks | `0.2.4` | Read / RetrySafe | `get_block_time` |
|
||||
| `getFirstAvailableBlock` | Blocks | `0.2.4` | Read / RetrySafe | `get_first_available_block` |
|
||||
| `getRecentPerformanceSamples` | Blocks | `0.2.4` | Read / RetrySafe | `get_recent_performance_samples` |
|
||||
| `minimumLedgerSlot` | Blocks | `0.2.4` | Read / RetrySafe | `minimum_ledger_slot` |
|
||||
| `getClusterNodes` | Cluster | `0.2.2` | Read / RetrySafe | `get_cluster_nodes` |
|
||||
| `getEpochInfo` | Cluster | `0.2.2` | Read / RetrySafe | `get_epoch_info` |
|
||||
| `getEpochSchedule` | Cluster | `0.2.2` | Read / RetrySafe | `get_epoch_schedule` |
|
||||
| `getGenesisHash` | Cluster | `0.2.1` | Read / RetrySafe | `get_genesis_hash` |
|
||||
| `getHealth` | Cluster | `0.2.1` | Read / RetrySafe | `get_health` |
|
||||
| `getHighestSnapshotSlot` | Cluster | `0.2.2` | Read / RetrySafe | `get_highest_snapshot_slot` |
|
||||
| `getIdentity` | Cluster | `0.2.2` | Read / RetrySafe | `get_identity` |
|
||||
| `getLeaderSchedule` | Cluster | `0.2.2` | Read / RetrySafe | `get_leader_schedule` |
|
||||
| `getMaxRetransmitSlot` | Cluster | `0.2.2` | Read / RetrySafe | `get_max_retransmit_slot` |
|
||||
| `getMaxShredInsertSlot` | Cluster | `0.2.2` | Read / RetrySafe | `get_max_shred_insert_slot` |
|
||||
| `getSlot` | Cluster | `0.2.2` | Read / RetrySafe | `get_slot` |
|
||||
| `getSlotLeader` | Cluster | `0.2.2` | Read / RetrySafe | `get_slot_leader` |
|
||||
| `getSlotLeaders` | Cluster | `0.2.2` | Read / RetrySafe | `get_slot_leaders` |
|
||||
| `getVersion` | Cluster | `0.2.1` | Read / RetrySafe | `get_version` |
|
||||
| `getVoteAccounts` | Cluster | `0.2.2` | Read / RetrySafe | `get_vote_accounts` |
|
||||
| `getInflationGovernor` | Economics | `0.2.4` | Read / RetrySafe | `get_inflation_governor` |
|
||||
| `getInflationRate` | Economics | `0.2.4` | Read / RetrySafe | `get_inflation_rate` |
|
||||
| `getInflationReward` | Economics | `0.2.4` | Read / RetrySafe | `get_inflation_reward` |
|
||||
| `getStakeMinimumDelegation` | Economics | `0.2.4` | Read / RetrySafe | `get_stake_minimum_delegation` |
|
||||
| `getSupply` | Economics | `0.2.4` | Read / RetrySafe | `get_supply` |
|
||||
|
||||
Les deux formes legacy encore supportées sont couvertes séparément et marquées deprecated :
|
||||
|
||||
```text
|
||||
getTransaction -> HttpTransportPool::get_transaction_legacy
|
||||
getBlock -> HttpTransportPool::get_block_legacy
|
||||
```
|
||||
|
||||
Partition exacte :
|
||||
|
||||
```text
|
||||
0.2.1 foundation 4
|
||||
0.2.2 Accounts/Tokens/Cluster 22
|
||||
0.2.3 Transactions 11
|
||||
0.2.4 Blocks/Economics 15
|
||||
--------------------------------
|
||||
total 52
|
||||
```
|
||||
|
||||
Classification globale attendue :
|
||||
|
||||
```text
|
||||
Read / RetrySafe
|
||||
Simulation / RetrySafe
|
||||
WriteSubmission / NeverAfterDispatch
|
||||
```
|
||||
|
||||
Les seules write submissions actuelles restent `requestAirdrop` et `sendTransaction`; aucune classe `NeverAfterDispatch` n'est affaiblie par `0.2.4`.
|
||||
|
||||
## Compliance des 14 historiques
|
||||
|
||||
Les 14 entrées restent découvrables pour audit/compliance mais sont `Deprecated / Removed / NotApplicable` et ne sont pas envoyées au réseau :
|
||||
|
||||
| Méthode historique | Documentation | Runtime KSP | Remplacement/aide |
|
||||
|-------------------------------------|---------------|-------------|-------------------------------------|
|
||||
| `confirmTransaction` | Deprecated | Removed | getSignatureStatuses |
|
||||
| `getConfirmedBlock` | Deprecated | Removed | getBlock |
|
||||
| `getConfirmedBlocks` | Deprecated | Removed | getBlocks |
|
||||
| `getConfirmedBlocksWithLimit` | Deprecated | Removed | getBlocksWithLimit |
|
||||
| `getConfirmedSignaturesForAddress2` | Deprecated | Removed | getSignaturesForAddress |
|
||||
| `getConfirmedTransaction` | Deprecated | Removed | getTransaction |
|
||||
| `getFeeCalculatorForBlockhash` | Deprecated | Removed | isBlockhashValid / getFeeForMessage |
|
||||
| `getFeeRateGovernor` | Deprecated | Removed | getFeeForMessage |
|
||||
| `getFees` | Deprecated | Removed | getFeeForMessage |
|
||||
| `getRecentBlockhash` | Deprecated | Removed | getLatestBlockhash |
|
||||
| `getSignatureConfirmation` | Deprecated | Removed | getSignatureStatuses |
|
||||
| `getSignatureStatus` | Deprecated | Removed | getSignatureStatuses |
|
||||
| `getSnapshotSlot` | Deprecated | Removed | getHighestSnapshotSlot |
|
||||
| `getStakeActivation` | Deprecated | Removed | aucun remplacement direct |
|
||||
|
||||
La canary `release_v0_2_4_pre_009_final_http_inventory_and_coverage_partition_are_exact` fige simultanément :
|
||||
|
||||
```text
|
||||
52 noms current exacts
|
||||
14 noms historiques exacts
|
||||
4 / 22 / 11 / 15 par HttpRpcCoverageRelease
|
||||
Supported pour les 52 current
|
||||
Deprecated + Removed + NotApplicable pour les 14 historiques
|
||||
RetrySafe pour Read/Simulation current
|
||||
NeverAfterDispatch pour WriteSubmission current
|
||||
```
|
||||
|
||||
## `KSP-TRANSPORT-007` — preuve globale 52/52
|
||||
|
||||
Le réaudit `0.2.3` a déjà conclu **37/37 conformes** avant l'ouverture de `0.2.4`.
|
||||
|
||||
Les 15 nouveaux wrappers appliquent la même règle sans réduction de contrat.
|
||||
|
||||
### Blocks — 10/10
|
||||
|
||||
Points de sensibilité couverts :
|
||||
|
||||
- `getBlock` moderne + bare encoding legacy deprecated ;
|
||||
- encodings `binary/base58/base64/json/jsonParsed` réellement supportés par la baseline ;
|
||||
- `transactionDetails = full/signatures/none/accounts` ;
|
||||
- `maxSupportedTransactionVersion` et version numérique générique, y compris canary `1` ;
|
||||
- distinction résultat `null` / erreurs RPC ;
|
||||
- `transactions`, `signatures`, `rewards`, `numRewardPartitions` avec préservation des états wire pertinents ;
|
||||
- `commission` nullable + `commissionBps` indépendant ;
|
||||
- `getBlocks` avec ses quatre overloads exacts et `RpcContextConfig` complet ;
|
||||
- `getBlocksWithLimit(0)` valide et plafond 500000 ;
|
||||
- `getRecentPerformanceSamples <= 720` et ancien wire sans `numNonVoteTransactions` ;
|
||||
- `getBlockProduction` identity/range/context sans restriction de commitment inventée ;
|
||||
- wrappers sans config exactement en `params: []`.
|
||||
|
||||
### Economics — 5/5
|
||||
|
||||
Points de sensibilité couverts :
|
||||
|
||||
- aucune formule d'inflation locale ;
|
||||
- aucun minimum de délégation codé en dur ;
|
||||
- `getSupply` conserve `excludeNonCirculatingAccountsList` omis/false/true ;
|
||||
- `getInflationReward` conserve ordre, doublons, `null` positionnels et cardinalité ;
|
||||
- aucun plafond d'adresses inventé pour `getInflationReward` ;
|
||||
- `epoch`, `commitment`, `minContextSlot` transmis ;
|
||||
- `getInflationReward` rejette `processed` avant I/O car la voie runtime exige au moins `confirmed` ;
|
||||
- `commission` nullable et `commissionBps` présent/omis/null indépendants ;
|
||||
- erreurs RPC de contexte/rewards period conservées comme erreurs applicatives distantes.
|
||||
|
||||
Verdict candidate :
|
||||
|
||||
```text
|
||||
KSP-TRANSPORT-007 current wrappers == 52/52
|
||||
remédiation fonctionnelle finale == aucune
|
||||
```
|
||||
|
||||
## Smoke Devnet Transport pur
|
||||
|
||||
Le smoke Transport reste opt-in, programmatique et read-only :
|
||||
|
||||
```text
|
||||
settings programmatiques
|
||||
-> getAccountInfo
|
||||
-> getTokenAccountsByOwner
|
||||
-> getEpochInfo
|
||||
-> getVoteAccounts
|
||||
-> getLatestBlockhash
|
||||
-> isBlockhashValid
|
||||
-> getTransactionCount
|
||||
-> getBlockHeight
|
||||
-> getInflationRate
|
||||
-> getStakeMinimumDelegation
|
||||
```
|
||||
|
||||
Les trois derniers appels ajoutent une traversée live représentative des familles Blocks/Economics sans dépendre d'un slot historique particulier, d'un compte reward spécifique ou d'une valeur économique codée en dur.
|
||||
|
||||
Commande :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Le smoke historique de composition reste séparé et transitoire :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Il ne devient pas un modèle de placement des futurs smokes cross-crates.
|
||||
|
||||
## Frontières et graphes Cargo
|
||||
|
||||
Frontière attendue :
|
||||
|
||||
```text
|
||||
ksp-config-lib -> ksp-onchain-transport-lib
|
||||
ksp-onchain-transport-lib -> ksp-core-lib
|
||||
ksp-onchain-transport-lib -> ksp-logging-lib
|
||||
ksp-onchain-transport-lib -X-> ksp-config-lib
|
||||
ksp-onchain-transport-lib -X-> Store
|
||||
ksp-onchain-transport-lib -X-> Program
|
||||
ksp-onchain-transport-lib -X-> tracing direct
|
||||
```
|
||||
|
||||
`0.2.4` n'ajoute aucune dépendance externe au `Cargo.toml` de Transport.
|
||||
|
||||
Graphes à inspecter sur la candidate :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Interprétation importante : `tracing` peut apparaître **transitivement** sous `ksp-logging-lib`, ce qui est conforme à l'architecture. L'interdit porte sur une dépendance **directe** de `ksp-onchain-transport-lib` vers `tracing`. Les graphes doivent donc être lus par chaîne de dépendances et non validés par la simple présence/absence du nom `tracing` dans l'arbre complet.
|
||||
|
||||
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`
|
||||
|
||||
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 :
|
||||
|
||||
```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
|
||||
cargo test -p ksp-core-lib
|
||||
cargo test -p ksp-app-config-desk
|
||||
cargo test --workspace
|
||||
```
|
||||
|
||||
Puis inspection des huit graphes Cargo ci-dessus et exécution explicite des deux smokes Devnet.
|
||||
|
||||
Les résultats opérateur de `pre.009` seront enregistrés ici pendant `rel.001`; ils ne sont pas anticipés dans la candidate.
|
||||
|
||||
## Documentation et prochaine release
|
||||
|
||||
La candidate synchronise :
|
||||
|
||||
```text
|
||||
ROADMAP.md
|
||||
README/USAGE Transport
|
||||
inventaire composant
|
||||
séquence fonctionnelle
|
||||
plan 011
|
||||
index docs/plans/validation/prompts
|
||||
```
|
||||
|
||||
Le prompt suivant est :
|
||||
|
||||
```text
|
||||
prompts/010-V0_2_5_START_PROMPT.md
|
||||
0.2.5 — Wallet foundation
|
||||
```
|
||||
|
||||
Il conserve notamment les frontières déjà décidées :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Publication `rel.001`
|
||||
|
||||
Après validation opérateur complète :
|
||||
|
||||
```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
|
||||
deltas/0.2.4/rel.001.md
|
||||
commit : v0.2.4-rel.001
|
||||
tag stable : v0.2.4
|
||||
```
|
||||
|
||||
Aucun wrapper, DTO, comportement runtime, dependency ou feature Cargo ne doit être ajouté pendant `rel.001`.
|
||||
Reference in New Issue
Block a user