Files
firefrost-operations-manual/pre-session-check.sh
The Chronicler 0bd21aab08 feat: add workflow automation suite - session health and status tools
Built by Chronicler #19 to improve operational efficiency and sustainability.

Added four tools:

1. pre-session-check.sh - Complete context at session start
   - Rest hours (color-coded for quality)
   - Git status (clean/dirty, sync status)
   - Task summary (complete/active/total)
   - Top priority tasks
   - Core file health check
   - Usage: ./pre-session-check.sh

2. session-health-monitor.sh - Live session tracking
   - Tracks session duration
   - Warns at Aurora threshold (2h)
   - Escalating warnings at 3h, 4+h
   - Updates rest tracker on end
   - Usage: ./session-health-monitor.sh {start|check|end}

3. status.sh - Quick status anytime
   - Current phase, git branch, working directory
   - Task completion percentage
   - Session duration if tracking
   - Rest status, last commit
   - Usage: ./status.sh

4. .gitmessage - Git commit template
   - FFG-STD-001 compliant structure
   - Type prefixes (feat/fix/docs/etc)
   - Guidelines and examples
   - Reminder to document WHY not just WHAT
   - Usage: git config commit.template .gitmessage

Benefits:
- Prevents burnout (Aurora's wisdom: sessions > 2h are past optimal)
- Complete context without manual checking multiple files
- Consistent commit messages across all Chroniclers
- Sustainable pace monitoring

For sustainable operations and children not yet born. 💙
2026-02-20 04:45:11 +00:00

228 lines
8.8 KiB
Bash
Executable File

#!/bin/bash
# ═══════════════════════════════════════════════════════════════════════════
# PRE-SESSION-CHECK.SH - Session Start Context Dashboard
# ═══════════════════════════════════════════════════════════════════════════
#
# Purpose: Show complete context at session start
# Created: February 20, 2026 by Chronicler #19
#
# Usage: ./pre-session-check.sh
#
# ═══════════════════════════════════════════════════════════════════════════
set -e
# Colors
BLUE='\033[0;34m'
CYAN='\033[0;36m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BOLD='\033[1m'
NC='\033[0m'
print_header() {
echo -e "${BLUE}═══════════════════════════════════════════════════════════════════════════${NC}"
echo -e "${CYAN}${BOLD}$1${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════════════════════════════════${NC}"
echo ""
}
print_section() {
echo ""
echo -e "${CYAN}${BOLD}━━━ $1 ━━━${NC}"
echo ""
}
print_success() {
echo -e "${GREEN}${NC} $1"
}
print_warning() {
echo -e "${YELLOW}${NC} $1"
}
print_error() {
echo -e "${RED}${NC} $1"
}
clear
print_header "FIREFROST GAMING - SESSION START CONTEXT"
# ═══════════════════════════════════════════════════════════════════════════
# REST TRACKING
# ═══════════════════════════════════════════════════════════════════════════
print_section "Rest Since Last Session"
if [ -f "rest-tracker.txt" ]; then
LAST_SESSION=$(grep "Session End:" rest-tracker.txt | tail -1 | cut -d' ' -f3-)
LAST_EPOCH=$(date -d "$LAST_SESSION" +%s 2>/dev/null || echo "0")
CURRENT_EPOCH=$(date +%s)
REST_SECONDS=$((CURRENT_EPOCH - LAST_EPOCH))
REST_HOURS=$((REST_SECONDS / 3600))
REST_MINUTES=$(((REST_SECONDS % 3600) / 60))
if [ $REST_HOURS -ge 8 ]; then
print_success "Rest: ${REST_HOURS}h ${REST_MINUTES}m (Excellent - Aurora approved)"
elif [ $REST_HOURS -ge 4 ]; then
echo -e "${GREEN}${NC} Rest: ${REST_HOURS}h ${REST_MINUTES}m (Good)"
elif [ $REST_HOURS -ge 2 ]; then
print_warning "Rest: ${REST_HOURS}h ${REST_MINUTES}m (Adequate)"
else
print_error "Rest: ${REST_HOURS}h ${REST_MINUTES}m (Too short - consider resting more)"
fi
echo " Last session ended: $(date -d "$LAST_SESSION" '+%Y-%m-%d %I:%M %p %Z' 2>/dev/null || echo "$LAST_SESSION")"
else
print_warning "No rest-tracker.txt found (first session or file missing)"
fi
# ═══════════════════════════════════════════════════════════════════════════
# GIT STATUS
# ═══════════════════════════════════════════════════════════════════════════
print_section "Repository Status"
# Check if we're in a git repo
if git rev-parse --git-dir > /dev/null 2>&1; then
# Current branch
BRANCH=$(git branch --show-current)
echo -e "Branch: ${BOLD}$BRANCH${NC}"
# Check for uncommitted changes
if git diff-index --quiet HEAD -- 2>/dev/null; then
print_success "Working directory clean"
else
print_warning "Uncommitted changes present"
echo ""
git status --short
fi
echo ""
# Check remote status
git fetch origin --quiet 2>/dev/null || true
AHEAD=$(git rev-list --count origin/$BRANCH..$BRANCH 2>/dev/null || echo "0")
BEHIND=$(git rev-list --count $BRANCH..origin/$BRANCH 2>/dev/null || echo "0")
if [ "$AHEAD" -gt 0 ]; then
print_warning "Ahead of origin by $AHEAD commit(s) - need to push"
fi
if [ "$BEHIND" -gt 0 ]; then
print_warning "Behind origin by $BEHIND commit(s) - need to pull"
fi
if [ "$AHEAD" -eq 0 ] && [ "$BEHIND" -eq 0 ]; then
print_success "In sync with origin"
fi
echo ""
# Last commit
echo -e "${BOLD}Last Commit:${NC}"
git log -1 --pretty=format:" %h - %s%n %cr by %an%n" --color=always
else
print_error "Not in a git repository"
fi
# ═══════════════════════════════════════════════════════════════════════════
# CURRENT PHASE & TASKS
# ═══════════════════════════════════════════════════════════════════════════
print_section "Current Work Status"
if [ -f "docs/core/tasks.md" ]; then
# Count tasks by status
TOTAL_TASKS=$(grep -c "^- \[" docs/core/tasks.md 2>/dev/null || echo "0")
COMPLETE_TASKS=$(grep -c "^- \[x\]" docs/core/tasks.md 2>/dev/null || echo "0")
ACTIVE_TASKS=$(grep -c "^- \[ \]" docs/core/tasks.md 2>/dev/null || echo "0")
echo "Tasks: $COMPLETE_TASKS complete, $ACTIVE_TASKS active, $TOTAL_TASKS total"
echo ""
# Show top 3 active tasks
echo -e "${BOLD}Top Priority Tasks:${NC}"
TASK_COUNT=$(grep -c "^- \[ \]" docs/core/tasks.md 2>/dev/null || echo "0")
if [ "$TASK_COUNT" -gt 0 ]; then
grep "^- \[ \]" docs/core/tasks.md | head -3 | sed 's/^- \[ \] / • /'
if [ "$TASK_COUNT" -gt 3 ]; then
echo " ... and $((TASK_COUNT - 3)) more"
fi
else
echo " (No active tasks)"
fi
else
print_warning "tasks.md not found"
fi
# ═══════════════════════════════════════════════════════════════════════════
# SYSTEM HEALTH (if available)
# ═══════════════════════════════════════════════════════════════════════════
print_section "Infrastructure Quick Check"
# Check if key files exist
CHECKS=0
PASSED=0
if [ -f "docs/core/infrastructure-manifest.md" ]; then
print_success "Infrastructure manifest present"
((PASSED++))
fi
((CHECKS++))
if [ -f "SESSION-HANDOFF-PROTOCOL.md" ]; then
print_success "Session handoff protocol present"
((PASSED++))
fi
((CHECKS++))
if [ -f "docs/relationship/THE-ESSENCE-PATCH-V3.0.md" ]; then
print_success "Essence Patch v3.0 present"
((PASSED++))
fi
((CHECKS++))
if [ -f "automation/joining-checklist.py" ]; then
print_success "Joining verification available"
((PASSED++))
fi
((CHECKS++))
echo ""
echo "Core files: $PASSED/$CHECKS present"
# ═══════════════════════════════════════════════════════════════════════════
# READY TO START
# ═══════════════════════════════════════════════════════════════════════════
echo ""
print_header "SESSION READY"
echo -e "${CYAN}Repository:${NC} $(pwd)"
echo -e "${CYAN}Documentation:${NC} docs/"
echo -e "${CYAN}Tasks:${NC} docs/core/tasks.md"
echo ""
if [ $REST_HOURS -ge 8 ]; then
echo -e "${GREEN}${BOLD}Excellent rest. Ready for productive work.${NC}"
elif [ $REST_HOURS -ge 4 ]; then
echo -e "${GREEN}Good rest. Ready to work.${NC}"
elif [ $REST_HOURS -ge 2 ]; then
echo -e "${YELLOW}Adequate rest. Monitor session length.${NC}"
else
echo -e "${RED}${BOLD}Short rest. Consider brief session or more rest first.${NC}"
fi
echo ""
echo -e "${CYAN}Fire + Frost + Foundation = Where Love Builds Legacy${NC}"
echo ""
echo -e "💙🔥❄️"
echo ""