Skip to content

Fix Stonecutter migration build and publication contracts - #16

Merged
SirEdvin merged 2 commits into
multiversionfrom
fix/stonecutter-migration-contracts
Oct 19, 2026
Merged

SirEdvin merged 2 commits into
multiversionfrom
fix/stonecutter-migration-contracts

Conversation

@SirEdvin

@SirEdvin SirEdvin commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Summary

Fix the concrete regressions found while reviewing the Stonecutter migration against the original 1.20 and 1.21 branches.

  • Give version-leaf projects unique internal Gradle identities and restore real Broccolium/Tweakium project dependencies. Public Maven coordinates remain unchanged, and common POM/module metadata once again includes transitive library dependencies.
  • Restore the original, explicit Testiarium core/Fabric/Forge feature capabilities instead of version-only capability names.
  • Publish complete Forge/NeoForge source JARs, including embedded common sources. Enable source publication after Kotlin initialization to avoid two source tasks overwriting the same archive.
  • Preserve stored component patches when encoding fails, propagate the codec error, and retain persistence notifications after successful updates/clears. Add a regression test which failed before the fix.
  • Use Broccolium's own version for Tweakium's Forge dependency minimum, and register library-version resource-expansion inputs so Gradle invalidates stale metadata.
  • Align the canonical VCS state with the existing 1.20.1 shared tree; honor version-local overrides in active Kotlin/Java/resources and aggregate source collections, not only generated inactive sources.
  • Select Tweakium access wideners by target version, remove five byte-identical overrides, and wire Forge/NeoForge access transformers from effective Stonecutter resources with an explicit generation dependency.
  • Restore root-owned formatting checks without rewriting inherited snapshots. Add publication, server GameTest, and active-version round-trip CI gates and document source ownership.

Verification

  • ./gradlew :spotlessApply cleanTest build generatePomFileForMavenPublication generateMetadataFileForMavenPublication ... --no-daemon: successful. All existing JUnit test tasks with sources executed afresh; 1,596 tests, zero failures/errors/skips across 77 XML reports.
  • python3 scripts/check-publications.py: all 24 publications passed dependency, capability, source archive, artifact, loader metadata, and JVM-target checks.
  • Full all-node build and publication checks with 1.21.1 active: successful in a disposable worktree. Root Spotless was excluded only in that worktree because the bundled Git reader does not recognize linked worktrees; formatting passed in the normal checkout and remains enabled in CI.
  • 1.20.1 → 1.21.1 → 1.20.1 switching: no tracked-file content differences after returning.
  • Server, CCT-enabled server, and client GameTest tasks completed successfully for Fabric/Forge 1.20.1 and Fabric/NeoForge 1.21.1. Client runs used Xvfb and an external timeout. XML reports had zero failures/errors; server reports contain the two existing intentional optional-failure fixtures as skipped. CCT-enabled runs exercise harness loading, not a new dedicated computer behavior test.
  • Set Broccolium to 2.0.1 and Tweakium to 2.0.2 for resource processing: Tweakium correctly required Broccolium [2.0.1,); normal versions were restored and the final build rerun.
  • git diff --check: passed.

Deliberately deferred

The broader one-tree conversion, physical Forge/NeoForge branch split, replacement of the existing reflective buildenv configuration, and wholesale conversion of version snapshots to conditional shared sources are not part of this repair. Existing Gradle paths and publication identities are preserved; no gameplay feature redesign or dependency-version upgrade is included.

@SirEdvin
SirEdvin merged commit f6952bf into multiversion Oct 19, 2026
1 check passed
@SirEdvin
SirEdvin deleted the fix/stonecutter-migration-contracts branch October 19, 2026 18:40
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