5 Direct ② — 다른 규칙을 수행하다 지나가며 본 규칙 (내가 옮긴 적 없는 배치)
정의(사용자 260905): 한 편 안에 규칙이 섞여 있다. 실행 규칙은 사용자가 지시하고 로봇이 옮긴다(D① 그대로). 관찰 규칙은 아무도 말하지 않고 로봇도 옮긴 적이 없다 — 증거가 처음부터 수납처에 놓여 있고, 로봇이 실행 규칙의 유닛을 수행하는 동선에서 그 배치를 본다. 예: 음식을 책상에, 천을 바구니에 나르는 동안 침실 소파에 칼 3개가 놓인 걸 본다 → "칼은 소파" 를 알게 된다. 전용 투어는 없다.
행: 같은 편에서 관찰 규칙의 홀드아웃(포크)을 물으면 D② 행, 실행 규칙의 홀드아웃(손수건)을 물으면 D① 행. 편 하나가 두 행을 낸다. 격자(scene_bench 260903)의 Direct ① Tidy up / ② Observed 가 이것이다.
| D① 행 (실행 규칙의 홀드아웃) | D② 행 (관찰 규칙의 홀드아웃) |
| 증거 | 지시문 + 내가 옮긴 유닛 2~3개 | 동선에서 화면에 잡힌 배치 (내가 옮긴 적 없음, 언급도 없음) |
| 규칙이 텍스트에 | 있다 | 없다 — 영상 없이는 알 수 없다 (A2 구조 만족) |
| 기억의 형태 | 내 행동 이력 → 규칙 | 지나가며 본 것 → 규칙 (주변 관찰에서 선호를 읽는 TidyBot 형) |
| 정답 | 실행 규칙의 값 | 관찰 규칙의 값 — 소파·침대도 놓을 수 있으므로(§7) result 채점. 도달 지점 0 인 상면(집마다 다름)만 scoring=intent |
| 편 | 같은 편 · 같은 시작 상태 편집 · 같은 쌍둥이 짝 |
5-1. 컨텍스트 문법 — 규칙 3 = 실행 2 + 관찰 1 또는 실행 1 + 관찰 2 (n=2 는 1+1), 편마다 섞는다
[심기] 실행 규칙 배우: 조리대에 섞어 둔다 (D① 그대로, 규칙당 4)
관찰 규칙 증거 3개(하위 카테고리 2종+): **수납처에 미리** 놓는다. 로봇은 건드리지 않는다
수납처 자리 = 실행 유닛의 동선 위 — 도착 방 우선(책상 옆 소파), 출발 방, 통과 방
소파·침대도 된다 (놓기·판정 모두 OK, §7). 예측기가 **수납처 위 어느 자리**(소파 어느 쪽 끝)가 경로에서 보이는지까지 고른다. settle 300 스텝, 5 cm 검사
홀드아웃·미끼 숨김 상자, 규칙 클래스의 씬 물체 strip ← D① 동일
사전 패스: 유닛별 주행 경로(격자) × 머리 카메라 frustum × mj_ray 가림 → "보이는 구간" 예측.
실행 유닛 ≥ 2개에서 보여야 성립. 안 보이면 다른 수납처 → 다른 집
[컨텍스트] 지시는 실행 규칙만: "Put the food from the countertop on the desk." / "Put the clothes from the countertop into the laundry basket."
유닛 R1 R2 R1 R2 (4개 ≈ 9 분). 칼은 아무도 말하지 않는다
책상 유닛마다 접근·놓기·복귀 중 침실 소파 위 칼 3개가 화면에 잡힌다 → 증거 구간 2~4개
standby
[실행 후] 픽셀 로그(tracked_obj_pixels)로 evidence[] 확정: 증거 3개 각각 ≥ 200 px 구간이 **서로 다른 유닛에서 ≥ 2**
미달 → 편 폐기. **폴백 없음** — 증거는 동선에서 보이는 곳에 두는 것이 원칙 (사용자 260905). 예측기가 자리를 고른다
[질의] q_direct(D②) "Put this away." (포크) → 소파 q_direct(D①) "Put this away." (손수건) → 바구니
q_multi "Clear the counter." 토마토 → 책상 · 손수건 → 바구니 · 포크 → 소파 · 펜 → 그대로(control)
[쌍둥이] 값을 실행·관찰 통틀어 고정점 없이 순환한다 — 소파도 놓을 수 있으니 풀을 가를 필요가 없다. 단 관찰 수납처는 두 편 모두
동선에서 보여야 한다(예측기 검사). 홀드아웃 동일 → D② 행도 짝 채점. __3001: 천→책상 · 칼→바구니 (실행), 음식→소파 (관찰)
5-2. 예시 — train_1652 D② 쌍둥이 짝 (D① 과 같은 집·같은 물체)
train_1652__3000 방: 2:Bedroom, 6:Kitchen, 7:LivingRoom 시작: 거실 anchor (3.10, 8.09)
심기: countertop(방6) ← Apple_13, Potato_6, Egg_29, Apple_9, Cloth_6, Cloth_10, Cloth_11, Cloth_12 실행 배우 8
sofa_179b…(방2 침실, 책상에서 ~2 m) ← Knife_1, Ladle_1, Spatula_1 관찰 증거 [CUTLERY → Sofa], 로봇 무접촉
hidden_box(방6, 닫힘) ← Tomato_10, Hand_Towel_1, Fork_1, Pen_3
strip: 씬의 apple · egg · Irishpotato · spatula · butterknife
지시: U1 "Put the food from the countertop on the desk." [FOOD → Desk] 실행
U2 "Put the clothes from the countertop into the laundry basket." [CLOTH → Basket] 실행
(칼·국자·뒤집개는 아무도 언급하지 않는다)
유닛: t1u0 감자 → 책상 (침실) 접근·놓기 중 소파 위 칼 3개 화면에 evidence CUTLERY #1 frames [4100, 4700]
t2u0 천 → 바구니 (부엌)
t1u1 사과 → 책상 evidence #2 frames [11800, 12500]
t2u1 천 → 바구니
standby (거실) sim ≈ 9 분 (유닛 4)
질의: q_direct(D②) "Put this away." (로봇 앞 Fork_1) → Sofa 어느 인스턴스든, scoring=intent
q_direct(D①) "Put this away." (로봇 앞 Hand_Towel_1) → Basket
q_multi "Clear the counter." (조리대: Tomato_10, Hand_Towel_1, Fork_1, Pen_3)
→ 토마토 Desk · 손수건 Basket · 포크 Sofa · 펜 그대로 (control)
train_1652__3001 (쌍둥이: 값 순환)
실행: 천 → 책상 · 칼 → 바구니 관찰: 감자·사과·계란 → 침실 소파 (책상 유닛 동선에서 보임) 홀드아웃 동일
질의: 포크 → Basket · 손수건 → Desk · 토마토 → Sofa · 펜 그대로
train_1652__3002 (실행 1 + 관찰 2)
실행: 천 → 바구니 관찰: 칼·국자·뒤집개 → 거실 식탁 (부엌↔바구니 동선) · 감자·사과·계란 → 거실 소파
질의: 포크 → DiningTable (D②) · 토마토 → Sofa (D②) · 손수건 → Basket (D①)
5-3. 행 스키마 — 규칙마다 evidence_source, 행에는 물은 규칙의 출처
{ "family":"routine", "kind":"routine_direct", "query_id":"routine:train_1652__3000:direct_obs",
"query":"Put this away.", "start_state":"states/q_direct_obs.npz", "cue":"bare",
"axes":{ "n_rules":3, "n_observed":1, "evidence_source":"observed", "receptacles":["Desk","Basket","Sofa"] },
"rules":[
{"id":"R1","cls":"FOOD","value":"Desk","evidence_source":"self",
"evidence":[{"kind":"unit","unit":"t1u0","obj":"Potato_6","frames":[0,5294]}, {"kind":"unit","unit":"t1u1",…}]},
{"id":"R2","cls":"CLOTH","value":"Basket","evidence_source":"self","evidence":[…]},
{"id":"R3","cls":"CUTLERY","value":"Sofa","evidence_source":"observed",
"evidence":[{"kind":"pass_by","unit":"t1u0","surface":"sofa_179b…","objs":["Knife_1","Ladle_1","Spatula_1"],"frames":[4100,4700],"min_px":331},
{"kind":"pass_by","unit":"t1u1","surface":"sofa_179b…","objs":[…],"frames":[11800,12500],"min_px":290}]} ],
"holdout":[{"obj":"Fork_1","cls":"CUTLERY","subcat":"Fork","placed":"floor_front"}],
"answers":[{"obj":"Fork_1","cls":"CUTLERY","receptacle_class":"Sofa","any_instance_ok":true,"expect":"store","scoring":"result"}],
"evidence_cleared":true, "twin_id":"routine:train_1652__3001:direct_obs", "rule_stmt":null }
같은 편의 D① 행(direct_self)은 holdout=Hand_Towel_1, answers.receptacle_class="Basket", axes.evidence_source="self" 만 다르다. scoring 은 find 의 answers[].scoring 규약 재사용 — 기본 result. 도달 지점 0 인 상면(예: 이 집의 침대)만 intent.
5-4. 코드 변경 지도 (D① 위에 얹는다)
| 파일 | 무엇 | 규모 |
routine_gen.py | --observed {1,2}: 규칙을 실행/관찰로 나누고(편마다 섞음), 관찰 수납처·자리를 실행 유닛 동선(도착 방 > 출발 방 > 통과 방)에서 예측기로 고른다. 발화는 실행 규칙만. 쌍둥이는 값 순환 + 두 편 모두 가시성 검사 | ~100줄 |
resume_stage.py | 관찰 증거를 도착 수납처에 세운다(소파·침대 포함, 놓기 IK 불필요) + settle 5 cm 검사. 지금은 출발 상면만 세운다 | ~40줄 |
tools/prestage_resume.py | 가시성 예측기: 유닛별 주행 경로 × 머리 카메라 frustum × mj_ray 가림 → 보이는 구간 수. 렌더 없음 | ~80줄 |
scene_mem_script.py | 0 — 관찰 규칙은 유닛이 아니다 (판정 버그 수정 3줄은 이미 반영, §7) | 0 |
tools/build_routine_queries.py | 픽셀 로그 → 관찰 규칙 evidence[](pass_by 구간·min_px) + 불변식 검사 + D①/D② 행 둘 다 생성 + scoring | ~60줄 (D① 빌더에 추가) |
| 하네스 | 변경 없음 — 같은 kind·같은 채점, scoring=intent 는 find 규약 | 0 |
5-5. 리스크와 처방
| 리스크 | 처방 |
| 동선에서 안 보인다 (가장 큰 위험) | 사전 패스 예측기(경로 × frustum × 가림)가 보이는 자리를 고른다 + 실행 후 픽셀 로그 확정. 폴백 없음, 미달 편은 폐기 |
| "남의 물건" 으로 읽혀 규칙으로 안 잡힌다 | k=3 · 하위 카테고리 2종+ · 반례 0(씬 물체 strip) · 2회 이상 재관찰 · 쌍둥이 |
| 관찰 수납처에 로봇이 못 놓는다 | 소파·침대는 놓을 수 있다(§7). 카드 n_reach_spots=0 인 상면만 intent 채점 |
| 심은 칼이 소파에서 미끄러진다 | settle 300 스텝 후 5 cm 검사, 실패 시 다른 spot/수납처. 놓기가 아니라 배치라 비용 0 |
| 관찰 규칙이 실행 규칙과 위치가 겹친다 | 관찰 수납처 ≠ 실행 도착 상면 ≠ 출발 상면 (사전 패스 `all_dst` 제외 규칙 확장) |
| D① 텍스트 로그 누출 | 같은 편의 D①/D② 행을 나란히 채점하면 "텍스트로 푼 것" 과 "영상으로 푼 것" 이 갈린다 — 이 구조가 곧 통제 |
5-6. 선택 — D②-b "안 볼 때 정리됐다" (hard 층)
시작에 관찰 클래스도 조리대에 섞여 있고(로봇이 봄), 로봇이 실행 유닛으로 다른 방에 간 사이 세계가 그 물체들을 소파로 옮긴다(시야 밖 teleport + settle). 돌아온 로봇은 조리대에서 칼이 사라지고 소파에 놓인 것을 본다 — 증거 = 변화. 필요한 primitive g_world_move(~40줄)는 생성기에 없다(평가팀 노트의 "misplaced 장치" 는 실행-의도 불일치 라벨). Restore ②·Resume ② 도 같은 장치를 요구하므로 한 번 만들어 세 곳에 쓴다.
결정됨 (사용자 260905)
- 폴백 없음 — 관찰 증거는 동선에서 보이는 곳에 둔다. 예측기가 수납처와 자리를 고르고, 픽셀 로그 미달 편은 폐기.
- 소파·침대는 놓을 수 있다 — 파일럿의 "소파 실패" 는 판정 버그(§7)였고 고쳤다. 관찰 수납처 풀을 따로 두지 않는다.
- 편마다 섞는다 — 규칙 3 = 실행 2 + 관찰 1 또는 실행 1 + 관찰 2, 규칙 2 = 1 + 1. 매 편 D①·D② 행 둘 다.
6 D② 파일럿 실측 — 구현 후 train_1652 에서 실제로 돌린 것
실행기 변경 0 으로 D② 가 관통했다: 생성기(--observed CUTLERY) → 무대(관찰 증거 심기) → 사전 패스(가시성 예측) → 워커 실행 → 픽셀 로그로 노출 실측(tools/routine_evidence.py). 실행 유닛은 세 번의 실행 모두 4/4 · 편 판정 깨끗(파일럿 첫 무결점 편들). 어려운 것은 실행이 아니라 "지나가며 보이게" 놓는 것이었다.
6-1. 기본 편 train_1652__3000 — 실행: 음식→책상 · 천→바구니 / 관찰: 칼·국자·뒤집개 → 소파 (아무도 말하지 않음)
| 1차: 침실 소파 (예측기 v1 "점이 보이나") | 2차: 거실 소파 (예측기 v2 "몇 px 인가", 후보 전수 비교) |
| 실행 유닛 | 4/4 깨끗 · sim 11분 48초 · 벽시계 41분 | 4/4 깨끗 · sim 11분 48초 · 벽시계 41분 |
| 경로 → 증거 최소거리 | 1.58 ~ 1.84 m (1.5 m 안 0 프레임) | 0.99 ~ 1.40 m (1.5 m 안 326 ~ 1,160 프레임) |
| 실측 최대 px (칼 · 국자 · 뒤집개) | 166 · 217 · 49 | 760 · 426 · 276 |
| ≥ 200 px 프레임 | 0 · 5 · 0 | 114 · 83 · 26 |
| 증거 3개 전부 보인 유닛 | 0 → 불변식 탈락 | 4/4 → 불변식 성립 |
| 예측 | v1: 4/4 (거짓 양성) · v2 재예측: 점수 0, max px 189·626·212 | v2: 4/4, 점수 4,148, max px 648·430·408 (실측 오차 ≤ 30%) |
2차 (거실 소파) exo_camera_1 · 16× — 거실 출발 → 조리대 감자 → 침실 책상 (가는 길에 거실 소파 옆을 지난다) → 천 → 바구니 → 계란 → 책상 → 천 → 바구니. 칼은 아무도 언급하지 않는다

