v0.3.13-pre.003-fix.001
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 542
|
||||
# version: 543
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-raw-transaction-lib", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api", "crates/ksp-worker-raw-transaction-ingest-lib"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.3.13-pre.3"
|
||||
version = "0.3.13-pre.3.fix.1"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs
|
||||
// version: 13
|
||||
// version: 14
|
||||
|
||||
fn grpc_endpoint(cluster: &str) -> std::option::Option<ksp_onchain_transport_lib::YellowstoneGrpcEndpointSettings> {
|
||||
return grpc_endpoint_with_identity(cluster, "yellowstone-fixture", "fixture-provider");
|
||||
@@ -826,8 +826,8 @@ async fn v0_3_13_pre_002_multi_source_activation_fails_closed_until_supervisor_t
|
||||
};
|
||||
let mut resources = crate::RawTransactionIngestRuntimeResources::new(first);
|
||||
assert!(resources.try_push_yellowstone_source(second).is_ok());
|
||||
let error = match resources.into_yellowstone_source() {
|
||||
std::result::Result::Ok(_) => return,
|
||||
let error = match resources.validate_single_source_activation() {
|
||||
std::result::Result::Ok(()) => return,
|
||||
std::result::Result::Err(error) => error,
|
||||
};
|
||||
assert_eq!(error.code(), crate::ERROR_CODE_RAW_TRANSACTION_INGEST_RUNTIME_INVALID);
|
||||
@@ -1044,7 +1044,9 @@ async fn pre_005_block_hydration_uses_distinct_composite_method() {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
let hydration = source.hydration_context();
|
||||
let provenance = match super::build_hydration_provenance(
|
||||
&hydration,
|
||||
&settings,
|
||||
&signal,
|
||||
"fixture-http-provider",
|
||||
@@ -1465,7 +1467,9 @@ async fn pre_004_status_provenance_and_future_source_timestamp_are_bounded_and_r
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
let hydration = source.hydration_context();
|
||||
let provenance = match super::build_hydration_provenance(
|
||||
&hydration,
|
||||
&settings,
|
||||
&signal,
|
||||
"fixture-http-provider",
|
||||
@@ -1777,8 +1781,6 @@ async fn v0_3_13_pre_003_standard_logs_reference_hydrates_once_to_exact_common_r
|
||||
};
|
||||
assert_eq!(ingress.provenance.protocol().as_str(), "solana_ws_http");
|
||||
assert_eq!(ingress.provenance.acquisition_method().as_str(), "logs_get_transaction");
|
||||
assert_eq!(ingress.material.slot(), 42);
|
||||
assert_eq!(ingress.material.signature(), &ksp_store_lib::RawTransactionSignature::new([0_u8; 64]));
|
||||
let (mut admission, sender) = crate::RawTransactionAdmission::new(1);
|
||||
if sender.send(ingress).await.is_err() {
|
||||
return;
|
||||
|
||||
210
deltas/0.3.13/pre.003-fix.001.md
Normal file
210
deltas/0.3.13/pre.003-fix.001.md
Normal file
@@ -0,0 +1,210 @@
|
||||
<!-- file: deltas/0.3.13/pre.003-fix.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.3.13-pre.003-fix.001 — correction des tests Worker après généralisation source-neutral
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
delivery précédente : 0.3.13-pre.003
|
||||
Cargo base : 0.3.13-pre.3
|
||||
delta base : deltas/0.3.13/pre.003.md
|
||||
archive delta base : ksp-general-0.3.13-pre.003.zip
|
||||
SHA-256 delta base : 669b875410799b8a2c5806cddad81740bdd4dd78e36c68f6b268a6b0257f18f4
|
||||
```
|
||||
|
||||
Le gate opérateur de `pre.003` confirme que le formatage, les audits et `cargo check --workspace` sont propres, mais que les cibles de tests Worker ne compilent plus après la généralisation source-neutral de `runtime_resources`. `cargo clippy --workspace --all-targets --all-features -- -D warnings` et `cargo test -p ksp-worker-raw-transaction-ingest-lib` échouent sur sept diagnostics provenant du même fichier de tests.
|
||||
|
||||
## Objectif
|
||||
|
||||
Corriger uniquement les tests devenus obsolètes par rapport au contrat production de `pre.003`, sans rouvrir l'API ni modifier la logique runtime :
|
||||
|
||||
```text
|
||||
aucun code production modifié
|
||||
aucune API publique ajoutée ou supprimée
|
||||
aucune dépendance modifiée
|
||||
aucune logique réseau/hydration/admission modifiée
|
||||
aucun avancement vers blockSubscribe pre.004
|
||||
```
|
||||
|
||||
## Version
|
||||
|
||||
```text
|
||||
livraison : 0.3.13-pre.003-fix.001
|
||||
workspace.package.version : 0.3.13-pre.3.fix.1
|
||||
archive : ksp-general-0.3.13-pre.003-fix.001.zip
|
||||
```
|
||||
|
||||
Conformément aux règles de versionnement KSP, le fix modifie un fichier `.rs`; le `workspace.package.version` est donc synchronisé avec l'identifiant SemVer technique du correctif.
|
||||
|
||||
## Diagnostic opérateur
|
||||
|
||||
Les sept diagnostics se répartissent en trois causes.
|
||||
|
||||
### Ancien extracteur mono-Yellowstone supprimé
|
||||
|
||||
Le test `v0_3_13_pre_002_multi_source_activation_fails_closed_until_supervisor_tranche` appelait encore :
|
||||
|
||||
```text
|
||||
RawTransactionIngestRuntimeResources::into_yellowstone_source
|
||||
```
|
||||
|
||||
Cette méthode a été supprimée en `pre.003` lorsque l'aggregate a été rendu source-neutral. La barrière correspondante est désormais :
|
||||
|
||||
```text
|
||||
RawTransactionIngestRuntimeResources::validate_single_source_activation
|
||||
```
|
||||
|
||||
Le test utilise donc le contrat actuel et continue de vérifier exactement l'erreur :
|
||||
|
||||
```text
|
||||
runtime_resources.multi_source_activation_pending
|
||||
```
|
||||
|
||||
Les deux erreurs d'inférence `E0282` étaient secondaires à l'absence de l'ancienne méthode et disparaissent avec cette correction.
|
||||
|
||||
### Contexte d'hydration manquant
|
||||
|
||||
Deux tests appelaient encore l'ancienne signature de :
|
||||
|
||||
```text
|
||||
build_hydration_provenance
|
||||
```
|
||||
|
||||
`pre.003` a ajouté en premier argument le contexte source-neutral :
|
||||
|
||||
```text
|
||||
&RawTransactionIngestHydrationContext
|
||||
```
|
||||
|
||||
Les tests construisent maintenant ce contexte via :
|
||||
|
||||
```text
|
||||
source.hydration_context()
|
||||
```
|
||||
|
||||
puis le transmettent à `build_hydration_provenance`. Aucun contrat production n'est élargi pour les tests.
|
||||
|
||||
### Accesseurs volontairement absents de RawTransactionMaterial
|
||||
|
||||
Le nouveau test Standard Logs tentait d'appeler :
|
||||
|
||||
```text
|
||||
ingress.material.slot()
|
||||
ingress.material.signature()
|
||||
```
|
||||
|
||||
`RawTransactionMaterial` garde ces champs privés et ne fournit volontairement pas ces accesseurs. Le test ne doit pas provoquer l'ajout d'une API uniquement pour introspection.
|
||||
|
||||
Les deux assertions sont donc supprimées à ce niveau. La même preuve reste effectuée après passage dans l'admission centrale et canonicalisation, via :
|
||||
|
||||
```text
|
||||
acquisition.transaction().slot() == 42
|
||||
acquisition.transaction().reference().signature().as_bytes() == [0; 64]
|
||||
```
|
||||
|
||||
Cela vérifie en plus le chemin réellement consommé par le Worker.
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs
|
||||
```
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
deltas/0.3.13/pre.003-fix.001.md
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
```text
|
||||
aucun
|
||||
```
|
||||
|
||||
## Versions de fichiers incrémentées
|
||||
|
||||
```text
|
||||
Cargo.toml : 542 -> 543
|
||||
worker unit_tests/runtime_resources.rs : 13 -> 14
|
||||
```
|
||||
|
||||
## Validation opérateur de la base pre.003
|
||||
|
||||
Le log fourni confirme avant fix :
|
||||
|
||||
```text
|
||||
cargo fmt --all : exécuté
|
||||
cargo fmt --all -- --check : PASS / silencieux
|
||||
General Rust rule audit : clean
|
||||
Rust export completeness audit : 0 candidate(s)
|
||||
KSP workspace Rust rule audit : clean
|
||||
Markdown table audit : clean (340 tables, 831 files)
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : FAIL sur compilation des tests Worker
|
||||
cargo test -p ksp-worker-raw-transaction-ingest-lib : FAIL sur les mêmes 7 diagnostics
|
||||
```
|
||||
|
||||
Diagnostics observés :
|
||||
|
||||
```text
|
||||
E0599 : into_yellowstone_source supprimé
|
||||
E0282 : 2 erreurs d'inférence secondaires
|
||||
E0061 : 2 appels build_hydration_provenance sans hydration context
|
||||
E0599 : RawTransactionMaterial::slot absent
|
||||
E0599 : RawTransactionMaterial::signature absent
|
||||
```
|
||||
|
||||
## Validations dans l'environnement d'assemblage
|
||||
|
||||
Le toolchain Rust n'est pas disponible dans l'environnement d'assemblage. Les validations statiques KSP exécutables localement et le contrôle exhaustif du delta sont réalisés avant packaging.
|
||||
|
||||
Les commandes Cargo ne sont pas déclarées PASS localement :
|
||||
|
||||
```bash
|
||||
cargo fmt --all -- --check
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
cargo test -p ksp-worker-raw-transaction-ingest-lib
|
||||
```
|
||||
|
||||
## Résultats statiques finaux de l'assemblage
|
||||
|
||||
```text
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
Markdown table audit: clean (340 tables, 832 files)
|
||||
Normative rule definitions: 489
|
||||
Unique normative IDs: 489
|
||||
Duplicates: 0
|
||||
```
|
||||
|
||||
## Gate opérateur avant pre.004
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo fmt --all -- --check
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
cargo test -p ksp-worker-raw-transaction-ingest-lib
|
||||
```
|
||||
|
||||
`pre.004` ne doit démarrer qu'après retour vert de ce gate.
|
||||
|
||||
## Décisions
|
||||
|
||||
- Le fix conserve l'encapsulation de `RawTransactionMaterial`; aucun getter n'est ajouté pour satisfaire un test.
|
||||
- Le fix conserve l'aggregate source-neutral introduit en `pre.003`; l'ancien extracteur mono-Yellowstone n'est pas restauré.
|
||||
- Le fix conserve le contexte d'hydration source-neutral et adapte les tests à sa signature actuelle.
|
||||
- Aucun changement fonctionnel de `pre.003` n'est introduit.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
```text
|
||||
aucune
|
||||
```
|
||||
Reference in New Issue
Block a user