Ctrl K
ComunidadGuías…

scripts/butler-prod-playbook-seed.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bash
# Seed + verify PROD_PLAYBOOK_* experiences (delegate rescue, path error, read_state).
#
# Usage:
#   bash scripts/butler-prod-playbook-seed.sh           # dry-run
#   bash scripts/butler-prod-playbook-seed.sh --apply   # write L4 tenant file
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
export PYTHONPATH="$ROOT"

APPLY=0
for arg in "$@"; do
  case "$arg" in
    --apply) APPLY=1 ;;
    -h|--help)
      sed -n '1,6p' "$0"
      exit 0
      ;;
  esac
done

if [[ -f "$ROOT/.env" ]]; then
  # shellcheck source=scripts/lib/butler-source-env.sh
  source "$ROOT/scripts/lib/butler-source-env.sh"
  butler_source_env "$ROOT/.env" 2>/dev/null || true
fi

DRY=$([[ "$APPLY" -eq 1 ]] && echo 0 || echo 1)
export BUTLER_PROD_PLAYBOOK_DRY="$DRY"
python3 - <<'PY'
import os
import sys

from butler.dev_engine.prod_playbook_seeds import (
    seed_prod_playbooks,
    verify_prod_playbook_retrieval,
)

dry = os.environ.get("BUTLER_PROD_PLAYBOOK_DRY", "1").strip() not in ("0", "false", "no")
print("=== Prod playbook seed ===")
print(f"mode: {'dry-run' if dry else 'apply'}")
result = seed_prod_playbooks(dry_run=dry)
print(f"l4={result.get('l4_path')}")
print(f"added={result.get('added')} updated={result.get('updated')} total={result.get('total')}")

if dry:
    print()
    print("ACTION: re-run with --apply to persist L4 playbooks")
    sys.exit(0)

verify = verify_prod_playbook_retrieval()
print()
print("=== Retrieval verify ===")
for row in verify.get("checks") or []:
    tag = "PASS" if row.get("hit") else "FAIL"
    print(f"  [{tag}] {row.get('query')} -> {row.get('expected')} (top={row.get('top')})")
print(f"blocks_ok count={verify.get('block_count')}")
if not verify.get("ok"):
    print("FAIL: playbook retrieval incomplete")
    sys.exit(1)
print("OK: prod playbooks seeded and retrievable")
PY