docs(link): the hue belongs where the files are, and the cache poisons it (Phase 5) #240
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/asset-bridge-p5"
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?
Documents Phase 5. Pairs with servuo-plugins#32 and Module-uo#38.
§11.1 is new — what phase 5 measured
PartialHueTwo of those needed saying out loud.
49,152, not the 81,884 entries
artidx.muldeclares.FileIndexsizes its index table from the length argument it is constructed with (0x10000), not from the idx file. A ceiling read off the file would invent 16,348 ids and answer every one out of an array nobody bounded. The first probe of this phase made exactly that mistake and reported 65,500 — PowerShell returns$nullfor an out-of-range array index rather than throwing, so the over-run counted silently as "empty slots".81 MB reopens the bulk question and the answer is still no. Not on size — on what the transfer buys: 108 MB of base64 through a 512 KB single-slot channel, ~210 round trips, to store 43,433 pictures of which a live shard displays a few hundred.
The two traps
The library's cache poisons a hued sprite.
Art.GetStatichands back the same cachedBitmapandHue.ApplyTorepaints in place, so hueing edits the library's own copy — the plain key comes back hued from then on, and the next hue stacks. §4.5's failure mode reached through a door §4.5 never looked at: phase 0 was auditing records, and this is the library's cache.Files.CacheData = falsefixes it and also stops a game server retaining 74 MB ofBitmap. Copying instead does not solve the retention, andnew Bitmap(src)throws on ARGB1555 anyway.PartialHuedecides the picture, from a file only the shard has. Item 597 is a wooden screen with painted flowers: one mode reddens the flowers, the other the whole screen, and both decode. Hence land takes no hue segment, andh0is not a key.Plus the namespace trap that compiled: unqualified
TileDatabinds to ServUO's ownServer.TileData, because the enclosing namespace beatsusing Ultima;.The rest
staticandlandfamilies,familiesonassets.sources, andassets.fetchbecoming shared plumbing whose family is derived from the keys (§5 made the key the address; a request naming its family too would have two places to be wrong and one of them silent). Additive, so the protocol stays 8 andEXTRACTOR_VERSIONstays 2.linkneeded nothing in phases 4 or 5:assets_callforwards a request body verbatim andrespond_assetsreturns the reply verbatim.modules/uo/SCHEMA.md—uploads/items/, per-rowcatalogstaleness, whyshard_asset_metastays the body catalogue's alone, and why a key with no art writes no row at all.modules/uo/API.md—POST /shard/assets/warm, and theartfield on listings and equipment.🤖 Generated with Claude Code
https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4