SIGN IN SIGN UP

feat(uniform): substitute via direct encoder hook, not the bit-copy path

The per-field bit-copy path can't reliably pair a value-copy to its field
(WriteFieldList's two-stream layout), so uniform substitution was flaky/invisible
or corrupted neighbouring fields. Pivot uniform (all-clients) substitution to
hooking the per-field encoder directly (the mechanism that showed 1337 HP live in
early testing): the encoder receives the field's fieldInfo as an arg -> unambiguous
field identity, no pairing -> redirect the value pointer to a scratch holding the
fake value in that encoder's layout. Runs once during the shared pack, so every
client sees it.

New UniformEncoderHook: one shared managed hook over all encoder detours, dispatched
by the live dispatch fn (= the hooked addr) to its trampoline + bucket type; matches
by field name; value-kind checked against the real encoder type. SetUniform(...) now
routes here; per-client callbacks stay on the bit-copy path (FieldSubstitution).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
P
Prefix committed
0fdd7081d16355f5ae627f6f6f432aa756c62871
Parent: 100510f