Continual Learning — Progress Dashboard

Framework A — from scratch

open_microwave

SOLVEDstatus
7iterations to solve
8.2 minactive time to solve
active time = work time from task start to first success, idle gaps (> 180s with no activity) excluded · raw elapsed incl. idle: 20.0 min · sim-compute only: 28.3s

iter_001 — fail

2026-07-23 23:08:47 · wall 0.3s · sim 1.0s · progress 0.0

iter_002 — fail

2026-07-23 23:10:21 · wall 0.2s · sim 1.0s · progress 0.0

iter_003 — fail

2026-07-23 23:12:49 · wall 5.7s · sim 29.2s · progress 0.5976

iter_004 — fail

2026-07-23 23:16:20 · wall 3.8s · sim 20.7s · progress -0.0

iter_005 — fail

2026-07-23 23:21:16 · wall 2.7s · sim 13.1s · progress -0.0002

iter_006 — fail

2026-07-23 23:23:43 · wall 8.6s · sim 44.9s · progress 0.6457

iter_007 — success

2026-07-23 23:27:43 · wall 7.0s · sim 34.7s · progress 0.8681

Failure analysis

# iter_007 — open_microwave — SUCCESS (progress 0.8681, ≥0.8)

## Outcome
Door opened to ~0.87 rad and stayed open after release/retreat. Success.

## What made it work (vs earlier iters)
- **Grasp**: HOME orientation only — the only IK-reachable grasp near the door
  (iter_005 calibration showed a side grasp was infeasible, err 0.10-0.14).
  Fingers close along world y around the vertical bar; seat ~0.01 m deep.
- **Pull path**: drag the grasp point along the hinge arc
  handle(θ)=hinge+R(-θ)(handle0-hinge), z const, hinge≈(0.70,0.324).
- **Rotate the gripper about z by -θ each step** (`follow=True`). This was the
  key change over iter_006:
  - avoids the fixed-orientation singularity that made the EE diverge at θ≈0.75
    in iter_006 (err jumped to 0.39, door stalled at 0.65 rad);
  - keeps the pinch tangent to the arc so the round bar is not pulled out of the
    +x-facing mouth (the slip that capped iter_003 at 0.60).
- **Quasi-static** fine steps (0.05 rad) keep reaction force low → no ejection.
- **Overshoot** to θ=1.0 so the settled angle stays ≥0.8.

## Progression
- iter_003 (fixed orient + rotate, coarse, shallow): slip at θ~0.5 → 0.60.
- iter_004 (side grasp): unreachable, grabbed air → 0.
- iter_006 (fixed orient, quasi-static, deeper): singularity at θ~0.75 → 0.65.
- iter_007 (rotate-to-follow + quasi-static + deep): 0.87 → success.

Proposed solution

# Proposal (post-success)

The task is solved. Distilled the approach into reusable assets:
- `skills/geometry.py`, `skills/manipulation.py` (`pinch_grasp`, `hinged_pull`,
  `release_retreat`, `deproject_pixel`), `skills/RECIPES.md`.
- `world_memory/embodiment.md`, `microwave_scene.md`, `actions.md`.
- Clean reference solution `workspace/open_microwave_v008.py` (re-verified,
  progress 0.87) uses the skills end-to-end.

Future hinged-door tasks: perceive hinge + handle via `deproject_pixel`, then
`pinch_grasp` (HOME orient) → `hinged_pull(follow=True, quasi-static)` →
`release_retreat`, overshooting the target angle.

iter_008 — success

2026-07-23 23:31:00 · wall 6.9s · sim 34.7s · progress 0.8694

Framework B — human-demo guided

open_microwave

SOLVEDstatus
15iterations to solve
22.2 minactive time to solve
0.890traj similarity
active time = work time from task start to first success, idle gaps (> 180s with no activity) excluded · raw elapsed incl. idle: 67.1 min · sim-compute only: 97.8s

Human demonstration

iter_001 — fail

2026-07-23 23:12:22 · wall 3.9s · sim 21.5s · progress 0.137 · similarity 0.873

iter_002 — fail

2026-07-23 23:15:06 · wall 2.1s · sim 11.6s · progress 0.0038 · similarity 0.850

iter_003 — fail

2026-07-23 23:26:14 · wall 4.9s · sim 25.5s · progress -0.0 · similarity 0.876

