#!/bin/sh set -eu cd "$(dirname "$0")/.." tmp=$(mktemp -d "${TMPDIR:-/tmp}/thoth-preprocess.XXXXXX") project="thoth-preprocess-$$" cleanup() { docker compose -f compose.yaml -f deploy/compose.local-vector.yaml \ -f deploy/compose.preprocess.yaml -f "$tmp/smoke.yaml" --project-name "$project" \ --profile local-vector --profile preprocess down --volumes >/dev/null 2>&1 || true rm -rf "$tmp" } trap cleanup EXIT HUP INT TERM mkdir -p "$tmp/source/evidence" printf '%s\n' '# Evidence' 'generation one' >"$tmp/source/evidence/a.md" for name in bootstrap migrator reader writer; do printf '%s' "smoke-$name-$project" >"$tmp/$name" chmod 0600 "$tmp/$name" done export THT_VECTOR_BOOTSTRAP_PASSWORD_SECRET_FILE="$tmp/bootstrap" export THT_VECTOR_MIGRATOR_PASSWORD_SECRET_FILE="$tmp/migrator" export THT_VECTOR_READER_PASSWORD_SECRET_FILE="$tmp/reader" export THT_VECTOR_WRITER_PASSWORD_SECRET_FILE="$tmp/writer" export THT_OLLAMA_URL=http://mock-embeddings:8081 cat >"$tmp/smoke.yaml" </dev/null $compose run --rm --no-deps vector-migrate >/dev/null first=$($compose run --rm preprocess-evidence) second=$($compose run --rm preprocess-evidence) printf '%s' 'generation two' >>"$tmp/source/evidence/a.md" third=$($compose run --rm preprocess-evidence) dwh=$($compose run --rm preprocess-dwh) python3 - "$first" "$second" "$third" <<'PY' import json, sys a, b, c = map(json.loads, sys.argv[1:]) assert len(a["changed"]) == 1 and not a["unchanged"] assert len(b["unchanged"]) == 1 and not b["changed"] assert len(c["changed"]) == 1 and c["generation"] != a["generation"] assert all(row["published"] for row in (a, b, c)) PY python3 - "$dwh" <<'PY' import json, sys assert json.loads(sys.argv[1])["status"] == "succeeded" PY active=$($compose run --rm --no-deps --entrypoint sh preprocess-evidence -c \ 'cat /data/workspaces/preprocess-evidence/corpus/ACTIVE') python3 - "$third" "$active" <<'PY' import json, sys assert json.loads(sys.argv[1])["generation"] == sys.argv[2].strip() PY echo "real Compose preprocessing unchanged rerun, mutation, DWH job, and ACTIVE publish passed."