Existing CG sender compatibility (offline only)
The existing current source sender at ED5A 3433030 has a 531-byte body.
Address-normalized body matching alone returns two pinned6891 candidates:
3433090 and 3440E40. The body contains the same &initiativeId= text in
both cases, so that text is not sufficient to choose one.
The exact corresponding call in current 3433030+F5 invokes 9A5040.
Pinned 3433090+F5 invokes 9A5080, independently uniquely matched to that
current helper by its complete function. Pinned 3440E40+F5 instead calls
9A5270, a different function with a different body. This excludes the second
candidate without treating similar request bodies as interchangeable.
The original component constructor 1E87120 is also compared in full. It
configures request member +5D0 with kind3 and endpoint
2.0/elite/initiative/optin, then installs typed vtable 511F9D0.
Its unique current paired body references the same typed table and unchanged
endpoint text at old5247D30 → new5247D00; the original/current mov edx,3
instructions are explicitly checked. This is constructor/type evidence, not
an assumption based on neighbouring function addresses.
Trace-GalaxyCommunityGoalCompatibility.py writes the paired proof; the earlier
community-goal-optin-unresolved.json records only the initial ambiguous
body-only search and is superseded by
community-goal-optin-compatibility.json. Prepare-GalaxyClientMapping.py
checks the full bodies, direct call targets and relative call positions,
constructor kind, complete endpoint bytes and paired type/endpoint operands.
The source inventory continues to require the sender address. No source hash
or missing address rule is relaxed.
No game process, request, CG opt-in or other mutation is executed by this work. The existing CG source is not modified. This proof establishes static version correspondence only and does not grant runtime validation or action permission.