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

80 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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](MILESTONE_7_ACCEPTANCE.md) 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](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. 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](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.