Codebase cleanup · Thu 16 – Fri 17 Oct 2026

Two repos, two days, PRs. Nothing broke.

Day 1 deleted dead code and fixed the tests. Day 2 reorganized the giant files. Every merge was checked live before the next one.

Two days, one running total

Lines removed and added across every merged PR, accumulated over time (UTC).

RemovedAdded
Table view

Where the lines went

Removed vs added by kind of change, one shared scale. Splits move code, so they count on both sides.

RemovedAdded
Table view

What got removed, per repo

Share of deleted lines by kind of change.

Table view

giant files, split

routes identical · tests untouched

Lines in the original file, and the largest single file left afterwards. Squares are the modules each one became.

BeforeBackend afterFrontend after
Table view

Big files, by size band

How many source files fall in each band, before and after. Under 1,000 lines left out.

BeforeFrontend afterBackend after
Table view

The biggest files today

The ten largest source files left in both repos. None crosses the 3,000-line bar.

Table view

The test gate stopped lying

Failures the CI gate let through. The old gate hid most of them. Fixing it exposed 150, then the cleanup drove them to 1.

Known failing testsKnown failing blog test files
Table view

Every merge, both days

Each dot is one merged PR. Size is lines changed. Hover for details.

FrontendBackend
Table view

Slowest tests, faster

Seconds per test file, before → after.

Table view

Bugs the cleanup uncovered

Found because tests started telling the truth, or in review. All fixed and live.

Guards so it stays clean

Checks that now run on every PR.

Frontend typecheckFull-repo lint, 0 errorsVitest in 4 shards Knip: unused files and depsFeature map freshnessBackend lint fails on unused code Backend test gate, honest listsAssistant manifest drift testRead-only live QA run

What's left

  • needs youProxy retry for deploy 502s: one Coolify toggle
  • laterUnused old routes removable after Oct 30
  • laterContent Hub state needs a redesign to shrink further
  • laterVideo API routes and callbacks are interleaved; split needs care
  • on holdOld compose stack, support grant migration