v0.3.10-pre.002-fix.001
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 491
|
||||
# version: 492
|
||||
|
||||
[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"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.3.10-pre.2"
|
||||
version = "0.3.10-pre.2.fix.1"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
// file: crates/ksp-raw-transaction-lib/tests/dependency_boundary.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
//! Dependency-boundary canaries for the common RAW Transaction foundation.
|
||||
|
||||
fn manifest() -> std::string::String {
|
||||
return std::fs::read_to_string(std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("Cargo.toml")).unwrap_or_default();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
// file: crates/ksp-raw-transaction-lib/tests/public_api.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
//! Integration canaries for the public common RAW Transaction crate-root surface.
|
||||
|
||||
#[test]
|
||||
fn pre_002_common_raw_contract_is_consumable_from_crate_root() {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
// file: crates/ksp-raw-transaction-lib/tests/release_completeness.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
//! Release-completeness canaries for the common RAW Transaction foundation.
|
||||
|
||||
#[test]
|
||||
fn pre_002_production_module_inventory_is_exact() {
|
||||
@@ -11,11 +13,13 @@ fn pre_002_production_module_inventory_is_exact() {
|
||||
let mut names = std::vec::Vec::new();
|
||||
for entry in entries.flatten() {
|
||||
let path = entry.path();
|
||||
if path.extension().and_then(std::ffi::OsStr::to_str) == std::option::Option::Some("rs") {
|
||||
if let std::option::Option::Some(name) = path.file_name().and_then(std::ffi::OsStr::to_str) {
|
||||
names.push(name.to_owned());
|
||||
}
|
||||
if path.extension().and_then(std::ffi::OsStr::to_str) != std::option::Option::Some("rs") {
|
||||
continue;
|
||||
}
|
||||
let std::option::Option::Some(name) = path.file_name().and_then(std::ffi::OsStr::to_str) else {
|
||||
continue;
|
||||
};
|
||||
names.push(name.to_owned());
|
||||
}
|
||||
names.sort();
|
||||
let expected = ["acquisition.rs", "canonical.rs", "error.rs", "lib.rs", "signature.rs"];
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
// file: crates/ksp-raw-transaction-lib/tests/security_hardening.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
//! Adversarial canaries for the common RAW Transaction foundation.
|
||||
|
||||
#[test]
|
||||
fn pre_002_signature_errors_never_echo_hostile_input() {
|
||||
|
||||
138
deltas/0.3.10/pre.002-fix.001.md
Normal file
138
deltas/0.3.10/pre.002-fix.001.md
Normal file
@@ -0,0 +1,138 @@
|
||||
<!-- file: deltas/0.3.10/pre.002-fix.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.10-pre.002-fix.001` — correction des canaris d’intégration RAW et du gate Clippy
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
livraison : 0.3.10-pre.002
|
||||
workspace.package.version = 0.3.10-pre.2
|
||||
```
|
||||
|
||||
Le delta historique `deltas/0.3.10/pre.002.md` reste inchangé. Le présent fix trace séparément les défauts révélés par la validation opérateur du 2026-09-06.
|
||||
|
||||
## Résultat opérateur de la base
|
||||
|
||||
La validation communiquée confirme :
|
||||
|
||||
```text
|
||||
cargo fmt --all : exécuté
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
Markdown table audit: clean (339 table(s), 754 file(s))
|
||||
cargo check --workspace : PASS
|
||||
cargo test -p ksp-raw-transaction-lib : PASS
|
||||
```
|
||||
|
||||
Les tests de `ksp-raw-transaction-lib` passent fonctionnellement :
|
||||
|
||||
```text
|
||||
9 tests unitaires : PASS
|
||||
8 tests d’intégration : PASS
|
||||
0 échec
|
||||
```
|
||||
|
||||
Les graphes communiqués confirment la frontière prévue :
|
||||
|
||||
```text
|
||||
ksp-core-lib
|
||||
ksp-store-api
|
||||
serde_json
|
||||
sha2
|
||||
```
|
||||
|
||||
Aucun runtime, Transport, Config, Job, Worker ou backend Store n’apparaît dans le graphe normal de la common crate.
|
||||
|
||||
## Motif du fix
|
||||
|
||||
Le gate strict :
|
||||
|
||||
```bash
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
```
|
||||
|
||||
échoue exclusivement sur les nouveaux tests d’intégration de `ksp-raw-transaction-lib`.
|
||||
|
||||
### Rustdoc de crate manquante
|
||||
|
||||
Quatre fichiers `tests/*.rs` n’avaient pas de documentation de crate :
|
||||
|
||||
```text
|
||||
crates/ksp-raw-transaction-lib/tests/dependency_boundary.rs
|
||||
crates/ksp-raw-transaction-lib/tests/public_api.rs
|
||||
crates/ksp-raw-transaction-lib/tests/release_completeness.rs
|
||||
crates/ksp-raw-transaction-lib/tests/security_hardening.rs
|
||||
```
|
||||
|
||||
Avec `missing_docs` promu en erreur par `-D warnings`, chaque binaire de test d’intégration doit documenter sa crate.
|
||||
|
||||
Correction : ajout d’une rustdoc `//! ...` conforme aux autres tests d’intégration KSP. Aucun `#[allow(missing_docs)]` n’est ajouté.
|
||||
|
||||
### `clippy::collapsible_if`
|
||||
|
||||
Le canari d’inventaire des modules production utilisait deux conditions imbriquées pour filtrer les fichiers `.rs` puis extraire leur nom.
|
||||
|
||||
Correction : filtrage anticipé avec `continue`, puis `let ... else`, sans `#[allow(clippy::collapsible_if)]` et sans changement de l’inventaire attendu.
|
||||
|
||||
## Version Cargo
|
||||
|
||||
Ce fix modifie du Rust de test. Le signal technique Cargo est donc synchronisé :
|
||||
|
||||
```text
|
||||
0.3.10-pre.2 -> 0.3.10-pre.2.fix.1
|
||||
```
|
||||
|
||||
Le header du `Cargo.toml` racine passe de `491` à `492`.
|
||||
|
||||
## Invariants volontairement inchangés
|
||||
|
||||
```text
|
||||
RAW_TRANSACTION_FORMAT_ID = ksp.solana.raw_transaction
|
||||
RAW_TRANSACTION_FORMAT_VERSION = 1
|
||||
golden byte_len = 112
|
||||
golden sha256 = 220792d2b15d262fda242cb220774ee9ddeffebf04dcfadabcf8ef76a9b1a7c3
|
||||
RawObservationKey = producer-owned
|
||||
dépendances common = core + store-api + serde_json + sha2
|
||||
aucune migration Backfill
|
||||
aucun Worker
|
||||
aucune nouvelle feature
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-raw-transaction-lib/tests/dependency_boundary.rs
|
||||
crates/ksp-raw-transaction-lib/tests/public_api.rs
|
||||
crates/ksp-raw-transaction-lib/tests/release_completeness.rs
|
||||
crates/ksp-raw-transaction-lib/tests/security_hardening.rs
|
||||
docs/plans/031-V0_3_10_RAW_TRANSACTION_INGEST_PLAN.md
|
||||
docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md
|
||||
```
|
||||
|
||||
## Fichier ajouté
|
||||
|
||||
```text
|
||||
deltas/0.3.10/pre.002-fix.001.md
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
Aucun.
|
||||
|
||||
## Validation à rejouer
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
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-raw-transaction-lib
|
||||
cargo tree -p ksp-raw-transaction-lib --edges normal
|
||||
cargo tree -p ksp-raw-transaction-lib -e features
|
||||
```
|
||||
|
||||
`pre.003` reste bloquée tant que ce gate n’est pas intégralement vert.
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/031-V0_3_10_RAW_TRANSACTION_INGEST_PLAN.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Plan v0.3.10 — RAW Transaction commune + Worker d’ingestion multi-source
|
||||
|
||||
@@ -1040,6 +1040,8 @@ Présente tranche : archive/règles, common extraction, capability matrix, fraî
|
||||
|
||||
La matérialisation a révélé une correction normative du sizing `pre.001` : `DEP-PIPE-006` impose `ksp-store-api` au pipeline RAW et interdit `ksp-store-lib`. Le graphe et la section 5.4 sont donc corrigés dans cette tranche sans changer le contrat fonctionnel RAW.
|
||||
|
||||
La validation opérateur du 2026-09-06 confirme `cargo check --workspace`, les audits statiques et les tests de la crate, mais révèle un échec du gate Clippy `-D warnings` limité aux tests d’intégration : quatre crates de test sans rustdoc de crate et un `clippy::collapsible_if`. `pre.002-fix.001` corrige uniquement ces canaris, sans modifier le contrat RAW ni commencer `pre.003`; le signal Cargo devient `0.3.10-pre.2.fix.1`.
|
||||
|
||||
### `pre.003` — migration Backfill vers common
|
||||
|
||||
Remplacer la canonicalisation privée du Backfill par common, conserver son observation key/provenance/campagne et prouver zéro changement bytes/hash/comportement de campagne.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Validation v0.3.10 — RAW Transaction commune + Worker d’ingestion
|
||||
|
||||
@@ -380,7 +380,7 @@ rel.001 stable publication
|
||||
|
||||
## 11. Gate `pre.002` — common RAW foundation
|
||||
|
||||
État : **matérialisé ; gate Cargo opérateur requis**.
|
||||
État : **matérialisé ; `pre.002-fix.001` requis après gate Clippy opérateur**.
|
||||
|
||||
### 11.1 Crate et frontière
|
||||
|
||||
@@ -478,3 +478,38 @@ cargo tree -p ksp-raw-transaction-lib -e features
|
||||
|
||||
`pre.003` ne doit migrer le Backfill qu’après ce gate vert.
|
||||
|
||||
### 11.6 Résultat opérateur du 2026-09-06 et `pre.002-fix.001`
|
||||
|
||||
Le gate communiqué exécute bien la séquence demandée. Résultats observés :
|
||||
|
||||
```text
|
||||
cargo fmt --all : exécuté
|
||||
audits Rust : clean ; export completeness = 0 ; workspace rules = clean
|
||||
audit Markdown : clean (339 tables, 754 fichiers)
|
||||
cargo check --workspace : PASS
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : FAIL
|
||||
cargo test -p ksp-raw-transaction-lib : PASS, 9 unit + 8 intégration, 0 échec
|
||||
cargo tree --edges normal : graphe attendu core/store-api/serde_json/sha2
|
||||
cargo tree -e features : aucun feature KSP/runtime inattendu
|
||||
```
|
||||
|
||||
L’échec Clippy est limité à cinq diagnostics dans les nouveaux tests d’intégration :
|
||||
|
||||
```text
|
||||
missing_docs : tests/dependency_boundary.rs
|
||||
missing_docs : tests/public_api.rs
|
||||
missing_docs : tests/release_completeness.rs
|
||||
missing_docs : tests/security_hardening.rs
|
||||
clippy::collapsible_if : tests/release_completeness.rs
|
||||
```
|
||||
|
||||
`pre.002-fix.001` applique la convention déjà utilisée dans le workspace : une rustdoc de crate `//! ...` dans chaque test d’intégration. Le `if` imbriqué d’inventaire est réécrit sans suppression de lint ni `#[allow(...)]`. Aucun type public, golden, dépendance, feature ou comportement RAW n’est modifié.
|
||||
|
||||
Version technique du fix :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.3.10-pre.2.fix.1
|
||||
```
|
||||
|
||||
Le gate Clippy complet doit être rejoué après application du fix avant ouverture de `pre.003`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user