Scoring history

Every version of the scoring rules, what each one changed, and which scores still compare across versions.

A score compares across two versions when its component, and everything it depends on, received no breaking change between them. The comparison of two reports, run statistics, the regression alert, the leaderboard, the community figures and your dashboard all apply this rule: a version that only changed entities leaves memory, disk and single-core comparable.

Each change was measured: both versions of the scoring code were executed on the same corpus of payloads and their results compared, component by component. A change marked declared was read from the code change, because the older code did not expose that value.

Standard scoring

Current version: 8.1.0

Components
What each score is built from. A score stops comparing when it, or anything it depends on, changes.
  • Total score — depends on Single-core, Hardware, Gameplay, Synergy multiplier, Duration multiplier, Stability multiplier, Cross-validation factor, Failed-test penalty, GC multiplier
  • Single-core
  • Hardware — depends on Memory, Disk, Multi-core
  • Memory
  • Disk
  • Multi-core
  • Gameplay — depends on Exploration, Entities, Mechanics
  • Exploration
  • Entities
  • Mechanics
  • Synergy multiplier — depends on Single-core, Hardware, Gameplay
  • Duration multiplier
  • Stability multiplier
  • Cross-validation factor
  • Failed-test penalty
  • GC multiplier (removed in 8.1.0)
What compares with 8.1.0
For each earlier version, the scores whose values compare with a report scored by the current version.
VersionTotal scoreSingle-coreHardwareMemoryDiskMulti-coreGameplayExplorationEntitiesMechanicsSynergy multiplierDuration multiplierStability multiplierCross-validation factorFailed-test penalty
8.0.0—yesyesyesyesyes—yes—yes—yesyesyesyes
7.7.0———————————yesyes—yes
7.6.0———————————yesyes——
7.5.0———————————yesyes——
7.4.0———————————yesyes——
8.1.0current2026-10-14
#383
  • Entitiesscores changemeasured

    Entities is a capacity: entities held at 20 TPS = entity load x 50 ms / effective MSPT (0.6 average + 0.25 p95 + 0.15 p99, floor 50 ms), the load capped at what was presented (3,600), scored 25,000 x (capacity / 36)^(1/3). The stress and phase-consistency factors are gone.

  • Gameplayscores changemeasured

    Follows entities; and its own balance factor compares the weakest gameplay sub-score with a fixed reference (78,000) instead of the strongest one, so improving a sub-score can no longer lower it.

  • Synergy multiplierscores changemeasured

    Follows gameplay.

  • Total scorescores changemeasured

    Follows gameplay and synergy.

  • GC multiplierno effect on scoresmeasured

    The GC multiplier is removed: it only applied to a gc test the plugin never sends, so it was 1 on every report. The column now holds null.

  • Total scoreno effect on scoresdeclared

    Ingestion and recalculation refuse an implausible total (not finite, negative, or above 10,000,000) instead of storing it.

8.0.0in production2026-09-07
#208
  • Memoryscores changemeasured

    Memory latency is read from the new dependency-chain measure (memoryAccessLatencyNs, reference 120 ns), the old reading being the cost of the timer; the memory references are re-anchored on a corrected reference machine; a missing metric takes an unfavourable value instead of an invented one.

  • Diskscores changemeasured

    The random 4K phases are read from the new direct-I/O measures (reference 150 MB/s): the old ones measured the page cache.

  • Hardwarescores changemeasured

    Follows memory and disk.

  • Synergy multiplierscores changemeasured

    Follows hardware.

  • Total scorescores changemeasured

    Follows hardware and synergy.

Revisions without a version bump

Changes made while the version number stayed the same, found by executing the history. A report keeps the formula that was deployed when it was scored: recalculation stamps the current version and never applies an older version's state. Comparisons with other versions use the version's last state, which is exact for a version production only knew in that state.

  • 2026-09-17 · #240 · measured

    Six adjustments: the synergy bonus reads only the weakest of the three categories (so the score follows the hardware); the memory imbalance factor is removed; -1 sentinels are guarded for finiteness; World Save no longer reads diskWriteSpeedMBps; the MSPT p95 is used when the average exceeds the p99. 8.0.0 reached production after this revision. (Total score, Single-core, Hardware, Memory, Multi-core, Gameplay, Exploration, Entities, Mechanics, Synergy multiplier)

  • 2026-09-17 · #240 · declared

    The cross-validation factor, which only measured the spread of TPS between tests, is folded into the constant 0.98 it held on every measured report. (Cross-validation factor)