2차 — 노출 최대 프레임(14,779, exo_camera_2): 천을 들고 바구니로 가다 거실 소파 위 칼·국자가 화면 왼쪽에 잡힌다 (칼 750 px)

1차 — 노출 최대 프레임(12,689, exo_camera_1): 침실 책상 앞에서 오른쪽 가장자리 소파 위 칼·국자가 몇 px 로만 걸린다 — 1.8 m 는 칼에겐 멀다

2차 유닛 경계 5장: 거실 시작 · 감자를 책상에 · 천을 바구니에 · 계란을 책상에 · 천을 바구니에
6-2. 쌍둥이 — 실행: 음식→바구니 · 천→거실 소파 / 관찰: 칼 → ? (값 교체)
| 관찰 수납처 | 경로 최소거리 (3002 실측 궤적) | 예측 max px (칼·국자·뒤집개) | 실측 | 판정 |
| 거실 식탁 (__3002, 실행함) | 3.12 m | v2·A* 동선: 444·458·349 (거짓 양성 — A* 가 실제 동선을 못 맞춤) | 64 · 74 · 37 px, 0 유닛 | 탈락 (실행은 4/4 깨끗) |
| 침실 책상 (__3001) | 1.45 m | 실측 궤적 모드: 132·137·183 | — | 탈락 |
| TV장 (__3004) | 1.27 m | 실측 궤적 모드: 329·323·321, 유닛 3개, 점수 2,223 | 769 · 369 · 260 px — 3개 전부 ≥200 px 인 유닛 t1u1 만 (칼·국자는 t1u0 도), 프레임 10·9·2 | 근접 미달 (유닛 2개 필요) · 실행 3/4 |
| TV장 경로 쪽 (__3006, k=3) | 3004 궤적 기준 1.02 m → 실제 1.60 m (k=3 으로 조리대 배치가 바뀌어 동선이 달라짐) | 3004 궤적: 401·535·992, 유닛 2개 (지속 시간 조건) | 175 · 197 · 165 px, 0 프레임 | 탈락 — 다른 계획의 궤적은 이 계획의 동선이 아니다 · 실행 3/4 (천 파지) |
| TV장 경로 쪽 (__3002_tv, seed 3002 그대로) | 3002 자기 궤적 1.27 m (동일 계획 → 동선 재현) | 3002 자기 궤적 + 지속 조건: 283·322·361, 유닛 3개(각 3 표본), 점수 1,985 | 721 · 805 · 161 px, 프레임 2 · 1 · 0 — 경로는 0.56~0.64 m 까지 붙었으나(1.5 m 안 450~540 프레임) 옆으로 지나가 정면 원뿔에 잠깐만 들어옴. 뒤집개는 얇아 예측(361) 대비 과대 | 탈락 · 실행 3/4 (소파 놓기 IK 해가 원판과 달라 천 낙하 → 재시도) |
__3002 exo_camera_1 · 16× — 사과·감자 → 바구니, 천 → 거실 소파 ×2 (소파 판정 수정 후 1회 성공). 식탁의 칼은 3 m 밖

