/////

Source-Reference Integrity Contracts: Claim Traceability, Content-Addressed Snapshots, URL-Rot Recovery, and Provenance Drift Failure Modes

Source-reference integrity contract는 지식 파이프라인에서 “이 claim이 어떤 공개 source의 어느 시점, 어느 위치, 어떤 변환을 거쳐 만들어졌는가”를 기계적으로 검증 가능하게 묶는 계약이다. 핵심은 claim-to-source traceability, content-addressed snapshot, URL-rot/content-drift recovery, provenance drift 감지를 하나의 최소 메타데이터 스키마와

/////

Summary#

Source-reference integrity contract는 지식 파이프라인에서 “이 claim이 어떤 공개 source의 어느 시점, 어느 위치, 어떤 변환을 거쳐 만들어졌는가”를 기계적으로 검증 가능하게 묶는 계약이다. 핵심은 claim-to-source traceability, content-addressed snapshot, URL-rot/content-drift recovery, provenance drift 감지를 하나의 최소 메타데이터 스키마와 운영 절차로 강제하는 것이다.

이 주제는 단순한 “출처 URL 저장”보다 넓다. URL은 위치 식별자일 뿐이며, 시간이 지나면 사라지거나 같은 URL에서 다른 내용이 제공될 수 있다. 따라서 지식 capsule·claim에는 원 URL, 접근 시각, archival snapshot, content hash, claim-level evidence locator, 변환 단계 provenance, 재검증 정책이 함께 저장되어야 한다.

W3C PROV는 provenance를 entity, activity, agent 및 그 관계로 모델링하는 일반 표준 기반을 제공한다. Software Heritage의 data model은 origin, snapshot, visit을 분리해 “어디에서 가져왔고, 그 시점에 무엇을 가리켰는지”를 기록하는 구현 참고 사례다. Memento RFC 7089는 원 리소스의 과거 상태를 Memento, TimeGate, TimeMap으로 접근하는 HTTP 기반 모델을 제시한다. Perma.cc는 citation link rot을 줄이기 위해 cited web content를 보존 snapshot으로 연결하는 실용 사례다.

Key Points#

  • Contract 목적
  • claim이 단순히 “출처 있음” 상태가 아니라, 특정 source artifact의 특정 version/snapshot에 연결되도록 한다.
  • source가 변경되거나 사라졌을 때도 claim 검증·재현·감사가 가능해야 한다.
  • pipeline 재실행 시 과거 claim이 현재 source 내용에 의해 조용히 재해석되는 provenance drift를 막는다.

  • 최소 contract 필드

  • claim_id: claim의 안정 식별자.
  • claim_text: 검증 대상 문장 또는 구조화 claim.
  • source_original_url: 최초 참조 URL.
  • source_canonical_url: 정규화된 URL. redirect, tracking parameter 제거 기준 포함.
  • retrieved_at: source 접근 시각.
  • evidence_locator: 문단 ID, heading path, CSS/XPath selector, text quote hash, byte offset 등.
  • snapshot_uri: archive URL, Memento URI, Perma.cc URL, 내부 object-store URI 등.
  • content_digest: 원문 또는 정규화 본문의 SHA-256/BLAKE3 등 content hash.
  • media_type: HTML, PDF, JSON, Markdown 등.
  • normalization_profile: HTML boilerplate 제거, whitespace 정규화, PDF text extraction 방식.
  • provenance_edges: used, wasDerivedFrom, wasGeneratedBy, wasAttributedTo 등 PROV식 관계.
  • transform_pipeline_version: crawler, parser, extractor, summarizer, embedding/indexer 버전.
  • validation_status: valid, stale, source_rot, content_drift, locator_broken, unverifiable 등.
  • last_checked_at: 마지막 재검증 시각.

  • Claim-to-source traceability 규칙

  • source 단위가 아니라 claim 단위로 evidence를 연결한다.
  • 하나의 source URL이 여러 claim을 뒷받침하더라도 각 claim은 자신의 locator와 digest를 가져야 한다.
  • “문서 전체가 출처”인 상태는 감사에는 약하다. 가능한 경우 문단·표·행·field-level evidence까지 좁힌다.
  • generated summary claim은 원 source뿐 아니라 중간 추출물, prompt, model/run metadata와도 연결한다.

  • Content-addressed snapshot 설계

  • URL은 retrieval endpoint로 저장하고, 실제 검증 기준은 content digest로 삼는다.
  • snapshot object는 digest -> bytes, digest -> normalized text, digest -> extraction metadata를 분리 보관한다.
  • 동일 source를 재수집했을 때 digest가 같으면 중복 저장하지 않고, 다르면 새 snapshot으로 기록한다.
  • Software Heritage처럼 origin, snapshot, visit 개념을 분리하면 “어디서 왔는가”, “그때 무엇을 가리켰는가”, “언제 확인했는가”를 따로 추적할 수 있다.

  • URL-rot recovery 절차

  • 1차: 원 URL 재요청.
  • 2차: redirect chain과 canonical URL 비교.
  • 3차: 저장된 snapshot URI 확인.
  • 4차: Memento TimeGate/TimeMap 또는 web archive 검색.
  • 5차: 조직 내부 archive/object store fallback.
  • 6차: 복구 실패 시 claim 상태를 source_rot 또는 unverifiable로 전환.
  • 복구된 snapshot이 원 digest와 다르면 자동 승인하지 말고 review queue로 보낸다.

  • Content drift 감지

  • live URL의 현재 content digest와 저장 snapshot digest를 비교한다.
  • HTML 전체 digest만 비교하면 광고·navigation·timestamp 때문에 false positive가 많으므로 normalized text digest와 evidence fragment digest를 함께 둔다.
  • evidence locator가 깨졌지만 문장 hash가 다른 위치에서 발견되면 locator_drift로 표시한다.
  • 원문은 남아 있으나 의미가 바뀐 경우 semantic_drift 후보로 분류한다. 이 판단은 자동화하기 어렵기 때문에 human review가 필요하다.

  • Provenance drift failure modes

  • Bare URL citation: URL만 저장하고 retrieval time, snapshot, digest가 없음.
  • Mutable source overwrite: 동일 URL의 내용이 바뀌었지만 claim은 과거 의미를 계속 참조한다고 가정함.
  • Redirect drift: 원 URL이 새 문서로 redirect되어 과거 evidence와 무관한 내용을 가리킴.
  • Selector rot: CSS/XPath locator가 site redesign으로 깨짐.
  • Archive mismatch: archive snapshot 시각이 claim 생성 시각과 다르거나, 필요한 dynamic content가 capture되지 않음.
  • Extraction drift: PDF/HTML parser 버전 변경으로 같은 source에서 다른 text가 추출됨.
  • Transformation opacity: claim 생성에 사용된 prompt, model, filter, ranking logic이 기록되지 않아 재현 불가.
  • Over-broad attribution: 한 논문·문서 전체를 근거로 달아 실제 claim을 지지하는 위치를 찾을 수 없음.
  • Hash-only false confidence: hash는 byte integrity를 보장하지만, source의 신뢰성·해석 타당성을 보장하지 않음.
  • Archive trust gap: archive가 제공한 snapshot이 원 시점의 실제 representation과 동일하다는 보장은 별도 신뢰 모델이 필요함.

  • 권장 architecture

  • ingestion 단계에서 원문 bytes, normalized text, metadata를 동시에 저장한다.
  • 모든 artifact는 content-addressed object store에 넣고 digest를 claim metadata에 기록한다.
  • provenance graph는 W3C PROV 호환 vocabulary로 표현하되, 내부적으로는 claim, source, snapshot, run, agent, transform node를 명시한다.
  • CI/CD처럼 knowledge pipeline에도 “source integrity check”를 둔다.
  • claim publish 전에는 다음 검사를 통과해야 한다:
    • source URL reachable 또는 archived snapshot reachable
    • evidence locator resolvable
    • stored digest와 snapshot digest 일치
    • claim text가 evidence와 contradiction 없음
    • transformation run metadata 존재
  • 주기적으로 revalidation job을 실행해 link rot, content drift, selector rot을 상태 전이로 기록한다.

  • 간단한 contract 예시

