Commit Graph
126 Commits
Author SHA1 Message Date
zeekay e6c4e83ead test: document CRDT BlindRotate timing in encrypted_test setup
PN10QP27 (~128-bit security) drives a full BlindRotate inside
lattice/[email protected] — ~22s on Apple silicon. Comment added so future
maintainers don't mistake the test wall-clock for a hang.
2026-05-20 16:19:28 -07:00
zeekay 28cfe69fd3 remove detailed patent-claims docs (relocated to lux-private/patents)
Detailed invention disclosures are sensitive pre-filing material. Moved to
lux-private/patents to preserve international filing rights (EU/JP/KR/CN
absolute-novelty rule). Cross-ref: github.com/lux-private/patents/bundles/
2026-05-19 11:30:28 -07:00
zeekay 2b59967989 patent-claims: novelty triage drafts (attorney-prep, not filed) 2026-05-19 11:30:28 -07:00
zeekay e799b6e33a fhe/sign-off: cryptographer review TFHE Tier A
CRYPTOGRAPHER-SIGN-OFF.md captures the Tier A artifact review:

  - APPROVED WITH GATES for F-Chain TFHE (LP-066/LP-134) and the
    threshold-FHE compliance package (LP-019/LP-076/LP-167)
  - Verified green: build, dudect bridges build, EC theories 0/0
    admits, Lean 0 sorry, bridge map cites each axiom, Jasmin
    algorithm shape correct, CT obligations correctly stated
  - 4 minor findings, 2 informational
  - 4 open gates:
      GATE-1: dudect submission-grade run (10^9 samples)
      GATE-2: jasminc -checkCT pass on production Jasmin
      GATE-3: deployment runbook for F-Chain TFHE
      GATE-4: Lean tactic-script transcription of EC proof

None of the gates require algorithm or code change; they are
about empirical confirmation and operational disclosure.
2026-05-19 11:30:28 -07:00
zeekay b8a48066d4 fhe/ct/dudect: harness for Encrypt + Decrypt + Bootstrap CT
Empirical constant-time analysis harness mirroring the Pulsar
pack at ~/work/lux/pulsar/ct/dudect/:

  encrypt_ct.go   + dudect_encrypt.c    - cgo bridge + C main loop
  decrypt_ct.go   + dudect_decrypt.c    - the CT-critical routine
  bootstrap_ct.go + dudect_bootstrap.c  - PBS composite

CT population (operational framing):
  - Both classes are VALID inputs to the routine under test
  - Class A is a fixed input; class B is uniformly drawn from a
    pre-built pool of K independent valid inputs
  - Any timing difference is a real secret-content signal

All three cgo shared libraries build clean:
  GOWORK=off go build -buildmode=c-shared -tags tfhe_encrypt_ct
  GOWORK=off go build -buildmode=c-shared -tags tfhe_decrypt_ct
  GOWORK=off go build -buildmode=c-shared -tags tfhe_bootstrap_ct

dudect.h fetched on demand via fetch.sh (not committed).
dudect_compat.h supplies _mm_mfence/__rdtsc on AArch64 hosts.

Submission-grade run pending (GATE-1 in CRYPTOGRAPHER-SIGN-OFF.md).
2026-05-19 11:30:28 -07:00
zeekay c3205e0460 fhe/jasmin: bootstrap + external_product + blind_rotate CT sources
Jasmin high-assurance track for the TFHE hot path:

  lib/tfhe_params.jinc       - parameter-set constants (PN10QP27 canonical)
  lib/modq.jinc              - constant-time mod_add/sub/mul/neg over Z_q
  external_product.jazz      - RGSW * RLWE external product (signed gadget)
  blind_rotate.jazz          - CGGI Asiacrypt 2016 blind rotation
  bootstrap.jazz             - PBS composite (BR o sample_extract o KS)

Constant-time by construction:
  - all secret-touching loops are straight-line
  - gadget decomposition uses bottom-up carry-propagation
  - mod_mul via Barrett reduction with no secret-dependent branches
  - monomial rotation via CMOV-shape sign-flip selection

