feat(asset-bridge): the 73 bodies action 0 could not see, and the ceiling that makes looking safe (Phase 6)
The catalogue asked every body for action 0 and reported the rest absent. 73 of this client's bodies have no art there and real art deeper — body 820's first drawn action is 23, and it is a horse — so they rendered as text on the bestiary. The catalogue now falls back to the first action that has art, and the key names that action (`body/820/a23`). 1,022 -> 1,095 rows. Walking the action axis is the one thing that can walk off the end of a body's slots, and the slots after a body's band are the NEXT BODY'S. Measured here: one action past the band, 643 of 795 legacy bodies return a fully validated picture and 452 of those are byte-identical to body+1's action 0 (body 1 action 22 is an ettin; body 3's is an imp, both confirmed by rendering them). Phase 0's validator cannot catch that — the record is real — so the ceiling refuses the ADDRESS, in ResolveAnimation where every caller already goes. The ceiling is the index banding, never `Animations.GetAnimLength`: for a body reaching file type 5 as id 34 that function answers 22 while the arithmetic gives 13, and the difference is nine actions of another creature's art. A fetch serves only the key the catalogue chose for that body. `body/820/a0` and `body/400/a2` come back `unsupported` with the chosen action alongside, never by decoding what was asked for. `EXTRACTOR_VERSION` 2 -> 3 (unchanged input, a different answer). Protocol stays 8 — `action` on a manifest/fetch row is additive. Deep frame keys and the bulk-fill switch that §16 planned for this phase were NOT built: the site displays still pictures, and a complete one-direction animation set measures 174,453 frames / 281.5 MB against no consumer (docs §11.2, org lead 2026-09-11). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
This commit is contained in:
@@ -85,8 +85,13 @@ namespace Server.Custom.Bridge
|
||||
/// stock client is 235 new sprites and two of them player-character bodies; and the
|
||||
/// player-body set no longer carries ghost ids. Every client file is byte-identical
|
||||
/// and the answer is different, which is precisely what this number exists to say.
|
||||
///
|
||||
/// **3** — phase 6 (§4.10, §11.2). A body with no art at action 0 is catalogued at
|
||||
/// the first action that has any, and its key names that action. 74 more bodies on a
|
||||
/// stock client, no existing key's bytes changed — but a body that was absent is now
|
||||
/// a row, which is the same "unchanged input, different answer" this number covers.
|
||||
/// </summary>
|
||||
public const int EXTRACTOR_VERSION = 2;
|
||||
public const int EXTRACTOR_VERSION = 3;
|
||||
|
||||
// ── the one slot (§3.2) ──────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
Reference in New Issue
Block a user