- Update dbis_core, cross-chain-pmm-lps, explorer-monorepo, metamask-integration, pr-workspace/chains - Omit embedded publish git dirs and empty placeholders from index Made-with: Cursor
151 lines
5.7 KiB
Bash
Executable File
151 lines
5.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Summarize repo-completable vs operator/external completion state in one place.
|
|
# Usage: bash scripts/verify/check-completion-status.sh
|
|
# Exit codes:
|
|
# 0 = all repo-completable checks passed and public API looks healthy
|
|
# 1 = one or more checks reported issues
|
|
# Set SKIP_EXIT=1 to always exit 0 after printing the summary.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
cd "$PROJECT_ROOT"
|
|
SKIP_EXIT="${SKIP_EXIT:-0}"
|
|
VERBOSE="${VERBOSE:-0}"
|
|
FAILURES=0
|
|
INFO_WARNINGS=0
|
|
|
|
section() {
|
|
printf '\n=== %s ===\n' "$1"
|
|
}
|
|
|
|
print_captured_output() {
|
|
local file="$1"
|
|
if [[ "$VERBOSE" == "1" ]]; then
|
|
cat "$file"
|
|
fi
|
|
}
|
|
|
|
summarize_gas_rollout_output() {
|
|
local file="$1"
|
|
if command -v jq >/dev/null 2>&1; then
|
|
jq -r '
|
|
.summary
|
|
| " summary: families=\(.gasFamiliesTracked) pairs=\(.transportPairs) ready=\(.runtimeReadyPairs) blocked=\(.blockedPairs) invariantFailures=\(.supplyInvariantFailures)"
|
|
' "$file" 2>/dev/null || true
|
|
fi
|
|
}
|
|
|
|
summarize_submodule_output() {
|
|
local file="$1"
|
|
local count names
|
|
count="$(grep -c '^=== ' "$file" || true)"
|
|
names="$(grep '^=== ' "$file" | sed -E 's/^=== (.*) ===$/\1/' | paste -sd ',' - | sed 's/,/, /g' || true)"
|
|
if [[ -n "$count" && "$count" != "0" ]]; then
|
|
printf ' dirty submodules: %s\n' "$count"
|
|
if [[ -n "$names" ]]; then
|
|
printf ' names: %s\n' "$names"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
run_check() {
|
|
local label="$1"
|
|
shift
|
|
printf -- '- %s\n' "$label"
|
|
if "$@"; then
|
|
printf ' [OK] %s\n' "$label"
|
|
else
|
|
printf ' [WARN] %s\n' "$label"
|
|
FAILURES=$((FAILURES + 1))
|
|
fi
|
|
}
|
|
|
|
run_check_capture() {
|
|
local label="$1"
|
|
local summary_func="${2:-}"
|
|
shift 2
|
|
local out
|
|
out="$(mktemp)"
|
|
printf -- '- %s\n' "$label"
|
|
if "$@" >"$out" 2>&1; then
|
|
if [[ -n "$summary_func" ]] && declare -F "$summary_func" >/dev/null 2>&1; then
|
|
"$summary_func" "$out"
|
|
else
|
|
print_captured_output "$out"
|
|
fi
|
|
printf ' [OK] %s\n' "$label"
|
|
else
|
|
if [[ -n "$summary_func" ]] && declare -F "$summary_func" >/dev/null 2>&1; then
|
|
"$summary_func" "$out"
|
|
fi
|
|
cat "$out" >&2
|
|
printf ' [WARN] %s\n' "$label"
|
|
FAILURES=$((FAILURES + 1))
|
|
fi
|
|
rm -f "$out"
|
|
}
|
|
|
|
section "Repo-Completable Checks"
|
|
run_check_capture "Config validation" "" bash scripts/validation/validate-config-files.sh
|
|
run_check_capture "Gas rollout status parser" summarize_gas_rollout_output bash scripts/verify/check-gas-public-pool-status.sh --json
|
|
run_check_capture "All validation (--skip-genesis)" "" bash scripts/verify/run-all-validation.sh --skip-genesis
|
|
# Submodule WIP is common; enforce with STRICT_SUBMODULE_CLEAN=1 (e.g. pre-release).
|
|
if [[ "${STRICT_SUBMODULE_CLEAN:-0}" == "1" ]]; then
|
|
run_check_capture "Submodule working trees" summarize_submodule_output bash scripts/verify/submodules-clean.sh
|
|
else
|
|
printf -- '- %s\n' "Submodule working trees (informational; set STRICT_SUBMODULE_CLEAN=1 to fail)"
|
|
_sub_out="$(mktemp)"
|
|
if bash scripts/verify/submodules-clean.sh >"$_sub_out" 2>&1; then
|
|
printf ' [OK] Submodule working trees\n'
|
|
rm -f "$_sub_out"
|
|
else
|
|
summarize_submodule_output "$_sub_out"
|
|
if [[ "$VERBOSE" == "1" ]]; then
|
|
cat "$_sub_out" >&2
|
|
fi
|
|
rm -f "$_sub_out"
|
|
INFO_WARNINGS=$((INFO_WARNINGS + 1))
|
|
printf ' [WARN] Dirty submodule trees — commit inside each submodule, then parent pointer. See docs/00-meta/SUBMODULE_HYGIENE.md\n'
|
|
fi
|
|
fi
|
|
|
|
section "Public API Health"
|
|
run_check_capture "Public report API" "" env SKIP_EXIT=0 KEEP_GOING=1 bash scripts/verify/check-public-report-api.sh
|
|
run_check_capture "Gas registry API shape" "" env SKIP_EXIT=0 KEEP_GOING=1 SKIP_TOKEN_LIST=1 SKIP_COINGECKO=1 SKIP_CMC=1 SKIP_NETWORKS=1 SKIP_GAS_REGISTRY=0 bash scripts/verify/check-public-report-api.sh
|
|
if [[ "${INCLUDE_INFO_DEFI_PUBLIC_VERIFY:-0}" == "1" ]]; then
|
|
run_check_capture "info.defi-oracle.io public (SPA + token-aggregation)" "" bash scripts/verify/check-info-defi-oracle-public.sh
|
|
else
|
|
printf -- '- %s\n' "info.defi-oracle.io public (skipped; set INCLUDE_INFO_DEFI_PUBLIC_VERIFY=1 to run check-info-defi-oracle-public.sh)"
|
|
fi
|
|
|
|
section "Status Interpretation"
|
|
cat <<'EOF'
|
|
- Repo-local validation is complete when the config and validation checks pass. Submodule trees: informational here unless you set STRICT_SUBMODULE_CLEAN=1; use scripts/verify/submodules-clean.sh for a strict gate.
|
|
- Public report API problems are usually operator-side nginx/proxy deployment issues, not repo code issues.
|
|
- **info.defi-oracle.io** is checked only when `INCLUDE_INFO_DEFI_PUBLIC_VERIFY=1` (needs outbound HTTPS to production or set `INFO_SITE_BASE`).
|
|
- The gas rollout parser is repo-local and deterministic: it validates that the staged gas-family lanes, DODO pools, and reference venues are structurally consistent even before live env refs are filled.
|
|
- For the broader "is everything deployed?" answer, run scripts/verify/check-full-deployment-status.sh. That gate includes GRU rollout, gas-native lanes, cW public pools, and the current canonical Chain 138 on-chain inventory.
|
|
- Remaining non-local work is tracked in:
|
|
- docs/00-meta/STILL_NOT_DONE_EXECUTION_CHECKLIST.md
|
|
- docs/00-meta/OPERATOR_AND_EXTERNAL_COMPLETION_CHECKLIST.md
|
|
- docs/00-meta/COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md
|
|
EOF
|
|
|
|
section "Summary"
|
|
if (( FAILURES == 0 )); then
|
|
echo "- All repo-completable checks passed."
|
|
echo "- Public report API looks healthy."
|
|
if (( INFO_WARNINGS > 0 )); then
|
|
echo "- Informational warnings remain; review the notes above."
|
|
fi
|
|
else
|
|
echo "- Checks with warnings: $FAILURES"
|
|
echo "- Review the warnings above to distinguish repo-local cleanup from operator-side work."
|
|
fi
|
|
|
|
if (( FAILURES > 0 )) && [[ "$SKIP_EXIT" != "1" ]]; then
|
|
exit 1
|
|
fi
|