Files
rivencraft/docs/MILESTONE_7_REGRESSION.md
2026-10-22 22:32:12 -04:00

7.5 KiB
Raw Permalink Blame History

Milestone 7 regression and migration matrix (issue #83)

This is the dated regression record for the 0.6.11.0 candidate. The Milestone 7 acceptance owns the final sign-off. 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 0.6.11.0 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. On the subsequent 1.0.0.0 release candidate, the environment archive stalled during its first 50-test batch and was stopped. The 103/103 result above applies to 0.6.11.0 only, not to 1.0.0.0 or the later 1.0.0.1–1.0.0.2 candidates. For the 1.0.0.2 manual handoff, create an Age with Number Pages immediately before Celestial Angle, Phase, and Size pages; confirm each affects the intended body rather than becoming a stray page. Also verify a fixed-season Age remains fixed across a restart while the Overworld remains independent. Do not rerun the stalled suite merely to obtain a green count.

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.
Binder diagnostics As a non-OP, verify the Binder still creates books but shows no instability/seeded/status messages. As an OP, run /rivencraft binder messages enable, reopen the Binder, and verify those messages appear only for the OP. Disable them and restart the world; the setting should remain disabled.

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.