docs(link): two of the eight player bodies existed, and 233 nobody asked about (Phase 4) #239

Merged
whitlocktech merged 1 commits from docs/asset-bridge-p4 into main 2026-09-11 10:09:41 +00:00
Member

The docs half of Asset Bridge phase 4. Code: servuo-plugins#31.

Phase 4 built §4.3's UOP animation reader. What it measured first changed what the phase was worth, so the plan is corrected rather than annotated.

New §4.9 — what phase 4 measured

Of the eight player bodies §4.8 assigned this phase, two are in the client at all: gargoyles 666/667, in AnimationFrame3.uop. The six ghost bodies are in no package — and that is established, not merely unfound: the five packages hold 10,724 entries and the build/animationlegacyframe/%06d/%02d.bin scheme claims every one, leaving no room for another naming to hide in.

§4.9 also carries the format as read rather than assumed (AMOU, a per-frame ARGB1555 palette, direction as a slice of the frame table), the nine bodies whose frame count is not a multiple of five and why integer division is the right trade there, the validate-as-we-go bounds with the measurement that says they refuse nothing real, and the live rig.

The corrections

  • §5.2 rewritten. The player-body set is the living pair per race — six ids, not twelve. Ghost ids left it because no client has art for any of them; listing them advertised keys that cannot exist. Still asked of the shard, never hardcoded: only the question changed. And with phase 4 in, all six have art for the first time.
  • §4.3 rewritten against what was measured — including why searching five UOP packages for one body is not the never-sweep rule being broken. A legacy index is addressed by position; a UOP entry by the hash of a name carrying the body id, which the payload then declares again.
  • §11 sizing: the catalogue is 1,022, not 787. The mix is recorded because "add every body" sounds like it changes what a catalogue is, and it does not — the legacy 787 was already 366 equipment bodies.
  • §14: manifest and fetch rows carry source (legacy/uop). Additive, so protocol stays 8; EXTRACTOR_VERSION 1 → 2 is the change consumers actually see.
  • §16 phase 4 marked DONE. §17.9 records the four org-lead decisions: the fallback applies to every body; ghost ids leave the set; the UOP path gets its own PNG encoder; NO_IMAGING stays a flat refusal.
  • §4.8 and §8.1 keep their numbers as the record of what those phases measured, each with a pointer to where the answer landed. A superseded measurement is still the reason the next one was taken.

Two consumer docs repeated the ghost claim as fact

Both said "two thirds of the playable ghost and gargoyle bodies have no art", which was true of the library's answer and is now wrong about the client:

  • website/SPAWN_ATLAS.md — 787 → 1,022, and the claim replaced with "about half the addressable body range".
  • modules/uo/API.md — the same sentence in the import endpoint's description.

  • AI-assisted: written with Claude Code (Claude Opus 5)

🤖 Generated with Claude Code

https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4

