Files
zeekayandHanzo Dev 756628f3ec manifests/ and the droplet script go
manifests/{devnet,production,testnet}.yml claimed to be "source of truth for
what is deployed on lux-k8s", last edited 2026-04-20, listing tag: latest and
sha: latest per service. Nothing has read them since; the ApplicationSet reads
deploy/, and the only writer that touched them was update-image.yml, which was
sed-ing into a tree CD does not open.

manifests/safes.yaml was the one live file in there and is not a deployment
manifest at all — it is Lux's Safe topology. It moves to SAFES.yaml, beside
NETWORKS.yaml and chain.yaml, where this repo keeps its fact tables.

scripts/deploy-do.sh creates three DigitalOcean droplets, cloud-inits docker on
them and runs compose over ssh. That is the arrangement DOKS replaced.
sync-pars-universe.sh no longer copies it into the Pars bundle.

renovate.json stops matching manifests/. It still does not match deploy/, and
that is now on purpose rather than an oversight: pin.sh resolves a tag and its
digest from one registry read, and a second writer offering a bare tag would
leave the pair disagreeing — which deploys the digest.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-01 12:44:44 -07:00

87 lines
5.8 KiB
YAML

# Lux governance Safe topology — canonical deterministic manifest.
#
# AUTHORITATIVE ADDRESS SOURCE: ~/work/lux/standard/deployments/org-safes/lux-96369.json
# (this file mirrors it for humans; if they ever disagree, the JSON wins).
# Reproducible from this repo via the shared, PROVEN deploy tool:
# ~/work/lux/standard/script/deploy_org_safes.sh (deploy)
# ~/work/lux/standard/script/predict_org_safes.sh (predict/verify addresses)
#
# Pattern: Safe v1.5.0 (SafeL2 singleton + SafeProxyFactory + CompatibilityFallbackHandler
# + MultiSendCallOnly). Infra deployed via the Arachnid CREATE2 deployer
# (0x4e59b44847b379578588920ca78fbf26c0b4956c, salt=0) so the suite is REPRODUCIBLE on any
# re-import; Safe proxies via createProxyWithNonce (CREATE2 salt=keccak(saltString)).
# All Safes 1/1 owner 0x9011 at bootstrap; real signers onboarded post-launch via
# https://safe.lux.network. Non-destructive: creates NEW contracts, moves NO funds.
#
# 2026-07 RECONCILIATION: the previous nonce-CREATE suite (singleton 0x286046f0,
# dao 0x51284dC2, team 0x864297c0, foundationTimelock 0x00477Dfb) was LOST on the 2026-07
# RLP re-import (0x9011 nonce advanced past the CREATE slots) — those addresses are now
# code=0 (dead). This file has been updated to the live CREATE2 suite below.
version: "1"
org: lux
chainId: 96369
rpc: https://api.lux.network/v1/chain/C/rpc
status: deployed
owner: "0x9011E888251AB053B7bD1cdB598Db4f9DEd94714" # 1/1 bootstrap owner, threshold 1
threshold: 1
deployer: "0x9011E888251AB053B7bD1cdB598Db4f9DEd94714" # lux-deployer secret (do-sfo3-lux-k8s/lux-mainnet)
foundationMinDelay: 86400
infra: # CREATE2 via Arachnid deployer (salt=0) — reproducible on re-import
create2Deployer: "0x4e59b44847b379578588920ca78fbf26c0b4956c"
singleton: "0xED96250C6cDca3B5e5F8F066Fc3e200Ebe08BA87" # SafeL2 v1.5.0
factory: "0x136d2B4F8C92acFE2506D022EdbBdc0257d43D3c" # SafeProxyFactory
fallbackHandler: "0xf53b58eF51dfA4ddE0Bc17d023e0E41d2cb38709" # CompatibilityFallbackHandler
multiSendCallOnly: "0xa617634F901c343466af794cAB9EfCfCA6D0a78f"
safes:
# STANDING RISK, measured on 96369 at block 1098197: every Safe below is threshold 1 with the
# single owner 0x9011, no modules (getModulesPaginated -> [] + sentinel), no guard (slot 0), on
# the canonical singleton 0xED96250C and handler 0xf53b58eF. One key is therefore the sole
# authority over the whole DEX and the treasury. Harden to n-of-m (add owners FIRST, then
# changeThreshold — once threshold > 1 a lone pre-validated signature reverts GS020) before launch.
dao: # a.k.a. VAULT (record: vault == daoSafe, salt lux.dao.safe.v1)
role: "Lux DAO treasury / VAULT — unified owner of the entire DEX (Path-A stateUpgrade re-owned 23 contracts; holds operational treasury; parent of child Safes)"
saltString: lux.dao.safe.v1
address: "0xE54cAf7E0C04E0eC69BE9302B97613De89745DDC"
status: deployed # live 1/1 owner 0x9011 — do NOT redeploy
gasSource: true # the ONE Safe the operating key 0x9011 is refilled from.
# Verified on-chain 2026-07-28: threshold 1, owners [0x9011],
# 0 modules, Safe nonce 3, balance 994,729,722,350.34 LUX.
daoGovernance:
role: "Lux DAO governance Safe — target of the 1T governance split from 0x9011 (PENDING owner confirmation before transfer)"
saltString: lux.dao.governance.v1
address: "0x8E29b816c6C35b13cE1ff68D33E245C2bda8ac3D"
status: deployed # do NOT redeploy; Safe nonce 0 — never invoked. Keep it that
# way: not a gas source, no ops traffic, pending the 1T split.
# Verified on-chain 2026-07-28: threshold 1, owners [0x9011],
# 0 modules, nonce 0, balance exactly 1,000,000,000,000 LUX
# (the 1T split LANDED — this Safe holds it now).
team:
role: "Lux Z/Team private Safe (team P/X + 0x9011 residual)"
saltString: lux.z.private.safe.v1
address: "0x2b61dd5E654FE16F2A40e94d11f10eFb9c76575F"
status: deployed # do NOT redeploy
foundationTimelock: # OZ TimelockController — transparent EVM-native unlock
address: "" # NOT redeployed on 96369 after the 2026-07 re-import (was 0x00477Dfb, now dead)
status: not-deployed
minDelay: 86400 # 24h
proposer: "0xE54cAf7E0C04E0eC69BE9302B97613De89745DDC" # DAO/Vault Safe schedules
canceller: "0xE54cAf7E0C04E0eC69BE9302B97613De89745DDC" # DAO/Vault Safe cancels
executor: "0x0000000000000000000000000000000000000000" # open execution after delay
admin: "0x0000000000000000000000000000000000000000" # no admin backdoor; self-administered
# C-Chain (96369) is PRESERVED from genesis (owner directive); "reboot into Safes" =
# additive deploy + on-chain consolidation (Path-A StateUpgrade), never a wipe.
deploy:
foundation:
note: "foundationTimelock is NOT currently deployed on 96369 (lost in the 2026-07 re-import); run this to (re)deploy it against the live CREATE2 suite"
command: |
ORG=lux RPC=https://api.lux.network/v1/chain/C/rpc KEY_CTX=do-sfo3-lux-k8s KEY_NS=lux-mainnet \
MODE=foundation_only DAO_SAFE=0xE54cAf7E0C04E0eC69BE9302B97613De89745DDC \
TEAM_SAFE=0x2b61dd5E654FE16F2A40e94d11f10eFb9c76575F \
SINGLETON=0xED96250C6cDca3B5e5F8F066Fc3e200Ebe08BA87 FACTORY=0x136d2B4F8C92acFE2506D022EdbBdc0257d43D3c \
HANDLER=0xf53b58eF51dfA4ddE0Bc17d023e0E41d2cb38709 MULTISEND=0xa617634F901c343466af794cAB9EfCfCA6D0a78f \
EXECUTE=yes bash ~/work/lux/standard/script/deploy_org_safes.sh