Options era fixtures contain values the game does not write for chat visibility and graphics
Original description
By MelanX · October 23, 2026Crate: ephervex-options (test fixtures)
Commit: 2b2af1e4f8166d02e4732d19e040a53745d97a51
Behavior
Two lines in the hand-authored fixtures/options/*.txt files disagree with the generated dataset:
options-1.20.1.txt:50andoptions-26.1.txt:51containchatVisibility:"full". The dataset typeschatVisibilityasenum_idwith values[0, 1, 2]in every release, and the 1.12.2 and 1.16.5 fixtures writechatVisibility:0. A name token is not a value the game writes for this key.options-26.1.txt:41containsgraphicsMode:1. Since 1.21.11 the dataset has nographicsMode; it hasgraphicsPreset(quotedenum_token:custom,fabulous,fancy,fast) andimprovedTransparency. The 26.1 fixture has the previous era's key and neither new one.
Expected behavior
Each fixture contains only keys and value shapes the named release writes, as SOURCES.md describes. The 26.1 fixture uses graphicsPreset and improvedTransparency, and every fixture writes chatVisibility as an integer id.
Impact
The 26.1 fixture does not exercise the era it is documented to prove, and a neighboring-era key sits in a file the era test says must not contain one. Nothing fails today because era_fixtures.rs only checks byte-for-byte round trips and rewriting of managed keys, and neither key is managed there.
Locations
fixtures/options/options-1.20.1.txt(50)fixtures/options/options-26.1.txt(41, 51)crates/options/tests/era_fixtures.rs
Validation and limitations
Compared the fixture lines with the committed minecraft-options.json (codecs for chatVisibility, graphicsMode, graphicsPreset, improvedTransparency per release). Not compared with a file written by a real game, and the Rust tests were not run against corrected fixtures. A test that checks every fixture key against the dataset codec for its release would catch this class of drift.