---
name: claim-provenance-absorption
description: 다단계 판정 파이프라인에서 «주장 하나»의 출처를 잇는 문제 — 기성 계보 둘과 그 실측, 그리고 매칭으로는 안 닫힌다는 근거
tags: [provenance, claim-identity, frontier-absorption, known-pair, audit]
---

# 주장 출처(claim provenance) — 답습 기록 (2026-09-13)

## 왜 찾았나

FH 의 2회 패스 실험에서 **round-1 주장이 최종 산출에 남았는지**를 세려다 막혔다. 팔마다 id 를
다르게 나르고(`codex-logic-1` → `codex-logic-r2-1` vs 그대로 유지), `round` 필드는 r1 에서 온
주장에도 2 를 찍는다. **출처를 나르는 필드가 없다.** 그래서 내용으로 맞췄더니 라운드2가 제목을
다시 써서(`Deferred child events inspect and render the parent` → `Child event change detection
inspects the parent`) 재작성이 «소멸» 로 계상됐다.

🟥 **지어내기 전에 물었다.** 이건 기성 문제류다.

## ⓐ 정적분석 — 「버전 간 경고 추적」 (`arXiv:2305.02515`)

| 도구 | 비교 대상 | 같은 결함 | 결함이 고쳐진 경우 | 합계(96쌍) |
|---|---|---|---|---|
| SCALe | 소스 줄 텍스트 diff | 75 % | **93.3 %** | 62/96 |
| GumTree | AST 노드 | 75 % | 75.8 % | 89/96 |
| Hydrogen | CFG(MVICFG) 노드 | **100 %** | 70.8 % | **95/96** |

🟥 **어느 전략도 양쪽을 지배하지 않는다.** ⇒ 매처에는 **두 방향 known-pair** 가 필요하다 —
«같은 것을 같다고» 와 «달라진 것을 달라졌다고». 한쪽만 재면 그 매처는 절반만 보정된 것이다.

명명된 실패 모드 **refactoring blindness**(의미 보존 변경을 못 따라감)가 LLM 파이프라인에서는
**재작성(paraphrase)** 으로 나타난다. 같은 병이다.

## ⓑ LLM — 주장 단위 레코드 (`arXiv:2604.04074`, FactReview)

주장마다 남기는 것: **출처 위치 · 어느 단계가 판정했나 · 검사 범위 · 타입된 결과 · 근거 ·
남은 미해결**. 결과는 닫힌 4값 — `Supported` · `Partially supported` · `In conflict` · `Inconclusive`.

동일성 판정은 **Jaccard + 방향성 중첩**을 **임계 0.55** 로 **얼려서**(frozen) 쓰고, 그 상태의
주장 회수가 **84.3 % F1**(354 주장) · 상태 일치 94.7 % · 전체 90.3 %(495 주장)다.

## 🟥 여기서 나오는 판정 — 매칭으로는 안 닫힌다

발표된 최신 기법조차 회수가 **84.3 %** 다. 즉 «주장이 보존됐나» 를 **사후 매칭으로** 닫으려는
시도는 원리적으로 15 % 안팎을 잃는다. ⇒ **매처를 개선하는 게 아니라 기록을 남겨야 한다.**

```
① 주장마다  출처 단계 · 검사 범위 · 근거 를 싣는다
② 거절을    4값 중 하나로 «타입 지어» 남긴다     ← 침묵이 사라지는 자리
③ 매칭은    그 위의 폴백으로만. 쓸 때는 두 방향 known-pair 를 세운다
```

②가 핵심이다 — 🟥 **단 그 동기는 정정됐다(2026-09-13 같은 날).** 초판은 「FH 실측에서 거절 113 건이
기록 없이 사라졌다」를 근거로 들었는데 **그건 내가 채널 둘만 본 결과였다.** 전수 확인하니 그 113 건은
전부 `pipeline.log` 의 **타입된 status** 를 갖고 있었다(`status=UNREVIEWED` · `rc=3` · `coverage=0/1`,
로그 없음 **0건**). 낮은 보존률은 거절이 아니라 **실행 실패**였다.

**정확한 결손은 한 층 아래다** — 런 단위 타입은 있고 **주장 단위 타입이 없다.** 런이 `UNREVIEWED`
라는 건 알지만, 성공한 런 안에서 **어떤 주장이 왜 안 살아남았는지**는 값이 없다. 답습의 값은
줄지 않되 **적용 지점이 한 층 내려간다.**

⚠️ 이 정정 자체가 이 문서의 두 번째 교훈이다: **«기록이 없다» 는 «내가 연 채널에 없다» 와 다르다.**
부재를 주장하기 전에 **채널을 세라.**

## 적용 범위 — FH 안에서 같은 형태를 쓰는 곳

이 교훈은 논문 하나가 아니라 **다단계 판정 파이프라인 일반**에 걸린다. FH 안에서 같은 모양:
`auto-decorrelation`(패널이 발견을 거절) · `finding_verify.py`(드롭 감사) · 9 렌즈 진단(적대 반증
탈락 35건) · `harness-pr-reviewer` Step 3.5. 🟥 **그중 어느 것도 거절을 4값으로 타입 짓지 않는다** —
지금은 «남았나/빠졌나» 이진이다. 승격 후보이고, 지금 짓지 않는다(실측 N=1).

## 명명된 잔여

- FactReview 의 0.55 임계·방향성 중첩을 우리 코퍼스에 그대로 옮기면 맞는지 **미측정**이다.
- ⓐ 의 세 도구는 **코드** 경고를 다루고 우리는 **자연어 주장**을 다룬다. 실패 모드가 같은 이름으로
  나타난 것은 관찰이지 증명이 아니다.