7.7.0in production2026-08-11
#126
  • Mechanicsscores changemeasured

    Mechanics becomes a confidence-weighted mean: a test whose validity witnesses are degraded weighs less. The TNT difficulty factor follows the charges actually presented.

  • Gameplayscores changemeasured

    Follows mechanics.

  • Synergy multiplierscores changemeasured

    Follows gameplay.

  • Total scorescores changemeasured

    Follows gameplay and synergy.

Revisions without a version bump

Changes made while the version number stayed the same, found by executing the history. A report keeps the formula that was deployed when it was scored: recalculation stamps the current version and never applies an older version's state. Comparisons with other versions use the version's last state, which is exact for a version production only knew in that state.

  • 2026-08-12 · #127 · measured

    A doubtful mechanics test scores at most the mean of the reliable ones (a failed measurement could score above a real one); a load never presented with no work done counts as a failed test; the TNT bonus is bounded by the charges actually primed. (Total score, Gameplay, Mechanics, Synergy multiplier, Failed-test penalty)

7.6.0never in production2026-08-10
#112

This version was also meant to cover the changes made under 7.5.0 on 2026-08-08: they appear there as revisions.

  • Failed-test penaltyscores changemeasured

    A test whose samples were all filtered out is no longer counted as failed when the plugin recomputed it on the unfiltered window (usedUnfilteredFallback).

  • Total scorescores changemeasured

    Follows the failed-test penalty.

7.5.0never in production2026-07-23
fd3ca838
  • Multi-corescores changemeasured

    The multi-core score divides by the CPUs the server can use (systemInfo.availableProcessors), falling back to the test's own cpuCores, then 1.

  • Hardwarescores changemeasured

    Follows multi-core.

  • Synergy multiplierscores changemeasured

    Follows hardware.

  • Total scorescores changemeasured

    Follows hardware and synergy.

Revisions without a version bump

Changes made while the version number stayed the same, found by executing the history. A report keeps the formula that was deployed when it was scored: recalculation stamps the current version and never applies an older version's state. Comparisons with other versions use the version's last state, which is exact for a version production only knew in that state.

  • 2026-08-08 · 654a79a7 · measured

    The sample count is read from the test result first (the plugin publishes it even when it is zero), so a test with no sample is recognised as unmeasured. (Total score, Gameplay, Exploration, Entities, Mechanics, Synergy multiplier)

  • 2026-08-08 · 95aff5b0 · measured

    Protocol 1.2: the plugin's flags are merged into the metrics (villager and hostile counts, phase TPS, growth rate reach the score), and a test is counted as failed on positive proof that it measured nothing (entities never ticked, load absorbed under 5%, zero work done, every sample filtered out, chunk ticking capped). (Total score, Gameplay, Entities, Mechanics, Synergy multiplier, Failed-test penalty)

7.4.0in production2026-02-17
b0ce848c

First version recorded: the reference for the ones that follow.

Revisions without a version bump

Changes made while the version number stayed the same, found by executing the history. A report keeps the formula that was deployed when it was scored: recalculation stamps the current version and never applies an older version's state. Comparisons with other versions use the version's last state, which is exact for a version production only knew in that state.

  • 2026-05-17 · 40f92c05 · measured

    Protocol 1.2 reports only: the metrics, sent as rich objects, are unwrapped to numbers before scoring. Before this, a 1.2 report scored NaN almost everywhere. (Total score, Hardware, Memory, Disk, Multi-core, Gameplay, Exploration, Mechanics, Synergy multiplier, Failed-test penalty)

Stress-limit scoring

Current version: 1.5.0

Components
What each score is built from. A score stops comparing when it, or anything it depends on, changes.
  • Stress-limit total — depends on Mobs limit, Chunks limit, Hoppers limit, TNT limit, Redstone limit, Entities limit, Villagers limit, Degraded-test exclusion
  • Mobs limit
  • Chunks limit
  • Hoppers limit
  • TNT limit
  • Redstone limit
  • Entities limit
  • Villagers limit
  • Degraded-test exclusion
