# Milestone 7 acceptance — 1.0.0.2 Milestone 7 is complete for the supported NeoForge 1.21.1 feature set. This is not a claim of total Mystcraft Legacy parity or exhaustive optional-mod certification. The [current implementation](CURRENT_IMPLEMENTATION.md) is the up-to-date behavior summary; the [regression matrix](MILESTONE_7_REGRESSION.md) separates automated evidence from manual scenarios. ## Scope and issue gate The Gitea audit for issue #84 found no other open issues. Required existing #14 (cave terrain), #43 (glyph numbers), #44 (sky), and #60 (old-save policy) were closed. M7 implementation and review issues #75–#83, #85–#90, and later additions #91–#94 were closed before this acceptance. No required issue was silently deferred. | Legacy concept | Rivencraft implementation or deliberate difference | | --- | --- | | Cave terrain and writing | Cave terrain uses its cave/Nether biome set and a modern Y=64-start spawn search. Existing non-cave terrain still supports caves as features. See [Age profiles](AGE_PROFILES.md) and [grammar](WRITING_GRAMMAR.md). | | Libraries | The recognizable Legacy small-library layout and sparse candidate spacing are ported as a structure template with a chest and up to five page-bearing Book Stands. It generates only in Ages and only on suitable surfaces; player-selectable Legacy or Age-only loot is supported. See [Legacy M7 audit](LEGACY_M7_AUDIT.md). | | Crystal portal and Receptacle | Connected Crystal Blocks support vertical and horizontal portals. The held book stays in the Receptacle; removing it removes the surface. Rivencraft validates loaded bounds and block protection, saves owner pointers, and uses book-travel rules. Optional Immersive Portals supplies a live destination view, with an animated fallback while unavailable. | | Handheld Linking/Descriptive Books | The used book remains behind as a rendered book entity at the origin. The exact Legacy entity pickup rule is not copied: modern contact pickup is used. Return Links default to disabled but remain configurable. | | Recipes and discovery | JSON crafting recipes and recipe-book unlocks cover the supported writing/crystal progression. Optional JEI covers the Binder, Writing Desk, and Ink Mixer; a Lectern conversion has no JEI guide. Blank Pages are not craftable. Optional Create/Ponder teaches portal construction. See [JEI review](MILESTONE_7_JEI_REVIEW.md). | | Models, sounds, and advancements | Legacy-sourced assets are credited in [asset provenance](ASSET_PROVENANCE.md); 1.21.1-compatible models and renderer adaptations are documented in the [visual audit](MILESTONE_7_VISUAL_AUDIT.md). Server-owned advancements cover book, writing, Age, and portal progress; the unimplemented Quinn equivalent is explicitly omitted in [advancement notes](MILESTONE_7_ADVANCEMENTS.md). | | Numbers, sky, and extra items | Base-25 number glyphs, celestial modifiers and eclipses, Symbol Portfolios, the OP-only Link Modifier, and optional Ruins pages were follow-up additions. Legacy page semantics are adapted to the modern authoring plan rather than a binary copy of 1.12.2 worldgen. | ## Compatibility and migration NeoForge **21.1.264** is the minimum 21.1 build. A player passed the singleplayer client with the optional stack, then a local dedicated server including Immersive Portals, before the minimum was raised. See the [compatibility decision](MILESTONE_7_COMPATIBILITY_REVIEW.md). JEI 19.69.0.457 and Serene Seasons 10.1.0.9 received their own player checks; Create/Ponder, Immersive Portals, TerraBlender/biome add-ons, Serene Seasons, JEI, and Ruins remain optional. Ecliptic Seasons is deliberately not integrated: its 1.21.1 public API does not support the required live Age registration and per-Age calendar control. Missing optional mods must not prevent the core mod from loading. Known older writing/book, Age-plan, and workstation formats have explicit migration or stable-default handling. An Age registry and its dimension folders must be backed up together. Removed mods, missing custom registry objects, and arbitrary prerelease saves are **not** guaranteed to load. Retiring an Age through the creative Link Modifier archives its data and invalidates its UUID; that intentional destructive operation is not a migration. See the [old-save boundary](MILESTONE_7_REGRESSION.md#old-save-boundary-60). ## Release validation and limits The 0.6.11.0 regression candidate passed `./gradlew --offline build` and fresh-world GameTest runs: core **91/91**, generation **129/129**, and environment **103/103**. The player reported an in-game pass for that candidate. The 1.0.0.1 release candidate additionally allows Number Pages to set Celestial Size. The 1.0.0.2 release makes Binder status diagnostics an OP-only, default-off world setting. Its offline build and core GameTests passed (93/93), and the player reported an in-game pass. The preceding 1.0.0.0 candidate passed core and generation GameTests. Its environment archive stalled in the first 50-test batch, repeatedly printing its field without completing; it was stopped and is **not** counted as a 1.0.0.0–1.0.0.2 pass. The previous 0.6.11.0 run of that same suite passed 103/103. The focused sky, season, and number-page in-game checks in the regression matrix remain useful regression checks, not claimed full-matrix passes. The Gitea release changelog records the tested JAR and verified SHA-256. These results do not prove every two-player race, full restart, migration from every development world, or optional-mod combination. The specific manual matrix remains in [M7 regression](MILESTONE_7_REGRESSION.md); those broader combinations are known validation limits, not claimed passes. Modern chunk and tick budgets, safer portal validation, 1.21.1 world-height and biome APIs, and the dynamic-dimension backend are deliberate deviations from Legacy. A complete Legacy worldgen or link-property port is outside this milestone.