- Add GOVERNMENT_TREASURY_EMI_WALLET_MASTER_PLAN.md (Rail/RTGS/URA/EMI/wallet/VA gates); index in AGENTS.md and MASTER_INDEX.md - Add scripts/verify/check-allmainnet-protocol-surface.sh and check-allmainnet-chains-flags.sh (gate alias); wire into validate-config-files.sh - run-all-validation.sh: remove duplicate Gitea workflow steps (1c/1d) - smom-dbis-138: ALL_MAINNET_CONFIGURATION + VERIFICATION_COMPLETE aligned with proxmox surface JSON Made-with: Cursor
195 lines
7.1 KiB
Bash
195 lines
7.1 KiB
Bash
#!/usr/bin/env bash
|
|
# Run all validation checks that do not require LAN/SSH/credentials.
|
|
# Use for CI or pre-deploy: dependencies, config files, optional genesis.
|
|
# Usage: bash scripts/verify/run-all-validation.sh [--skip-genesis]
|
|
# --skip-genesis: do not run validate-genesis.sh (default: run if smom-dbis-138 present).
|
|
# Steps: dependencies, config files, cW* mesh matrix (if pair-discovery JSON exists), optional advisory non-EVM public health, genesis.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
cd "$PROJECT_ROOT"
|
|
|
|
# shellcheck source=./scripts/lib/run-summary.sh
|
|
source "$PROJECT_ROOT/scripts/lib/run-summary.sh"
|
|
|
|
RUN_STARTED_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
|
|
SECONDS=0
|
|
|
|
SKIP_GENESIS=false
|
|
JSON_OUT=""
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--skip-genesis)
|
|
SKIP_GENESIS=true
|
|
shift
|
|
;;
|
|
--json-out)
|
|
[[ $# -ge 2 ]] || { echo "Missing value for --json-out" >&2; exit 1; }
|
|
JSON_OUT="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
sed -n '1,6p' "$0"
|
|
echo " --json-out PATH Write a machine-readable run summary JSON."
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown argument: $1" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
RUN_STATUS="failed"
|
|
run_summary_init "run-all-validation.sh" "$RUN_STARTED_AT" "$JSON_OUT"
|
|
trap 'run_summary_write "$RUN_STATUS" "$SECONDS" "run"; run_summary_cleanup' EXIT
|
|
|
|
log_ok() { echo -e "\033[0;32m[✓]\033[0m $1"; }
|
|
log_err() { echo -e "\033[0;31m[✗]\033[0m $1"; exit 1; }
|
|
format_duration() { printf '%02dm:%02ds' "$(($1 / 60))" "$(($1 % 60))"; }
|
|
step_done() { echo " Completed in $(format_duration "$((SECONDS - $1))")"; }
|
|
|
|
echo "=== Run all validation (no LAN/SSH) ==="
|
|
echo "Started (UTC): $RUN_STARTED_AT"
|
|
echo ""
|
|
|
|
echo "1. Dependencies..."
|
|
STEP_STARTED=$SECONDS
|
|
bash "$SCRIPT_DIR/check-dependencies.sh" || log_err "check-dependencies failed"
|
|
log_ok "Dependencies OK"
|
|
run_summary_record_step "1" "Dependencies" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "1b. pnpm workspace vs lockfile..."
|
|
STEP_STARTED=$SECONDS
|
|
if [[ -f "$PROJECT_ROOT/pnpm-workspace.yaml" ]]; then
|
|
bash "$SCRIPT_DIR/check-pnpm-workspace-lockfile.sh" || log_err "pnpm lockfile / workspace drift"
|
|
log_ok "pnpm lockfile aligned with workspace"
|
|
else
|
|
echo " (no pnpm-workspace.yaml at root — skip)"
|
|
fi
|
|
run_summary_record_step "1b" "pnpm workspace vs lockfile" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "1c. Gitea workflow source sync..."
|
|
STEP_STARTED=$SECONDS
|
|
bash "$SCRIPT_DIR/check-gitea-workflows.sh" || log_err "Gitea workflow source drift"
|
|
log_ok "Gitea workflows match source-of-truth files"
|
|
run_summary_record_step "1c" "Gitea workflow source sync" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "1d. main/master workflow parity..."
|
|
STEP_STARTED=$SECONDS
|
|
bash "$SCRIPT_DIR/check-gitea-branch-workflow-parity.sh" || log_err "main/master workflow parity drift"
|
|
log_ok "main/master workflow parity OK"
|
|
run_summary_record_step "1d" "main/master workflow parity" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "2. Config files..."
|
|
STEP_STARTED=$SECONDS
|
|
bash "$SCRIPT_DIR/../validation/validate-config-files.sh" || log_err "validate-config-files failed"
|
|
log_ok "Config validation OK"
|
|
run_summary_record_step "2" "Config files" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "3. cW* mesh matrix (deployment-status + Uni V2 pair-discovery)..."
|
|
STEP_STARTED=$SECONDS
|
|
DISCOVERY_JSON="$PROJECT_ROOT/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json"
|
|
if [[ -f "$DISCOVERY_JSON" ]]; then
|
|
MATRIX_JSON="$PROJECT_ROOT/reports/status/cw-mesh-deployment-matrix-latest.json"
|
|
bash "$SCRIPT_DIR/build-cw-mesh-deployment-matrix.sh" --no-markdown --json-out "$MATRIX_JSON" || log_err "cw mesh matrix merge failed"
|
|
log_ok "cW mesh matrix OK (also wrote $MATRIX_JSON)"
|
|
else
|
|
echo " ($DISCOVERY_JSON missing — run: bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh)"
|
|
fi
|
|
run_summary_record_step "3" "cW mesh matrix" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "3b. deployment-status graph (cross-chain-pmm-lps)..."
|
|
STEP_STARTED=$SECONDS
|
|
PMM_VALIDATE="$PROJECT_ROOT/cross-chain-pmm-lps/scripts/validate-deployment-status.cjs"
|
|
if [[ -f "$PMM_VALIDATE" ]] && command -v node &>/dev/null; then
|
|
node "$PMM_VALIDATE" || log_err "validate-deployment-status.cjs failed"
|
|
log_ok "deployment-status.json rules OK"
|
|
else
|
|
echo " (skip: node or $PMM_VALIDATE missing)"
|
|
fi
|
|
run_summary_record_step "3b" "deployment-status graph" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "3b2. capital efficiency risk simulator (cross-chain-pmm-lps)..."
|
|
STEP_STARTED=$SECONDS
|
|
CAPITAL_VALIDATE="$PROJECT_ROOT/cross-chain-pmm-lps/scripts/validate-capital-efficiency.cjs"
|
|
if [[ -f "$CAPITAL_VALIDATE" ]] && command -v node &>/dev/null; then
|
|
node "$CAPITAL_VALIDATE" || log_err "validate-capital-efficiency.cjs failed"
|
|
log_ok "capital efficiency simulator rules OK"
|
|
else
|
|
echo " (skip: node or $CAPITAL_VALIDATE missing)"
|
|
fi
|
|
run_summary_record_step "3b2" "capital efficiency risk simulator" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "3c. External dependency blockers..."
|
|
STEP_STARTED=$SECONDS
|
|
EXT_CHECK="$SCRIPT_DIR/check-external-dependencies.sh"
|
|
if [[ -x "$EXT_CHECK" ]]; then
|
|
bash "$EXT_CHECK" --advisory || true
|
|
else
|
|
echo " (skip: $EXT_CHECK missing)"
|
|
fi
|
|
run_summary_record_step "3c" "External dependency blockers" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
echo "3d. Non-EVM public network health (advisory)..."
|
|
STEP_STARTED=$SECONDS
|
|
NON_EVM_CHECK="$SCRIPT_DIR/check-non-evm-network-health.sh"
|
|
NON_EVM_REPORT="$SCRIPT_DIR/build-non-evm-lane-status.py"
|
|
if [[ -x "$NON_EVM_CHECK" ]]; then
|
|
bash "$NON_EVM_CHECK" --json-out "$PROJECT_ROOT/reports/status/non-evm-network-health-latest.json" || true
|
|
if [[ -x "$NON_EVM_REPORT" ]]; then
|
|
python3 "$NON_EVM_REPORT" || log_err "build-non-evm-lane-status.py failed"
|
|
log_ok "non-EVM lane status refreshed"
|
|
else
|
|
echo " (skip report: $NON_EVM_REPORT missing)"
|
|
fi
|
|
else
|
|
echo " (skip: $NON_EVM_CHECK missing)"
|
|
fi
|
|
run_summary_record_step "3d" "Non-EVM public network health" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
echo ""
|
|
|
|
if [[ "$SKIP_GENESIS" == true ]]; then
|
|
echo "4. Genesis — skipped (--skip-genesis)"
|
|
run_summary_record_step "4" "Genesis (smom-dbis-138)" "skipped" "0"
|
|
else
|
|
echo "4. Genesis (smom-dbis-138)..."
|
|
STEP_STARTED=$SECONDS
|
|
GENESIS_SCRIPT="$PROJECT_ROOT/smom-dbis-138/scripts/validation/validate-genesis.sh"
|
|
if [[ -x "$GENESIS_SCRIPT" ]]; then
|
|
bash "$GENESIS_SCRIPT" || log_err "validate-genesis failed"
|
|
log_ok "Genesis OK"
|
|
else
|
|
echo " (smom-dbis-138/scripts/validation/validate-genesis.sh not found, skipping)"
|
|
fi
|
|
run_summary_record_step "4" "Genesis (smom-dbis-138)" "success" "$((SECONDS - STEP_STARTED))"
|
|
step_done "$STEP_STARTED"
|
|
fi
|
|
echo ""
|
|
|
|
log_ok "All validation passed."
|
|
echo "Total elapsed: $(format_duration "$SECONDS")"
|
|
RUN_STATUS="success"
|
|
exit 0
|