the shed // interactive briefing

660 Builds a Day: AI’s CI/CD Bottleneck, and Why Ruby’s YJIT Is Winning Benchmarks Again

Two things happened this month that quietly rewrite the “AI vs. workflow” story: AWS shipped an autonomous release-testing agent because AI coding tools broke the pipeline downstream of them, and Ruby’s 2026 patch cadence + YJIT numbers are making the “just use Python” default look a lot less automatic. Poke at both simulators below.

the-shed — interactive.sh

Pipeline Congestion Simulator

In July 2026, Qovery’s engineering team clocked OpenAI running ~660 builds per engineer per day, with build platform Hermetic processing 500,000 builds/day for OpenAI alone. The bottleneck used to be writing code. Now it’s everything after. Drag the slider to simulate AI-agent adoption, then toggle on the kind of autonomous release agent AWS just expanded (GA’d in April, extended July 7) and watch what changes.

Deploys / day
50
Build queue depth
3
Avg wait to prod
0.4h
Pipeline health
Healthy
·
Release Readiness Review — cross-repo dependency graph built
·
Checked against AWS Well-Architected + org engineering standards
·
Autonomous test plan generated & executed in prod-like env
·
Findings posted to PR — human approval still required
[day 0] baseline pipeline idle. 50 deploys/day, queue nominal.
Numbers are an illustrative model built from reported 2026 figures (Qovery: 50→500 deploys/day migration curve; OpenAI/Hermetic build volume; AWS DevOps Agent GA in April 2026, release-management expansion July 7 2026) — not a live feed of any specific company’s pipeline.

Ruby vs. Python: Pick a Scenario

Python is still the reflexive default. But Ruby 4.0.6 shipped July 14 2026, Ruby 3.3.12 shipped two days later with security-only patches, and YJIT — production-ready since Ruby 3.2 — is now delivering real double-digit latency wins in the field. Click a use case to see how the tradeoff actually shakes out.

Illustrative timings modeled on a 2026 production report of Ruby 3.2.2 + YJIT: “>30% latency reduction across p50/p75/p90/p95, sustained over a month, no code changes.” (Memory overhead — initially +60% — was tuned back down via --yjit-exec-mem-size.)

p50
120ms (no JIT)
p50
82ms (YJIT)
p95
410ms (no JIT)
p95
270ms (YJIT)
# Ruby: a tiny internal DSL, zero extra library code Pipeline.configure do stage :build, timeout: 10.minutes stage :test, retries: 2 stage :deploy, approval: true end
# Python: same config, no native block/DSL syntax — # usually reached for via dict/YAML or a builder API pipeline = Pipeline() pipeline.add_stage(“build”, timeout=600) pipeline.add_stage(“test”, retries=2) pipeline.add_stage(“deploy”, approval=True) pipeline.configure()
This isn’t “Ruby beats Python” — it’s “Ruby beats the assumption that it’s not worth considering.” Python still wins ML/data outright (see the scenario above). The point is per-workload, not absolute.