What compares with 1.5.0
For each earlier version, the scores whose values compare with a report scored by the current version.
VersionStress-limit totalMobs limitChunks limitHoppers limitTNT limitRedstone limitEntities limitVillagers limitDegraded-test exclusion
1.4.0—yesyesyes—yesyesyesyes
1.3.0—yesyesyes—yesyesyesyes
1.2.0————————yes
1.1.0—————————
1.0.0—————————
1.5.0currentin production2026-08-11
#125
  • TNT limitscores changemeasured

    TNT re-anchored on a limit the server actually reached once forced chunks tick and the host's TNT cap is raised: reference 400 -> 2,000. Reports scored before cannot be repaired by recalculation.

  • Stress-limit totalscores changemeasured

    Follows TNT.

1.4.0never in production2026-08-10
#112

No change of its own: this version was cut for the limit-bonus change committed under 1.3.0 (see its revisions).

1.3.0never in production2026-08-02
a0c28869

No change of its own: this version was cut for the two changes committed under 1.2.0 the same day (see its revisions).

Revisions without a version bump

Changes made while the version number stayed the same, found by executing the history. A report keeps the formula that was deployed when it was scored: recalculation stamps the current version and never applies an older version's state. Comparisons with other versions use the version's last state, which is exact for a version production only knew in that state.

  • 2026-08-06 · fdc5a241 · measured

    A run whose every test left the geometric mean has no total (null) instead of 0, and no longer ranks F. (Stress-limit total)

  • 2026-08-08 · 95aff5b0 · measured

    The +50% limit bonus is granted only when the plugin says the ceiling was reached: a timeout or an operator stop no longer earns it. (Stress-limit total, Mobs limit, Chunks limit, Hoppers limit, TNT limit, Redstone limit, Entities limit, Villagers limit)

1.2.0never in production2026-07-25
209ff9a4
  • Chunks limitscores changemeasured

    Re-anchored on chunks per second: reference 800 -> 120.

  • TNT limitscores changemeasured

    Re-anchored: reference 200 -> 100.

  • Stress-limit totalscores changemeasured

    Follows chunks and TNT.

Revisions without a version bump

Changes made while the version number stayed the same, found by executing the history. A report keeps the formula that was deployed when it was scored: recalculation stamps the current version and never applies an older version's state. Comparisons with other versions use the version's last state, which is exact for a version production only knew in that state.

  • 2026-08-02 · ad27ca39 · measured

    TNT re-anchored on charges that actually detonated: reference 100 -> 400. (Stress-limit total, TNT limit)

  • 2026-08-02 · 818af649 · measured

    A test whose stable tiers all report a degraded measurement, or whose last stable tier absorbed under 50% of its load, leaves the geometric mean (it is still scored and shown). (Stress-limit total, Degraded-test exclusion)

1.1.0never in production2026-07-24
d86a020d
  • Mobs limitscores changemeasured

    The tier TPS is read under its protocol 1.2 name (avg): before, every test that held a tier scored NaN and fell out of the geometric mean.

  • Chunks limitscores changemeasured

    The tier TPS is read under its protocol 1.2 name (avg): before, every test that held a tier scored NaN and fell out of the geometric mean.

  • Hoppers limitscores changemeasured

    The tier TPS is read under its protocol 1.2 name (avg): before, every test that held a tier scored NaN and fell out of the geometric mean.

  • TNT limitscores changemeasured

    The tier TPS is read under its protocol 1.2 name (avg): before, every test that held a tier scored NaN and fell out of the geometric mean.

  • Redstone limitscores changemeasured

    The tier TPS is read under its protocol 1.2 name (avg): before, every test that held a tier scored NaN and fell out of the geometric mean.

  • Entities limitscores changemeasured

    The tier TPS is read under its protocol 1.2 name (avg): before, every test that held a tier scored NaN and fell out of the geometric mean.

  • Villagers limitscores changemeasured

    The villagers test is scored (reference 1,000).

  • Stress-limit totalscores changemeasured

    Follows every test.

1.0.0in production2026-03-28
2815e2bc

First version recorded: the reference for the ones that follow.