finished[] 로 실려 다시 하면 실패다.
질의 문장은 “You were interrupted earlier. Go back and finish (all of) what you were doing.” 뿐 — task 도 개수도 안 알려준다.context_frames[1] = states/index (161/161) · commands[] 는 컷 직전까지만
(컷 프레임의 발화는 빼서 다음 명령이 안 새게 했다, 161/161) · finished[] = 컷 이전 종료 errand 전량 · r=n−m · m≥1 전량 ·
budget=max(400,1.5×오라클) · 9/3에 지적한 ablation 문장 body id 누출 24행은 완전히 고쳐졌다(322행 0건). README 도 resume 절이 새로 생겼다.r = n − m 은 오라클을 거치지 않고 subtasks[] 로 222/222 독립 검증되므로 읽기 격자는 161행 전부 쓸 수 있다(§3-1). eval/resume/README.md 와 카드가
“oracle.completed 가 전부 true 인 행만 배포된다(자격 4)”, “where the oracle could not finish were dropped” 라고 적고 있는데
게이트가 실제로는 안 걸렸다(stats.json 의 oracle.ok = null). 그중 10행은 steps=0 이라 budget 이 하한
400 으로 떨어졌다 — 오라클이 성공한 행의 유닛당 최소 비용이 262 스텝인데 이 행들은 1–4 유닛을 400 스텝에 끝내야 하므로
사실상 수행 불가. 이 27행을 빼면 134행/330정답이 남는다.k_dst(0–3)로 잘 막았지만 출발면 여분 k_src 가 2 또는 3 두 값뿐이다.
행은 명령문에서 n 을 그대로 읽을 수 있으므로, 출발면 잔여 on 만 세면 r = on − k_src — 기억 없이 r 을 인접한 두 값으로 좁힐 수 있다
(물체 슬롯 111개 중 94개(85%)에서 이 식이 정확히 성립, 나머지 17개는 실측이 계획보다 1–2개 적어 오히려 과대추정).
추가로 k_dst=0 인 15슬롯은 도착지를 세면 m 이 그대로 나오는 control 이다(설계 의도).instruction 이 visit_rooms nav 128건 전부
“Navigate to the table”, press_button manip 은 가전과 무관하게 “Press the button on the washing machine”(74/87 건이 실제 가전과 불일치).
L1 task_description·발화는 정상. 그리고 axes.fetch_scope 는 문서에 정의돼 있는데 161행 전부 null(fetch_one 낀 22행 포함).| 143b49ac (9/3, 임시) | 61871a3e (9/8, 본 설계) | |
|---|---|---|
| 컨텍스트 | 12편 / 11 하우스 (seed 1200·1201) · 165분 | 100편 / 100 하우스 (seed 2000) · 801분 · 34 GB |
| 편 구성 | task 4개를 순서대로 전부 수행 | task 2개 + 심부름(errand) 2–3개, 전환은 전부 사용자 발화. 편은 한쪽 또는 양쪽이 미완인 채 끝난다 |
| 질의 | 편당 4행(task type별 1) · 전부 미완 task 1개 | 편당 1–2행 · resume1 100 / multi 61(미완 task 2개를 둘 다 끝내야 함) |
| 문장 | “You were in the middle of something. Continue what you were doing.” | “You were interrupted earlier. Go back and finish (all of) what you were doing.” |
| 오답 유인 | 끝난 decoy task(다시 할 이유는 없음) | finished[] — 끝난 심부름·task. 다시 하면 no_finished_redo 실패(닫힌 서랍 또 닫기, check 를 또 보러 가기) |
| 채점 | 정확히 r개 유닛 | task마다 right_task ∧ no_redo ∧ attempt_count==r ∧ stop_correct, multi 는 전부 만족. attempt_count 는 시도 기준이라 파지 실패에 강인 |
| 문서 | README 에 resume 0건 | README §resume + eval/resume/README.md(필드 사전) 신규 |
finished[] 의 미끼 (그래서 C 는 multi 행이 없다)check 115 · 가서 보고만 오기(다시 보러 가면 실패)fetch_one 47 · 하나 가져오기open_fixture 44 / close_fixture 23 · 서랍·냉장고 열고 닫기close_laptop 8axes.interference 로 기록된다.{
"schema_version": "2.0",
"family": "resume",
"kind": "multi",
"query_id": "resume:train_123__2000:cut_06",
"context": "contexts/type2/train_123__2000",
"context_frames": [
0,
4453
],
"start_state": "states/cut_06.npz",
"query": "You were interrupted earlier. Go back and finish all of what you were doing.",
"cue": "bare",
"role": "main",
"commands": [
{
"task_id": "T1",
"frame": 1,
"kind": "task_start",
"text": "Navigate to every room in the house."
},
{
"task_id": "T1",
"frame": 341,
"kind": "stop_errand",
"text": "Hold on — go check whether the phone is still on the sofa in the living room first.",
"errand": "E1"
},
{
"task_id": "T1",
"frame": 694,
"kind": "resume",
"text": "Okay, continue what you were doing."
},
{
"task_id": "T1",
"frame": 1502,
"kind": "stop_errand",
"text": "Hold on — go check whether the pillow is still on the sofa in the living room first.",
"errand": "E2"
},
{
"task_id": "T2",
"frame": 2363,
"kind": "task_start",
"text": "Pick up three of the mugs from the dining table and place them in or on the countertop."
}
],
"budget_steps": 7818,
"cut_id": "cut_06",
"cut_phase": "clean",
"cut_site": "unit",
"pending": [
{
"task_id": "T1",
"type": "visit_rooms",
"n": 4,
"m": 2,
"r": 2,
"done_units": [
{
"unit": 0,
"obj": null,
"frame": 340
},
{
"unit": 1,
"obj": null,
"frame": 1501
}
],
"remaining_supply": null,
"supply_detail": null,
"pre_existing": {
"dst": null,
"dst_planned": null,
"src": null
},
"baseline_seen": null,
"container": null,
"src_surface": null,
"dst_surface": null,
"appliance": null,
"room": null,
"utterance": "Navigate to every room in the house.",
"start_frame": 1,
"in_room": true,
"gap_s": 118.1,
"visited_rooms": [
7,
6
]
},
{
"task_id": "T2",
"type": "move_objects",
"n": 3,
"m": 1,
"r": 2,
"done_units": [
{
"unit": 0,
"obj": "t2a0_Mug_2",
"frame": 4452
}
],
"remaining_supply": 4,
"supply_detail": {
"on": 4,
"at": 1,
"off": 0
},
"pre_existing": {
"dst": 2,
"dst_planned": 2,
"src": 2
},
"baseline_seen": null,
"container": null,
"src_surface": "diningtable_a2b8eb556a504cc29381a375cd56b397_1_0_6",
"dst_surface": "countertop_0732260734a411b46bbfe8ee47797dab_1_0_6",
"appliance": null,
"room": 6,
"utterance": "Pick up three of the mugs from the dining table and place them in or on the countertop.",
"start_frame": 2363,
"in_room": true,
"gap_s": 0.0
}
],
"finished": [
{
"task_id": "E1",
"type": "check",
"target": "cellulartelephone_43b2396be97b1322a94e498589888114_1_0_7",
"text": "go check whether the phone is still on the sofa in the living room",
"done": true
},
{
"task_id": "E2",
"type": "check",
"target": "pillow_4b2c3143f409251db55cb5ac5dcb1f3c_1_0_7",
"text": "go check whether the pillow is still on the sofa in the living room",
"done": true
}
],
"axes": {
"n_pending": 2,
"locality": "at_task",
"interference": [],
"last_stopped": "T2",
"r_total": 4,
"k_dst": [
null,
2
],
"variant": "B",
"fetch_scope": null
},
"oracle": {
"steps": 5212,
"unit_order": [
"T1:4",
"T1:5",
"T2:t2a1_Mug_2",
"T2:t2a2_Mug_2"
],
"completed": [
true,
true
],
"source": "episode+tail"
},
"house": "train_123",
"seed": 2000
}[
{
"schema_version": "2.0",
"family": "resume",
"kind": "multi",
"query_id": "resume:train_123__2000:cut_06:task_named",
"context": "contexts/type2/train_123__2000",
"context_frames": [
0,
4453
],
"start_state": "states/cut_06.npz",
"query": "You were interrupted earlier. Go back and finish all of what you were doing — visiting every room and moving the mugs to the countertop.",
"cue": "task_named",
"role": "ablation",
"commands": [
{
"task_id": "T1",
"frame": 1,
"kind": "task_start",
"text": "Navigate to every room in the house."
},
{
"task_id": "T1",
"frame": 341,
"kind": "stop_errand",
"text": "Hold on — go check whether the phone is still on the sofa in the living room first.",
"errand": "E1"
},
{
"task_id": "T1",
"frame": 694,
"kind": "resume",
"text": "Okay, continue what you were doing."
},
{
"task_id": "T1",
"frame": 1502,
"kind": "stop_errand",
"text": "Hold on — go check whether the pillow is still on the sofa in the living room first.",
"errand": "E2"
},
{
"task_id": "T2",
"frame": 2363,
"kind": "task_start",
"text": "Pick up three of the mugs from the dining table and place them in or on the countertop."
}
],
"budget_steps": 7818,
"cut_id": "cut_06",
"cut_phase": "clean",
"cut_site": "unit",
"pending": [
{
"task_id": "T1",
"type": "visit_rooms",
"n": 4,
"m": 2,
"r": 2,
"done_units": [
{
"unit": 0,
"obj": null,
"frame": 340
},
{
"unit": 1,
"obj": null,
"frame": 1501
}
],
"remaining_supply": null,
"supply_detail": null,
"pre_existing": {
"dst": null,
"dst_planned": null,
"src": null
},
"baseline_seen": null,
"container": null,
"src_surface": null,
"dst_surface": null,
"appliance": null,
"room": null,
"utterance": "Navigate to every room in the house.",
"start_frame": 1,
"in_room": true,
"gap_s": 118.1,
"visited_rooms": [
7,
6
]
},
{
"task_id": "T2",
"type": "move_objects",
"n": 3,
"m": 1,
"r": 2,
"done_units": [
{
"unit": 0,
"obj": "t2a0_Mug_2",
"frame": 4452
}
],
"remaining_supply": 4,
"supply_detail": {
"on": 4,
"at": 1,
"off": 0
},
"pre_existing": {
"dst": 2,
"dst_planned": 2,
"src": 2
},
"baseline_seen": null,
"container": null,
"src_surface": "diningtable_a2b8eb556a504cc29381a375cd56b397_1_0_6",
"dst_surface": "countertop_0732260734a411b46bbfe8ee47797dab_1_0_6",
"appliance": null,
"room": 6,
"utterance": "Pick up three of the mugs from the dining table and place them in or on the countertop.",
"start_frame": 2363,
"in_room": true,
"gap_s": 0.0
}
],
"finished": [
{
"task_id": "E1",
"type": "check",
"target": "cellulartelephone_43b2396be97b1322a94e498589888114_1_0_7",
"text": "go check whether the phone is still on the sofa in the living room",
"done": true
},
{
"task_id": "E2",
"type": "check",
"target": "pillow_4b2c3143f409251db55cb5ac5dcb1f3c_1_0_7",
"text": "go check whether the pillow is still on the sofa in the living room",
"done": true
}
],
"axes": {
"n_pending": 2,
"locality": "at_task",
"interference": [],
"last_stopped": "T2",
"r_total": 4,
"k_dst": [
null,
2
],
"variant": "B",
"fetch_scope": null
},
"oracle": {
"steps": 5212,
"unit_order": [
"T1:4",
"T1:5",
"T2:t2a1_Mug_2",
"T2:t2a2_Mug_2"
],
"completed": [
true,
true
],
"source": "episode+tail"
},
"house": "train_123",
"seed": 2000
},
{
"schema_version": "2.0",
"family": "resume",
"kind": "multi",
"query_id": "resume:train_123__2000:cut_06:task_named_n",
"context": "contexts/type2/train_123__2000",
"context_frames": [
0,
4453
],
"start_state": "states/cut_06.npz",
"query": "You were interrupted earlier. Go back and finish all of what you were doing — visiting every room and moving the mugs to the countertop — three in total.",
"cue": "task_named_n",
"role": "ablation",
"commands": [
{
"task_id": "T1",
"frame": 1,
"kind": "task_start",
"text": "Navigate to every room in the house."
},
{
"task_id": "T1",
"frame": 341,
"kind": "stop_errand",
"text": "Hold on — go check whether the phone is still on the sofa in the living room first.",
"errand": "E1"
},
{
"task_id": "T1",
"frame": 694,
"kind": "resume",
"text": "Okay, continue what you were doing."
},
{
"task_id": "T1",
"frame": 1502,
"kind": "stop_errand",
"text": "Hold on — go check whether the pillow is still on the sofa in the living room first.",
"errand": "E2"
},
{
"task_id": "T2",
"frame": 2363,
"kind": "task_start",
"text": "Pick up three of the mugs from the dining table and place them in or on the countertop."
}
],
"budget_steps": 7818,
"cut_id": "cut_06",
"cut_phase": "clean",
"cut_site": "unit",
"pending": [
{
"task_id": "T1",
"type": "visit_rooms",
"n": 4,
"m": 2,
"r": 2,
"done_units": [
{
"unit": 0,
"obj": null,
"frame": 340
},
{
"unit": 1,
"obj": null,
"frame": 1501
}
],
"remaining_supply": null,
"supply_detail": null,
"pre_existing": {
"dst": null,
"dst_planned": null,
"src": null
},
"baseline_seen": null,
"container": null,
"src_surface": null,
"dst_surface": null,
"appliance": null,
"room": null,
"utterance": "Navigate to every room in the house.",
"start_frame": 1,
"in_room": true,
"gap_s": 118.1,
"visited_rooms": [
7,
6
]
},
{
"task_id": "T2",
"type": "move_objects",
"n": 3,
"m": 1,
"r": 2,
"done_units": [
{
"unit": 0,
"obj": "t2a0_Mug_2",
"frame": 4452
}
],
"remaining_supply": 4,
"supply_detail": {
"on": 4,
"at": 1,
"off": 0
},
"pre_existing": {
"dst": 2,
"dst_planned": 2,
"src": 2
},
"baseline_seen": null,
"container": null,
"src_surface": "diningtable_a2b8eb556a504cc29381a375cd56b397_1_0_6",
"dst_surface": "countertop_0732260734a411b46bbfe8ee47797dab_1_0_6",
"appliance": null,
"room": 6,
"utterance": "Pick up three of the mugs from the dining table and place them in or on the countertop.",
"start_frame": 2363,
"in_room": true,
"gap_s": 0.0
}
],
"finished": [
{
"task_id": "E1",
"type": "check",
"target": "cellulartelephone_43b2396be97b1322a94e498589888114_1_0_7",
"text": "go check whether the phone is still on the sofa in the living room",
"done": true
},
{
"task_id": "E2",
"type": "check",
"target": "pillow_4b2c3143f409251db55cb5ac5dcb1f3c_1_0_7",
"text": "go check whether the pillow is still on the sofa in the living room",
"done": true
}
],
"axes": {
"n_pending": 2,
"locality": "at_task",
"interference": [],
"last_stopped": "T2",
"r_total": 4,
"k_dst": [
null,
2
],
"variant": "B",
"fetch_scope": null
},
"oracle": {
"steps": 5212,
"unit_order": [
"T1:4",
"T1:5",
"T2:t2a1_Mug_2",
"T2:t2a2_Mug_2"
],
"completed": [
true,
true
],
"source": "episode+tail"
},
"house": "train_123",
"seed": 2000
}
]{
"schema_version": "2.0",
"family": "resume",
"built_at": "2026-09-08T08:20:45+00:00",
"rows": 161,
"answers": 412,
"contexts": 100,
"rows_per_context": {
"min": 1,
"max": 2,
"mean": 1.61
},
"dropped": {
"total": 0,
"by_reason": {}
},
"drop_rate": 0.0,
"oracle": {
"run": 161,
"ok": null
},
"axes": {
"kind": {
"multi": 61,
"resume1": 100
},
"locality": {
"at_task": 93,
"away": 68
},
"n_pending": {
"1": 100,
"2": 61
},
"variant": {
"A": 48,
"B": 74,
"C": 39
},
"cut_site": {
"errand_end": 93,
"unit": 68
},
"r_total": {
"1": 31,
"2": 56,
"3": 38,
"4": 25,
"5": 11
},
"pending_type": {
"move_objects": 44,
"press_button": 49,
"put_in_container": 67,
"visit_rooms": 62
},
"pending_r": {
"1": 96,
"2": 73,
"3": 42,
"4": 11
},
"m_zero": {
"False": 222
},
"k_dst": {
"0": 15,
"1": 35,
"2": 31,
"3": 30
},
"in_room": {
"False": 128,
"True": 94
},
"interference": {
"check": 41,
"close_fixture": 11,
"close_laptop": 3,
"fetch_one": 22,
"open_fixture": 16
},
"fetch_scope": {
"None": 161
},
"finished_n": {
"0": 14,
"1": 42,
"2": 73,
"3": 32
},
"oracle_source": {
"episode+tail": 52,
"tail": 109
},
"budget_steps": {
"n": 161,
"median": 4452,
"p10": 1177,
"p90": 9666,
"max": 17214
},
"gap_s": {
"n": 222,
"median": 47.8,
"p10": 0.0,
"p90": 243.7,
"max": 477.1
},
"context_frames": {
"n": 161,
"median": 8973,
"p10": 2510,
"p90": 13578,
"max": 20763
}
},
"by_context": {
"contexts/type2/train_123__2000": 2,
"contexts/type2/train_1543__2000": 1,
"contexts/type2/train_1588__2000": 1,
"contexts/type2/train_1639__2000": 2,
"contexts/type2/train_1843__2000": 2,
"contexts/type2/train_204__2000": 2,
"contexts/type2/train_2389__2000": 1,
"contexts/type2/train_2662__2000": 1,
"contexts/type2/train_2739__2000": 2,
"contexts/type2/train_2773__2000": 2,
"contexts/type2/train_2852__2000": 1,
"contexts/type2/train_2874__2000": 2,
"contexts/type2/train_2877__2000": 2,
"contexts/type2/train_2978__2000": 1,
"contexts/type2/train_307__2000": 2,
"contexts/type2/train_308__2000": 2,
"contexts/type2/train_3098__2000": 2,
"contexts/type2/train_3118__2000": 1,
"contexts/type2/train_3252__2000": 2,
"contexts/type2/train_3274__2000": 1,
"contexts/type2/train_3378__2000": 1,
"contexts/type2/train_3553__2000": 1,
"contexts/type2/train_3585__2000": 2,
"contexts/type2/train_3610__2000": 2,
"contexts/type2/train_3667__2000": 1,
"contexts/type2/train_3716__2000": 1,
"contexts/type2/train_377__2000": 2,
"contexts/type2/train_3897__2000": 2,
"contexts/type2/train_3911__2000": 2,
"contexts/type2/train_3953__2000": 1,
"contexts/type2/train_4011__2000": 2,
"contexts/type2/train_4193__2000": 1,
"contexts/type2/train_4355__2000": 2,
"contexts/type2/train_4409__2000": 2,
"contexts/type2/train_4467__2000": 1,
"contexts/type2/train_4564__2000": 2,
"contexts/type2/train_4660__2000": 1,
"contexts/type2/train_4772__2000": 2,
"contexts/type2/train_4837__2000": 2,
"contexts/type2/train_4844__2000": 2,
"contexts/type2/train_4915__2000": 1,
"contexts/type2/train_4918__2000": 2,
"contexts/type2/train_4958__2000": 1,
"contexts/type2/train_4998__2000": 2,
"contexts/type2/train_5057__2000": 1,
"contexts/type2/train_5092__2000": 2,
"contexts/type2/train_5134__2000": 1,
"contexts/type2/train_527__2000": 2,
"contexts/type2/train_5374__2000": 1,
"contexts/type2/train_5383__2000": 2,
"contexts/type2/train_5522__2000": 2,
"contexts/type2/train_5730__2000": 2,
"contexts/type2/train_5836__2000": 2,
"contexts/type2/train_5861__2000": 1,
"contexts/type2/train_5886__2000": 1,
"contexts/type2/train_5958__2000": 1,
"contexts/type2/train_6009__2000": 1,
"contexts/type2/train_6020__2000": 2,
"contexts/type2/train_6049__2000": 2,
"contexts/type2/train_6278__2000": 1,
"contexts/type2/train_6325__2000": 2,
"contexts/type2/train_6497__2000": 1,
"contexts/type2/train_666__2000": 1,
"contexts/type2/train_6844__2000": 2,
"contexts/type2/train_6885__2000": 1,
"contexts/type2/train_6948__2000": 2,
"contexts/type2/train_7000__2000": 2,
"contexts/type2/train_7037__2000": 1,
"contexts/type2/train_7075__2000": 2,
"contexts/type2/train_7151__2000": 1,
"contexts/type2/train_7256__2000": 2,
"contexts/type2/train_7332__2000": 2,
"contexts/type2/train_746__2000": 2,
"contexts/type2/train_8190__2000": 2,
"contexts/type2/train_8263__2000": 2,
"contexts/type2/train_8272__2000": 1,
"contexts/type2/train_8293__2000": 1,
"contexts/type2/train_8325__2000": 2,
"contexts/type2/train_8336__2000": 2,
"contexts/type2/train_8423__2000": 1,
"contexts/type2/train_8513__2000": 2,
"contexts/type2/train_8547__2000": 2,
"contexts/type2/train_8554__2000": 2,
"contexts/type2/train_8590__2000": 2,
"contexts/type2/train_8654__2000": 1,
"contexts/type2/train_8808__2000": 2,
"contexts/type2/train_8825__2000": 1,
"contexts/type2/train_8997__2000": 2,
"contexts/type2/train_910__2000": 2,
"contexts/type2/train_9149__2000": 2,
"contexts/type2/train_9402__2000": 2,
"contexts/type2/train_9578__2000": 2,
"contexts/type2/train_9635__2000": 2,
"contexts/type2/train_9651__2000": 2,
"contexts/type2/train_9864__2000": 1,
"contexts/type2/train_9912__2000": 2,
"contexts/type2/train_9918__2000": 1,
"contexts/type2/train_9965__2000": 2,
"contexts/type2/train_9986__2000": 1,
"contexts/type2/train_9987__2000": 2
}
}| cue | 행 | 문장 | 모델이 스스로 알아내야 하는 것 |
|---|---|---|---|
| bare (main) | 161 | You were interrupted earlier. Go back and finish what you were doing. (multi 는 all of what) |
① 어느 task 가 미완인지(끝난 심부름·task 제외) ② 몇 개 했는지(m) ③ 남은 r개만, ④ multi 면 둘 다 |
| task_named | 161 | 위 + — putting the mugs into the basket. | ② ③ (task 는 알려줌) |
| task_named_n | 161 | 위 + — four in total. | ② ③ (총 개수 n 도 알려줌 → m 만 기억하면 됨) |
…on the microwaveoven a58378a4…c0807c 1 0 6 — five in total.). 이번 322행에는 body id·좌표 꼬리표가 0건이고,
“N in total” 의 N 도 161행 전부 pending 의 n 과 일치한다(visit_rooms 는 "every room" 이라 수를 안 붙임 — 일관됨).locality 는 컷 자리와 붙어 있다(errand_end 93 중 68은 away — 심부름 끝난 자리가 다른 방). finished 는 행당 0–3개(0은 14행뿐)라
"이미 끝난 것을 다시 하지 않기" 가 거의 모든 행에서 채점된다. r_total 은 2가 최빈(56행), 5까지 있다.161행 · 322 ablation 행 · 100편의 subtasks.json/states 전부를 대상으로 31항목을 돌렸다
(tmp/hf_check/inspect_resume_61871a3e.py).
| 판정 | 검사 | 건 | 내용 |
|---|---|---|---|
| 🔴 수정 필요 | oracle_incomplete | 27 | 대본 로봇(오라클)이 미완 task 를 끝내지 못한 채 배포된 행. eval/resume/README 의 자격 4(“oracle.completed 가 전부 true 인 행만 배포”)와 카드의 “where the oracle could not finish were dropped” 에 정면으로 어긋난다. stats.json 의 oracle.ok = null 이 게이트 미실행의 흔적.목록 27/27["resume:train_2739__2000:cut_04", "resume1", 1, 0, 0, 400, ["T1:put_in_container:r=1:FAIL"]] ["resume:train_2739__2000:cut_05", "multi", 4, 1, 1235, 1852, ["T1:put_in_container:r=1:FAIL", "T2:visit_rooms:r=3:FAIL"]] ["resume:train_2773__2000:cut_05", "resume1", 2, 1, 1980, 2970, ["T1:put_in_container:r=2:FAIL"]] ["resume:train_2773__2000:cut_07", "multi", 5, 1, 1980, 2970, ["T1:put_in_container:r=2:FAIL", "T2:press_button:r=3:FAIL"]] ["resume:train_3118__2000:cut_06", "resume1", 4, 3, 591, 886, ["T2:press_button:r=4:FAIL"]] ["resume:train_3252__2000:cut_00", "resume1", 4, 2, 394, 591, ["T1:press_button:r=4:FAIL"]] ["resume:train_3252__2000:cut_10", "multi", 3, 0, 0, 400, ["T1:press_button:r=2:FAIL", "T2:put_in_container:r=1:FAIL"]] ["resume:train_3274__2000:cut_10", "resume1", 1, 0, 0, 400, ["T2:put_in_container:r=1:FAIL"]] ["resume:train_3667__2000:cut_07", "resume1", 4, 0, 0, 400, ["T2:press_button:r=4:FAIL"]] ["resume:train_3911__2000:cut_02", "resume1", 2, 2, 5401, 8101, ["T1:put_in_container:r=2:FAIL"]] ["resume:train_3911__2000:cut_06", "multi", 4, 1, 2847, 4270, ["T1:put_in_container:r=1:FAIL", "T2:visit_rooms:r=3:FAIL"]] ["resume:train_4355__2000:cut_04", "resume1", 2, 0, 0, 400, ["T1:put_in_container:r=2:FAIL"]] ["resume:train_4355__2000:cut_07", "multi", 4, 0, 0, 400, ["T1:put_in_container:r=2:FAIL", "T2:visit_rooms:r=2:FAIL"]] ["resume:train_4918__2000:cut_00", "resume1", 2, 2, 4239, 6358, ["T1:move_objects:r=2:FAIL"]] ["resume:train_4918__2000:cut_08", "multi", 3, 1, 2253, 3379, ["T1:move_objects:r=1:FAIL", "T2:put_in_container:r=2:FAIL"]] ["resume:train_4998__2000:cut_07", "multi", 3, 2, 4864, 7296, ["T1:put_in_container:r=1:OK", "T2:move_objects:r=2:FAIL"]] ["resume:train_5134__2000:cut_06", "resume1", 2, 2, 2359, 3538, ["T2:press_button:r=2:FAIL"]] ["resume:train_5522__2000:cut_06", "multi", 5, 3, 5053, 7579, ["T1:press_button:r=1:OK", "T2:put_in_container:r=4:FAIL"]] ["resume:train_7000__2000:cut_07", "multi", 5, 4, 5461, 8191, ["T1:press_button:r=2:OK", "T2:put_in_container:r=3:FAIL"]] ["resume:train_7151__2000:cut_08", "resume1", 2, 0, 0, 400, ["T2:press_button:r=2:FAIL"]] ["resume:train_746__2000:cut_10", "multi", 5, 3, 5929, 8893, ["T1:press_button:r=1:OK", "T2:put_in_container:r=4:FAIL"]] ["resume:train_8423__2000:cut_10", "resume1", 2, 2, 2581, 3871, ["T2:visit_rooms:r=2:FAIL"]] ["resume:train_8654__2000:cut_08", "resume1", 1, 0, 0, 400, ["T2:press_button:r=1:FAIL"]] ["resume:train_9965__2000:cut_02", "resume1", 3, 3, 3829, 5743, ["T1:visit_rooms:r=3:FAIL"]] ["resume:train_9965__2000:cut_08", "multi", 5, 2, 3104, 4656, ["T1:visit_rooms:r=2:FAIL", "T2:move_objects:r=3:FAIL"]] ["resume:train_9987__2000:cut_05", "resume1", 1, 0, 0, 400, ["T1:put_in_container:r=1:FAIL"]] ["resume:train_9987__2000:cut_07", "multi", 3, 0, 0, 400, ["T1:put_in_container:r=1:FAIL", "T2:visit_rooms:r=2:FAIL"]] |
| 🔴 수정 필요 | oracle_zero_budget_floor | 10 | 위 중 steps=0(유닛을 하나도 못 굴림) → budget 이 하한 400 으로 떨어진 행. 오라클 성공 행의 유닛당 최소 비용이 262 스텝이라 1–4 유닛을 400 스텝에 끝내는 것은 불가능.목록 10/10["resume:train_2739__2000:cut_04", 1, 400] ["resume:train_3252__2000:cut_10", 3, 400] ["resume:train_3274__2000:cut_10", 1, 400] ["resume:train_3667__2000:cut_07", 4, 400] ["resume:train_4355__2000:cut_04", 2, 400] ["resume:train_4355__2000:cut_07", 4, 400] ["resume:train_7151__2000:cut_08", 2, 400] ["resume:train_8654__2000:cut_08", 1, 400] ["resume:train_9987__2000:cut_05", 1, 400] ["resume:train_9987__2000:cut_07", 3, 400] |
| 통과 | cut_frame_mismatch | 0 | 행의 context_frames[1] = subtasks.cuts[].frame = states/index.json 프레임 3중 일치 |
| 통과 | context_frames_bad | 0 | 구간이 [0, f_cut] 이고 f_cut 이 에피소드 길이 안 |
| 통과 | start_state_missing | 0 | states/cut_NN.npz 파일 존재 (qpos/qvel/ctrl/time 키도 161/161 확인) |
| 통과 | commands_ne_pre_cut | 0 | commands[] = 컷 직전까지의 발화 전량과 정확히 일치 — 컷 프레임의 발화(다음 명령)는 일부러 빠져 있다(누출 방지, 82행 해당) |
| 통과 | finished_errands_mismatch | 0 | finished[] 의 심부름 = 컷 이전에 종료된 심부름 전량 |
| 통과 | pending_ne_cut | 0 | pending[] = cuts[].pending |
| 통과 | kind_ne_pending_len | 0 | kind(resume1/multi) ↔ pending 개수(1/2) |
| 통과 | query_wording | 0 | 문장의 all of what ↔ multi |
| 통과 | r_arithmetic | 0 | r = n − m 이고 len(done_units) = m |
| 통과 | m_zero | 0 | 모든 pending 이 m ≥ 1 — 즉 “시작은 했는데 덜 끝낸” 상태만 낸다(m=0 이면 기억이 필요 없다) |
| 통과 | done_unit_after_cut | 0 | 완료 유닛 프레임이 전부 컷 이전 |
| 통과 | budget_formula | 0 | budget_steps = max(400, ⌊1.5 × oracle.steps⌋) |
| 통과 | unit_order_len | 0 | 오라클 unit_order 길이 = r_total (오라클 성공 행 기준) |
| 통과 | supply_le_r | 0 | 물체 task 는 출발면 잔여 on 이 항상 r 보다 크다 — “남은 걸 다 옮겨”로는 못 푼다 |
| 통과 | supply_at_ne_m | 0 | supply_detail.at = m (로봇이 도착지에 놓은 수). 장면에서 세면 여기에 k_dst 가 더해진다 |
| 통과 | visit_rooms_arithmetic | 0 | visited_rooms 길이 = m, 편의 방 목록에서 뺀 나머지 = r |
| 통과 | supply_on_nonobject | 0 | press_button·visit_rooms 에는 supply 필드가 없다(흔적이 없으니 셀 것도 없다) |
| 통과 | body_id_leak | 0 | query·commands·finished·utterance 에 32자 body id / 좌표 꼬리표 없음 |
| 통과 | ablation_body_id_leak | 0 | cue ablation 322행 문장에 body id 없음 — 9/3 🔴 24행이 해소됨 |
| 통과 | ablation_payload_ne_main | 0 | ablation 행은 query/cue/role/query_id 외 모든 필드가 main 과 바이트 동일 |
| 통과 | ablation_count_ne_2 | 0 | 행마다 ablation 형제가 정확히 2개(task_named, task_named_n) |
| 통과 | episode_not_ok | 0 | episode_ok=true, drop_reason=null 100/100 |
| 통과 | unit_failed | 0 | 유닛 768개 전부 성공 (실패 편은 생성 단계에서 폐기됨) |
| 통과 | errand_failed | 0 | 심부름 237개 전부 성공 |
| 🟠 라벨/문서 | supply_sum_ne_n_plus_ksrc | 14 | on+at+off 가 계획값 n_planned + k_src 와 안 맞는 슬롯(2개 부족). 자격(on > r)은 여전히 만족하지만 k_src 가 ‘계획값’이라 실측과 어긋난다. 8/14 는 아래 오라클 미완주 행과 겹친다 — 같은 편에서 물체가 사라졌을 가능성.목록 14/14["resume:train_2739__2000:cut_04", "T1", {"on": 2, "at": 3, "off": 0}, 4, 3] ["resume:train_2739__2000:cut_05", "T1", {"on": 2, "at": 3, "off": 0}, 4, 3] ["resume:train_2773__2000:cut_05", "T1", {"on": 3, "at": 2, "off": 0}, 4, 2] ["resume:train_2773__2000:cut_07", "T1", {"on": 3, "at": 2, "off": 0}, 4, 2] ["resume:train_3911__2000:cut_02", "T1", {"on": 4, "at": 1, "off": 0}, 3, 3] ["resume:train_3911__2000:cut_06", "T1", {"on": 3, "at": 2, "off": 0}, 3, 3] ["resume:train_4355__2000:cut_04", "T1", {"on": 3, "at": 3, "off": 0}, 5, 3] ["resume:train_4355__2000:cut_07", "T1", {"on": 3, "at": 3, "off": 0}, 5, 3] ["resume:train_4844__2000:cut_09", "T2", {"on": 3, "at": 1, "off": 0}, 4, 2] ["resume:train_5383__2000:cut_00", "T1", {"on": 4, "at": 1, "off": 0}, 5, 3] ["resume:train_5383__2000:cut_08", "T1", {"on": 2, "at": 3, "off": 0}, 5, 3] ["resume:train_6948__2000:cut_08", "T2", {"on": 2, "at": 2, "off": 0}, 4, 3] ["resume:train_9402__2000:cut_05", "T1", {"on": 3, "at": 4, "off": 0}, 5, 3] ["resume:train_9402__2000:cut_07", "T1", {"on": 3, "at": 4, "off": 0}, 5, 3] |
| 🟠 라벨/문서 | L2_visit_nav_placeholder | 128 | visit_rooms 유닛의 L2 nav instruction 이 방 이름 대신 고정 문자열 “Navigate to the table”. L1 task_description(“Navigate to the bedroom”)은 정상 — 9/3 지적과 동일.목록 30/128["train_123__2000", "t1u0", "Navigate to the table", "Navigate to the living room"] ["train_123__2000", "t1u1", "Navigate to the table", "Navigate to the kitchen"] ["train_1543__2000", "t1u0", "Navigate to the table", "Navigate to the bedroom"] ["train_1543__2000", "t1u1", "Navigate to the table", "Navigate to the kitchen"] ["train_1543__2000", "t1u2", "Navigate to the table", "Navigate to the living room"] ["train_1543__2000", "t1u3", "Navigate to the table", "Navigate to the bathroom"] ["train_204__2000", "t2u0", "Navigate to the table", "Navigate to the bedroom"] ["train_204__2000", "t2u1", "Navigate to the table", "Navigate to the living room"] ["train_204__2000", "t2u2", "Navigate to the table", "Navigate to the bathroom"] ["train_2389__2000", "t2u0", "Navigate to the table", "Navigate to the kitchen"] ["train_2389__2000", "t2u1", "Navigate to the table", "Navigate to the living room"] ["train_2739__2000", "t2u0", "Navigate to the table", "Navigate to the bedroom"] ["train_2739__2000", "t2u1", "Navigate to the table", "Navigate to the living room"] ["train_2852__2000", "t2u0", "Navigate to the table", "Navigate to the bedroom"] ["train_2852__2000", "t2u1", "Navigate to the table", "Navigate to the kitchen"] ["train_2852__2000", "t2u2", "Navigate to the table", "Navigate to the bathroom"] ["train_2877__2000", "t2u0", "Navigate to the table", "Navigate to the living room"] ["train_2877__2000", "t2u1", "Navigate to the table", "Navigate to the bedroom"] ["train_2877__2000", "t2u2", "Navigate to the table", "Navigate to the bathroom"] ["train_307__2000", "t1u0", "Navigate to the table", "Navigate to the kitchen"] ["train_307__2000", "t1u1", "Navigate to the table", "Navigate to the bedroom"] ["train_307__2000", "t1u2", "Navigate to the table", "Navigate to the living room"] ["train_308__2000", "t1u0", "Navigate to the table", "Navigate to the kitchen"] ["train_308__2000", "t1u1", "Navigate to the table", "Navigate to the bedroom"] ["train_308__2000", "t1u2", "Navigate to the table", "Navigate to the bathroom"] ["train_3098__2000", "t2u0", "Navigate to the table", "Navigate to the bathroom"] ["train_3098__2000", "t2u1", "Navigate to the table", "Navigate to the kitchen"] ["train_3274__2000", "t1u0", "Navigate to the table", "Navigate to the living room"] ["train_3274__2000", "t1u1", "Navigate to the table", "Navigate to the bedroom"] ["train_3274__2000", "t1u2", "Navigate to the table", "Navigate to the kitchen"] … 외 98건 |
| 🟠 라벨/문서 | L2_press_manip_wrong_appliance | 74 | press_button manip instruction 이 가전과 무관하게 “Press the button on the washing machine” 고정 — 실제 가전은 전자레인지 45·건조기 15·커피메이커 14 (세탁기 13건만 우연히 맞음).목록 30/74["train_2662__2000", "t1u0", "Press the button on the washing machine", "microwaveoven"] ["train_2662__2000", "t1u1", "Press the button on the washing machine", "microwaveoven"] ["train_2662__2000", "t1u2", "Press the button on the washing machine", "microwaveoven"] ["train_2662__2000", "t1u3", "Press the button on the washing machine", "microwaveoven"] ["train_2662__2000", "t1u4", "Press the button on the washing machine", "microwaveoven"] ["train_2874__2000", "t1u0", "Press the button on the washing machine", "coffeemaker"] ["train_2978__2000", "t1u0", "Press the button on the washing machine", "coffeemaker"] ["train_2978__2000", "t1u1", "Press the button on the washing machine", "coffeemaker"] ["train_2978__2000", "t1u2", "Press the button on the washing machine", "coffeemaker"] ["train_3118__2000", "t2u0", "Press the button on the washing machine", "clothesdryer"] ["train_3118__2000", "t2u1", "Press the button on the washing machine", "clothesdryer"] ["train_3118__2000", "t2u2", "Press the button on the washing machine", "clothesdryer"] ["train_3118__2000", "t2u3", "Press the button on the washing machine", "clothesdryer"] ["train_3252__2000", "t1u0", "Press the button on the washing machine", "clothesdryer"] ["train_3252__2000", "t1u1", "Press the button on the washing machine", "clothesdryer"] ["train_3252__2000", "t1u2", "Press the button on the washing machine", "clothesdryer"] ["train_3553__2000", "t2u0", "Press the button on the washing machine", "microwaveoven"] ["train_3553__2000", "t2u1", "Press the button on the washing machine", "microwaveoven"] ["train_3610__2000", "t1u0", "Press the button on the washing machine", "coffeemaker"] ["train_3667__2000", "t2u0", "Press the button on the washing machine", "clothesdryer"] ["train_4193__2000", "t1u0", "Press the button on the washing machine", "microwaveoven"] ["train_4193__2000", "t1u1", "Press the button on the washing machine", "microwaveoven"] ["train_4193__2000", "t1u2", "Press the button on the washing machine", "microwaveoven"] ["train_4193__2000", "t1u3", "Press the button on the washing machine", "microwaveoven"] ["train_4467__2000", "t2u0", "Press the button on the washing machine", "coffeemaker"] ["train_4467__2000", "t2u1", "Press the button on the washing machine", "coffeemaker"] ["train_4915__2000", "t2u0", "Press the button on the washing machine", "microwaveoven"] ["train_4915__2000", "t2u1", "Press the button on the washing machine", "microwaveoven"] ["train_5134__2000", "t2u0", "Press the button on the washing machine", "microwaveoven"] ["train_5134__2000", "t2u1", "Press the button on the washing machine", "microwaveoven"] … 외 44건 |
| 🟠 라벨/문서 | fetch_scope_never_set | 22 | axes.fetch_scope 는 eval README 에 “fetch_one errand 가 낀 행에만” 이라고 정의돼 있는데 161행 전부 null — fetch_one 이 낀 행에서도 안 채워진다(죽은 축).목록 22/22"resume:train_1843__2000:cut_06" "resume:train_204__2000:cut_05" "resume:train_3098__2000:cut_03" "resume:train_3378__2000:cut_10" "resume:train_3585__2000:cut_02" "resume:train_4011__2000:cut_02" "resume:train_4355__2000:cut_04" "resume:train_4772__2000:cut_04" "resume:train_4772__2000:cut_08" "resume:train_5522__2000:cut_05" "resume:train_5958__2000:cut_07" "resume:train_6844__2000:cut_05" "resume:train_6948__2000:cut_08" "resume:train_8263__2000:cut_05" "resume:train_8590__2000:cut_02" "resume:train_910__2000:cut_05" "resume:train_910__2000:cut_08" "resume:train_9149__2000:cut_03" "resume:train_9402__2000:cut_05" "resume:train_9965__2000:cut_02" "resume:train_9965__2000:cut_08" "resume:train_9987__2000:cut_05" |
| ℹ️ 설계 | control_k_dst_0 | 15 | k_dst=0 — 도착지를 세면 m 이 그대로 나오는 control 슬롯. 설계상 의도된 대조군이고 채점에서 분리 표기하면 된다.목록 15/15["resume:train_1543__2000:cut_06", "T2"] ["resume:train_1639__2000:cut_10", "T2"] ["resume:train_2978__2000:cut_07", "T2"] ["resume:train_3610__2000:cut_04", "T2"] ["resume:train_4998__2000:cut_07", "T2"] ["resume:train_5522__2000:cut_06", "T2"] ["resume:train_6049__2000:cut_08", "T2"] ["resume:train_6278__2000:cut_09", "T2"] ["resume:train_7000__2000:cut_07", "T2"] ["resume:train_8336__2000:cut_10", "T2"] ["resume:train_8808__2000:cut_04", "T2"] ["resume:train_9651__2000:cut_00", "T1"] ["resume:train_9651__2000:cut_09", "T1"] ["resume:train_9987__2000:cut_05", "T1"] ["resume:train_9987__2000:cut_07", "T1"] |
“대본 로봇이 이 컷에서 미완 task 를 다 끝내는 데 든 비용”이 오라클인데, 아래 행들은 completed 에 false 가 있다.
곧 정답이 실행 가능하다는 증거가 없는 행이고, 예산은 그 미완주 오라클로 계산돼 있다.
특히 steps=0 인 10행은 예산이 하한 400 으로 떨어져 어떤 정책도 통과할 수 없다.
| query_id | kind | 필요 유닛 | 오라클이 실제로 굴린 유닛 | steps | budget | 슬롯별 판정 |
|---|---|---|---|---|---|---|
resume:train_2739__2000:cut_04 | resume1 | 1 | 0 | 0 | 400 ← 하한 | T1:put_in_container:r=1:FAIL |
resume:train_2739__2000:cut_05 | multi | 4 | 1 | 1235 | 1852 | T1:put_in_container:r=1:FAIL · T2:visit_rooms:r=3:FAIL |
resume:train_2773__2000:cut_05 | resume1 | 2 | 1 | 1980 | 2970 | T1:put_in_container:r=2:FAIL |
resume:train_2773__2000:cut_07 | multi | 5 | 1 | 1980 | 2970 | T1:put_in_container:r=2:FAIL · T2:press_button:r=3:FAIL |
resume:train_3118__2000:cut_06 | resume1 | 4 | 3 | 591 | 886 | T2:press_button:r=4:FAIL |
resume:train_3252__2000:cut_00 | resume1 | 4 | 2 | 394 | 591 | T1:press_button:r=4:FAIL |
resume:train_3252__2000:cut_10 | multi | 3 | 0 | 0 | 400 ← 하한 | T1:press_button:r=2:FAIL · T2:put_in_container:r=1:FAIL |
resume:train_3274__2000:cut_10 | resume1 | 1 | 0 | 0 | 400 ← 하한 | T2:put_in_container:r=1:FAIL |
resume:train_3667__2000:cut_07 | resume1 | 4 | 0 | 0 | 400 ← 하한 | T2:press_button:r=4:FAIL |
resume:train_3911__2000:cut_02 | resume1 | 2 | 2 | 5401 | 8101 | T1:put_in_container:r=2:FAIL |
resume:train_3911__2000:cut_06 | multi | 4 | 1 | 2847 | 4270 | T1:put_in_container:r=1:FAIL · T2:visit_rooms:r=3:FAIL |
resume:train_4355__2000:cut_04 | resume1 | 2 | 0 | 0 | 400 ← 하한 | T1:put_in_container:r=2:FAIL |
resume:train_4355__2000:cut_07 | multi | 4 | 0 | 0 | 400 ← 하한 | T1:put_in_container:r=2:FAIL · T2:visit_rooms:r=2:FAIL |
resume:train_4918__2000:cut_00 | resume1 | 2 | 2 | 4239 | 6358 | T1:move_objects:r=2:FAIL |
resume:train_4918__2000:cut_08 | multi | 3 | 1 | 2253 | 3379 | T1:move_objects:r=1:FAIL · T2:put_in_container:r=2:FAIL |
resume:train_4998__2000:cut_07 | multi | 3 | 2 | 4864 | 7296 | T1:put_in_container:r=1:OK · T2:move_objects:r=2:FAIL |
resume:train_5134__2000:cut_06 | resume1 | 2 | 2 | 2359 | 3538 | T2:press_button:r=2:FAIL |
resume:train_5522__2000:cut_06 | multi | 5 | 3 | 5053 | 7579 | T1:press_button:r=1:OK · T2:put_in_container:r=4:FAIL |
resume:train_7000__2000:cut_07 | multi | 5 | 4 | 5461 | 8191 | T1:press_button:r=2:OK · T2:put_in_container:r=3:FAIL |
resume:train_7151__2000:cut_08 | resume1 | 2 | 0 | 0 | 400 ← 하한 | T2:press_button:r=2:FAIL |
resume:train_746__2000:cut_10 | multi | 5 | 3 | 5929 | 8893 | T1:press_button:r=1:OK · T2:put_in_container:r=4:FAIL |
resume:train_8423__2000:cut_10 | resume1 | 2 | 2 | 2581 | 3871 | T2:visit_rooms:r=2:FAIL |
resume:train_8654__2000:cut_08 | resume1 | 1 | 0 | 0 | 400 ← 하한 | T2:press_button:r=1:FAIL |
resume:train_9965__2000:cut_02 | resume1 | 3 | 3 | 3829 | 5743 | T1:visit_rooms:r=3:FAIL |
resume:train_9965__2000:cut_08 | multi | 5 | 2 | 3104 | 4656 | T1:visit_rooms:r=2:FAIL · T2:move_objects:r=3:FAIL |
resume:train_9987__2000:cut_05 | resume1 | 1 | 0 | 0 | 400 ← 하한 | T1:put_in_container:r=1:FAIL |
resume:train_9987__2000:cut_07 | multi | 3 | 0 | 0 | 400 ← 하한 | T1:put_in_container:r=1:FAIL · T2:visit_rooms:r=2:FAIL |
r = n − m 이고
m 은 아래처럼 독립 검증된다(222/222 슬롯):
m == 컷 이전에 끝난 그 task 의 유닛 수 (subtasks[] 직접 집계) — 불일치 0done_units[].frame == 그 유닛의 종료 프레임 — 불일치 0m == cuts[].done[task_id] — 불일치 0n == 발화 속 수사(“Pick up three of the mugs…”) — 불일치 0 (visit 제외)supply 불일치 14슬롯도
on > r 은 만족하므로 읽기 트랙에 무해하다.오라클 = 대본 로봇(VLM 이 아니라 규칙 기반 스크립트)이 그 컷 상태에서 남은 유닛을 실제로 끝까지 실행해 본 기록이다.
두 가지 일을 한다: ① 이 행이 풀 수 있는 문제라는 증거(정답 유닛들이 실제로 실행 가능함을 시뮬레이터에서 확인) ②
예산의 근거(budget_steps = max(400, 1.5 × oracle.steps)). 정책이 받는 스텝 예산이 여기서 나온다.
남은 유닛은 두 군데에서 온다 — 컷 이후 편 안에서 실제로 실행된 유닛(그 편이 컷 뒤에 이어서 한 것)과,
편이 끝난 뒤 이어 붙여 굴린 꼬리(tail) 롤아웃(편은 미완으로 끝나므로 나머지는 여기서 해야 한다).
그래서 source 가 tail(전부 꼬리) 109행 / episode+tail(편 실행분 + 꼬리) 52행이다.
completed 는 pending task 마다 "r 개를 다 채웠나"를 담은 불리언 배열이다.
"미완주" = 이 배열에 false 가 있다 — 대본 로봇이 그 task 의 남은 유닛을 다 끝내지 못하고 멈췄다는 뜻.
곧 정답을 실행할 수 있다는 증거가 없는 행이고, 예산도 그 중간에 끊긴 롤아웃으로 계산돼 있다.
아래 표가 그 해부다 — 실패 27행은 전부 꼬리가 최소 1유닛을 해야 하는 행이었고(편 실행분만으로 r 이 채워진 경우 0건),
꼬리 실패율은 tail 19/109 = 17% · episode+tail 8/52 = 15% 로 거의 같다 → 깨지는 곳은 꼬리 롤아웃이다.
| query_id | source | 필요 r | 편이 컷 뒤 실행 | 꼬리가 해야 함 | 오라클이 기록한 유닛 | steps |
|---|---|---|---|---|---|---|
resume:train_2739__2000:cut_04 | tail | 1 | 0 | 1 | 0 | 0 ← 하한 400 적용 |
resume:train_2739__2000:cut_05 | episode+tail | 4 | 0 | 4 | 1 | 1235 |
resume:train_2773__2000:cut_05 | tail | 2 | 0 | 2 | 1 | 1980 |
resume:train_2773__2000:cut_07 | tail | 5 | 0 | 5 | 1 | 1980 |
resume:train_3118__2000:cut_06 | episode+tail | 4 | 2 | 2 | 3 | 591 |
resume:train_3252__2000:cut_00 | episode+tail | 4 | 1 | 3 | 2 | 394 |
resume:train_3252__2000:cut_10 | tail | 3 | 0 | 3 | 0 | 0 ← 하한 400 적용 |
resume:train_3274__2000:cut_10 | tail | 1 | 0 | 1 | 0 | 0 ← 하한 400 적용 |
resume:train_3667__2000:cut_07 | tail | 4 | 0 | 4 | 0 | 0 ← 하한 400 적용 |
resume:train_3911__2000:cut_02 | episode+tail | 2 | 0 | 2 | 2 | 5401 |
resume:train_3911__2000:cut_06 | tail | 4 | 0 | 4 | 1 | 2847 |
resume:train_4355__2000:cut_04 | tail | 2 | 0 | 2 | 0 | 0 ← 하한 400 적용 |
resume:train_4355__2000:cut_07 | tail | 4 | 0 | 4 | 0 | 0 ← 하한 400 적용 |
resume:train_4918__2000:cut_00 | episode+tail | 2 | 1 | 1 | 2 | 4239 |
resume:train_4918__2000:cut_08 | tail | 3 | 0 | 3 | 1 | 2253 |
resume:train_4998__2000:cut_07 | tail | 3 | 0 | 3 | 2 | 4864 |
resume:train_5134__2000:cut_06 | episode+tail | 2 | 0 | 2 | 2 | 2359 |
resume:train_5522__2000:cut_06 | episode+tail | 5 | 1 | 4 | 3 | 5053 |
resume:train_7000__2000:cut_07 | tail | 5 | 0 | 5 | 4 | 5461 |
resume:train_7151__2000:cut_08 | tail | 2 | 0 | 2 | 0 | 0 ← 하한 400 적용 |
resume:train_746__2000:cut_10 | tail | 5 | 0 | 5 | 3 | 5929 |
resume:train_8423__2000:cut_10 | tail | 2 | 0 | 2 | 2 | 2581 |
resume:train_8654__2000:cut_08 | tail | 1 | 0 | 1 | 0 | 0 ← 하한 400 적용 |
resume:train_9965__2000:cut_02 | episode+tail | 3 | 0 | 3 | 3 | 3829 |
resume:train_9965__2000:cut_08 | tail | 5 | 0 | 5 | 2 | 3104 |
resume:train_9987__2000:cut_05 | tail | 1 | 0 | 1 | 0 | 0 ← 하한 400 적용 |
resume:train_9987__2000:cut_07 | tail | 3 | 0 | 3 | 0 | 0 ← 하한 400 적용 |
steps=0 인 10행은 예산이 하한 400 으로 떨어졌다.
오라클이 성공한 행에서 r=1(유닛 하나만 남은 가장 쉬운 행)의 최소 비용이 510 스텝이고 중앙값은 1646 스텝이다 —
즉 400 스텝은 관측된 가장 싼 1유닛보다도 적다. 그런데 이 10행은 1–4 유닛을 해야 한다.| query_id | r | pending 종류 | 받은 budget | 같은 r 정상 budget (성공 행 median×1.5) | 비율 |
|---|---|---|---|---|---|
resume:train_2739__2000:cut_04 | 1 | put_in_container | 400 | 2469 | 16.2% |
resume:train_3252__2000:cut_10 | 3 | press_button + put_in_container | 400 | 6015 | 6.7% |
resume:train_3274__2000:cut_10 | 1 | put_in_container | 400 | 2469 | 16.2% |
resume:train_3667__2000:cut_07 | 4 | press_button | 400 | 8535 | 4.7% |
resume:train_4355__2000:cut_04 | 2 | put_in_container | 400 | 4780 | 8.4% |
resume:train_4355__2000:cut_07 | 4 | put_in_container + visit_rooms | 400 | 8535 | 4.7% |
resume:train_7151__2000:cut_08 | 2 | press_button | 400 | 4780 | 8.4% |
resume:train_8654__2000:cut_08 | 1 | press_button | 400 | 2469 | 16.2% |
resume:train_9987__2000:cut_05 | 1 | put_in_container | 400 | 2469 | 16.2% |
resume:train_9987__2000:cut_07 | 3 | put_in_container + visit_rooms | 400 | 6015 | 6.7% |
실패 슬롯은 put_in_container 16 · press_button 8 · visit_rooms 7 · move_objects 4 로 특정 task 종류에 쏠려 있지 않고,
source 도 tail 19 / episode+tail 8 로 갈린다. 필요 유닛 수만큼 굴리고도 실패로 표시된 행이 6개 있는 것으로 보아
(예: train_3911:cut_02 는 2유닛 필요·2유닛 굴림·FAIL) 꼬리 롤아웃 중 조작 실패가 원인으로 보이고,
steps=0 10행은 롤아웃이 시작조차 못 한 경우다. 어느 쪽이든 생성기가 결과를 기록만 하고 자격 게이트를 걸지 않은 것이
직접 원인이다 — stats.json 의 "oracle": {"run": 161, "ok": null} 이 그 흔적이고, dropped.total = 0 · drop_rate = 0.0 도
같은 이야기를 한다.
| pending 종류 | 슬롯 | 장면만 보고 m 을 알 수 있나 | 판정 |
|---|---|---|---|
| press_button | 49 | 누른 횟수는 흔적이 전혀 없다 | 완전 차단 |
| visit_rooms | 62 | 방문 흔적이 전혀 없다 (방문 = 방 안에 들어갔다 나온 것) | 완전 차단 |
| put_in_container / move_objects | 111 | 도착지: 세면 m + k_dst (k_dst 1–3) → 막힘.출발면: on = n + k_src − m 인데 k_src 가 2·3 두 값뿐 → r = on − k_src 로 두 값까지 좁혀진다 (94/111 슬롯에서 정확히 성립) |
절반만 차단 |
| └ 그중 k_dst=0 | 15 | 도착지를 세면 m 이 그대로 나온다 | control (의도됨) |
commands[] 에서 n 을 그대로 읽을 수 있으므로(“Pick up three of the mugs…”),
출발면 물체 수 on 만 세면 r = on − k_src ∈ {on−2, on−3} 이다 — 물체 슬롯 111개 중 94개에서 이 식이 정확.
즉 기억 없이 두 값 중 하나를 찍으면 되고, 어느 쪽을 찍어도 오차는 ±1.
111/222 슬롯(물체 task)이 여기 해당한다. 도착지 쪽을 k_dst 0–3 으로 흩은 것과 같은 처리를 출발면 여분에도 해야
(k_src 를 1–4 로 흩거나 편마다 랜덤) 이 뒷문이 닫힌다. 지금 상태로도 press/visit 111 슬롯은 순수 기억이라 벤치가 무너지지는 않지만,
물체 task 수치는 “기억 + 카운팅 반반”으로 읽어야 한다.글로만 보면 "영상 보고 몇 개 했는지 세라"지만, 실제로 모델에 들어가는 픽셀을 재현해 보면 과제 성격이 상당히 달라진다.
아래는 우리 읽기 하네스(sbench_eval/run_eval_resume.py, 옛 12편 설계용)가 주는 입력을 그대로 재구성한 것이다.
exo_camera_1 의 f_cut 프레임 (QUERY_CAM, 온라인 하네스와 같은 소스)
② 컷까지 들은 발화 목록(commands[]) — 과제 명세라서 blind 포함 전 전략 공통
③ 질의문 "You were interrupted earlier. Go back and finish (all of) what you were doing."
locality=away). 심부름이 끝난 자리라
미완 task 와 무관한 방이 보인다. 이런 행(68/161)에서는 현재 이미지가 답에 아무 정보도 주지 않는다.| 컷 시점 로봇 위치 | move_objects | put_in_container | press_button | visit_rooms |
|---|---|---|---|---|
| 그 task 의 방 안 | 29 | 25 | 25 | 15 |
| 다른 방 | 15 | 42 | 24 | 47 |
frames-uniform cap=8 메모리(exo1, 노란 글씨는 그 프레임이 속한 유닛/세그먼트).
[2/8] 에 서랍장 위 감자 7개, [6/8] 에 줄어든 서랍장, [8/8] 에 식탁 위 1개 — 물체 task 는 유닛이 길어(중앙값 83초)
8장으로도 "출발면이 줄었다"는 증거가 잡힌다. 대신 [3/8][5/8] 처럼 절반은 복도·화장실 이동 장면이라 정보가 없다.
| pending 종류 | task 전체 실행 span | 완료 유닛 수(m) 이상의 표본이 실행 구간에 들어간 슬롯 | 집기/누르기(manip) 순간 적중 | ||||
|---|---|---|---|---|---|---|---|
| median | cap 8 | cap 16 | cap 32 | cap 8 | cap 16 | cap 32 | |
| 물체 옮기기(표면→표면) | 275s | 100% (44/44) | 100% (44/44) | 100% (44/44) | 41% | 71% | 100% |
| 용기에 담기 | 276s | 100% (67/67) | 100% (67/67) | 100% (67/67) | 41% | 72% | 99% |
| 버튼 누르기 | 62s | 53% (26/49) | 86% (42/49) | 100% (49/49) | 23% | 48% | 69% |
| 방 전부 방문 | 111s | 50% (31/62) | 94% (58/62) | 100% (62/62) | — | — | — |
instruction 의 고정 문자열 결함(§3)은 textlog 가 쓰는 L1 task_description 을 건드리지 않아 오염은 없다.| 지표 | 정의 | 왜 필요한가 |
|---|---|---|
task_ok | 끊긴 명령을 맞게 지목(원문 일치). multi 는 pending 둘 다 | "무엇이 미완인가" — 끝난 심부름·decoy 를 걸러내는가 |
remaining_ok | 남은 유닛 수 r 일치 | 본 지표. m 을 세었는가 |
resume_ok | 둘 다 — 이것만 맞으면 실제로 이어서 실행 가능 | 헤드라인 |
| 기권율 | abstain (A5: 유효 질의에서 기권 = 오답) | 모르는 걸 아는가 |
| 분리 보고 | k_dst=0 control 15슬롯(그중 평면 도착 4) · pending 종류별(press/visit vs 물체) | 기억 없이 풀리는 행이 헤드라인을 밀어올리지 않게. 오라클 미완주 27행은 읽기 트랙에선 분리 불필요 |
run_eval_resume.py 는 옛 스키마
(query["task"] 단수 · decoy_tasks)를 읽고, 답 형식도 {"task", "remaining"} 하나다.
v2 는 pending[] 가 최대 2개(multi 61행)이고 finished[] 라는 새 채점 축이 있다 →
답 스키마를 목록으로 바꾸고([{"task","remaining"}, …]) no_finished_redo 를 추가해야 한다.
캐시 키도 (context, context_frames[1]) 로 바꿔야 한다(편당 1.61행).100편 중 축(변형 A/B/C · resume1/multi · cut_site · locality · pending 4종 · 심부름 5종 · k_dst=0 control · r_total 1–5)을 전부 덮는 최소 집합으로 12편을 골랐다(그리디 커버, 46개 축값 46/46 커버). 그중 4편에는 위 🔴 오라클 미완주 행이 들어 있다.
영상은 exo_camera_1 | exo_camera_2 | wrist_camera 3캠을 나란히 붙여 8배속으로 구운 10 fps 압축본(원본 25 fps 640×480, 편당 5–14분 → 40–105초). 재생 속도 버튼으로 4×–32× 조절, 표시 시각은 원본 기준. 띠·세로선·표의 시각·썸네일을 클릭하면 그 시점으로 이동한다.
| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–1:00 | “Navigate to every room in the house.” 방 전부 방문 · 방 living room → kitchen → 방#4 → 방#5 | 2/4 |
| T2 | 1:34–4:10 | “Pick up three of the mugs from the dining table and place them in or on the countertop.” 물체 옮기기(표면→표면) · Mug × 3 · diningtable → countertop · k_src=2 k_dst=2 | 2/3 |
| E1 | 0:19–0:27 | “go check whether the phone is still on the sofa in the living room” 심부름 확인(가서 보기) · T1 중단 · 방 living room · 12s | ok |
| E2 | 1:05–1:34 | “go check whether the pillow is still on the sofa in the living room” 심부름 확인(가서 보기) · T1 중단 · 방 living room · 46s | ok |
| E3 | 4:20–5:02 | “open the fridge door in the kitchen” 심부름 열기 · T2 중단 · 방 kitchen · 71s | ok |
no_finished_redo 실패T1:4, T1:5 · source=tail → budget = max(400, 1.5×1181) = 1771



