4 Commits

Author SHA1 Message Date
Arseniy Klempner
b3b71bc2a5
feat(sim): slim-mode submodule minimization
Three changes:
- vendor/logos-lez-rln bump: drops unused top-level logos-delivery
  submodule (~1.3 GB saved per fresh clone).
- setup_and_run.sh: gate lssa + logos-execution-zone-module init on
  SIM_NETWORK=local (or SIM_FULL_SUBMODS=1). Default Docker setup now
  pulls only logos-delivery-module (+ nested logos-delivery), saving
  ~11 GB of lssa for slim/testnet fresh clones.
- run_simulation.sh: stop requiring lssa/ to exist when discovering
  LEZ_RLN_DIR in the sibling-checkout layout.
- README: slim-mode minimum-submodule recipe + rationale.
2026-05-17 22:17:20 -06:00
Arseniy Klempner
8977064671
feat(sim): testnet pipeline with seed bootstrap, slim mode, polish
Adds a SIM_NETWORK=testnet path to mix_lez_chat that:

- Skips local sequencer launch; reachability-checks the testnet RPC
  up front.
- Selects vendor/logos-lez-rln/testnet/ for wallet config + persistent
  state. Default flow runs run_setup against the deployed RLN program
  (is_initialized short-circuits to create_funded_user).
- Bootstraps from the submodule-shipped artifacts on first run:
  copies testnet/storage.json.seed -> testnet/storage.json and
  testnet/{supply_holding,payment_account}.txt ->
  ~/.logos-lez-rln/{supply_holding,payment_account}_<tree>.txt. Lets
  a fresh-clone dev reuse the canonical deployment.
- Adds SIM_SLIM=1 opt-in: skip run_setup entirely, use the shipped
  config_account + cached payment_account. Saves devs from building
  the lez-rln Rust toolchain (and transitively the lssa nested
  submodule).
- Raises timing floors for testnet block times (~60s vs local ~15s);
  adds KADEMLIA_HARD_CAP and SIM_PERSIST_LOCAL escape hatches.
- Polled-readiness loops replace fixed sleeps (kademlia mesh, mix
  peer counts, receiver join, delivery — each with bounded retry).
- Extracted seed_copy and wait_method_calls helpers; dropped a stale
  mix-peer kademlia gate (static mixNodes config seeds the pool via
  processBootNodes — kademlia counts are diagnostics only).

README updated with the testnet-flow + slim-mode + fresh-clone story.
2026-05-17 18:59:31 -06:00
Arseniy Klempner
9d368aeb44
build: add Docker image + GHCR for cross-platform simulation testing
Multi-stage Dockerfile pre-builds all heavy nix dependencies. Runtime
image (~8.5GB) at ghcr.io/adklempner/logos-chat-sim:latest includes
nix store closure + Rust + cargo-risczero/r0vm + system clang.

run_in_docker.sh pulls from GHCR, symlinks pre-built modules, builds
sequencer + run_setup from source (~10 min per run).

Update vendor/logos-lez-rln to a591645 (rebased onto main with
member-expiry merged, single squashed commit).

Add INSTRUCTIONS.md with macOS, Linux (native), and Docker instructions.
2026-05-11 18:30:28 -06:00
Arseniy Klempner
695ecb42bc
feat: add mix+LEZ chat simulation with Docker support
End-to-end simulation: 4 mix nodes with RLN spam protection, LEZ
sequencer, gifter service, and two logos-chat-module clients exchanging
double-ratchet-encrypted messages through 3-hop Sphinx onion routes.

Simulation scripts:
- run_simulation.sh: orchestrates sequencer, mix nodes, chat clients,
  with poll-based readiness checks and 15 verification checks
- setup_and_run.sh: one-shot build + run for fresh clones
- run_in_docker.sh: Docker-based Linux testing with pre-built modules
- README.md: configuration, troubleshooting, architecture guide

Configurable via SIM_* env vars (ports, timeouts, log level).
Cross-platform: macOS native + Linux via Docker.

Docker image (Dockerfile.sim) uses multi-stage build:
- Stage 1: builds all LEZ modules, sequencer, liblogoschat, chat-module
- Stage 2: copies only runtime nix closure (~1.9GB) + output artifacts
- Pre-built modules are symlinked at runtime, skipping build_all.sh
2026-05-06 10:50:14 -06:00