gt_bodies 빈 값이 무조건 성공 처리), 읽기 답 조회 키에 컷 프레임 누락resume는 4가족(find·restore·routine·resume) 중 마지막으로 남은 온라인 트랙이고, 다른 셋과 데이터 계약이 가장 다르다 — 질의에 answers[]가 없고(pending[]뿐), 시작 상태가 행마다 다른 컷이며, 채점 단위가 셋(놓기·누르기·방문)이다.
data_rev별로 61871a3e 53편 · fd856246 34편 = 87편(셀 컨텍스트 수와 정확히 일치). 매니페스트는 states/final.npz로 만들었는데 resume은 cut_NN에서 시작 — 둘이 어긋나면 strip/injection 목록이 틀린다. 12편×125개 컷 파일에서 model_body_mass·model_body_pos·check_names를 대조해 불일치 0을 확인, 검증 빌드가 127→87회로 줄었다.
restore_final_state(env, ep, arm, grip, state=...)로 인자를 뚫었다. verify_scene_restore.py --family resume을 신설(빌드는 편당 1회, 컷마다 복원·안착만 재는 구조). G4(목적지)는 pending[]에서, G5(방)는 신규 — visit_rooms의 남은 방이 방 이름 지도에 전부 있는가.
_plans_for_query에 resume 분기(_resume_plans) 신설. visit_rooms 채점은 인벤토리 최근접 휴리스틱이 아니라 방 폴리곤으로 — orchestrator.run_episode(track_rooms=True)가 턴마다 점유맵 방 채널로 현재 방을 재서 누적한다. press는 PRESS_HORIZON=300(FrankaPressButtonBench 에피소드 길이 max 287)을 resume에만 넘긴다.
| data_rev | 편 | 방 이름 | 시드 조합 | 결과 |
|---|---|---|---|---|
| 61871a3e | 53 | 3~4개 | 159개 전부 비지 않음 | OK — 셀 159 · 답 합 1180 · 예산 400~17214 |
| fd856246 | 34 | 3~4개 | 97개 전부 비지 않음 | OK — 셀 97 · 답 합 527 · 예산 400~18262 |
합계 256칸 — 셀 파일과 정확히 일치. visit_rooms $0 게이트: 셀이 쓰는 질의 44(전부 61871a3e), 방 이름 미유도 0, rooms_remaining ≠ 데이터셋 r 0건, 같은 이름 방이 둘 이상인 집 0/33편.
| # | 결함 | 영향 |
|---|---|---|
| ① | 메모리 미래 누출 | resume ingest가 편 단위였고 컷으로 안 잘라 cut_05 칸이 cut_06까지의 기억을 시드로 받음. load_ingest가 chunk_ends·history·kept_history를 버려 rf-v3 memory가 아예 빈 문자열 |
| ② | 공허한 성공 | online_success가 all(sat.values()) 사용, 놓기 과제 없는 질의(127개 중 38개, 30%)는 gt_bodies가 비어 all({})==True — 로봇이 아무것도 안 해도 success |
| ③ | 읽기 행 조회 키 누락 | read_answer_key가 resume에서 f1(컷 프레임)을 요구하는데 안 넘겨 int(None)으로 죽음 |
| 유형 | n(끝 상태)으로 잴 수 있나 | 이유 |
|---|---|---|
| place_count | ✅ | 끝 상태에 흔적이 남는다 |
| press_count | ❌ | 누름은 사건 — 끝 상태에 흔적이 없다 |
| visit_rooms | ❌ | 방문도 사건 — 컷 전 방문은 온라인에서 관측 불가 |
place만 n, 나머지를 r로 세면 한 질의 안에서 단위가 섞여 GC가 뜻을 잃는다. r로 하되 증분은 시작 시점 실측치(placed_start, 복원된 씬을 그대로 읽는다)를 빼서 구하면 GT를 보지 않는다. n 기준 값은 gc_total(place 전용) 진단 열로 병기.
scripts/check_online_prompt_parity.py --tree src --baseline …v12.json → exit 0, 공유 프롬프트 48개 바이트 동일, 수정 마커 4개 유지resume는 $0 게이트만으로 결함 2건을 잡았다 — 둘 다 런을 죽이지 않고 조용히 다른 조건으로 돌았을 것이다(미래 누출은 점수를 올리는 방향이라 더 나쁘다). 컷 불변성 증명 덕에 검증 빌드가 127 → 87회로 줄어(≈2.8 GPU-시간 절감). visit_rooms는 61871a3e 런에만 있다 — fd856246 런은 놓기·누르기 두 단위뿐이다.
전수 검증 제출 보류 중(클러스터 포화). 본 런 견적 재계산 필요 — 프리플라이트의 10 + 13.5 × len(gt_bodies) 모형은 find 기준이라 resume의 공급 후보(최대 18개)를 답 수로 오인해 $51.95/118 GPU-시간이 나온다. 실제 턴 상한은 60이고 요구 단위는 1~5개다.
파일럿 실측으로 견적을 다시 잡는다. resume 파일럿 — routine과 같은 10칸 규모로, 세 단위(놓기·누르기·방문)가 각각 한 번씩은 나오게 고른다.