Skip to content

Upgrade four-node consumers to libraries 2.0.0-rc.1 - #29

Merged
SirEdvin merged 2 commits into
multiversionfrom
digital-items/t_b245d69c-upgrade-the-four-node-digital-items-base
Oct 25, 2026
Merged

SirEdvin merged 2 commits into
multiversionfrom
digital-items/t_b245d69c-upgrade-the-four-node-digital-items-base

Conversation

@SirEdvin

Copy link
Copy Markdown
Owner

Summary

  • Upgrade Broccolium, Tweakium and test-only Testiarium to exactly 2.0.0-rc.1 on Minecraft 1.20.1 Fabric/Forge and 1.21.1 Fabric/NeoForge, starting from verified multiversion merge 64720fcd02c6bc14922f0b99b55961255497ddb1.
  • Select published Testiarium testMod/cctTestMod feature capabilities; retain Fabric's detached fixture-file path to avoid overlapping Loom variant-remap outputs and exclude the redundant transitive KFF/FML loader on the NeoForge test classpath.
  • Align CC:Tweaked and Fabric dependencies with the RC graph, expand the version-specific CC metadata correctly, and enforce the qualified RC in jar-in-jar metadata/auditing.
  • Keep production Kotlin/Java, saved-data formats, public Lua/TypeScript contracts, registry/upgrade IDs, config semantics and independent npm versions unchanged. Update the pocket conservation fixture for CC's public native registry lookup; strengthen persistence checks to compare complete item/fluid metadata and optionally preserve/load same-version snapshots across processes.

Local verification (source-identical candidate)

All Gradle commands use the repository wrapper, --no-daemon, explicit deadlines and complete saved logs.

  • TypeScript fixture compilation: exit 0 (14s).
  • Full six-leaf/four-node build plus test-mod classes and publication metadata: exit 0 (16s).
  • Final aggregate native GameTests: exit 0 (85s), fresh 13 cases per node / 52 total, no failures, errors or skips. Includes all nine original Lua fixtures and the three occupied/partial/full/empty conservation regressions.
  • Four native datagen tasks: exit 0 (48s); tracked resources unchanged. Removed only 56 newly generated byte-identical copies of shared assets after reconciliation.
  • Separate JVM write/read phases: complete named/damaged oversized item, tagged/component-bearing fluid, energy, IDs, owners and decay metadata survive copied native saves on every node. Also generated snapshots with the old 1.4.3/1.4.6 libraries at the baseline (test-only fixture overlay) and read them with the RC in separate processes, same Minecraft version only. An intentionally altered expected item quantity fails exactly the required persistence case; the final positive matrix is green.
  • New-empty-cache external wrapper consumer: 34 transitive configurations, 12 fixture feature selections, 90 own-artifact occurrences / 30 unique binaries all matching the independently verified public publisher receipt. Actual DigitalItems configuration graphs and artifact hashes recorded separately (24 compile/runtime configurations).
  • Final four release JARs pass class/resource/loader-metadata/nesting/publication audits, no test-only dependency leakage; all eight nested library JARs equal the qualified public bytes, with exact Forge-family [2.0.0-rc.1] ranges.
  • Documentation tests: 20/20; report-validator test: 1/1; documentation build: exit 0 (13s).

