Files
whetstone_DSL/tools/mcp/ensure_novelty_loop.sh

49 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
cd "$ROOT_DIR"
STATE_DIR="${STATE_DIR:-/tmp}"
PID_FILE="$STATE_DIR/novelty_guard.pid"
GUARD_LOG="$STATE_DIR/novelty_guard.log"
LOOP_LOG="$STATE_DIR/novelty_churn_live.log"
if [[ -f "$PID_FILE" ]]; then
old_pid="$(cat "$PID_FILE" 2>/dev/null || true)"
if [[ -n "${old_pid:-}" ]] && kill -0 "$old_pid" 2>/dev/null; then
echo "guard already running: pid=$old_pid"
exit 0
fi
fi
echo "$$" > "$PID_FILE"
trap 'rm -f "$PID_FILE"' EXIT
start_loop() {
nohup env \
OLLAMA_HOST="${OLLAMA_HOST:-127.0.0.1:11435}" \
OLLAMA_URL="${OLLAMA_URL:-http://127.0.0.1:11435/api/generate}" \
OLLAMA_TAGS_URL="${OLLAMA_TAGS_URL:-http://127.0.0.1:11435/api/tags}" \
CYCLES="${CYCLES:-200}" \
FAMILIES_PER_CYCLE="${FAMILIES_PER_CYCLE:-4}" \
RUN_SLM="${RUN_SLM:-1}" \
SYNTH_BAD="${SYNTH_BAD:-1}" \
BAD_PER_CATEGORY="${BAD_PER_CATEGORY:-400}" \
GOOD_TO_BAD_RATIO="${GOOD_TO_BAD_RATIO:-1.0}" \
BAD_MAX_PER_SIGNATURE="${BAD_MAX_PER_SIGNATURE:-20}" \
BAD_MIN_CATEGORY_COUNT="${BAD_MIN_CATEGORY_COUNT:-10}" \
ENABLE_INFRA_NOISE_FILTER="${ENABLE_INFRA_NOISE_FILTER:-1}" \
INCLUDE_EXAMPLE_PROJECT_SPECS="${INCLUDE_EXAMPLE_PROJECT_SPECS:-1}" \
./tools/mcp/run_novelty_churn_loop.sh >> "$LOOP_LOG" 2>&1 &
echo "$!"
}
while true; do
if ! pgrep -f "bash ./tools/mcp/run_novelty_churn_loop.sh" >/dev/null 2>&1; then
new_pid="$(start_loop)"
printf '%s started run_novelty_churn_loop pid=%s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$new_pid" >> "$GUARD_LOG"
fi
sleep 20
done