Home / Input Output / ouroboros-leios-sim
Feb 12, 11-12 PM (0)
Feb 12, 12-1 PM (0)
Feb 12, 1-2 PM (0)
Feb 12, 2-3 PM (0)
Feb 12, 3-4 PM (0)
Feb 12, 4-5 PM (0)
Feb 12, 5-6 PM (0)
Feb 12, 6-7 PM (0)
Feb 12, 7-8 PM (0)
Feb 12, 8-9 PM (0)
Feb 12, 9-10 PM (0)
Feb 12, 10-11 PM (0)
Feb 12, 11-12 AM (0)
Feb 13, 12-1 AM (0)
Feb 13, 1-2 AM (0)
Feb 13, 2-3 AM (0)
Feb 13, 3-4 AM (0)
Feb 13, 4-5 AM (0)
Feb 13, 5-6 AM (0)
Feb 13, 6-7 AM (0)
Feb 13, 7-8 AM (0)
Feb 13, 8-9 AM (0)
Feb 13, 9-10 AM (0)
Feb 13, 10-11 AM (0)
Feb 13, 11-12 PM (0)
Feb 13, 12-1 PM (0)
Feb 13, 1-2 PM (0)
Feb 13, 2-3 PM (8)
Feb 13, 3-4 PM (1)
Feb 13, 4-5 PM (5)
Feb 13, 5-6 PM (0)
Feb 13, 6-7 PM (0)
Feb 13, 7-8 PM (0)
Feb 13, 8-9 PM (0)
Feb 13, 9-10 PM (0)
Feb 13, 10-11 PM (0)
Feb 13, 11-12 AM (0)
Feb 14, 12-1 AM (0)
Feb 14, 1-2 AM (0)
Feb 14, 2-3 AM (0)
Feb 14, 3-4 AM (0)
Feb 14, 4-5 AM (15)
Feb 14, 5-6 AM (0)
Feb 14, 6-7 AM (0)
Feb 14, 7-8 AM (0)
Feb 14, 8-9 AM (0)
Feb 14, 9-10 AM (0)
Feb 14, 10-11 AM (0)
Feb 14, 11-12 PM (0)
Feb 14, 12-1 PM (0)
Feb 14, 1-2 PM (0)
Feb 14, 2-3 PM (0)
Feb 14, 3-4 PM (0)
Feb 14, 4-5 PM (0)
Feb 14, 5-6 PM (0)
Feb 14, 6-7 PM (0)
Feb 14, 7-8 PM (0)
Feb 14, 8-9 PM (0)
Feb 14, 9-10 PM (0)
Feb 14, 10-11 PM (0)
Feb 14, 11-12 AM (0)
Feb 15, 12-1 AM (0)
Feb 15, 1-2 AM (0)
Feb 15, 2-3 AM (0)
Feb 15, 3-4 AM (0)
Feb 15, 4-5 AM (0)
Feb 15, 5-6 AM (0)
Feb 15, 6-7 AM (0)
Feb 15, 7-8 AM (0)
Feb 15, 8-9 AM (0)
Feb 15, 9-10 AM (0)
Feb 15, 10-11 AM (0)
Feb 15, 11-12 PM (0)
Feb 15, 12-1 PM (0)
Feb 15, 1-2 PM (0)
Feb 15, 2-3 PM (0)
Feb 15, 3-4 PM (0)
Feb 15, 4-5 PM (0)
Feb 15, 5-6 PM (0)
Feb 15, 6-7 PM (0)
Feb 15, 7-8 PM (0)
Feb 15, 8-9 PM (0)
Feb 15, 9-10 PM (0)
Feb 15, 10-11 PM (0)
Feb 15, 11-12 AM (0)
Feb 16, 12-1 AM (0)
Feb 16, 1-2 AM (0)
Feb 16, 2-3 AM (0)
Feb 16, 3-4 AM (0)
Feb 16, 4-5 AM (0)
Feb 16, 5-6 AM (0)
Feb 16, 6-7 AM (0)
Feb 16, 7-8 AM (0)
Feb 16, 8-9 AM (0)
Feb 16, 9-10 AM (0)
Feb 16, 10-11 AM (0)
Feb 16, 11-12 PM (0)
Feb 16, 12-1 PM (0)
Feb 16, 1-2 PM (0)
Feb 16, 2-3 PM (0)
Feb 16, 3-4 PM (0)
Feb 16, 4-5 PM (0)
Feb 16, 5-6 PM (0)
Feb 16, 6-7 PM (0)
Feb 16, 7-8 PM (0)
Feb 16, 8-9 PM (0)
Feb 16, 9-10 PM (0)
Feb 16, 10-11 PM (0)
Feb 16, 11-12 AM (0)
Feb 17, 12-1 AM (0)
Feb 17, 1-2 AM (0)
Feb 17, 2-3 AM (0)
Feb 17, 3-4 AM (0)
Feb 17, 4-5 AM (0)
Feb 17, 5-6 AM (0)
Feb 17, 6-7 AM (0)
Feb 17, 7-8 AM (3)
Feb 17, 8-9 AM (0)
Feb 17, 9-10 AM (0)
Feb 17, 10-11 AM (0)
Feb 17, 11-12 PM (0)
Feb 17, 12-1 PM (0)
Feb 17, 1-2 PM (0)
Feb 17, 2-3 PM (0)
Feb 17, 3-4 PM (3)
Feb 17, 4-5 PM (1)
Feb 17, 5-6 PM (2)
Feb 17, 6-7 PM (1)
Feb 17, 7-8 PM (0)
Feb 17, 8-9 PM (0)
Feb 17, 9-10 PM (0)
Feb 17, 10-11 PM (1)
Feb 17, 11-12 AM (0)
Feb 18, 12-1 AM (0)
Feb 18, 1-2 AM (0)
Feb 18, 2-3 AM (0)
Feb 18, 3-4 AM (0)
Feb 18, 4-5 AM (0)
Feb 18, 5-6 AM (0)
Feb 18, 6-7 AM (0)
Feb 18, 7-8 AM (0)
Feb 18, 8-9 AM (0)
Feb 18, 9-10 AM (0)
Feb 18, 10-11 AM (0)
Feb 18, 11-12 PM (0)
Feb 18, 12-1 PM (0)
Feb 18, 1-2 PM (0)
Feb 18, 2-3 PM (0)
Feb 18, 3-4 PM (2)
Feb 18, 4-5 PM (0)
Feb 18, 5-6 PM (2)
Feb 18, 6-7 PM (2)
Feb 18, 7-8 PM (8)
Feb 18, 8-9 PM (0)
Feb 18, 9-10 PM (1)
Feb 18, 10-11 PM (0)
Feb 18, 11-12 AM (0)
Feb 19, 12-1 AM (0)
Feb 19, 1-2 AM (0)
Feb 19, 2-3 AM (0)
Feb 19, 3-4 AM (0)
Feb 19, 4-5 AM (0)
Feb 19, 5-6 AM (0)
Feb 19, 6-7 AM (0)
Feb 19, 7-8 AM (39)
Feb 19, 8-9 AM (4)
Feb 19, 9-10 AM (0)
Feb 19, 10-11 AM (2)
Feb 19, 11-12 PM (0)
100 commits this week Feb 12, 2026 - Feb 19, 2026
Remove cabal.project sed patching from Dockerfiles
The ouroboros-consensus source-repository-package reference has moved
upstream (now e8fb792f), making the sed for the old tag (8f0e1423) a
no-op. Remove it from both Dockerfile.cardano-node-bp and
Dockerfile.cardano-node. The latest leios-prototype also auto-creates
leios.db, so drop that from init-node0.sh.