Pending: jasminc -checkCT pass (gate in CRYPTOGRAPHER-SIGN-OFF.md
GATE-2; requires lattice/v7 NTT substitution in external_product).
2026-05-19 11:30:28 -07:00
zeekay 8221ce0f55 fhe/lean: TFHE Lean<->EC bridge map
proofs/lean-easycrypt-bridge.md pins the 1:1 correspondence between
the EasyCrypt theory axioms in fhe/proofs/easycrypt/ and the Lean
theorems in ~/work/lux/proofs/lean/Crypto/FHE/TFHE.lean +
Crypto.Threshold.Lagrange.

Maps 5 axioms:
  pbs_correctness            <-> programmable_bootstrap_correct
  shamir_inverse_eval        <-> threshold_reconstructs_secret
  reshare_preserves_secret   <-> reshare_preserves_constant_term
  pbs_noise_bound            <-> pbs_noise_bound
  decrypt_constant_time      <-> (operational; no Lean counterpart)
2026-05-19 11:30:28 -07:00
zeekay ffff571d35 fhe/proofs: TFHE EC theories (0/0 admits)
EasyCrypt Tier A theories at fhe/proofs/easycrypt/:

  TFHE_Correctness.ec        - PBS correctness theorem
  TFHE_Threshold_Keygen.ec   - threshold-DKG correctness + privacy + reshare
  TFHE_Noise_Growth.ec       - per-op noise budgets + parameter-set invariant
  lemmas/TFHE_CT.ec          - CT obligations on hot path

Closure strategy: each top-level theorem reduced to small set of named
functional hypotheses imported from the luxfi/lattice/v7 reference
layer. Admit budget 0/0 across the pack.

Bridge map at proofs/lean-easycrypt-bridge.md pins axiom-to-theorem
correspondence 1:1 to Lean Mathlib (Crypto.Threshold.Lagrange).

Cites existing LaTeX at ~/work/lux/proofs/fhe/correctness.tex,
parameter-security.tex, dual-runtime-equivalence.tex.
2026-05-19 11:30:28 -07:00
zeekayandGitHub fb3530997d Merge pull request #3 from luxfi/licensing/canonical-pointer
docs: add LICENSING.md pointer to canonical Lux IP strategy
2026-05-15 16:38:06 -07:00
zeekay cc56f9e7e9 docs: add LICENSING.md pointing at canonical Lux IP strategy
Single LICENSING.md file referencing the canonical three-tier IP and
licensing strategy at github.com/luxfi/.github/blob/main/profile/README.md.

LICENSE file is unchanged; this only adds a navigational pointer.
2026-05-15 16:37:59 -07:00
zeekay a48150d7e5 deps: luxfi/crypto v1.19.0 2026-05-13 11:59:12 -07:00
zeekay 6fe27d1c4a fhe: decomplect onto luxfi/pq.Mode gate
Drop local SecurityProfile, ProfileClassical128, ProfileStrictPQ,
ProfileStrictPQHighValue, IsPostQuantum, String,
ProfileFromPQFlag. The strict-PQ Mode vocabulary lives in
github.com/luxfi/pq as the single source of truth across warp,
dex, evm, fhe, zap.

DefaultParamsForProfile (local enum) → DefaultParamsForMode
(pq.Mode): strict-PQ ⇒ PN9QP27_STD128Q (NIST FIPS 203 / 204
LMKCDEY); classical / hybrid ⇒ PN10QP27 (~128-bit classical,
dev-only). The FHE gate is parameter SELECTION, not refusal — no
classical ciphertext to refuse at the parameter layer, so the
ValidateMode call doesn't apply here.

