Index
2026-09-09 — Analysis

온라인 exec-SR 670행 — D1/D2/D3/S1/S2 × 전략 정본 표

scene_bench | 수정된 per-strategy writer · find v1.0 e987b40f · VLA place_oc@20000 · gemini-3.7-flash

TL;DR

670
행 (전량)
$42.84
API 실비
0.328
최고 SR (textlog)
0.142
blind SR
43
S1+S2 (전수)

1 배경/목적

중간 런(500플랜)의 SR은 t≥1에서 무효였다. 공통 append writer가 모든 전략에 온라인 텍스트 노트를 쌓아, 이미지 전용(vis-pure)·기억 없음(blind)·요약 재작성(rf-v3)의 규칙을 전부 깨뜨렸기 때문이다. 첫 행동 적중(t=0, 시드만 봄)만 유효했다.

또 균등 샘플링으로는 multi 셀(S1·S2)이 전략당 3~6행밖에 안 잡혀 셀 표를 만들 수 없었다.

이번 런의 목적 2가지 — ① 수정된 writer로 SR을 다시 재서 중간 런 수치를 대체한다. ② S1/S2를 전수로 채워 D1/D2/D3/S1/S2 셀 표를 완성한다.

2 작업 내용

질의 = (100컨텍스트 × 1질의, seed 7) ∪ (S1/S2 전수 43질의) = 134질의 플랜 = 134 × 5전략 = 670 전략당 셀 D1 31 · D2 52 · D3 8 · S1 26 · S2 17 ← S1/S2는 데이터셋 전량(각 26·17개가 전부) 프로토콜 v2(strict 접지 · 도달 반경 1.0 m pick · open/close) + 채점 v2(dataset budget_steps, 종료 위치+done) 이미지 obs 4 (직전 서브골 3 + 현재 뷰 1) / image_cap 8 VLA pi05_mlspaces_place_oc@20000 · VLM gemini-3.7-flash

두 선택 규칙의 합집합을 한 잡으로 돌리려고 --v1-queries-file을 추가했다(16a0d66). 기존 --queries-file은 v0.7 경로만 걸러 --v1-contexts 플랜에는 조용히 무효였고, 두 잡 세트로 나누면 겹치는 45플랜이 중복 실행돼 결과 파일에 같은 plan_id가 두 번 들어간다. 같은 커밋에서 paper_cell(셀 판정)을 분석 스크립트 3곳의 복제본에서 sbench_eval.dataset_v1로 통합했다.

먼저 잡은 결함 — writer 커밋(872008b)이 policy = writer_policy(plan.strategy)로 VLA policy 인자를 덮어써 첫 조작 서브골마다 AttributeError: 'dict' object has no attribute 'task'로 죽었다. navigate만 하는 플랜은 살아남아 샤드가 조용히 "COMPLETED"로 보였다. 145c9b3에서 개명 + AST 회귀 테스트(run_online_plan이 policy를 재대입하면 실패) 추가. 이 함수는 env/policy/client가 필요해 단위 테스트가 없던 사각이었다.

3 결과 — 셀 × 전략

670/670행, $42.84. final: done 378 · budget_exhausted 188 · abort 72 · max_subgoals 32. 예산 내 547/670.

SR (성공률) — 셀 × 전략, 셀별 최고값 굵게
셀nblindtextlogframes-uniformrf-v3rf-vis-pure
D1310.190.520.320.350.29
D2520.250.440.350.460.42
D380.000.250.000.120.12
S1260.000.120.080.000.04
S2170.000.000.060.060.12
전체1340.1420.3280.2310.2760.261

첫 행동 적중 — 셀 × 전략 (t=0 결정, writer 무관)
셀nblindtextlogframes-uniformrf-v3rf-vis-pure
D1310.190.810.450.550.45
D2520.290.400.540.560.54
D380.250.500.250.380.38
S1260.310.880.380.540.50
S2170.590.760.710.590.59
전체1340.3100.6400.4900.5400.510

