Feb 05, 8-9 PM (36)
Feb 05, 9-10 PM (15)
Feb 05, 10-11 PM (34)
Feb 05, 11-12 AM (27)
Feb 06, 12-1 AM (20)
Feb 06, 1-2 AM (15)
Feb 06, 2-3 AM (14)
Feb 06, 3-4 AM (15)
Feb 06, 4-5 AM (5)
Feb 06, 5-6 AM (11)
Feb 06, 6-7 AM (17)
Feb 06, 7-8 AM (52)
Feb 06, 8-9 AM (91)
Feb 06, 9-10 AM (39)
Feb 06, 10-11 AM (33)
Feb 06, 11-12 PM (42)
Feb 06, 12-1 PM (76)
Feb 06, 1-2 PM (58)
Feb 06, 2-3 PM (54)
Feb 06, 3-4 PM (62)
Feb 06, 4-5 PM (63)
Feb 06, 5-6 PM (15)
Feb 06, 6-7 PM (9)
Feb 06, 7-8 PM (35)
Feb 06, 8-9 PM (13)
Feb 06, 9-10 PM (15)
Feb 06, 10-11 PM (25)
Feb 06, 11-12 AM (29)
Feb 07, 12-1 AM (6)
Feb 07, 1-2 AM (2)
Feb 07, 2-3 AM (5)
Feb 07, 3-4 AM (5)
Feb 07, 4-5 AM (5)
Feb 07, 5-6 AM (7)
Feb 07, 6-7 AM (0)
Feb 07, 7-8 AM (5)
Feb 07, 8-9 AM (7)
Feb 07, 9-10 AM (5)
Feb 07, 10-11 AM (2)
Feb 07, 11-12 PM (1)
Feb 07, 12-1 PM (2)
Feb 07, 1-2 PM (13)
Feb 07, 2-3 PM (16)
Feb 07, 3-4 PM (16)
Feb 07, 4-5 PM (11)
Feb 07, 5-6 PM (9)
Feb 07, 6-7 PM (9)
Feb 07, 7-8 PM (3)
Feb 07, 8-9 PM (3)
Feb 07, 9-10 PM (7)
Feb 07, 10-11 PM (26)
Feb 07, 11-12 AM (25)
Feb 08, 12-1 AM (1)
Feb 08, 1-2 AM (5)
Feb 08, 2-3 AM (7)
Feb 08, 3-4 AM (2)
Feb 08, 4-5 AM (2)
Feb 08, 5-6 AM (3)
Feb 08, 6-7 AM (0)
Feb 08, 7-8 AM (0)
Feb 08, 8-9 AM (9)
Feb 08, 9-10 AM (0)
Feb 08, 10-11 AM (2)
Feb 08, 11-12 PM (2)
Feb 08, 12-1 PM (2)
Feb 08, 1-2 PM (0)
Feb 08, 2-3 PM (3)
Feb 08, 3-4 PM (2)
Feb 08, 4-5 PM (3)
Feb 08, 5-6 PM (9)
Feb 08, 6-7 PM (1)
Feb 08, 7-8 PM (3)
Feb 08, 8-9 PM (4)
Feb 08, 9-10 PM (27)
Feb 08, 10-11 PM (42)
Feb 08, 11-12 AM (19)
Feb 09, 12-1 AM (3)
Feb 09, 1-2 AM (9)
Feb 09, 2-3 AM (4)
Feb 09, 3-4 AM (16)
Feb 09, 4-5 AM (6)
Feb 09, 5-6 AM (6)
Feb 09, 6-7 AM (31)
Feb 09, 7-8 AM (10)
Feb 09, 8-9 AM (70)
Feb 09, 9-10 AM (25)
Feb 09, 10-11 AM (78)
Feb 09, 11-12 PM (73)
Feb 09, 12-1 PM (104)
Feb 09, 1-2 PM (53)
Feb 09, 2-3 PM (60)
Feb 09, 3-4 PM (97)
Feb 09, 4-5 PM (48)
Feb 09, 5-6 PM (24)
Feb 09, 6-7 PM (16)
Feb 09, 7-8 PM (20)
Feb 09, 8-9 PM (48)
Feb 09, 9-10 PM (28)
Feb 09, 10-11 PM (36)
Feb 09, 11-12 AM (34)
Feb 10, 12-1 AM (17)
Feb 10, 1-2 AM (6)
Feb 10, 2-3 AM (8)
Feb 10, 3-4 AM (3)
Feb 10, 4-5 AM (9)
Feb 10, 5-6 AM (10)
Feb 10, 6-7 AM (16)
Feb 10, 7-8 AM (77)
Feb 10, 8-9 AM (58)
Feb 10, 9-10 AM (32)
Feb 10, 10-11 AM (77)
Feb 10, 11-12 PM (100)
Feb 10, 12-1 PM (63)
Feb 10, 1-2 PM (83)
Feb 10, 2-3 PM (50)
Feb 10, 3-4 PM (42)
Feb 10, 4-5 PM (25)
Feb 10, 5-6 PM (18)
Feb 10, 6-7 PM (20)
Feb 10, 7-8 PM (26)
Feb 10, 8-9 PM (16)
Feb 10, 9-10 PM (15)
Feb 10, 10-11 PM (40)
Feb 10, 11-12 AM (19)
Feb 11, 12-1 AM (4)
Feb 11, 1-2 AM (12)
Feb 11, 2-3 AM (4)
Feb 11, 3-4 AM (1)
Feb 11, 4-5 AM (6)
Feb 11, 5-6 AM (5)
Feb 11, 6-7 AM (9)
Feb 11, 7-8 AM (13)
Feb 11, 8-9 AM (132)
Feb 11, 9-10 AM (29)
Feb 11, 10-11 AM (37)
Feb 11, 11-12 PM (55)
Feb 11, 12-1 PM (89)
Feb 11, 1-2 PM (63)
Feb 11, 2-3 PM (54)
Feb 11, 3-4 PM (46)
Feb 11, 4-5 PM (54)
Feb 11, 5-6 PM (20)
Feb 11, 6-7 PM (34)
Feb 11, 7-8 PM (24)
Feb 11, 8-9 PM (41)
Feb 11, 9-10 PM (25)
Feb 11, 10-11 PM (47)
Feb 11, 11-12 AM (31)
Feb 12, 12-1 AM (10)
Feb 12, 1-2 AM (6)
Feb 12, 2-3 AM (12)
Feb 12, 3-4 AM (7)
Feb 12, 4-5 AM (8)
Feb 12, 5-6 AM (32)
Feb 12, 6-7 AM (13)
Feb 12, 7-8 AM (19)
Feb 12, 8-9 AM (22)
Feb 12, 9-10 AM (22)
Feb 12, 10-11 AM (46)
Feb 12, 11-12 PM (28)
Feb 12, 12-1 PM (40)
Feb 12, 1-2 PM (59)
Feb 12, 2-3 PM (80)
Feb 12, 3-4 PM (39)
Feb 12, 4-5 PM (49)
Feb 12, 5-6 PM (81)
Feb 12, 6-7 PM (31)
Feb 12, 7-8 PM (23)
Feb 12, 8-9 PM (3)
4,435 commits this week Feb 05, 2026 - Feb 12, 2026
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]>
Default to proto-devnet for Antithesis configuration
Add proto-devnet with 3 block-producing pools as the default setup:
- pool1, pool2, pool3 in mesh topology with real block production
- tx-generator for transaction load testing
- Shared genesis volume for synchronized startup
- Fast 0.1s slots for rapid iteration

Keep existing immdb-server setup under --profile immdb:
- upstream/node0/downstream services moved to immdb profile
- analysis-immdb container for immdb-specific metrics

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]>
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 analysis log parser and Leios timing
- Fix timestamp parsing to handle nanosecond precision (truncate to microseconds)
- Fix log format detection: use 'ns' field for namespace detection (cardano-node format)
- Add type safety checks for msg/data fields that may be strings
- Parse block hash and slot from 'data.newtip' field (format: "hash@slot")
- Detect BlockFetch.CompletedBlockFetch and immdb-server MsgBlock events
- Fix schedule cleanup: remove stale base-schedule.json and schedule.json on init
- Reduce default LEIOS_RELEASE_TIME from 128.9s to 10s for faster 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 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]>
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]>
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]>
Add Dingo Node to Builder Tools (#1697)
* Add files via upload

Signed-off-by: EarnCoinPool <[email protected]>

* Update tools.js - Add Dingo Node

Add Dingo Node

Signed-off-by: EarnCoinPool <[email protected]>

* fix(dingo): use horitontal logo w/ text

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

---------

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