Add console.lux.cloud (Lux Cloud Console — the web3/infra console app) as a lux surface with its real route list (networks, nodes, gateway, api-keys, tokens, indexer, oracles, wallet, settlement, usage/billing, kms/secrets, …) and the valid lux.id password-grant login ([email protected]). Harness login() now waits for the sign-in form and matches Tamagui inputs (autocomplete="email" / placeholder="Email"), and treats /signin as a login gate — without this the harness could not fill or detect this console's form. Capture currently yields the /signin gate only: login is blocked IAM-side — the lux-cloud app in lux.id is provisioned for host cloud.lux.network, so console.lux.cloud/auth/callback is not an allowed redirect URI. Durable fix (separate, out of this change): add console.lux.cloud to the `cloud` app hosts in infra/k8s/iam/provision.yaml and reconcile IAM. Co-authored-by: Hanzo Dev <[email protected]>
5.3 KiB
Lux Products — live surfaces & E2E proof
Single source of truth for what is live and what is proven by E2E. Generated and verified against production on 2026-07-17.
- Brand support —
lux= default Lux Financial / Lux Network branding;acm= the ACM white-label (?brand=acm→ light theme +acmwordmark). The ACM white-label applies to the bank family only (*.lux.financial); the Lux Network apps are Lux-branded single-tenant. - E2E covered — the Playwright spec under
e2e/that exercises the surface. "deep" = asserts real post-login / functional state; "surface" = asserts reachability + rendered UI / RPC, not an authenticated flow. - Status — verified live (✅), live with a known defect (⚠️), or not yet deployed (⛔).
Run the bank proof suite: npx playwright test e2e/40-lux-financial.spec.ts
Run everything: npm test (from repo root).
Bank family — *.lux.financial (white-label: lux + acm)
Backend for the whole family is bankd — a Hanzo Base app (/v1/*, SQLite),
served at api.lux.financial, testnet custody.
| Product | Live URL | Brand | Backend | E2E covered | Status |
|---|---|---|---|---|---|
| Customer bank | https://app.lux.financial | lux, acm | bankd @ api.lux.financial | deep — 40-lux-financial.spec.ts (login → $21,818.45 balance, 5-currency balances list, cards + activity, acm light theme) · 18/19-broker (unauth UI + responsive audit) |
✅ live |
| Admin console | https://admin.lux.financial | lux, acm | bankd (testnet custody) | deep — 40-lux-financial.spec.ts (login → Overview metrics, MPC/Safes/KMS/Nodes nav, MPC/KMS/Nodes pages render, acm light theme) · 18/19-broker |
⚠️ live — Safes route broken |
| Docs | https://docs.lux.financial | lux, acm | Docusaurus (static) | deep — 40-lux-financial.spec.ts (/docs/compliance-full → AML/KYC/regulatory content) |
✅ live |
| Backend API | https://api.lux.financial | — | bankd (Hanzo Base) | deep — 40-lux-financial.spec.ts (/v1/health = 200 {code:200}) · 18-broker (/v1/bank/* 401 auth-guard) |
✅ live |
| Issuer | https://issuer.lux.financial | — | — | probe-only (skips — no DNS) | ⛔ not live |
| Safe (standalone) | https://safe.lux.financial | — | — | — (no DNS) | ⛔ not live |
Known defect — Admin › Safes. The /safes route throws
RangeError: Invalid currency code : USDC (USDC handed to Intl.NumberFormat,
which only accepts ISO-4217 codes) and renders a blank page. The nav item
exists (asserted, passing) but the page does not render. Encoded in
40-lux-financial.spec.ts as an expected failure (test.fail) so the run stays
honest and green; fixing the currency-formatting bug will make it pass
unexpectedly and flag removal of the marker. The on-chain multisig "Safes"
surface (safe.lux.financial) is not separately deployed.
Lux Network apps (brand: lux only)
| Product | Live URL | Brand | Backend | E2E covered | Status |
|---|---|---|---|---|---|
| Cloud console | https://console.lux.cloud · https://lux.cloud | lux | Lux Cloud (lux-k8s) | surface — 05-cloud, 10-lux-cloud.spec.ts |
✅ live |
| Explorer | https://explore.lux.network | lux | Blockscout | surface — 01-explorer.spec.ts (blocks/txs/API) |
✅ live |
| Wallet | https://wallet.lux.network | lux | @luxfi/wallet-sdk | surface — 06-wallet, 11-wallet-ops.spec.ts |
✅ live |
| Exchange | https://lux.exchange | lux | CEX/DEX front end | surface — 02-exchange, 20-exchange-deep.spec.ts |
✅ live (Cloudflare; local LibreSSL can't TLS-handshake, Chromium reaches it) |
| DEX (CLOB) | https://lux.exchange (D-Chain dexvm) |
lux | native CLOB — dexd (spark) |
surface — 14-dex-contracts.spec.ts |
✅ live |
| Bridge | https://bridge.lux.network | lux | MPC bridge | surface — 03-bridge, 13-bridge-mpc.spec.ts |
✅ live |
| MPC | https://mpc.lux.network | lux | threshold custody | surface — 13-bridge-mpc.spec.ts |
✅ live |
| Staking | https://lux.build | lux | P-chain staking | surface — 04-staking, 12-staking-rpc.spec.ts |
✅ live |
E2E summary — bank proof suite (40-lux-financial.spec.ts)
Verified against production 2026-07-17 — 12 passed, 1 expected-failure (Safes), 1 skipped (issuer, not live):
| # | Assertion | Result |
|---|---|---|
| 1 | Customer login → dashboard total $21,818.45 + "Welcome back" | ✅ pass |
| 2 | Customer dashboard lists 5 balances (USD/EUR/GBP/LUX/DAI) with figures | ✅ pass |
| 3 | Customer dashboard renders cards + recent activity (real app) | ✅ pass |
| 4 | Customer ?brand=acm → light bg (L=0.97) + acm wordmark |
✅ pass |
| 5 | Customer default → dark bg (L=0.00) + Lux Financial wordmark | ✅ pass |
| 6 | Admin login → Overview portfolio metrics (liquidity, KYC, activity) | ✅ pass |
| 7 | Admin nav exposes MPC, Safes, KMS, Nodes | ✅ pass |
| 8 | Admin MPC / KMS / Nodes pages render their sections | ✅ pass |
| 9 | Admin Safes page renders | ⚠️ expected-fail (USDC crash) |
| 10 | Admin ?brand=acm → light bg (L=1.00) + acm wordmark |
✅ pass |
| 11 | Docs /docs/compliance-full → regulatory content |
✅ pass |
| 12 | Backend api.lux.financial/v1/health = 200 |
✅ pass |
| 13 | issuer.lux.financial | ⏭️ skipped (not live) |