# V3 confirmation and Stage-B network audit — 2026-07-27

## Scope

This record covers pre-prototype rigid-body simulation only. It does not
establish physical stability, real-network performance, wrench accuracy, or
human-subject benefit. The network backend emulates fixed delay, independent
uniform jitter, and independent packet loss; it does not emulate bandwidth
limits, burst loss, serialization, clock drift, or a measured network trace.

## Expanded Stage-A calibration

The selected contact condition is:

- wall stiffness: `3200 N/m`;
- wall damping: `25 Ns/m`;
- haptic gain: `0.35`;
- wide-tank bounds: `[0, 2] J`, initial energy `1 J`;
- energy-challenge probe: `0.0395 Nm`.

The original three calibration replicates were expanded to 20 replicates with
the same data-root convention. Therefore, these runs contain 17 additional
instances but are not an independent confirmation set.

| Study | Gate result | Key range |
|---|---:|---|
| Stable contact | 20/20 pass | master RMSE `0.03585–0.03620 rad`; slave RMSE `0.04585–0.04622 rad`; contact RMS `0.10595–0.10762 N` |
| Synthetic H4 challenge | 20/20 pass | projection fraction `0.0483–0.2890`; shadow deficit `4.99e-5–1.51e-4 J` |

Across 60,000 samples in each expanded study, all recorded wall, joint,
velocity, acceleration, actuator-torque, haptic-rate, and haptic-torque limit
flags remained zero.

Local evidence:

- `output/experiments/bilateral-v3-expanded-stable-20260727`
  - plan hash: `34343a11dd0c807a9099bdb7c3442f77476f425ffed6ff97348aa3a72b2eac14`;
  - row hash: `7653213736fa79fe03d82eef8d3f86cb17a8c7c0838e7461c76957d7c0a7ccc1`.
- `output/experiments/bilateral-v3-expanded-energy-20260727`
  - plan hash: `8254f86ed97e872937405aea24d31c0d48a73c2f66d5a475f3767a15baedb0e0`;
  - row hash: `483c31f2a584719fbd2db3113494b1e7599e9e7a44e1dd523cb9d17cd38c21bb`.

The disjoint-root locked protocols are
`bilateral_locked_v3_stable_contact.json` and
`bilateral_locked_v3_energy_challenge.json`.

## Stage-B calibration design

The Stage-B screen fixes the selected mechanics and haptic settings, disables
the synthetic energy probe, and evaluates two 6 s trajectories:

- free-space round trip;
- slow contact round trip.

Five network profiles are paired with common random numbers inside each
trajectory/replicate block:

1. nominal;
2. symmetric `40/40 ms` delay;
3. asymmetric `20/60 ms` delay with the same `80 ms` RTT;
4. symmetric `40/40 ms` delay plus independent uniform `±4 ms` jitter;
5. symmetric `40/40 ms` delay plus independent `2%` loss in each direction.

The calibration grid contains `2 × 5 × 3 = 30` proposed-method trials.

### Audited endpoints

The legacy slave tracking error is relative to the delayed, held controller
reference and can hide forward-path lag. Stage-B therefore adds:

- slave tracking error relative to the latest immediately available mapping
  reference;
- lag between the delayed and latest mapping references;
- raw feedback-torque lag relative to an immediate-return shadow;
- packet source age, freshness, hold, timeout, recovery, and internal sequence
  gaps;
- profile-minus-nominal paired degradation.

The two within-trial shadows retain the current disturbed system state. They
remove one transport delay but are not independent zero-network
counterfactuals. The paired nominal trial is the causal network baseline.

## Stage-B calibration outcome

All 30 trials completed and validated:

- local network gate: 30/30 pass;
- H4 plus bilateral safety gate: 30/30 pass;
- paired profile-minus-nominal gate: 30/30 pass;
- final Stage-B gate: 30/30 pass;
- H4 accounting audit: 30/30 pass;
- energy projection, force saturation, and all recorded state/actuator/haptic
  limit fractions: zero.

The most informative directional comparison holds RTT at `80 ms`:

- changing `40/40 ms` to `20/60 ms` reduced contact reference-lag RMSE from
  about `3.49 mrad` to `1.75 mrad`;
- the same change increased return-feedback-lag RMSE from about `15.2 mNm` to
  `18.4 mNm`.

The largest paired zero-delay tracking degradation was about `2.52 mrad` in
free space. The largest absolute contact-RMS change was about `0.53%`.
Free-space contact force remained exactly zero.

The jitter condition needs explicit interpretation. Because the return channel
publishes at `500 Hz`, independent `±4 ms` jitter reorders many packets:

- return internal sequence-gap fraction: approximately `44.1–45.3%`;
- return active fraction: approximately `99.3%`;
- timeout fraction: zero.

Thus, the controller remained supplied by a held valid packet, but feedback
freshness was substantially lower. “No timeout” must not be reported as “no
information loss.”

H3 is descriptive in this study. Free-space trials were below the registered
power-activity floor; contact trials were activity-valid. H3 is not a bounded
stability score and is not used as a Stage-B pass/fail gate.

Local evidence:

- `output/experiments/network-v3-screening-20260727`;
- plan hash:
  `25adcf6bfce4c24dc0b13672258996e5216951479976fc9a9d8ef79f35944e79`;
- metric configuration hash:
  `8c4a33203462ccaf0821ee89c3e288abd952dcf07dc7e776e7b770ecaac425da`;
- row hash:
  `deeb8699deadebf2f551eef9f4ec7fb1b42c6364ae50d124d6b0f1296d68061a`.

## Frozen locked thresholds

The disjoint-seed locked protocol freezes the following before execution:

- zero-delay slave tracking RMSE: `≤ 0.06 rad`;
- paired degradation relative to nominal: `≤ 0.005 rad`;
- absolute contact-RMS relative change: `≤ 10%`;
- contact fraction for contact trajectories: `≥ 0.30`;
- contact-active RMS: `≥ 0.10 N`;
- forward/return active fraction: `≥ 0.98`;
- forward/return fresh fraction: `≥ 0.09 / 0.50`;
- forward/return internal missing fraction: `≤ 0.05 / 0.50`;
- forward/return source age: `≤ 0.10 / 0.08 s`;
- forward/return timeout fraction: zero;
- free-space peak contact force: `≤ 1e-6 N`;
- energy projection fraction: `≤ 0.05`;
- all wall/state/actuator/haptic limit fractions: zero.

Free-space contact relative change is reported as not applicable; its absolute
false-contact gate is used instead.

The proposed-only locked protocol is
`bilateral_network_v3_locked.json`. Passing it can support a bounded statement
about the proposed loop under the registered emulator. It cannot support
superiority over mapping baselines; that requires a separate locked comparison
including `direct_energy` and `matched_wrench_energy`.
