CI: split the repo or keep one, and the big wins left

Two questions from Gera: should we pull pieces like the landing page out of the main app, and what are the biggest speed and cost wins still on the table?

Oct 30, 2026 · research only, nothing in CI changed · nothing ships before Fede's 48-hour watch ends (Oct 31, 22:40 CT)

The short answer

Keep one repo, but stop treating every change the same. A change to the marketing site should take a short, cheap path. Today it waits in the same line as a change to Clara, and that's the real problem, not where the code lives.

What we measured, and the four options

What we measured

  • The marketing site (homepage, about, blog, careers, legal and so on) is about 250 of 16,400 files, roughly 1.5% of the app.
  • In the last two weeks, 18 of 2,189 changes touched it, and only 8 touched nothing else.
  • Those pages are static. They take seconds to build. The time goes to the tests, the merge line and Vercel rebuilding the whole app.
  • So a homepage typo fix takes about as long as a big product change: roughly 25–35 minutes from approval to live.

The four options

A. Leave it as it is not recommended

One repo and one path for every change.

Good

  • No work.
  • Nothing new to break.

Bad

  • A one-word homepage edit takes about 30 minutes and pays for the full test run.
  • A marketing change can get stuck behind a broken build it had nothing to do with.

B. One repo, with smart routing recommended first step

CI looks at which files a change touches. Marketing-only? It skips the heavy product tests and goes straight through.

Good

  • Small job: a few rules in CI, done in a day.
  • Nothing moves, so no new places to deploy or log into.
  • Works for more than marketing: docs-only and test-only changes can take short paths too.

Bad

  • Still about 12–15 min, because Vercel rebuilds the whole app to publish one page.
  • The rule has to be strict, or a product change could sneak through the short path.

C. Same repo, but the marketing site becomes its own app good second step if B isn't enough

The code stays in this repo, but the marketing site gets its own Vercel project. It only builds when its own files change.

Good

  • Homepage changes go live in about 2–3 minutes.
  • A broken product build can't block the website, and the other way round.
  • Shared styles and components stay in one place, so nothing gets copied.

Bad

  • Real work, about a week: split the routes, move sign-in links, set up the domain so propflowai.co shows the site and the app stays where it is.
  • One more project to watch and pay for on Vercel.
  • Saves nothing for the other 99.6% of changes.

D. A separate repo for the marketing site not worth it

Move the website into its own repo with its own CI.

Good

  • Fully independent and fast.
  • Fede or a designer could change it without touching the app at all.

Bad

  • The brand styles and components get copied, then slowly drift apart.
  • Two sets of CI, settings and secrets to keep up.
  • Gives the same speed as option C with more upkeep.

Same question for the other pieces Gera mentioned

PiecePull it out?Why
Dev tools, scripts, evalssmart routing insteadThey're about 16% of the merge-line tests, roughly 1 minute. Teach CI to skip them when a change doesn't touch them, which gets the same result without moving anything.
Several merge lines, one per areanot possibleGitHub allows one merge line per branch. Ours already tests 8 groups at once, so it isn't the bottleneck.
Several deploy clustersalready doneWeb, the 6 Lambdas and the renewal worker already deploy separately and at the same time.
CI's own plumbingyes, shrink itThis is the part that's actually overbuilt: 93 workflows, one 7,642-line config file, and about 76,000 lines of tests that only check CI itself. 53 of the last 200 changes were to CI plumbing.

Sources: file counts and change counts from git on origin/main, Oct 16–30; CI timings from about 40 recent deploys and the GitHub Actions job logs.

Where things stand

Fede's work already cut the wait roughly in half. A change used to take about 2 hours from opening to live. Today it's about 73 minutes, and about 21 minutes from approval to live. The items below are what's left.

The eight items, what they add up to, and who we're waiting on

The big wins, in order

#WhatIn plain wordsTime savedMoneyEffort
1Fix one slow check on every PROne safety check ("mutation controls") averages 5 minutes and has taken 35. It's about a fifth of all PR computer time.3–4 min on average, up to 30 on bad dayssavesSmall
2Stop Vercel building the app twiceCI builds the app, then Vercel builds the exact same thing again from scratch before publishing. Publish CI's copy instead.About 5 min off approval-to-livesaves a littleMedium, prove it first
3Split the merge line's slowest jobOne big batch of tests sets the pace for the whole merge line. Run it in 2–3 pieces at once.2–3 minAbout the sameSmall
4Smart routing (tab 1)Marketing, docs and tools changes skip the product tests.15+ min for those changessavesSmall
5Fewer CI runs per changeEach change runs CI about 4 times before it merges (about 1,050 runs a day for 270 merges). PR runs are about 80% of what CI costs.Nonebiggest cost leverMedium
6True emergency laneYour pick: an urgent fix skips the merge line, tests and review, and goes live once it builds. Still capped at 3 a day, needs an incident note, and risky files are blocked. Fede reviews this one first.Emergency fix in 10–12 min (today 30+)NoneMedium
7Something that takes charge when main breaksToday a bot posts a note and names a fixer. Nothing acts. The plan: one place decides "main is broken", merges pause, every agent gets told, and if nobody fixes it in 30 min the bad change is undone automatically.Stops the slow, costly stallsNoneLarger
8Put a real dollar number on CINobody tracks CI spend today. About $75 a day is last week's estimate against the $65 target. A daily number on the factory page lets every change above be judged in dollars.NoneMakes cost visibleSmall, do it first

What that adds up to

  • Items 1–3 together: approval to live drops from about 21 to about 10–12 minutes.
  • Item 4: marketing and docs changes go through in minutes, without paying for the full test run.
  • Item 5: the main way to get CI back under $65 a day.
  • Items 6–7: the safety net, so speed doesn't cost us a broken site.

Waiting on a person

  • Fede: agree to the handoff when his watch ends, and review the emergency lane before it changes.
  • Gera and Fede: should "main is broken" alerts reach Trinity too? And which channel gets CI alerts: Fede's rule says #spending, Gera's says #alerts.

Sources: GitHub PRs and workflows on origin/main; Fede's plan page ci-two-hours-2026-10-29; the 20:54Z checkpoint numbers.

PropFlow Docs