v0.3.14-pre.010-fix.001
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 582
|
||||
# version: 583
|
||||
|
||||
[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.14-pre.10"
|
||||
version = "0.3.14-pre.10.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/src/runtime_resources.rs
|
||||
// version: 39
|
||||
// version: 40
|
||||
|
||||
use sha2::Digest; // rust-rules: trait-import
|
||||
|
||||
@@ -75,7 +75,7 @@ impl RawTransactionIngestFairTurnGate {
|
||||
active: false,
|
||||
last_granted: std::option::Option::None,
|
||||
next_ticket: 1,
|
||||
waiters: std::collections::VecDeque::new(),
|
||||
waiters: std::collections::VecDeque::with_capacity(max_waiters),
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
144
deltas/0.3.14/pre.010-fix.001.md
Normal file
144
deltas/0.3.14/pre.010-fix.001.md
Normal file
@@ -0,0 +1,144 @@
|
||||
<!-- file: deltas/0.3.14/pre.010-fix.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.14-pre.010-fix.001` — queue de fairness explicitement bornée
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
0.3.14-pre.010
|
||||
workspace.package.version = 0.3.14-pre.10
|
||||
deltas/0.3.14/pre.010.md présent
|
||||
```
|
||||
|
||||
## Objectif
|
||||
|
||||
Corriger strictement le canari historique `pre.009` en échec après `pre.010`, sans modifier l'algorithme de fairness nominal / repair.
|
||||
|
||||
## Défaut observé
|
||||
|
||||
Le gate opérateur de `0.3.14-pre.010` valide les audits, `cargo check`, Clippy et les `147` unit tests, puis échoue sur un seul canari :
|
||||
|
||||
```text
|
||||
v0_3_13_pre_009_duplicate_storm_disagreement_and_starvation_guards_are_explicit
|
||||
pre.009 introduced forbidden unbounded/provider-preference behavior: VecDeque::new()
|
||||
```
|
||||
|
||||
## Cause
|
||||
|
||||
`pre.010` a introduit la queue privée de waiters de fairness avec :
|
||||
|
||||
```text
|
||||
VecDeque::new()
|
||||
```
|
||||
|
||||
La queue était déjà bornée fonctionnellement par :
|
||||
|
||||
```text
|
||||
gate.max_waiters == 0 || state.waiters.len() >= gate.max_waiters
|
||||
```
|
||||
|
||||
mais le canari historique protège également l'absence de construction textuellement non bornée.
|
||||
|
||||
## Correction
|
||||
|
||||
La construction devient explicitement dimensionnée avec la borne existante :
|
||||
|
||||
```text
|
||||
VecDeque::with_capacity(max_waiters)
|
||||
```
|
||||
|
||||
La garde `state.waiters.len() >= gate.max_waiters` reste inchangée et demeure l'autorité qui interdit toute croissance au-delà de la borne.
|
||||
|
||||
Aucune capacité supplémentaire n'est réservée fonctionnellement, aucun waiter n'est admis en plus et l'alternance `Nominal / Repair` est inchangée.
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
deltas/0.3.14/pre.010-fix.001.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime_resources.rs
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
```text
|
||||
aucun
|
||||
```
|
||||
|
||||
## Version Cargo
|
||||
|
||||
Le correctif modifie du code Rust production ; conformément aux règles de versioning :
|
||||
|
||||
```text
|
||||
header Cargo.toml : 582 -> 583
|
||||
workspace.package.version : 0.3.14-pre.10 -> 0.3.14-pre.10.fix.1
|
||||
```
|
||||
|
||||
Version de fichier :
|
||||
|
||||
```text
|
||||
src/runtime_resources.rs : 39 -> 40
|
||||
```
|
||||
|
||||
## Frontières préservées
|
||||
|
||||
```text
|
||||
aucune seconde queue d'admission ou de persistence
|
||||
aucun second registre d'hydration
|
||||
aucune nouvelle semaphore
|
||||
aucune capacité repair réservée
|
||||
burst repair = 1 inchangé
|
||||
fanout bloc repair <= 4 inchangé
|
||||
fenêtre discovery <= 512 inchangée
|
||||
aucun changement de TargetCoverage ou continuity ledger
|
||||
aucun changement de health policy
|
||||
aucun respawn Worker
|
||||
aucun changement Transport
|
||||
aucun Job Backfill
|
||||
aucun backend Store physique
|
||||
aucune croissance de surface publique
|
||||
```
|
||||
|
||||
## Validations exécutées
|
||||
|
||||
```text
|
||||
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
|
||||
vérification ciblée de l'absence de VecDeque::new() dans le code Worker contrôlé par le canari
|
||||
contrôle du diff exact
|
||||
contrôle d'inventaire ZIP
|
||||
unzip -t
|
||||
réapplication du delta sur la base pre.010 et comparaison byte-à-byte
|
||||
```
|
||||
|
||||
## Validations non exécutées
|
||||
|
||||
Le toolchain Rust/Cargo n'est pas disponible dans le sandbox de préparation. Le gate opérateur reste requis :
|
||||
|
||||
```text
|
||||
cargo fmt --all
|
||||
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 --all-targets --all-features
|
||||
```
|
||||
|
||||
## Décisions prises
|
||||
|
||||
```text
|
||||
rendre la borne existante explicite à la construction plutôt que relâcher le canari
|
||||
ne pas ajouter de #[allow(...)]
|
||||
ne pas modifier la fairness, les quotas ni les pipelines existants
|
||||
```
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
```text
|
||||
aucune pour ce correctif
|
||||
```
|
||||
Reference in New Issue
Block a user