Index
2026-09-22 — Analysis

온라인 계획형 v2 캠페인 완주 — 가족에 따라 결론이 정반대다

scene_bench | restore 571행 + find 767행 · API $205

TL;DR

1338
총 행
+0.111
restore tagmem ΔSR
+0.001
find tagmem ΔSR
0.000
restore hidden SR
$205
API

1무엇을 쟀나

읽기 트랙 답을 초기 계획([plan] 줄)으로 노트에 주입하고, 계획 갱신은 각 전략이 자기 메모리 방식으로 할 수 있는 만큼만 하게 한 조건이다. 실행은 VLM(서브골) + VLA(MolmoBot place_oc@10000).

셀 선택이 이 표를 읽는 열쇠다. 온라인은 그 전략의 읽기 답이 맞은 칸만 돌린다. 그래서 전략마다 셀 집합이 다르고, restore·find 모두 6전략이 전부 공유하는 칸은 0개다. 자기 셀 SR 로 전략을 비교하면 안 되고, 비교는 §3 의 LOO 보정으로만 한다.
restore 571행 · 성공 105 (0.184) · $119.68 5전략 464칸 + tagmem 재측정 107칸(goal-off) find 767행 · 성공 359 (0.468) · $85.61 읽기 v1.2 기준 — vispure 309 · tagmem 332 · delta4(4전략 신규칸) 126 스냅샷 tmp/plan_main/src_w2 (260920 execute-state 수정 4건 반영)

2전략별 SR (자기 셀 — 비교 불가)

restore

전략자기 셀 SR (95% CI)칸평균 턴$/칸done 비율
tagmem-r30.271 [0.196, 0.362]10719.4$0.2810.41
rollforward-vis-pure0.205 [0.133, 0.300]8821.5$0.2840.35
rollforward-v30.234 [0.147, 0.351]6418.8$0.1100.42
frames-uniform0.189 [0.106, 0.314]5320.9$0.2640.55
textlog0.125 [0.090, 0.170]25728.5$0.1680.23
blind 칸 부족0.500 [0.095, 0.905]229.5$0.1770.50

find

전략자기 셀 SR (95% CI)칸평균 턴$/칸done 비율
tagmem-r30.533 [0.479, 0.586]3327.3$0.1010.79
rollforward-vis-pure0.524 [0.469, 0.579]3098.0$0.1000.75
rollforward-v30.250 [0.127, 0.434]2818.1$0.1030.64
frames-uniform0.219 [0.110, 0.388]3218.7$0.2420.22
textlog0.052 [0.018, 0.141]5829.3$0.1720.24
blind 칸 부족0.375 [0.137, 0.694]816.0$0.0930.62

칸 부족 표시는 15칸 미만이라 수치가 있어도 읽지 말아야 하는 행이다 (blind restore 는 2칸 — 읽기 답이 맞은 칸이 그것뿐이다).

3LOO 난이도 보정 — 핵심 결과

같은 칸을 돈 다른 전략들의 평균을 그 칸의 기대값으로 삼아, 셀 선택 차이를 상쇄한다. Δ = 관측 − 기대. ✱ = |Δ| > 2·SE.

