Case Studies.

A register of every repository we have onboarded with sm refit, start to finish. Each run publishes its whole result: what got genuinely fixed, what was merely baselined, and every defect the run exposed in slop-mop itself.

Method

Every run follows the same five steps.

  1. Pick a repository cold. No coordination with maintainers and no pre-cleaning. Both runs so far are published; with two of them, that is a description of what happened, not evidence of a policy.
  2. Record the starting board. sm scour before anything is touched, artifact committed.
  3. Run sm refit gate by gate. Fix what can be fixed. Where the result is to accept the existing state instead, record it as a baseline.
  4. Record the finishing board, and separate the fixes from the baselines in a table.
  5. File tool friction against our own repo as a barnacle, and publish the count. See below.

The reason step 5 exists: a green board proves nothing on its own. It can mean the repo was already in good shape, or that we disabled gates and lowered thresholds until the screen turned green — and those look identical from the outside. So every study carries a fixed-versus-baselined table, a suppression count, and the anti-gaming meta-gates left switched on.

Refit · one-time Onboarding, and what these studies document. The goal is a repo with no known issues and a committed baseline, so that afterwards anything flagged is new slop rather than years of accumulated noise.
Maintenance · every watch sm swabsm scoursm buff. The steady state. Not what these studies measure.

The register

Two runs so far, at opposite ends of the size range, most recent first.

Run Scope Start Finish Suppressed Barnacles
rulebook-ai
Aug 2026
8.5k lines
Python
8 gates failing
155 findings
A+
0 findings
9
7 are placeholders
10
Mostly real fixes. Two latent crashes, a CI pipeline dead since GitHub retired upload-artifact@v3, a dependency pin that will not build, and a pytest config that stopped the suite booting. Coverage was the only thing baselined; strict typing was satisfied rather than downgraded. Read the run →
OpenHands
Jun 2026
322k lines
Python, TS
7 gates failing Maintenance
scour clean
61 2
Mostly baselining. Coverage frozen at the existing 49%, two strict-typing gates downgraded, the front-end suite scoped out. A small set of genuine fixes came with it. On a codebase this size that was the practical ceiling. Read the run →

Barnacles · what each run cost us

A barnacle is friction in slop-mop itself — a false positive, a misleading message, a gate that fails for the wrong reason. We file them against our own repo and publish the count per run.

Twelve barnacles across two runs. We have no baseline to compare that against — no other run, and no equivalent figure published by comparable tools — so we are reporting the count, not characterising it as good or bad.

The loop · runs feed back into the tool

Each run is also a test of slop-mop. When the tool gets in the way, that friction is filed against our own repo as a barnacle and fixed there, so the next run uses a tool that no longer has that defect. The table records what that has actually cost so far.

Run Filed Barnacles Still open Churn to fix them
OpenHands 9 Jun 2026 2 1 +714/−30 · 4 files
rulebook-ai 10 Aug 2026 10 0 +4,811/−1,319 · 32 files

The intended effect of that loop is that later runs hit less friction. These two runs do not show it. The count went from 2 in June to 10 in August, and the remediation churn went up by roughly a factor of seven.

We can think of three explanations and cannot currently separate them. The June run stopped at a baseline with a number of gates disabled or scoped out, while the August run drove all 21 gates to green — more gates exercised is more surface on which to hit a defect. The two repositories are different enough that the runs may not be comparable. And the August run was more diligent about filing friction rather than working around it, which would raise the count without the tool being any worse.

That last one matters most: a barnacle count measures friction noticed and recorded, not defects present. It can rise because we looked harder. A third run, or a repeat run against a repository already onboarded, would say more than these two do — until then the trend line is one segment pointing the wrong way, and we are not going to describe that as the process working.

Scope of these numbers. Each finish state is slop-mop's own board, not the repository's CI. The two are separate, and a green slop-mop board says nothing about whether the project's own pipeline passes. Neither run has been merged upstream: both live on branches we control.