---
date: 2026-06-13
phase: 3
headline: v3 (dot-product) underperformed → revert to v2 + more height bins + adaptive height query
---

## What we did
- Saturday — mostly logistics
- **Eval'd v3** (the Jun 12 refactor: dot product, no per-voxel MLP) — **didn't work that well**
- **Reverting to v2** (per-voxel MLP fusion, the Jun 10 canonical) + two changes:
  - **More height bins** (the Jun 12 insight from towel-folding still applies)
  - **Positional encoding for adaptive height query** (replaces the learned 16-d nn.Embedding — should enable variable bin counts at inference without retraining)
- Re-eval v2.1 tomorrow

## Reflection
- Per-voxel MLP fusion is load-bearing. The dot-product simplification looked architecturally clean (and matched the binding framing more purely) but lost something empirically — the MLP is doing real work fusing per-view features + height embedding. The "pure binding" framing stays *narratively* clean even with MLP fusion: the MLP is the *learned* part of the binding, not a departure from it.
- One-day failure cycle saved more time than it cost — cheap iteration on the canonical arch via "is the per-voxel MLP actually load-bearing?" is exactly the kind of question worth a Saturday cycle.
- The Jun 12 height-bin insight survives the revert — towel grasp's height precision still mattered, just needs to coexist with the MLP fusion. v2.1 is "v2 + Jun 12's lesson, integrated cleanly."
- Pos enc for adaptive height is a small but nice property: variable resolution at inference without retraining means you can run cheap at training time, dense at deploy time. Worth a paper sentence.

## Next steps
- Eval v2.1 tomorrow — does it nail towel folding height?
- Update `feedback_multiview_voxel_canonical.md` once tomorrow's eval lands (held back yesterday, good call)
- Family trip in 7 days — re-eval result tomorrow is the cool-result-for-family candidate
