Early-stage software. Shurli is experimental and built with AI assistance. It will have bugs. Not recommended for production or safety-critical use. Read the disclaimer.
Engineering Journal

Engineering Journal

This document captures the why behind every significant architecture decision in Shurli. Each entry follows a lightweight ADR (Architecture Decision Record) format: what problem we faced, what options we considered, what we chose, and what trade-offs we accepted.

New developers, contributors, and future-us should be able to read this and understand not just what the code does, but why it’s shaped the way it is.

Reading Guide

  • ADR-0XX: Core architecture decisions made before the batch system
  • ADR-X0Y: Batch-specific decisions (A=reliability, B=code quality, etc.)
  • Each ADR is self-contained - read any entry independently
  • Entries link to source files and commits where relevant

Sections

SectionADRsFocus
Core ArchitectureADR-001 to ADR-008Foundational technology choices
Batch A: ReliabilityADR-A01 to ADR-A04Timeouts, retries, DHT, integration tests
Batch B: Code QualityADR-B01 to ADR-B04Dedup, logging, errors, versioning
Batch C: Self-HealingADR-C01 to ADR-C03Config backup, commit-confirmed, watchdog
Batch D: libp2p FeaturesADR-D01 to ADR-D04AutoNAT, QUIC, Identify, smart dialing
Batch E: New CapabilitiesADR-E01 to ADR-E02Relay health, headless invite/join
Batch F: Daemon ModeADR-F01 to ADR-F04Unix socket, cookie auth, hot-reload
Batch G: Test CoverageADR-G01 to ADR-G04Docker tests, relay binary, injectable exit, audit protocol
Batch H: ObservabilityADR-H01 to ADR-H03Prometheus, nil-safe pattern, auth callback
Pre-Batch IADR-Ia01 to ADR-Ib02Makefile, PAKE invite, DHT namespaces
Batch I: Adaptive Path SelectionADR-I01 to ADR-I06Interface discovery, dial racing, path tracking, network monitoring, STUN, peer relay
Post-I-2: Trust & DeliveryADR-J01 to ADR-J06Peer notify, HMAC, relay admin, SAS verification, reachability, history
Pre-Phase 5 HardeningADR-K01 to ADR-K03Startup race, CGNAT detection, stale addresses, service deployment
Dev ToolingADR-DT01 to ADR-DT02Go doc sync pipeline, relay setup subcommand