hold_count_end를 모르고, 모든 arm이 같은 눈을 쓴다.auto_release 가족이라 pick이 성공하면 하네스가 물체를 다시 내려놓는다. 다음 화면엔 물체가 원위치에 있고 "not lifted"는 화면 기준으로 맞다. 빠진 정보는 지각이 아니라 역사("내 지난 pick이 성공했다") — 오직 실행 상태 기억에만 있다. statues(3667): 5 arm 전부 2/2인데 frames 7턴 vs blind 32턴, 차이는 전부 "성공한 pick을 다시 함". 32칸 합계 rf-v3 81회(16.8%) · blind 39 · frames 17 · tagmem 17 — 텍스트 writer가 release 뒤 화면을 "grasping, continuing"으로 적어 틀린 상태를 고착시킨다.본 런 53% 시점 집계는 M2(false_done)에서 blind가 가장 나쁘고 frames-uniform·tagmem이 가장 좋다고 말한다. 집계는 "왜"를 못 말한다 — 어떤 화면을 보고 어떤 판단을 했는지, 메모리에 무엇이 있었는지를 봐야 arm 간 차이가 기억의 차이인지 우연의 차이인지 갈린다.
선정 기준: 5 arm 공통 완료 · 1답 칸 · 성공/실패 혼재 · 종료 사유 다양. 두 편은 서로 반대 방향이다.
| 편 | 질의 | blind | frames-uniform | rollforward-v3 | vis-pure | tagmem-r3 |
|---|---|---|---|---|---|---|
A train_2853__0 | wine bottle | FD 3턴 | ✓ 12턴 nav_loop | ✓ 8턴 | FD 5턴 | ✓ 6턴 |
B train_3916__0 | pot | 예산 9턴 | FD 4턴 | 예산 9턴 | FD 4턴 | ✓ 9턴 |
hold_count_end는 하네스가 pick 종료 시 물체를 5 cm 들어 두 번 확인한 횟수(2=파지 성공, 0=실패). VLM은 이 값을 받지 않는다 — exo + wrist 화면 2장만 본다.| arm | t1 pick | 이후 | 결말 |
|---|---|---|---|
| blind | hold=0 | t2 wrist에 병목이 손가락 사이 → "successfully grasped and lifted" | false_done |
| frames-uniform | hold=2 | t2 "moving towards… not completed" → 재-pick ×4 → t5 놓침 → t6 "fell onto the floor" → navigate ×6 | nav_loop (lifted 기록됨) |
| rollforward-v3 | hold=2 | 노트 "gripper enclosing neck, not yet lifted" 5턴 → 재-pick ×5 → t6 놓침 → t7 "clearly lifted" done | ✓ 놓친 뒤 done |
| vis-pure | hold=0 ×3 | 메모리 이미지 0장(KEEP 없음) → t4 "lifted into the air" | false_done |
| tagmem-r3 | hold=2 | 노트 "grasping in progress" 3턴 → 재-pick ×3(hold 유지) → t5 "clearly grasped" done | ✓ 든 채로 done |




| arm | pick 결과 | 결말 |
|---|---|---|
| blind | hold=0 ×8 | 매 턴 "positioned… not yet lifted" — 정직, 예산소진 |
| frames-uniform | hold=0 ×2 | t3 wrist가 pot 내벽에 밀착 → "successfully picked up" false_done |
| rollforward-v3 | hold=0 ×8 | 노트 "aligning/grasping rim, continuing" — 정직, 예산소진 |
| vis-pure | hold=0 ×2 | KEEP F2 → t3 "lifted (visible in F2)" — 메모리 프레임을 근거로 착각 false_done |
| tagmem-r3 | t3 hold=2 → t4 재-pick 놓침 → t7 hold=2 | t8 "exterior and wrist views show lifted" done ✓ |



