site deploy: SITE_TRANSITION=1 skips the chain-keyed checks between Devnet 3 (off) and the Igneum 2.0 devnet's feeds; the hero assertion by its raw prefix; /compatibility asserted
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
a3190c2655
commit
835dabcf2d
1 changed files with 9 additions and 2 deletions
|
|
@ -15,10 +15,10 @@
|
|||
# edge serves the previous deployment for some seconds after the CLI returns, so the checks retry for up to 90 s before the verdict.
|
||||
set -euo pipefail
|
||||
LIVE_NETWORK="${LIVE_NETWORK:-igneum-devnet-3}"
|
||||
INDEX_STRINGS=("At launch the strongest chip in our public model" "git.igneum.network/igneum-network/")
|
||||
INDEX_STRINGS=("The card you own" "git.igneum.network/igneum-network/") # the hero since the chip text serve (2966599e, 16:33 BST 8 Oct 2026)
|
||||
LEGAL_PAGE="${LEGAL_PAGE:-/litepaper}"; LEGAL_STRING="Not legal advice" # the legal line lives on the litepaper in master's tree (22:16 UK: no commit put it on the index)
|
||||
MINERS_MIN_ROWS="${MINERS_MIN_ROWS:-20}" # the current-class table alone (the datacentre rows sit in their own table since 8 Oct 2026)
|
||||
SERVED_PAGES=(swap "faucet|Devnet 3 faucet" "faucet|chain id 4464 since its class v5 floor" "build|Built to prove every block" "build|since its class v5 floor" "grants|Not legal advice." proving tx/0x0 "light|<title>" "receipt|Igneum transaction inclusion receipt" "oracle|<title>" "lc/test|<title>" "explorer|Source since 12:25 UTC" lc/app.js lc/core.js lc/verify-receipt.js "economics|Not legal advice." "income|The calculator" "income|/income-calc.js" "income|id=\"income-data\"" income-calc.js) # clean URLs every deploy must answer 200 (8 Oct 2026: the DEX lane's /swap, the builder lane's /faucet; /light /receipt /oracle /build /grants join as they land)
|
||||
SERVED_PAGES=(swap "faucet|Devnet 3 faucet" "faucet|chain id 4464 since its class v5 floor" "build|Built to prove every block" "build|since its class v5 floor" "grants|Not legal advice." proving tx/0x0 "light|<title>" "receipt|Igneum transaction inclusion receipt" "oracle|<title>" "lc/test|<title>" "explorer|<title>" "compatibility|Igneum compatibility, measured" lc/app.js lc/core.js lc/verify-receipt.js "economics|Not legal advice." "income|The calculator" "income|/income-calc.js" "income|id=\"income-data\"" income-calc.js) # clean URLs every deploy must answer 200 (8 Oct 2026: the DEX lane's /swap, the builder lane's /faucet; /light /receipt /oracle /build /grants join as they land)
|
||||
SITE="${SITE_URL:-https://igneum.network}"
|
||||
# the /miners row count: the rows of the current-class table (table#bench-current, the regrouped bench of 8 Oct 2026; the datacentre
|
||||
# and earlier tables sit under their own ids); known-failed: an empty table reads 0
|
||||
|
|
@ -29,9 +29,15 @@ print(len(re.findall(r"<tr class=\"row\"", m.group(0))) if m else 0)'; }
|
|||
post_checks() { # one pass: prints the first mismatch as "field: detail" and returns 1, or returns 0 silently
|
||||
local j n idx m rows
|
||||
local nc=(-H 'Cache-Control: no-cache' -H 'Pragma: no-cache')
|
||||
# SITE_TRANSITION=1 (the founder's Igneum 2.0 order, 8 Oct 2026 16:3x BST: Devnet 3 switched off, the 2.0 devnet starting): the
|
||||
# chain-keyed checks (api/live's network, the checkpoint, the explorer's freshness) are skipped until the new feeds exist; the pages,
|
||||
# the strings and the links are checked as always. Set LIVE_NETWORK to the new name and drop the switch when the feeds move.
|
||||
local n="(transition)"
|
||||
if [ "${SITE_TRANSITION:-0}" != 1 ]; then
|
||||
j=$(curl -fsS "${nc[@]}" --max-time 20 "$SITE/api/live?x=$RANDOM" 2>/dev/null) || { echo "api/live: not reachable"; return 1; }
|
||||
n=$(printf '%s' "$j" | python3 -c 'import sys,json; print(json.load(sys.stdin)["state"]["network"])' 2>/dev/null || echo "?")
|
||||
[ "$n" = "$LIVE_NETWORK" ] || { echo "api/live network: $n (want $LIVE_NETWORK)"; return 1; }
|
||||
fi
|
||||
idx=$(curl -fsS "${nc[@]}" --max-time 20 "$SITE/?x=$RANDOM" 2>/dev/null) || { echo "index: not reachable"; return 1; }
|
||||
for m in "${INDEX_STRINGS[@]}"; do printf '%s' "$idx" | /usr/bin/grep -cF -- "$m" >/dev/null || { echo "index string missing: \"$m\""; return 1; }; done
|
||||
# the page is read into a variable first: `curl | grep -q` under pipefail reads false on a MATCH (grep closes the pipe, curl exits 56;
|
||||
|
|
@ -53,6 +59,7 @@ post_checks() { # one pass: prints the first mismatch as "field: detail" and ret
|
|||
[ -z "$want" ] || printf '%s' "$body" | /usr/bin/grep -cF -- "$want" >/dev/null || { echo "page /$path: string missing: \"$want\""; return 1; }
|
||||
done
|
||||
# the certified-checkpoint API (the receipt, the light wallet and the explorer's per-block re-check read it): ok:true on Devnet 3
|
||||
if [ "${SITE_TRANSITION:-0}" = 1 ]; then echo "ok: transition (chain checks skipped), ${#INDEX_STRINGS[@]} index strings, the legal line on $LEGAL_PAGE, $rows miners rows, ${#SERVED_PAGES[@]} pages 200"; return 0; fi
|
||||
local ckp; ckp=$(curl -fsS "${nc[@]}" --max-time 25 "$SITE/api/checkpoint?source=dn3&x=$RANDOM" 2>/dev/null) || { echo "api/checkpoint: not reachable"; return 1; }
|
||||
printf '%s' "$ckp" | python3 -c 'import sys,json; d=json.load(sys.stdin); sys.exit(0 if d.get("ok") is True and d.get("network")=="igneum-devnet-3" else 1)' 2>/dev/null || { echo "api/checkpoint?source=dn3: $(printf '%s' "$ckp" | head -c 120)"; return 1; }
|
||||
# the explorer's stats API (8 Oct 2026): Devnet 3 named, the indexer not stale, the any-age 10-minute shard count a number
|
||||
|
|
|
|||
Loading…
Reference in a new issue