dde93b7): ① strict 접지(폴백 제거, 바닥 답도 방 필수) ② pick/pick_and_place 대상은 도달 반경 1.0 m 안만(문구 동일 → 방 수준 정보 비누설) ③ open/close 플래너 활성 ④ 가족별 프롬프트는 로봇 역학만(목표 재진술 삭제; find pick = "들었다가 그 자리에 내려놓는다"는 액션 의미) ⑤ 노트 규칙 "스쳐 본 목표 관련 물체의 방·표면 기록".| # | 지적 | 코드로 확인한 사실 | 결정 |
|---|---|---|---|
| 1 | RESTORE 전용 문구는 치팅? | 읽기 트랙도 restore 전용 system 프롬프트(build_system_restore)가 있음. writer 전문(writer_preamble_v1)은 과제 무관. | 가족별 문구 허용하되 역학만(목표 재진술 "put it back where it belongs" 삭제) |
| 2 | 온라인/오프라인 메모리는 같은 것? | 두 층: ① 컨텍스트 메모리(시드) = 읽기 트랙 산출물 그대로, 매 턴 "Your notes so far"(텍스트) / "Frames you kept as memory"(이미지) 블록으로 들어감 ② 실행 노트 = VLM이 매 턴 한 줄 추가. | 분리 유지(전략 공통). 노트 규칙 4 추가(스쳐 본 물체 기록) |
| 3 | "mug만 답하고 하네스가 알아서 간다" | navigate는 room=null이면 재질의(방 필수). 누설은 ⓐ 틀린 방+같은 가구 종류 → 집 전체 폴백(*_other_room) ⓑ 바닥 답 방 없음 → 집 전체 바닥 검색 ⓒ pick은 현재 방 스코프. | strict 접지 + 도달 반경 pick(§2) |
| 4 | "harness automatically releases it"은 뭔가 | find: pick 성공 직후 하네스가 그리퍼를 열고 팔을 빼 물체를 그 자리에 둠(다중 find용). | 유지, 액션 의미로 서술(사용자: "find는 들고 내려야 다음 걸 진행") |
| 5 | rf-v2? v3 아니었나 | 논문 결정(260906) 이후 rf-v3만. 파일럿2 설계는 그 이전 문서. | 5전략 = blind·textlog·frames·rf-v3·vis-pure, tagmem 제외 |
| 6 | mug uid는 VLM이 뽑았나 | 하네스가 배정(현재 방·최근접 인스턴스). VLM은 id를 본 적 없음. | 리포트 명시 |
| 7 | 워크스루 요약 박스 | — | 추가 완료(파일럿2 리포트 같은 URL) |
| + | 플래너에 open/close 있어야 | 하네스 open/close 스킬은 존재, 프롬프트에서 DISABLED. | 활성(--articulation 기본 on) |
UnifiedPlanner)의 동작이고 온라인 플래너는 이미 방을 요구했다. 실제 누설은 위 ⓐⓑⓒ 세 곳이다.nav_modes)| 런 | navigate | anchor | instance | room | instance_other_room | anchor_other_room | 성공 플랜 |
|---|---|---|---|---|---|---|---|
| find s0 (25플랜) | 109 | 66 | 29 | 6 | 8 | 0 | 7 (전부 instance 도달 포함) |
| find s1 (25플랜) | 124 | 83 | 28 | 3 | 4 | 6 | 6 (전부 instance 도달 포함) |
| restore10 (15플랜) | 72 | 40 | 15 | 6 | 3 | 8 | 0 |
| restore11 (15플랜) | 140 | 128 | 4 | 2 | 0 | 6 | 1 |
| 합계 | 445* | 317 | 76 | 17 | 15 | 20 | 14 |
* find 242(=233+9 room) + restore 197 + room 모드 합산 방식 차이로 본문 "439"는 room 제외 navigate 수. 모드 정의: anchor 가구 앞 / instance 맞는 방·가구 위 질의 카테고리 인스턴스 옆 / room 방 앵커(surface 없음) / *_other_room 말한 방에 그 가구가 없어 집 전체에서 같은 가구를 찾아 이동(v2에서 제거).
instance 모드였고 폴백 성공은 0건 — 즉 blind 성공은 사전확률("칼은 부엌 조리대")이지 하네스 누설이 아니었다. 그래도 폴백은 "틀린 답을 고쳐주는" 구조라 제거한다.room=null(find 16행)이라 읽기 채점은 방을 보지 않는다. v2에서는 VLM이 방을 말해야 바닥을 검색하고, GT 진단 gt_ground_strict에는 hit=False(하네스·데이터 한계 열)로 잡힌다.dde93b7)grounding.ground_selection(strict=True))within_reach(room_summaries, robot_xy, REACH_RADIUS=1.0) − 이미 든 GT. 반경 밖·방 밖·미존재 모두 같은 문구 "there is no X within reach — navigate first"(방 수준 정보 비누설). 수용체(surface)는 현재 방 유지(대형 가구 중심은 바로 앞에서도 1 m 초과). 진단 out_of_reach.프롬프트에 open(category) / close(category) 추가, 대상 = 현재 방의 관절 있는 물체(articulated_object_ids: 자유관절 제외·범위>0) 중 최근접, 프로브 없음(OpeningTask 자체 판정). restore 든 채 가드(1회 재질의)도 open/close에 적용. --no-articulation으로 끌 수 있음. VLA 프롬프트 템플릿은 default("open the X.") — 사용자 open/close VLA 도착 시 프로파일 확인 필요.
protocol=v2 · grounding=v4-strict · reach_radius · articulation/n_articulated · out_of_reach · n_open_close · gt_ground_strict(GT 답을 VLM이 정확히 말했다고 가정하고 strict 접지 → 모드·hit·room_unmapped·surface_unknown — hit=False는 메모리 실패가 아니라 하네스/데이터 한계).
파일럿2와 같은 컨텍스트·VLA(pi05_mlspaces_place@10000)·플래너(gemini-3.7-flash), 전략만 rf-v2→rf-v3. extra QOS, tmp/submit_pilot3_v1final.sh.
pi05_mlspaces_place_oc@20000으로 교체(본 런 확정 VLA). 하네스 프롬프트를 학습 형식에 맞춤: restore 내려놓기 Place the X on the Y., Open the X., Close the X.(커밋 11f3dc4). 파일럿3(옛 VLA)과 나란히 돌려 프로토콜 효과와 VLA 효과를 분리한다. 로그인 스모크(105 s): 관절 물체 탐지·OpeningTask 생성·판정 정상.| 잡 | 구성 | 플랜 |
|---|---|---|
| 112186 / 112187 find s0/s1 (첫 제출 112171/112172는 njoints AttributeError로 사망, 40dd264 수정) | e987b40f 10ctx × 5전략(blind·textlog·frames·rf-v3·vis-pure) × 1질의 | 50 |
| 112188 restore10 | bcaf2815 5ctx × 3전략(blind·textlog·rf-v3), place_mode=vla | 15 |
| 112189 restore11 | 609076c0 5ctx × 3전략, place_mode=vla | 15 |
비교 축: (a) blind SR 변화(폴백 제거 효과) (b) *_other_room = 0 확인 (c) out_of_reach 빈도 (d) open/close 선택 빈도(VLA 미학습 → 실패 예상, 액션 공간의 비용만 측정) (e) gt_ground_strict hit률(하네스 한계).
파일럿3(옛 VLA)은 사용자 결정으로 취소. 아래는 파일럿2(v1 프로토콜 + place@10000) 대비 파일럿4. 전략당 n=10(find)·5(restore)라 전략 간 차이는 해석 불가, 프로토콜·VLA 교체가 하네스 지표에 미친 효과만 읽는다.
| 가족 | 전략 | 파일럿2 SR | 파일럿4 SR | 도달≤0.6 m | pick→lift | oor 재질의 | open/close 선택 | 턴 | $/플랜 |
|---|---|---|---|---|---|---|---|---|---|
| find | blind | 3/10 | 4/10 | 4/10 | 7→5 | 4 | 7 | 6.3 | 0.046 |
| find | frames-uniform | 2/10 | 4/10 | 3/9 | 22→4 | 21 | 3 | 9.6 | 0.159 |
| find | rollforward-v3 (p2: rf-v2) | 4/10 | 4/10 | 2/6 | 11→4 | 19 | 0 | 5.9 | 0.057 |
| find | rollforward-vis-pure | 2/10 | 3/10 | 5/10 | 14→6 | 6 | 4 | 6.0 | 0.108 |
| find | textlog | 2/10 | 3/10 | 4/9 | 23→4 | 16 | 0 | 6.5 | 0.055 |
| find | 합계 | 13/50 (26%) | 18/50 (36%) | 18/44 | 77→23 | 66 | 14 | 6.9 | 0.085 |
| restore v1.0 | blind / rf-v3 / textlog | 0 / 0 / 0 | 0 / 0 / 2/5 | 1/3·0/3·1/4 | 5→1·21→2·43→3 | 5·1·5 | 2·16·4 | 9.9 | 0.074 |
| restore v1.1 | blind / rf-v3 / textlog | 0 / 0 / 1 | 0 / 0 / 0 | 0/5·0/5·1/5 | 3→1·2→1·11→2 | 9·26·10 | 8·4·10 | 16.3 | 0.148 |
oor = "there is no X within reach — navigate first" 재질의 수 · 도달≤0.6 m = GT 원위치까지 navigate 도착 최소거리 · pick→lift = pick/pnp 서브골 시도 수 → 판정된 lift 수.
gt_ground_strict): find 70/75 hit, 미접지 5 = 1299__2 바닥 컵(GT room=None) × 5전략 → 하네스·데이터 한계 열로 분리(VLM이 방을 말하면 floor_instance로 접지되며 실제로 frames/textlog는 0.59/0.35 m 도달 성공). restore 30/30(anchor).robot_placement_radius_range와 같아 배치 차이는 아니고, 대상 명명(object_short_name: chestofdrawers→"dresser")·카메라 별칭·초기 팔 자세가 후보. close 선택 0.vacuous=True) — restore 23회(2277__2 textlog 20회 연속). VLM은 결과를 통보받지 않으니 누설은 아니지만 턴만 소모; 집계에서 실성공과 분리.| # | 플랜 | VLM 원문(발췌) | 원인 | 교훈 |
|---|---|---|---|---|
| 1 | find 1847__1 rf-v3 / textlog "Pick up the butter knife I moved earlier" | t=3 note: "Pick failed because butter knife was not within reach; re-navigating to the butter knife on the dining table in the living room" → 같은 식탁으로 20턴 재이동(oor 18/15) | 기억이 "거실 식탁"이라고 확신(GT 부엌 조리대, min_d 3.1–3.3 m). 반경 밖 문구를 "더 가까이 가라"로만 해석하고 위치 신념을 갱신하지 않음. | v1이면 이 자리에서 VLA pick을 헛돌렸을 것. 측정으로는 올바른 실패. 프롬프트에 "그 표면에 없으면 다른 위치를 검토" 힌트를 넣는 건 정책 튜닝이라 하지 않음. |
| 2 | find 1362__0 · 2224__0 rf-v3 "Pick up all the mugs/remote controls I moved earlier" | t=0: "No mugs were moved earlier based on context; goal is already satisfied" → done(1턴) | rf-v3 요약 시드에 해당 이동이 빠져 있음(쓰기 단계 기억 손실). | 온라인 SR이 읽기 단계 메모리 품질을 그대로 상속 — 읽기 표의 rf-v3 낮은 recall과 일관. |
| 3 | find 2102__1 frames / vis / blind "Navigate to the key chain I moved earlier" | "Key chain was moved to the dining table in the kitchen" → 도착 후 done(min_d 4.2–5.6 m) | 틀린 표면(GT 거실 TV 스탠드)에 도착하고도 프레임에서 열쇠고리를 확인하지 않은 채 완료 선언. | navigate_only 질의는 "도착=완료"로 오판되기 쉬움; 채점은 도달 거리라 실패로 정확히 잡힘. |
| 4 | restore 2224__2 rf-v3 (keyring 원위치 복원) | open(chest of drawers) ×16, 전부 128스텝 타임아웃 | 열쇠고리가 서랍 안이라고 기억 → open 반복; VLA open 실패. | open 필요 행은 현재 VLA 상한(1/55) — 본 런 표에서 open 필요 행을 분리 표기. |
| 5 | restore 2277__2 textlog (remote control) | pick_and_place(remote control, dining table) ×20, 매번 steps 0 "succeeded" | 리모컨이 이미 있는 식탁을 목적지로 지정 → vacuous 판정 즉시 참, 물리 실행 없음. VLM은 결과를 못 보므로 같은 결정 반복. | vacuous를 실행 통계에서 분리; 프롬프트 변경 없음(정책 튜닝 금지). |
실물 증거: 파일럿4 파이프라인 상세(시드·관측·프롬프트 전문·VLM 원문·실행 영상, 워크스루 27플랜) · 턴 페이지 find s0 · find s1 · restore v1.0 · restore v1.1.
91942eb) — 파일럿4 재채점| 전략 | SR 옛 규칙 | SR 종료위치+done | SR@예산 (v2) | 첫 navigate 적중 | 예산 초과 | 성공 시 navigate 수 |
|---|---|---|---|---|---|---|
| blind | 4/10 | 3/10 | 3/10 | 4/10 | 2/10 | 1.7 |
| frames-uniform | 4/10 | 4/10 | 3/10 | 6/10 | 3/10 | 1.0 |
| rollforward-v3 | 4/10 | 4/10 | 3/10 | 3/10 | 2/10 | 1.0 |
| rollforward-vis-pure | 3/10 | 3/10 | 2/10 | 4/10 | 2/10 | 1.0 |
| textlog | 3/10 | 3/10 | 3/10 | 7/10 | 2/10 | 1.0 |
| find 합계 | 18/50 | 17/50 | 14/50 | 24/50 | 11/50 | — |
budget_steps(오라클 상대 추정치: find 1500/2500, restore 5000–12900). drive + VLA 스텝 누적, VLA horizon은 남은 예산으로 깎음, final=budget_exhausted, 성공은 within_budget일 때만. 효과: 탐색 남용 차단 + find 플랜당 비용 $0.085→$0.058(69%), 시간 191→138 s.first_nav_hit, navs_to_reach, steps_used). 옛 규칙은 success_anyreach/success_nobudget로만 보존.| 가족 | 플랜 | API(예산 적용 단가 $0.058 / $0.119) | GPU·h(단가 138 s / 325 s) | 8샤드 wall | $80/일 캡 기준 |
|---|---|---|---|---|---|
| find 589 × 5전략 | 2,945 | ≈ $171 | ≈ 113 | ≈ 14 h | ≈ 2.2일 |
| restore 518 × 5전략 | 2,590 | ≈ $308 | ≈ 234 | ≈ 29 h | ≈ 3.9일 |
--queries-per-context)으로도 조절 가능. VLA open 상한(1/55)을 고려하면 open 필요 행(find open_pick 47 등)은 별도 표기.가족별 프롬프트가 있다는 것 자체는 읽기 트랙과 대칭이라 문제가 아니고, 내용이 목표 재진술이냐 로봇 역학이냐가 기준이다. 컨텍스트 메모리(시드)는 매 턴 그대로 들어가고 실행 노트가 그 아래에 쌓이는 두 층 구조는 전략 간 공정성을 해치지 않는다. v2 이후 온라인 축은 VLM이 {category, room, surface}를 내야만 이동이 성립하므로 읽기 트랙 답 계약과 정보량이 같다.
MODEL_DIR/CKPT_STEP 교체 + 프롬프트 프로파일 검증).claude/260907/analysis-online_protocol_v2.md, 설계 claude/260906/plan-online_full_eval_v1final.md §14.