#!/bin/bash # 매니페스트 수동 등록 — PM이 pm-auditor Task 호출 직후 명시 실행 # C35-9 Layer 3 근본 해결 2026-04-20 # Usage: bash scripts/manifest_register.sh PLAN_ID="${1}" TARGETS_CSV="${2}" GOAL="${3}" if [ -z "$PLAN_ID" ] || [ -z "$TARGETS_CSV" ] || [ -z "$GOAL" ]; then cat >&2 < plan_id : 예) 2026-04-20_134530 target_files_csv : 쉼표 구분 파일 상대 경로 (예: scripts/x.sh,SKILL.md) goal : 집행 목표 1줄 요약 (예: "안건 X Phase 1 집행") 근거: C35-9 Layer 3 매니페스트 기반 감사 (2026-04-20 PreToolUse 차단 전환) EOF exit 1 fi MANIFEST_DIR="$HOME/.claude/burningtimes-audit/manifest/active" mkdir -p "$MANIFEST_DIR" 2>/dev/null MANIFEST="$MANIFEST_DIR/$PLAN_ID.md" HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32) # YAML frontmatter + 본문 { echo "---" echo "plan_id: $PLAN_ID" echo "created_at: $(date -Iseconds 2>/dev/null || date +%Y-%m-%dT%H:%M:%S)" echo "hostname: ${HOSTNAME_TAG:-unknown}" echo "goal: \"$GOAL\"" echo "target_files:" IFS=',' read -ra FILES <<< "$TARGETS_CSV" for f in "${FILES[@]}"; do # 공백 제거 f=$(echo "$f" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') echo " - $f" done echo "completion_criteria: \"commit + push 완료 후 post-commit hook archived 이동\"" echo "---" echo "" echo "# 매니페스트 — $PLAN_ID" echo "" echo "- **등록 시각**: $(date -Iseconds 2>/dev/null || date)" echo "- **호스트**: ${HOSTNAME_TAG:-unknown}" echo "- **집행 목표**: $GOAL" echo "" echo "## 대상 파일" for f in "${FILES[@]}"; do f=$(echo "$f" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') echo "- \`$f\`" done echo "" echo "## 완료 기준" echo "" echo "commit + push 완료. post-commit hook이 \`archived/$PLAN_ID.md\`로 자동 이동 + target_files cross-check." } > "$MANIFEST" echo "✅ 매니페스트 등록 완료" echo " 경로: $MANIFEST" echo " plan_id: $PLAN_ID" echo " target_files: ${#FILES[@]}건" echo " 해제: 본 매니페스트 target_files 범위 내 Edit/Write 자동 통과" echo "" echo "📌 본 집행 완료 (commit + push) 후 매니페스트는 자동 archived 이동" exit 0