$temp_file is only created when curl is invoked with -o (the -o loop
above), but the post-success null/error check always ran `cat "$temp_file"`.
When a caller omits -o (e.g. check-health.sh's Cosmos reference RPC), the
variable is empty, so bash executed `cat ""` and printed
"cat: '': No such file or directory" — once per show-status run.
In that no-o case the body is already captured in $output, so read the
response from $output when $temp_file is unset, and from $temp_file when
it exists. Behaviour with -o is unchanged; the result==null / JSON-RPC
error skip-to-next-URL fallback is preserved in both paths.
Co-Authored-By: Claude <noreply@anthropic.com>
Match ronin-mainnet's EigenDA alt-DA recipe on both saigon profiles
(archive-trace + pruned-trace): OP_NODE_SYNCMODE execution-layer ->
consensus-layer and OP_NODE_L2_SKIP_SYNC_START_CHECK false -> true.
Hand-maintained edit (these CL-sync flags are not template-driven);
do NOT regenerate saigon via update.sh or it reverts. Mainnet untouched.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Custom op-node forks on these chains cannot run kona-node; drop the
orphaned --kona.yml compose files and registry entries.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop --kona compose profiles for base, fraxtal, zircuit, xlayer, and superseed
where kona-node v1.6.1 stalls or hash-mismatches on custom rollups. Add
worldchain-mainnet-op-reth-pruned-trace--kona for the planned geth→reth+kona swap.
Co-authored-by: Cursor <cursoragent@cursor.com>
Generate --kona compose profiles for base, mode, zircuit, fraxtal, zora,
metal, hashkeychain, superseed, swell, bnb, manta-pacific, blast, and xlayer
so production nodes can migrate off stock op-node before DRPC deprioritizes it.
Each kona variant shares the same EL data volume as its op-node sibling.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist OP_NODE_SYNCMODE=consensus-layer and OP_NODE_L2_SKIP_SYNC_START_CHECK=true
so op-node drives the EL via engine API (no EL P2P peers on katana mainnet).
Co-authored-by: Cursor <cursoragent@cursor.com>
Add generated op/reth/worldchain-mainnet-op-reth-pruned-trace.yml and
register it in compose_registry.json for Superchain EL migration off op-geth.
Co-authored-by: Cursor <cursoragent@cursor.com>
Read chain_id, genesis_url, seeds, and app.toml json-rpc/evm tunables from
environment (set by the generator from context.yml). Fix seed wiring to use
ct_merge_seeds instead of ct_set_persistent_peers.
Docker 28.5.x fails container create when a volume subpath targets a
path that exists as a file in the image. Copy VERSION from the conf
volume mount instead of subpath-mounting onto /opt/l2_deploy/bin/VERSION.
Co-authored-by: Cursor <cursoragent@cursor.com>
Without this build arg reth.Dockerfile builds upstream reth and cargo fails
on asm-keccak/jemalloc features missing from the alethia-reth fork.
Co-authored-by: Cursor <cursoragent@cursor.com>
stop.sh and start.sh previously relied on ambient COMPOSE_FILE, so
backup fencing left orchestration unable to stop or restart the target
node. Pass -f base.yml and the node yml explicitly and fail loudly.
Co-authored-by: Cursor <cursoragent@cursor.com>
select_newest_remote_backup_from_list was sorting an empty process
substitution instead of the piped list-backups.sh output.
Co-authored-by: Cursor <cursoragent@cursor.com>
backup-node.sh now stops services, fences COMPOSE_FILE during backup, and
restores via EXIT trap; consumers skip <1MB .tar.zst artifacts so purged-
volume junk cannot shadow real backups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip static-file offload when projected /slowdisk free space after restore
would fall below SLOWDISK_FLOOR_GB (default 150 GB); warn after extract if
the floor is breached. Restore never aborts — falls back to primary extract.
Co-authored-by: Cursor <cursoragent@cursor.com>
The aldaba_light binary writes sync and p2p logs only to rotating files
under /opt/l2_deploy/light/log/; wrap entry.sh so tail -n0 -F streams new
lines to stdout while preserving file logging and tini PID-1 semantics.
Co-authored-by: Cursor <cursoragent@cursor.com>
Set ADVERTISE_NODE_IP=${IP} and ADVERTISE_NODE_PORT to the salted host
port; map client_port:19000 so inbound cubenet peering is dialable.
Co-authored-by: Cursor <cursoragent@cursor.com>