n_hops/other_origins 필드 재사용260903-restore2_two_sightings.html에서 제안한 Restore② 초안("심기 초반 A에서 목격 → 못 본 세계 변화로 B 이동 → 재목격 → 로봇 앞 teleport → '처음 있던 자리로'(정답 A·미끼 B)")은 find distractor와 정확히 같은 관측 이력·같은 정답 구조를 갖는다는 지적을 받았다. 여기에 더해 사용자가 두 가지를 질문했다: ① 안 볼 때 옮겨진 물체가 같은 물체인지 다른 물체인지 로봇이 판단 가능한가(정체 문제) ② 대안으로 "컨텍스트는 그대로, 끝난 상태에서 그 물체(distractor)를 로봇 앞에 두고 '원래 자리로' 시키면?"이라는 더 단순한 안이 낫지 않은가.
정체 문제 해법: Restore②를 클래스 유일 물체로 제한(twin_nearby/twins 필드로 필터 가능 — find distractor도 같은 제한 사용).
이 제한이 데이터에 얼마나 손실을 주는지 v1 find 584행으로 직접 실측했다.
| 안 | 내용 | 장단 |
|---|---|---|
| (a) 유일 클래스 필터 | ②는 클래스 유일 물체만 | 손실 작음(평균 16%·중앙 0%), 의미 엄격. find distractor 92%가 이미 무쌍둥이 |
| (b) any-instance (find 방식) | 쌍둥이면 "같은 클래스 인스턴스들의 첫 위치 집합"이 정답, 최근 목격 B는 오답 | 쌍둥이 집 안 버림. 핵심 변별(최근 위치 거부)은 유지, 의미는 느슨 |
| (c) 인스턴스 구분 | 에셋 해시 다른 쌍둥이만 허용, 로봇 앞 물체의 외형으로 매칭 | 시각 메모리 필수 → 텍스트 로그 불리, 난이도↑. 층화 태그로만 사용 |
권고: (a) 기본 + (b) 폴백 (find와 동일 규약). (c)는 층화 태그로만 남긴다.
기본형(바뀐 물체 2~3개를 로봇 앞에 모아 "각각 처음 자리로")도 검토했으나, 같은 클래스 묶음 + 집합 채점(컵 3개 A1·A2·A3 → 이동 → "컵들을 처음 자리로" 정답 = 위치 집합 {A1,A2,A3}, 인스턴스↔자리 대응 불문)이 단일 Restore②에는 없는 해법을 제공한다는 걸 발견했다. 하지만 진짜 비용은 재목격 N회(못 본 이동 후 로봇 동선이 각 물체를 다시 지나야 함)이고, 이게 보장 안 되면 "find distractor의 multi place 판"으로 퇴화한다.
Restore① multi가 이미 n_hops 혼합(1회/2회 이동)으로 구성돼 있다는 데 착안 — ② multi도 같은 꼴로 구성:
세계가 옮겨 두 번 본 X(n_hops=2, 정답 A·미끼 B) 1개 + 한 번 본 Y·Z(n_hops=1, 정답=본 자리)를 끝난 상태에서 로봇 앞에 모아
"각각 처음 있던 자리로" 지시. 재목격 비용이 행당 N회 → 1회로 줄어든다.
n_hops/other_origins 필드로 표현 가능.
진단 효과도 확인됨 — 행 내에서 "마지막 본 곳" 휴리스틱 모델은 2/3만 맞고(X를 B로 착각), restore 기억을 쓰는 모델만 3/3.
진행 추적(Stateful 요소)은 전 물체에 걸린다.| 지표 | 값 | 의미 |
|---|---|---|
| find_target 쌍둥이 보유율 | 67/293 (23%) | 질의문이 로봇 행동으로 정체를 고정 — Direct① 유형의 해법 |
| find_distractor 쌍둥이 보유율 | 22/291 (8%) | any-instance 채점 규약으로 정체 문제 대부분 우회됨 |
| 후보 물체 풀 클래스 유일 비율 | 중앙 100% · 평균 84% | (a) 유일 클래스 필터를 적용해도 평균 손실 16%, 중앙값 손실 0% |
| Stateful② 재목격 비용 | 행당 N회 → 1회 | 혼합안(두 번 본 1개 + 한 번 본 다수)이 재목격 스케줄 부담을 결정적으로 낮춤 |
이걸로 Task 격자(4가족 × Direct/Stateful)의 마지막 미확정 셀 중 하나였던 Restore②(Direct·Stateful 둘 다)가 구체적인 생성 스펙까지 확정됐다. 핵심은 "재목격"이라는 새로운 생성 장치를 최소 비용(행당 1회)으로 넣으면서도, find distractor와의 메모리적 중복을 완전히 해소했다는 점 — Restore의 본질("그 전엔 어디였나")을 Restore②에서도 지켜냈다. 데이터 생성팀에 넘길 수 있는 수준의 스펙(스키마 재사용, 조건 3개)이 나왔으므로 다음 병목은 순수하게 생성 파이프라인 쪽(재목격 동선 스케줄링) 확인으로 옮겨간다.
재목격(못 본 이동 후 로봇 동선이 B를 경유)이 생성기 일정상 항상 보장되는지가 아직 확인되지 않았다. 이는 우리 통제 밖(데이터 생성팀)의 문제다. 보장 안 되는 편이 많으면 혼합안의 "두 번 본 물체 ≥1" 조건을 만족하는 행 자체가 줄어 Stateful② 표본 크기가 작아질 위험이 있다.
① 데이터팀에 두 가지 확인 요청: 세계 이동 후 재목격 동선 스케줄 가능 여부, 편당 유일 클래스 물체 후보 수(② 생성 가능 편 비율 추정용). ② 재목격 보장이 안 되는 경우의 폴백 경로 확정: "place 동사의 find distractor"로 명명하고 Restore②는 비워둔 채 격자 로직은 무손상으로 유지. ③ Resume②(외부 진행 유닛)도 "두 시점 상태 목격"이라는 동일 원리로 설계 가능 — 260902 로그(claude/260902) 참조해 후속 설계 착수.