#!/usr/bin/env bash # G1-04 OT2 observation window — weekly check-in (窗内运营节奏). # # During window (06-09 → 07-31): closure-check exit 2 is expected. # After window: exit 0 only when ot2_closure_ready (production hard feedback). # # Usage: # bash scripts/butler-g1-04-weekly-checkin.sh # bash scripts/butler-g1-04-weekly-checkin.sh --log # append pilot-log row # set -uo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" export PYTHONPATH="$ROOT" LOG=0 for arg in "$@"; do case "$arg" in --log) LOG=1 ;; -h|--help) sed -n '1,12p' "$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" 2>/dev/null || true butler_source_env "$ROOT/.env" 2>/dev/null || true fi STAMP="$(date +%Y-%m-%d)" FAIL=0 WARN=0 echo "=== G1-04 weekly check-in ($STAMP) ===" HEADLINE="$(python3 - <<'PY' from butler.ops.boundary_observability import g1_04_observation_window_status w = g1_04_observation_window_status() print( f"window {w.get('window_start')}→{w.get('window_end')} " f"remaining={w.get('days_remaining')}d " f"feedback={w.get('feedback_in_window')} " f"production={w.get('feedback_evidence_production')} " f"ot2_ready={w.get('ot2_closure_ready')}" ) PY )" echo "$HEADLINE" echo "" echo "--- closure check ---" closure_ec=0 bash "$ROOT/scripts/butler-g1-04-closure-check.sh" || closure_ec=$? case "$closure_ec" in 0) echo " OK: ot2_closure_ready — 可跑 closure-apply" ;; 2) echo " OK: 窗未结束(预期 exit 2)" ;; 3) echo " WARN: 仅 B9 测评证据 — 需生产硬反馈"; WARN=1 ;; 1) echo " FAIL: 窗满但 feedback 不足"; FAIL=1 ;; *) echo " FAIL: closure exit $closure_ec"; FAIL=1 ;; esac echo "" echo "--- prod evidence checklist ---" evidence_ec=0 bash "$ROOT/scripts/butler-dev-prod-evidence-checklist.sh" || evidence_ec=$? case "$evidence_ec" in 0) echo " OK" ;; 2) echo " WARN: 窗内尚无生产来源 eval_feedback"; WARN=1 ;; *) echo " FAIL: evidence checklist exit $evidence_ec"; FAIL=1 ;; esac echo "" echo "--- boundary observability ---" if bash "$ROOT/scripts/butler-gap-observability.sh"; then echo " OK" else echo " WARN: boundary observability (non-zero)" WARN=1 fi echo "" echo "=== pilot-log 建议行 ===" ROW="| $STAMP | **G1-04 周打卡** | $HEADLINE |" echo "$ROW" echo "" echo "真机补充(每周任选):/反馈 或 dev 委派 → prod_delegate_* / owner_hard_feedback" echo " bash scripts/butler-dev-prod-evidence-checklist.sh" if [[ "$FAIL" -ne 0 ]]; then echo "" echo "G1-04 WEEKLY: FAIL" exit 1 fi echo "" echo "G1-04 WEEKLY: PASS (warn=$WARN)" if [[ "$LOG" -eq 1 ]]; then LOG_FILE="$ROOT/projects/LingWen1/docs/pilot-log.md" if [[ -f "$LOG_FILE" ]] && ! grep -q "G1-04 周打卡.*$STAMP" "$LOG_FILE" 2>/dev/null; then python3 - <