explainx.ai0k
TrendingNewsPathwaysSkills
Pricing
explainx.ai

Upskill in AI — 16 free pathways, live workshops & bootcamps, and 50+ courses from practitioners. Plus the skills, tools, and MCP servers to practice on.

follow us

follow on google

Add explainx.ai as a preferred source

corporate training

support@explainx.ai

get started

Find your pathTake Free Evaluation

community

Join the community

learn

mind: share how you thinkpathways — start freeworkshopsbootcampscoursescompare Explainxcertificationsmock testsexplainx universitycorporate traininglearn skills & mcp

discover

skillsmcp serversexplainx mcptoolsmdx readeragentsllmsdesignsdictionarypeopleagi trackerfelony benchranks

company

aboutvisionmissionteaminstructorsteach on explainxpartnershipscommunityhackathonscareers

content

daily AI newsstate of AI — live resultsblogreleasespromptsgeneratorsresource libraryfor LLMsexplainx.ai kids

solutions

all solutionsdeveloper upskillingmarketing upskillingproduct manager upskillingleadership upskilling

newsletter · weekly

Get AI news, tools, and insights in your inbox.

supportcontactprivacytermsdata rightshow we create contentsubmission guidelines

© 2026 AISOLO Technologies Pvt Ltd

explainx.ai

