#!/usr/bin/env bash set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" if [ -n "${PYTHON_BIN:-}" ]; then PYTHON_BIN="${PYTHON_BIN}" else PYTHON_BIN="" for candidate in python3 python.exe python; do if command -v "${candidate}" >/dev/null 2>&1 && "${candidate}" -c "import sys, pytest" >/dev/null 2>&1; then PYTHON_BIN="${candidate}" break fi done if [ -z "${PYTHON_BIN}" ]; then for candidate in python3 python.exe python; do if command -v "${candidate}" >/dev/null 2>&1 && "${candidate}" -c "import sys" >/dev/null 2>&1; then PYTHON_BIN="${candidate}" break fi done fi fi if [ -z "${PYTHON_BIN}" ]; then echo "No usable python interpreter found" >&2 exit 1 fi NODE_BIN="" for candidate in node node.exe; do if command -v "${candidate}" >/dev/null 2>&1; then NODE_BIN="${candidate}" break fi done if [ -z "${NODE_BIN}" ]; then echo "No usable Node.js interpreter found" >&2 exit 1 fi echo "== GeoIntel run readiness check ==" "$PYTHON_BIN" -m py_compile scripts/capture_release_evidence.py "$PYTHON_BIN" -m py_compile scripts/build_release_package.py "$PYTHON_BIN" -m py_compile scripts/verify_python_lock.py "$PYTHON_BIN" scripts/verify_python_lock.py "$PYTHON_BIN" -m py_compile scripts/verify_repository_layout.py "$PYTHON_BIN" scripts/verify_repository_layout.py "$PYTHON_BIN" -m py_compile scripts/check_repository_hygiene.py "$PYTHON_BIN" scripts/check_repository_hygiene.py "$PYTHON_BIN" -m py_compile scripts/verify_security_exceptions.py "$PYTHON_BIN" scripts/verify_security_exceptions.py bash -n scripts/backup_release_state.sh bash -n scripts/verify_release_backup.sh bash -n scripts/restore_release_backup_smoke.sh bash -n scripts/rotate_postgres_password.sh bash -n scripts/generate_python_lock.sh bash -n scripts/generate_container_sbom.sh bash -n scripts/scan_container_image.sh bash -n scripts/audit_python_dependencies.sh echo "Using Python: ${PYTHON_BIN}" bash scripts/check_repo_structure.sh "$PYTHON_BIN" -m ruff check backend scripts tests ${PYTHON_BIN} scripts/smoke_docs.py ${PYTHON_BIN} scripts/validate_fixtures.py ${PYTHON_BIN} scripts/smoke_contracts.py ${PYTHON_BIN} scripts/audit_api_contracts.py ${PYTHON_BIN} scripts/preimplementation_audit.py ${PYTHON_BIN} scripts/validate_m13_codex_assets.py ${PYTHON_BIN} scripts/validate_m14_launch_assets.py ${PYTHON_BIN} scripts/run_golden_qa_benchmark.py --json >/dev/null ${PYTHON_BIN} -m py_compile scripts/gis_import_smoke.py ${PYTHON_BIN} -m py_compile scripts/seed_demo_workflow.py ${PYTHON_BIN} -m py_compile scripts/yolo_preflight.py ${PYTHON_BIN} -m py_compile backend/scripts/yolo_preflight.py ${PYTHON_BIN} -m py_compile scripts/prepare_operator_real_data_samples.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_municipality_workspace.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_context_layers.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_population_history.py ${PYTHON_BIN} -m py_compile scripts/statbel_population_preflight.py ${PYTHON_BIN} -m py_compile scripts/manage_statbel_population_release.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_historical_landuse.py ${PYTHON_BIN} -m py_compile scripts/provision_regional_historical_landuse.py ${PYTHON_BIN} -m py_compile scripts/provision_official_landuse_timeseries.py ${PYTHON_BIN} -m py_compile scripts/provision_waterinfo_station_history.py ${PYTHON_BIN} -m py_compile scripts/provision_flanders_geographic_scope.py ${PYTHON_BIN} -m py_compile scripts/provision_flanders_bathymetry_profiles.py ${PYTHON_BIN} -m py_compile scripts/probe_mdk_bathymetry.py ${PYTHON_BIN} -m py_compile scripts/import_spw_bathymetry.py ${PYTHON_BIN} -m py_compile scripts/provision_walous_sources.py ${PYTHON_BIN} -m py_compile scripts/provision_spw_terrain_source.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_bwk_natura2000.py ${PYTHON_BIN} -m py_compile scripts/provision_regional_bwk_natura2000.py ${PYTHON_BIN} -m py_compile scripts/provision_agricultural_parcel_history.py ${PYTHON_BIN} -m py_compile scripts/manage_alz_agriculture_release.py ${PYTHON_BIN} -m py_compile scripts/orthophoto_release_preflight.py ${PYTHON_BIN} -m py_compile scripts/manage_orthophoto_release.py ${PYTHON_BIN} -m py_compile scripts/provision_buildings_addresses_register.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_dhmv.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_bathymetry_profiles.py ${PYTHON_BIN} -m py_compile scripts/provision_regional_dhmv.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_flood_hazards.py ${PYTHON_BIN} -m py_compile scripts/provision_regional_flood_hazards.py ${PYTHON_BIN} -m py_compile scripts/provision_thematic_rasters.py ${PYTHON_BIN} -m py_compile scripts/provision_mol_soil_map.py ${PYTHON_BIN} -m py_compile scripts/provision_regional_soil_map.py ${PYTHON_BIN} -m py_compile scripts/provision_regional_timeseries.py ${PYTHON_BIN} -m py_compile scripts/geographic_scopes.py ${PYTHON_BIN} -m py_compile scripts/provision_geographic_scope.py ${PYTHON_BIN} -m py_compile scripts/provision_belgium_north_sea_scope.py ${PYTHON_BIN} -m py_compile scripts/provision_release_golden_areas.py ${PYTHON_BIN} -m py_compile scripts/provision_regional_grb_buildings.py ${PYTHON_BIN} -m py_compile scripts/provision_regional_grb_context.py ${PYTHON_BIN} -m py_compile scripts/audit_source_freshness.py ${PYTHON_BIN} -m py_compile scripts/manage_grb_refresh.py ${PYTHON_BIN} -m py_compile scripts/export_operator_yolo_dataset.py ${PYTHON_BIN} -m py_compile scripts/export_operator_yolo_tile_dataset.py ${PYTHON_BIN} -m py_compile scripts/training_dataset_eligibility.py ${PYTHON_BIN} -m py_compile scripts/training_release_manifest.py ${PYTHON_BIN} -m py_compile scripts/run_belgium_building_training_loop.py ${PYTHON_BIN} -m py_compile scripts/build_failure_driven_yolo_sampling.py ${PYTHON_BIN} -m py_compile scripts/audit_operator_yolo_dataset_quality.py ${PYTHON_BIN} -m py_compile scripts/build_detection_model_promotion_report.py ${PYTHON_BIN} -m py_compile scripts/build_mol_operational_benchmark_report.py ${PYTHON_BIN} -m py_compile scripts/build_background_corpus_split_report.py ${PYTHON_BIN} -m py_compile scripts/build_fixed_threshold_evidence_portfolio_inputs.py ${PYTHON_BIN} -m py_compile scripts/audit_detection_false_negative_evidence.py ${PYTHON_BIN} -m py_compile scripts/audit_detection_false_positive_evidence.py ${PYTHON_BIN} -m py_compile scripts/render_detection_false_positive_review_contact_sheets.py ${PYTHON_BIN} -m py_compile scripts/render_detection_false_negative_review_contact_sheets.py ${PYTHON_BIN} -m py_compile scripts/validate_detection_false_positive_review_decisions.py ${PYTHON_BIN} -m py_compile scripts/validate_detection_false_negative_review_decisions.py ${PYTHON_BIN} -m py_compile scripts/activate_promoted_yolo_candidate.py ${PYTHON_BIN} -m py_compile scripts/migrate_runtime_model_provenance.py ${PYTHON_BIN} -m py_compile scripts/cleanup_demo_artifacts.py ${PYTHON_BIN} -m py_compile scripts/archive_technical_projects.py ${PYTHON_BIN} -m py_compile scripts/release_backup_guard.py ${PYTHON_BIN} -m py_compile scripts/release_backup_snapshot.py ${PYTHON_BIN} -m py_compile scripts/audit_data_operations.py ${PYTHON_BIN} -m py_compile scripts/cleanup_storage_artifacts.py ${PYTHON_BIN} -m py_compile scripts/restore_storage_quarantine.py ${PYTHON_BIN} -m py_compile backend/scripts/cleanup_demo_artifacts.py ${PYTHON_BIN} -m compileall backend/app (cd backend && ${PYTHON_BIN} -m pytest -W error::DeprecationWarning) (cd backend && ${PYTHON_BIN} -m alembic heads) (cd frontend && npm run test:unit) (cd frontend && npm run typecheck) (cd frontend && npm run build) "${NODE_BIN}" --check frontend/e2e/releaseJourneys.mjs "${NODE_BIN}" --check frontend/e2e/uxAudit.mjs bash -n scripts/live_migration_smoke.sh bash -n scripts/deploy_tower.sh bash -n scripts/verify_release_fresh_install.sh bash -n scripts/verify_release_upgrade_smoke.sh bash -n deploy/unraid/all-in-one-start.sh bash -n deploy/unraid/gosu-setpriv bash -n deploy/unraid/run-dockerman-container.sh bash -n deploy/unraid/deploy-release.sh bash -n deploy/unraid/rollback-dockerman-container.sh bash -n deploy/unraid/restore-predeploy-database.sh bash -n scripts/verify_browser_runtime.sh bash -n scripts/verify_demo_export_workflow.sh bash -n scripts/verify_demo_raster_workflow.sh bash -n scripts/verify_ai_handoff_interactions.sh bash -n scripts/verify_model_asset_detection_workflow.sh bash -n scripts/verify_real_data_detection_qa_workflow.sh bash -n scripts/run_detection_calibration_sweep.sh bash -n scripts/export_detection_calibration_evidence.sh bash -n scripts/smoke_detection_calibration_evidence_bundle.sh bash -n scripts/assemble_detection_calibration_evidence_portfolio.sh bash -n scripts/run_detection_quality_matrix.sh bash -n scripts/run_multi_sample_detection_quality_matrix.sh bash -n scripts/run_mol_operational_validation.sh bash -n scripts/run_operator_hard_negative_detection_matrix.sh bash -n scripts/run_background_corpus_split_matrix.sh bash -n scripts/run_split_background_promotion_workflow.sh bash -n scripts/train_operator_yolo_detector.sh bash -n scripts/verify_workbench_default_state.sh bash -n scripts/verify_workbench_interactions.sh bash -n scripts/verify_gis_runtime.sh bash -n scripts/verify_golden_qa_benchmark.sh bash -n scripts/verify_demo_cleanup_dry_run.sh bash -n scripts/capture_workbench_screenshots.sh bash -n scripts/run_rc8_release_journeys.sh bash -n scripts/run_rc9_ux_audit.sh bash -n scripts/run_rc10_data_operations_audit.sh echo "== Run readiness check passed =="