diff --git a/docs/REVIEW_LOG.md b/docs/REVIEW_LOG.md index badf4a4..fb1b4ce 100644 --- a/docs/REVIEW_LOG.md +++ b/docs/REVIEW_LOG.md @@ -6029,6 +6029,14 @@ the narration prints `MAJOR WOUND · disabled` together on the same line — two at once, reading as one. Arms and heads are where they part (4 against 5 for a neighbour), and I had not looked at an arm. +**And the hit table is weighted toward the agreeing case**, which the scenario session +spotted and I verified against `locationsFor`: legs, abdomen and chest take **12 of the 20 +melee results and 15 of 20 ranged**, and those are exactly the four locations where the two +thresholds coincide. So it is not that the invented rule happened to be right about the +common case — narration shows the agreeing case 60 to 75 per cent of the time *by +construction*. Two independent readers checked a false rule against play and play agreed +with them, three times in four. + So the sentence was not a guess. It was a generalisation from the case where two unrelated thresholds agree, checked against the output, and confirmed by it. That is a worse failure than a guess, because it came with evidence. @@ -6043,3 +6051,42 @@ the same claim re-examined — the neighbour of it. The pattern is worth naming: verifying something is mostly the cost of getting to where it lives, and once you are there the next function along is nearly free to read. Both of us have now paid that fare and come back with something we were not looking for. + +## R-271 — the tail, and a 40-round cap that scores a long fight as a draw + +Fourteen guards all average, so none of them can see how long a fight might run. EXPOSURE +publishes a median and a GM reads it as the shape of the encounter. Measured across 6000 +fights per configuration, three seeds, the shared stream: + +| | median | 75th | 90th | 95th | 99th | longest | 15+ rounds | 20+ | 30+ | +|---|---|---|---|---|---|---|---|---|---| +| four-player cut | 11 | 14 | 19 | 22 | 30 | **71** | 24.0% | 8.2% | 1.1% | +| six against six | 14 | 19 | 27 | 32 | 45 | **79** | 45.0% | 24.5% | 7.1% | + +**The six-a-side line is the longer fight, not the cut** — median 14 against 11, and nearly +half of them run past fifteen rounds. More bodies on both sides means more of them fighting +on at reduced skill rather than dropping, which is R-270's correction showing up as a +duration. The cut is shorter because it is decisive, not because it is safer. + +**Length predicts death.** In the cut, 61.6% of fights that reach fifteen rounds are wipes +against 42.0% of shorter ones; in the line, 22.4% against 8.9%. A fight that has not +resolved is not a stalemate, it is a fight the party is losing slowly. + +**The defect: `maxRounds = 40` is the default every guard runs at, and a fight that reaches +it is scored as neither a wipe nor a win.** It stops and reports whoever is standing. That +censors **0.2% of cut fights and 1.87% of the line's** — the line's 99th percentile is a +true 45 rounds, not the 40 the cap reports, and the longest fight in 6000 runs is 79. + +**Measured before proposing anything about it, because the fix is four re-recorded +baselines.** Running first-blood's own measurement at both caps on one stream: the cut's +swing moves 39.8 to 39.9, the line's 14.8 to 15.1. Against a recorded swing noise of 2.1 +that is nothing. **So the cap stays.** It is a real censoring, it is documented here, and +correcting it would churn every baseline in the suite to move a figure by three tenths of a +point. The honest position is not that the cap is right but that it is cheaper than the +cure, and that a later measurement which cares about the tail must pass its own +`maxRounds`. + +**Not guarded, deliberately.** Nothing prints these numbers. A baseline recording figures +no document cites is a maintenance obligation protecting no claim — and this suite has +fourteen guards precisely because each one was built when something started being asserted. +If the tail reaches a page, it gets a guard the same day.