diff --git a/ci/test-risk-map.json b/ci/test-risk-map.json index eec300d..f08290b 100644 --- a/ci/test-risk-map.json +++ b/ci/test-risk-map.json @@ -83,6 +83,7 @@ "tests/test_offload_surgery.py", "tests/test_persistence_contracts.py", "tests/test_persistence_pipeline.py", + "tests/test_telemetry.py", "tests/conditional/test_cuda_runtime.py", "tests/conditional/test_jetson_runtime.py" ] @@ -551,7 +552,8 @@ "tests/test_persistence_contracts.py", "tests/test_persistence_pipeline.py", "tests/test_projection_math_contracts.py", - "tests/test_offline_integration.py" + "tests/test_offline_integration.py", + "tests/test_telemetry.py" ], "conditional_gates": [ "model-download-runtime" diff --git a/obliteratus/abliterate.py b/obliteratus/abliterate.py index f550e4e..41ace51 100644 --- a/obliteratus/abliterate.py +++ b/obliteratus/abliterate.py @@ -1189,8 +1189,9 @@ class AbliterationPipeline: self._cancellation_event.set() def _check_cancelled(self, stage: str | None = None) -> None: - if self._cancellation_event.is_set(): - active_stage = stage or self._active_stage + cancellation_event = getattr(self, "_cancellation_event", None) + if cancellation_event is not None and cancellation_event.is_set(): + active_stage = stage or getattr(self, "_active_stage", "pipeline") raise PipelineCancelledError( f"Pipeline cancelled during {active_stage.upper()}.", stage=active_stage, diff --git a/tests/test_abliterate.py b/tests/test_abliterate.py index 227d59c..e0be4a8 100644 --- a/tests/test_abliterate.py +++ b/tests/test_abliterate.py @@ -297,6 +297,11 @@ class TestPipelineInit: assert pipeline.handle.model is None assert pipeline.handle.tokenizer is None + def test_cancellation_check_treats_missing_event_as_not_cancelled(self): + pipeline = AbliterationPipeline.__new__(AbliterationPipeline) + + pipeline._check_cancelled("verify") + def test_public_run_cleans_up_terminal_pipeline_failure(self, monkeypatch): from obliteratus.abliterate import PipelineValidationError