docs(benchmarks): record the CG-36 cluster-starvation measurement

The issue blamed the density tiebreak; both real cases lost on maxImportance,
so ranking was left alone. Full before/after table, the one cost (okhttp's
rank-6 file, squeezed out by reservations that were already structurally
over-subscribed), and what ships to keep it measurable.
This commit is contained in:
Colby McHenry
2026-08-06 15:13:35 -05:00
parent eed16447c3
commit 10f1ac601a
3 changed files with 174 additions and 6 deletions
+9 -6
View File
@@ -47,18 +47,21 @@ change at all**.
| **CG-25** | Recognize `Generated by <tool> by running <command>` banners. Precision held by requiring two `by` clauses, so ordinary prose does not match. |
| **CG-28** | Damp declaration-only files that nothing in the index depends on. Does not stack with the generated penalty (`Math.min`), and naming a declaration symbol exempts its file. |
| **CG-33 / CG-35** | Incremental sync converges with a rebuild, plus a regression suite that fails when the fix is disabled. |
| **CG-36** | A later cluster is shrunk into the remainder rather than dropped whole — at selection, and again in the ceiling trim. All 8 starvation flags across the suite clear; +1,012 source chars net. `explore-cluster-starvation-cg36.md`. |
Deterministic across the 6-repo suite: no repo truncates, none loses a file,
okhttp gains one, every repo lands at or under the 25,000 hard ceiling.
## Open
**[CG-36]** — a file's non-first clusters are never shrunk, so a trivial cluster
starves the answer-bearing one. Found as a byproduct of CG-27's measurement and
confirmed firing on the epic tip: `query.py` leaves 81% of its budget unspent,
keeping a score-14 cluster and dropping a score-290 one. Two candidate fix
points — the density tiebreak in selection, and the never-shrink rule — and
density-first must keep working (the `Session.swift` case).
Nothing. CG-36, the last one, shipped 2026-08-06.
Its own measurement is worth carrying forward, because the issue named the wrong
fix point: both real cases (`query.py`, `RealInterceptorChain.kt`) lost on
`maxImportance`, **not** on the density tiebreak the issue suspected. Ranking was
left alone; the never-shrink rule was the lever. Full numbers and the one cost
(okhttp trades its rank-6 file for +7,196 chars in the two that answer the
question) in `explore-cluster-starvation-cg36.md`.
## Closed because measurement contradicted them