budget_steps가 답 개수와 무관한 상수(1500)였다 — 답 2개짜리 multi 질의도 답 1개와 같은 예산을 받아, 다 집고도 예산초과로 SR=0이 되는 행이 8/215건.step_budget = budget_steps × max(1, 답 개수). 회귀 테스트 추가, direct(답 1개)는 불변.사용자 질문("gt에 tv_stand라고 되어있는데 뭐가 맞는거야")을 계기로 데이터셋 answers[].surface 필드를 씬 복원으로 직접 재보니, VLM이 "bed"라고 답한 것이 실제로는 맞았고 데이터셋 기재가 틀린 사례가 나왔다. 이 확인 과정에서 더 큰 문제가 드러났다 — find의 budget_steps는 답이 몇 개든 상수(일반 1500 / hidden 2500)였고, oracle 필드는 589행 전부 null이라 답 2개짜리 multi 질의도 답 1개와 똑같은 예산으로 채점되고 있었다. 260909 리포트에서 "S1/S2는 VLA 체이닝 한계"라고 썼던 결론이 이 예산 비대칭 위에 서 있었다면, 그 결론 자체가 인공물일 수 있다.
train_2853__0/textlog가 1543/1500으로 소진)였다 — "능력 부족"이 아니라 "시간 부족"으로 실패한 행이 섞여 있었다.데이터셋 surface 필드 검증(tmp/protocol_v2/measure_gt_support.py, 13컨텍스트, GPU 1장·렌더 없음, job 115796): surface가 기재된 답 80개 중 misplaced="wrong_surface" 10개에서만 4개 불일치(5.0%), misplaced="no" 70개는 0건. 채점 자체(물체 uid + 복원 씬 거리 기준)에는 영향 없음 — 영향 범위는 진단용 gt_ground_strict와 리포트 표시뿐.
첫 행에서 budget_steps == budget_base × n_answers(1500×2=3000) 불일치 0건을 확인한 뒤 8샤드를 진행시켰다.
| 전략 | A 옛 실측(예산 1500) | B 오프라인 재채점 | C w3 실측(예산 3000) | 물체 단위 A→C |
|---|---|---|---|---|
| blind | 0.00 | 0.00 | 0.02 | 0.18→0.22 |
| textlog | 0.07 | 0.21 | 0.14 | 0.44→0.48 |
| frames-uniform | 0.07 | 0.09 | 0.02 | 0.23→0.22 |
| rollforward-v3 | 0.02 | 0.05 | 0.05 | 0.22→0.22 |
| rollforward-vis-pure | 0.07 | 0.07 | 0.07 | 0.30→0.29 |
예산은 실제로 더 쓰였다 — 평균 스텝 1008→1514(예산 3035), 평균 턴 7.0→10.3. 옛 런에서 예산 소진으로 끊겼던 80행 중 w3에서 성공 3 · 물체를 더 들어올림 22 · 3000도 소진 33. 물체 단위 성공률은 거의 안 움직였다(textlog 0.44→0.48, 나머지 ±0.01) — 안정적인 지표다.
| 전략 | 0개 | 1개 | 2개 | 물체단위 p | p²(독립) | 실측 P(둘다) | 비 |
|---|---|---|---|---|---|---|---|
| blind | 25 | 16 | 1 | 0.214 | 0.046 | 0.024 | 0.52 |
| textlog | 8 | 27 | 7 | 0.488 | 0.238 | 0.167 | 0.70 |
| frames-uniform | 26 | 14 | 2 | 0.214 | 0.046 | 0.048 | 1.04 |
| rollforward-v3 | 27 | 13 | 2 | 0.202 | 0.041 | 0.048 | 1.16 |
| rollforward-vis-pure | 22 | 16 | 4 | 0.286 | 0.082 | 0.095 | 1.17 |
| 합산(210행) | 108 | 86 | 16 | 0.281 | 0.079 | 0.076 | 0.97 |
| 셀 | n | blind | textlog | frames-uniform | rf-v3 | vis-pure |
|---|---|---|---|---|---|---|
| D1 | 31 | 0.19 | 0.52 | 0.32 | 0.35 | 0.29 |
| D2 | 52 | 0.25 | 0.44 | 0.35 | 0.46 | 0.42 |
| D3 | 8 | 0.00 | 0.25 | 0.00 | 0.12 | 0.12 |
| S1 | 26 | 0.00 | 0.23 | 0.00 | 0.04 | 0.00 |
| S2 | 17 | 0.06 | 0.00 | 0.06 | 0.06 | 0.18 |
| 전체 | 134 | 0.149 | 0.351 | 0.216 | 0.284 | 0.261 |
Wilson 95% CI: blind [.099,.219] · textlog [.275,.435] · frames [.155,.294] · rf-v3 [.214,.365] · vis-pure [.194,.341]. 총 API 실비 $65.31(w1+w2 $42.84 + w3 $22.47).
예산 수정은 옳았지만 점수를 크게 바꾸지는 않았다. 그 가치는 "다 하고도 0점"이라는 채점 인공물을 8행→3행으로 없앤 것(측정 타당성)이지, multi 성적을 올린 것이 아니다. multi 서술은 세 번 바뀌었다: 260909 "VLA 체이닝 한계" → 260910 앞 절 "결합+예산" → 이번 절 "순수 결합". 예산은 인공물이었고, 예산을 제거하고 남는 것은 물체 단위 성공률의 곱뿐이다. 물체 단위 성공률이 런 간 안정적인 반면 질의 단위 SR은 n=43에서 노이즈가 크므로, multi 셀은 SR보다 물체 단위로 보고하는 편이 정직하다.
"조기 done 선언"(첫 물체만 집은 86행 중 58행이 예산 절반 이상 남기고 스스로 종료)은 이번 분석 범위 밖이며, 후속 online_stage_funnel 분석에서 다뤄졌다. 데이터셋 wrong_surface 답의 surface 필드 의미(현재/원래 자리 중 무엇인지)는 아직 데이터셋 팀 확인이 필요(약 11개 영향).
남은 find 전수 확장(455질의 × 5 ≈ $145) 여부 결정. budget_steps가 애초에 상수(오라클 미사용)인 것 자체도 데이터셋 쪽 확인이 필요하다.