Files
zeekayandGitHub acdefce081 fix(cluster): finalize lux.network -> lux.cloud CRD group migration (#25)
Closes the half-done CRD group migration on do-sfo3-lux-k8s that gates
Wave 1C (luxfi/operator shim conversion). All 18 live CRs across
LuxNetwork/LuxGateway/LuxChain/LuxMPC now have faithful lux.cloud
equivalents with provenance annotations.

Diagnosis:
- lux-system/lux-operator is dormant (0/0). Neither group is reconciled;
  legacy phase=Running/Ready are frozen literals (observedGeneration:null,
  empty conditions). Live luxd StatefulSets (5/5, 113d) and api-gateway run
  independent of any reconcile loop -> applying corrected CRs is workload-safe.
- Canonical kind is LuxNetwork on lux.cloud (operator network_lux.go owns the
  luxd StatefulSet), not networks.lux.cloud (empty unified kind).

Actions (all on do-sfo3-lux-k8s, recorded as manifests):
- LuxNetwork x3: prior new-group copies were lossy (dropped tenantImports,
  renamed pluginSource vmID->vmId which the Go struct does not read).
  Re-applied corrected manifests = full legacy spec + additive forward fields
  (exportSchedules, upgradeConfig.quasarTimestamp, image v1.30.3,
  adoptExisting:true) via server-side apply --force-conflicts (Adopt).
  Restored mainnet tenantImports (C-chain + zoo RLP) and all 12 vmID tags.
- Gateway x3, Chain x11, MPC x1: already faithful on lux.cloud; annotated only.
- Parity gate 18/18: every legacy field present on new-group CR with matching
  value (mpc image string<->struct ignored as documented forward migration).
  Live-Ready confirmation deferred to Wave 1C (operator dormant) and recorded
  in lux.network/migration-status -- no Ready fabricated.
- New-group CRs annotated lux.network/migrated-from; legacy CRs annotated
  lux.network/superseded-by + migration-status. Legacy specs untouched
  (generation unchanged 27/22/29).

The 11 Pending LuxChains are declarative shadows of plugins the luxd
StatefulSet already serves; created after the operator went dormant, never
reconciled. Faithfully present on chains.lux.cloud, kept (not deleted) until
Wave 1C reconciles or retires them.

NEXT: after Wave 1C activates the shim operator and Ready persists across a
reconcile+rollout, the legacy lux.network CRs (superseded-by) and CRDs can be
deleted. Not before.

Co-authored-by: zeekay <[email protected]>
2026-06-18 16:09:29 -07:00

31 lines
569 B
JSON

{
"conditions": [],
"generation": 2,
"group": "lux.network",
"kind": "LuxGateway",
"name": "api-gateway",
"ns": "lux-devnet",
"observedGeneration": null,
"phase": "Ready"
}
{
"conditions": [],
"generation": 3,
"group": "lux.network",
"kind": "LuxGateway",
"name": "api-gateway",
"ns": "lux-mainnet",
"observedGeneration": null,
"phase": "Ready"
}
{
"conditions": [],
"generation": 2,
"group": "lux.network",
"kind": "LuxGateway",
"name": "api-gateway",
"ns": "lux-testnet",
"observedGeneration": null,
"phase": "Ready"
}