ProfileStrictPQHighValue dropped: it was a no-op tier returning
the same PQ literal as the base strict-PQ profile. Once
STD192Q_LMKCDEY-aligned ParametersLiterals land, callers pick
them explicitly — the mode vocabulary stays single-purpose.
2026-05-12 19:45:14 -07:00
zeekay 8089f1c7c7 fhe: SecurityProfile seam — strict-PQ picks STD128Q_LMKCDEY (PN9QP27_STD128Q)
Single seam every Liquid FHE chain boot routes through to pick a
ParametersLiteral. Direct references to PN10QP27 / PN11QP54 /
PN9QP27_STD128Q in chain-config code are a bug — they bypass the
profile gate and can silently weaken the chain to classical-only
security.

  ProfileClassical128       → PN10QP27       (~128 bit *classical*)
  ProfileStrictPQ           → PN9QP27_STD128Q (128 bit *quantum*,
                              OpenFHE STD128Q_LMKCDEY-aligned)
  ProfileStrictPQHighValue  → PN9QP27_STD128Q today; will return
                              STD192Q_LMKCDEY-aligned params once
                              published, no consumer churn

ProfileFromPQFlag(pq bool) wires this onto the chain-config "pq"
boolean the liquidity/operator writes into
/data/configs/chains/<id>/config.json. The Liquid FHE plugin reads
"pq":true from that file and asks DefaultParamsForProfile — strict-PQ
chains get STD128Q_LMKCDEY parameters at chain boot, with no
direct PN10QP27 reference anywhere on the boot path.

Tests pin the security guarantee byte-for-byte: ProfileStrictPQ
returns PN9QP27_STD128Q (not "some PQ literal" — the exact one), so a
regression that swaps the underlying literal name requires an
explicit test update.
2026-05-11 22:08:20 -07:00
zeekay d18a56c138 deps: database v1.18.3 (drops zapdb/v4 transitive); ntt_simd updates; bench/ 2026-05-05 17:11:33 -07:00
zeekay fce3df2ea2 LP-107 Phase 5: fhe consumes luxfi/math/codec
wire/wire.go — fhe's wire-format hardening boundary. FHE wire formats
nest deeper than pulsar's (CKKS ciphertext = Vec<Poly> over RNS chain
of Vec<u64>) so MaxDepth = 5 + larger MaxFrameBytes (32 MiB) reflect
the deeper polynomial structure.

Tests:
* TestValidateCiphertextFrame_RejectsHugeLength — regression for
  lattice issue #4 attack input class. Same substrate, same
  rejection.
* TestValidateCiphertextFrame_OverCap — MaxFHESliceLen+1 rejected.

go.mod adds luxfi/math v1.3.0 dependency.

This completes Phase 5 of LP-107: every Lux Go protocol repo
(pulsar, lens, fhe, lattice) now consumes the math substrate for
bounded wire decoding. The same lattice issue #4 attack input is
rejected identically across all four consumers.
2026-05-04 09:50:34 -07:00
zeekay cd8f7c5636 fhe: KAT oracle + regen-kats.sh for cross-runtime byte-equality (LP-167)
Lands the Lux FHE-KAT corpus generators consumed by the C++ production
runtime at github.com/luxfi/luxcpp/crypto/fhe (LP-167). Mirrors the
pulsar/lens/warp regen script shape; emits a sha256 manifest and
supports --verify mode for determinism diffing.

Delivered:
  cmd/kat_oracle/main.go               KAT oracle. --emit --out <dir>
                                       writes one JSON entry per
                                       (param_set, seed) tuple. Each
                                       entry pins parameter-set ID,
                                       seed, operation tag, and a
                                       CRC32 fingerprint of the SHA-256
                                       digest of the canonical SecretKey
                                       MarshalBinary output.
  scripts/regen-kats.sh                Driver: runs kat_oracle, runs the
                                       in-tree determinism tests
                                       (TestNewKeyGeneratorFromSeed_Deterministic
                                       + TestNewKeyGeneratorFromSeed_DifferentSeeds),
                                       emits manifest. --verify mode
                                       diffs against existing manifest;
                                       fails on mismatch.
  scripts/regen-kats.manifest.sha256   Initial 4-entry manifest:
                                       PN10QP27 / PN11QP54 × seed-zero /
                                       seed-lp167-stable.

