The flagship node reference listed Serialization as 'Protocol Buffers' only and
luxfi/codec as 'Binary codec and serialization' — both stale post codec-kill.
Every tx/block/VM-transport message is now native ZAP (struct = wire, no
reflection); luxfi/codec remains only as the leaf byte-packer + Warp codec.
Co-authored-by: Hanzo Dev <[email protected]>
Repo moved lux-apps/lux-docs -> lux-docs/network. Build on the org-level
lux-docs-build ARC pool (github.com/lux-docs); image now ghcr.io/lux-docs/network
to match the repo path. Same-org GITHUB_TOKEN push, no cross-org PAT.
No REST API exists to flip GHCR container-package visibility, and the
package defaults to private on first publish. The cluster pulls it via the
existing lux-ns ghcr-secret imagePullSecret (verified). Comment-only fix;
[skip ci] since the functional workflow change already built in fd127a9.
Image path now matches the repo (lux-apps/lux-docs), so the build pushes
same-org with the workflow's GITHUB_TOKEN (packages: write) instead of the
cross-org GHCR_LUXFI_TOKEN PAT. Package will be made public to mirror the
old luxfi/lux-docs pull model. runs-on: lux-apps-build unchanged.
lux-apps GITHUB_TOKEN cannot write the luxfi-owned package (cross-org
'installation does not exist'). Authenticate the GHCR login with a luxfi
write:packages token (user hanzo-dev), KMS-sourced from
kms-build/ghcr-luxfi-push and set as the GHCR_LUXFI_TOKEN repo secret.
The docs repo now lives under the lux-apps org; the luxfi-bound
lux-build runner scale set no longer serves it (ARC routes by org, not
by labels). Point runs-on at the new lux-apps-build pool
(gha-runner-scale-set on arc-gha-rs-controller, lux-k8s/arc-system,
githubConfigUrl github.com/lux-apps) and refresh the stale comment.
The confidential-compute page was written mid-synthesis and documented cc as
3 Kinds (2 live + TDX stub). Verified against cc main v0.2.0 (0e55918): all six
Kinds are real verifiers — AMD SEV-SNP, Intel TDX (real DCAP v4), Intel SGX
(pure-Go DCAP), NVIDIA nvtrust (SPDM+RIM), ARM CCA (RATS CBOR/COSE), AWS Nitro
(COSE_Sign1). Dispatch is one registry (init() self-registration, no switch).
Updated vendor matrix, report fields, topology tree, custody card. next build green (460 pages).
Bring the user-facing docs in line with the released, semver-tagged
post-quantum consensus + confidential-compute architecture, cross-checked
against the actual code/tags.
Consensus finality (consensus v1.26.0):
- Quasar finality is the typed compact-certificate envelope (ConsensusCert),
not the old "triple consensus" model. Four evidence kinds (Beam BLS / Pulsar
M-LWE / Corona R-LWE / P3Q rollup), orthogonal LegKind x EvidenceMode axes,
KeyEra (one group key per era, value-not-place), and the four operator
postures (BLS_FAST / HYBRID_PQ_CHECKPOINT / STRICT_QUASAR / RECOVERY_MODE).
- Fix the flat error that Pulsar is Ring-LWE: Pulsar is Module-LWE (FIPS-204
ML-DSA, luxfi/pulsar); Corona is Ring-LWE (Ringtail, luxfi/corona).
- O(1) compaction (one group sig regardless of committee size).
- Correct PQ precompile slots (0x012202/03/04/05) and stale go.mod pins
(crypto v1.19.26, pulsar v1.1.5, corona v0.7.9).
New page confidential-compute.mdx (+ nav): the luxfi/cc attestation verifier
(one Verifier, orthogonal Kinds). Honest vendor matrix: AMD SEV-SNP and NVIDIA
nvtrust are production; Intel TDX is a tracked stub. Custody (TEE) vs
confidential-AI (NVIDIA GPU) use cases.
Decomplect (architecture.mdx, wallet/security.mdx): dealerless PQ-threshold core
+ optional luxfi/mpc (CGGMP21/FROST) and luxfi/tee custody extensions; the core
depends on neither.
HSM (hsm/index.mdx, reference/lux-hsm.mdx): document all 16 registered backends
(cloud KMS, PKCS#11/KMIP/YubiHSM/Nitrokey, hardware-wallet secure elements,
air-gap, ML-DSA PQ, TR-31), the FIPS subset, and the cgo-gated backends.
Bridge multi-vendor MPC (mpc/bridge.mdx): layered external-custodian cosigning
(Utila/Fireblocks) as an optional institutional feature over native MPC; secrets
via KMS; permissionless bridge runs on native MPC alone.
New go-live.mdx: the canonical developer/agent go-live spec (chains/VMs,
slot map, two-tier finality, VM/engine boundary, GPU byte-identity gate,
value conservation). Replace the retired 0x0600 PQ block (and the bogus
0x0604 QUASAR precompile) with the real 0x012200 block (ML-KEM..HQC +
STARK-FRI) in pq-crypto/index/api/lux-evm. Align the C-nibble chain-slot
table to the genesis registry (D-Chain at C=3, no phantom M-Chain,
Zoo/Hanzo/SPC = sovereign-L1 EVM). Add VM/engine-boundary + go-live-status
notes to dexvm/zkvm/aivm/bridgevm. P3Q = rollup-commit verifier (0x012205);
STARK-FRI = STARK (0x012220) — never conflated.
Two unescaped <tenant> placeholders in regulated/ats.mdx and regulated/bd.mdx
were parsed as JSX and broke the MDX/static-export build. With the build
failing, the shipped image carried only the home hub, so every deep topic
(/architecture, /consensus, /sdk/quickstart, ...) fell through the SPA index
fallback and rendered the hub instead of its own page. Escaping the
placeholders restores the export: generateStaticParams now emits all 458
topic pages (architecture.html, consensus.html, sdk/quickstart.html, ...),
each distinct, which the hanzoai/spa server resolves directly (verified with
the real spa binary locally — /architecture -> 'Architecture | Lux Docs', no
longer the hub).
CI: rebuild on the luxfi self-hosted ARC pool (runs-on: lux-build) and push
ghcr.io/luxfi/lux-docs:latest — the exact image the live deployment pulls.
GitHub-hosted runners are billing-blocked for luxfi. Removed the old
ubuntu-latest deploy.yml (billing-blocked) and the cross-org workflow-sanity
call that luxfi/docs cannot resolve (startup_failure).
Replaces non-canonical scale-set / org-prefixed labels with the
existing labels every arcd host registers with. Matches evo for
amd64 and spark for arm64. No new labels added.
Validators validate networks, chains live on networks. Under LP-018
sovereign-L1, AddValidatorTx is the universal add-validator tx.
AddChainValidatorTx is legacy + retained for one release cycle.
- chains/pchain.mdx: new 'Networks, Chains, and Validators' concept
section laying out network has validators / chains live on networks
/ L1 vs L2 / AddValidatorTx universal; Purpose paragraph reworded;
fee-schedule rows retitled 'Add network validator' / 'Add network
delegator'.
- cloud/subnets.mdx: 'Adding Validators' rewritten to call out
validators validate networks; CLI example switched to
'lux network addValidator'.
- warp/{index,messages,integration}.mdx: 'source chain validator set'
→ 'source network validator set'; RegisterL1Validator description
clarifies 'adds a validator to an L1 network'.
- reference/lux-netrunner.mdx: RemoveChainValidator marked legacy.
Per CTO directive: kill any alias, any shim. R-LWE threshold sig is
named Corona across all live code. Forward-only.
Sweep covers Go + TS + Sol + k8s YAML + JSON + LP markdown + skills
+ docs. Skipped: papers/audits/legal/licenses/blog/HISTORY (immutable
historical record).
Was using canonical workflow defaults (hanzoai-scoped labels) which
do not dispatch for luxfi org. Switched to round-robin pool labels:
runner-amd64: luxfi-amd64 (evo)
runner-arm64: luxfi-arm64 (spark + dbc, round-robin)
runner-deploy: lux-deploy-linux-amd64 (DO ARC pool)
Two corrections:
1. lux-fhevm.mdx claimed the coprocessor was Rust-based with the Zama tfhe
crate. The actual lux/fhe-coprocessor is pure Go (luxfi/fhe + luxfi/lattice)
with C++ / GPU (Metal+CUDA) / FPGA acceleration paths. No Rust toolchain;
no Zama crate. Quick-reference table updated to match reality.
2. lux-fhe-coprocessor.mdx had the negative "NEVER use Zama tfhe-rs" framing
in the hard requirements + a Related Skills entry pointing at a
"Rust-based FHEVM coprocessor (alternative architecture using Zama tfhe
crate)" that doesn't exist. Reframed positively: Lux-native FHE; the
FHEVM specification points at the same Go primary + C++/GPU/FPGA accel
stack.
lux-upgrade.mdx rewritten as "header-schema compatibility" tool; the
Apricot/Banff/Cortina/Durango/Etna/Fortuna/Granite fork-history table is
deleted because Lux activates every feature at genesis (LP-3641). The
Config-struct field names are retained — they are the on-wire header
schema and cannot be renamed without breaking historical replay.
lux-precompile.mdx, lux-evm.mdx, lux-lps.mdx, cchain.mdx: drop "Durango+",
"Etna activated", "ACP-181" framing. EVM hardfork gates (Shanghai/Cancun)
stay — they gate opcode behavior.
Side fix: 5 reference MDX files (corona/magnetar/proto/pulsar/quasar) had
<https://github.com/luxfi/X> raw-autolink syntax that Turbopack's MDX
parser was rejecting (Unexpected `/` before local name), failing the
docs build entirely. Switched to [text](url) form. Docs site now builds
(453 paths prerendered).
Mirror of upstream luxfi/.github profile changes. Some prior phrasing
conflated "no runtime token check" with "no license", which is wrong:
every Lux artifact is licensed — tiers 1+2 just don't carry a runtime
token gate, while tier 3 does. Adds the canonical 3-row table to
/licensing and cross-references it from /open-core.
No license tier classifications change. No LICENSE files change. No
runtime-check behavior changes. Documentation correction only.
Mirror of upstream luxfi/.github profile changes. Some prior phrasing
conflated "no runtime token check" with "no license", which is wrong:
every Lux artifact is licensed — tiers 1+2 just don't carry a runtime
token gate, while tier 3 does. Adds the canonical 3-row table to
/licensing and cross-references it from /open-core.
No license tier classifications change. No LICENSE files change. No
runtime-check behavior changes. Documentation correction only.
Two stale references cleaned up after recent upstream renames:
- cli reference: luxfi/constants v1.5.4 + luxfi/cli v1.99.23 dropped
the LUX_ prefix from EnvNodePath/EnvNetrunnerPath/EnvEVMPath/
EnvPluginsDir. Update the env-var documentation accordingly.
- iam reference: identity provider package moved from luxfi/iam to
hanzoai/iam as part of the IAM consolidation under hanzoai (per
CLAUDE.md). Update the github.com path in the IAM overview page.
Mirror github.com/luxfi/.github/profile/{README,OPEN-CORE-EE}.md to the
docs.lux.network source tree so the three-tier IP strategy is
discoverable from docs without needing to know the GitHub URL.
- apps/docs/content/docs/licensing.mdx — mirrors profile README
- apps/docs/content/docs/open-core.mdx — mirrors OPEN-CORE-EE
- meta.json: new "Strategy" sidebar section
- (home)/page.tsx: new "Strategy" tile section for homepage discovery
The .github profile READMEs remain canonical; this is a navigational
mirror. LICENSE file in each repo is the binding artifact.
Lux uses 'Lux EVM' (the canonical luxfi/evm plugin) for both C-Chain
and EVM-based L2 chains. The upstream 'subnet-evm' / 'Subnet-EVM' brand
was a separate codebase we don't use anymore.
Removed legacy 'srEXi…' (upstream Subnet-EVM ID) — Lux uses one canonical
EVM VM ID for both C-Chain and EVM-based subnets per luxfi/constants.EVMID.
Plugin filename is mgj786NP7uDwBCcq6YwThhaN8FLyybkCa4zBWTQbNgmK6k9A6 only;
no dual install, no aliases.
Replace Coreth/Corona prose with canonical Lux EVM / Pulsar
in lux-cli, lux-plugins, lux-lps reference docs. Subnet-EVM
clarified as legacy alias for sovereign-L1 Lux EVM mode.
Update lux-fhe.mdx and chains/thresholdvm.mdx to clarify that the
ThresholdVM substrate powers M-Chain (MPC ceremonies for external-wallet
bridge custody) and F-Chain (FHE compute) per LP-134. Legacy T-Chain
name retained only for teleportvm (LP-6332).
UTXO is the semantic name for X-Chain (UTXO model, like Bitcoin).
"Exchange Chain" was confusingly close to "DEX Chain" (D-Chain).
- content/docs/chains/xchain.mdx: top description paragraph
- content/docs/architecture.mdx: X-Chain section header
- content/docs/indexer/quickstart.mdx: chain label