chore(tools): build guilds, and walk houses into IDOC where the site can see it #17

Merged
whitlocktech merged 1 commits from chore/demo-guilds-and-idoc into main 2026-08-25 15:03:37 +00:00
Member

Test scaffolding only — tools/ is never deployed, and deploy.ps1 copies overlay/ alone. This is the shard side of runicgateway.com's phase 9 screenshot rig (its PLAN.md §13).

Guilds

The seeded world has none. The site's guild board was showing two rows of week-old sidecar cache for guilds that had since been deleted, and the website reconciles Teams from that board, so Teams was empty as well. There was nothing to rename: a guild has to exist before it can be called something.

So BridgeDemoDress now builds four, out of characters the seeder already made — a leader, two officers, ordinary members, and an alliance across the first two so the guild page's "rosters, alliances and who's online" is not two-thirds empty. Idempotent by name; a character already in a guild is never moved, so a re-run does not shuffle the world between screenshots.

IDOC

"Houses in danger" reads a column the website's ingest only writes when the plugin reports a house changing decay stage (house.decay). The richer house.update registry frame carries the stage too, but the ingest deliberately leaves that column to the transition feed so the two cannot clobber each other.

The consequence, found here: a house that is already collapsing when the site connects never appears. The sweep baselines it at IDOC and no transition is ever emitted. The shard plainly had two condemned houses and the page said none.

The staging is therefore two passes — prime a few houses at a middle stage at boot, collapse them 150 s later — so the site watches it happen, which is the event the page is built to show. Where too few houses can decay at all (an active owner's house is AutoRefresh, which reports Ageless forever), their owners' accounts are backdated: the same lever the seeder pulled, and the same one a real shard pulls when somebody stops playing.

Also

Bridge Test Shop, left over from a hand-run smoke test, now draws a name like every other vendor.

Two product observations, raised not patched

Both are recorded in the file, next to the code that works around them:

  1. A renamed guild member never reaches the site. BridgeSocial.Signature() folds name, abbreviation, leader, member count and alliance — not member names — and the roster is only re-emitted when the member set changes. Renaming a member leaves the published roster stale indefinitely.
  2. A guild deleted while the shard is offline is a ghost row forever. _last is cleared on reconnect, so the "gone" pass has nothing to compare against and no guild.remove is emitted. That is how the board came to be showing two guilds the world no longer had.

Neither is fixed here — the fix belongs in the plugin/ingest, not in a screenshot rig.

Verification

Against the local ServUO tree with a real sidecar and the website: four guilds with dressed rosters and the alliance reached /uo/guilds, and two houses reached /uo/houses as IDOC with two more at Greatly. dotnet build Scripts.csproj clean.


AI-assisted: written with Claude Code (Claude Opus 5). Commits carry the Co-Authored-By trailer.

🤖 Generated with Claude Code

Test scaffolding only — `tools/` is never deployed, and `deploy.ps1` copies `overlay/` alone. This is the shard side of runicgateway.com's phase 9 screenshot rig (its `PLAN.md` §13). ## Guilds The seeded world has none. The site's guild board was showing two rows of week-old sidecar cache for guilds that had since been deleted, and the website reconciles **Teams** from that board, so Teams was empty as well. There was nothing to rename: a guild has to exist before it can be called something. So `BridgeDemoDress` now builds four, out of characters the seeder already made — a leader, two officers, ordinary members, and an alliance across the first two so the guild page's "rosters, alliances and who's online" is not two-thirds empty. Idempotent by name; a character already in a guild is never moved, so a re-run does not shuffle the world between screenshots. ## IDOC "Houses in danger" reads a column the website's ingest only writes when the plugin reports a house **changing** decay stage (`house.decay`). The richer `house.update` registry frame carries the stage too, but the ingest deliberately leaves that column to the transition feed so the two cannot clobber each other. The consequence, found here: a house that is **already** collapsing when the site connects never appears. The sweep baselines it at IDOC and no transition is ever emitted. The shard plainly had two condemned houses and the page said none. The staging is therefore two passes — prime a few houses at a middle stage at boot, collapse them 150 s later — so the site watches it happen, which is the event the page is built to show. Where too few houses can decay at all (an active owner's house is `AutoRefresh`, which reports `Ageless` forever), their owners' accounts are backdated: the same lever the seeder pulled, and the same one a real shard pulls when somebody stops playing. ## Also `Bridge Test Shop`, left over from a hand-run smoke test, now draws a name like every other vendor. ## Two product observations, raised not patched Both are recorded in the file, next to the code that works around them: 1. **A renamed guild member never reaches the site.** `BridgeSocial.Signature()` folds name, abbreviation, leader, member count and alliance — not member *names* — and the roster is only re-emitted when the member set changes. Renaming a member leaves the published roster stale indefinitely. 2. **A guild deleted while the shard is offline is a ghost row forever.** `_last` is cleared on reconnect, so the "gone" pass has nothing to compare against and no `guild.remove` is emitted. That is how the board came to be showing two guilds the world no longer had. Neither is fixed here — the fix belongs in the plugin/ingest, not in a screenshot rig. ## Verification Against the local ServUO tree with a real sidecar and the website: four guilds with dressed rosters and the alliance reached `/uo/guilds`, and two houses reached `/uo/houses` as `IDOC` with two more at `Greatly`. `dotnet build Scripts.csproj` clean. --- AI-assisted: written with Claude Code (Claude Opus 5). Commits carry the `Co-Authored-By` trailer. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
wtclaude added 1 commit 2026-08-25 14:37:14 +00:00
Two things the screenshot rig needed and the dressing pass could not give it
(runicgateway.com PLAN.md §13 phase 9).

GUILDS. The world had none — the guild board on the site was two rows of week-old
cache for guilds that had been deleted, and the website's Teams reconcile from that
board, so Teams was empty too. There is nothing to rename here: a guild has to exist
before it can be called something, so this builds four of them out of characters the
seeder already made, with a leader, two officers per guild and an alliance across the
first two. Idempotent by name, and a character already in a guild is never moved.

IDOC. "Houses in danger" reads a column the ingest only writes when the plugin reports
a house CHANGING stage; the registry frame carries the stage too, but the ingest leaves
that column to the transition feed so the two cannot clobber each other. A house that is
already collapsing when the site connects is therefore invisible: the sweep baselines it
at IDOC and no transition is ever emitted. The staging is now two passes — prime a few
houses at a middle stage at boot, collapse them 150 seconds later — so the site watches
it happen. Where too few houses can decay at all, their owners' accounts are backdated,
which is the same lever the seeder pulled and the same one a real shard pulls when
somebody stops playing.

Also: "Bridge Test Shop", left over from a hand-run smoke test, now gets a name like
every other vendor.

Both of the site-side asymmetries above are recorded as product observations in the
file rather than patched from here.

Test scaffolding, in tools/, never deployed — deploy.ps1 copies overlay/ only.
Verified against the local ServUO tree: four guilds and their rosters reached the
website over a real sidecar, and two houses reached "Houses in danger".

Co-Authored-By: Claude <noreply@anthropic.com>
whitlocktech approved these changes 2026-08-25 15:03:30 +00:00
whitlocktech merged commit badc1702de into main 2026-08-25 15:03:37 +00:00
whitlocktech deleted branch chore/demo-guilds-and-idoc 2026-08-25 15:03:38 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/servuo-plugins#17
No description provided.