Relevant exact-head hosted build, GameTests and documentation checks must pass before handoff. Existing workflows already cover the literal digital-items/** branch head; no workflow, repository policy or Pages environment changes are included.

Boundaries / next gate

This is the implementation PR for card t_b245d69c; qualification/review/merge belongs to t_f3b1aa6d. Do not merge this PR as part of the implementation card. No 26.1.2 node, release/npm publication, user-world access or cross-Minecraft-version conversion. New interactive client/menu qualification and post-merge CI remain with the qualification gate; persistence evidence here is native saved-data restart coverage, not a real socket/client walkthrough.

@SirEdvin

Copy link
Copy Markdown
Owner Author

rc.1 qualification gate — reviewed head 3ce14136c6e585ccd1b8493e89d8487f1e0efff4

Reviewed the original 12-file upgrade against accepted multiversion base 64720fcd02c6bc14922f0b99b55961255497ddb1. Frozen source hashes, all 179 inherited archive payloads, public resolution, datagen, native save/reload and old-library-to-RC restart receipts reconcile. Production Kotlin/Java, stored-data layout, registry/upgrade IDs, config and typed API are unchanged. Final four release JARs equal the previously qualified public-RC binaries byte-for-byte.

Required node Native cases Real dedicated server + connected client Basic/advanced block, turtle, pocket Both menus: client move + authoritative server quantity Copied full-world restart
Fabric 1.20.1 13/13 PASS PASS PASS PASS
Forge 1.20.1 13/13 PASS PASS PASS PASS
Fabric 1.21.1 13/13 PASS PASS PASS PASS
NeoForge 1.21.1 (forge task path) 13/13 PASS PASS PASS PASS

Qualification commit changes only the retained TypeScript fluid/energy fixture bodies. They now assert mismatched simulated extraction, invalid destination ID, incompatible/full insertion rejection, partial admission, physical + digital conservation, recovery, exhausted IDs and exact rejection errors. A deliberate expected1001/actual1000 calibration fails precisely those two native Lua cases; restored final matrix passes 52/52, no failures/errors/skips. This verifies consumer rejection/rollback-by-no-mutation semantics through the existing storage provider fixtures, not every third-party mod's transaction implementation.

Final local wrapper commands use explicit deadlines, --no-daemon and complete saved logs:

  • TypeScript fixture compile: exit 0, 34s.
  • Aggregate gameTest under xvfb-run -a -PminimalTestEnvironment: exit 0, 103s; fresh 13 cases per node.
  • Full build testModClasses generatePomFileForMavenPublication generateMetadataFileForMavenPublication: exit 0, 11s; packaging audit passes.
  • Runtime uses each actual :<loader>:<minecraft>:runServer / runClient with a 600s deadline and scratch init script. All 12 final native processes exited normally. Full commands/durations/logs, screenshots, copied disposable worlds and receipts are preserved by card t_f3b1aa6d.

Runtime was executed at b7d442d; the final head only changes Lua test bodies, and all production JAR bytes are identical. Existing method-inventory contract tests and item/fluid/energy representations pass. Basic/advanced left/right turtle, back pocket and one-based inventory slots work; old/RC effective slot validation and owner source paths are unchanged.

All 12 literal-head GitHub Actions checks must be successful before the authorized history-preserving merge; downloaded PR run 40221799638 independently passes 52 native cases and its four release JARs equal local bytes.

Boundaries: private-Xvfb/software-rendering correctness, not GPU/performance qualification; same-Minecraft-version disposable worlds only, no user-world access/cross-version conversion. The inherited Tweakium creative_filler inventory-model warning is identical in baseline/RC, with no DigitalItems model warnings. The existing Pages environment still permits only 1.20/1.21; a multiversion Pages deployment is not claimed or authorized to change. Documentation generation/check workflows remain required. No 26.x implementation, default-branch/policy edits, release/npm publication or history rewriting.

@SirEdvin
SirEdvin merged commit 48ca204 into multiversion Oct 25, 2026
12 checks passed
@SirEdvin

Copy link
Copy Markdown
Owner Author

Post-merge qualification verified at 48ca204: GameTests/build run40222441686 and Documentation checks run40222441667 succeed. Downloaded merge reports independently pass52/52 with no failures/errors/skips; four production JARs equal the tested local/head bytes. Separate Pages run40222441663 generates/assembles successfully but deploy fails the unchanged multiversion environment restriction; no live-site update claimed. Gate evidence, copied same-version worlds and registered hosted reports are preserved on t_f3b1aa6d. No26.x work or publication performed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant