Files
proxmox/scripts/detailed-review.sh
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands
- CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround
- CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check
- NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere
- MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates
- LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 15:46:57 -08:00

266 lines
8.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Detailed Once-Over Review Script
# Comprehensive review of all aspects of the project
set -euo pipefail
# Load IP configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
log_section() { echo -e "${CYAN}=== $1 ===${NC}"; }
REPORT_FILE="$PROJECT_ROOT/logs/detailed-review-$(date +%Y%m%d-%H%M%S).txt"
mkdir -p "$PROJECT_ROOT/logs"
{
log_section "Detailed Project Review"
echo "Generated: $(date)"
echo ""
log_section "1. Configuration File Validation"
# Check config files exist
CONFIG_FILES=(
"smom-dbis-138-proxmox/config/proxmox.conf"
"smom-dbis-138-proxmox/config/network.conf"
)
for config in "${CONFIG_FILES[@]}"; do
if [[ -f "$PROJECT_ROOT/$config" ]]; then
log_success "$config exists"
# Check if file is readable
if [[ -r "$PROJECT_ROOT/$config" ]]; then
log_success " Readable"
else
log_error " Not readable"
fi
else
log_error "$config missing"
fi
done
echo ""
log_section "2. Configuration Value Consistency"
# Source config if possible
if [[ -f "$PROJECT_ROOT/smom-dbis-138-proxmox/config/proxmox.conf" ]]; then
source "$PROJECT_ROOT/smom-dbis-138-proxmox/config/proxmox.conf" 2>/dev/null || true
echo "VMID Ranges:"
echo " VALIDATOR_COUNT: ${VALIDATOR_COUNT:-not set}"
echo " SENTRY_COUNT: ${SENTRY_COUNT:-not set}"
echo " RPC_COUNT: ${RPC_COUNT:-not set}"
echo ""
echo "VMID Starts:"
echo " VMID_VALIDATORS_START: ${VMID_VALIDATORS_START:-not set}"
echo " VMID_SENTRIES_START: ${VMID_SENTRIES_START:-not set}"
echo " VMID_RPC_START: ${VMID_RPC_START:-not set}"
# Validate consistency
if [[ "${VALIDATOR_COUNT:-}" == "5" ]] && [[ "${VMID_VALIDATORS_START:-}" == "1000" ]]; then
log_success "Validators: Correct (5 nodes starting at 1000)"
else
log_warn "Validators: Inconsistent or incorrect"
fi
if [[ "${SENTRY_COUNT:-}" == "4" ]] && [[ "${VMID_SENTRIES_START:-}" == "1500" ]]; then
log_success "Sentries: Correct (4 nodes starting at 1500)"
else
log_warn "Sentries: Inconsistent or incorrect"
fi
if [[ "${RPC_COUNT:-}" == "3" ]] && [[ "${VMID_RPC_START:-}" == "2500" ]]; then
log_success "RPC: Correct (3 nodes starting at 2500)"
else
log_warn "RPC: Inconsistent or incorrect"
fi
fi
echo ""
log_section "3. Script Syntax Validation"
SYNTAX_ERRORS=0
SCRIPT_COUNT=0
while IFS= read -r script; do
if [[ -f "$script" ]] && [[ -x "$script" ]] || [[ "$script" == *.sh ]]; then
SCRIPT_COUNT=$((SCRIPT_COUNT + 1))
if ! bash -n "$script" 2>/dev/null; then
echo " Syntax error: $script"
SYNTAX_ERRORS=$((SYNTAX_ERRORS + 1))
fi
fi
done < <(find "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" -name "*.sh" -type f 2>/dev/null)
if [[ $SYNTAX_ERRORS -eq 0 ]]; then
log_success "All $SCRIPT_COUNT scripts have valid syntax"
else
log_error "Found $SYNTAX_ERRORS scripts with syntax errors"
fi
echo ""
log_section "4. Script Dependency Check"
# Check for common library usage
LIB_FILES=(
"lib/common.sh"
"lib/container-utils.sh"
"lib/progress-tracking.sh"
)
for lib in "${LIB_FILES[@]}"; do
if [[ -f "$PROJECT_ROOT/smom-dbis-138-proxmox/$lib" ]]; then
log_success "$lib exists"
# Count scripts using it
usage_count=$(grep -r "source.*$lib" "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" 2>/dev/null | wc -l)
echo " Used by $usage_count scripts"
else
log_warn "$lib missing (may be optional)"
fi
done
echo ""
log_section "5. Hardcoded Path Reference Check"
# Check for problematic hardcoded paths
HARDCODED_PATTERNS=(
"/home/intlc/projects"
"/opt/smom-dbis-138"
"/opt/smom-dbis-138-proxmox"
)
for pattern in "${HARDCODED_PATTERNS[@]}"; do
matches=$(grep -r "$pattern" "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" 2>/dev/null | grep -v ".git" | grep -v "lib/common.sh" | wc -l)
if [[ $matches -gt 0 ]]; then
log_warn "Found $matches references to hardcoded path: $pattern"
echo " Consider using PROJECT_ROOT or relative paths"
fi
done
echo ""
log_section "6. VMID Array Hardcoding Check"
# Check scripts for hardcoded VMID arrays
HARDCODED_VMIDS=$(grep -rE "VALIDATORS=\(|SENTRIES=\(|RPC_NODES=\(" "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" 2>/dev/null | grep -v ".git" | wc -l)
if [[ $HARDCODED_VMIDS -gt 0 ]]; then
log_warn "Found $HARDCODED_VMIDS hardcoded VMID array definitions"
echo " These should ideally use config values"
grep -rE "VALIDATORS=\(|SENTRIES=\(|RPC_NODES=\(" "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" 2>/dev/null | grep -v ".git" | head -5 | sed 's/^/ /'
else
log_success "No hardcoded VMID arrays found (using config values)"
fi
echo ""
log_section "7. Network Configuration Consistency"
if [[ -f "$PROJECT_ROOT/smom-dbis-138-proxmox/config/network.conf" ]]; then
source "$PROJECT_ROOT/smom-dbis-138-proxmox/config/network.conf" 2>/dev/null || true
echo "Network Configuration:"
echo " SUBNET_BASE: ${SUBNET_BASE:-not set}"
echo " GATEWAY: ${GATEWAY:-not set}"
echo " VALIDATORS_START_IP: ${VALIDATORS_START_IP:-not set}"
echo " SENTRIES_START_IP: ${SENTRIES_START_IP:-not set}"
echo " RPC_START_IP: ${RPC_START_IP:-not set}"
if [[ "${SUBNET_BASE:-}" == "192.168.11" ]] && [[ "${GATEWAY:-}" == "${NETWORK_GATEWAY:-192.168.11.1}" ]]; then
log_success "Network base and gateway correct"
else
log_warn "Network configuration may be incorrect"
fi
fi
echo ""
log_section "8. Critical File Existence Check"
CRITICAL_FILES=(
"smom-dbis-138-proxmox/scripts/deployment/deploy-validated-set.sh"
"smom-dbis-138-proxmox/scripts/deployment/deploy-besu-nodes.sh"
"smom-dbis-138-proxmox/scripts/copy-besu-config.sh"
"smom-dbis-138-proxmox/scripts/network/bootstrap-network.sh"
"smom-dbis-138-proxmox/scripts/validation/validate-deployment-comprehensive.sh"
"smom-dbis-138-proxmox/scripts/fix-container-ips.sh"
"smom-dbis-138-proxmox/scripts/fix-besu-services.sh"
)
for file in "${CRITICAL_FILES[@]}"; do
if [[ -f "$PROJECT_ROOT/$file" ]]; then
log_success "$(basename "$file")"
else
log_error "Missing: $file"
fi
done
echo ""
log_section "9. IP Address Consistency"
# Check for old IP references in critical files
OLD_IP_COUNT=$(grep -rE "10\.3\.1\." "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" "$PROJECT_ROOT/smom-dbis-138-proxmox/config" 2>/dev/null | grep -v ".git" | grep -v ".example" | wc -l)
if [[ $OLD_IP_COUNT -eq 0 ]]; then
log_success "No old IP addresses (10.3.1.X) in scripts/config"
else
log_warn "Found $OLD_IP_COUNT references to old IP addresses in scripts/config"
fi
# Check for correct IP range usage
CORRECT_IP_COUNT=$(grep -rE "192\.168\.11\." "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" "$PROJECT_ROOT/smom-dbis-138-proxmox/config" 2>/dev/null | grep -v ".git" | wc -l)
log_info "Found $CORRECT_IP_COUNT references to correct IP range (${NETWORK_PREFIX:-192.168.11}.X)"
echo ""
log_section "10. VMID Range Consistency"
# Check for old VMID references in critical files
OLD_VMID_COUNT=$(grep -rE "\b(106|107|108|109|110|111|112|113|114|115|116|117)\b" "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" "$PROJECT_ROOT/smom-dbis-138-proxmox/config" 2>/dev/null | grep -v ".git" | grep -v ".example" | wc -l)
if [[ $OLD_VMID_COUNT -eq 0 ]]; then
log_success "No old VMIDs (106-117) in scripts/config"
else
log_warn "Found $OLD_VMID_COUNT references to old VMIDs in scripts/config"
fi
# Check for correct VMID range usage
CORRECT_VMID_COUNT=$(grep -rE "\b(1000|1001|1002|1003|1004|1500|1501|1502|1503|2500|2501|2502)\b" "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts" "$PROJECT_ROOT/smom-dbis-138-proxmox/config" 2>/dev/null | grep -v ".git" | wc -l)
log_info "Found $CORRECT_VMID_COUNT references to correct VMID ranges"
echo ""
log_section "Review Summary"
echo ""
echo "Configuration: $(if [[ -f "$PROJECT_ROOT/smom-dbis-138-proxmox/config/proxmox.conf" ]] && [[ -f "$PROJECT_ROOT/smom-dbis-138-proxmox/config/network.conf" ]]; then echo "✓ Complete"; else echo "✗ Incomplete"; fi)"
echo "Scripts: $SCRIPT_COUNT scripts checked, $SYNTAX_ERRORS syntax errors"
echo "Hardcoded paths: Check warnings above"
echo "VMID consistency: Check warnings above"
echo "IP consistency: Check warnings above"
echo ""
} | tee "$REPORT_FILE"
log_info "Detailed review report saved to: $REPORT_FILE"