feat(doctor): the one host prerequisite the Asset Bridge added (Asset Bridge cutover, 4 of 5) #26
Reference in New Issue
Block a user
No description provided.
Delete Branch "edge"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Step 4 of 5 of the Asset Bridge
edge → maincutover (docs/link/v8.md§16 row 9b).This repo was not in the 9b row, and had to be
The plan named four repos for the cutover —
link,servuo-plugins,module-uo,website.installer'sedgecarries phase 9a'sdoctorcheck (#25), anddocs'SHARD_PREREQS.mdonmainalready says that check exists — it has said so since phase 1, before anything built it.Leaving this repo out of the cutover leaves an operator-facing doc on
maindescribing a check thatis not in any released binary. Org lead's call, 2026-09-14: five repos.
What the check is
ServUO targets
net48, so a Linux shard host runs it under Mono, and Mono'sSystem.Drawingis athin layer over libgdiplus — which §4.2 of the Asset Bridge design puts squarely in the decode
path. Without it a Linux host cannot read a sprite at all.
a Windows host has genuinely nothing to check, and a checklist that pads itself with
non-applicable rows on three quarters of its hosts teaches operators to skim it.
⚠, not a✗. Names and the spawn atlas have no pixels in them, so a host withoutlibgdiplus still gets the cliloc table and the whole spawn atlas over the bridge; it is the art
families that go dark. The note carries both package manager lines.
ldconfig -pplus the five real install paths across Debian/Ubuntu/Fedora/RHEL and/usr/local.Worth recording alongside it: https://github.com/mono/libgdiplus was archived in March 2025 —
read-only and unmaintained upstream, though distros still package and patch it. That is the
long-term argument for moving off
System.Drawing, and it is why phase 4's UOP animation reader waswritten without it.
Bundle pairing already enforces §15's protocol contract, so nothing else here needed to move.
Verification
cargo fmt --check— cleancargo clippy --all-targets -- -D warnings— cleancargo test— 149 passed, 0 failed (140 + 9)After the merge
Releases are cut from
mainon every push, so this publishes an installer release. That is thepoint of including it: the check only reaches an operator as a released binary.
AI disclosure
Authored with Claude Code (Claude Opus 5). Commits carry the
Co-Authored-Bytrailer.🤖 Generated with Claude Code
https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4