#!/bin/bash # Triad Deployment Logger — Enhanced with corruption detection, rollback, and audit trail # Usage: ./scripts/deploy-logger.sh [--node ] [--action ] [--details ] set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" WORKSPACE_ROOT="$(dirname "$SCRIPT_DIR")" DEPLOY_LOG_DIR="$WORKSPACE_ROOT/.secure/deployment-logs" CORRUPTION_REPORT_DIR="$WORKSPACE_ROOT/.secure/corruption-reports" MANIFEST_FILE="$WORKSPACE_ROOT/.secure/config-hash-manifest.json" NODE_ID="${2:-silica-animus}" ACTION="${4:-unknown}" DETAILS="${6:-{}}" TIMESTAMP=$(date -Iseconds) DATE=$(date +%Y-%m-%d) LOG_FILE="$DEPLOY_LOG_DIR/deployments-$DATE.jsonl" # Ensure directories exist mkdir -p "$DEPLOY_LOG_DIR" "$CORRUPTION_REPORT_DIR" # Get current git hash GIT_HASH=$(cd "$WORKSPACE_ROOT" && git rev-parse HEAD 2>/dev/null || echo "unknown") PREV_HASH="${PREV_HASH:-unknown}" # Get ledger state LEDGER_STATE=$(sqlite3 "$WORKSPACE_ROOT/.aura/consensus.db" "SELECT COUNT(*) FROM consensus_votes" 2>/dev/null || echo "0") # Get corruption check status CORRUPTION_STATUS="skipped" if [ -f "$MANIFEST_FILE" ]; then CORRUPTION_STATUS="verified" fi # Get sync source SYNC_SOURCE="${SYNC_SOURCE:-unknown}" # Build deployment record DEPLOY_RECORD=$(cat <> "$LOG_FILE" # Verify manifest integrity after deployment if [ -f "$MANIFEST_FILE" ]; then echo "🦞 Deployment logged: $ACTION on $NODE_ID" echo " Git: $GIT_HASH" echo " Ledger: $LEDGER_STATE votes" echo " Corruption: $CORRUPTION_STATUS" echo " Log: $LOG_FILE" # Trigger corruption check if action was config change or sync if [[ "$ACTION" == *"config"* ]] || [[ "$ACTION" == *"sync"* ]] || [[ "$ACTION" == *"recovery"* ]]; then echo " Running post-deploy integrity check..." "$SCRIPT_DIR/detect-corruption.sh" --post-deploy 2>/dev/null || true fi else echo "⚠️ Manifest not found. Regenerating..." # Could trigger manifest regeneration here fi echo "🦞 Deployment logging complete."