The docs half of Asset Bridge phase 4. Code: **servuo-plugins#31**. Phase 4 built §4.3's UOP animation reader. What it measured *first* changed what the phase was worth, so the plan is corrected rather than annotated. ## New §4.9 — what phase 4 measured Of the **eight** player bodies §4.8 assigned this phase, **two** are in the client at all: gargoyles 666/667, in `AnimationFrame3.uop`. The six ghost bodies are in no package — and that is **established, not merely unfound**: the five packages hold 10,724 entries and the `build/animationlegacyframe/%06d/%02d.bin` scheme claims **every one**, leaving no room for another naming to hide in. §4.9 also carries the format as read rather than assumed (`AMOU`, a **per-frame** ARGB1555 palette, direction as a slice of the frame table), the nine bodies whose frame count is not a multiple of five and why integer division is the right trade there, the validate-as-we-go bounds with the measurement that says they refuse nothing real, and the live rig. ## The corrections - **§5.2 rewritten.** The player-body set is the **living pair per race** — six ids, not twelve. Ghost ids left it because no client has art for any of them; listing them advertised keys that cannot exist. Still asked of the shard, never hardcoded: only the question changed. **And with phase 4 in, all six have art for the first time.** - **§4.3 rewritten** against what was measured — including why searching five UOP packages for one body is *not* the never-sweep rule being broken. A legacy index is addressed **by position**; a UOP entry by the **hash of a name carrying the body id**, which the payload then declares again. - **§11 sizing:** the catalogue is **1,022**, not 787. The mix is recorded because "add every body" sounds like it changes what a catalogue *is*, and it does not — the legacy 787 was already 366 equipment bodies. - **§14:** manifest and fetch rows carry `source` (`legacy`/`uop`). Additive, so **protocol stays 8**; `EXTRACTOR_VERSION` 1 → 2 is the change consumers actually see. - **§16** phase 4 marked DONE. **§17.9** records the four org-lead decisions: the fallback applies to every body; ghost ids leave the set; the UOP path gets its own PNG encoder; `NO_IMAGING` stays a flat refusal. - **§4.8 and §8.1 keep their numbers** as the record of what those phases measured, each with a pointer to where the answer landed. A superseded measurement is still the reason the next one was taken. ## Two consumer docs repeated the ghost claim as fact Both said "two thirds of the playable ghost and gargoyle bodies have no art", which was true of the library's answer and is now wrong about the client: - `website/SPAWN_ATLAS.md` — 787 → 1,022, and the claim replaced with "about half the addressable body range". - `modules/uo/API.md` — the same sentence in the import endpoint's description. --- - [x] AI-assisted: written with Claude Code (Claude Opus 5) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
wtclaude added 1 commit 2026-09-11 10:00:19 +00:00
Phase 4 built 4.3's UOP animation reader. What it found first changed what the phase
was worth, so the plan is corrected rather than merely annotated.

  - New 4.9: what phase 4 measured. Of the EIGHT player bodies 4.8 assigned this
    phase, two are in the client at all -- gargoyles 666/667, in AnimationFrame3.uop.
    The six ghost bodies are in no package, and that is established rather than
    unfound: the five packages hold 10,724 entries and the
    build/animationlegacyframe/%06d/%02d.bin scheme claims every one, leaving no room
    for another naming. Also the format as read (AMOU, a per-frame ARGB1555 palette,
    direction as a slice of the frame table), the nine bodies whose frame count is not
    a multiple of five, the validate-as-we-go bounds and the measurement that says
    they refuse nothing real, and the live rig.
  - 5.2 rewritten: the player-body set is the LIVING pair per race, six ids not
    twelve. Ghost ids left it because no client has art for any of them. Still asked
    of the shard, never hardcoded -- only the question changed. And with phase 4 in,
    all six have art for the first time.
  - 4.3 rewritten against what was measured, including why searching five UOP packages
    for one body is NOT the never-sweep rule being broken: a legacy index is addressed
    by position, a UOP entry by the hash of a name carrying the body id, which the
    payload then declares again.
  - 11 sizing: the catalogue is 1,022, not 787. The mix is recorded because "add every
    body" sounds like it changes what a catalogue is, and it does not -- the legacy
    787 was already 366 equipment bodies.
  - 14: manifest and fetch rows carry `source` (legacy/uop). Additive, so protocol
    stays 8; EXTRACTOR_VERSION 1 -> 2 is the change consumers actually see.
  - 16 phase 4 marked DONE; 17.9 records the four org-lead decisions (fallback applies
    to every body; ghost ids leave the set; own PNG encoder; NO_IMAGING stays flat).
  - 4.8 and 8.1 keep their numbers as the record of what those phases measured, with a
    pointer to where the answer landed.

Two consumer docs repeated the ghost claim as fact and are corrected:
website/SPAWN_ATLAS.md (787 -> 1,022, and "two thirds of the playable ghost and
gargoyle bodies have no art" -> about half the addressable body range) and
modules/uo/API.md (same sentence).

Code: servuo-plugins#31.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
whitlocktech merged commit 2590d4cc58 into main 2026-09-11 10:09:41 +00:00
whitlocktech deleted branch docs/asset-bridge-p4 2026-09-11 10:09:42 +00:00
Sign in to join this conversation.
No description provided.