# 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 ```