Files
zeekay 38d5cd651b k8s(luxd): drop phantom brand chainAliases — luxd runs LUX primary only
hanzo/pars/spc/osage were dangling aliases: blockchain IDs never created via
CreateChainTx (absent from platform.getBlockchains, zero block data in
/data/chainData, no brand genesis in the P-chain genesis builder). Proof of
non-materialization: each brand mapped to a DIFFERENT id across the source
manifest, the live CM, and the CR annotations — a real CreateChainTx id is
immutable. Per brand_sovereign_node_one_way luxd hosts no brand L2 EVMs; each
brand runs its own sovereign node (zood/hanzod/parsd/...).

- lux-devnet: APPLIED + verified (luxd-0 rolled): aliases.json={}; all 11
  lux-native chains (P/X/C/A/B/D/G/K/Q/T/Z) bootstrapped; brands now report
  'no such alias' instead of phantom isBootstrapped=false; 0 missing-last-accepted.
- lux-testnet: PROPOSED (owner-gated) — all brands phantom, drop to {}.
- lux-mainnet: PROPOSED (owner-gated) — drop hanzo/pars/spc/osage; KEEP zoo
  alias restore-pending (zoo has real restorable chaindata; canonical home is
  sovereign node zood per zoo_sovereign_zood_not_luxd_chain).
2026-07-26 15:46:01 -07:00

47 lines
2.4 KiB
YAML

# Canonical chain aliases for lux-testnet luxd validators.
# Loaded by luxd via --chain-aliases-file (see luxd-startup.yaml).
#
# PROPOSED 2026-06-28 — owner-gated, NOT yet applied to lux-testnet.
# luxd runs the LUX primary network ONLY (P/X/C + lux-native A/B/D/G/K/Q/T/Z).
# Per brand_sovereign_node_one_way each brand runs its OWN sovereign node
# (zood/hanzod/parsd/…) — luxd does NOT host brand L2 EVMs. The former
# hanzo/zoo/pars/spc entries were dangling aliases: they pointed at blockchain
# IDs that were NEVER created via CreateChainTx (absent from
# platform.getBlockchains, zero block data in /data/chainData). Proof of
# non-materialization: the "hanzo" alias mapped to a DIFFERENT id in this
# manifest (2jDUTLY5…) than in the live CM (2cPZZqV7…) — a real CreateChainTx
# id is immutable. Removing them stops luxd advertising chains it doesn't run;
# isBootstrapped(brand) then reports "no such alias" not a phantom false.
#
# zoo restore path: zoo's real chaindata is restored on its OWN sovereign node
# zood (github.com/zooai/node) per zoo_sovereign_zood_not_luxd_chain — NOT luxd.
#
# MECHANISM (verified 2026-06-28): testnet luxd does NOT mount this CM — the
# STS mounts only data/startup-script/staking-keys. The LIVE alias source is the
# PERSISTENT /data/configs/chains/aliases.json on each pod's PVC, written once
# and retained (testnet startup does NOT wipe /data). So applying this CM alone
# is a NO-OP until the startup is re-wired to mount+install it.
#
# APPLY (owner-gated), pick ONE:
# (A) Re-wire (recommended, decomplect): add a chain-aliases CM volume+mount to
# the testnet STS and an install line (cp /aliases/aliases.json
# /data/configs/chains/aliases.json) like lux-devnet, making THIS CM the
# single source of truth; then roll pods one at a time.
# (B) Direct (minimal): on each pod overwrite the persistent file
# `printf '{}' > /data/configs/chains/aliases.json`, then roll ONE pod at a
# time (no wipe → file persists). Keep 4/5 up for quorum.
# NEVER wipe /data on a sybil-protected pod.
#
# Mainnet counterpart: lux-mainnet/chain-aliases.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: chain-aliases
namespace: lux-testnet
annotations:
lux.network/chain-aliases-policy: "lux-primary-only (brand L2s are sovereign nodes)"
lux.network/brands-dropped-at: "PROPOSED-2026-06-28"
data:
aliases.json: |
{}