* beluga: wire L3 to run zooai/node (replace luxd stopgap)
Make the Beluga L3 (chainId 420420) a real thinking-chain instead of an
inert luxd subnet stub. The zoo-chain validators tracked beluga under
ghcr.io/luxfi/node (luxd) — a bare subnet runtime with no Zoo EVM and no
AI precompiles, so beluga could never instantiate (blockchainID empty).
Switch the zoo-chain ZooNetwork image to ghcr.io/zooai/node (zood), which
self-installs the Zoo EVM (AI/FHE/PQ/ZK precompiles, incl. the 0x0303
deterministic in-consensus inference precompile and the 0x0304 aivmbridge
that settles Tier-2 Proof-of-Thought to the Lux A-Chain), Zoo DEX and Zoo
FHE VM plugins at startup.
- base/network.yaml + zoo-{devnet,testnet,mainnet}/network-patch.yaml:
image ghcr.io/luxfi/node -> ghcr.io/zooai/node.
- zoo-{devnet,testnet,mainnet}/statefulset-patch.yaml: command ./luxd ->
zood (zood wraps luxfi/node, identical config.BuildFlagSet, so all flags
apply verbatim). Beluga's blockchainID is appended to --track-chains
once the CreateChainTx mints it on the Zoo primary network.
- base/beluga.yaml: enrich the ZooChain CR with vmId (Zoo EVM
2n2njofjYvece8gZWCNnc1mqkcqfW6kbrhPRZPVzwxrSQrQ4gE) and
genesisConfigMap (beluga-genesis), per the operator ZooChainSpec.
- base/kustomization.yaml: configMapGenerator beluga-genesis from
k8s/base/beluga/{genesis.json,config.json} (stable name, no hash).
- k8s/base/beluga/: deployed copy of the canonical genesis+config
(evmChainId 420420, BLG gas, precompile-upgrade activations at ts 0).
Image tags are floating `latest` only on devnet; testnet/mainnet pin the
immutable CI semver. The live rollout (restarts the L2 validators) is a
gated prod step performed after the ghcr.io/zooai/node image is verified.
* beluga: pin zood image to immutable sha-371ea17-amd64-node
ghcr.io/zooai/node built CGO-free (hermetic vendored build, digest
sha256:12e8244d…) and published. Pin the operator ZooChain CR image off the
floating 'latest' to the immutable build SHA per prod policy.
* beluga: pin devnet+testnet zood image to sha-371ea17-amd64-node (consistency)
* beluga(devnet): image is operator-derived from the ZooNetwork CR, not the patch
Per 'one and only one way, operator-derived': the zood image comes solely from
k8s/base/network.yaml (the ZooNetwork CR); the operator renders it. The patch
asserts only the luxd CLI flags the operator wrongly passes as ZOO_* env.
* beluga: pin zood image to clean semver 0.2.0 (not the sha hash)
Proper semver for all image pins — ghcr.io/zooai/node:0.2.0 (digest 12e8244d,
same build), not sha-371ea17-amd64-node. The ZooNetwork CR is the single source;
the operator renders it onto the StatefulSet.
100 lines
2.6 KiB
YAML
100 lines
2.6 KiB
YAML
# Zoo Labs Foundation — canonical service manifest.
|
|
#
|
|
# Source of truth for image tags deployed per environment. Renovate opens
|
|
# PRs to bump versions; CI deploys on merge to main / test / dev.
|
|
#
|
|
# Image tags MUST be semver. :latest / :main / :dev are banned per
|
|
# universe/LLM.md and global Docker Build Standard.
|
|
#
|
|
# One row per service. Each service runs in three namespaces with the
|
|
# same image tag unless an env override is set under `envOverrides`.
|
|
version: "1"
|
|
cluster: do-sfo3-zoo-k8s
|
|
namespaces:
|
|
main: zoo-mainnet
|
|
test: zoo-testnet
|
|
dev: zoo-devnet
|
|
|
|
# Shared platform infra is NOT listed here. Zoo apps consume the canonical
|
|
# hanzo-k8s deployments at: kms.hanzo.ai, hanzo.id (IAM), api.hanzo.ai
|
|
# (Gateway/LLM). Do not redeploy these per zoo env.
|
|
|
|
services:
|
|
# ---- Web apps (Vite SPAs / Next.js, all behind zoo-ingress) ----
|
|
zoo-ngo:
|
|
repo: zooai/zoo.ngo
|
|
appType: frontend
|
|
image: ghcr.io/zooai/zoo-ngo:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
zoo-exchange:
|
|
repo: zooai/exchange
|
|
appType: frontend
|
|
image: ghcr.io/zooai/zoo-exchange:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
zoo-vote:
|
|
repo: zooai/vote
|
|
appType: frontend
|
|
image: ghcr.io/zooai/zoo-vote:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
zoo-fund:
|
|
repo: zooai/fund
|
|
appType: frontend
|
|
image: ghcr.io/zooai/zoo-fund:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
zoo-foundation:
|
|
repo: zooai/foundation
|
|
appType: frontend
|
|
image: ghcr.io/zooai/zoo-foundation:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
zoo-lab:
|
|
repo: zooai/lab
|
|
appType: frontend
|
|
image: ghcr.io/zooai/zoo-lab:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
zoo-network:
|
|
repo: zooai/network
|
|
appType: frontend
|
|
image: ghcr.io/zooai/zoo-network:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
zoo-voyage:
|
|
repo: zooai/voyage
|
|
appType: frontend
|
|
image: ghcr.io/zooai/zoo-voyage:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
# ---- Chain-side services (run alongside Lux L1 validators) ----
|
|
# zoo-node = the zooai/node (zood) image. NOTE: the validator image itself
|
|
# flows through the ZooNetwork CR (k8s/base/network.yaml spec.image), since
|
|
# the validators are the operator-rendered zoo-chain StatefulSet — not a
|
|
# Deployment. This row tracks the canonical image name for Renovate/CI.
|
|
# Image name is ghcr.io/zooai/node (matches hanzo.yml + the zooai/node repo,
|
|
# one <org>/<app> per the registry convention) — not the old zoo-node alias.
|
|
zoo-node:
|
|
repo: zooai/node
|
|
appType: backend
|
|
image: ghcr.io/zooai/node:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|
|
|
|
zoo-bridge:
|
|
repo: zooai/bridge
|
|
appType: backend
|
|
image: ghcr.io/zooai/zoo-bridge:0.1.0
|
|
sha: ""
|
|
updatedAt: ""
|