Signed-off-by: Chris Gianelloni <[email protected]>
Antithesis analysis container
Python-based analysis container that monitors node logs and
reports assertions to Antithesis SDK:

- Dockerfile.analysis: Python 3.11 slim image with pandas, matplotlib,
  and antithesis SDK
- analyse.py: Log parsing and metrics computation module, extracts
  Praos and Leios block events, computes latency statistics
- entrypoint-analysis.py: Main loop that periodically analyzes logs
  and reports assertions (p95 latency thresholds, block propagation)

Signed-off-by: Chris Gianelloni <[email protected]>
Antithesis observability stack configuration
Observability infrastructure for local testing
(enabled via --profile observability):

- prometheus.yml: Metrics scraping configuration for cardano-nodes
- loki.yml: Log aggregation configuration with TSDB storage
- alloy.river: Grafana Alloy config to ship logs from /logs to Loki
- grafana/provisioning/datasources: Prometheus and Loki datasources
- grafana/provisioning/dashboards: Leios overview dashboard with
  log panels for each node and error/warning filtering

Signed-off-by: Chris Gianelloni <[email protected]>
Dockerfile: build cardano-node and tx-generator separately
- cardano-node from leios-prototype branch
- tx-generator from stable cardano-node 10.5.4 (leios-prototype has API incompatibility)
- cardano-cli from blink labs pre-built image

