Overwire Benchmark Pre-Registration#
Status: FROZEN v1.0. Amendments only via the changelog per the amendments section.
Date frozen: 2026-08-04 Author: Overwire project Home: overwire.ai
1. Thesis under test#
Robot intelligence can be metered from the cloud while the robot body approaches free. A ~$250 SO-ARM101 arm driven by a Raspberry Pi 5, executing a VLA policy served from an H100 on Modal (region us-east) over residential internet, folds a washcloth with success rate and completion time insensitive to network latency across the residential-to-degraded range (0-800 ms injected RTT). The 0 ms injected condition anchors the sweep, and a flat curve across the range brackets the local-inference counterfactual by interpolation. The headline 8/10 test at the residential condition is the sole confirmatory test; the RTT sweep carries a pre-registered support criterion of at least 7/10 at every injected level up to and including 400 ms, and the 800 ms level is exploratory stress only (section 9).
2. Task definition#
- Object: one standard cotton washcloth, approximately 30x30 cm, solid color, high contrast against the work surface. The exact cloth spec (product, dimensions, photo) is recorded at freeze, before episode one of the training dataset, so training cloths and benchmark cloths share one spec.
- Cloth maintenance: multiple identical cloths are purchased; the active cloth is swapped per a stated rotation rule, at minimum between the human baseline session, the headline session, and each sweep level, so wear does not accumulate into any single condition. Ambient humidity is recorded per session.
- Start state: crumpled. The start zone is divided into a labeled grid; the target cell is drawn by RNG before each trial and logged. Operator crumple protocol: lift the cloth by an arbitrary point, drop it from approximately 20 cm above the drawn cell, then take one overhead photo. If the cloth lands fully outside the start zone or folds on itself into a stack taller than 8 cm, redo the drop. No manual flattening or arranging after the drop.
- Goal state: quartered fold. The cloth folded twice (half, then half again) into four layers.
- Fold strategy is fixed at training time (the same quarter-fold strategy demonstrated in all training episodes). The benchmark does not reward alternative folds.
- Instruction given to the policy is fixed across all trials.
3. Success criteria (per trial)#
Trial end is defined mechanically: the trial ends when the end effector is outside the cloth region and all joint motion is below a stated velocity threshold (value recorded at freeze) for 5 consecutive seconds, or when the time cap expires, whichever comes first.
A trial is a SUCCESS if and only if, at trial end, all of the following hold:
- The cloth forms four layers (two completed folds).
- The final footprint is no more than 35% of the flat cloth area.
- Layer misalignment: no edge of any layer overhangs the stack by more than 5 cm.
- The cloth is inside the workspace boundary (not dragged off the mat, not on the floor).
Scoring mechanism: criterion 2 is computed by a published script in bench/ from the final overhead frame against the printed reference grid. Criteria 1, 3, and 4 are assessed from the published unedited video and are verifiable by any reader; no post-session judge decides them. Edge cases resolve conservatively (when in doubt, score FAILURE). A trial is a FAILURE if the time cap expires before the success criteria hold, if the arm requires an emergency stop, or if the rig is touched by a human during the trial.
4. Trial count and threshold#
- N = 10 scored trials at the headline network condition.
- Pre-registered threshold: at least 8 of 10 trials succeed.
- Exact binomial confidence intervals are reported alongside the 8/10 outcome.
- Trials are consecutive: no discarding, no retries, no cherry-picking. Hardware breakage (servo failure, power loss) pauses the session; the interrupted trial is scored FAILURE unless the breakage is verifiably unrelated to the policy's commands (documented with video), in which case the trial is re-run once.
- Practice runs before the scored session are allowed but must be announced and logged before trial one begins.
5. Policy freeze#
- Before trial one, the policy checkpoint hash and the complete serving configuration are recorded, including flow/denoising step count and any quantization. The identical checkpoint and configuration serve all headline and sweep trials.
- Disclosure: a benchmark attempt that misses the 8/10 threshold is reported, not discarded. Re-attempts with a new checkpoint are permitted, but every attempt is disclosed in the tech report.
- Client freeze: the Pi client configuration is recorded at freeze and identical across all conditions: control rate, chunk length, blend steps, and the request scheduling rule. The request margin is not a constant; it is an adaptive function of measured round-trip time (an EWMA of recent chunk RTTs converted to control steps, plus a fixed headroom, clamped to at most half the chunk length), and the function itself, with its parameters, is frozen and published (src/overwire/pi_chunk_executor.py). Hand-tuning any client parameter per network condition is prohibited; the frozen adaptive rule is what runs at every sweep level.
6. Time bound protocol#
- Human baseline: one human operator folds the same cloth from the same crumple protocol, one-handed, using the table, embodiment-matched to the single-arm robot, by hand, filmed, for 10 trials. The median of the 10 one-handed fold times is the baseline time. The film is published with the benchmark results.
- A two-handed fold session is also filmed and published as context; it sets no bound.
- Ordering: the baseline session is filmed and its median computed BEFORE the scored robot session begins.
- Timing rule (both human and robot): the clock starts when the first motion toward the cloth begins and stops when the manipulator (hand or gripper) last leaves a cloth that satisfies the success criteria.
- Pre-registered bound: the median robot fold time across successful trials must be under 2x the human baseline median.
- Per-trial hard cap: 5x the human baseline median; a trial that exceeds it is scored FAILURE and stopped.
7. Network conditions#
- Headline condition: residential internet, as installed at the test site. ISP name, advertised plan, and a same-day speed test (up, down, idle ping) are recorded and published with the results.
- Policy served from a warm Modal H100 container, region us-east, over a persistent websocket with TCP_NODELAY.
- The site router runs standard SQM (fq_codel or CAKE) with its configuration published. No per-flow prioritization of robot traffic; no enterprise links, no colocation, no LAN inference.
- The full latency decomposition (frame age, capture, encode, uplink, ingress, inference, downlink, splice, servo write) is recorded per chunk request and published as HDR histograms with p50/p95/p99.
8. Rig cost accounting#
- Pre-registered claim: the on-site rig costs under $500.
- Counted: arm (SO-ARM101 follower), Raspberry Pi 5 and its PSU and SD card, both cameras, mounts, cables, work mat and lighting used by the rig (already-owned items count at current replacement price per the valuation rule below).
- Valuation: owned equipment is counted at current replacement price; components acquired in bundles at the vendor's standalone price or a documented pro-rata split of the bundle price.
- Not counted: the leader arm (teleop and data collection only, not part of the deployed rig), the workstation (training and evals only), cloud compute (metered separately and reported in the cost analysis section of the tech report), and the internet subscription.
- The workstation GPU (RTX 4060) runs teleop, ACT baseline training, and local pipeline-validation evals only. No benchmarked inference ever runs on it; all benchmarked runs are Modal-served.
- Hailo-8 HAT: physically removed from the Pi for all v1 benchmark runs; it does not appear in the bill of materials.
- An itemized bill of materials with purchase prices is published with the results.
9. RTT sweep protocol (the money chart)#
- After the headline benchmark, the same task is run under injected latency: 0, 50, 100, 200, 400, 800 ms of extra RTT, each with 10 ms jitter, applied on egress at the Pi via tc netem (bench/netem.sh).
- Jitter is applied order-preserving (netem with a pfifo child queue). netem's default time-ordered queue reorders packets under jitter, which triggers TCP fast-retransmits that silently pay the injected delay twice per large message; that is an emulator artifact, not a property of a single-path residential link.
- The sweep level order is drawn by RNG before the sweep begins and logged, so cloth wear and operator drift do not correlate with injected latency.
- Per level: 10 trials under the identical trial protocol above.
- Published per level: success rate, median fold time of successful trials, and the chunk-request RTT distribution actually measured during the trials (injected delay plus real path).
- Stalls and watchdog trips are counted and published per level; coordinated omission is not permitted (a stalled trial still counts its elapsed time).
Confirmatory and exploratory split#
- The headline 8/10 result at the residential condition (section 4) is the sole confirmatory test in this benchmark.
- Support criterion: success rate at or above 7/10 at every injected level up to and including 400 ms.
- The 800 ms level is exploratory stress: reported in full, binding nothing.
10. Amendments#
Any change to this document after freezing requires a changelog entry below stating what changed, why, and whether any data had been collected under the prior version. Changes after data collection begins are discouraged and must be flagged prominently in the tech report.
Changelog#
- v1.0 (2026-08-04): FROZEN. Client freeze added to the policy freeze section: control rate, chunk length, blend steps, and the request scheduling rule are fixed across all conditions, with the request margin defined as a frozen adaptive function of measured chunk RTT (EWMA converted to control steps, plus fixed headroom, clamped to half the chunk length), implemented and published in src/overwire/pi_chunk_executor.py; per-condition hand-tuning prohibited. Insensitivity defined: the headline 8/10 at the residential condition is the sole confirmatory test; the sweep carries a support criterion of at least 7/10 at every level up to and including 400 ms; the 800 ms level is exploratory stress, binding nothing. Cloth spec recorded at freeze, before episode one, shared between training and benchmark cloths. Work mat and lighting counted as used by the rig, at replacement-price valuation. Sweep level order drawn by RNG before the sweep begins and logged. Hailo-8 HAT resolved: physically removed for all v1 benchmark runs, absent from the bill of materials. Zero training episodes and zero benchmark data existed at freeze.
- v0.3 (2026-08-04): review edits from the planning session. Thesis restated as latency insensitivity across 0-800 ms injected RTT, with the 0 ms condition anchoring the sweep and bracketing the local-inference counterfactual by interpolation. New policy freeze section: checkpoint hash and full serving configuration recorded before trial one, identical across all trials, with every attempt disclosed and failed attempts reported rather than discarded. Human baseline is one-handed and embodiment-matched, filmed and computed before the scored robot session; the two-handed fold is published as context only. Mechanical trial-end definition (end effector clear of cloth, joint motion below threshold for 5 s, or time cap). Scoring by published script (footprint) plus published unedited video (layers, overhang, boundary); no post-session judge. Site router runs SQM (fq_codel or CAKE) with configuration published. Crumple placement drawn by RNG from a labeled grid and logged. Cloth rotation rule and per-session humidity recording. Valuation rules for owned and bundled equipment; workstation GPU (RTX 4060) exclusion stated; Hailo HAT remove-or-count flagged as the single open item for human decision at freeze. Sweep levels interleaved or randomized and logged. Exact binomial confidence intervals reported alongside the 8/10 outcome. v0.1 open items closed: cloth spec is recorded at freeze; footprint threshold 35% adopted; drop height 20 cm adopted; per-trial hard cap 5x adopted as stated in the body; judge identity resolved by script plus published video, no judge.
- v0.2 (2026-08-04): specified order-preserving jitter in the RTT sweep protocol, after the first transport-only sweep showed netem's default queue reordering large uplink messages and doubling the effective delay via TCP retransmits. No benchmark data collected yet; document still in draft.
- v0.1 (2026-08-04): initial draft for human review. Open items to resolve before freezing: exact cloth spec and footprint threshold (35% is provisional), crumple drop height, per-trial hard cap multiplier, judge identity (single judge vs. two judges with tiebreak).