v0.2.4-pre.001-fix.001
This commit is contained in:
191
deltas/0.2.4/pre.001-fix.001.md
Normal file
191
deltas/0.2.4/pre.001-fix.001.md
Normal file
@@ -0,0 +1,191 @@
|
||||
<!-- file: deltas/0.2.4/pre.001-fix.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.4-pre.001-fix.001` — audit SIMD Transport et correction des matrices du plan
|
||||
|
||||
## Base requise
|
||||
|
||||
Ce fix s'applique après :
|
||||
|
||||
```text
|
||||
0.2.4-pre.001
|
||||
workspace.package.version = "0.2.4-pre.1"
|
||||
```
|
||||
|
||||
Le delta historique `deltas/0.2.4/pre.001.md` reste inchangé.
|
||||
|
||||
## Motif du fix
|
||||
|
||||
Deux corrections documentaires sont nécessaires avant `pre.002` :
|
||||
|
||||
1. les matrices Blocks/Economics du plan utilisaient des caractères `|` à l'intérieur de cellules Markdown, notamment dans des unions telles que `object | null`; certains renderers les interprètent comme des séparateurs de colonnes même lorsqu'ils sont placés dans du code inline ;
|
||||
2. l'apparition de `commissionBps` liée à SIMD-0291 impose de vérifier systématiquement si d'autres SIMDs actuels ou proches de la baseline stable affectent la surface HTTP couverte par `KSP-TRANSPORT-007`.
|
||||
|
||||
Ce fix ne modifie aucun wrapper ni source Rust. Il complète le plan avant l'implémentation afin que les modifications nécessaires soient réalisées dans les prereleases fonctionnelles prévues.
|
||||
|
||||
## Audit SIMD `KSP-TRANSPORT-007`
|
||||
|
||||
Le critère retenu est le wire réellement supporté par la baseline Solana/Agave stable, pas le seul statut administratif d'un SIMD. Un SIMD encore en `Review` peut donc être pertinent si Agave stable expose déjà un champ de compatibilité ; inversement, un champ proposé mais absent d'Agave stable n'est pas inventé par KSP.
|
||||
|
||||
### SIMD à prendre en compte dans `0.2.4`
|
||||
|
||||
**SIMD-0118 — Partitioned Epoch Rewards Distribution**
|
||||
|
||||
- statut actuel : `Activated` ;
|
||||
- impact HTTP direct : `getBlock.numRewardPartitions` ;
|
||||
- Agave `v4.2.1` expose `UiConfirmedBlock.num_reward_partitions: Option<u64>` ;
|
||||
- le futur DTO bloc KSP doit préserver la présence/omission du champ, sans synthétiser `0` ;
|
||||
- le plan retient `SolanaWireField<u64>` ou une représentation wire équivalente et des fixtures `present`/`omitted`.
|
||||
|
||||
**SIMD-0291 — Commission Rate in Basis Points**
|
||||
|
||||
- statut actuel du document SIMD : `Review` ;
|
||||
- Agave stable `v4.2.1` expose néanmoins déjà les champs RPC de compatibilité en basis points ;
|
||||
- `getVoteAccounts.inflationRewardsCommissionBps` est déjà implémenté et testé par la surface `0.2.2` : aucune remédiation des 37 wrappers acquis ;
|
||||
- `getBlock.rewards[].commissionBps` doit être conservé dans un reward wire de bloc dédié ;
|
||||
- `getInflationReward[].commissionBps` doit être conservé dans le DTO d'inflation reward ;
|
||||
- `commission` reste nullable et `commissionBps` reste optionnel/omis ; KSP ne dérive pas l'un depuis l'autre ;
|
||||
- `getTransaction.meta` de `0.2.3` est déjà lossless en `serde_json::Value`, donc les rewards imbriqués ne perdent pas cette extension.
|
||||
|
||||
### SIMDs déjà couverts ou sans nouveau wire immédiat
|
||||
|
||||
**SIMD-0185 — Vote Account v4** est `Accepted`. Les évolutions des account parsers restent compatibles avec `SolanaParsedAccountData.parsed: serde_json::Value`. Le DTO stable `RpcVoteAccountInfo` d'Agave `v4.2.1` n'expose pas les collector fields de Vote Account v4 ; KSP ne les ajoute pas spéculativement à `SolanaVoteAccountInfo`.
|
||||
|
||||
**SIMD-0186 — Loaded Transaction Data Size Specification** est `Accepted`. `simulateTransaction.loadedAccountsDataSize` est déjà préservé dans `0.2.3` via `SolanaWireField<u32>` avec couverture de l'omission. Transport restitue cette valeur runtime et ne la recalcule pas.
|
||||
|
||||
**SIMD-0385 — Transaction V1 Format** est en `Review`. Le contrat KSP actuel est déjà future-compatible parce que `SolanaTransactionVersion::Number(u8)` n'est pas limité à la version `0` et les payloads JSON restent lossless. Le plan ajoute toutefois une canary avec une version numérique non nulle et impose la même propriété au wire `getBlock`.
|
||||
|
||||
**SIMD-0096 — Reward full priority fee to validator** est `Activated`, mais modifie la distribution économique sans modifier la forme HTTP consommée par Transport. Aucun calcul de distribution ne doit être réimplémenté côté KSP.
|
||||
|
||||
**SIMD-0550 — Double Disinflation Rate** est en `Review` et annonce explicitement une évolution des valeurs retournées par `getInflationRate` et `getInflationGovernor` sans changement d'API. Les DTOs KSP restent des valeurs runtime et Transport ne réimplémente aucune formule d'inflation.
|
||||
|
||||
### Watchlist obligatoire
|
||||
|
||||
**SIMD-0180 — Vote Account Address Keyed Leader Schedule** est en `Review`. Il demande que les endpoints RPC existants de leader schedule continuent à retourner l'identité validator pour compatibilité et prévoit de nouveaux endpoints vote-account-keyed. Le wrapper `getLeaderSchedule` existant ne change donc pas ; le réaudit final de l'inventaire doit en revanche détecter si de nouveaux endpoints sont devenus officiels.
|
||||
|
||||
**SIMD-0307 — Add Block Footer** est en `Review` et propose une option `footer` ainsi que de nouveaux champs dans `getBlock`. **SIMD-0298 — Add `bank_hash` to block footer** est encore au statut `Idea` et prévoit d'étendre ce footer avec `bank_hash`. Ces éléments sont absents de la baseline stable Agave `v4.2.1`. Ils ne sont donc pas ajoutés maintenant, mais le plan impose un réaudit conjoint avant `getBlock` et à la compliance finale. S'ils deviennent stables pendant `0.2.4`, `KSP-TRANSPORT-007` imposera config, wire et fixtures pour la totalité des champs livrés.
|
||||
|
||||
**SIMD-0490 — Upgrade BPF Stake Program to v5.0.0** est en `Review` et prévoit une évolution du minimum de délégation. `getStakeMinimumDelegation` doit restituer la valeur runtime contextualisée sans coder en dur `1 lamport`, `1 SOL` ou une autre valeur. Réaudit prévu avant la tranche Economics concernée et à la clôture.
|
||||
|
||||
**SIMD-0553 — Base Inclusion and Resource-based Fee** est en `Draft`. Il modifie la sémantique des totals de fee pour `getFeeForMessage`, `simulateTransaction` et `getTransaction.meta.fee` mais n'impose actuellement pas de nouveau JSON wire. Les wrappers acquis restent pass-through/lossless ; la compliance finale réaudite ce point si le schéma stable évolue.
|
||||
|
||||
**SIMD-0123 — Block Revenue Sharing** reste en `Review`. Il peut modifier à terme la provenance/sémantique des rewards sans ajouter aujourd'hui un champ HTTP stable dans `v4.2.1`. KSP ne crée donc aucune taxonomie économique spéculative dans le reward wire.
|
||||
|
||||
## Modifications désormais prévues par le plan
|
||||
|
||||
Les prereleases fonctionnelles devront notamment prévoir :
|
||||
|
||||
```text
|
||||
getBlock
|
||||
confirmed block dédié
|
||||
numRewardPartitions préservé via SolanaWireField<u64> ou équivalent (SIMD-0118)
|
||||
reward de bloc dédié
|
||||
commission nullable
|
||||
commissionBps optionnel/omis (SIMD-0291)
|
||||
transaction version Number(u8) non limitée à 0 (canary SIMD-0385)
|
||||
réaudit conjoint SIMD-0298/0307 avant implémentation finale du contrat
|
||||
|
||||
getInflationReward
|
||||
reward d'inflation distinct du reward de bloc
|
||||
commission nullable
|
||||
commissionBps optionnel/omis (SIMD-0291)
|
||||
|
||||
getStakeMinimumDelegation
|
||||
valeur runtime contextualisée
|
||||
aucun minimum local codé en dur
|
||||
réaudit SIMD-0490
|
||||
|
||||
compliance pre.009
|
||||
réaudit SIMD HTTP au minimum 0180 / 0298 / 0307 / 0385 / 0490 / 0550 / 0553
|
||||
réaudit de l'inventaire officiel pour détecter de nouveaux endpoints
|
||||
vérification qu'aucune évolution devenue stable pendant la session n'est omise
|
||||
```
|
||||
|
||||
Aucune nouvelle dépendance n'est requise par ces décisions.
|
||||
|
||||
## Correction des matrices Markdown
|
||||
|
||||
Les deux matrices du plan ont été réécrites avec les mêmes quatre largeurs de colonnes afin d'être alignées dans la source Markdown.
|
||||
|
||||
Les unions textuelles qui contenaient un pipe interne ont été remplacées par `ou`, notamment :
|
||||
|
||||
```text
|
||||
object ou null
|
||||
array<u64> ou null
|
||||
i64 ou null
|
||||
commission: u8 ou null
|
||||
```
|
||||
|
||||
Le contrôle statique du fichier exige désormais exactement cinq caractères `|` par ligne de tableau : un délimiteur initial, trois séparateurs de colonnes et un délimiteur final. Il n'existe plus de pipe de données à l'intérieur d'une cellule.
|
||||
|
||||
## Version Cargo
|
||||
|
||||
Ce fix est exclusivement documentaire. Conformément à la règle de versioning des fixes documentaires, le signal technique reste :
|
||||
|
||||
```text
|
||||
workspace.package.version = "0.2.4-pre.1"
|
||||
```
|
||||
|
||||
Aucune modification de `Cargo.toml` n'est effectuée.
|
||||
|
||||
## Fichier modifié
|
||||
|
||||
```text
|
||||
docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md
|
||||
```
|
||||
|
||||
Le header documentaire du plan passe de `version: 1` à `version: 2`.
|
||||
|
||||
## Fichier ajouté
|
||||
|
||||
```text
|
||||
deltas/0.2.4/pre.001-fix.001.md
|
||||
```
|
||||
|
||||
## Fichiers volontairement inchangés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
CHANGELOG.md
|
||||
ROADMAP.md
|
||||
deltas/0.2.4/pre.001.md
|
||||
crates/ksp-onchain-transport-lib/src/**
|
||||
crates/ksp-onchain-transport-lib/unit_tests/**
|
||||
crates/ksp-onchain-transport-lib/tests/**
|
||||
```
|
||||
|
||||
Les structures/fonctions Rust requises par l'audit sont planifiées pour les tranches fonctionnelles de `0.2.4`; elles ne sont pas introduites artificiellement dans ce fix documentaire d'ouverture.
|
||||
|
||||
## Validations exécutées
|
||||
|
||||
- réaudit primaire du repository SIMD courant et de la baseline Agave stable `v4.2.1` ;
|
||||
- confirmation de SIMD-0118 `Activated` et de son lien avec `numRewardPartitions` ;
|
||||
- confirmation dans Agave `v4.2.1` du champ `UiConfirmedBlock.num_reward_partitions` ;
|
||||
- confirmation dans Agave `v4.2.1` de `Reward.commission_bps` et `RpcInflationReward.commission_bps` ;
|
||||
- confirmation que `RpcVoteAccountInfo.inflation_rewards_commission_bps` est déjà couvert dans KSP `0.2.2` ;
|
||||
- confirmation que `SolanaTransactionVersion::Number(u8)` et les payloads transaction/meta lossless de `0.2.3` n'imposent pas de remédiation SIMD-0385 ;
|
||||
- confirmation que SIMD-0180 est encore `Review`, que les RPC leader schedule existants doivent conserver l'identité validator, et que les futurs endpoints vote-account-keyed relèvent d'une évolution d'inventaire ;
|
||||
- confirmation que SIMD-0186 est `Accepted` et que `loadedAccountsDataSize` est déjà couvert losslessly dans `simulateTransaction` ;
|
||||
- confirmation que SIMD-0298 est encore `Idea`, dépend du block footer de SIMD-0307 et ne justifie aucun champ `bankHash` spéculatif dans la baseline actuelle ;
|
||||
- confirmation que SIMD-0307 est encore `Review` et que ses champs footer sont absents des types stables Agave `v4.2.1` ;
|
||||
- confirmation que SIMD-0490 est encore `Review` et que le wrapper KSP ne doit pas figer une valeur de minimum delegation ;
|
||||
- confirmation que SIMD-0550 est encore `Review` et déclare une évolution de valeurs inflation sans changement d'API ;
|
||||
- confirmation que SIMD-0553 est encore `Draft` et n'impose pas actuellement de nouvelle forme JSON ;
|
||||
- contrôle des deux matrices : quatre colonnes et exactement cinq délimiteurs `|` par ligne ;
|
||||
- contrôle que le delta `pre.001.md` historique reste inchangé.
|
||||
|
||||
## Validations Cargo
|
||||
|
||||
Aucune source Rust, configuration runtime, dépendance ou version Cargo n'est modifiée par ce fix. Les validations Cargo de `pre.001` restent celles à effectuer par l'opérateur avant commit ; ce fix n'en revendique aucune nouvelle.
|
||||
|
||||
## Commit attendu
|
||||
|
||||
Après application et validation documentaire :
|
||||
|
||||
```text
|
||||
v0.2.4-pre.001-fix.001
|
||||
```
|
||||
|
||||
## Suite
|
||||
|
||||
`0.2.4-pre.002` peut démarrer les primitives/configs/results communs en intégrant dès leur conception les exigences SIMD-0118 et SIMD-0291 fixées ci-dessus, avec les watchpoints SIMD explicitement reportés aux tranches concernées.
|
||||
Reference in New Issue
Block a user