__3002 노출 최대 프레임: 로봇이 놓은 천이 소파 위, 식탁의 칼은 오른쪽 가장자리에 점으로
6-2′. 쌍둥이 train_1652__3004 실행 결과 (job 110361, 24분) — 실행 3/4, 관찰은 근접 미달
| 유닛 | 결과 | 물체 | 벽시계 | 비고 |
| t1u0 음식→바구니 | OK | Apple_9 | 375 s | |
| t2u0 천→거실 소파 | OK | Cloth_6 | 627 s (2회) | Cloth_12 그리퍼 20 cm 떨어져 닫힘 ×2 · Cloth_11·10 파지 계획 불능 → 천 3장 소모 |
| t1u1 음식→바구니 | OK | Potato_6 | 407 s | |
| t2u1 천→소파 | FAIL | — | 0 s | 배우가 동났다 (4/4) → 편 "개수 미달" |
__3004 exo_camera_1 · 16× — 사과 → 바구니 · 천 → 거실 소파 · 감자 → 바구니. TV장의 칼·국자·뒤집개는 아무도 언급하지 않는다 (sim 7분 2초)

__3004 노출 최대 프레임(7,594, exo_camera_1): 감자를 들고 바구니로 가는 길, TV장 위 칼·국자·뒤집개 (합 849 px)