iter_004 — fail

2026-07-23 23:30:05 · wall 5.5s · sim 28.9s · progress 0.0763 · similarity 0.886

iter_005 — fail

2026-07-23 23:37:23 · wall 11.9s · sim 60.3s · progress -0.0 · similarity 0.899

iter_006 — fail

2026-07-23 23:39:03 · wall 5.4s · sim 29.3s · progress 0.1348 · similarity 0.890

iter_007 — fail

2026-07-23 23:46:29 · wall 7.1s · sim 37.4s · progress 0.1138 · similarity 0.887

iter_008 — fail

2026-07-23 23:50:58 · wall 5.3s · sim 30.0s · progress 0.3531 · similarity 0.865

iter_009 — fail

2026-07-23 23:52:34 · wall 4.6s · sim 26.7s · progress 0.2778 · similarity 0.861

iter_010 — fail

2026-07-23 23:55:56 · wall 4.8s · sim 25.6s · progress 0.2692 · similarity 0.857

iter_011 — fail

2026-07-23 23:59:43 · wall 6.2s · sim 35.7s · progress 0.3283 · similarity 0.841

iter_012 — fail

2026-07-24 00:01:37 · wall 3.7s · sim 21.3s · progress 0.4183 · similarity 0.880

iter_013 — fail

2026-07-24 00:05:03 · wall 13.1s · sim 68.8s · progress 0.3805 · similarity 0.900

iter_014 — fail

2026-07-24 00:10:00 · wall 15.8s · sim 77.3s · progress 0.3018 · similarity 0.927

iter_015 — success

2026-07-24 00:13:24 · wall 3.5s · sim 18.9s · progress 0.8323 · similarity 0.890

Failure analysis

# open_microwave — iter_015 (SUCCESS, progress = 0.832 rad ≥ 0.8)

## Result
Door opened to 0.832 rad and **stayed open** after release + retreat. The winning
move over iter_013/014 was **yaw-scheduling the wrist** while following the door arc.

## What each earlier iteration taught (the debugging arc)
| iter | idea | progress | lesson |
|------|------|----------|--------|
| 001 | home-orient grip + synthetic arc | 0.137 | grip slipped under −X pull |
| 002 | rotate grip 90° | 0.004 | fingers straddled vertically → worse |
| 003 | top-down grip | 0.0 | arm undershoots X (~0.62), misses bar |
| 004–007 | firmer/deeper seat, demo replay | ≤0.14 | −X pull is friction-only for a Y-grip |
| 008 | closed-loop arc, **corrected +Y direction** | 0.353 | +Y is the true opening dir; big jump |
| 009–013 | adaptive tangent, jam-bias, 2-phase | 0.27–0.42 | stuck at ~0.4 rad — a hard wall |
| 014 | pull toward demo's −Y endpoint | 0.30 | −Y is worse ⇒ that demo point is post-release noise |
| **015** | **arc + yaw schedule** | **0.832** | the 0.4-rad wall was the ARM folding, not the grip |

## Root cause of the 0.4-rad ceiling
The handle traces −X,+Y about a vertical hinge ≈ (0.713, 0.401), R≈0.62 (0.4 mm
circle fit over the grip-holding points). A reachability probe proved the arm
**folds** once the handle passes x≈0.41 with the fixed home wrist — a workspace
limit. A yaw probe showed the +Y continuation is reachable at wrist yaw −45°…−75°.
Because the handle is a vertical **cylinder**, yaw does not disturb the grip.

## Winning recipe
1. Grasp the bar at the demo grasp point (0.654, −0.216, 0.569), home orientation
   (fingers open along world Y), close hard, settle 1.2 s.
2. Follow the arc: each small (1.6 cm) step, recompute the tangent from the live
   EE pose about the hinge, and **ramp wrist yaw 0 → −72°** as x shrinks 0.654 → 0.36.
3. Sweep to x < 0.24 (≈0.83 rad), release, retreat. Vertical hinge ⇒ torque-free ⇒
   door stays open.

## Compared to the demo
Trajectory similarity 0.89. The demo's EE path is noisy/non-monotonic (it wiggles
+Y then reports a −Y endpoint that is actually post-release hand retreat). The
clean +Y arc is a better prior than the raw demo path.