grasp_v3): native_authored_sensor_policy(온라인 LLM 루프 아님), 태그 들어올림 3.84cm 확인·유닛테스트 43개 통과했지만 icl_evaluation_executed=false — "수동 규칙을 ICL이라 부르지 말 것" 판정 후 종료decision_source=native_conversation_model — 이 세션 자체가 매 관측마다 다음 도구 호출(1개)을 직접 결정, SLURM job 1개 = 액션 1개, job 사이 물리 상태를 checkpoint로 이어받는 구조(7 job: 132049/132050/132184/132242/132452/133671/133680)grasp_verified는 7개 액션 전부 falsecontinuation_rejected(카메라1 local depth 변화 23.1%가 허용 기준 초과) — 파지 성공/실패 판정 자체가 아직 나지 않음같은 날 하네스 재선정 카드에서 "매 스텝 실제 모델 호출 → 제한된 도구 1개 실행 → 새 RGB-D → 다음 호출"을 다음 순서로 정했다. 이전 demo_icl(v1-v4, 260916)은 세션이 코드를 통째로 생성해 반복 라운드로 개선하는 session-assisted code generation이었지, 스텝마다 실제 온라인 모델이 결정을 내리는 구조가 아니었다. 이번 작업은 그 구조를 처음으로 실제 실행한 것이다.
native_harness)grasp_v1(job 131903)은 CANCELLED, v2를 거쳐 v3(job 131911, seed 80103)를 실행 — policy_mode: native_authored_sensor_policy, online_llm_loop: false. 이 세션이 코드를 한 번 작성한 뒤 그 코드가 관측→규칙 판단→실행을 스스로 도는 방식으로, "온라인 모델이 매번 결정"하는 것은 아니다. 태그 들어올림 3.84cm 확인, 유닛테스트 43개 통과했지만 icl_evaluation_executed: false, icl_success_rate: null — state.json의 next_action에 "실제 데모 조건화 모델 결정과 전체 조립 평가를 세워라, 수동 규칙을 확장해 놓고 ICL이라 부르지 마라"라고 명시하고 이 트랙을 diagnostic-only로 종료했다.
여기서부터 decision_source: native_conversation_model — 이 세션이 매 관측 이미지를 직접 보고 다음 도구 호출(move_ee 또는 gripper) 1개와 근거(reason)를 텍스트로 남긴 뒤, 그 호출만 실행하는 job을 제출한다. 참조 데모는 native_harness/demo/demo.json(기존 20260914_drawer_v2의 사람 원격조종 기록, 1,317 프레임)이며, 데모의 절대좌표를 그대로 재생하지 않고 "housing을 세운 채 위 테두리를 잡고 90도 돌려 놓은 뒤 서랍을 순서대로 삽입"이라는 절차만 문맥으로 사용한다(transfer_rule). job 사이 물리 상태 연속성은 신규 continuation_guard.py + environment_checkpoint.py가 checkpoint 저장/복원 후 카메라별 depth 변화량을 비교해 자동 검증한다.
| Stage / Job | 결정 | 근거(요약) | control steps | gripper 폭 |
|---|---|---|---|---|
| 000 / 132049 | 초기 관측 | 액션 없음, 1차 프레임만 확보 | 0 | — |
| 001 / 132050 | move_ee, +4cm 상승 | gripper가 housing 시야를 가려 들어올려 확보 | 9 | 65.0mm |
| 002 / 132184 | move_ee, +4cm 접근·0.18rad 회전 | 보이는 rim 위로 접근, panel-normal 방향 정렬 | 15 | 65.0mm |
| 003 / 132242 | move_ee, z=0.16 정렬 | 양쪽 카메라가 동일 rim 위치 합의(0.483, 0.0725, 0.1067) | 18 | 65.0mm |
| 004 / 132452 | move_ee, 4.3cm 하강 | 손가락을 rim 위 z=0.1169까지 하강, 닫기 전 관계 확인 | 9 | 65.0mm |
| 005 / 133671 | gripper close | 양 카메라에서 손가락이 housing 상단 밴드 양쪽을 덮음 확인 | 15 | 3.37mm |
| 006 / 133680 | 미실행 (continuation_rejected) | 2cm 소폭 lift로 파지 유지 확인 예정이었음 | — | — |
gripper 폭이 65mm(완전 개방)에서 3.37mm까지 닫혀 housing 패널을 사이에 둔 것으로 보이지만, 매 액션 결과 레코드의 grasp_verified는 7개 전부 false다 — 닫힘 자체를 파지 성공으로 표시하지 않는 구조다(decision_005의 근거: "Closure alone will not verify a grasp; inspect and use a small lift afterward").
status: continuation_rejected. 이전 job이 남긴 checkpoint를 복원한 뒤 관측 일관성을 검사한 결과 accepted: false — color_image1 카메라의 worst_local_depth_changed_fraction 0.2314(국소 영역 23.1%가 예상과 다른 depth)이 허용 기준을 넘었다. EE pose 오차(0.000127m)·관절 오차(0.00043rad)·gripper 폭 오차(0.000148m)는 모두 미세했으므로, 로봇 자체 위치가 아니라 장면(물체) 쪽 depth 불일치가 원인으로 보인다. terminal: false라 재시도 가능한 상태로 남아 있다.continuation_validated: true로 6회 연속 cross-job 물리 상태 이관이 성공했다 — 매 액션마다 새 SLURM worker에서 checkpoint를 복원해도 로봇 pose가 안정적으로 이어진다는 것을 확인한 것은 이 세션이 직접 조종하는 구조 자체의 타당성 증거다.demo_icl 트랙에서 처음으로 "규칙기반 스크립트가 아니라 이 세션이 매 스텝 관측을 보고 직접 결정"하는 루프가 실제로 6번 연속 동작했다 — grasp_v3가 명시적으로 요구했던 "수동 규칙이 아닌 실제 데모 조건화 모델 결정"을 만족하는 첫 사례다. 다만 아직 파지 성공 여부조차 판정되지 않았다: gripper가 닫힌 것과 물체를 붙잡은 것은 다르고, 그 구분을 검증할 stage 6이 물리 restore 게이트에서 막혔다. 이는 실패가 아니라 "검증되지 않은 것을 성공이라 부르지 않는" 설계가 의도대로 작동한 사례로 봐야 한다.
stage 6의 continuation 거부 원인이 로봇 상태가 아니라 장면 depth 쪽으로 좁혀졌지만, 정확한 원인(물체가 파지력으로 미세 이동했는지, checkpoint 복원 자체의 렌더링 노이즈인지)은 아직 분리되지 않았다. 7 job 모두 online LLM/VLM 호출 없이 이 세션이 수동으로 관측 이미지를 검토하는 방식이라 external_model_calls: 0 — GPT-Policy 카드에서 언급한 "worker 내부에서 실제 모델을 호출하는 경로"는 아직 없다.
(1) stage 6 재시도 — depth 불일치가 파지에 의한 실제 물체 이동인지 checkpoint 노이즈인지 depth diff 영상으로 먼저 판별, (2) 통과 시 2cm lift로 grasp_verified 판정, (3) 성공하면 housing 90도 회전 → 배치 → 서랍 삽입까지 데모 절차를 이어서 실행, 실패하면 지각/도달/빈파지/미끄러짐 중 어느 단계인지 분류해 해당 액션만 수정.