Files
whetstone_DSL/tools/mcp/run_semantic_fallback_budget_gate.sh

34 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
RUNS_ROOT="${WSTONE_RUNS_ROOT:-$ROOT_DIR/logs/taskitem_runs}"
INCLUDE_GLOB="${WSTONE_SEMANTIC_FALLBACK_INCLUDE_GLOB:-*}"
OUT_DIR="${1:-$RUNS_ROOT/TEST_ONLY_semantic_fallback_budget_gate_$(date +%Y%m%d_%H%M%S)}"
MAX_RATE="${WSTONE_SEMANTIC_MAX_FALLBACK_RATE:-0.35}"
MIN_RECORDS="${WSTONE_SEMANTIC_FALLBACK_MIN_RECORDS:-5}"
mkdir -p "$OUT_DIR"
python3 "$ROOT_DIR/tools/mcp/analyze_semantic_fallback_gaps.py" \
--runs-root "$RUNS_ROOT" \
--include-glob "$INCLUDE_GLOB" \
--out-dir "$OUT_DIR" >/dev/null
if python3 "$ROOT_DIR/tools/mcp/check_semantic_fallback_budget.py" \
--summary "$OUT_DIR/semantic_fallback_summary.json" \
--out "$OUT_DIR/semantic_fallback_budget_gate.json" \
--max-fallback-rate "$MAX_RATE" \
--min-record-count "$MIN_RECORDS" >/dev/null; then
jq -n \
--arg out_dir "$OUT_DIR" \
--argjson gate "$(cat "$OUT_DIR/semantic_fallback_budget_gate.json")" \
'{status:"pass", out_dir:$out_dir, gate:$gate}'
else
jq -n \
--arg out_dir "$OUT_DIR" \
--argjson gate "$(cat "$OUT_DIR/semantic_fallback_budget_gate.json")" \
'{status:"fail", out_dir:$out_dir, gate:$gate}'
exit 9
fi