Index
2026-09-23 — Experiment

R2 구제 칸 온라인 보충 런 — 85칸 측정, 50칸 합류

scene_bench | 읽기에서 새로 정답이 된 칸을 온라인에서도 측정했다

TL;DR

85
측정 칸
50
합류
35
폐기
$11.08
비용
±.002
총 SR 이동

1합류 결과 — 순위 불변

find

전략기존구제 추가합계Δ
blind3/8 = 0.3751/14/9 = 0.444+0.069
textlog3/58 = 0.0523/46/62 = 0.097+0.045
frames-uniform7/32 = 0.2192/59/37 = 0.243+0.024
rollforward-v37/28 = 0.2502/79/35 = 0.257+0.007
rollforward-vis-pure162/309 = 0.5244/7166/316 = 0.525+0.001
tagmem-r3177/332 = 0.5330/3177/335 = 0.528-0.005
계359/767 = 0.46812/27371/794 = 0.467-0.001

restore

전략기존구제 추가합계Δ
blind1/2 = 0.5000/01/2 = 0.500+0.000
textlog32/257 = 0.1252/1234/269 = 0.126+0.002
frames-uniform10/53 = 0.1890/210/55 = 0.182-0.007
rollforward-v315/64 = 0.2340/315/67 = 0.224-0.010
rollforward-vis-pure18/88 = 0.2051/419/92 = 0.207+0.002
tagmem-r329/107 = 0.2710/229/109 = 0.266-0.005
계105/571 = 0.1843/23108/594 = 0.182-0.002
구제 칸이 특별히 쉽거나 어렵지 않았다 — 총 SR 이동이 ±0.002다. 이제 "R2로 늘어난 정답을 온라인에서도 측정했다"고 쓸 수 있다(미측정 칸이 남았다는 반론이 닫힌다).

2⚠️ 채점 스키마 교체 사고

09-22 08:12에 다른 세션이 scripts/scoring_fixes.py를 신설해 보관 채점을 갈아끼웠다 — ① 물체↔위치 대응 강등(B) 추가 + ② R2(tight 기본), 원값 키는 place_set_raw로, 구제 표시는 행 플래그 naming_rescue_r2로.

# 내 코드 (구 스키마) is_rescued = bool(sc.get("place_set")) and not sc.get("place_set_preR2") # ^^^ 키가 사라짐 → not None == True # → place_set=1 이면 전부 "구제 행"

런이 그 경계를 가로질러 돌아서 결과가 갈렸다:

분류칸처리
새 기준에서도 구제 행 · 치환됨50본표 합류
구제 행 아닌데 치환됨 (정당화 안 되는 GT 주입)14폐기
구제 행 아닌데 셀에 들어옴 (치환 없음)21폐기
폐기 35칸은 기존 본표 셀과 중복 0이라 표에 구멍이 나지 않는다. 유효 50칸만 rescuefix_{fam}_s0.jsonl로 분리해 집계기에 배선했다 — 원본 rescue_*.jsonl은 오염분이 섞여 있어 읽지 않는다.
근본 원인은 조용한 기본값이다. 없는 키를 dict.get()으로 읽으면 스키마가 바뀌어도 코드가 죽지 않고 틀린 답을 낸다. is_rescued가 원값 키가 없으면 즉시 KeyError를 내도록 고치고 테스트로 고정했다(test_is_rescued_fails_loudly_when_the_raw_column_is_missing). 여러 세션이 같은 워킹트리를 동시에 고치는 환경에서는 "조용히 계속 도는 것"이 가장 비싼 실패다.

3실행 기록

제출 09-21 23:00 · 5샤드 (find main/tagmem · restore main×2/tagmem) 완주 09-23 00:11 · 85/85 · 누락 0 · $11.08 (견적 $12) · 14.0분/칸 QOS own → extra (oracle 본 런이 own 8장을 다 써서 큐 뒤로 밀림) 대기 클러스터 만석(120/120) 구간에서 반나절 정체 · babysitter 재제출 5회로 완주 스냅샷 tmp/rescue_cells/src_rescue = 본 런 src_w2 + 치환 3파일 (프롬프트 바이트 동일)

접지 규칙(resolve_name·grounding._cat_matches)은 본 런과 바이트 동일하게 두었다 — 이름 동치류·결정 C는 이 스냅샷에 넣지 않았다. 같은 표 안에서 접지 규칙이 갈리면 안 되기 때문. 기존 1,981칸과 새 50칸의 차이는 구제 행 계획 치환 하나뿐이고, 그건 정의상 새 칸에만 적용된다.

4find v1.2 빈 칸 20개 보충 (260923)

v1.2 읽기 정답인데 어느 실행에도 없던 20칸을 델타와 같은 스냅샷 src_w2 로 채웠다. extra 에서 4회 preempt, 마지막 샤드는 own 으로 전환해 완주.

전략성공/칸
frames-uniform6/9
textlog2/7
rollforward-v31/3
blind0/1
합계9/20
find 보관소 799/1549 (.516) → 808/1569 (.515). 빈 칸 0, 강등 제외 3행 유지, 전략 순위 불변. Overleaf 하한 표기 교체 가능.