# 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](GAMETESTS.md). 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](MILESTONE_7_COMPATIBILITY_REVIEW.md), [JEI review](MILESTONE_7_JEI_REVIEW.md), [Serene review](MILESTONE_7_SERENE_REVIEW.md), and [Ruins notes](RUINS_COMPATIBILITY.md). The current candidate's broad multiplayer/restart/optional-mod matrix remains unverified until tested.