Index
2026-09-18 — Analysis

stand_ 접두사가 TVStand와 SideTable을 뭉갠다

scene_bench | find/restore 어휘 결함, 전수 감사 ($0)

TL;DR

0/24
SideTable 정답(전략 무관)
4.8%
find 영향 질의
37
stand_ 바디 전수
$33
부분 재측정 견적

1 배경 / 목적

D2 분해(관련 카드) 중 GT "tv stand" 칸에서 어떤 이미지 전략도 .23을 못 넘는 것을 발견했다. 렌더해 보니 TV가 없는 원형 접이식 테이블·사이드 테이블이었다. 처음엔 "데이터셋은 stand라고만 부르고 'tv stand'는 하네스가 지어낸 이름"이라고 보고했는데, 사용자가 "왜 tv stand라 했는지 이유부터 확인"을 지시했다.

2 작업 내용

git log -S 확인: "stand": "tv stand"는 260813 파일럿부터 있었고 260819 v3 계약에서 vocab_v1.json으로 이동. datagen(scene-mem-gen/scene-mem-datagen) 확인 결과 scenario_gen.py:206의 NAME_FIX = {"TVStand": "tv stand", ...} — datagen 자신이 "tv stand"라고 부른다(내 첫 보고는 오류, 철회).

find 정답에 나온 stand_ 바디 37개 전부를 scene card와 대조(tmp/d2/stand_split.py) → 분류별 전 전략 채점 → 제외 시 헤드라인 영향 계산. 이어 사용자 지시("돌리기 전에 다른 접두사도 다 확인")로 tmp/vocab_audit/audit_surfaces.py·audit_objects.py로 가구·물체 접두사 전수(find v1.0/v1.2, restore v1.0/v1.1) 대조. 전부 $0.

3 결과 (수치)

분류별 정답률 (flash-3.7, 단일답 행, GT 표시 이름은 둘 다 "tv stand")

진짜 분류nblindtextlogframesrf-v3vis-puretagmem
TVStand24.250.500.375.333.375.417
SideTable24.000.000.000.000.000.000

SideTable 답은 desk 16·coffee table 10·dresser 6·dining table 5 — 방만 보면 정상(frames .667·rf-v3 .625)인데 이름이 어휘에 없어서 물체 단위 채점이 전부 틀린다. 32B도 6전략 전부 0/24 동일.

헤드라인 영향 (SideTable 낀 28/589행 제외 시)

전략flash 현행 → 제외 후32B 현행 → 제외 후
vis-pure.497 → .520.214 → .224
tagmem.510 → .534.190 → .199
전 전략이 균등하게 상승할 뿐 순위 변화 없음(두 모델 모두).

전수 점검 — 뭉개는 접두사는 stand 하나뿐

가구 접두사 16개 중 15개가 상류 분류와 1:1(diningtable→DiningTable 160바디, chair→Chair 108, countertop→CounterTop 71 등). stand만 TVStand 34 + SideTable 28 바디. 물체 접두사 43개는 뭉개짐 0이나, 어휘 표시 이름이 WordNet식이라 발화와 다른 것 8종 발견(kettle→boiler, spray bottle→atomizer 등) — flash 재질의율 영향 0.2%, 32B는 최대 50%(kettle)까지 오르나 전 전략 동일 조건이라 순위 영향 없음.

정식 수정 투영 (side table 어휘 추가 시)

tagmem − vis-pure현행A(제외)B(수정, 낙관 상한)
헤드라인(hidden 제외)+.013+.014+.002

SideTable 24행 방 정답: rf-v3 15(.625)·frames 13(.542)·vis-pure 12(.500)·tagmem 6(.250, 최하) — 되살아나는 행에서 tagmem이 가장 약해 우위가 사실상 사라진다.

4 Takeaway

의미

"tv stand"라는 이름 자체는 맞다. 고칠 것은 이름이 아니라 이름의 정본을 uid 접두사에서 scene card category로 옮기는 것(방 이름과 같은 교훈). 28행은 어떤 메모리로도 맞힐 수 없는 구조적 0점이며, 순위는 안 바꾸지만 전 전략의 절대 수치와 오라클 상한을 2pp가량 누른다. D2의 tagmem 열세와는 무관(전 전략 동일하게 0).

5 Next Steps

미해결 한계

tagmem·rf-v3는 옛 어휘로 메모리를 이미 써 놨다(사이드 테이블을 "coffee table"/"desk"로 기록) — 읽기만 재측정하면 이미지 전략만 유리해져 텍스트 메모리에 불공정. 걸린 편 전체를 재ingest+전질의 재읽기해야 함(find 16/100편·109질의, restore 28/100편·171질의).

다음 작업

A안($0, 권장): SideTable 낀 행을 place_gradable=False로 재채점만. B안(정식): 어휘 v4 + 재ingest ≈$33(전량 ≈$130 대비), 32B $0 — 단 위 투영대로 tagmem 우위를 깎으므로 신중히 결정. `src/sbench_eval/facts.py`는 다른 세션이 미커밋 수정 중이라 구현 전 조율 필요.