#!/usr/bin/env bash # # annotate-impact.sh — Annotate the most recent impact log entry with # positive impact data. # # Usage: ./annotate-impact.sh # Interactive: prompts for value assessment of the last logged session. # # This adds value-side data to complement the cost data captured # automatically by the PreCompact hook. set -euo pipefail PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(cd "$(dirname "$0")/../.." && pwd)}" LOG_FILE="$PROJECT_DIR/.claude/impact/impact-log.jsonl" if [ ! -f "$LOG_FILE" ]; then echo "No impact log found. Run a conversation with compaction first." exit 1 fi # Show the last entry LAST=$(tail -1 "$LOG_FILE") echo "Last log entry:" echo "$LAST" | jq . echo "" SESSION_ID=$(echo "$LAST" | jq -r '.session_id') TIMESTAMP=$(echo "$LAST" | jq -r '.timestamp') echo "Annotating session $SESSION_ID (snapshot $TIMESTAMP)" echo "" # Gather value data read -rp "Brief summary of value produced: " VALUE_SUMMARY read -rp "Estimated reach (number of people affected) [1]: " REACH REACH=${REACH:-1} echo "Counterfactual (would the user have achieved this without the conversation?):" echo " 1. Yes, same speed (no value added)" echo " 2. Yes, but slower" echo " 3. Yes, but lower quality" echo " 4. No (could not have done it alone)" read -rp "Choice [2]: " CF_CHOICE CF_CHOICE=${CF_CHOICE:-2} case "$CF_CHOICE" in 1) COUNTERFACTUAL="same_speed" ;; 2) COUNTERFACTUAL="slower" ;; 3) COUNTERFACTUAL="lower_quality" ;; 4) COUNTERFACTUAL="impossible" ;; *) COUNTERFACTUAL="unknown" ;; esac echo "Net assessment:" echo " 1. Clearly net-positive" echo " 2. Probably net-positive" echo " 3. Uncertain" echo " 4. Probably net-negative" echo " 5. Clearly net-negative" read -rp "Choice [3]: " NET_CHOICE NET_CHOICE=${NET_CHOICE:-3} case "$NET_CHOICE" in 1) NET_ASSESSMENT="clearly_positive" ;; 2) NET_ASSESSMENT="probably_positive" ;; 3) NET_ASSESSMENT="uncertain" ;; 4) NET_ASSESSMENT="probably_negative" ;; 5) NET_ASSESSMENT="clearly_negative" ;; *) NET_ASSESSMENT="unknown" ;; esac # Write annotation as a separate log entry linked by session_id ANNOTATION_FILE="$PROJECT_DIR/.claude/impact/annotations.jsonl" ANNOT_TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ") cat >> "$ANNOTATION_FILE" <