docs(link): the guide an integrator reads stopped at protocol 6 (Phase 9a) #244

Merged
whitlocktech merged 2 commits from docs/asset-bridge-p9 into main 2026-09-14 22:24:53 +00:00
Member

The Asset Bridge's docs pass, and the acceptance walk that shaped it. Phase 9 is three legs now — 9a (this), 9b the edge → main cutover, 9c the site (v8.md §16, §17.13).

INTEGRATION.md had stopped at 6 and contradicted itself

§2 said "the current version is 6" directly above examples already carrying X-UOLink-Version: 8, there was no protocol-7 paragraph, and assets. appeared zero times in 1,306 lines. It is the only document an integrator outside this org has, so it is carried the whole way:

  • §2 corrected, plus a v7 paragraph (the event plane's command half) and a v8 paragraph with the three rules that make this plane unlike the rest of the API — 425 is flow control, the caller drives the paging, an unserveable key is a row and not a failure.
  • A new §5 section documenting the five routes: /assets/sources (the gate you call first, and why hashing: true means "not computed yet" rather than "changed"), /assets/manifest, /assets/fetch (and why you must pass the catalog id back), /assets/bodies, /cliloc.
  • 425 and 422 in the status table; a caveat that the asset plane is a working set rather than a stream, and must never be imported on a timer.

Protocol 7's absence is the Events workstream's debt rather than this one's, but it cannot be stepped over on the way to 8 (§17.13).

The operator-facing half

  • UPGRADE_NOTES.md gains the entry an operator reads when this ships: what changed, the one required action on a Linux host, and the thing that will not announce itself — nothing here happens on a restart, so a patched client keeps serving yesterday's pictures until someone presses a button.
  • installer/INSTALL.md gains libgdiplus as a prerequisite row and the doctor row that checks it (built in installer#…).
  • The index described the workflows this protocol deleted — SPAWN_ATLAS "parsed from its own ServUO tree", CLILOCS "converting one from your client". v8.md now has a row, and v7 is marked as the released protocol.

The walk

Wiped every asset row and every imported sprite, then walked it as a new operator against a real shard, sidecar and client:

Step Result
Creature portraits, cold 1,095 written in 3.18 s, 746/800 creatures matched
Cliloc table, cold 67,496 names in 1.42 s
Item art refresh 313 hued pictures in 1.38 s
Spawn atlas over the bridge 6,455 spawners / 800 creatures in ~2.0 s
Update, no drift "Unchanged" in 0.99 s — one round trip

Bestiary portraits are the right animals by eye; the marketplace shows hued item art with cliloc names.

It found two defects (§17.14, fixed in Module-uo#…) and one cutover hazard: module-uo's edge is behind its main, missing #35, so the walk measured 0 of 6,455 spawners carrying a UniqueId. 9b's row says to sync before merging or the cutover ships a regression.

AI disclosure

Written with Claude Code (Claude Opus 5); commits carry the Co-Authored-By trailer.

🤖 Generated with Claude Code

https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4

The Asset Bridge's docs pass, and the acceptance walk that shaped it. Phase 9 is three legs now — `9a` (this), `9b` the `edge → main` cutover, `9c` the site (`v8.md` §16, §17.13). ## `INTEGRATION.md` had stopped at 6 and contradicted itself §2 said *"the current version is **6**"* directly above examples already carrying `X-UOLink-Version: 8`, there was no protocol-7 paragraph, and `assets.` appeared **zero times in 1,306 lines**. It is the only document an integrator outside this org has, so it is carried the whole way: - §2 corrected, plus a **v7** paragraph (the event plane's command half) and a **v8** paragraph with the three rules that make this plane unlike the rest of the API — 425 is flow control, the caller drives the paging, an unserveable key is a row and not a failure. - A new §5 section documenting the five routes: `/assets/sources` (the gate you call first, and why `hashing: true` means "not computed yet" rather than "changed"), `/assets/manifest`, `/assets/fetch` (and why you must pass the `catalog` id back), `/assets/bodies`, `/cliloc`. - `425` and `422` in the status table; a caveat that the asset plane is a working set rather than a stream, and must never be imported on a timer. Protocol 7's absence is the Events workstream's debt rather than this one's, but it cannot be stepped over on the way to 8 (§17.13). ## The operator-facing half - **`UPGRADE_NOTES.md`** gains the entry an operator reads when this ships: what changed, the one required action on a Linux host, and the thing that will not announce itself — *nothing here happens on a restart*, so a patched client keeps serving yesterday's pictures until someone presses a button. - **`installer/INSTALL.md`** gains `libgdiplus` as a prerequisite row and the `doctor` row that checks it (built in `installer#…`). - **The index** described the workflows this protocol deleted — SPAWN_ATLAS "parsed from its own ServUO tree", CLILOCS "converting one from your client". `v8.md` now has a row, and v7 is marked as the released protocol. ## The walk Wiped every asset row and every imported sprite, then walked it as a new operator against a real shard, sidecar and client: | Step | Result | |---|---| | Creature portraits, cold | **1,095 written in 3.18 s**, 746/800 creatures matched | | Cliloc table, cold | **67,496 names in 1.42 s** | | Item art refresh | **313 hued pictures in 1.38 s** | | Spawn atlas over the bridge | **6,455 spawners / 800 creatures in ~2.0 s** | | Update, no drift | "Unchanged" in **0.99 s** — one round trip | Bestiary portraits are the right animals by eye; the marketplace shows hued item art with cliloc names. It found two defects (§17.14, fixed in `Module-uo#…`) and one **cutover hazard**: `module-uo`'s `edge` is behind its `main`, missing #35, so the walk measured **0 of 6,455** spawners carrying a `UniqueId`. 9b's row says to sync before merging or the cutover ships a regression. ## AI disclosure Written with Claude Code (Claude Opus 5); commits carry the `Co-Authored-By` trailer. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
wtclaude added 1 commit 2026-09-14 18:10:29 +00:00
The Asset Bridge's docs pass, and the acceptance walk that shaped it (v8.md §16
row 9a, §17.13-14). Phase 9 is three legs now: this one, the edge->main cutover,
and the site.

## INTEGRATION.md had stopped at 6 and contradicted itself

Its §2 said "the current version is 6" above examples already carrying
`X-UOLink-Version: 8`, there was no protocol-7 paragraph, and `assets.` appeared
zero times in 1,306 lines. It is the only document an integrator outside this org
has, so it is carried the whole way: the version block corrected, v7 (the event
plane's command half) and v8 (the asset plane) written, a §5 section for the five
routes, 425/422 in the status table, and a caveat that the asset plane is a
working set rather than a stream.

Protocol 7's absence is the Events workstream's debt rather than this one's, but
it cannot be stepped over on the way to 8.

## The operator-facing half

`UPGRADE_NOTES.md` gains the entry an operator reads when this ships: what
changed, the one required action on a Linux host, and the thing that will not
announce itself -- nothing here happens on a restart, so a patched client keeps
serving the old pictures until somebody presses a button.

`installer/INSTALL.md` gains libgdiplus as a prerequisite row and the `doctor`
row that checks it. The index rows for SPAWN_ATLAS and CLILOCS described the
workflows this protocol deleted; v8.md now has an index row of its own, and v7 is
marked as the released protocol.

## The walk

Wiped every asset row and every imported sprite, then walked it as a new
operator: 1,095 portraits in 3.18 s, 67,496 names in 1.42 s, 313 item pictures in
1.38 s, the atlas over the bridge in ~2.0 s, an Update with no drift answered in
0.99 s. Bestiary portraits are the right animals by eye; the marketplace shows
hued item art with cliloc names.

It found two defects (§17.14) and one cutover hazard: module-uo's `edge` is
behind its `main`, missing #35, so the walk measured 0 of 6,455 spawners carrying
a UniqueId. 9b's row says to sync before merging or the cutover ships a
regression.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
wtclaude added 1 commit 2026-09-14 18:15:15 +00:00
Its file table stopped at Phase 6, ten rows for a directory of 38. The nine files
this workstream added are documented there now (servuo-plugins#35).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
whitlocktech merged commit 157e8034b1 into main 2026-09-14 22:24:52 +00:00
whitlocktech deleted branch docs/asset-bridge-p9 2026-09-14 22:24:55 +00:00
Sign in to join this conversation.
No description provided.