BurningTimesAi/scripts/session_end_audit.sh

56 lines
2.1 KiB
Bash

#!/bin/bash
# SessionEnd hook — 세션 종료 시 기록 누락 최종 감사
# 신설 근거: 2026-04-17 클라이언트팀 B-2-2 설계 + pm-auditor 메타 감사 A-3
# 관련 규칙: C29-4 업무 완료 후 동기화, P26 PM 업무 정확도 보장
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
TODAY=$(date +%Y-%m-%d)
ISSUES=""
# 1. 당일 커밋 존재 vs 당일 대화로그 존재 대조
TODAY_COMMITS=$(git log --since="$TODAY 00:00" --oneline 2>/dev/null | wc -l | tr -d ' ')
if [ "$TODAY_COMMITS" -gt 0 ]; then
# 당일 대화로그 파일 하나라도 있는지
LOG_EXISTS=0
for PROJ in 조직운영 수상한잡화점 코어프레임워크; do
if [ -f "$REPO_ROOT/공유/대화로그/$PROJ/$TODAY.md" ]; then
LOG_EXISTS=1
break
fi
done
if [ "$LOG_EXISTS" -eq 0 ]; then
ISSUES="${ISSUES}- 당일 커밋 ${TODAY_COMMITS}건 존재하나 대화로그 0건 (P24 위반 가능성)\n"
fi
fi
# 2. Live 더미 잔류 검증 (세션 공유 없이 세션 종료 시 경고)
LIVE_NON_EMPTY=$(find "$REPO_ROOT/.live" -type f -name "*.md" ! -name "README.md" -size +0 2>/dev/null | head -5)
if [ -n "$LIVE_NON_EMPTY" ]; then
ISSUES="${ISSUES}- .live/ 더미 파일 잔류: $(echo "$LIVE_NON_EMPTY" | wc -l | tr -d ' ')건. 세션 공유(P21-2) 또는 비우기 권고\n"
fi
# 3. 미커밋 변경사항 잔류
UNCOMMITTED=$(cd "$REPO_ROOT" && git status --short 2>/dev/null | wc -l | tr -d ' ')
if [ "$UNCOMMITTED" -gt 0 ]; then
ISSUES="${ISSUES}- 미커밋 변경사항 ${UNCOMMITTED}건 잔류. 커밋 또는 stash 권고\n"
fi
# 4. PD 지시 로그 경로 감사 실행
PATH_AUDIT=$(bash "$REPO_ROOT/scripts/verify_log_paths.sh" 2>&1)
if echo "$PATH_AUDIT" | grep -q "🚨"; then
ISSUES="${ISSUES}- PD 지시 로그 경로 부재 감지 (verify_log_paths.sh 결과)\n"
fi
if [ -n "$ISSUES" ]; then
echo ""
echo "🔍 [SessionEnd 감사] 기록 누락·동기화 미완료 감지:"
echo -e "$ISSUES"
echo "→ pm-auditor 모드 B (세션 말미 주기 감사) 호출 권고"
echo "→ 다음 세션 시작 시 자동 감지되나 본 세션에서 선제 처리 가능"
fi
exit 0