On this page

  • TL;DR — Linear's published results
  • Why CI became the bottleneck (and why Anthropic said the same thing)
  • 1. Infrastructure and toolchain (free speed before cleverness)
  • 2. Critical-path jobs (seconds that block eight shards)
  • 3. Repeated setup (where "fast tests" still feel slow)
  • 4. Test execution — Vitest sharding and isolate: false
  • The bottlenecks Linear did not fix (HN's fair points)
  • A steal list for your repo this week
  • Related on explainx.ai
← Back to blog

explainx / blog

Linear Reworked CI for Agentic Coding: What Changed and What to Steal

Linear, CI/CD, Agentic Coding, Vitest, GitHub Actions, Developer Productivity

Linear cut PR CI wait despite 4x tests — faster runners, tsgo, Vitest sharding, and gate-job fixes. A builder playbook for the agentic CI crunch.

Sep 22, 2026·8 min read·Yash Thakker
add explainx.ai
go deep
Linear Reworked CI for Agentic Coding: What Changed and What to Steal

When agents speed up coding, CI does not get a memo. On September 21, 2026, Linear engineer Mufeez Amjad published AI coding has made CI a bottleneck, so we reworked ours to keep up — a rare post that names the constraint explainx.ai has been tracking all month: merge velocity outran validation infrastructure.

CTO Tuomas assigned the issue bluntly: CI costs are high — and make CI faster. Linear's answer is not "fewer tests." It is four layers of systems work on a TypeScript / pnpm monorepo, with numbers attached.

The same week, Hacker News sent the post to the front page (~239 points) with a familiar meta-question: if everyone is shipping faster, where are the better products? Linear's article does not answer that — it answers a narrower one that every team with coding agents will hit: how do you keep feedback loops shorter than your agents' output?

TL;DR — Linear's published results

table · 3 cols
MetricBefore / trendAfter (Sep 2026 indexing)
Test suite size~4× growth since Jan 2026Still growing (~2,000 tests/week, agents write most)
PR wait on CI>6 min~5 min (would be ~11 min without changes, per Linear)
Runner time per testBaseline Jan~50% lower (indexed)
tsc (weekly median)tsc baseline−73% after tsgo
API lintType-aware ESLint−68% API lint, −55% full repo (AST-only rules + Oxlint)
Change-detection gate26s median (138s max)8s median (37s max)
pnpm install (API shard)44–73s full workspace16–18s filtered to API package
Per-shard setup110–140s67–73s (~44% down)
Vitest API shards4 → 8Slowest shard 5.25 → 4.33 min (first week)
Batched micro-checks7 jobs × full setup2 jobs, 7 tasks inside → ~87k runner-minutes/month saved (~11.8% of CI)
Weekly digest3.5k readers

Catch up on AI

Curated AI updates on agents, skills, and MCP — delivered to your inbox. Unsubscribe anytime.

Why CI became the bottleneck (and why Anthropic said the same thing)

Linear's framing matches Anthropic's September 14, 2026 CI post almost line-for-line:

  • Agents increase PR throughput.
  • Every PR still runs gates.
  • Wait time + dollars scale with runner starts, checkout, install, and shard count.

Anthropic attacked the problem with test impact analysis (which tests must run for this diff?) after CI job volume grew 25× in six months. Linear attacked it with faster machines, cheaper gates, and smarter sharding on a suite that nearly quadrupled. If you run agents today, you likely need both philosophies: run fewer tests when safe, and make each test minute cheaper when you do run them.

Andrew Ng's Batch 371 letter is the cultural backdrop — fear hype vs. engineering work ahead. Linear's post is the engineering work.

1. Infrastructure and toolchain (free speed before cleverness)

Third-party runners: Linear moved off default GitHub Actions hosts to runners with faster CPUs, better storage, and cache infrastructure. Like-for-like around the switch: ~34% faster jobs on average, with tsc down ~52% on some workloads.

tsgo: Adopting the native TypeScript compiler (tsgo) cut the weekly median tsc check by 73% — enough that typechecking stopped being the bottleneck.

Lint without the type checker: Custom ESLint rules that needed TypeScript type information forced a full type graph before lint — memory-heavy and slow. Linear rewrote rules as AST-only static analysis, then moved toward Oxlint. Result: ~68% faster API lint, ~55% on full-repo lint, with lower memory.

explainx.ai read: This is the same macro story as Rust rewrites in hot paths — push work to faster native tooling, then re-balance the pipeline. If your agents generate TS faster than tsc + type-aware ESLint can digest, you are paying twice: tokens to write code, minutes to prove it compiles.

2. Critical-path jobs (seconds that block eight shards)

Linear runs eight API test shards, but none start until gate jobs finish. Small jobs — path detection, "have these inputs passed before?" — became disproportionately expensive.

Shallower git: Change-detection jobs checked out full trees when they only needed diffs. Capped fetch depth took the slowest gate from ~94s to ~20s; jobs that never needed a tree dropped from ~27s to ~7s. Sparse blobless checkout saved another ~11s on merge-queue events.

Checkout resilience: After moving runners outside GitHub's network, actions/checkout hung on intermittent peering issues — and because checkout is first, the whole run stalled. Linear replaced it with a composite action: retries, GIT_HTTP_LOW_SPEED_* aborts (~30s), and a persistent git mirror on sticky disk.

Merge-queue trim: Cache marker writes sat on the merge critical path even after tests passed. Moving that write to a non-gating job saved ~42s per API PR / merge-queue entry.

Median change-detection: 26s → 8s; p90 31s → 12s; worst case 138s → 37s.

3. Repeated setup (where "fast tests" still feel slow)

Agent-era CI pain is often not the test body — it is runner boot + install + apt + cache restore repeated per shard.

Linear's moves:

  • CI base image with Postgres client and native headers (no 7–8s apt every shard).
  • Filtered pnpm install — API workflow only installs API + deps, not the whole monorepo (44–73s → 16–18s).
  • Dropped node_modules cache when restore (~28s) lost to ~7.5s filtered install.
  • DB setup: schema snapshot + bootstrap instead of replaying full migration history when schema unchanged (~12s → 1–2s per container).
  • Batch seven micro-checks into two jobs with concurrent tasks inside — ~87k runner-minutes/month saved.

Per-shard setup fell from 110–140s to 67–73s, which is what made eight shards affordable: at the old setup cost, eight shards would spend 15–19 minutes on setup alone.

4. Test execution — Vitest sharding and isolate: false

File-based sharding: Vitest balances by file, not by test duration, so a few huge files dominated shard runtime. Linear split large files, went 4 → 8 shards, and saw the critical job ~19% faster and ~19% cheaper in initial benchmarks; slowest shard 5.25 → 4.33 minutes after a week.

Shared module state (biggest win, biggest risk): Default Vitest isolates every file — for Linear that meant rebuilding entity / GraphQL / decorator graphs per file. An opt-in project with isolate: false let safe files share a module registry inside a worker.

Linear credits this with ~17% monthly savings at their volume; slowest shard ~300–379s → ~195s; total API shard time ~32.8 → ~22 minutes per run.

They also call it the highest correctness risk: per-file opt-in comments, explicit teardown, files that need fake timers stay isolated — and because agents write most tests now, they updated agent skills so generated tests follow the same opt-in rules.

HN skepticism applies here: several commenters asked whether 4× tests means 4× value, or mostly agent boilerplate. Linear does not publish defect detection rates — only time and coverage curves. Treat test count as a cost driver, not a quality metric, unless you pair it with test impact analysis or human behavior-driven specs.

The bottlenecks Linear did not fix (HN's fair points)

Linear optimized machine time. The front-page thread kept returning to human and product layers:

table · 2 cols
BottleneckWhy CI speed does not solve it
Product taste / UXAgents compress implementation; what to build still human
Manual / exploratory QA"Does it feel right to customers?" — not in Vitest
Amdahl's lawFaster CI shifts wait to review, deploy, rollback, or merge queue politics
Test meaningMore agent tests ≠ more caught regressions if tests mirror implementation slop

That is not an argument against Linear's work. It is an argument for not stopping at Linear's work. Teams shipping with agents should assume the next constraint is review quality or staging verification, not another shard count — see Claude Tag as CI first responder for how one lab automates interpretation of failures, not just execution.

A steal list for your repo this week

  1. Profile gate jobs — median/p90 duration; anything on the critical path under 10s is worth a postmortem.
  2. Measure install, not just tests — filtered workspace installs beat giant caches when lockfiles churn weekly.
  3. Try tsgo / oxlint on TS monorepos — if typecheck and lint dominate, native tooling beats micro-optimizing YAML.
  4. Shard only after setup is cheap — Linear's eight-shard story fails if each shard pays two minutes of pnpm.
  5. If agents write tests, codify isolation rules in skills — same as security skills for agent harnesses.
  6. Read Anthropic + Linear together — selection vs. speed; you may need both products internally.

Related on explainx.ai

  • Cloudflare Worker Previews: a production-like environment per git branch — the same-week environment-provisioning half of this story
  • Agentic coding is straining CI: Anthropic test impact analysis — the which tests run story at 25× volume
  • Andrew Ng: AI fear vs. engineering fixes (Batch 371) — same week's narrative context
  • Claude Tag as CI/CD first responder — when CI fails faster, triage still matters
  • What is an agent harness? — where to enforce checks before CI when possible
  • GitHub Copilot runtime Rust migration — parallel "make the toolchain native" theme

Primary source: Linear — AI coding has made CI a bottleneck (Mufeez Amjad, September 21, 2026). Discussion: Hacker News thread on the same post (September 2026).


Metrics and percentages above are Linear's published figures unless labeled as explainx.ai interpretation. Linear's stack is TypeScript-centric; your language toolchain may differ. Follow @explainx_ai for updates.

Spotted something out of date? Let us know.
Yash Thakker

Written by

Yash Thakker

Yash is an AI expert with over 300K learners. Join his workshops →

View Yash Thakker in People in AI →

Related posts

Sep 15, 2026

Agentic Coding Is Straining CI: How Anthropic Scaled Test Impact Analysis

Anthropic engineer Sachin Malhotra's September 14, 2026 post on the Claude blog traces how agentic coding moved the SDLC bottleneck from writing code, to reviewing it, to running CI on it — and details three failed patches before a full redesign of the test impact analysis service that decides which tests run on which pull request.

Sep 22, 2026

Cloudflare Worker Previews: A Production-Like Environment Per Git Branch

On September 22, 2026, Cloudflare shipped Worker Previews — a production-like environment for every git branch, created with one wrangler command. Each preview gets its own code, config, URL, Durable Objects and Containers state, and observability, so a PR can be tested in isolation before it ever touches production. explainx.ai breaks down what changed, how it differs from Cloudflare's existing preview tooling, and why it matters most for teams running coding agents.

Sep 18, 2026

GitHub Rewrote Copilot's Runtime to Rust — One Engineer, 832K Lines

GitHub published a detailed account on September 16, 2026 of migrating the runtime behind Copilot CLI, the Copilot app, and the Copilot SDK from TypeScript/Node.js to Rust — 832,378 lines of production code plus 468,689 lines of tests, built primarily by one engineer with Copilot itself handling 61% of the 1.13 million tool calls involved, across 128 merged pull requests in roughly 14.5 weeks.