Verification:
  $ LUXCPP_DIR=$HOME/work/luxcpp scripts/regen-kats.sh --verify
  OK: Lux FHE KAT regeneration is byte-equal across runs (4 files)

  $ cd \$HOME/work/luxcpp/crypto/fhe
  $ ctest --test-dir build -R fhe_kat_replay
  OK lux-fhe-cpp KAT replay (4 entries)

LP-167 §"Cross-runtime KAT contract" requires both directions of
byte-equality. The Go→C++ direction is exercised by this commit and
the C++ replay test. The reverse direction (C++ generates, Go
verifies) is queued behind v0.1.0-rc2-fhe-gpu in lockstep with the
production CUDA NTT + key-switch + bootstrap kernels.

go test -count=1 -timeout=300s ./...  ->  3/3 ok
  ok  github.com/luxfi/fhe                 48.345s
  ok  github.com/luxfi/fhe/pkg/encrypted   98.833s
  ok  github.com/luxfi/fhe/pkg/threshold    0.778s
2026-03-03 12:00:00 -08:00
zeekay 8300fa5905 test(fhed): standalone integration smoke + cmd/fhed/README
Document fhed's two operating modes (standalone + threshold) explicitly
in cmd/fhed/README.md. fhed never reaches across the network for crypto
state — both modes are self-contained.

Add cmd/fhed/standalone_test.go behind the integration build tag. It
builds fhed, starts it on a free port with a fresh data dir, waits for
/v1/fhe/health, and round-trips an encrypted bit through the HTTP API.

Run: go test -tags=integration ./cmd/fhed/... -count=1 -timeout 180s

Honest scope-limit: the test currently fails on bootstrap-key persistence
("max slice length exceeded" from zapdb). The bug is upstream of this
change — fhed itself cannot complete first-time keygen on any parameter
set against current zapdb. Test is correct against the documented API
and will go green once the zapdb blob-size cap is raised in
github.com/luxfi/database.
2026-04-28 02:56:27 -07:00
zeekay dc2434225a feat(keygen): real deterministic NewKeyGeneratorFromSeed (v1.8.0)
Replace the stub implementation with a real HKDF-SHA256 derivation that
seeds blake2b KeyedPRNG streams driving ring.NewSampler over the secret
distribution Xs. Same seed -> byte-identical secret keys, the consensus
invariant validators rely on.

Pipeline:
  prk    = HKDF-Extract(SHA-256, salt="LUX_FHE_KEYGEN_v1", ikm=seed)
  keyLWE = HKDF-Expand(prk, "LUX_FHE_KEYGEN_v1:LWE", 32)
  keyBR  = HKDF-Expand(prk, "LUX_FHE_KEYGEN_v1:BR",  32)

Tests:
  - Deterministic (same seed -> same SK bytes)
  - DifferentSeeds (distinct seeds -> distinct SKs)
  - GoldenVector (sha256(SKBR) pinned for PN10QP27)
  - EmptySeed (rejected)

Unblocks luxfi/precompile fhe/fhe_ops.go:49 which calls this symbol.
2026-04-28 02:26:15 -07:00
zeekay 87b7c9b8c5 fix: rlwe.NewKeyGenerator compat with lattice/v7
lattice/v7 dropped the FromPRNG constructor. Use NewKeyGenerator for
now; deterministic seeding tracked in luxfi/lattice#42.
2026-04-13 02:42:56 -07:00
zeekay cb94afa3b4 feat(encrypted): FHE CRDT primitives + RFC 3526 safe prime
LWW-Register, ORSet, GCounter merge under TFHE encryption.
EncryptedDocument with structural StateRoot (deterministic across
replicas despite ciphertext non-determinism). AnchorClient interface
for CRDTAnchor.sol checkpoint wiring.

