Files
zeekayandGitHub d8ba8af1f0 chore(exchange): collapse 3 divergent overlays into shared base + env overlays (#14)
* 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>
2026-05-30 20:40:45 -07:00

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