0.3.15-pre.014-fix.003

This commit is contained in:
2026-09-18 13:36:51 +02:00
parent 463c82bfcf
commit b266019ea8
4 changed files with 67 additions and 6 deletions

View File

@@ -1,12 +1,12 @@
# file: Cargo.toml
# version: 630
# version: 631
[workspace]
resolver = "3"
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-raw-transaction-ingest-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.15-pre.14.fix.2"
version = "0.3.15-pre.14.fix.3"
edition = "2024"
license = "MIT"
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-store-postgres-lib/tests/hardening_completeness.rs
// version: 26
// version: 27
#![warn(missing_docs)]
#![deny(unreachable_pub)]
@@ -659,7 +659,19 @@ fn v0_3_15_pre_014_fix_001_truncated_log_compatibility_is_narrow_and_keeps_canon
] {
assert!(source.contains(required), "missing narrow truncated-log compatibility guard: {required}");
}
assert!(!source.contains("UPDATE ksp_raw_transactions SET payload"));
assert!(!source.contains("DELETE FROM ksp_raw_transactions"));
let start = source.find("fn compare_existing_transaction(");
assert!(start.is_some(), "missing fix.001 existing-transaction comparison path");
let Some(start) = start else {
return;
};
let end = source[start..].find("fn raw_transaction_incoming_truncated_log_messages_compatible(");
assert!(end.is_some(), "missing fix.001 compatibility helper boundary");
let Some(end) = end else {
return;
};
let comparison = &source[start..start + end];
assert!(comparison.contains("ExistingTransactionMatch::ActiveIncomingTruncatedLogs"));
assert!(!comparison.contains("UPDATE ksp_raw_transactions SET payload"));
assert!(!comparison.contains("DELETE FROM ksp_raw_transactions"));
return;
}

View File

@@ -0,0 +1,41 @@
<!-- file: deltas/0.3.15/pre.014-fix.003.md -->
<!-- version: 1 -->
# Delta v0.3.15-pre.014-fix.003 — resserrement du canari Store `CompatibleLessComplete`
## Base requise
```text
ksp-general-0.3.15-pre.014-fix.002.zip
SHA-256 : 4998f938a2b10835429e345edf9e94bc5d7364da88d1e509b8313d316db69d7c
bytes : 31529
```
## Cause
Le gate opérateur de `pre.014-fix.002` confirme la correction de typage et progresse jusqu'aux tests d'intégration `ksp-store-postgres-lib`. L'unique échec restant est le canari `v0_3_15_pre_014_fix_001_truncated_log_compatibility_is_narrow_and_keeps_canonical_content`.
Le canari interdisait `UPDATE ksp_raw_transactions SET payload` dans tout `src/raw_transaction.rs`. Cette condition est trop large : le backend contient déjà légitimement cette instruction dans la transition de rétention/archive, indépendamment du chemin de compatibilité des `logMessages` tronqués. Le test produisait donc un faux positif.
## Correction
Le canari borne désormais son inspection au corps de `compare_existing_transaction()`, depuis sa déclaration jusqu'à la déclaration de `raw_transaction_incoming_truncated_log_messages_compatible()`. Il exige toujours la branche `ExistingTransactionMatch::ActiveIncomingTruncatedLogs` et vérifie uniquement dans ce chemin de décision qu'aucune réécriture SQL du payload canonique et aucune suppression de transaction n'existent.
Aucun fichier de production n'est modifié. Aucun changement de schéma, Store runtime, Transport, Worker, API publique ou politique de conflit n'est introduit.
## Validation opérateur
```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/0.3.15
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-store-postgres-lib --all-targets --all-features
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features
cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features
cargo test --workspace --all-targets --all-features
```
Le live n'est pas requis pour ce fix de canari. Le prochain live prolongé appartient à la prerelease acquisition dédiée au backpressure Yellowstone.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md -->
<!-- version: 30 -->
<!-- version: 31 -->
# Validation v0.3.15 — Raw Transaction Ingest Desk
@@ -997,3 +997,11 @@ Ensuite, un `grpc_backpressure_overflow` réapparaît sur Yellowstone Mainnet lo
Non-claims de `fix.002` : aucun changement de Transport, Worker runtime, Store production, politique de conflit ou capacité de queue. Le seul changement Rust est la correction de typage du test PostgreSQL.
### `pre.014-fix.003` — resserrement du canari de non-réécriture canonique
Le gate opérateur de `pre.014-fix.002` confirme la correction de typage : les audits statiques sont propres, `cargo check --workspace` et Clippy strict passent, les `75/75` tests unitaires `ksp-store-postgres-lib` passent, puis l'unique échec apparaît dans `tests/hardening_completeness.rs`. Le canari `v0_3_15_pre_014_fix_001_truncated_log_compatibility_is_narrow_and_keeps_canonical_content` cherchait la chaîne SQL `UPDATE ksp_raw_transactions SET payload` dans l'intégralité de `src/raw_transaction.rs`. Or cette chaîne existe légitimement dans la transition de rétention/archive historique du backend et n'appartient pas au chemin `CompatibleLessComplete`.
`fix.003` resserre donc uniquement ce canari sur le corps de `compare_existing_transaction()`, jusqu'à la frontière du helper `raw_transaction_incoming_truncated_log_messages_compatible()`. Dans cette portion exacte, le test continue d'exiger le retour `ExistingTransactionMatch::ActiveIncomingTruncatedLogs` et interdit toute occurrence d'`UPDATE ... payload` ou de `DELETE FROM ksp_raw_transactions`. Le comportement production, le schéma SQL, la compatibilité `logMessages`, les outcomes Store et le Worker restent byte-for-byte inchangés par ce fix.
Non-claim : ce fix ne traite pas le `grpc_backpressure_overflow` Yellowstone prolongé déjà identifié ; ce défaut ouvre toujours la prochaine prerelease acquisition dédiée après fermeture du gate `pre.014`.