#!/usr/bin/env bash # orca UAT smoke test — CI-automated subset of uat-signoff.sh (REQ-163) # Runs pure-CLI assertions that don't require a live cluster. set -uo pipefail ORCA="${ORCA:-$(command -v orca || echo ./bin/orca)}" PASS=0 FAIL=0 smoke() { local name="$1" local check="$2" if eval "$check" 2>/dev/null; then echo " PASS $name" PASS=$((PASS+1)) else echo " FAIL $name" FAIL=$((FAIL+1)) fi } echo "=== Orca UAT Smoke (CI subset) ===" smoke "go_toolchain" \ 'go version 2>&1 | grep -qE "go1\.25\.1[2-9]|go1\.2[6-9]"' smoke "build" \ 'test -x "$ORCA"' smoke "no_pprof_all_interfaces" \ '! grep -rn "pprof-allow-public" internal/daemon/pprof.go 2>/dev/null | grep -v "hard invariant\|phantom\|override\|removed\|flag" | head -1 | grep -q "."' smoke "no_password_in_docs" \ '! grep -rn "ORCA_PROXMOX_PASSWORD" examples/ 2>/dev/null | head -1 | grep -q "."' smoke "acl_file_mode_in_code" \ 'grep -q "0o600" internal/cli/acl.go 2>/dev/null' smoke "doctor_modes_exists" \ 'grep -q "doctorModesCmd\|doctor.*modes" internal/cli/doctor.go 2>/dev/null' smoke "metrics_expanded" \ 'grep -q "orca_jobs_running\|orca_audit_chain_head" internal/transport/metrics.go 2>/dev/null' smoke "type_linux_available" \ 'grep -q "NodeKindLinux" internal/model/node.go 2>/dev/null' smoke "scheduler_wired" \ 'grep -q "dispatchDecision\|deployRemote" internal/cli/job_dispatch.go 2>/dev/null' smoke "acl_check_wired" \ 'grep -q "acl.Check\|aclPolicy\|Check(" internal/daemon/acl.go 2>/dev/null' smoke "seal_implemented" \ 'grep -q "clusterSealCmd\|func.*runClusterSeal\|cluster seal" internal/cli/cluster.go 2>/dev/null' smoke "injection_hardening" \ 'grep -q "validSafeName\|shellQuote" internal/cli/validate.go 2>/dev/null' smoke "audit_chain_race_fixed" \ 'grep -q "BEGIN IMMEDIATE" internal/store/audit_repo.go 2>/dev/null' echo "=== PASS: $PASS, FAIL: $FAIL ===" exit $FAIL