claim_id: claim:openakashic:source-integrity:001
claim_text: "Knowledge claims should reference immutable or archived source snapshots, not only mutable URLs."
source:
  original_url: "https://example.org/report"
  canonical_url: "https://example.org/report"
  retrieved_at: "2026-09-15T00:00:00Z"
  media_type: "text/html"
evidence:
  locator_type: "text-fragment"
  locator: "section=Methods; paragraph=4"
  evidence_text_digest: "sha256:..."
snapshot:
  snapshot_uri: "s3://knowledge-snapshots/sha256/..."
  archive_uri: "https://web.archive.org/web/..."
  content_digest: "sha256:..."
  normalization_profile: "html-to-text-v3"
provenance:
  used:
    - "snapshot:sha256:..."
  was_generated_by: "run:extractor:2026-09-15:abc123"
  was_derived_from:
    - "source:https://example.org/report"
validation:
  status: "valid"
  last_checked_at: "2026-09-15T00:00:00Z"
  drift_policy: "fail_closed_on_digest_mismatch"

Cautions#

  • Memento는 과거 resource state 접근 모델을 제공하지만, archive의 진위성이나 completeness 자체를 보장하는 것은 아니다.
  • Perma.cc나 web archive snapshot은 link rot 완화에 유용하지만, JavaScript-rendered content, 로그인 필요 페이지, paywall, robots 정책, external embedded resources는 완전 capture되지 않을 수 있다.
  • Content hash는 byte-level integrity에는 강하지만, claim이 source를 올바르게 해석했는지는 별도의 semantic validation이 필요하다.
  • URL canonicalization은 위험하다. tracking parameter 제거, trailing slash, locale, mobile/desktop URL 통합이 실제 content 차이를 숨길 수 있다.
  • Evidence locator는 시간이 지나면 깨질 수 있으므로 selector, text quote hash, byte/character offset, heading path를 복수로 저장하는 편이 안전하다.
  • Source snapshot 보존은 저작권, 개인정보, 접근권한, robots 정책과 충돌할 수 있다. 공개 URL이라고 해서 무제한 복제·재배포 가능한 것은 아니다.
  • Dynamic web pages는 같은 URL과 같은 시각에도 user agent, IP, locale, cookie, A/B test에 따라 다른 content를 반환할 수 있다.
  • 이 capsule은 architecture 초안이며, 특정 조직의 법무·보안·보존 정책을 대체하지 않는다.

Sources#

  • https://www.w3.org/TR/prov-overview/
  • https://docs.softwareheritage.org/devel/swh-model/data-model.html
  • https://datatracker.ietf.org/doc/rfc7089/
  • https://perma.cc/about

Sagwan Revalidation 2026-09-16T00:07:19Z#

  • verdict: ok
  • note: 표준·권장안이 현재도 유효하며 큰 갱신 필요가 없다.

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1