전략find ΔSRrestore ΔSR
tagmem-r3+0.001 ±0.031
248칸 · 관측 0.504 / 기대 0.503
+0.111 ±0.046 ✱
91칸 · 관측 0.286 / 기대 0.175
rollforward-vis-pure+0.001 ±0.031
247칸 · 관측 0.518 / 기대 0.518
-0.017 ±0.056
80칸 · 관측 0.212 / 기대 0.229
rollforward-v3+0.035 ±0.065
26칸 · 관측 0.231 / 기대 0.196
+0.020 ±0.053
62칸 · 관측 0.226 / 기대 0.206
frames-uniform+0.003 ±0.062
30칸 · 관측 0.233 / 기대 0.231
+0.022 ±0.059
49칸 · 관측 0.184 / 기대 0.162
textlog+0.000 ±0.048
30칸 · 관측 0.100 / 기대 0.100
-0.082 ±0.037 ✱
123칸 · 관측 0.154 / 기대 0.236
blind-0.177 ±0.145
8칸 · 관측 0.375 / 기대 0.552
-0.500 ±0.500
2칸 · 관측 0.500 / 기대 1.000
restore 에서만 tagmem 이 앞선다. 같은 91칸에서 다른 전략 평균보다 11.1%p 높다(2.43·SE). 턴도 -3.84 ±1.44 로 더 적다 — 두 축 모두에서 유의하게 우위인 전략은 tagmem 뿐이다.
find 에서는 차이가 없다. tagmem 248칸 · vis-pure 247칸으로 restore(91칸)보다 검정력이 큰데도 Δ 가 각각 +0.001 / +0.001 다. 칸 부족이 아니라 진짜 0 이다.

왜 갈리나

find 는 "어디 있었지" — 단일 조회다. 읽기 답이 맞은 순간 기억의 역할은 끝나고 나머지는 찾아가서 집는 실행 문제다. restore 는 "원래 어땠지" — 과거 상태와 현재 상태를 둘 다 들고 대조해야 한다. 물체를 집은 뒤에도 "원래 어디였지"를 계속 참조하므로 실행 중에도 메모리가 일한다. 그래서 메모리 구조 차이가 SR 로 나타난다.

4hidden(conceal) — 메모리 과제가 조작 과제로 변질된다

온라인 행에는 은폐 라벨이 없어 읽기 병합본과 조인했다(조인 실패 0).

가족층SR칸open/close 시도/칸GT 근처 도달GT 듦턴
findopen0.5276640.000.910.578.4
findhidden0.0871036.190.920.1722.2
restoreopen0.2095030.000.850.0821.3
restorehidden0.000689.260.960.0143.5
찾아가는 건 문제가 아니다. GT 근처 도달이 hidden 에서 오히려 더 높다 (0.92/0.96 vs 0.91/0.85). open/close 도 실제로 시도한다 (칸당 6.2~9.3회). 그런데 GT 듦이 0.17 / 0.01 다 — 서랍을 연 뒤 좁은 공간의 물체를 집는 동작을 VLA 가 못 한다. 턴은 2배를 쓰고 예산이 터진다.

읽기 본표는 260831 결정으로 hidden 을 별도 표로 뺐다. 온라인도 같은 처리가 필요하지만, 사용자 결정(260922)에 따라 본표는 현 구성을 유지하고 hidden 분리는 Online GT Eval 에서 다룬다.

5실패 분해 — 병목은 파지

restore

실패 유형칸비율
도달했지만 못 듦(파지)37480%
GT 근처 못 감6113%
들었지만 못 놓음317%
합계466100%

find

실패 유형칸비율
도달했지만 못 듦(파지)27467%
GT 근처 못 감6516%
그 외(종료·done 미달)6115%
예산 초과82%
합계408100%
메모리 실패는 소수다. restore 실패 466칸 중 "GT 근처에 한 번도 못 감"은 61칸뿐이고, 374칸이 파지 실패다. 이것이 LOO 에서 ΔSR 이 작게 나오는 이유이고, 메모리 전략을 가르려면 파지가 병목이 아닌 축(첫 navigate 적중 · 턴 수 · 완료 인지)을 봐야 한다.

영상 사례: restore 파지 실패 — 5사례 30클립(exo+wrist). 273칸 중 다섯을 골라 첫 시도 · 중간 · 마지막 시도를 나란히 실었다 — 다섯 사례 전부 접근이 사실상 같다. 30~56회를 같은 방식으로 실패한다.

6추가 조건 — 통합 장부는 채택하지 않는다

