find·restore 는 7모델 격자가 있는데 resume 만 API 3모델(flash-3.7·sonnet-5·luna)뿐이었다. "쓰기 병목의 크기가 과제 가족마다 다르다"는 주장을 모델 계급 축에서도 받치려면 8B 행이 필요하다. 오픈 모델은 자체 vLLM 서빙이라 API 비용이 0이므로 예산 제약도 없다.
resume 은 v1 오픈 기준선이 아예 없으므로 처음부터 v2 writer 프롬프트로 쟀다. writer 프롬프트를 안 쓰는 blind·textlog·frames-uniform 은 정의상 v1 = v2 이라, API 3모델은 재측정하지 않았다 (표에서 ᵛ¹ 로 표기).
tagmem-r3 는 사용자 결정으로 보류(별도 성능 작업 후), rf-v2 는 논문 미사용이라 제외했다.
셀 = resume_ok / slot_ok_frac. resume_ok 는 미완 명령을 정확히 지목하고 남은 개수까지 맞힌
행의 비율(전 슬롯 동시 정답), slot_ok_frac 은 슬롯 단위 부분점수다.
| 전략 | flash-3.7 | sonnet-5 | luna | qwen3vl-8b | cosmos-r2-8b | molmo2-8b |
|---|---|---|---|---|---|---|
| blind | 0.056/0.090 ᵛ¹ | 0.068/0.127 ᵛ¹ | 0.037/0.075 ᵛ¹ | 0.050/0.115 | 0.068/0.099 | 0.037/0.062 |
| textlog (oracle) | 0.789/0.811 ᵛ¹ | 0.708/0.798 ᵛ¹ | 0.677/0.758 ᵛ¹ | 0.441/0.609 | 0.248/0.388 | 0.149/0.280 |
| frames-uniform | 0.161/0.273 ᵛ¹ | 0.112/0.214 ᵛ¹ | 0.099/0.158 ᵛ¹ | 0.087/0.174 | 0.087/0.149 | 0.031/0.084 |
| rf-v3 (MEM-style) | 0.143/0.280 | 0.025/0.112 ᵛ¹ | 0.019/0.075 ᵛ¹ | 0.075/0.134 | 0.081/0.121 | 0.037/0.050 |
| vis-pure (MemER-style) | 0.242/0.385 | 0.112/0.211 ᵛ¹ | 0.087/0.121 ᵛ¹ | 0.093/0.202 | 0.099/0.165 | 0.087/0.127 |
| tagmem-r3 (ours) | 0.106/0.189 ᵛ¹ | 0.043/0.121 ᵛ¹ | 0.019/0.037 ᵛ¹ | — | — | — |
| 모델 | 오라클 | 최고 비오라클 | blind | 이득 | 1위 전략 |
|---|---|---|---|---|---|
| flash-3.7 | 0.789 | 0.242 | 0.056 | +0.186 | vis-pure |
| luna | 0.677 | 0.099 | 0.037 | +0.062 | frames-uniform |
| molmo2-8b | 0.149 | 0.087 | 0.037 | +0.050 | vis-pure |
| sonnet-5 | 0.708 | 0.112 | 0.068 | +0.043 | frames-uniform |
| qwen3vl-8b | 0.441 | 0.093 | 0.050 | +0.043 | vis-pure |
| cosmos-r2-8b | 0.248 | 0.099 | 0.068 | +0.031 | vis-pure |
메모리 이득은 6/6 모델에서 양수지만, 8B 3종은 +.03–.05 로 얇다. flash-3.7 의 +.186 과 4–6배 차이다.
resume_ok = tasks_ok ∧ remaining_ok. 발화 목록은 blind 를 포함한 모든 전략에 공통 제공되므로
"어떤 명령이 남았나"(tasks_ok)는 상식으로도 어느 정도 찍히지만, "몇 개 남았나"(remaining_ok)는 메모리가 없으면 못 푼다.
| 전략 | flash-3.7 | sonnet-5 | luna | qwen3vl-8b | cosmos-r2-8b | molmo2-8b |
|---|---|---|---|---|---|---|
| blind | 0.329 / 0.068 ᵛ¹ | 0.472 / 0.087 ᵛ¹ | 0.224 / 0.043 ᵛ¹ | 0.379 / 0.075 | 0.273 / 0.081 | 0.261 / 0.056 |
| textlog (oracle) | 0.807 / 0.789 ᵛ¹ | 0.832 / 0.739 ᵛ¹ | 0.783 / 0.677 ᵛ¹ | 0.553 / 0.503 | 0.304 / 0.311 | 0.273 / 0.211 |
| frames-uniform | 0.534 / 0.205 ᵛ¹ | 0.466 / 0.155 ᵛ¹ | 0.335 / 0.118 ᵛ¹ | 0.323 / 0.130 | 0.286 / 0.106 | 0.273 / 0.056 |
| rf-v3 (MEM-style) | 0.416 / 0.193 | 0.317 / 0.062 ᵛ¹ | 0.273 / 0.043 ᵛ¹ | 0.261 / 0.106 | 0.304 / 0.093 | 0.230 / 0.043 |
| vis-pure (MemER-style) | 0.596 / 0.304 | 0.435 / 0.149 ᵛ¹ | 0.261 / 0.093 ᵛ¹ | 0.298 / 0.137 | 0.280 / 0.112 | 0.348 / 0.106 |
| tagmem-r3 (ours) | 0.366 / 0.149 ᵛ¹ | 0.373 / 0.081 ᵛ¹ | 0.081 / 0.019 ᵛ¹ | — | — | — |
rf-v3 는 청크마다 기존 메모리 + 새 프레임 4장을 주고 메모리 전체를 다시 써서 덮으라고 시키는 MEM 계열이다. writer 가 낸 출력이 직전 메모리와 어떤 관계인지 전이 1,384건(100편 × 청크)을 직접 분류했다 — "무변화" = 직전 메모리를 토씨 하나 안 바꾸고 반환, "덧붙이기" = 직전 메모리를 그대로 접두사로 복사한 뒤 뒤에만 추가, "재작성" = 앞부분을 실제로 고침.
| writer | 무변화 | 덧붙이기만 | 실제 재작성 | 컷 시점 메모리 median | resume_ok |
|---|---|---|---|---|---|
| flash-3.7 (v2) | 0.1% | 1.5% | 98.4% | 693자 | 0.143 |
| flash-3.7 (v1) | 0.7% | 0.9% | 98.5% | 519자 | 0.056 |
| qwen3vl-8b | 2.6% | 61.7% | 35.7% | 734자 | 0.075 |
| cosmos-r2-8b | 58.4% | 37.0% | 4.6% | 950자 (p90 64,513) | 0.081 |
| molmo2-8b | 63.9% | 23.0% | 13.1% | 17,414자 | 0.037 |
writer 호출은 100편 전부 calls == n_chunks 로 정상 실행됐다(건너뛴 게 아니다). 세 가지 고장이 서로 다르다:
무변화율을 직전 메모리 길이와 청크 위치로 나누면 단조 증가한다. 첫 청크는 베낄 게 없어 거의 다 제대로 쓴다.
| writer | 직전 메모리 짧음(하위 25%) | 중간 | 긺(상위 25%) | 청크 #1 → #8 무변화율 |
|---|---|---|---|---|
| cosmos-r2-8b | 320자 → 15.0% | 757자 → 66.5% | 1,889자 → 85.5% | 3% → 8% → 19% → 49% → 56% → 63% → 68% → 72% |
| molmo2-8b | 364자 → 46.5% | 1,029자 → 63.9% | 19,322자 → 81.5% | 4% → 23% → 37% → 45% → 51% → 70% → 76% → 76% |
| qwen3vl-8b | 166자 → 0.9% | 517자 → 0.3% | 1,215자 → 9.0% | 0% … 1% (무변화 대신 덧붙이기) |
rf-v3 는 "메모리 전량 재출력", vis-pure 는 "KEEP/DROP 몇 글자"다. 8B 에게 rf-v3 만 출력 부담이 압도적으로 크므로, 표에서 vis-pure > rf-v3 로 나오는 것은 전략의 우열과 출력 부담의 차이가 섞여 있다. flash-3.7 은 부담을 감당하므로(재작성 98.4%) 그 행에서는 전략 비교가 성립한다. 사용자 결정(260910): 지금은 한계로 기록하고 표는 그대로 둔다; 출력 부담을 맞춘 대조군은 필요 시 $0 로 추가.
Press the button on the washing machine five times., 남은 2회)컷 시점 메모리 원문 — 5개 청크(≈2.5분)가 한 문장으로 남았다:
모델 응답:
채점: tasks_ok 0 · remaining_ok 0 · named_finished 1 — 이미 끝난 심부름 ("move the soap bottle …")을 미완으로 지목했고, 정작 남은 세탁기 버튼은 "were either completed or interrupted" 라며 넘겼다.
실패 행 전부 attempts=2(재시도해도 같은 붕괴), raw 길이 median 80,135자 대 성공 행 669자.
예: resume:train_123__2000:cut_06 / textlog — 78,065자 생성 후 절단.
에러 메시지는 JSON decode failed: Unterminated string starting at: line 2 column 16 … 로 JSON 파스 실패지만,
실제 원인은 스키마 오해가 아니라 같은 문장을 반복하다 토큰 상한에 잘린 것이다.
| 전략 | flash-3.7 | sonnet-5 | luna | qwen3vl-8b | cosmos-r2-8b | molmo2-8b |
|---|---|---|---|---|---|---|
| blind | 0.000/0.000 ᵛ¹ | 0.000/0.000 ᵛ¹ | 0.040/0.040 ᵛ¹ | 0.120/0.120 | 0.200/0.200 | 0.080/0.160 |
| textlog (oracle) | 1.000/1.000 ᵛ¹ | 0.840/1.000 ᵛ¹ | 1.000/1.000 ᵛ¹ | 0.680/0.800 | 0.600/0.720 | 0.320/0.360 |
| frames-uniform | 0.240/0.280 ᵛ¹ | 0.120/0.160 ᵛ¹ | 0.080/0.080 ᵛ¹ | 0.080/0.080 | 0.280/0.280 | 0.000/0.040 |
| rf-v3 (MEM-style) | 0.000/0.120 | 0.000/0.000 ᵛ¹ | 0.000/0.000 ᵛ¹ | 0.000/0.000 | 0.160/0.160 | 0.120/0.120 |
| vis-pure (MemER-style) | 0.040/0.160 | 0.040/0.080 ᵛ¹ | 0.080/0.080 ᵛ¹ | 0.120/0.160 | 0.240/0.240 | 0.040/0.080 |
| tagmem-r3 (ours) | 0.000/0.000 ᵛ¹ | 0.000/0.040 ᵛ¹ | 0.000/0.000 ᵛ¹ | — | — | — |
rf-v3 는 flash-3.7·sonnet·luna·qwen 전부 .000. cosmos .160 · molmo2 .120 은 각자의 blind(.200 · .080)와 구분되지 않는 추측이다. 오라클은 .32–1.00 이므로 정답 자체는 존재하고, 메모리에 안 실린 것이다.
| 전략 | flash-3.7 | sonnet-5 | luna | qwen3vl-8b | cosmos-r2-8b | molmo2-8b |
|---|---|---|---|---|---|---|
| blind | 0.065/0.065 ᵛ¹ | 0.129/0.226 ᵛ¹ | 0.000/0.032 ᵛ¹ | 0.000/0.097 | 0.097/0.129 | 0.032/0.032 |
| textlog (oracle) | 0.419/0.419 ᵛ¹ | 0.290/0.290 ᵛ¹ | 0.258/0.258 ᵛ¹ | 0.065/0.161 | 0.129/0.161 | 0.032/0.032 |
| frames-uniform | 0.161/0.226 ᵛ¹ | 0.161/0.226 ᵛ¹ | 0.226/0.226 ᵛ¹ | 0.032/0.194 | 0.032/0.097 | 0.032/0.032 |
| rf-v3 (MEM-style) | 0.097/0.129 | 0.065/0.161 ᵛ¹ | 0.000/0.065 ᵛ¹ | 0.065/0.161 | 0.065/0.097 | 0.000/0.000 |
| vis-pure (MemER-style) | 0.129/0.161 | 0.129/0.161 ᵛ¹ | 0.065/0.065 ᵛ¹ | 0.065/0.129 | 0.032/0.065 | 0.032/0.097 |
| tagmem-r3 (ours) | 0.032/0.032 ᵛ¹ | 0.129/0.194 ᵛ¹ | 0.032/0.032 ᵛ¹ | — | — | — |
오라클조차 .419 / .290 / .258 / .065 / .129 / .032 로 붕괴한다. 발화가 "every room" 이라 총 몇 개인지가
원문에 없고, move 44/44 · put 67/67 · press 49/49 가 수사를 포함하는 것과 대조된다.
이건 전략의 문제가 아니라 데이터 축이며, 실행 트랙의 remaining_rooms 필드로 해결된다.
| 전략 | flash-3.7 | sonnet-5 | luna | qwen3vl-8b | cosmos-r2-8b | molmo2-8b |
|---|---|---|---|---|---|---|
| blind | 0.000/0.057 ᵛ¹ | 0.033/0.139 ᵛ¹ | 0.000/0.082 ᵛ¹ | 0.016/0.123 | 0.000/0.066 | 0.000/0.016 |
| textlog (oracle) | 0.738/0.795 ᵛ¹ | 0.672/0.828 ᵛ¹ | 0.541/0.754 ᵛ¹ | 0.213/0.541 | 0.000/0.238 | 0.016/0.262 |
| frames-uniform | 0.066/0.246 ᵛ¹ | 0.016/0.172 ᵛ¹ | 0.016/0.123 ᵛ¹ | 0.000/0.131 | 0.000/0.115 | 0.000/0.074 |
| rf-v3 (MEM-style) | 0.098/0.328 | 0.000/0.148 ᵛ¹ | 0.000/0.082 ᵛ¹ | 0.000/0.074 | 0.000/0.090 | 0.000/0.016 |
| vis-pure (MemER-style) | 0.180/0.410 | 0.033/0.213 ᵛ¹ | 0.016/0.090 ᵛ¹ | 0.000/0.172 | 0.000/0.139 | 0.000/0.057 |
| tagmem-r3 (ours) | 0.049/0.172 ᵛ¹ | 0.000/0.107 ᵛ¹ | 0.000/0.049 ᵛ¹ | — | — | — |
두 명령을 모두 맞혀야 resume_ok 가 1이므로 급락한다. flash-3.7 vis-pure 가 .180 으로 최고, 8B 3종은 비오라클 전부 .000 — slot_ok_frac 으로만 차이가 보인다(.172 / .139 / .057).
오픈 3종의 오라클 .15–.25 는 "메모리가 부족해서"가 아니라 정답 로그를 못 읽어서 나온 값이다. find·restore 에서 같은 모델들이 오라클 .74–.94 를 냈던 것과 대비된다. 논문에서 8B 행은 전략 순위표가 아니라 읽기 상한선으로 제시해야 한다.
find 에서 flash급 전용이던 vis-pure 우위가 resume 에서는 6모델 중 4모델 1위다. "무엇을 어디까지 했는가"는 텍스트 재작성보다 장면 스냅샷이 더 잘 보존한다.
오라클 ÷ 최고 비오라클: find 0.8× → restore 1.7× → resume 3.3×(.789 / .242). v2 프롬프트로 rf-v3 가 .056 → .143 올랐어도 이 격차는 그대로다.
rf-v3 는 flash-3.7 에서만 살아나고(.143), 8B 에서는 길이 분포부터 무너진다(molmo2 median 17k자 루프, cosmos p90 64k자). MEM 계열을 소형 모델에 그대로 옮기면 메모리가 노이즈 생성기가 된다.
task_named/task_named_n, ≈$17) — visit_rooms 의
"총 개수를 주면 얼마나 오르나"를 정량화. 사용자 보류 중.