chore: upgrade to Unity 6000.5.5f1 - #9478
Conversation
Bump the editor and migrate the DCL code that hit APIs removed in 6000.5: - EntityId replaces the obsolete int instance-id APIs. Physics.BakeMesh now takes an EntityId (Utils, BakeColliderMeshes, CollideTerrainSystem), and the collider-bake job array is typed NativeArray<EntityId>. - MetricsRegistry guards its type scan: IsAssignableFrom can force-load a precompiled dependency type that 6000.5's Mono fails to resolve, which would otherwise throw from the static ctor and take request metrics down. Verified compiling and running on 6000.5.2f1 (editor boots, enters play mode, reaches interactive). Vendored/third-party packages (SoftMask, GPUI Pro, AVPro, UniTask, com.unity.localization, FileBrowserPro, renderfeatures) also need 6000.5 API fixes; those live outside this repo and are tracked separately.
6000.5.3 escalated the InstanceID deprecations to hard errors and moved UnityEngine.XR types behind the XR module, which broke every third-party package. Changes on top of the 6000.5.2f1 migration: - ProjectVersion 6000.5.4f1; add com.unity.modules.xr (XR types are no longer reachable without it). - Point vendored packages (AVPro, GPUI Pro, RenderFeatures, FileBrowserPro) at unity-explorer-packages#fix/unity-6000.5.4-api-compat, which migrates them to the EntityId APIs. - Vendor AltTester 2.3.2, SerializeReferenceExtensions and AnimationSequencer on the same branch: no upstream Unity 6000.5 support exists yet. AltTester is now referenced by assembly name instead of the version-specific asmdef GUIDs. - SoftMask 3.5.0 -> 3.6.2 and UniTask lock bump; both fixed 6000.5 compatibility upstream. - Migrate remaining DCL GetInstanceID call sites: Physics.BakeMesh takes EntityId; object identity checks use reference equality. - Editor-migrated settings (PackageManager registry format, SoftMask shader registry, URP global settings, mppm version stamp).
Runtime fixes found by in-editor verification: - unity-shared-dependencies pinned to fix/unity-6000.5-shader-compat: URP 17.5's LitForwardPass.hlsl now self-includes LitInput.hlsl, which collided with DCL_Toon's own input file and broke the avatar toon shader (magenta avatars). Fixed upstream with guard-reuse. - Migrate the two UI Toolkit Inter font assets from static to dynamic atlas population (source .ttf restored): 6000.5's Advanced Text Generator cannot use static font assets, which blanked all UI Toolkit text. Baked atlases retained as the pre-populated starting set. - Point DebugUtilitiesStyle.uss at the real Inter Regular font asset; its previous reference targeted a theme asset that no longer exists. Audit cleanup (multi-agent review of the upgrade diff): - unity-explorer-packages branch rebuilt to vendor the previously pinned AltTester 2.3.0 / SerializeReferenceExtensions 1.3.1 / AnimationSequencer 0.5.4 (no silent version bumps) and to keep AltTester's int-based wire protocol on legacy instance-id values. - Revert the test-only localization table that the Localization 1.5.12 sync auto-added to the shipped addressables group. - Commit the deterministic 6000.5 migration artifacts (VFXManager version stamp, PhysicsCoreProjectSettings2D, ForwardRenderer hide flags, stopwatch meta normalization) so checkouts stay clean.
The Asian fallback fonts (NotoSans SC/JP/KR) load asynchronously via
addressables in ChatPlugin. Any text generated before that load lands —
e.g. chat channel names with CJK characters during boot — resolved the
missing glyphs to spaces ('character \u6587 was not found in the
Inter-Regular SDF font asset or any potential fallbacks') and never
regenerated. Force active TMP texts to rebuild their meshes against the
completed fallback chain, so text created during the loading window
self-heals instead of staying blank.
The CJK fallback fonts were loaded fire-and-forget while the rest of chat setup raced ahead, so channel names and history rendered before the load landed resolved missing glyphs to spaces and logged 'character \u6587 was not found in the Inter-Regular SDF font asset or any potential fallbacks'. Await the load inside ChatPlugin.InitializeAsync so the fallback chain is complete before any chat text generates its mesh; the failure path is unchanged (fonts stay optional, chat init cannot be blocked by a load error). The live-text refresh remains as a safety net for non-chat text rendered during boot.
ContextualImage on the Controls GameObject loads the same sprite (guid 4974685691c1) through its AssetReference on enable; the Image component also serialized it directly, hard-linking it into memory and tripping the '[UI] Image must not have a sprite' error on every ControlsPanelView preallocation. Clear the serialized sprite so only the contextual load provides it.
The auto-translate indicator (文A / あA) and the language dropdown's 中文 are CJK glyphs serialized directly in UI prefabs and settings, so they render at boot — before the addressable CJK fallback fonts can load — and TMP replaced them with spaces while logging 'character 文 was not found' warnings. Add UIDesignGlyphs SDF: a 256x256 static font asset holding exactly those three glyphs (baked from NotoSansSC-SemiBold, source-font reference stripped so the 8.5MB OTF is not a build dependency), wired into Inter-Regular SDF's fallback table. Boot-time text now resolves the glyphs immediately; the runtime-loaded NotoSans fallbacks continue to cover arbitrary user content. Also re-pins unity-explorer-packages to 1293099, which drops seven Ocean material resaves (editor serialization churn) from the branch. Verified: full boot to the authentication screen logs zero missing-glyph warnings (previously eight).
Removes the 'The referenced script (Unknown) on this Behaviour is missing!' warning logged on every boot. The six dead components were corpses of deleted scripts, confirmed via git history: - DestinationMarker.prefab: pre-repo script, no surviving reference - FavoriteMarkerObject.prefab: navmap-era script dropped in the map discoverability refactor (#2734) - VoiceChatMicrophoneAudioSource.prefab: leftover from a local getFps prototype (hand-crafted guid a1b2c3d4...) - VoiceChatPlaybackAudioSource.prefab (x2): scripts removed in the communities voice chat audio-quality fix (#5402) - RoomIndicator.prefab: reference from the reverted UI Toolkit nametag refactor (#5657) Stripped with GameObjectUtility.RemoveMonoBehavioursWithMissingScript; a project-wide scan of every m_Script guid in Main.unity and all prefabs now resolves cleanly.
…ixes unity-explorer-packages 6bc4241: version-guard the AdvancedDropdownItem childList accessor (6000.5-only API) so the vendored packages compile on the 6000.4 line. unity-shared-dependencies a1a8ecc: inline the parameterless IsSurfaceTypeTransparent() under URP's own include guard instead of including Shaders/Utils/SurfaceType.hlsl, which 6000.4's URP does not ship. Verified: current dev (6000.4.0f1) with both fix branches compiles with zero errors, so the dependency branches can merge ahead of this PR.
…block The property is float4 everywhere (cbuffer, sampled cache, access macro) but the UNITY_DOTS_INSTANCED_PROP declaration said float. Unity 6000.4's untyped metadata symbols tolerated the mismatch; 6000.5 encodes the type into the generated metadata name, so the player-variant compile fails with 'undeclared identifier unity_DOTSInstancingF16_Metadata_TerrainBounds' (surfaces only in player builds — editor variants never hit it).
io.sentry.unity 4.0.0's repackaged System.Memory/System.Text.Json shims
crash Unity 6000.5's IL2CPP Span-intrinsic remapper ('Sequence contains
no matching element' in IntrinsicRemap.SpanGetItemArguments), failing
every player build with 9 conversion errors. 4.7.0 converts cleanly.
unity-shared-dependencies pinned to de4cce8: DOTS-instancing variant
fixes (legacy FROM_MACRO accessors, direct unity_ObjectToWorld uses,
missing instance-id transfer in the toon outline) that only surface in
player builds.
Verified: full macOS IL2CPP player build succeeds with zero script,
shader and IL2CPP errors; both dependency branches also compile clean
on 6000.4.0f1 dev for sequential landing.
Squashed the shader-compat branch to a single comment-free commit (5261933); no functional change from de4cce8.
|
Slack notification sent to #explorer-ext-contributions for external review. |
|
Test results not found — the test run likely crashed or timed out before producing results; check the |
This comment has been minimized.
This comment has been minimized.
|
Lint did not finish ( |
This comment has been minimized.
This comment has been minimized.
Bump the editor to 6000.5.5f1 (d16e074b49fd) and take the OSS packages from upstream instead of vendored copies: - com.mackysoft.serializereference-extensions moves to upstream 1.7.0 from OpenUPM (Unity-6-clean). Batch builds must pass -accept-apiupdate so the API updater rewrites its one obsolete AdvancedDropdownItem use. - com.brunomikoski.animationsequencer is dropped: referenced by no code, asmdef, prefab or scene. - com.alttester.sdk pins unity-explorer-packages#vendor/alttester-2.3.0-entityid, a single-commit branch holding upstream 2.3.2 plus the EntityId migration, reproducible from the upstream tarball via its revendor tool. Registry AltTester cannot compile on any 6000.5.x (78x CS0619 GetInstanceID obsolete-as-error survive -accept-apiupdate) and upstream has no EntityId release yet. - The remaining vendored packages (AVPro, GPUInstancerPro, RenderFeatures, FileBrowserPro) re-pin to the rebuilt fix/unity-6000.5.4-api-compat head, which now carries only their EntityId patches. Verified on both platforms at 6000.5.5f1: player builds green on Windows (D3D12) and macOS (Metal), 24k editmode tests pass, and a --alttester run initialises AltRunner with zero missing-script errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
890dd92 to
b43443d
Compare
|
Claude finished @eordano's task in 4m 56s —— View job Dependency security review — re-run on push (
|
| Change | Before (last review's HEAD) | Now | Effect |
|---|---|---|---|
com.alttester.sdk |
…/AltTester#fix/unity-6000.5.4-api-compat (6bc4241c) |
…/AltTester#vendor/alttester-2.3.0-entityid (b6a3925c) |
✅ purpose-named standing branch instead of a throwaway fix branch |
com.brunomikoski.animationsequencer |
vendored on #fix/unity-6000.5.4-api-compat |
removed entirely | ✅ one fewer vendored tree |
com.mackysoft.serializereference-extensions |
vendored on #fix/unity-6000.5.4-api-compat |
OpenUPM registry 1.7.0 |
✅ back to an immutably-versioned public package |
| 6 packages (avpro, gpui-pro ×2, gpui-assets, filebrowserpro, renderfeatures) | locked 6bc4241c |
locked 72f99c52 |
↔ same branch, rebuilt head |
| Editor | 6000.5.4f1 (d550df8bd089) |
6000.5.5f1 (d16e074b49fd) |
↔ |
No new files of any kind in this commit. Across the whole PR only three files are added — UIDesignGlyphs SDF.asset (+.meta) and PhysicsCoreProjectSettings2D.asset. No .dll / .so / .dylib / .bundle / .exe / .jar / .aar added anywhere.
2. Summary table (whole PR, e900164f9..HEAD)
| Dependency / file | Version → | Source | Type | Scope | Risk | Confidence |
|---|---|---|---|---|---|---|
com.alttester.sdk |
2.3.0 registry → git#vendor/alttester-2.3.0-entityid (b6a3925c) |
private git (decentraland, SSH) | source | runtime, define-gated | MEDIUM | HIGH (gating) / LOW (patch contents) |
com.renderheads.avpro.video-ultra |
unpinned → #fix/unity-6000.5.4-api-compat (72f99c52) |
private git | source + native | runtime | MEDIUM | HIGH |
com.gurbu.gpui-pro / .terrain / com.dcl.gpui-assets |
unpinned → #fix/unity-6000.5.4-api-compat (72f99c52) |
private git | source | runtime | MEDIUM | HIGH |
com.decentraland.filebrowserpro |
unpinned → #fix/unity-6000.5.4-api-compat (72f99c52) |
private git | source | runtime | MEDIUM | HIGH |
decentraland.renderfeatures |
unpinned → #fix/unity-6000.5.4-api-compat (72f99c52) |
private git | source | runtime | MEDIUM | HIGH |
com.decentraland.unity-shared-dependencies |
unpinned → #fix/unity-6000.5-shader-compat (52619333) |
private git | source | runtime | MEDIUM | HIGH |
com.cysharp.unitask |
73d86259 → ceac8d69 (still unpinned) |
github.com/Cysharp | source | runtime | MEDIUM | HIGH |
decentraland.grassshader |
c35c10aa → 53f8551a (still unpinned) |
private git | source | runtime | MEDIUM | HIGH |
superscrollview |
8e1478ec → 53f8551a (still unpinned) |
private git | source | runtime | MEDIUM | HIGH |
com.mackysoft.serializereference-extensions |
1.3.1 → 1.7.0 |
OpenUPM | source | editor tooling | MEDIUM | LOW (no registry data) |
com.brunomikoski.animationsequencer |
0.5.4 → removed |
— | — | — | LOW (improvement) | HIGH |
io.sentry.unity |
#4.0.0 → #4.7.0 (2768f823) |
getsentry/unity, tag + hash-locked | source + native | runtime | LOW | HIGH |
com.coffee.softmask-for-ugui |
#3.5.0 → #3.6.2 (5a568c41) |
mob-sakai, tag + hash-locked | source | runtime | LOW | HIGH |
com.unity.services.core |
1.16.0 → 1.18.0 (pulls newtonsoft-json 3.2.1→3.2.2) |
packages.unity.com | source | runtime | LOW | HIGH |
Unity 1st-party (URP/VFX/shadergraph/core 17.4→17.5, collections 6.4→6.5, ugui 2.0→2.5, test-framework 1.6→1.7, test-framework.performance 3.2→3.5, ext.nunit 2.0.5→2.1.0, editorcoroutines 1.0.1→1.1.0, burst 1.8.28→1.8.29, cinemachine 2.10.6→2.10.7, localization 1.5.8→1.5.12, timeline 1.8.11→1.8.12, memoryprofiler, profile-analyzer 1.3.2→1.4.0, multiplayer.playmode) |
various | packages.unity.com / builtin |
source | mixed | LOW | HIGH |
com.unity.mathematics 1.3.3→1.4.0 |
registry → builtin |
Unity builtin | source | runtime | LOW (improvement) | HIGH |
com.unity.modules.vr removed; com.unity.modules.xr promoted to direct; new transitive com.unity.modules.physicscore2d |
— | builtin | — | runtime | LOW | HIGH |
UIDesignGlyphs SDF.asset (+.meta) |
new | in-repo bake | TMP asset w/ embedded SDF atlas | runtime | LOW | HIGH |
PhysicsCoreProjectSettings2D.asset |
new | Unity 6000.5 builtin | settings | runtime | LOW | HIGH |
3. MEDIUM findings — status after this push
M1 — Eight dependencies still on mutable branch refs (unchanged)
[PR] Every git pin added by this PR is still a branch name, not a SHA:
com.alttester.sdk #vendor/alttester-2.3.0-entityid → b6a3925c1f477231b25fcbc010be49dde4507028
com.renderheads.avpro.video-ultra #fix/unity-6000.5.4-api-compat → 72f99c525969d006faf15b0b55569e1a5e6458d9
com.gurbu.gpui-pro #fix/unity-6000.5.4-api-compat → 72f99c52…
com.gurbu.gpui-pro.terrain #fix/unity-6000.5.4-api-compat → 72f99c52…
com.dcl.gpui-assets #fix/unity-6000.5.4-api-compat → 72f99c52…
com.decentraland.filebrowserpro #fix/unity-6000.5.4-api-compat → 72f99c52…
decentraland.renderfeatures #fix/unity-6000.5.4-api-compat → 72f99c52…
com.decentraland.unity-shared-dependencies #fix/unity-6000.5-shader-compat → 52619333d46173c4f8258fe25c7ca1cec1bfa2cc
[Inference] packages-lock.json does hold the resolved SHAs and UPM honours them while the manifest string is unchanged, so day-to-day this behaves as pinned. The residual exposure:
- Any lockfile regeneration (dropped on a merge conflict, an Editor Resolve/Update, a clean CI bootstrap without the lock) silently takes whatever the branch head is at that moment. For code shipping in a desktop client, a SHA pin closes that window outright.
fix/unity-6000.5.4-api-compatis a fix branch by name — when decentraland/unity-explorer-packages#60 lands and it is deleted, six manifest entries stop resolving. It is also named for 6000.5.4 while the project now targets 6000.5.5f1, which will read as stale to the next person.- The
#fix/…→#vendor/…rename for AltTester in this push is exactly the right instinct (a standing name, not a fix name). The same reasoning applies to the other six.
Recommendation: replace each #branch with the 40-char SHA already sitting in the lockfile. Same reachability, no mutability, survives branch deletion.
M2 — AltTester: public registry → private fork; the vendored patch is still not reviewable from this PR (refined)
[PR] com.alttester.sdk goes from 2.3.0 / source: registry / OpenUPM to source: git on a private SSH remote, now at vendor/alttester-2.3.0-entityid (b6a3925c). AltTester is the most privileged dependency in the tree — it embeds a WebSocket/TCP server inside the running client permitting remote object inspection, input injection, and static-method invocation.
Gating re-verified at this HEAD (this part is solid — double-gated):
MainSceneLoader.cs:788-801—InstantiateAltTesterhas a wholly#if ALTTESTERbody, andMainSceneLoader.cs:250only calls it whenAppArgsFlags.ALTTESTER(--alttester) is present.CloudBuild.cs:65-70—AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone)runs whenIS_RELEASE_BUILD == "true".SceneFacade.cs:82,104,148andAlttesterSceneReadinessProbe.cs:1are#if ALTTESTER-guarded throughout.
Residual concerns:
- [PR]
Explorer/Assets/DCL/PluginSystem/DCL.Plugins.asmdef:69-70referencesAltTester.AltTesterUnitySDK.DriverandAltTester.AltTesterUnitySDKwith nodefineConstraints. Whether those assemblies actually drop out of a release player depends ondefineConstraintsinside the vendored package's own asmdefs — [UNKNOWN], the package tree is private and not fetched here. - [Inference, pre-existing — not introduced by this PR]
MainSceneLoader.cs:85declares[SerializeField] private GameObject altTesterPrefaboutside any#if, so the AltTester prefab stays a hard scene reference and is pulled into every player's asset bundle regardless of the define. It is never instantiated without the define and the flag, so this is surface, not an active listener — but it means "stripped from release" is only true of the code path, not necessarily of the payload. Worth one look at a real release player'sManaged/folder and asset manifest to settle both this and the point above. - [UNKNOWN] The PR body cites a "committed 191-line diff" and
tools/revendor-alttester.sh --verify. Re-checked atb43443d3: neither exists in this repo — notools/directory, andfindforrevendor-alttester*returns nothing. Both live in decentraland/unity-explorer-packages#60, so the delta between upstream 2.3.2 and the shipped vendor copy cannot be reviewed from this PR. The claim is specific and plausible; it is simply unverified here. - [Inference] Because the ref is a branch, a force-push to
vendor/alttester-2.3.0-entityidchanges what ships with no diff appearing in this repo.
Recommendation: pin to b6a3925c… (M1); confirm vendor/alttester-2.3.0-entityid is branch-protected against force-push and deletion in the packages repo; have a reviewer sign off on the 191-line patch inside unity-explorer-packages#60 rather than treating this PR as the review point. Optionally add defineConstraints: ["ALTTESTER"] on the DCL side so the reference is provably inert in release.
M3 — Three unpinned deps silently advanced their locked hashes (unchanged)
[PR] These have no #ref at all in manifest.json, yet their lockfile hashes moved in this PR without being mentioned in the description:
| Package | hash before → after |
|---|---|
com.cysharp.unitask |
73d86259ce… → ceac8d6946… |
decentraland.grassshader |
c35c10aabe… → 53f8551aca… |
superscrollview |
8e1478ec9f… → 53f8551aca… |
UniTask is a third-party upstream whose default branch moved — an unreviewed bump of a core runtime dependency riding along inside a Unity-version PR. The other two are decentraland-owned but sit in the same repo where six sibling entries just got explicit refs, so the omission reads as accidental rather than deliberate.
Recommendation: pin all three to the SHAs now in the lockfile, and call out the UniTask bump explicitly in the PR description so it gets its own set of eyes.
M4 — Dead OpenUPM scopes left behind, including a silent AltTester fallback (re-confirmed, with a correction)
[PR] Both files still carry scopes that no longer have a package behind them:
Explorer/Packages/manifest.json:88,90—com.brunomikoski,com.alttester.sdkExplorer/ProjectSettings/PackageManagerSettings.asset:42,44— same two
The AltTester one is the one that matters: if the git entry is ever dropped or fails to resolve, UPM can silently satisfy com.alttester.sdk from the public registry again, quietly undoing the deliberate vendoring decision.
Correction to my previous comment. My earlier
Fix thislink implied thecom.mackysoftscope situation was settled; to be explicit — keepcom.mackysoft. It is now load-bearing again, because this push movedcom.mackysoft.serializereference-extensionsfrom the vendored git tree back to OpenUPM1.7.0. Removing that scope would break resolution. Onlycom.brunomikoskiandcom.alttester.sdkare dead.
M5 — serializereference-extensions 1.3.1 → 1.7.0, still with no registry verification (unchanged)
[PR] Four minor versions on an OpenUPM package. The lockfile shows "dependencies": {}, so no new transitive deps, and it is now a plain immutable registry version rather than the vendored git tree it briefly was — that part is an improvement. It is SerializeReference dropdown tooling, so the capability is proportionate and predominantly editor-side.
[UNKNOWN] Publisher identity, license, publish date, advisories, and whether 1.7.0 added a runtime assembly — none could be checked (network denied, both runs). The PR notes 1.7.0 ships an AdvancedDropdownItem.children usage the API updater rewrites, which implies editor code. Please confirm the license is Apache-2.0-compatible and the publisher is still mackysoft before merge.
4. LOW-risk notes
com.brunomikoski.animationsequencerremoval is clean —grepover all.csand.asmdeffinds zero references. Net reduction in shipped surface. 👍com.unity.mathematicsmovedregistry→builtinin 6000.5 — one fewer external registry fetch. Small improvement.- New transitive
com.unity.modules.physicscore2d(viacom.unity.modules.physics2d), matching the newPhysicsCoreProjectSettings2D.asset. Builtin, consistent, expected. com.unity.services.core1.16.0→1.18.0dragscom.unity.nuget.newtonsoft-json3.2.1→3.2.2— a JSON parser that is in the runtime path, but Unity-hosted and a patch bump. Fine.com.unity.ugui2.0.0→2.5.0newly declaresaudio,physics, andphysics2dmodule deps;com.unity.modules.ainewly declaresjsonserialize. Both are upstream manifest corrections, not new capability.- New TMP font asset
UIDesignGlyphs SDF.assetis YAML with an embedded SDF atlas bitmap (Texture2Dat line 293, one long_typelessdataline at 332). Non-executable pixel data; I have not inspected it byte-for-byte and make no claim beyond its structure. Itsm_SourceFontFileGUID: e942926d8b6dad246920ce7dd79a67d2resolves to the in-repoNotoSansSC-SemiBold.otf— good provenance, though worth double-checking that's the intended source font given the asset is named "UI design glyphs", not Noto. dcl_exit_stopwatch.exe— a shipped native executable inStreamingAssets. Pre-existing; this PR only adds theDefaultImporterblock to its.meta. Flagged only so it isn't mistaken for a new addition.- asmdef GUID → name refs (
DCL.Plugins.asmdef:69-70): functional, but name refs are the weaker form — they don't survive an assembly rename the way GUIDs do. Since the package is now vendored under your control, a stable.metaGUID would be preferable. packages-lock.jsonstill lost its trailing newline (\ No newline at end of file).- Version drift persists:
Explorer/ProjectSettings/VirtualProjectsConfig.jsonstill says6000.5.4f1whileProjectVersion.txtis now6000.5.5f1. Stale leftover from the retarget — cheap to fix while you're here. - URP / SoftMask / Sentry / Unity-module changes all read as ordinary consequences of the editor bump.
m_PreLoadSettingsInBuild: 1+ 6 registered shader variants inUISoftMaskProjectSettings.assetis standard for SoftMask 3.6.x. Droppingcom.unity.modules.vrin favour of directcom.unity.modules.xrslightly reduces shipped surface. - The three C# behaviour changes (
MetricsRegistry.IsAssignableSafe,FallbackFontsProviderawaited init,HomeMarkerControllerGetInstanceID→ reference equality) are unchanged by this push and remain reasonable 6000.5 adaptations with no security relevance.
5. What I could not verify
- All registry metadata —
WebFetch/WebSearchdenied in both review jobs;gh apinot allowlisted. Publisher, license, advisories, and publish dates are unchecked for every package. - The AltTester vendor patch itself — lives in unity-explorer-packages#60; the
--verifytooling is not in this repo. - Contents of the six
#fix/unity-6000.5.4-api-compatpackage trees — private repo, not fetched. - Whether a real release player actually excludes the AltTester assemblies and prefab — the gating code is correct, but
defineConstraintsinside the vendored package and theIS_RELEASE_BUILDpipeline wiring were not exercised.
Verdict
No HIGH-risk item. No opaque native plugin added, no new dynamic or remote code loading, no unknown publisher gaining a privileged capability, and the one genuinely privileged dependency (AltTester) is both define-gated and flag-gated with release-time define removal wired up.
This push moved the branch in the right direction — one vendored package deleted outright, one returned to an immutable public registry version, and AltTester rehomed onto a durable branch name. The remaining concerns are the same two as before: mutable branch pinning (M1/M3) and vendored source that can't be reviewed from here (M2). Both want a human pass before merge.
DEPENDENCY_REVIEW: NEEDS_ATTENTION
No files were changed by this review — findings only, as requested by the review workflow.
· branch chore/unity-6000.5.2f1-upgrade

Retargets the upgrade branch to Unity 6000.5.5f1 (
d16e074b49fd, the latest 6000.5 release) and cleans up how the third-party packages are sourced. All prior fixes on the branch (URP 17.5 shader compat, font-atlas migration, prefab cleanups, Sentry 4.7.0) are unchanged.Package sourcing changes
com.alttester.sdk#fix/unity-6000.5.4-api-compat#vendor/alttester-2.3.0-entityid— a standing pin branch onmain, now at upstream 2.3.2 and reproducible as upstream ⊕ patch (tools/revendor-alttester.sh --verify)com.mackysoft.serializereference-extensionscom.brunomikoski.animationsequencer#fix/unity-6000.5.4-api-compat72f99c525Why AltTester stays vendored: registry 2.3.0/2.3.2 cannot compile on any 6000.5.x —
Object.GetInstanceID()is obsolete-as-error from 6000.5.0 and has no(UnityUpgradable)path, so 78 CS0619 errors survive even-accept-apiupdate(verified on Windows and macOS). Upstream has no EntityId release; the pin branch dies the day they ship one, and its patch is a committed 191-line diff rather than an opaque copy.CI note: batch builds need
-accept-apiupdate— SRE 1.7.0 ships oneAdvancedDropdownItem.childrenusage that the API updater rewrites on first import.Verification (both platforms, 6000.5.5f1)
BuildWindows64Devgreen on Windows 11/RTX (D3D12) andBuildMacUniversalDevgreen on macOS arm64 (Metal) — 0 compile errors, AltTester assemblies present in both players.--alttesterplayer run initialisesAltRunnerwith zero missing-script errors. Worth knowing: upstream regenerates every.metaGUID between releases, so an unpinned 2.3.2 compiles perfectly whileAltTesterPrefab's script references silently go missing — the vendor branch pins the 24 GUIDs the project binds and leaves the package's own asmdef references identical to upstream.Max. Compute Work Group Size is: 0) in a headless batch worker, not a code regression.Depends on decentraland/unity-explorer-packages#60 (lean EntityId compat for the four paid packages) and its
vendor/alttester-2.3.0-entityidbranch. CI for this PR also needs #9493 (the pinned GameCI image tag does not exist upstream, so any editor-version change misses the GHCR cache and cannot pull an image).🤖 Generated with Claude Code