#!/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