Phase 0: an id map from 468 to 149, and a provenance convention for ported numbers #76

Open
opened 2026-07-31 16:13:47 +00:00 by sickday · 0 comments
Owner

First phase of the content epic, and the one that makes the rest cheap. Two
pieces, both small, both paid back by every phase after them.

An id map, build 468 to rev 149. A Tools/dumps task in the shape of the
six that already exist, taking the sister project's content tables — keyed by
468 ids, as strings — and reporting what each one is here. It matches on name
plus a discriminator
, never on name alone: never recover an id by name is a
standing invariant of this repo, because 149 carries duplicate item and NPC
names and a name match is therefore not an id.

The output is a report, not a table: matched, ambiguous, unmatched. It
refuses rather than guesses, the same posture the transport extractor's verb
allowlist takes — a missing row is visible, a wrong row teleports you off a
rock. For scale, a comparable id diff across a single revision in the sister
project put clean name matches at 61.8% of 7,956 ids, with 266 same-id
different-name pairs it marked unsafe to reuse blind. Ours is a much longer
jump, so treat 61.8% as a ceiling rather than an estimate.

A provenance convention for ported constants. Every number taken from the
wiki or from another server records when it last changed, so the
2017-07-13 question is a lookup rather than an investigation.

This is the half the epic cannot run without, and the reason is specific: the
sister project deliberately de-modernised its XP rates to its own 2007 era,
having measured that modern rebalances moved thieving stall XP by silver
54 → 205 and gem 160 → 408. A rate ported from it is therefore wrong wherever
the rebalance predates our era and right wherever it does not
, and the same
is true in reverse of any number read off the live wiki. Both are answered by
the wiki's own changes section, and neither is answerable at all without
recording which question was asked.

Done when a table from the sister project runs through the map and the
report names exactly what a human has to decide.

First phase of the content epic, and the one that makes the rest cheap. Two pieces, both small, both paid back by every phase after them. **An id map, build 468 to rev 149.** A `Tools/dumps` task in the shape of the six that already exist, taking the sister project's content tables — keyed by 468 ids, as strings — and reporting what each one is here. It matches on **name plus a discriminator**, never on name alone: *never recover an id by name* is a standing invariant of this repo, because 149 carries duplicate item and NPC names and a name match is therefore not an id. The output is a report, not a table: **matched, ambiguous, unmatched**. It refuses rather than guesses, the same posture the transport extractor's verb allowlist takes — a missing row is visible, a wrong row teleports you off a rock. For scale, a comparable id diff across a *single* revision in the sister project put clean name matches at 61.8% of 7,956 ids, with 266 same-id different-name pairs it marked unsafe to reuse blind. Ours is a much longer jump, so treat 61.8% as a ceiling rather than an estimate. **A provenance convention for ported constants.** Every number taken from the wiki or from another server records **when it last changed**, so the 2017-07-13 question is a lookup rather than an investigation. This is the half the epic cannot run without, and the reason is specific: the sister project deliberately de-modernised its XP rates to its own 2007 era, having measured that modern rebalances moved thieving stall XP by silver 54 → 205 and gem 160 → 408. A rate ported from it is therefore **wrong wherever the rebalance predates our era and right wherever it does not**, and the same is true in reverse of any number read off the live wiki. Both are answered by the wiki's own changes section, and neither is answerable at all without recording which question was asked. **Done when** a table from the sister project runs through the map and the report names exactly what a human has to decide.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Revenant/Server#76
No description provided.