from __future__ import annotations import asyncio import json from pathlib import Path from gap_pipeline.e2e import run_offline_smoke def test_offline_end_to_end_smoke(tmp_path: Path) -> None: result = asyncio.run(run_offline_smoke(tmp_path / "e2e")) assert result["mode"] == "offline-smoke" assert result["surface_families"] == [ "descriptive_long", "descriptive_long_confusing", "descriptive_long_misleading", "garbled_string", ] assert result["kernel_status"] == "accepted" assert result["verification_rounds"] == 2 assert result["export_status"] == "complete" assert result["exported_item_count"] == 1 record = json.loads(Path(result["release_record"]).read_text()) assert set(record["variants"]) == { "descriptive_long", "descriptive_long_confusing", "descriptive_long_misleading", "garbled_string", "kernel_variant", }