diff --git a/AGENTS.md b/AGENTS.md index b589d9d..7f9e7ae 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -448,3 +448,17 @@ confirmation segments do not mutate it, and adaptive runs fail unless confirmati - [x] Update manual probe contract tests for calibrate-then-confirm behavior. - [x] Run shell syntax checks, focused contract tests, and package checks. - [x] Push clean semver `0.17.21` for installed client/server testing. + +## 0.17.22 Adaptive Calibration Export Fix Checklist + +Context: the 0.17.21 run proved the calibrate-then-confirm shape worked, but no calibration +was actually applied. The calibration decision printed usable provisional recommendations, then +reported `provisional_calibration_enabled=false` and left the active offset unchanged. Root cause: +the Bash defaults were shell variables, while the embedded Python decision helper reads environment +variables via `os.environ`. + +- [x] Treat the 0.17.21 run as confirmation that the probe shape works but calibration was disabled by script plumbing. +- [x] Export adaptive/provisional/raw-failure/confirmation knobs after defaulting them. +- [x] Add contract coverage so provisional calibration defaults cannot silently stop reaching the Python decision helper. +- [x] Run shell syntax checks, focused contract tests, and package checks. +- [x] Push clean semver `0.17.22` for installed client/server testing. diff --git a/Cargo.lock b/Cargo.lock index 5aa65b0..5195c52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1652,7 +1652,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "lesavka_client" -version = "0.17.21" +version = "0.17.22" dependencies = [ "anyhow", "async-stream", @@ -1686,7 +1686,7 @@ dependencies = [ [[package]] name = "lesavka_common" -version = "0.17.21" +version = "0.17.22" dependencies = [ "anyhow", "base64", @@ -1698,7 +1698,7 @@ dependencies = [ [[package]] name = "lesavka_server" -version = "0.17.21" +version = "0.17.22" dependencies = [ "anyhow", "base64", diff --git a/client/Cargo.toml b/client/Cargo.toml index 7bf7b6c..18d2271 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -4,7 +4,7 @@ path = "src/main.rs" [package] name = "lesavka_client" -version = "0.17.21" +version = "0.17.22" edition = "2024" [dependencies] diff --git a/common/Cargo.toml b/common/Cargo.toml index 00b6a18..1411c45 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lesavka_common" -version = "0.17.21" +version = "0.17.22" edition = "2024" build = "build.rs" diff --git a/scripts/manual/run_upstream_mirrored_av_sync.sh b/scripts/manual/run_upstream_mirrored_av_sync.sh index 31d36aa..e903596 100755 --- a/scripts/manual/run_upstream_mirrored_av_sync.sh +++ b/scripts/manual/run_upstream_mirrored_av_sync.sh @@ -79,6 +79,18 @@ if ! [[ "${LESAVKA_SYNC_CONFIRMATION_SEGMENTS}" =~ ^[0-9]+$ ]]; then exit 2 fi LESAVKA_SYNC_TOTAL_SEGMENTS=$((LESAVKA_SYNC_CALIBRATION_SEGMENTS + LESAVKA_SYNC_CONFIRMATION_SEGMENTS)) +export LESAVKA_SYNC_ADAPTIVE_CALIBRATION +export LESAVKA_SYNC_PROVISIONAL_CALIBRATION +export LESAVKA_SYNC_PROVISIONAL_MIN_PAIRS +export LESAVKA_SYNC_PROVISIONAL_MAX_P95_MS +export LESAVKA_SYNC_PROVISIONAL_MAX_DRIFT_MS +export LESAVKA_SYNC_PROVISIONAL_GAIN +export LESAVKA_SYNC_PROVISIONAL_MAX_STEP_US +export LESAVKA_SYNC_RAW_FAILURE_CALIBRATION +export LESAVKA_SYNC_RAW_FAILURE_MAX_ABS_DELTA_MS +export LESAVKA_SYNC_CONFIRM_AFTER_CALIBRATION +export LESAVKA_SYNC_CONFIRMATION_SEGMENTS +export LESAVKA_SYNC_REQUIRE_CONFIRMATION_PASS cleanup() { set +e diff --git a/server/Cargo.toml b/server/Cargo.toml index d551b27..d640d79 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -10,7 +10,7 @@ bench = false [package] name = "lesavka_server" -version = "0.17.21" +version = "0.17.22" edition = "2024" autobins = false diff --git a/testing/tests/client_manual_sync_script_contract.rs b/testing/tests/client_manual_sync_script_contract.rs index 68c6fd8..63fe547 100644 --- a/testing/tests/client_manual_sync_script_contract.rs +++ b/testing/tests/client_manual_sync_script_contract.rs @@ -140,6 +140,8 @@ fn mirrored_sync_script_uses_real_client_capture_path() { "LESAVKA_SYNC_REQUIRE_CONFIRMATION_PASS=${LESAVKA_SYNC_REQUIRE_CONFIRMATION_PASS:-${LESAVKA_SYNC_CONFIRM_AFTER_CALIBRATION}}", "LESAVKA_SYNC_CONFIRMATION_SEGMENTS must be a non-negative integer", "LESAVKA_SYNC_TOTAL_SEGMENTS=$((LESAVKA_SYNC_CALIBRATION_SEGMENTS + LESAVKA_SYNC_CONFIRMATION_SEGMENTS))", + "export LESAVKA_SYNC_PROVISIONAL_CALIBRATION", + "export LESAVKA_SYNC_RAW_FAILURE_CALIBRATION", "LESAVKA_SYNC_ADAPTIVE_CALIBRATION", "LESAVKA_SYNC_CALIBRATION_SEGMENTS=4", "browser_consumer_reuse_session=${reuse_browser_session}",