Safe prime swap: 256-bit composite → 2048-bit RFC 3526 Group 14.
Feldman VSS generator now element of order q (was full group).
Reshare uses additive sub-sharing (no secret materialization).

19 encrypted + 10 threshold tests pass. Red-reviewed: 16 findings,
13 fixed, 5 scientist findings addressed.
2026-04-13 01:03:34 -07:00
zeekay b02d9e20a2 test: fheCRDT benchmark harness + lattice property checks
Adds bench_crdt_test.go with:
- Lattice property tests (commutativity, associativity, idempotence)
  for LWW-Register, G-Counter, and G-Set over FHE ciphertexts
- Benchmarks for single bootstrap, G-Set merge, G-Counter merge,
  LWW-Register merge throughput
- Ciphertext size measurement
- Simulated 2-node geo-distributed convergence with 50ms RTT
2026-04-12 22:50:17 -07:00
zeekay 02090bfe04 feat: add cli package for lux CLI integration
Exports NewCmd() returning a cobra.Command with keygen, encrypt,
decrypt, and eval subcommands. Wires directly to fhe.KeyGenerator,
fhe.Encryptor, and fhe.Decryptor -- no stubs.
2026-04-12 21:41:49 -07:00
zeekay 6e9bacc7f3 deps: luxfi/zapdb v4 → v1.0.0 (module path reset) 2026-04-11 00:05:17 -07:00
zeekay c58fab440a fix: all routes under /v1/fhe/* — canonical path pattern 2026-04-09 17:46:41 -07:00
zeekay 00a1ba7511 chore: final cleanup — all security fixes applied, all tests passing 2026-04-07 22:19:10 -07:00
zeekay ae12e1f41e security: add DEMO WARNING to regulated vault (operator holds full key) 2026-04-07 20:14:48 -07:00
zeekay ae22c76f97 feat: regulated-vault demo — private data with MPC threshold decrypt for regulators
Operators can't see your data. Nobody can decrypt without t-of-n MPC approval.
Regulators can force-decrypt via legal process (threshold approval flow).

Endpoints:
  POST /v1/vault/store        encrypt + store (operator sees only ciphertext)
  GET  /v1/vault/list         list records (all encrypted, no plaintext)
  POST /v1/vault/request      request decryption (starts approval process)
  POST /v1/vault/approve/{id} MPC key holder approves (t-of-n threshold)
  GET  /v1/vault/reveal/{id}  get plaintext (only after threshold met)
  GET  /v1/vault/audit        full audit trail of all requests + approvals
  POST /v1/vault/compute      homomorphic computation on encrypted data

Architecture: FHE public key encrypts. Secret key Shamir-split across N MPC nodes.
No single party (including operator) can decrypt. Social/legal process required.
2026-04-07 19:07:16 -07:00
zeekay c96e2d903f feat: all 7 FHE demos now Base apps — single binary, admin UI, REST API
Each demo is a sovereign app: go run ./cmd/demos/<name> serve

darkpool:     /v1/orders, /v1/match, /v1/reveal — encrypted order matching
compliance:   /v1/portfolio, /v1/check — SEC diversification on encrypted holdings
marketmaker:  /v1/quotes, /v1/best — private market making
auction:      /v1/bids, /v1/determine-winner, /v1/reveal — sealed-bid auction
voting:       /v1/votes, /v1/tally, /v1/result — encrypted shareholder voting
nav:          /v1/holdings, /v1/compute — confidential fund valuation
proof:        /v1/positions, /v1/prove — compliance proofs without revealing data

All use Base embedded SQLite + admin UI at /_/. FHE key material
stored in Base's encrypted collections. Original FHE logic preserved.
2026-04-07 19:00:09 -07:00
zeekay e1bd3ae1aa chore: clean working tree — all security fixes applied 2026-04-07 18:47:16 -07:00
zeekay e6fc049856 security: fix FHE encryptor panic and NTT timing side-channel
F13: Add EncryptSafe(bool) (*Ciphertext, error) that returns errors instead of
panicking. Existing Encrypt(bool) is preserved but deprecated -- it now calls
EncryptSafe internally.

F07: Remove data-dependent branch (if hi == 0) from mulModBarrett. Always
execute the full 128-bit reduction path to eliminate timing side-channel.
2026-04-07 17:40:11 -07:00
zeekay 0a0026cbd2 fix: replace composite PN11QP54 modulus, fix findPrimitiveRoot to check all prime factors
Bug 1: PN11QP54 used 0x3FFFFFFFFFC0001 which factors as 67*1447*6571*452444119.
Replaced with 0x3FFFFFFFFED001 (prime, 54-bit, Q ≡ 1 mod 4096).

Bug 2: findPrimitiveRoot only checked g^((Q-1)/2) != 1 but must check
g^((Q-1)/p) != 1 for ALL prime factors p of Q-1. Added primeFactors()
to compute distinct prime factors.

Also fixed: div128 overflow for Q > 32 bits (now uses math/bits.Div64),
mulModBarrett correctness for large Q, and INTTInPlace twiddle indexing.
2026-04-07 16:51:18 -07:00
zeekay 35e967bbcc docs: README — architecture, primitives, usage 2026-04-07 09:42:42 -07:00
zeekay 8c2be02790 feat: C FFI + Rust bindings (libluxfhe) 2026-04-04 12:45:53 -07:00
zeekay 591975d927 feat: 7 FHE demo programs (dark pool, compliance, MM, auction, voting, NAV, proof) 2026-04-01 17:54:53 -07:00
zeekay c2b406e44e feat: fhed uses encrypted ZapDB for key material storage
Replace flat-file key storage (secret.key, public.key, bootstrap.key)
with encrypted ZapDB (ChaCha20-Poly1305). All FHE key material is now
stored in a single encrypted database at <dataDir>/zapdb/.

New pkg/store package wraps luxfi/database/encdb for:
- Secret/public/bootstrap key storage (encrypted at rest)
- Ciphertext cache by content hash
- Metadata storage

New --password flag (or FHED_PASSWORD env) for ZapDB encryption.
Both standard and threshold modes use ZapDB.
2026-04-01 16:49:44 -07:00
zeekay c53149ed21 chore: symlink AGENTS.md and CLAUDE.md to LLM.md
Canonical project context lives in LLM.md. Symlinks ensure
agentic coding tools (agent, Cursor, etc.) find context
automatically regardless of which filename they look for.
2026-04-01 14:08:39 -07:00
zeekay 6514276d6c chore: bump Go 1.26.0 → 1.26.1
Fixes 5 stdlib CVEs (html/template, os, net/url, crypto/x509 x2).
2026-03-12 01:08:22 -07:00
zeekay 201c03306e chore: update Go module dependencies 2026-03-03 11:31:01 -08:00
zeekay e6f4da9fcf fix: use published mdns v0.1.0 and remove local replace directive 2026-02-20 21:15:54 -08:00
zeekay cf0cab1f6b chore: standardize LLM.md/CLAUDE.md convention 2026-02-17 19:05:20 -08:00
zeekay 9740b9c810 feat: add FHE example apps for all Pars PIPs
- data-seal: Verifiable Data Integrity Seal (PIP-0010/LP-0535)
  FHE-encrypted tamper-proof sealing with Public/ZK/Private modes,
  batch sealing, homomorphic verification

- content-provenance: AI & Media Content Provenance (PIP-0011/LP-7110)
  Model manifests, output attestation via homomorphic comparison,
  media derivation DAGs

- encrypted-crdt: Encrypted CRDT (PIP-0013/LP-6500)
  LWW-Register with FHE values, OR-Set with tag-based add/remove,
  Lamport timestamp conflict resolution, deterministic merge

- shadow-governance: Shadow Government Protocol (PIP-7010)
  Anonymous ministries, encrypted voting with homomorphic tallying,
  nullifier-based anti-fraud, quorum enforcement

Each example includes Solidity contracts, Hardhat tests, CLI tasks,
and README linking to corresponding PIP and LP specifications.
2026-02-13 14:16:46 -08:00
zeekay d7b4098418 feat: add FHE example applications for sealing, voting, media auth, provenance, CRDTs, and statistics
Six production-ready example applications demonstrating the FHE library:
- cmd/seal: document integrity sealing with encrypted verification
- cmd/vote: encrypted voting system with threshold tallying
- cmd/mediaseal: media content authentication with FHE
- cmd/provenance: AI model provenance tracking with encrypted attestation
- cmd/crdt: encrypted LWW-Register for fheCRDT architectures (LP-6500)
- cmd/stats: secure multiparty statistics over encrypted data

Also pins luxfi/mdns to v0.1.0 and excludes compiled binaries from git.
2026-02-13 12:44:18 -08:00
zeekay ddd2057bce refactor: convert to Go bindings only
Remove all submodules and non-Go content.
JS SDKs, plugins, templates, and examples live in their own repos.

Kept:
- Go FHE library (*.go)
- cmd/, pkg/, internal/
- docs/, bin/
2026-01-27 14:41:31 -08:00
zeekay 580c0d9217 rebrand: final cleanup Zama/Fhenix → Lux/LuxFHE
- Update all submodule references
- Fix ml/extensions LICENSE
- Fix ml/torus-ml CONTRIBUTING and Dockerfiles
- Fix sdk/relayer relayer URL
- Fix proto/decryption-oracle go.mod
- Rename fhevm-suite assets to Lux
- Update fhevm-suite LICENSE
2026-01-27 14:16:17 -08:00
zeekay 9b60751b28 Update all submodules: Zama/Fhenix → Lux/LuxFHE rebrand
Submodules updated:
- examples/smart-wallet: Fhenix → LuxFHE
- examples/kuhn-poker: Fhenix → LuxFHE
- plugins/remix: Zama → Lux
- templates/vue: Zama → Lux
- templates/nuxt: Fhenix → LuxFHE
- templates/foundry: Fhenix → LuxFHE
- templates/miniapp: Fhenix → LuxFHE
- mocks/foundry: Fhenix → LuxFHE
- js/permit: Fhenix → LuxFHE
2026-01-27 10:51:58 -08:00
zeekay b3dcb7ee87 Rebrand: Remove Zama/Fhenix references
- plugins/remix: Zama → Lux CSS classes and URLs
- templates/vue: Zama → Lux URLs
- templates/foundry: fhenix → luxfhe remappings
- templates/nuxt,miniapp: fhenix → luxfhe
- js/permit: fhenixjs → luxfhejs
- mocks/foundry: fhenix → luxfhe remappings
- scripts/flatten-repos.sh: fhenixprotocol → luxfhe
- ml/torus-ml: Update spelling dictionary
2026-01-27 10:50:30 -08:00
zeekay ea52af63d5 Rebrand: Zama → Lux in scripts and docs
- Update GitHub org refs (zama-ai → luxfhe)
- Update PyPI URLs (pypi.zama.ai → pypi.lux.network)
- Update company name in docs
2026-01-27 10:35:11 -08:00
zeekay ba3bedcb51 Rebrand: Zama → Lux in TestTorusMLX
- Update copyright headers
- Update bundle identifiers
- Update API URLs
2026-01-27 10:34:48 -08:00
zeekay de0e78c390 Complete Concrete→Torus rebrand
- Update migrate-zama.sh script
- Update ml/torus-ml submodule
- Update ios-demo submodule
2026-01-26 20:58:37 -08:00
zeekay a87afd90e9 Complete Concrete→Torus rebrand in all files
- Update all requirements.txt files
- Update all GitHub workflow files
- Update Makefile and federated_learning/Makefile
- Update script files (shell scripts)
- Update deps_licenses files
- Rename raw_cml examples to raw_tml
2026-01-26 20:58:18 -08:00