6.6 KiB
Milestone 7 regression and migration matrix (issue #83)
This is a working acceptance record for the 0.6.11.0 candidate, not the Milestone 7 completion sign-off. Issue #84 owns the final gate. A passing GameTest is server-side evidence; it is not proof of client rendering, multiplayer timing, or every optional-mod combination.
Automated evidence
| Area | Focused check | Candidate result |
|---|---|---|
| Dedicated server, core linking, book/Age identity, old writing and workstation formats | ./gradlew --offline runGameTestServer; includes CoreGameTests, AgePersistenceGameTests, CrystalPortalGameTests, M7 crafting/advancement checks |
91/91 required GameTests passed on NeoForge 21.1.264; clean shutdown and fresh-world removal. |
| Deterministic structures and terrain | ./gradlew --offline runGameTestServer -ParchivedGameTestSuites=generation; includes library template/spacing/loot/stand checks, cave profiles, vanilla structures, crystal formations, fissures |
129/129 passed after correcting one village test to assert its own contribution rather than a seed-dependent total; fresh-world removal. |
| Sky, glyph numbers, seasons, creative/JEI page feed | ./gradlew --offline runGameTestServer -ParchivedGameTestSuites=environment |
103/103 passed on the current candidate, including issue #94's number-page check; fresh-world removal. |
| Packaged models and data | Milestone7ResourceGameTests.coreModelsResolveBundledTextures in the core suite; parses critical block models, checks their Rivencraft texture references and the library NBT resource |
Passed in the 91-test core run. This checks resource presence, not visual orientation or transparency. |
| Recipe behavior | Milestone7CraftingGameTests and LinkingBookRecipeGameTests through the loaded Recipe Manager |
Passed in the core run; confirms crystal and receptacle quantities, ink bucket return, no Blank Page crafting, and Linking Book ingredients. |
| Portal state/save-load | CrystalPortalGameTests plus AgePersistenceGameTests in the core suite |
Passed; covers activation/release, fallback orientation, horizontal/underside placement, uninterrupted surface, cooldown, retired Age and seed/plan identity. Full server restart remains manual. |
The generation archive initially failed
AgeStructureGameTests.mixedEndAndTaigaVillagesChargeForEndPortion because it
compared the total instability score (1200) with the village-only expectation
(200). A seed-completed sky legitimately supplied an extra sun (+1000). The
production scoring was unchanged; the check now isolates the
forced_biome_villages contribution. The rerun passed 129/129. This is a
repaired assertion, not a hidden feature failure.
Every default GameTest run creates a new world with Minecraft's fixed seed 0 and deletes it after pass or fail. See GameTest guidance. Do not retry a storage-stalled GameTest: stop it, remove that automated scenario, and give its exact steps to the player. No run in this issue has stalled so far. The older full-archive storage stall is historical and is not counted as a current pass.
Old-save boundary (#60)
Issue #60 established a policy of preserving old saves where practical. Tests
cover bare-list OrderedWriting, page-free books, unknown symbol IDs, older
Age definitions with stable defaults, plan-v3/plan-v4 interpretation, and
workstation inventory migration. A bound book's UUID and its Age's registered
dimension remain stable through ordinary load. This does not imply every
pre-public-release world, removed biome mod, missing dimension provider, or
changed datapack can be opened. Back up the full world; the Age registry and
dimension folders are a unit. The creative Link Modifier can intentionally
retire an Age, archiving its data and marking the UUID dead. That is an explicit
administrative boundary, not a silent migration.
Manual matrix for the player
Use a backup or disposable save. Record the exact mod list and jar version. These checks are pending for 0.6.11.0 unless a later note records an actual pass. Historical passes on earlier slices should not be silently promoted to this candidate.
| Scenario | What to verify |
|---|---|
| Full restart | Create a random and an authored Age, a library with a looted chest/page stand, an active portal, and a bound book. Stop and restart the server; UUID, terrain, loot removal, stand contents, portal activation, and return travel must persist. |
| Two players | Cross the same portal at nearly the same time, return independently, and use separate book previews. Cooldowns, destination positions, dropped-book ownership/retrieval, and preview chunk loaders must not interfere. |
| Cross-dimension travel | Compare the same Descriptive Book by hand, stand, and portal. Check footing/platform rules, arrival coordinates and facing, Disarm, Maintain Momentum, Intra Linking, and Return Link mode. |
| Client visuals/audio | Compare book spreads, glyphs, D'ni numbers, page/desk/binder/mixer models, 16×16 crystal buds and translucent elements, portal frame/surface order, skies/eclipses, page turns, and Legacy link sounds. A server test cannot observe pixels or audio. |
| Optional renderers | With neither Create nor Immersive Portals, confirm Legacy fallback. With Create alone, confirm Ponder snapshots and portal guide. With Immersive Portals, confirm live view, Explore exit, sky/sound isolation, portal travel, and fallback while chunks load. With both, AUTO should choose Immersive Portals. |
| Optional world/recipe mods | Test JEI guides/search, TerraBlender with a biome-producing addon (for example Biomes O' Plenty), Serene's six season modes plus Overworld independence/restart, and Ruins template selection/spawn weighting. Repeat startup without optional mods. |
| Migration | Copy a backed-up older development world. Verify books and Notebooks retain their Age/page IDs, a desk and stand keep contents, old Ages load or provide a clear error, and removing a custom symbol retains its unresolved ID. Do not test by modifying the only copy. |
Historical evidence: the player approved NeoForge 21.1.264 on singleplayer and a dedicated server with Immersive Portals; JEI 19.69.0.457 guides, Serene Seasons 10.1.0.9's full per-Age matrix, Ruins generation, and issue #94's numbered celestials each received an in-game pass on their respective earlier release slices. See compatibility review, JEI review, Serene review, and Ruins notes. The current candidate's broad multiplayer/restart/optional-mod matrix remains unverified until tested.