from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def test_real_data_detection_qa_smoke_requires_operator_inputs_and_checks_full_chain() -> None: script_path = ROOT / "scripts" / "verify_real_data_detection_qa_workflow.sh" readiness = (ROOT / "scripts" / "run_readiness_check.sh").read_text(encoding="utf-8") assert script_path.exists() script = script_path.read_text(encoding="utf-8") assert "bash -n scripts/verify_real_data_detection_qa_workflow.sh" in readiness assert "REAL_RASTER_PATH" in script assert "REAL_REFERENCE_VECTOR_PATH" in script assert "REAL_PROJECT_ID" in script assert "REAL_DATASET_NAME_PREFIX" in script assert "usage()" in script assert "/api/v1/projects" in script assert "/datasets/upload" in script assert "dataset_role=reference" in script assert 'area_upload_args=(-F "area_id=${area_id}")' in script assert "reference_layer_name=buildings" in script assert "/raster/inspect" in script assert "/raster/tile" in script assert "/api/v1/detection/model-assets" in script assert "/api/v1/detection/yolo/preflight" in script assert "/api/v1/detection/run" in script assert "/qa/reference" in script assert "persisted_tile_manifest_union" in script assert "box_to_footprint_diagnostics" in script assert "candidate_polygon_vs_reference_footprint_iou" in script assert "/api/v1/exports/geojson" in script assert "Response is not a canonical GeoIntel data envelope" in script assert "No local model assets are available" in script assert "demo/workflow" not in script assert "fixture_mode" not in script assert "Fixture detections" not in script