Add writing-system migration and regression coverage #26

Closed
opened 2026-09-23 06:00:24 -04:00 by dnorberg · 1 comment
Owner

Build automated acceptance coverage for the complete Milestone 4 data and workstation flow.

Acceptance criteria:

  • Page, Notebook, Desk, Binder, and assembled-book data round-trip deterministically
  • Legacy page-free Descriptive Books remain valid
  • Unknown symbol IDs survive load/save and remain recoverable
  • Desk transcription and Binder assembly reject forged packets and duplicate-output attempts
  • Block breaking, chunk unload, restart, and full-inventory cases preserve all inputs
  • Dedicated-server GameTests pass without client-only classes or optional preview mods
Build automated acceptance coverage for the complete Milestone 4 data and workstation flow. Acceptance criteria: - [x] Page, Notebook, Desk, Binder, and assembled-book data round-trip deterministically - [x] Legacy page-free Descriptive Books remain valid - [x] Unknown symbol IDs survive load/save and remain recoverable - [x] Desk transcription and Binder assembly reject forged packets and duplicate-output attempts - [x] Block breaking, chunk unload, restart, and full-inventory cases preserve all inputs - [x] Dedicated-server GameTests pass without client-only classes or optional preview mods
dnorberg added this to the Milestone 4 — Writing system milestone 2026-09-23 06:00:24 -04:00
dnorberg added the area/writingtype/feature labels 2026-09-23 06:00:24 -04:00
Author
Owner

Milestone 4 regression result (V0.4.0.0, commit 8246640):

  • Page state codecs/items, sparse Notebook contents, 88-tab Desk migration and NBT, Binder title/inputs/pending Age ID, Ink Mixer basin, and assembled-book writing/Age reference round-trip.
  • Existing page-free Descriptive Books retain their Age identity without a writing component; 0.3.7.2 bare-list writing migrates to schema v1 without changing order.
  • Missing symbol IDs survive Page, Notebook, writing codec, and Binder persistence. A missing-symbol Page remains removable but cannot now assemble a new book.
  • Forged Desk/Binder action addresses, stale menus, second viewers, and replayed result requests cannot spend materials twice or emit duplicate output.
  • Break drops and full-inventory rejection preserve inputs. Block-entity NBT reload exercises the same serialization boundary used by chunk unload/world restart; manual older-world smoke testing is still recommended before upgrading a production save.
  • ./gradlew build runGameTestServer --quiet -PwithJei=true built the JAR; a clean dedicated-server rerun passed all 64 required GameTests without Create/Ponder/Immersive Portals.

The oversized disposable GameTest world was automatically removed before that clean rerun.

Milestone 4 regression result (V0.4.0.0, commit 8246640): - Page state codecs/items, sparse Notebook contents, 88-tab Desk migration and NBT, Binder title/inputs/pending Age ID, Ink Mixer basin, and assembled-book writing/Age reference round-trip. - Existing page-free Descriptive Books retain their Age identity without a writing component; 0.3.7.2 bare-list writing migrates to schema v1 without changing order. - Missing symbol IDs survive Page, Notebook, writing codec, and Binder persistence. A missing-symbol Page remains removable but cannot now assemble a new book. - Forged Desk/Binder action addresses, stale menus, second viewers, and replayed result requests cannot spend materials twice or emit duplicate output. - Break drops and full-inventory rejection preserve inputs. Block-entity NBT reload exercises the same serialization boundary used by chunk unload/world restart; manual older-world smoke testing is still recommended before upgrading a production save. - `./gradlew build runGameTestServer --quiet -PwithJei=true` built the JAR; a clean dedicated-server rerun passed all 64 required GameTests without Create/Ponder/Immersive Portals. The oversized disposable GameTest world was automatically removed before that clean rerun.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dnorberg/rivencraft#26