__3004 유닛 경계 4장: 거실 시작 · 사과를 바구니에 · 천을 소파에 · 감자를 바구니에
쌍둥이 판정 (3회 시도: 식탁 · TV장 가운데 · TV장 경로 쪽): 이 집에서 칼을 관찰 규칙으로 두는 쌍둥이는 불변식(유닛 ≥ 2 에서 셋 다 ≥200 px 지속)을 못 채웠다. 세 물체 모두 ≥200 px 로 잡힌 적은 있으나(TV장: 칼 769·805, 국자 369·805, 뒤집개 260) 스쳐 지나가는 노출이다 — 어깨 카메라는 전방 아래를 보므로 경로 옆의 수납처는 로봇이 그쪽으로 돌 때만 잡히고, 뒤집개처럼 얇은 물체는 예측보다 작다. 기본 편(거실 소파)이 성립한 것은 소파가 부엌→침실 동선의 정면에 놓여 있었기 때문. 실행 쪽은 천 파지·소파 놓기가 실행마다 갈려(3/4 ×3) 여분 천 k=3 이 필요하고, 같은 계획이라도 strip 소품이 달라지면 IK 해가 바뀐다(geom 순서 의존 추정).
__3002_tv exo_camera_1 · 16× — 사과 → 바구니 · 천 → 소파(낙하 후 재시도 성공) · 감자 → 바구니. TV장 옆 0.6 m 를 지나지만 카메라는 앞을 본다

