#!/bin/bash # UserPromptSubmit hook용 — HOLD·긴급 파일 변경 감지 경고 # 기획팀 Phase 3 HOLD 인지 실패 사례(2026-04-15)의 근본 방지 # C10-3 HOLD 충돌 처리 자동화 REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) [ -z "$REPO_ROOT" ] && exit 0 THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle" mkdir -p "$THROTTLE_DIR" 2>/dev/null HOLD_HASH_FILE="$THROTTLE_DIR/hold_files_hash" # 현재 HOLD·긴급 파일 목록 수집 (자기 부서 + 소통 허브 inbox) HOLD_FILES=$(find "$REPO_ROOT" -maxdepth 2 \( -name '🛑_*' -o -name '⚠️_*' -o -name '🚨_*' \) 2>/dev/null | sort) # 소통 허브 inbox의 HOLD·긴급 파일도 스캔 (타 부서 HOLD 양방향 전파) CURRENT_DIR=$(pwd) INBOX_DIRS="" case "$CURRENT_DIR" in *개발팀*) INBOX_DIRS="$REPO_ROOT/공유/소통/PM→개발팀 $REPO_ROOT/공유/소통/기획팀→개발팀" ;; *기획팀*) INBOX_DIRS="$REPO_ROOT/공유/소통/PM→기획팀 $REPO_ROOT/공유/소통/개발팀→기획팀" ;; *) INBOX_DIRS="$REPO_ROOT/공유/소통/개발팀→PM $REPO_ROOT/공유/소통/기획팀→PM" ;; esac for DIR in $INBOX_DIRS; do if [ -d "$DIR" ]; then INBOX_HOLD=$(find "$DIR" -maxdepth 1 \( -name '*HOLD*' -o -name '*긴급*' -o -name '*차단*' -o -name '*블로커*' \) 2>/dev/null | sort) if [ -n "$INBOX_HOLD" ]; then HOLD_FILES="$HOLD_FILES $INBOX_HOLD" fi fi done HOLD_FILES=$(echo "$HOLD_FILES" | grep -v '^$' | sort) if [ -z "$HOLD_FILES" ]; then # HOLD 파일 없음 — 해시 초기화 echo "" > "$HOLD_HASH_FILE" exit 0 fi CURRENT_HASH=$(echo "$HOLD_FILES" | sha1sum 2>/dev/null | cut -d' ' -f1) PREV_HASH=$(cat "$HOLD_HASH_FILE" 2>/dev/null) if [ "$CURRENT_HASH" != "$PREV_HASH" ]; then echo "🚨 [HOLD 감지] HOLD·긴급 파일 변경 발견:" echo "$HOLD_FILES" | while read -r f; do echo " → $(basename "$f")" done echo "$CURRENT_HASH" > "$HOLD_HASH_FILE" fi exit 0