Index
2026-09-21 — Experiment

기권 계약 완화(읽기 v13) — 이득은 '찍어서'가 아니지만 tagmem 만의 이득도 아니다

scene_bench 읽기 트랙 | 오픈 3모델 find 589질의 · 배선 버그 수정 재측정 · vis-pure 공정성 대조 · 추측 감사 · 기권 채점 교란

TL;DR

74→66%
32B 미기록 기권율
62→0%
Gemma4 미기록 기권율
+6.3pp
32B vis-pure +문장 (p<.01)
OR 3.56
추측 감사 (p=.00035)
$0
GPU/API

1 배경 / 목적

오픈 모델(32B·Gemma4·Qwen3.8)이 writer·reader 를 스스로 다 맡으면 tagmem 이 vis-pure 에 진다. 사용자(260919): "정보가 많은데 지는 게 말이 안 된다. 우리가 프롬프트나 세팅을 뭔가 성능이 전반적으로 안 나오게 했을 수도 있다." — tagmem 리더는 항목 ~22개 + 사진 ~15장을 받는데 vis-pure 는 8장이다. 하네스 공정성은 이 프로젝트 소관이라 원인을 행 단위로 갈랐다.

진단 — 쓰기 상태별로 갈라 보면 한 구간만 무너진다 (find, 같은 행 비교)

모델상태nblindvis-puretagmemtag−blindtagmem 기권율
Gemma4정상150.320.533.700+.380
Gemma4미기록181.204.354.144−.06162% (blind 6%)
Qwen3.8미기록181.166.298.110−.055
32B정상142.197.373.528+.331
32B미기록172.163.209.076−.08774% (blind 31%)
flash미기록56.125.482.339+.21446%

기록이 맞을 때 tagmem 은 모든 모델에서 압도적 1위(vis-pure 대비 +.16~+.24)인데, 항목에 물체가 아예 없으면 오픈 3모델만 blind 아래로 떨어진다. Gemma4 는 blind 로 물으면 6% 만 기권하고 .204 를 맞히는데 tagmem 으로 물으면 62% 기권하고 .144 — 모델이 답할 수 있는 것을 안내문이 막고 있다. 공통 답 계약("메모리로 판정 못 하면 abstain")은 전 전략 동일하지만 vis-pure 헤더는 "내가 기억으로 남긴 프레임들" 한 줄뿐이고, tagmem 안내문만 모든 서술을 "my entries / my index" 로 틀 지었다.

2 작업 내용

읽기 v13 = v8 + 3문장 (앞부분 바이트 동일)

"If nothing in my index covers the object you are asked about, that is not a reason to abstain: my entries are only part of what I know about this house. Answer where such a thing is normally kept in a house like this one, exactly as you would with no notes at all. Abstain only when you cannot even name a room." → 특권 부여가 아니라 blind 와 같은 자유를 되돌리는 것. 회복 상한은 blind 수준("with no notes at all" 로 같은 기준 명시)

사전등록 (결과 전 고정)

대상: find v1.0 589질의, tagmem-r3 읽기만(각 모델 자기 그래프 재사용, 재ingest 없음), 오픈 3모델, 대조군 = 같은 모델의 v8 측정 채택 기준(둘 다 충족): ① 미기록 구간 place +4pp 이상 ② 정상 결합 구간 place 하락 1pp 이내 예측: 미기록 기권율 62~74% → 20% 미만, 헤드라인 +2~4pp, 정상 구간 거의 불변(항목이 있으면 새 문장이 발동 안 함) 미달이면 v8 유지, 모델별 선택 채택 금지, 측정 1회

수행 순서와 정정

1) 첫 v13 런(139038~139040, 각 20~25분, $0) → 세 모델 채택 기준 통과처럼 보였다 2) 공정성 대조: 같은 문장을 vis-pure 헤더에 SBENCH_VIS_FALLBACK=1 로 넣고 재측정(139108~139110, $0) → vis-pure 도 같이 오름 3) 재검증 중 발견: 첫 런이 v13 을 버전 분기에 배선하지 않아 실제로는 "v8 문장 + 검색 장치 전부 꺼짐"이 돌았다 → 04006a6 에서 9곳 수정 (v13 은 v8 + 한 절이 아니었다 — 모든 버전 분기에 배선, v9 용 v14 추가). 판정 스크립트도 결과 전에 고침(20b280f) 4) 수정 재측정: 139914(find v13)·139915(restore v13)·139916(restore vis-pure +문장), 각 1h20m, $0. 쓰기는 한 번도 다시 돌지 않게 --memory-from / --tagmem-graph 로 본표 메모리 재사용 — 읽기만 바뀐 순수 대조 5) 추측 감사 tmp/alltab/guess_audit.py: v8 기권→v13 응답으로 바뀐 행만 뽑아 (a) 답이 blind 와 글자까지 같은지 (b) 정답 (방+가구)가 다른 물체 이름으로라도 인덱스에 적혀 있었는지로 갈라 정답률 비교

3 결과

배선 수정 확인 (32B, 589행 평균)

진단v8v13(버그)v13(수정)
ledger 줄907.9
bundle_extra5015.1
n_fill300.8

Find 헤드라인 (589질의, place=방+가구, %) — 수정 재측정

모델tagmem v8tagmem v13(첫 런·버그)tagmem v13(수정)vis-purevis-pure +문장
qwen3vl-32B19.024.422.321.427.7
Gemma4-31B26.133.032.033.034.5
Qwen3.8-27B25.330.530.024.828.7

