03 / what replaced each
Server-owned scoring, moving weights, and the mean
The model never emits the score
The model returns five sub-scores in [0,1], a dominant axis, and one in-character line. That is the whole output schema. The favor delta is computed after the call, on the server, by a pure function:
weighted = Σ clamp01(axisScores[axis]) × dayWeights[axis] // 0..1
favorDelta = round(-28 + 80 × weighted) // −28..+52
Same inputs, same output, every call. favorDelta is not in the model's output schema, so it cannot be argued into a higher one. Scores stay decomposable after the fact: every delta reduces to five clamped numbers and the day's weights, both of which are recorded.
The band satisfies one invariant. A maximum turn is +52, three turns is 156, and the win threshold is 100 — so a perfect run clears it with margin rather than exactly.
The axis weights move daily
A template built to farm an economy-heavy day loses on a wit-heavy one. That is the intent; the measurement is in the next section, as a negative control rather than a claim.
The metric became the mean, with the spread reported
The per-demand win-rate for a fixed representative reply is bimodal. With one authored mid-quality reply per demand, that reply is either clearly winning-quality or clearly losing-quality against its demand. Across thirty demands, about one lands contested — a mid win-rate between 34% and 66%. The rest saturate near 0% or near 100%.
A bimodal distribution has a degenerate median. It jumps between roughly 0% and roughly 100% as the curve threshold moves; it does not slide. An offline sweep of hundreds of candidate curves found zero with a median inside the 55–70% band. It is also unstable run to run: an offline fit predicted a 67% median and a live run of the same curve landed at 83%.
The mean holds still. Applying the chosen curve to two independent live runs gave 61.1% and 63.3%. So the calibration metric changed from median to mean, and the study records the metric that was specified, why it does not work here, and the one that replaced it.