* deploy(lux-devnet): bump luxd → v1.27.23 (proto v1.0.2 unblocks build)
v1.27.22 had a build error from the kill-subnet rename in
luxfi/node#116: proto/p2p/p2p_zap.go aliased p2p.ChainUptime but
the upstream luxfi/proto package still exported SubnetUptime —
"undefined: p2p.ChainUptime" broke every `go build ./...` for
the whole node tree. Companion PR luxfi/proto#6 (commit
e96f95cd86) merged the upstream rename to ChainUptime; tagging
luxfi/proto v1.0.2 and bumping the node module pin (215f4e3d7b)
makes main HEAD build clean. v1.27.23 tag produced ghcr.io/
luxfi/node:v1.27.23 via the Docker workflow (run 26689130579).
Carries v1.27.22 content: canonical evmAddr/utxoAddr (genesis
v1.12.15), kill-subnet vocabulary, kill-fuji vocabulary.
Devnet rollout:
- Scale STS 5→0, delete all 5 luxd PVCs (devnet expendable
per PR #88 path-1 fix already re-runs from scratch)
- kubectl replace luxd-genesis CM from canonical source
~/work/lux/genesis/configs/devnet/genesis.json (evmAddr/
utxoAddr only, no legacy luxAddr/ethAddr translation)
- Patch STS image + scale 0→5
- All 5 luxd pods Ready on v1.27.23, P-chain producing blocks
(h≥3 observed), C-Chain healthy, BLS + bootstrapped OK,
sybil protection ON
- Deployer key idx=5 (P-dev1jx9p2hxfemcgdlylth05zj20klsn4t06s0t5kv,
0x9011E888251AB053B7bD1cdB598Db4f9DEd94714) unlocked
balance: 50000000000000 nLUX = 50K LUX (per source unlockSchedule
locktime=0)
L2 bootstrap: BLOCKED on consensus quirk where the P-chain
proposer doesn't auto-accept its own block. Two CreateNetworkTx
landed in blocks 2 + 3 from the cluster's view, but bootstrap-l2
hangs polling getTxStatus on the proposer's local view — same
pattern as the 2026-05-30T09:30Z `spc-pending-consensus-retry`
remark, now observed on every L2 attempt not just spc. 0/4 L2
EVMs live. Needs a separate investigation into the luxd
proposer-accept path (alpha=2 k=3 validatorCount=5 sample/quorum
math, BFT vote-back loop) before 4/4 L2 EVMs can land on a
v1.27.x devnet.
* chore(exchange): collapse 3 divergent overlays into shared base + env overlays
Before: three divergent exchange manifests scattered across the tree —
- k8s/lux-mainnet/exchange.yaml + exchange-proxy.yaml
- k8s/lux-explorer/exchange.yaml + exchange-proxy.yaml + exchange-whitelabel.yaml
- k8s/zoo-exchange/deployment.yaml
After: one canonical base + per-env overlays under k8s/exchange/.
base/ Deployment, Service, Middleware, namespaceless
overlays/lux-mainnet/ lux.exchange + markets/exchange.lux.network + exchange-proxy
overlays/lux-testnet/ exchange-testnet.lux.network + lux-test.exchange
overlays/lux-devnet/ exchange-devnet.lux.network + lux-dev.exchange
overlays/zoo-mainnet/ zoo.exchange (zooai/exchange image, KMSSecret)
overlays/pars-mainnet/ pars.market (lux image + brand config.json)
Common: container args, ports (3000), probes, resources, labels (app: exchange).
Per overlay: namespace, image tag, env vars, brand patch.sh, IngressRoute hosts.
Verified:
- kubectl --dry-run=client apply -k k8s/exchange/overlays/<env>/ clean for all 5
- kubectl diff against do-sfo3-lux-k8s shows zero diffs for production hostnames
(zoo.exchange, lux.exchange still routed via existing in-cluster resources)
Side updates:
- lux-k8s/kustomization.yaml: drop ../lux-explorer/exchange.yaml ref
- migrate-namespaces.sh: point at -k k8s/exchange/overlays/lux-mainnet
- STACK.md: replace old paths with k8s/exchange/overlays/<env>
15 lines
449 B
YAML
15 lines
449 B
YAML
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
kind: Kustomization
|
|
|
|
# Resources shared by every exchange overlay.
|
|
# Overlays supply: namespace, image tag, ConfigMap (env + patch.sh), IngressRoute.
|
|
resources:
|
|
- deployment.yaml
|
|
- service.yaml
|
|
- middleware.yaml
|
|
|
|
# Teach Kustomize how to rewrite Service / Middleware refs inside the
|
|
# hanzo.ai/v1alpha1 IngressRoute CRD so overlays don't hardcode prefixes.
|
|
configurations:
|
|
- kustomize-config.yaml
|