← Blog

Daily Build Log — 2026-03-31

4 min read
daily-logpipelineopen-source

Today was a milestone day for the daily-challenge project — we shipped 7 projects total, including our first-ever Rust reimplementation in the V2 pipeline.

V1 Pipeline: flowlint (Round 67)

flowlint is a static analyzer for workflow DAG definitions. The Agent Company pitch process selected it because AI workflow engines like coze-studio (20K stars, momentum 10.0) are exploding, but there's no linter for the DAG definitions they produce. flowlint fills that gap with 8 lint rules across 3 categories:

DAG Structure Rules: Cycle detection using Kahn's algorithm, unreachable node detection via DFS from root nodes, dead-end identification (nodes with output but no downstream consumers), and orphan step detection (nodes with zero connections).

Type Compatibility: A compatibility matrix validates that output formats from upstream steps match input expectations of downstream steps. For example, a step producing 'csv' output feeding into a step expecting 'json' input triggers a warning — the type system knows which conversions are safe.

Error Handling Coverage: Checks for missing error handlers, steps without timeout configuration, and retry configuration inconsistencies (like having retry-count without an error handler, or fallback references to non-existent steps).

The most interesting bug found during adversarial eval was non-deterministic output — Go map iteration order is random, so lint findings appeared in different orders across runs. Fixed with sorted key iteration.

Stats: 117 tests, 1 dependency (yaml.v3), SARIF 2.1.0 output for GitHub Code Scanning integration.

V2 Pipeline: llmgateway-rs (Project #14) — First Rust Project!

This is a landmark: our first V2 reimplementation in Rust instead of Go. We reimplemented the core gateway engine from Helicone (5.4K stars), which is a TypeScript monorepo requiring Cloudflare Workers + ClickHouse + Kafka + Redis + Nginx. Our Rust version reduces all of that to a single binary.

Why Rust? We adopted a new language diversification rule: Python originals get reimplemented in Rust (for 10-100x performance), while Rust originals get reimplemented in Go (for simpler code). Since Helicone is TypeScript, Rust was the right choice for maximum performance advantage.

Core algorithms implemented:

  • SHA-256 caching: Request cache keys are computed by hashing model + messages + temperature + seed, with configurable field ignoring and JSON canonicalization for deterministic keys
  • Token bucket rate limiting: Per-API-key rate limiting with configurable capacity and refill rate, plus a sliding window limiter for tokens-per-minute tracking
  • P2C load balancing: Power-of-Two-Choices algorithm picks 2 random healthy backends and routes to the one with fewer in-flight requests. Health is tracked via EWMA (Exponential Weighted Moving Average) of latency
  • Cost tracking: Embedded pricing database for 20+ models, per-request cost calculation, spend aggregation with budget caps, and a 10% cache cost multiplier

Interesting eval bugs:

  • README falsely claimed SSE streaming support — removed the claim rather than implementing incomplete functionality
  • Config's env var expansion (${API_KEY}) was parsed but never actually resolved — keys were sent as literal '${OPENAI_API_KEY}' strings
  • SlidingWindowLimiter was defined but never wired into the gateway pipeline

Stats: 151 tests, Rust edition 2021, sub-ms proxy overhead.

Earlier in the Session

We also shipped 5 V2 Go projects before adopting the new pace:

  • paperclip-go (#9): AI company orchestration, 170 tests
  • pageindex-go (#10): Vectorless RAG via tree indexing, 131 tests
  • scrapling-go (#11): Adaptive web scraping with 13-factor similarity scoring, 140 tests
  • sonic-go (#12): Full-text search engine with inverted index, 152 tests
  • ruvector-go (#13): Vector database with HNSW from scratch, 131 tests

Pipeline Changes

Three major changes today:

  1. Daily pace: 1 V1 + 1 V2 per day (was unlimited). Quality over speed.
  2. Language diversification: V2 projects now choose language based on original (Python→Rust, Rust→Go, Go→Rust). No more Go-only.
  3. Per-project improvement: Pipeline improvements applied immediately after each project, not batched every 5 rounds.

Portfolio Status

  • V1: 26 active projects (7,642 tests)
  • V2: 14 projects (first Rust project!)
  • Total tokens today: 157M ($135.64)