2026-02-12 15:46:57 -08:00
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
# Run all Next Steps that can be executed from this environment.
|
|
|
|
|
|
# Steps requiring LAN, Proxmox host, or UI are printed at the end.
|
|
|
|
|
|
# Refs: docs/00-meta/NEXT_STEPS_OPERATOR.md, CONTINUE_AND_COMPLETE.md, NEXT_STEPS_ALL.md
|
|
|
|
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
|
|
EVIDENCE_DIR="$PROJECT_ROOT/docs/04-configuration/verification-evidence"
|
|
|
|
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
|
|
|
|
REPORT_FILE="$EVIDENCE_DIR/NEXT_STEPS_RUN_$TIMESTAMP.md"
|
|
|
|
|
|
|
|
|
|
|
|
RED='\033[0;31m'
|
|
|
|
|
|
GREEN='\033[0;32m'
|
|
|
|
|
|
YELLOW='\033[1;33m'
|
|
|
|
|
|
BLUE='\033[0;34m'
|
|
|
|
|
|
NC='\033[0m'
|
|
|
|
|
|
|
|
|
|
|
|
log_ok() { echo -e "${GREEN}[OK]${NC} $1"; }
|
|
|
|
|
|
log_fail() { echo -e "${RED}[FAIL]${NC} $1"; }
|
|
|
|
|
|
log_skip() { echo -e "${YELLOW}[SKIP]${NC} $1"; }
|
|
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
|
|
|
|
|
|
|
|
|
|
cd "$PROJECT_ROOT"
|
|
|
|
|
|
mkdir -p "$EVIDENCE_DIR"
|
|
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
|
|
echo "Run all Next Steps (automated from workspace)"
|
|
|
|
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
echo "# Next Steps — Automated Run"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
echo "**Date:** $(date -Iseconds)"
|
|
|
|
|
|
echo "**Report:** \`$REPORT_FILE\`"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
echo "## Automated steps run"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
} > "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
FAILED=0
|
|
|
|
|
|
|
|
|
|
|
|
# 1. Dependencies
|
|
|
|
|
|
log_info "1. Check dependencies"
|
|
|
|
|
|
if bash "$SCRIPT_DIR/verify/check-dependencies.sh" >> "$REPORT_FILE" 2>&1; then
|
|
|
|
|
|
log_ok "Dependencies"
|
|
|
|
|
|
echo "| Dependencies | OK | \`check-dependencies.sh\` |" >> "$REPORT_FILE"
|
|
|
|
|
|
else
|
|
|
|
|
|
log_skip "Dependencies (some optional tools missing)"
|
|
|
|
|
|
echo "| Dependencies | WARN | \`check-dependencies.sh\` (optional tools may be missing) |" >> "$REPORT_FILE"
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
# 2. Config validation
|
|
|
|
|
|
log_info "2. Validate config files"
|
|
|
|
|
|
if bash "$PROJECT_ROOT/scripts/validation/validate-config-files.sh" >> "$REPORT_FILE" 2>&1; then
|
|
|
|
|
|
log_ok "Config validation"
|
|
|
|
|
|
echo "| Config validation | OK | \`validate-config-files.sh\` |" >> "$REPORT_FILE"
|
|
|
|
|
|
else
|
|
|
|
|
|
log_fail "Config validation"
|
|
|
|
|
|
echo "| Config validation | FAIL | \`validate-config-files.sh\` |" >> "$REPORT_FILE"
|
|
|
|
|
|
((FAILED++)) || true
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
# 3. Run all validation (skip genesis if no RPC)
|
|
|
|
|
|
log_info "3. Run all validation (--skip-genesis)"
|
|
|
|
|
|
if bash "$SCRIPT_DIR/verify/run-all-validation.sh" --skip-genesis >> "$REPORT_FILE" 2>&1; then
|
|
|
|
|
|
log_ok "Run all validation"
|
|
|
|
|
|
echo "| Run all validation | OK | \`run-all-validation.sh --skip-genesis\` |" >> "$REPORT_FILE"
|
|
|
|
|
|
else
|
|
|
|
|
|
log_fail "Run all validation"
|
|
|
|
|
|
echo "| Run all validation | FAIL | \`run-all-validation.sh --skip-genesis\` |" >> "$REPORT_FILE"
|
|
|
|
|
|
((FAILED++)) || true
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
# 4. E2E routing (may have RPC/Blockscout skip when off-LAN)
|
|
|
|
|
|
log_info "4. End-to-end routing verification"
|
2026-03-06 08:46:55 -08:00
|
|
|
|
if E2E_SUCCESS_IF_ONLY_RPC_BLOCKED=1 bash "$SCRIPT_DIR/verify/verify-end-to-end-routing.sh" --profile=public >> "$REPORT_FILE" 2>&1; then
|
2026-02-12 15:46:57 -08:00
|
|
|
|
log_ok "E2E routing"
|
2026-03-06 08:46:55 -08:00
|
|
|
|
echo "| E2E routing | OK | \`verify-end-to-end-routing.sh --profile=public\` (RPC may skip off-LAN) |" >> "$REPORT_FILE"
|
2026-02-12 15:46:57 -08:00
|
|
|
|
else
|
|
|
|
|
|
log_skip "E2E routing (check report in verification-evidence/e2e-verification-*)"
|
2026-03-06 08:46:55 -08:00
|
|
|
|
echo "| E2E routing | WARN/FAIL | \`verify-end-to-end-routing.sh --profile=public\` — see latest e2e-verification-* |" >> "$REPORT_FILE"
|
2026-02-12 15:46:57 -08:00
|
|
|
|
fi
|
|
|
|
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
# 5. Explorer + block production quick check
|
|
|
|
|
|
log_info "5. Explorer and block production quick check"
|
|
|
|
|
|
if bash "$SCRIPT_DIR/verify/verify-explorer-and-block-production.sh" >> "$REPORT_FILE" 2>&1; then
|
|
|
|
|
|
log_ok "Explorer + block production"
|
|
|
|
|
|
echo "| Explorer + block production | OK | \`verify-explorer-and-block-production.sh\` |" >> "$REPORT_FILE"
|
|
|
|
|
|
else
|
|
|
|
|
|
log_skip "Explorer + block (RPC/block check may fail off-LAN)"
|
|
|
|
|
|
echo "| Explorer + block production | WARN | \`verify-explorer-and-block-production.sh\` (block production needs LAN) |" >> "$REPORT_FILE"
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
# 6. Bridge dry-run
|
|
|
|
|
|
log_info "6. Bridge dry-run"
|
|
|
|
|
|
if bash "$SCRIPT_DIR/bridge/run-send-cross-chain.sh" 0.01 --dry-run >> "$REPORT_FILE" 2>&1; then
|
|
|
|
|
|
log_ok "Bridge dry-run"
|
|
|
|
|
|
echo "| Bridge dry-run | OK | \`run-send-cross-chain.sh 0.01 --dry-run\` |" >> "$REPORT_FILE"
|
|
|
|
|
|
else
|
|
|
|
|
|
log_skip "Bridge dry-run (RPC/keys may be unreachable)"
|
|
|
|
|
|
echo "| Bridge dry-run | SKIP/FAIL | \`run-send-cross-chain.sh 0.01 --dry-run\` (needs RPC from LAN) |" >> "$REPORT_FILE"
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
# 7. Security dry-run (no --apply)
|
|
|
|
|
|
log_info "7. Security dry-run (no --apply)"
|
|
|
|
|
|
if bash "$SCRIPT_DIR/security/run-security-on-proxmox-hosts.sh" >> "$REPORT_FILE" 2>&1; then
|
|
|
|
|
|
log_ok "Security dry-run"
|
|
|
|
|
|
echo "| Security dry-run | OK | \`run-security-on-proxmox-hosts.sh\` (no --apply) |" >> "$REPORT_FILE"
|
|
|
|
|
|
else
|
|
|
|
|
|
log_skip "Security dry-run (SSH to hosts may fail)"
|
|
|
|
|
|
echo "| Security dry-run | SKIP | \`run-security-on-proxmox-hosts.sh\` (SSH to .10/.11/.12) |" >> "$REPORT_FILE"
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
# 8. Cron --show
|
|
|
|
|
|
log_info "8. Cron schedules (--show)"
|
|
|
|
|
|
bash "$SCRIPT_DIR/maintenance/schedule-npmplus-backup-cron.sh" --show >> "$REPORT_FILE" 2>&1 || true
|
|
|
|
|
|
bash "$SCRIPT_DIR/maintenance/schedule-daily-weekly-cron.sh" --show >> "$REPORT_FILE" 2>&1 || true
|
|
|
|
|
|
echo "| Cron (show) | — | \`schedule-npmplus-backup-cron.sh --show\`, \`schedule-daily-weekly-cron.sh --show\` |" >> "$REPORT_FILE"
|
|
|
|
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
# Append "Run from LAN" and "Manual" sections
|
|
|
|
|
|
cat >> "$REPORT_FILE" << 'EOF'
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Run from LAN / Proxmox (when ready)
|
|
|
|
|
|
|
|
|
|
|
|
| # | What | Command |
|
|
|
|
|
|
|---|------|---------|
|
|
|
|
|
|
| 7 | Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
|
|
|
|
|
|
| 8 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` |
|
|
|
|
|
|
| 13a | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
|
|
|
|
|
|
| 13c | Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
|
|
|
|
|
|
| NPMplus backup | Backup NPMplus | `bash scripts/verify/backup-npmplus.sh` |
|
|
|
|
|
|
| Wave 0 from LAN | NPMplus RPC fix + backup | `bash scripts/run-wave0-from-lan.sh` |
|
|
|
|
|
|
| Validators + block production | Fix validators / tx-pool | `bash scripts/fix-all-validators-and-txpool.sh` then `scripts/monitoring/monitor-blockchain-health.sh` |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Manual / UI
|
|
|
|
|
|
|
|
|
|
|
|
| # | What | Where |
|
|
|
|
|
|
|---|------|--------|
|
|
|
|
|
|
| 9 | ~~2506–2508~~ Destroyed 2026-02-08 (RPC 2500–2505 only) | N/A |
|
|
|
|
|
|
| 10 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org |
|
|
|
|
|
|
| 11 | NPMplus cert 134 | NPMplus → SSL Certificates → cross-all.defi-oracle.io re-request/re-save |
|
|
|
|
|
|
| 12 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## References
|
|
|
|
|
|
|
|
|
|
|
|
- [NEXT_STEPS_OPERATOR.md](../../00-meta/NEXT_STEPS_OPERATOR.md)
|
|
|
|
|
|
- [CONTINUE_AND_COMPLETE.md](../../00-meta/CONTINUE_AND_COMPLETE.md)
|
|
|
|
|
|
- [NEXT_STEPS_ALL.md](../../00-meta/NEXT_STEPS_ALL.md)
|
|
|
|
|
|
- [FULL_FIXES_PREPARED.md](../FULL_FIXES_PREPARED.md)
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
|
|
if [ "$FAILED" -eq 0 ]; then
|
|
|
|
|
|
log_ok "Automated next steps complete. Report: $REPORT_FILE"
|
|
|
|
|
|
else
|
|
|
|
|
|
log_fail "Automated next steps: $FAILED failure(s). Report: $REPORT_FILE"
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "Run-from-LAN and Manual sections are in the report."
|
|
|
|
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
|
|
exit "$FAILED"
|