#!/usr/bin/env bash # Candidates end-to-end — first deep-field reality test. # # Spins up storaged + embedd + vectord + matrixd + gateway, ingests # the 1000-candidate corpus from # /home/profit/lakehouse/data/datasets/candidates.parquet via the # corpusingest substrate, then runs a real staffing query through # /v1/matrix/search and prints the top 5 hits. # # Requires: Ollama on :11434 with nomic-embed-text loaded. If absent, # this script exits 0 with a "skipped" message — same contract as # g2_smoke. # # Usage: ./scripts/candidates_e2e.sh # ./scripts/candidates_e2e.sh "your custom query here" set -euo pipefail cd "$(dirname "$0")/.." export PATH="$PATH:/usr/local/go/bin" QUERY="${1:-Python AWS Docker engineer in Chicago available now}" if ! curl -sS --max-time 3 http://localhost:11434/api/tags >/dev/null 2>&1; then echo "[candidates-e2e] Ollama not reachable on :11434 — skipping (matches g2_smoke contract)" exit 0 fi echo "[candidates-e2e] building binaries..." go build -o bin/ ./cmd/storaged ./cmd/embedd ./cmd/vectord ./cmd/matrixd ./cmd/gateway ./scripts/staffing_candidates pkill -f "bin/(storaged|embedd|vectord|matrixd|gateway)" 2>/dev/null || true sleep 0.3 PIDS=() TMP="$(mktemp -d)" CFG="$TMP/e2e.toml" cleanup() { echo "[candidates-e2e] cleanup" for p in "${PIDS[@]}"; do [ -n "$p" ] && kill "$p" 2>/dev/null || true; done rm -rf "$TMP" } trap cleanup EXIT INT TERM # Custom toml: vectord persistence disabled so the candidates index # doesn't survive the run. Without this, re-running pollutes the # shared MinIO `_vectors/` prefix and breaks g1p_smoke's "this is # the only persisted index" assertion (caught 2026-04-29). cat > "$CFG" </dev/null 2>&1; then return 0; fi sleep 0.05 done return 1 } echo "[candidates-e2e] launching stack..." ./bin/storaged -config "$CFG" > /tmp/storaged.log 2>&1 & PIDS+=($!) poll_health 3211 || { echo "storaged failed"; tail /tmp/storaged.log; exit 1; } ./bin/embedd -config "$CFG" > /tmp/embedd.log 2>&1 & PIDS+=($!) poll_health 3216 || { echo "embedd failed"; tail /tmp/embedd.log; exit 1; } ./bin/vectord -config "$CFG" > /tmp/vectord.log 2>&1 & PIDS+=($!) poll_health 3215 || { echo "vectord failed"; tail /tmp/vectord.log; exit 1; } ./bin/matrixd -config "$CFG" > /tmp/matrixd.log 2>&1 & PIDS+=($!) poll_health 3218 || { echo "matrixd failed"; tail /tmp/matrixd.log; exit 1; } ./bin/gateway -config "$CFG" > /tmp/gateway.log 2>&1 & PIDS+=($!) poll_health 3110 || { echo "gateway failed"; tail /tmp/gateway.log; exit 1; } echo "[candidates-e2e] stack up; running ingest + reality test query..." echo ./bin/staffing_candidates -query "$QUERY"