Original allegiance definition IDs
The original basic descriptor's +8 is a uint64 definition ID. It is never
converted to a public Allegiance enum or matched by its low32 bits alone.
The single registered provider is original global 5F05E6C, type getter
140EB70, actual typed interface 51BBAB0. Constructor 14018E0 installs it
at component+58 with main/secondary tables 51BB980/51BB9B0; component+60
has 51BBBA0. Current ED5A mappings are explicitly established by paired
constructors and slots in
artifacts/galaxy-query-research/allegiance-definitions/compatibility.json:
typed 51BBA70, main 51BB940, secondary 51BB970, adjacent 51BBB60.
The actual original map consumer 3AC56A0 binds this provider at object+B0.
It resolves each authored config+98 key through provider+20 (140ED40),
then uses the returned definition's first u64 as the map's filter/colour key.
The definition's +8 shared-string is the original key. Provider+48
(14100E0) returns the same string. The +50 formatting path is unnecessary
for categorisation and is never called by the adapter.
The +18 ID lookup 140F320 (current 140F240) directly walks five existing
u64 hash maps at interface+80/+A8/+C8/+E8/+108, followed by a legacy32-bit map
at +128. Nodes contain key+8, weak-control+10, definition+18.
The adapter ports only this existing-cache traversal. It requires a positive
control-block strong count at +C, original definition validity byte+18, and
the definition's complete u64 ID equal to the requested ID, including for
the legacy32-bit map. It re-resolves the node and rechecks all source links,
values and the copied string. No getter, loader, allocation, refcount mutation
or network request occurs in this reader.
Only the five authored keys are exported: None, Federation, Empire,
Alliance, Independent. A different faction name from the shared service,
a missing or expired definition, invalid layout, unknown key or absent provider
remains unknown. These caches are not claimed as a complete definition index.
There is one independently proved sentinel: original map constructor
3AC56A0 explicitly inserts u64Max under None, and original ID lookup rejects
u64Max before accessing the maps. The adapter preserves this exact sentinel
when the owning service is verified. It does not turn other unresolved IDs
into None.
TryReadGalaxyAllegianceKey(context,registry,id,out key) uses the existing
owner-thread facts context and registry, and validates the player entity,
system, thread and freshness. The optional basicSystem.allegianceKey wire
field accompanies the untouched decimal-string allegianceId. Core treats
null as unknown and uses only the validated key for filtering.
Offline validation:
research/galaxy_allegiance_compatibility.pyhash-pins both images and binds all actual constructor/typed slots. The 514-byte ID leaf has multiple early returns and no unwind entry; its entire body matches uniquely and is checked, including the final legacy-map traversal, not just its first return.artifacts/galaxy-allegiance-native/result.json: new allegiance65535, existing Basic255 and Wire255 each pass eight own-allocation runs. Fixtures include IDs above 2^53, all five u64 maps, low32 collisions, expired refs, invalid definitions, malformed chains, exact type slots and unchanged bytes.- The existing mapping validator includes this sidecar without relaxing the current source hash or silently skipping unrelated missing source mappings.
No game process was launched/accessed by this work. Live cache availability and matching-client behaviour remain unverified until a separate runtime test.