KB: reconcile STALE peer coupled-motion "COMPLETION PENDING" entry -> DONE (task #50)

The open-questions.md block was the old completion PLAN (ea39af1) and was never
updated after the work actually landed + the residual was root-caused. It
contradicted multiplayer.md (which correctly documents both "Authentic coupled
peer motion -- DONE" and the packet-jitter resolution). Reconciled to DONE:
coupled single-source gait pipeline default-on (c52a1ad/b013742/96a896a/f094d78/
23f1532); the "needs master half" conclusion superseded by 49d73dc (residual
shakiness = single-box packet jitter, a test-rig artifact, fixed with CPU
affinity, user-confirmed -- NOT a game bug). Minor follow-ups (2.9u channel-snap,
decay constant) tracked in multiplayer.md. No code change -- KB currency only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-15 14:19:43 -05:00
co-authored by Claude Opus 4.8
parent aab7a8a137
commit ac599c0d2a
+25 -18
View File
@@ -622,21 +622,28 @@ register. ⚠ The audit also flags the damage-economy item as SELF-CONTRADICTOR
- Feeds from: every subsystem/render topic (their deferral notes collect here).
- Gating master: [[source-completeness]] (the missing BT source).
## Peer coupled-motion architecture — COMPLETION PENDING (task #50 tail, 2026-07-14)
The user's speed-change peer glitch is the last visible MP motion artifact. Root
cause is ARCHITECTURAL and decomp-confirmed: the original peer (FUN_004ab430 ->
FUN_004ab1c8) drove position FROM the clip's root travel between records (feet
locked to ground by construction) + pose-sync offset decay; our port dead-reckons
position from velocity while legs run on commanded speed — they disagree exactly
during accel/decel. The PEER half is implemented env-gated (BT_ROOT_POS=1,
mech4.cpp replicant branch) but measured worse alone: with sparse records the
master's VELOCITY mirror under-sends for a gait-driven peer (11u snaps); with
dense records the two authorities tug-of-war (path/net 1.86). COMPLETION NEEDS
THE MASTER HALF: (1) master send-gate linear mirror driven by the same gait
travel (its own channel-B IntegrateMotion projection, as the binary's), so
records model the peer; (2) then sparse authentic deadband cadence + offset
decay. All fixed-and-committed groundwork: exact quaternion integration
(a8eb8a4), incremental peer heading (d78e77b), clock guard (93456be), commanded-
speed cadence feed (6374efc), Abs-macro fix (7615ecd). Speed model decomp-settled
(2c6db6a): analog throttle, '5 speeds' false, throttleState@0x4a4 is actually the
fall-surface material (RENAME PENDING).
## Peer coupled-motion architecture — ✅ DONE (task #50, 2026-07-14/15) [T1/T2]
RESOLVED. (This block was the old COMPLETION PLAN from `ea39af1`; it was left stale after
the work actually landed — reconciled 2026-07-15.) The coupled single-source gait pipeline
is reconstructed, DEFAULT ON, and the residual was root-caused. See [[multiplayer]] two
sections: **"Authentic coupled peer motion — DONE"** (linear position = BODY gait channel
integrated into `projectedOrigin@0x260`; angular = replicated-velocity slerp; master
SEND-mirror runs the SAME `IntegrateMotion` predictor fed the last-sent `bodyTargetSpeed`)
and **"Peer motion: the 'random shakiness' is single-box packet jitter, NOT the game"**.
- Landed: coupled path promoted to default (`c52a1ad` + `b013742`); peer poses from the
BODY channel (`96a896a`); turn-step on the body channel (`f094d78`); true-mirror cadence
driving the clip from actual replicated motion (`23f1532`). Groundwork: exact quaternion
integration (`a8eb8a4`), incremental peer heading (`d78e77b`), clock guard (`93456be`),
commanded-speed cadence feed (`6374efc`), Abs-macro fix (`7615ecd`).
- **The old "needs the MASTER HALF" conclusion was SUPERSEDED:** the leftover accel/decel
shakiness was ROOT-CAUSED as single-box **packet jitter** (`49d73dc`) — two Debug nodes on
one box batch TCP delivery, so records arrive bursty (BT_RXJIT burstiness 3-7x) and the peer
dead-reckons across the gaps then snaps. Pinning each node to a disjoint core set
(`ProcessorAffinity 0x00F/0x3C0`, baked into `tools/mp_launch.sh`) restored even ~17ms
delivery and the shakiness vanished (user-confirmed). Real pods are dedicated machines and
never see it. **DO NOT add an interpolation/jitter buffer** to mask a rig artifact.
- Minor non-gating follow-ups (tracked in [[multiplayer]]): an occasional ~2.9u
leg(peer)-vs-body(mirror) channel-mismatch snap; the exact `_DAT_004ab9cc` offset-decay
constant; whether `IntegrateMotion`'s 2-stage angular integrate is intended.
- Speed model decomp-settled (`2c6db6a`): analog throttle, '5 speeds' false, `throttleState@0x4a4`
is actually the fall-surface material (RENAME PENDING).