Skip to content

Release 0.3.12: a 0.3.11 game upgrades its patched three onto 0.3.12 - #623

Merged
jonit-dev merged 1 commit into
mainfrom
develop
Nov 7, 2026
Merged

jonit-dev merged 1 commit into
mainfrom
develop

Conversation

@jonit-dev

@jonit-dev jonit-dev commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

What is this PR about?

It fixes the second blocker for the 0.3.12 publish. Games on 0.3.10 or 0.3.11 failed pnpm install when they upgraded onto 0.3.12.

Why does it matter?

Release run 42307165770 got past the release candidate, the tag and the native release. Its upgrade proof then failed at TN_THREE_PATCH_PARTIAL, so nothing was published:

  • EPIC: Strata terrain hardening #483 edited three-patch hunks that 0.3.10 and 0.3.11 already ship, for example hunk 4 of build/three.tsl.js. 11 files changed.
  • PRD-775 had deleted the upgrade patch, which migrates a predecessor patch state.
  • So @threenative/core's postinstall recognized neither the stock text nor its own patched text.

Every user who upgraded would have hit this error.

What changed

  • packages/core/patches/[email protected] maps the exact 0.3.11-patched blobs to the current patched blobs. 0.3.10 shipped the same patch as 0.3.11, so this file covers it too.
  • three-patch-upgrade.spec.ts has a new test: every upgrade target must equal the installed patched bytes. A later patch edit without a regenerated upgrade file now fails in unit tests instead of in the release.
  • packaging.spec.ts now requires the packed tarball to ship the upgrade patch. It used to assert the opposite.

Checks run

  • A real 0.3.11 install from npm, upgraded with the packed core tarball, passed:
    • 0.3.11's patcher produced state f23dc1e….
    • The new patcher upgraded it to b87cf38….
    • A second run reports unchanged.
  • Without the upgrade file, the same state fails at TN_THREE_PATCH_PARTIAL.
  • On stock three 0.187.0, the patcher produced the current patch, and a second run reports unchanged.
  • three-patch-upgrade.spec.ts and packaging.spec.ts pass (23 tests).
  • Root pnpm typecheck passes.
  • Biome reports no errors on the 2 changed specs.

…3.12

Release run 42307165770: the upgrade proof failed at TN_THREE_PATCH_PARTIAL, because #483 edited
existing r187 hunks (hunk 4 of build/three.tsl.js and 10 other files) after 0.3.10 and 0.3.11 shipped
them, and PRD-775 had dropped the prd269 upgrade patch. The upgrade patch maps the exact 0.3.11 blobs
to the current ones; verified on stock three 0.187.0: 0.3.11 state -> current, stock -> current,
second run unchanged. A spec now ties each upgrade target to the installed bytes.
@jonit-dev
jonit-dev merged commit 6a12588 into main Nov 7, 2026
119 checks passed
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