The tx-generator on leios-prototype fails to compile due to
ouroboros-network API drift, but has no Leios-specific changes.

Signed-off-by: Chris Gianelloni <[email protected]>
Fix IP conflicts and genesis file paths
- Separate immdb profile IPs to avoid conflicts with proto-devnet:
  - upstream: 172.28.0.10 -> 172.28.0.110
  - node0: 172.28.0.20 -> 172.28.0.120
  - downstream: 172.28.0.30 -> 172.28.0.130
- Fix genesis file paths: use /data directly instead of /data/genesis
  to match config.json relative path expectations
- Both profiles now work correctly together or separately

Signed-off-by: Chris Gianelloni <[email protected]>
Antithesis cardano-node container infrastructure
Dockerfile and scripts for building cardano-node-leios container
for Antithesis testing:

- Dockerfile.cardano-node: Multi-stage build using Blink Labs base image,
  builds cardano-node from leios-prototype branch with patched
  ouroboros-consensus reference for LeiosDemoDb support
- init-node0.sh: Initializes node0 data directory with leios.db,
  topology.json, and patched genesis paths
- init-downstream.sh: Initializes downstream node connecting to node0
- run-cardano-node.sh: Runtime script with optional WAN emulation
- setup-wan-emulation.sh: tc-based network shaping for local testing

Signed-off-by: Chris Gianelloni <[email protected]>
Antithesis docker-compose orchestration and CI
Antithesis docker-compose stack and CI workflow for testing:

- docker-compose.yaml: Full stack orchestration with init containers,
  main services (upstream, node0, downstream), analysis container,
  and optional observability stack. Uses 172.28.0.0/24 subnet with
  static IPs, healthchecks, and WAN emulation support via NET_ADMIN
- scripts/test-local.sh: Local testing script that builds images,
  starts stack, waits for health, runs for configurable duration,
  and checks analysis assertions
- .github/workflows/antithesis-leios.yaml: CI workflow to build and
  push images to GHCR, with optional local stack testing on PRs

Signed-off-by: Chris Gianelloni <[email protected]>
Antithesis immdb-server container infrastructure
Dockerfile and scripts for building immdb-server container
for Antithesis testing:

- Dockerfile.immdb-server: Multi-stage build using Blink Labs base image,
  builds immdb-server and leiosdemo202510 from ouroboros-consensus
  leios-prototype branch
- init-upstream.sh: Generates leios.db and schedule.json using
  leiosdemo202510, extracts immutable chain data, patches genesis paths
- run-upstream.sh: Runtime script with optional WAN emulation

Signed-off-by: Chris Gianelloni <[email protected]>
Make proto-devnet and immdb mutually exclusive profiles
- Add `profiles: ["devnet"]` to all proto-devnet services
- Proto-devnet now requires `--profile devnet` to start
- ImmDB remains `--profile immdb`
- Update README with new usage instructions
- Update IP addresses in README for immdb profile

Usage:
  docker compose --profile devnet up      # Proto-devnet
  docker compose --profile immdb up       # ImmDB mock

Signed-off-by: Chris Gianelloni <[email protected]>