# Reference patch — 03-rolling-appender

The answer key for how the reference absorbs this change, and the thing that makes
`budget.json` reproducible. **Never shipped to the candidate.**

1. **Change nothing.** `reference/src` is byte-identical before and after. There is no file in
   this directory besides this one, because there is nothing to patch.

Measured: `reference_diff = 0`, so `diff_budget = max(3, 0 + ceil(0/2)) = 3` — the floor.

Both suites are green against the untouched reference: the curveball suite (3 tests) and the
base suite (14 tests, unaffected because nothing changed).

## Why it costs nothing

`Appender.write(String)` was designed to be the *only* thing a destination has to be: something
that receives one finished line and does whatever it likes with it. "Whatever it likes" already
covers "count how many lines I've taken and start a fresh list once I hit the limit" — that is
ordinary state inside one object, no different in kind from a `List<String>::add` test double
that happens to remember a running total.

`Logger` never asked, and still never asks, where a line physically ends up. It calls
`write` once per matching destination per record and moves on; whether that call appends to a
console, a file, three files in sequence, or a linked list of lists in a test is a decision made
entirely on the other side of that one method call. This is the same argument as Seam 2 in
`DECISION_LOG.md`, applied to a different curveball, and it is the reason `Logger.java` has
nothing to say here.

**What this curveball is really testing.** It looks like the easiest of the three, and it is the
most discriminating, because the plausible wrong answers all try to teach `Logger` something it
does not need to know: a `maxLinesPerFile` parameter on `addAppender`, a `RollingPolicy` seam
threaded through the registry, or a special case in `offer` for "destinations that roll." Any of
those would touch a file this curveball should never have to open, and would need undoing the
moment a *second* rolling destination wanted a different capacity from the first.
