From ac599c0d2a333dda5dd35ebd7aa4702966a0e9b5 Mon Sep 17 00:00:00 2001 From: arcattack Date: Wed, 15 Jul 2026 14:19:43 -0500 Subject: [PATCH] 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) --- context/open-questions.md | 43 +++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/context/open-questions.md b/context/open-questions.md index 05e32a8..de476e1 100644 --- a/context/open-questions.md +++ b/context/open-questions.md @@ -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).