| 현상 | Case A | Case B |
|---|---|---|
| 든 채로 재-pick (M1) | frames 4 · rf-v3 5 · tagmem 3 | tagmem 1 (t3→t4 놓침) |
| 그 재-pick으로 놓침 | frames · rf-v3 | tagmem |
| "잡혔다" 착각 프레임 | blind t2 | frames t3 · vis-pure F2 |
| "안 잡혔다" 착각 프레임 | frames · rf-v3 · tagmem t2~t5 | — |
| 정직하게 예산 소진 | — | blind · rf-v3 |
1. 파지 상태는 한 프레임에 안 보인다 — 양방향으로. "잡힌 것처럼 보이는데 아님"(blind A, frames B, vis-pure B)과 "잡혔는데 안 잡힌 것처럼 보임"(frames·rf-v3·tagmem A) 둘 다 나온다. 이 실험의 모든 arm이 같은 눈을 쓰고, 고유수용 신호는 없다.
2. 메모리는 "지금 들고 있는가"를 알려주지 않는다. 실제로 준 것은 (a) 여러 턴 프레임으로 물체가 움직였음을 알아채는 것(frames A t6), (b) 텍스트로 "시도 중"을 이어가며 끈질기게 재시도하는 것. 둘 다 "들었는가" 판단은 못 돕는다.
3. 든 채로 재-pick(M1)이 성공을 깨는 주범이다. Case A에서 세 메모리 arm이 전부 t1에 잡았고, 셋 다 못 알아채 3~5번 재-pick, 둘은 그 바람에 놓쳤다. 실험 2의 "19%가 자기 성공을 깼다"의 실물이다.
4. 이미지 메모리는 착각의 근거가 될 수 있다. vis-pure B는 KEEP한 프레임을 "들린 증거"로 인용했다.
5. 텍스트 노트는 상태가 아니라 과정을 적는다. hold=2인 5턴 동안 "grasping in progress". 계획 단계를 서술하지 물리 상태를 기록하지 않는다.
done 선언 시점이 실제 hold와 겹쳤다(A: t4 hold=2→t5 done, B: t7 hold=2→t8 done). rf-v3 A는 놓친 뒤 done을 선언해 운으로 살았다. tagmem의 done 정밀도 .59(1위)는 "exterior and wrist views show…"처럼 두 카메라를 교차 확인하는 서술과 함께 나타난다 — 우연만은 아니지만 표본 두 편으로 단정할 수 없다. 별건으로 기록한 tagmem의 두 결함(KEEP 0회 · 노트 계획 서술 편향 76%)과는 독립적으로, 파지 인지 자체가 전 arm 공통 바닥이다.
1답 사례가 "파지 상태 불가시"를 보였다면, multi는 "1번은 끝냈으니 2번으로"를 기억해야 하는 곳이다. 5 arm이 가장 갈리는 multi 두 편.
| 편 | 질의 | blind | frames | rf-v3 | vis-pure | tagmem |
|---|---|---|---|---|---|---|
A train_4136__1 3답 | potato → butter knife → remote | 예산 0/3 30t | FD 1/3 23t | 예산 1/3 31t | ✓ 3/3 12t | 예산 0/3 31t |
B train_6222__1 2답 | potato(dresser) → potato(chair) | 예산 0/2 38t | abort 0/2 8t | FD 0/2 6t | FD 0/2 13t | FD 0/2 19t |
| arm | 1단계 (감자) | 이후 |
|---|---|---|
| vis-pure | t1 hold=2 | t3 "grasped and lifted" → 2단계. 버터나이프 t5 hold=2 · 리모컨 t8~t10 hold=2 → t11 done |
| frames | t2 hold=2 → 재-pick ×2 놓침 | t5 2단계로(lifted 기록됨) → 버터나이프 ×12 전부 hold=0 → t18 "successfully lifted"(거짓) → 리모컨 ×3 실패 → t22 done |
| rf-v3 | t2 hold=2 → 재-pick ×2 놓침 | t5 노트 "Step 1 complete" → 버터나이프 ×16, 노트 "attempt 9"까지 정직 → 예산 |
| blind | pick ×28 전부 hold=0 | t29 "lifted and placed back down, step 1 complete"(거짓) → 예산 |
| tagmem | pick ×30 전부 hold=0 | 노트 매 턴 "potato remains on chair" 정직 → 예산. 노트 4,893자 |
세 arm 모두 감자까지 0.43~0.59 m(도달반경 1.0 안), first_nav_hit=True. 그런데 프레임이 다르다.




place_robot_near가 뽑은 접근 자세가 갈랐다. 같은 물체·같은 목표·같은 VLA인데 한쪽은 정면, 한쪽은 옆. 다른 세션이 잰 "pick 접근 자세오차 중앙 23.7°"의 실물이고, 이 런은 그 보정을 끈 채(실험 2 조건 핀) 돌고 있다. vis-pure의 3/3은 좋은 자세를 세 번 뽑은 것이지 메모리가 아니다 — 세 물체 모두 첫 pick에 hold=2였다.| arm | 1단계 (서랍장 감자) | 이후 |
|---|---|---|
| blind | pick ×37 hold=0, 매 턴 정직 | 예산 |
| frames | pick ×7 → t7 abort "no potato on the dresser" | — |
| rf-v3 | pick ×1 → t2 "has been picked up"(1회 만에 거짓) | 2단계 pick ×2 실패 → t5 done(거짓) |
| vis-pure | pick ×7 → t8 "has been picked up"(거짓) | 2단계 ×3 실패 → t12 done(거짓) |
| tagmem | pick ×15 정직 → t16 "repeated attempts did not find a potato (only a cell phone and book)" → 2단계로 | pick ×1 → t18 "grasped"(거짓) done |


