Lot 27 : tests contre les mutations survivantes du banc d'essai

84 mutations du port Rust, 81 tuées ; trois équivalentes documentées
dans la spécification (annulation déjà vue au premier tour du select,
progression d'un job remplacé, PID nul du moteur).

- bench/tests.rs : un mini moteur qui garde les corps des requêtes ;
  tranche pile à la fin du corpus, tour sans attendu, débits nuls
  recalculés, niveau rejoué une seule fois, préchauffage et ligne courte
  d'un run rapide, profondeur arrêtée (contexte plein, corpus épuisé,
  réponse reprise, note de reprise hybride ou gabarit) ;
- tests/bench.rs : second lancement pendant la prise du bail, preset
  relu au départ du job, mesure enregistrée sous le preset actif ;
- journal de parité : un prompt juste au-delà de la prose.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
Claude committed 2026-10-16 00:41:20 +00:00
1 parent 8f61870224
commit 84ae3a0cc4
6 files changed
+609

No files matched your search

+6
View File
@@ -115,6 +115,8 @@ pub struct FakeGo {
pub side_jobs: Mutex<Vec<String>>,
/// /internal/v1/bench/perf reçus.
pub bench_perfs: Mutex<Vec<serde_json::Value>>,
/// Délai avant de répondre à une prise de bail.
pub lease_delay: Mutex<Option<std::time::Duration>>,
}
impl FakeGo {
@@ -245,6 +247,10 @@ async fn handle(st: Arc<FakeGo>, req: Request<Incoming>) -> Response<Full<Bytes>
}
"/internal/v1/engine/lease" => {
let body = req.into_body().collect().await.unwrap().to_bytes();
let delay = *st.lease_delay.lock().unwrap();
if let Some(d) = delay {
tokio::time::sleep(d).await;
}
let v: serde_json::Value = serde_json::from_slice(&body).unwrap_or_default();
if let Some(why) = v["why"].as_str() {
st.lease_whys.lock().unwrap().push(why.to_string());