Every deploy first replays every production ledger with the engine about to ship. The droplet gains a nightly rollup of counts and a nightly backup to Spaces, a pulse script the pulse skill reads, rate limits on opening rooms and taking seats, and eviction of idle rooms from memory with reload from their ledgers on the next visit. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
14 lines
659 B
Bash
Executable File
14 lines
659 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# The determinism gate: fetch every production ledger and replay it with the
|
|
# LOCAL engine, comparing each room with what the server shows. A ledger the
|
|
# new engine replays differently would rewrite a duel in progress when the
|
|
# server restarts, so this runs before every deploy.
|
|
# deploy/verify-ledgers.sh <droplet-ip-or-host> [https://site]
|
|
set -euo pipefail
|
|
HOST="${1:?usage: verify-ledgers.sh <droplet-ip-or-host> [https://site]}"
|
|
SITE="${2:-https://hands.kestrelsnest.social}"
|
|
DIR="$(mktemp -d)"
|
|
trap 'rm -rf "$DIR"' EXIT
|
|
rsync -az "root@$HOST:/var/lib/waving-hands/rooms/" "$DIR/"
|
|
npx tsx deploy/replay-ledgers.ts "$DIR" "$SITE"
|