1. 사슬은 첫 파지에서 막힌다. 10런 중 7런이 예산 대부분을 1단계에 썼다. 2·3단계의 상태 추적은 시험될 기회조차 없었다. multi의 M4(gc)는 "사슬 기억"이 아니라 첫 물체의 파지 운이 정한다.
2. 1단계가 실제로 끝나면 전 arm이 2단계로 넘어간다. frames·rf-v3·vis-pure는 감자를 든 직후 정확히 버터나이프로 갔고, rf-v3 노트는 "Step 1 complete"를 남겼다. "1번 끝냈다"를 기억하는 능력 자체는 어느 arm도 문제가 없다 — 계획이 지시문에 고정돼 있어서다.
3. multi의 false_done은 "N번 실패 뒤 단계 완료 선언"이다. frames A t18(12회 뒤) · blind A t29(28회 뒤) · rf-v3 B t2(1회 뒤) · vis-pure B t8(7회 뒤) · tagmem B t18(1회 뒤). 실패가 쌓이면 어느 순간 "됐다"고 하고 다음 단계로 간다. 노트가 "attempt N"을 세는 rf-v3 A만 끝까지 버텼다.
4. 접근 자세는 45°를 넘는 8%에서만 결정적이다 — 정정. 사례 A의 tagmem(47°)을 보고 처음엔 "자세가 메모리보다 크다"고 썼으나, 런 전체 pick 2,892건으로 검증하니 과장이었다.
| 첫 pick 자세오차 | n | 파지 |
|---|---|---|
| 0~10° | 117 | 31.6% |
| 10~20° | 73 | 32.9% |
| 20~30° | 87 | 37.9% |
| 30~45° | 123 | 32.5% |
| 45~90° | 26 | 3.8% |
| 90~181° | 8 | 0.0% |
5. 재-pick으로 놓치는 M1은 multi에서도 그대로. frames·rf-v3 A 둘 다 t2에 잡고 t3~t4에 놓쳤다.
앞의 multi 두 편은 결국 메모리 질문에 답하지 못했다 — 4136은 자세오차 꼬리 한 건, 3426은 시뮬 결함(blind·rf-v3·vis-pure 셋 다 "robot clipped through the environment"로 abort). 선정 기준을 "1단계를 3 arm 이상이 실제로 든 편"으로 바꾸니 32칸 중 9편이 남고, 그중 train_3667__0 "Pick up all the statues"가 답한다.
| arm | GT1 (거실 조각상) | GT2 (침실 조각상) | 결말 | 턴 |
|---|---|---|---|---|
| frames | t2 hold=2 → t3 "picked up" → 2단계 | t4 hold=2 → 재-pick 1 → t6 done | ✓ 2/2 | 7 |
| blind | t2 hold=2 → 재-pick 1 → t4 2단계 | t6 hold=2 → 재-pick 25회(그중 20회 hold=2) → 예산 | ✓ 2/2 | 32 |
| rf-v3 | t2 hold=2 → t3 2단계 | t4 hold=2 → 재-pick 24회 → t29 done | ✓ 2/2 | 30 |
| vis-pure | t1 hold=2 → 재-pick 11 → t13 "seen lifted in F1" → 2단계 | t14 hold=2 → 재-pick 6 → 예산 | ✓ 2/2 | 21 |
| tagmem | t1 hold=2 → 재-pick 13 → t15 "F1·F2 show lifted" → 2단계 | t18 hold=2 → 예산 | ✓ 2/2 | 20 |




find는 auto_release 가족이다(online.py:319 CARRY_FAMILIES = ("restore","routine","resume"), orchestrator 주석 "find는 집은 직후 놓아 버리므로"). pick이 성공하면(5 cm 들어 2회 확인 → hold=2, held_end=uid 기록) 하네스가 물체를 다시 내려놓는다. 그래서 다음 턴 화면에는 물체가 원래 자리에 있다.
이 정정은 실험의 의미를 강화한다. 빠진 정보는 지각이 아니라 역사다 — "내 지난 pick이 성공했다"는 현재 씬 어디에도 없다(release로 씬이 복원됐다). 오직 자기 과거 턴에만 있다. 실행 상태 기억의 정의 그 자체이고, M1은 "성공한 pick을 기억 못 해 다시 함"으로 읽어야 한다.
| arm | 성공 뒤 재-pick | 그 재-pick 실패 | 총 턴 | 재-pick 비중 |
|---|---|---|---|---|
| rollforward-v3 | 81 | 19 | 482 | 16.8% |
| blind | 39 | 14 | 529 | 7.4% |
| rollforward-vis-pure | 27 | 16 | 444 | 6.1% |
| frames-uniform | 17 | 9 | 438 | 3.9% |
| tagmem-r3 | 17 | 17 | 493 | 3.4% |
rf-v3가 blind의 두 배다. 텍스트 writer가 release 뒤 화면을 보고 "gripper grasping… continuing pick"이라고 적어 틀린 상태를 기억으로 고착시킨다 — 메모리가 없는 것보다 나쁘다. frames·tagmem은 이미지로 "F1에 들린 게 보인다"를 찾아내 빠져나온다(tagmem은 13회 재-pick 뒤에야). tagmem의 재-pick은 17/17 전부 실패 — 재-pick 자체가 적고, 할 때는 이미 자세가 흐트러진 뒤다.
결론: multi에서 사슬 추적(몇 단계까지 했나)은 전 arm이 한다(9편 45런 예외 없음). 메모리가 갈리는 지점은 "지난 pick이 성공했나"이고, auto-release가 씬에서 그 사실을 지운다. frames 7턴 vs blind 32턴이 그 값이다. 이 결론은 1단계 파지 자체가 실패한 편(4136)에는 적용되지 않는다 — M1이 발생할 기회가 없다. "1단계 성공" 칸으로 층화해 M1을 읽어야 한다.