7.5 KiB
7.5 KiB
Verification Scripts
Scripts for ingress, NPMplus, DNS, and source-of-truth verification.
Dependencies
Required tools (install before running):
| Tool | Purpose | Install |
|---|---|---|
bash |
Shell (4.0+) | Default on most systems |
curl |
API calls, HTTP | apt install curl |
jq |
JSON parsing | apt install jq |
dig |
DNS resolution | apt install dnsutils |
openssl |
SSL certificate inspection | apt install openssl |
ssh |
Remote execution | apt install openssh-client |
ss |
Port checking | apt install iproute2 |
systemctl |
Service status | System (systemd) |
sqlite3 |
Database backup | apt install sqlite3 |
Optional (recommended for automation): sshpass, rsync, screen, tmux, htop, shellcheck, parallel. See docs/11-references/APT_PACKAGES_CHECKLIST.md § Automation / jump host.
One-line install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel
| Tool | Purpose |
|---|---|
wscat or websocat |
WebSocket testing (manual verification) |
Scripts
backup-npmplus.sh- Full NPMplus backup (database, API exports, certificates)check-contracts-on-chain-138.sh- Check that Chain 138 deployed contracts have bytecode on-chain (cast codefor 31 addresses; requirescastand RPC access). Use[RPC_URL]or envRPC_URL_138;--dry-runlists addresses only (no RPC calls);SKIP_EXIT=1to exit 0 when RPC unreachable.check-non-evm-network-health.sh- Read-only live check for the public Solana, Tron, and XRPL endpoints used in repo docs. Prints a concise status table and can also writereports/status/non-evm-network-health-latest.json.build-non-evm-lane-status.py- Buildsreports/status/non-evm-lane-status-latest.{json,md}from the Solana lineup manifest plus the current on-chain inventory/completion matrix, so network health and Chain 138 explorer/source closure stay clearly separated.build-unified-extended-from-csv.py- Rebuildsreports/inventory/DEPLOYED_CONTRACTS_UNIFIED_EXTENDED.mdfromreports/inventory/deployed-contracts-by-network.csvusing the pipe-row format consumed byinventory_onchain.py.snapshot-mainnet-cwusdc-usdc-preflight.sh- Read-only preflight snapshot for the MainnetcWUSDC/USDCrail. Captures public-pair drift, defended DODO reserves, treasury-manager quote availability, receiver surplus, and defended-lane quote sizing intoreports/status/.plan-mainnet-cwusdc-usdc-repeg.sh- Read-only repeg planner for the MainnetcWUSDC/USDCrail. Consumes the latest preflight snapshot, computes defended-pool reserve-gap sizing, public-pair shortfalls, operator-wallet coverage, and emits copy-paste operator commands intoreports/status/.build-cw-mesh-deployment-matrix.sh- Read-only merge ofcross-chain-pmm-lps/config/deployment-status.jsonandreports/extraction/promod-uniswap-v2-live-pair-discovery-latest.jsoninto a per-chain table (stdout markdown; optional--json-out reports/status/cw-mesh-deployment-matrix-latest.json). No RPC. Invoked fromrun-all-validation.shwhen the discovery JSON is present.reconcile-env-canonical.sh- Emit recommended .env lines for Chain 138 (canonical source of truth); use to reconcilesmom-dbis-138/.envwith CONTRACT_ADDRESSES_REFERENCE. Usage:./scripts/verify/reconcile-env-canonical.sh [--print]check-deployer-balance-blockscout-vs-rpc.sh- Compare deployer native balance from Blockscout API vs RPC (to verify index matches current chain); see EXPLORER_AND_BLOCKSCAN_REFERENCEcheck-dependencies.sh- Verify required tools (bash, curl, jq, openssl, ssh)check-cluster-besu-inventory.sh- Cluster-wide Besu inventory audit usingpvesh /cluster/resourcesvia a Proxmox cluster node so host placement onr630-03/r630-04is not missed. Prints VMID, type, node, status, name, IP, canonical-vs-extra classification, and any missing canonical VMIDs. Use--jsonfor machine-readable output.check-gitea-certificate-expiry.sh- Read-only TLS expiry check forgitea.d-bis.org(or another host passed as arg). Exits0when outside the warning window,1when withinWARN_DAYS(default14), and2on expiry or probe failure.
Scheduling
- Install a daily cron check with
bash scripts/maintenance/schedule-gitea-cert-check-cron.sh --install - Print the cron line with
bash scripts/maintenance/schedule-gitea-cert-check-cron.sh --show check-pnpm-workspace-lockfile.sh- Ensures every path inpnpm-workspace.yamlhas animporterinpnpm-lock.yaml(runpnpm installat root if it fails; avoids brokenpnpm outdated -r)export-cloudflare-dns-records.sh- Export Cloudflare DNS recordsexport-npmplus-config.sh- Export NPMplus proxy hosts and certificates via APIgenerate-source-of-truth.sh- Combine verification outputs into canonical JSONrun-full-verification.sh- Run full verification suitestitch_unified_from_read_output_chunks.py- Reassemblesreports/inventory/DEPLOYED_CONTRACTS_UNIFIED_EXTENDED.mdfrom IDE Read-tool text chunks by stripping line prefixes and omitted-line markers.verify-backend-vms.sh- Verify backend VMs (status, IPs, nginx configs)verify-end-to-end-routing.sh- E2E routing verificationverify-udm-pro-port-forwarding.sh- UDM Pro port forwarding checksverify-websocket.sh- WebSocket connectivity test (requires websocat or wscat)
Task runners (no LAN vs from LAN)
- From anywhere (no LAN/creds):
../run-completable-tasks-from-anywhere.sh— runs config validation, on-chain contract check,run-all-validation.sh --skip-genesis(includes cW* mesh matrix whenreports/extraction/promod-uniswap-v2-live-pair-discovery-latest.jsonexists), non-EVM status refresh, and reconcile-env-canonical. Use--json-out reports/status/run-completable-tasks-latest.jsonto capture a machine-readable run summary. On Gitea, the samerun-all-validationgate runs on push (indeploy-to-phoenixbefore deploy) and on PRs (.gitea/workflows/validate-on-pr.ymlonly, no deploy). - Validation summary JSON:
run-all-validation.sh --json-out reports/status/run-all-validation-latest.jsonwrites per-step status and timing, which is useful for comparing repeated dry-runs or CI-like local checks. - Other wrapper summary JSON:
../run-e2e-flow-tasks-full-parallel.sh --dry-run --json-out reports/status/run-e2e-flow-tasks-latest.json,../deployment/run-all-next-steps-chain138.sh --dry-run --json-out reports/status/run-all-next-steps-chain138-latest.json, and../run-all-operator-tasks-from-lan.sh --dry-run --json-out reports/status/run-all-operator-tasks-latest.jsonwrite comparable machine-readable summaries for the main orchestration wrappers. - From LAN (NPM_PASSWORD, optional PRIVATE_KEY):
../run-operator-tasks-from-lan.sh— runs W0-1 (NPMplus RPC fix), W0-3 (NPMplus backup), O-1 (Blockscout verification); use--dry-runto print commands only. See ALL_TASKS_DETAILED_STEPS.
Environment
Set variables in .env (from .env.master.example at repo root) or export before running. docs/04-configuration/VERIFICATION_GAPS_AND_TODOS.md. NPM NPM_EMAIL + NPM_PASSWORD (see that template’s NPM / NPMplus section) are required for backup-npmplus.sh API steps.