(첫 런 버그 값은 v8 검색 장치가 꺼진 조건이라 세 모델 모두 수정판보다 높다. 수정판 기준 tagmem−vis+문장: 32B −5.4pp · Gemma4 −2.5pp · Qwen3.8 +1.3pp.)

모델미기록 +4pp / 정상 ≥−1pp (사전등록)판정미기록 행 기권율 v8→v13
32B+5.8 / +2.1채택74 → 66%
Gemma4+18.8 / −1.3미달(정상 −1.3)62 → 0%
Qwen3.8+16.0 / −0.7채택75 → 20%

공정성 대조 — 같은 문장을 vis-pure 에도 (가설 기각)

모델vis-pure 기본+ 같은 문장Δp미기록 기권율
qwen3vl-32B.214.277+6.3pp<.0124% → 5%
Gemma4-31B.330.345+1.5pp.421% → 0%
Qwen3.8-27B.248.287+3.9pp.012% → 1%
가설 기각: 앞 분석의 "우리가 tagmem 에만 족쇄를 채웠다"는 틀렸다. 32B 는 tagmem(+5.4)보다 vis-pure 가 더 올랐다(+6.3).

추측 감사 — "찍어서 맞춘 건가"

전환 행(v8 기권→v13 응답)에서 새로 맞춘 행 중 답이 blind 와 동일한 비율: 32B 2/10(20%) · Gemma4 14/31(45%) · Qwen3.8 10/34(29%). 나머지(8/17/24행)는 blind 가 틀린 자리를 v13 이 맞혔다.

모델정답 자리가 인덱스에 있음없음
32B9/15 (60.0%)1/4 (25.0%)
Gemma427/79 (34.2%)4/34 (11.8%)
Qwen3.829/75 (38.7%)5/29 (17.2%)
합산65/169 (38.5%)10/67 (14.9%)

Fisher exact p=.00035 · OR 3.56, 세 모델 방향 동일. 그리고 버그였던 lean 런(검색 장치 꺼짐) vs full: 32B 23.4 vs 21.5 · Gemma4 32.5 vs 31.4 · Qwen3.8 30.1 vs 29.2 — 세 모델 다 lean 이 높지만 3모델 합산 McNemar p=.083 이라 "검색 장치가 오픈 모델엔 잡음"이라는 해석은 근거 부족으로 세우지 않는다.

Restore — 판별 불능

모델tagmem v8tagmem v13vis-purevis+문장
32B3.93.91.82.6
Gemma43.13.33.73.1
Qwen3.83.33.93.73.9

전부 3~4% 잡음 바닥(flash 18.6). 이 가족으로는 오픈 모델 전략을 가를 수 없다.

4 Takeaway

의미

1) "미기록"은 기억의 부재가 아니라 이름 검색의 실패다. 미기록 행의 47~71%가 비정본 명칭으로 옳은 자리에 적혀 있다는 앞선 확인과 이번 OR 3.56 이 같은 현상의 두 측면이다. 기권 계약이 그 항목들을 읽지 못하게 막고 있었다.

2) 채점이 기권을 오답과 똑같이 0점 처리하는 것이 교란 변수다. 기권율이 그 자체로 점수를 깎아 표가 재는 것이 "기억의 품질"이 아니라 "얼마나 신중한가"가 된다. v8 tagmem 은 미기록 행에서 74/62/75% 기권했고 vis-pure 는 거의 안 했다. 논문 표에 기권율을 병기하거나 (정답/오답/기권) 3분할 보고가 필요하다.

3) 하네스 결함 하나를 찾았지만(기권 계약이 메모리 전략 전체를 눌렀고 모델 강도에 반비례) 사용자 목표("open writer=reader 에서 tagmem 승리")는 달성되지 않았다 — 둘 다 올라 무승부. 본표의 오픈 모델 수치는 전략 무관하게 과소평가돼 있었다.

4) 32B 만은 완화 후에도 미기록 13.4% < blind 16.3% — 인덱스를 주면 오히려 헷갈린다(writer·reader 동시 약점).

5 Next Steps

미해결 한계

① 채택 범위 미정: 계약 완화를 build_system_v3 공통 답 계약에 한 번 넣는 것이 가장 깔끔하다(blind·textlog·frames 포함 전 전략 동일). 지금은 tagmem 안내문·vis 헤더에 각각 들어가 비대칭. ② 채택하면 본표 전체가 바뀌므로 재측정 전에 범위·기준 확정 필요 — flash 4가족 6전략 읽기 전량 ≈$82(ingest 재사용). ③ 채점의 기권 처리 방식(3분할 vs 기권율 병기) 미결.

다음 작업

제출 완료(140103~140108, extra, $0): resume·routine 읽기 v14(=v9+문장) + vis-pure 대조군, 오픈 3모델. 쓰기 재실행 없음(SBENCH_TAGMEM_GRAPH / --memory-from 으로 본표 메모리 재사용) — 이 두 가족이 tagmem 기권율이 가장 높아 효과가 제일 클 자리(현재 open 모델 resume tagmem 꼴찌 3.9~11.1, routine 도 frames/rf-v3 에 밀림). 메모리 재사용 파일 tmp/newopen/mem_{resume,routine}_{gemma4,qwen38}.json 신규. 사용자 보류: flash 계약 완화 재읽기($82).