feat(doctor): the one host prerequisite the Asset Bridge added (Phase 9a) #25
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/asset-bridge-p9"
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?
libgdiplus, on Linux hosts only — the installer's share of the Asset Bridge (docs/link/v8.md§15, §17.2; docs#244).ServUO targets
net48, so on Linux it runs under Mono, and Mono'sSystem.Drawingis a thin layer over that library — which sits in the decode path, not merely the encode:Ultima.Framewrites ARGB1555 through aLockBitspointer, so without it the shard cannot read one sprite out of the operator's UO client.§17.2 took all three answers to this rather than one: the prerequisite in
SHARD_PREREQS.md, a namedNO_IMAGINGstatus instead of an error, and adoctorcheck. The first two shipped in phase 1 — andSHARD_PREREQS.mdhas been claiming the third exists ever since. Now it does.Three deliberate properties
System.Drawingwith .NET Framework and has nothing to check, so there is no row rather than a row saying "not applicable" on three quarters of the hosts that run this.⚠, never a✗. Names and the shard's own spawn files have no pixels in them, so a host without the library still runs a useful bridge — anddoctor's exit code, which monitoring reads, must not go red over one absent feature. The shard still reportsNO_IMAGINGfrom inside the process that would do the decoding; this row only moves the discovery from "the bestiary is empty, weeks later" to "the host is missing a package, now".ldconfig -pfirst, paths second. The loader's own cache is the same question Mono asks at runtime, so a distro that puts the file somewhere unusual answers correctly. The path probe is the fallback for a slim container with noldconfig, and a missingldconfigdegrades to it rather than takingdoctordown — the rule every row in that module follows.Tests
The verdict is split from the detection so the mark and the wording are testable on a host that has the library and one that does not. All three tests are
cfg(target_os = "linux")-gated — which is where CI runs, and is the only place the row exists at all.cargo fmt --check,cargo clippy --all-targets -- -D warningsandcargo test(140 passing) are green locally on Windows, where the row and its tests compile out; the row itself is exercised by CI's ubuntu runner.AI disclosure
Written with Claude Code (Claude Opus 5); commits carry the
Co-Authored-Bytrailer.🤖 Generated with Claude Code
https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4