no_finished_redo 실패T1:4, T1:5, T2:t2a1_Mug_2, T2:t2a2_Mug_2 · source=episode+tail → budget = max(400, 1.5×5212) = 7818




| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–1:44 | “Navigate to every room in the house.” 방 전부 방문 · 방 kitchen → bedroom → living room → 방#5 | 3/4 |
| T2 | 2:11–6:02 | “Pick up four of the mugs from the dining table and place them in or on the dresser.” 물체 옮기기(표면→표면) · Mug × 4 · diningtable → chestofdrawers · k_src=3 k_dst=3 | 3/4 |
| E1 | 1:50–2:10 | “go check whether the remote is still on the tv stand in the living room” 심부름 확인(가서 보기) · T1 중단 · 방 living room · 56s | ok |
| E2 | 6:14–6:34 | “go check whether the bottle is still on the dining table in the kitchen” 심부름 확인(가서 보기) · T2 중단 · 방 kitchen · 52s | ok |
no_finished_redo 실패T1:5 · source=tail → budget = max(400, 1.5×1646) = 2469



no_finished_redo 실패T1:5, T2:t2a3_Mug_2 · source=tail → budget = max(400, 1.5×5428) = 8142




| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–2:17 | “Press the button on the microwave five times.” 버튼 누르기 · microwaveoven (방 방#6) × 5회 | 4/5 |
| T2 | 3:53–5:34 | “Pick up five of the mugs from the tv stand and place them into the basket.” 용기에 담기 · Mug × 5 · stand → t2cont · k_src=2 k_dst=1 | 1/5 |
| E1 | 0:53–1:27 | “go check whether the bowl is still on the dining table in the bedroom” 심부름 확인(가서 보기) · T1 중단 · 방 bedroom · 67s | ok |
| E2 | 2:37–3:53 | “move the ladle to the other end of the countertop” 심부름 하나 가져오기 · T1 중단 · 방 방#6 · 158s | ok |
| E3 | 5:46–6:43 | “open a drawer of the dresser in the bedroom” 심부름 열기 · T2 중단 · 방 bedroom · 840s | ok |
no_finished_redo 실패T1:microwaveoven_fed06ca4820f7ef44af2e3513aa427c3_1_0_6, T1:microwaveoven_fed06ca4820f7ef44af2e3513aa427c3_1_0_6, T1:microwaveoven_fed06ca4820f7ef44af2e3513aa427c3_1_0_6 · source=episode+tail → budget = max(400, 1.5×2554) = 3831



no_finished_redo 실패T1:microwaveoven_fed06ca4820f7ef44af2e3513aa427c3_1_0_6, T2:t2a1_Mug_2, T2:t2a2_Mug_2 · source=tail → budget = max(400, 1.5×5929) = 8893




| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–2:52 | “Navigate to every room in the house.” 방 전부 방문 · 방 bedroom → kitchen → living room → bathroom | 4/4 |
| T2 | 2:52–9:58 | “Pick up five of the potatos from the dresser and place them in or on the dining table.” 물체 옮기기(표면→표면) · Potato × 5 · chestofdrawers → diningtable · k_src=2 k_dst=0 | 4/5 |
| E1 | 0:19–0:45 | “open a drawer of the dresser in the bedroom” 심부름 열기 · T1 중단 · 방 bedroom · 37s | ok |
| E2 | 10:20–10:50 | “go check whether the tomato is still on the countertop in the kitchen” 심부름 확인(가서 보기) · T2 중단 · 방 kitchen · 42s | ok |
no_finished_redo 실패T2:t2a1_Potato_9, T2:t2a2_Potato_9, T2:t2a3_Potato_9, T2:t2a5_Potato_9 · source=episode+tail → budget = max(400, 1.5×9917) = 14875



| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–2:24 | “Press the button on the microwave five times.” 버튼 누르기 · microwaveoven (방 kitchen) × 5회 | 5/5 |
| T2 | 2:24–5:01 | “Pick up three of the eggs from the dining table and place them into the basket.” 용기에 담기 · Egg × 3 · diningtable → t2cont · k_src=3 k_dst=2 | 2/3 |
| E1 | 1:06–1:52 | “open the fridge door in the kitchen” 심부름 열기 · T1 중단 · 방 kitchen · 161s | ok |
| E2 | 5:13–5:55 | “close the laptop on the desk in the bedroom” 심부름 노트북 닫기 · T2 중단 · 방 bedroom · 75s | ok |
no_finished_redo 실패T2:t2a5_Egg_30 · source=tail → budget = max(400, 1.5×2352) = 3528



| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–0:25 | “Press the button on the coffee machine four times.” 버튼 누르기 · coffeemaker (방 kitchen) × 4회 | 1/4 |
| T2 | 1:02–5:41 | “Pick up four of the potatos from the dining table and place them in or on the dresser.” 물체 옮기기(표면→표면) · Potato × 4 · diningtable → chestofdrawers · k_src=3 k_dst=3 | 3/4 |
| E1 | 0:50–1:02 | “go check whether the spray bottle is still on the countertop in the kitchen” 심부름 확인(가서 보기) · T1 중단 · 방 kitchen · 28s | ok |
| E2 | 5:54–6:23 | “go check whether the plate is still on the dining table in the kitchen” 심부름 확인(가서 보기) · T2 중단 · 방 kitchen · 66s | ok |
no_finished_redo 실패T1:coffeemaker_0839c311b37356f0e77590781e178228_1_0_6, T1:coffeemaker_0839c311b37356f0e77590781e178228_1_0_6, T1:coffeemaker_0839c311b37356f0e77590781e178228_1_0_6 · source=tail → budget = max(400, 1.5×1082) = 1623



no_finished_redo 실패T1:coffeemaker_0839c311b37356f0e77590781e178228_1_0_6, T1:coffeemaker_0839c311b37356f0e77590781e178228_1_0_6, T1:coffeemaker_0839c311b37356f0e77590781e178228_1_0_6, T2:t2a3_Potato_15 · source=tail → budget = max(400, 1.5×3423) = 5134




| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–6:05 | “Pick up four of the apples from the dining table and place them in or on the side table.” 물체 옮기기(표면→표면) · Apple × 4 · diningtable → stand · k_src=3 k_dst=0 | 4/4 |
| T2 | 6:05–7:07 | “Press the button on the dryer five times.” 버튼 누르기 · clothesdryer (방 bathroom) × 5회 | 4/5 |
| E1 | 1:19–1:57 | “close the laptop on the dining table in the bedroom” 심부름 노트북 닫기 · T1 중단 · 방 bedroom · 57s | ok |
| E2 | 7:27–7:49 | “close the open drawer of the dresser in the bathroom” 심부름 닫기 · T2 중단 · 방 bathroom · 32s | ok |
no_finished_redo 실패T2:clothesdryer_828bfc27448a0c8500c92a7744d1d540_1_0_5, T2:clothesdryer_828bfc27448a0c8500c92a7744d1d540_1_0_5, T2:clothesdryer_828bfc27448a0c8500c92a7744d1d540_1_0_5 · source=episode+tail → budget = max(400, 1.5×591) = 886



| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–9:01 | “Pick up four of the potatos from the dining table and place them into the basket.” 용기에 담기 · Potato × 4 · diningtable → t1cont · k_src=2 k_dst=1 | 4/4 |
| T2 | 9:01–10:52 | “Navigate to every room in the house.” 방 전부 방문 · 방 living room → bedroom → bathroom → kitchen | 3/4 |
| E1 | 3:09–5:47 | “close the fridge door in the kitchen” 심부름 닫기 · T1 중단 · 방 kitchen · 266s | ok |
| E2 | 10:58–13:50 | “move the phone from the tv stand to the dining table in the living room” 심부름 하나 가져오기 · T2 중단 · 방 living room · 298s | ok |
no_finished_redo 실패T2:6 · source=tail → budget = max(400, 1.5×951) = 1426



| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–0:21 | “Press the button on the coffee machine three times.” 버튼 누르기 · coffeemaker (방 방#6) × 3회 | 1/3 |
| T2 | 1:18–6:18 | “Pick up five of the eggs from the dining table and place them into the basket.” 용기에 담기 · Egg × 5 · diningtable → t2cont · k_src=2 k_dst=0 | 4/5 |
| E1 | 0:38–1:18 | “close the open drawer of the dresser in the bedroom” 심부름 닫기 · T1 중단 · 방 bedroom · 88s | ok |
| E2 | 6:31–6:46 | “go check whether the house plant is still on the dining table in the living room” 심부름 확인(가서 보기) · T2 중단 · 방 living room · 25s | ok |
no_finished_redo 실패T1:coffeemaker_a68403e501f26cc5f5dd248e13e54265_1_0_6, T1:coffeemaker_a68403e501f26cc5f5dd248e13e54265_1_0_6 · source=tail → budget = max(400, 1.5×1069) = 1603



no_finished_redo 실패T1:coffeemaker_a68403e501f26cc5f5dd248e13e54265_1_0_6, T1:coffeemaker_a68403e501f26cc5f5dd248e13e54265_1_0_6, T2:t2a2_Egg_30, T2:t2a3_Egg_30, T2:t2a4_Egg_30 · source=episode+tail → budget = max(400, 1.5×6404) = 9606




| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–6:40 | “Pick up four of the eggs from the dining table and place them into the basket.” 용기에 담기 · Egg × 4 · diningtable → t1cont · k_src=3 k_dst=2 | 3/4 |
| T2 | 7:01–9:19 | “Pick up three of the apples from the dining table and place them in or on the side table.” 물체 옮기기(표면→표면) · Apple × 3 · diningtable → stand · k_src=2 k_dst=0 | 1/3 |
| E1 | 2:50–3:41 | “close the open drawer of the dresser in the bathroom” 심부름 닫기 · T1 중단 · 방 bathroom · 102s | ok |
| E2 | 6:49–7:01 | “go check whether the pillow is still on the sofa in the living room” 심부름 확인(가서 보기) · T1 중단 · 방 living room · 22s | ok |
| E3 | 9:35–9:48 | “go check whether the pen is still on the dining table in the bedroom” 심부름 확인(가서 보기) · T2 중단 · 방 bedroom · 22s | ok |
no_finished_redo 실패T1:t1a4_Egg_30, T1:t1a5_Egg_30, T1:t1a0_Egg_30 · source=episode+tail → budget = max(400, 1.5×7151) = 10726



no_finished_redo 실패T1:t1a0_Egg_30, T2:t2a2_Apple_13 · source=tail → budget = max(400, 1.5×4864) = 7296




| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–1:04 | “Press the button on the microwave three times.” 버튼 누르기 · microwaveoven (방 kitchen) × 3회 | 2/3 |
| T2 | 3:07–6:56 | “Pick up five of the mugs from the dining table and place them into the basket.” 용기에 담기 · Mug × 5 · diningtable → t2cont · k_src=3 k_dst=0 | 3/5 |
| E1 | 0:32–0:46 | “go check whether the bowl is still on the countertop in the kitchen” 심부름 확인(가서 보기) · T1 중단 · 방 kitchen · 24s | ok |
| E2 | 1:18–3:07 | “move the remote to the other end of the dining table” 심부름 하나 가져오기 · T1 중단 · 방 bedroom · 197s | ok |
| E3 | 7:12–7:21 | “go check whether the vase is still on the dining table in the bedroom” 심부름 확인(가서 보기) · T2 중단 · 방 bedroom · 218s | ok |
no_finished_redo 실패T1:microwaveoven_3291423b5a9b661f10f30c18c31b18f1_1_0_6 · source=tail → budget = max(400, 1.5×1123) = 1684



no_finished_redo 실패T1:microwaveoven_3291423b5a9b661f10f30c18c31b18f1_1_0_6, T2:t2a1_Mug_2, T2:t2a2_Mug_2 · source=episode+tail → budget = max(400, 1.5×5053) = 7579




| id | 구간 | 사용자 발화 · 내용 | 완료 |
|---|---|---|---|
| T1 | 0:00–1:47 | “Navigate to every room in the house.” 방 전부 방문 · 방 bathroom → kitchen → living room → bedroom | 3/4 |
| T2 | 2:04–8:01 | “Pick up five of the apples from the dresser and place them in or on the dining table.” 물체 옮기기(표면→표면) · Apple × 5 · chestofdrawers → diningtable · k_src=3 k_dst=0 | 4/5 |
| E1 | 0:19–0:49 | “close the laptop on the desk in the bedroom” 심부름 노트북 닫기 · T1 중단 · 방 bedroom · 56s | ok |
| E2 | 1:55–2:04 | “go check whether the desk lamp is still on the tv stand in the living room” 심부름 확인(가서 보기) · T1 중단 · 방 living room · 16s | ok |
| E3 | 8:11–9:21 | “move the remote to the other end of the dining table” 심부름 하나 가져오기 · T2 중단 · 방 bedroom · 138s | ok |
no_finished_redo 실패T1:6, T1:7, T1:4 · source=episode+tail → budget = max(400, 1.5×2059) = 3088



no_finished_redo 실패T1:4, T2:t2a4_Apple_21, T2:t2a5_Apple_21, T2:t2a6_Apple_21 · source=episode+tail → budget = max(400, 1.5×6329) = 9493




finished[] 로 오답 유인(다시 하기)이 채점에 들어왔다
③ multi 61행이 “미완이 둘일 때 둘 다 챙기는가”를 새로 잰다 ④ attempt_count 기준 채점이라 파지 실패가 기억 실패로 오염되지 않는다
⑤ 컷이 median 80% 지점이라 관찰 분량이 median 6.0분으로 충분히 길다.run_eval_resume.py 가 v2 스키마를 못 받는다(§4-5)
② 이미지 예산 — find 의 cap 8 을 그대로 쓰면 press/visit 슬롯 절반이 “셀 수 있는 최소 조건”조차 못 만족한다(§4-3).oracle.completed 에 false 가 있는 27행이 배포됨(그중 steps=0 10행은 budget 이 하한 400).
stats.json 의 oracle.ok=null, drop_rate=0.0 도 같이 고쳐야 한다. 목록은 이 페이지 §3-1.k_src 가 2·3 두 값뿐 — 출발면을 세면 r 이 두 값으로 좁혀진다. k_dst 처럼 0–4 로 흩어 주면 물체 task 도 완전 차단이 된다.instruction 고정 문자열 — visit nav 128건 “Navigate to the table”, press manip 74건 가전 불일치. (9/3에 이어 두 번째 보고)axes.fetch_scope 가 항상 null — eval README 에 정의된 축인데 채워지지 않는다. 채우거나 문서에서 빼야 한다.on+at+off ≠ n_planned + k_src 14슬롯 — 계획값과 실측이 어긋난다(자격 자체는 만족). 오라클 실패 편과 8건 겹쳐 같은 원인일 수 있다.context_frames 구간 영상(+메모리 전략) + bare 문장 + commands[], 시작 상태 = cut_NN.npz.
캐시 키는 (context, context_frames[1]) — find/restore 와 달리 한 편에 컷이 둘이라 context 만으로 묶으면 두 행이 섞인다(편당 1.61행).right_task ∧ no_redo ∧ attempt_count==r ∧ stop_correct, multi 는 전부 만족해야 1차 성공.
finished[] 재실행은 즉시 실패. control(15슬롯)·오라클 미완주(27행)는 본표에서 분리해 보고한다.commands[] + done_units 를 그대로 주면 r 이 바로 나오니 텍스트로그 오라클 상한은 1.0 이다.
실제 난이도는 “영상만 보고 m 을 세기”와 “끝난 심부름을 다시 하지 않기”에 있다 — 온라인 컨트롤 프로토콜 v2 의 읽기/온라인 대비와 같은 구도.