SIGN IN SIGN UP

docs: force-resend RE + design (live per-client spoof application)

Documents why a freshly-registered per-client spoof only shows after a full update
and how to make it apply live. RE-confirmed (libengine2 WriteDeltaEntity_Internal +
live ttt diagnostic) that the CS2 entity delta is VALUE-COMPARED: CalcDelta diffs the
client's FROM baseline (delta ctx +0x90) vs the TO shared pack (+0x98) and emits only
the fields that differ — so since substitution keeps the real value unchanged,
NetworkStateChanged can't force the field in (only a full update, against an empty
baseline, does). The substitution pipeline itself is fully active on live deltas
(diagnostic: _currentSerializer set on 100% of BitCopy fires) — there is no coverage gap.

Captures four force-resend options with trade-offs and recommends the surgical one:
hook the CalcDelta vtable fn and, for the issuer + a hooked entity, append the hooked
field's index to the output field-index list (per-field, per-client, no value change,
no full update, works per-tick). Single open sub-problem: field-name -> serializer
field-index, resolvable by caching the mapping from the full-update path. Needs a live
client to validate, so shipped as a spec, not code.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
P
Prefix committed
4267493abd03ad7b0cbda00f2b2e3803a978df43
Parent: 7bec626