"읽기와 온라인이 같은 메모리"라는 주장을 성립시키려던 조건이다. A(tagmem-r3)는 컨텍스트 장부를 시작 시 한 번 검색해 고정하고 온라인 노트는 예산 초과 시에만 따로 검색한다(실측 find 턴의 87.3% 에서 태그화 코드조차 안 돈다). B(tagmem-r3-ledger)는 컨텍스트와 온라인을 한 장부에 두고 매 턴 읽기 v8 과 같은 retrieve() 로 고른다. 쓰기 규칙은 글자 그대로 같아 "보여줄 것 고르기" 한 축만 가른다.

A tagmem-r3B ledger
성공 (짝 16칸)8/164/16
턴/칸11.818.3 (+56%)
비용/칸$0.188$0.272 (+44%)
뒤집힌 칸4개 — A만 성공 4 · B만 성공 0
원인은 구조적이다 — 컨텍스트가 예산에서 밀려난다.
텍스트 예산 : 컨텍스트 1.1 / 온라인 8.1 (예산 12) 이미지 예산 : 컨텍스트 7.2 / 온라인 0.8 (예산 8) 컨텍스트 텍스트가 0개로 밀려난 칸: 11/16 (69%)
restore 질의는 전부 "원래 있던 자리로 되돌려라" 이고, 원래 자리는 컨텍스트 엔트리에만 있다. 한 예산에서 경쟁시키면 최근성이 이겨 그 정보가 사라지고, 모델은 자기가 방금 한 일만 보면서 26~30턴을 헤맨다.

논문에 쓸 문장

읽기 트랙과 동일한 검색을 온라인에 그대로 적용하는 변형도 측정했다(16칸 파일럿). 컨텍스트 엔트리가 온라인 기록에 밀려(69% 칸에서 0개) SR 이 떨어졌다(8/16 → 4/16). 온라인 메모리는 과거(원래 상태)와 현재(실행 중 변화)를 분리된 예산으로 두어야 한다.

파일럿 비용 $4.35 · 본 런(107칸 ≈ $29)은 제출하지 않았다. 상세: final_results/online_plan_v2_260921/additional_conditions/README.md

7도중에 잡은 결함 6건

#결함결과
1구 tagmem restore 런이 다른 하네스(src_w1) — memory_block 이 notes 에서 곧바로 return 하던 260919 이전 코드라 Visual memory(KEEP/DROP) 블록이 통째로 없다. 출력 스키마엔 "keep" 필드만 남아 모델이 규칙을 모른 채 돌았다. KEEP 턴당 0.001 · 프레임 보유 2/107 → 214행 폐기·재측정 후 0.430 · 105/107, SR .215 → .271
2본표 행 패턴이 옛 v1.0 파일을 지목 — find 가 main_find/vis2_find/tagmem_find 를 보고 있었다 그대로 뒀으면 find 본표가 구판을 집계. v12_* 로 교체 + 추가 조건 섞임 방지 가드
3restore 본표에 tagmem 누락tagmem_restore_off_s* 패턴 추가
4파일명 규약 파손 — scan_online_turns·aggregate_online_efficiency 가 {prefix}_{family}_s* 하드코딩goal 조건이 이름에 든 런을 못 읽었다. 경로 명시 옵션 추가
5비용캡 중단 — v12_tagmem_s0 가 CAP 18 에 $17.01 로 걸려 마지막 1칸을 못 돌았다 babysitter 는 설계상 OVER_COST_CAP 에서 재제출을 포기한다. CAP 25 로 올려 완주
6babysitter QOS 되돌림 — delta4 를 QOS=own 으로 띄웠는데 own 8장을 다른 세션이 점유 재제출마다 QOSMaxGRESPerUser 로 막혀 3시간 정체. QOS=extra 로 재기동
1·2 는 패리티 게이트(scripts/check_online_prompt_parity.py)와 $0 프리플라이트가 잡았다. 파일 diff 로는 안 보이는 결함이다 — src_w2↔src 는 15파일이 달라도 프롬프트 48개가 바이트 동일한 반면, 구 tagmem 트리는 1파일 차이로 프롬프트가 1,072바이트 짧았다.

8Takeaway & Next

Next