전체 SR 95% 신뢰구간 (Wilson)

전략성공/전체SR95% CI
blind19/1340.142[0.093, 0.211]
textlog44/1340.328[0.255, 0.412]
frames-uniform31/1340.231[0.168, 0.310]
rollforward-v337/1340.276[0.207, 0.357]
rollforward-vis-pure35/1340.261[0.194, 0.341]

4 메모리는 blind를 전부 유의하게 이긴다

ABA>B / B>Ap (양측 McNemar, n=134쌍)
blindtextlog4/29<0.0001 ***
blindrollforward-v37/250.0021 **
blindrollforward-vis-pure9/250.0090 **
blindframes-uniform7/190.0290 *
textlogframes-uniform26/130.0533
textlogrollforward-v320/130.2962
textlogrollforward-vis-pure21/120.1628
frames-uniformrollforward-v314/200.3915
frames-uniformrollforward-vis-pure16/200.6177
rollforward-v3rollforward-vis-pure13/110.8388
네 메모리 전략 모두 blind 대비 유의하다. 온라인 트랙에서 "메모리가 실행 성공률을 올린다"가 처음으로 전 전략에서 확정됐다.
그런데 메모리끼리는 여전히 안 갈린다. textlog vs frames 0.053(경계) 외에는 전부 p>0.15다. writer 결함을 고친 뒤에도 같은 결론이라는 점이 중요하다 — SR 압축의 원인은 writer가 아니었고, 260908에 분석한 타깃/디스트랙터 상쇄 + VLA 병목의 곱셈 구조가 그대로 유지된다.

5 multi 셀은 메모리 실패가 아니다

전략direct (D1+D2) SRmulti (S1+S2) SRmulti 첫 navigate 적중
blind19/83 = 0.230/43 = 0.0013/43 = 0.30
textlog39/83 = 0.473/43 = 0.0733/43 = 0.77
frames-uniform28/83 = 0.343/43 = 0.0714/43 = 0.33
rollforward-v335/83 = 0.421/43 = 0.0219/43 = 0.44
rollforward-vis-pure31/83 = 0.373/43 = 0.0718/43 = 0.42
textlog는 multi에서 첫 목적지를 77% 맞추면서 완주는 7%다. 기억은 제 일을 하는데 점수가 안 나온다.
⚠ 정정 (2026-09-10) — 이 절의 원래 결론("VLA가 2개 이상을 연속 조작 못 한다")은 틀렸다. 물체 단위로 세면 textlog는 direct 0.43 → multi 0.44로 저하가 없다. multi SR 0.07의 정체는 결합(p²≈0.19)과 예산 초과(multi 28% vs direct 13%)이며, 두 개를 다 집고도 예산 초과로 0점인 행이 8개 있다. 다만 이미지·요약 전략은 물체 단위로도 떨어진다(rf-v3 0.39→0.22, frames 0.33→0.23). 근거·롤아웃 영상: GT vs 실제 실행 대조.

6 writer 실측 — vis-pure의 cap 8은 제약이 아니다

전략notes / img메모리 이미지keep/drop/evict시드 잔존온라인 프레임턴평균 스텝
blindnone / none0———8.21029
textlognone / none0———7.3933
frames-uniformnone / uniform8——0.95/86.2801
rollforward-v3rewrite / none0———6.1884
rollforward-vis-purenone / keep861/60/17.21/8—6.3873

7 Takeaway

8 Next

운영 메모 — SHARD_BY=plan에서 N_SHARDS가 5의 배수면 샤드 인덱스 mod 5 = 전략이 되어, 샤드 하나가 죽으면 특정 전략만 통째로 빈다(이번에 샤드 6 = frames-uniform 16행 누락 → own QOS 재제출로 복구). 5의 배수를 피하거나 SHARD_BY=episode를 쓸 것. 또 preempt가 잦으면 sbmr 재시도 5회가 소진될 수 있다.