__3002_tv 노출 최대 프레임(9,714): 감자를 들고 돌아설 때 TV장 위 칼·국자가 크게(721·805 px) 잡히지만 한두 프레임이다
6-3. 배운 것 — 생성기 규칙으로 굳힌 것
| 실측 | 규칙 |
| 칼(25×3 cm)은 1.8 m 에서 166 px, 1.0 m 에서 760 px. exo 카메라는 어깨 높이 1.55 m 에서 아래 34° — 2 m 밖은 작다 | 예측기는 "점이 보이나" 가 아니라 예상 픽셀 px ≈ fx²·A/d² 로 판정. 작은 물체(칼·계란)는 경로 ≤ 1.2 m, 큰 물체(천)는 ~6 m 까지 |
| "실행 도착 방의 수납처" 라는 후보 순서가 틀렸다 — 같은 방이라도 경로 반대편이면 안 보인다 | 무대가 그 클래스의 상면을 전부 세워 보고 노출 점수(세 물체의 최소 px 합) 최대를 고른다. pin 은 먼저 시험, 점수 0 이면 나머지 |
| A* 동선 모형은 로봇이 고르는 베이스 자리·우회로를 못 맞춘다 (식탁 3.1 m 를 1.5 m 로, 책상 1.45 m 를 "안 보임" 으로) | 실측 궤적 모드(ROUTINE_TRAJ): 같은 실행 계획은 유닛 시간이 초 단위로 재현되므로(379/382/375 s) 앞선 실행의 robot_base_pose 로 노출을 잰다 — 데이터 판은 2-pass(실행 계획 1회 → 관찰 배치 → 재실행) 또는 실행 계획별 궤적 캐시 |
| 픽셀 로그는 카메라 셋 중 최대 — 오른쪽 어깨(exo_camera_2)가 왼쪽보다 잘 보는 자리가 있다 | 예측기도 두 어깨 카메라(좌우 대칭)의 최대 |
소파 판정 수정이 런타임에서 안 먹었다(런타임 ctx 는 _card 만 든다) | surface_top_z 가 _card 도 본다. 쌍둥이 천→소파 1회 403 s 성공으로 확인 |
| 지시 전에 증거를 보면 "지나가며" 가 아니다 | 시작 자세는 관찰 방도 피한다 (거실 anchor) |
| 경로 0.6 m 옆을 지나도(1.5 m 안 540 프레임) 한두 프레임만 잡힌다 — 어깨 카메라는 전방 아래 34° 를 본다 | 수납처는 동선의 정면 원뿔(진행 방향 ±40°)에 있어야 한다: 방 입구 맞은편·목적지 접근 방향. 예측기는 이미 heading 을 쓰므로 여유를 요구한다(예측 ≥ 400 px · 셋 다 보이는 표본 ≥ 5) |
| 뒤집개(얇은 판)는 예측 361 px, 실측 161 px — 옆에서 보면 선이다 | 얇은 물체는 면적 보정 0.7 → 0.35, 또는 관찰 배우에서 제외 |
| 같은 계획이라도 strip 소품이 달라지면 소파 놓기 IK 해가 바뀌어 낙하(3002 vs 3002_tv) | 플래너의 geom 순서 의존을 없애거나(정렬), 2-pass 는 strip 도 고정. 실행 여분 천 k=3 |
| 같은 계획(seed·k 동일)이면 동선이 완전히 재현된다 — 3000 1차·2차 궤적 108.6 m 동일(소파 1.20 m/912 프레임, 책상 0.80 m/3,019 프레임 모두 일치). seed·k 가 다르면 경로 길이 80 → 52 → 51 m, TV장 거리 1.27 → 1.02 → 1.60 m | 2-pass 는 동일 계획으로: 실행 계획을 한 번 돌려 궤적을 얻고, 그 계획을 그대로 두고 관찰 배치만 바꿔 재실행. 다른 seed 의 궤적은 쓰지 않는다 (__3006 의 실패 원인) |
| TV장 가운데에 놓은 칼은 스쳐 지나가는 정도(0.4 s)로만 보였다 — 크기는 맞고 지속 시간이 짧다 | 예측기에 지속 시간 조건(유닛당 셋 다 ≥200 px 인 표본 ≥ 3 = 1.2 s) + 증거를 수납처 위 경로 쪽 가장자리(동선에 가장 가까운 점으로 최대 0.4 m)에 놓는다 → 같은 TV장이 점수 2,223 → 2,961, 유닛 2개 성립. 재실행 __3006(여분 k=3, job 110442) |
결론: D② 컨텍스트는 실행기 변경 없이 만들어진다(6회 실행: 실행 유닛 4/4 깨끗 ×3, 3/4 ×3). "지나가며 본다" 는 생성기가 노출을 픽셀·지속 시간으로 예측하고 실측으로 확정해야 성립하며, 성립 조건은 동선 정면 ≤ 1.2 m 에 놓인 충분히 큰 물체다. 기본 편(칼 → 거실 소파)은 성립 — 칼 114 프레임 · 최대 760 px · 4/4 유닛. 쌍둥이는 이 집의 나머지 수납처가 전부 동선 옆이라 3회 모두 근접 미달 → 데이터 판에서는 집·짝 선정 단계에서 두 편 모두 예측 노출(≥ 400 px · ≥ 5 표본 · 유닛 ≥ 2)을 통과하는 조합만 뽑는다(이 집·칼 조합은 기각).