Claim에서 인정된 사실 그래프로 이미지: Google Gemini로 생성

현실은 열린 계다. 기록은 늦게 도착한다. 증언은 번복된다. 센서는 재교정된다. 정책은 바뀐다. 아직 발견되지 않은 것이 무엇인지조차 모르므로, 관련된 모든 관측이 도착했다고 말할 수 있는 시점은 없다.

행동은 다르다. 청구하고, 지급하고, 접근을 허용하고, 경보를 울리는 일은 모두 닫힌 답을 요구한다. 현실이 끝나지 않아도 판정은 끝나야 한다. 열린 세계와 유한한 행동 사이에는 구조적 단절이 있다. 모델의 자신감을 높이거나, 추론을 길게 하거나, 에이전트 계층을 하나 더 쌓는다고 이 단절이 닫히지는 않는다.

그러므로 첫 질문은 “무엇이 참인가?”가 아니다. 이것이다.

끝을 알 수 없는 Claim의 세계에서, 누가 어떤 규칙으로 이번 판정의 전제를 확정할 수 있는가?

시스템에 들어오는 것은 사건 자체가 아니다. 계약서, 지급 기록, 센서 로그, 영상, 증언, 메시지다. 관측자가 특정 시점에, 변환 과정을 거쳐, 일정한 범위 안에서, 오류 가능성을 지닌 채 만든 파편이다. 시스템은 이것을 사실이 아니라 Claim으로 받아야 한다.

그러나 Claim을 보존하는 것만으로는 행동할 수 없다. Claim은 충돌할 수 있다. 기록이 없다는 것이 사건이 일어나지 않았다는 뜻일 수도 있고, 단지 수집에 실패했다는 뜻일 수도 있다. 하나의 전제를 도출하려면 여러 Claim을 결합해야 할 수도 있다. 열린 Claim 원장을 판정 엔진에 곧바로 넣으면 수집, 사실 인정, 규칙 적용이 다시 하나의 불투명한 행위로 합쳐진다.

필요한 것은 특정 판정에 사용하도록 허용된 사실 상태를 구성하는 명시적 절차다. 이 절차를 Projection, 그 결과를 Graph of Accepted Facts, 곧 GAF라 부른다.

Open Claims
Projection
    │  evaluation · conflict resolution · derivation · absence policy
Graph of Accepted Facts (GAF)
Closure
    │  GAF · scope · policy · rules · runtime frozen
Deterministic Verdict
Authorized Action
    └── new evidence · policy change · appeal · defect
                           Reopen / Re-projection

핵심은 사실을 더 많이 모으는 데 있지 않다. 판정의 전제를 구성하는 단계와 그 전제 위에서 연산하는 단계를 분리하는 것이다.

유한한 입력은 아직 닫힌 세계가 아니다

유한한 Claim 집합이 곧 닫힌 세계는 아니다. 데이터베이스에 지급 기록이 없다고 해서 지급이 없었다고 즉시 결론 내릴 수는 없다. 기록이 누락됐거나, 늦게 반영되거나, 잘못 전달됐거나, 다른 기관에 있을 수 있다.

따라서 Projection은 입력 목록뿐 아니라 부재의 의미를 확정해야 한다.

  • 어떤 출처를 이 대상·술어·범위·기간에 대해 완전하다고 보는가?
  • 어디에 닫힌 세계 가정을 적용할 수 있는가?
  • 기록이 없다는 것은 false인가, unknown인가?
  • 명시적 부정과 결측을 어떻게 구별하는가?
  • 근거가 부족할 때 시스템은 무엇을 반환해야 하는가?

Raymond Reiter의 기초 논문 닫힌 세계 데이터베이스에 관하여는 이 결정적 전환을 형식화했다. 닫힌 세계 가정 아래에서는 긍정 기초 리터럴을 증명하지 못한 것이 그 부정을 허용할 수 있다. 이 전환은 보편적으로 안전하지 않기 때문에 유용하다. 선언된 경계가 필요하다.

은행이 특정 계좌와 기간에 대한 확정 거래 원장을 제공하고, Projection 정책이 그 범위에서 원장을 완전하다고 인정한다고 하자. 그러면 부재는 그곳에 일치하는 거래가 없다는 근거로 사용될 수 있다. 임차인의 메시지 보관함에 지급 언급이 없다는 사실은 아무것도 증명하지 못한다. 한 출처는 선언된 질의에 대해 닫혔고, 다른 출처는 여전히 열려 있다.

Closure는 “여기까지 읽었다”는 선언이 아니다. 어디에서 부재 자체가 계산 가능한 정보가 되는지 정의하는 계약이다.

Projection은 Claim을 사실로 승격하는 버튼이 아니다

Projection을 Claim 전체에 accepted, rejected, held를 붙이는 일로 축소할 수는 없다. 현실의 Claim은 그렇게 깔끔하지 않다.

  • “5일에 임대료를 보냈다”는 말에서 날짜는 확인됐지만 용도는 확인되지 않을 수 있다.
  • 하나의 지급을 인정하려면 서로 독립적인 두 기록이 필요할 수 있다.
  • 하나의 Claim이 어떤 명제는 지지하고 다른 명제는 반박할 수 있다.
  • 어느 출처에도 그대로 쓰이지 않은 사실이 파생될 수 있다.
  • 신뢰할 수 있는 출처라도 그 기록이 어느 사건을 가리키는지는 미상일 수 있다.

Evaluation은 Claim 전체에 붙는 플래그가 아니라 관계다. 하나 이상의 Claim, 하나의 원자적 Proposition, 하나의 특정 Projection을 연결한다. 이어서 Derivation이 Evaluation, 이미 채택된 전제, 명시적 규칙을 결합해 Accepted Fact를 산출한다.

Claims ───────┐
Proposition ──┼── Evaluation ── accepted / rejected / unknown
Projection ───┘                     │
                       Derivation ── Claims · Facts · Rules
                            Accepted Fact

Claim은 누가 무엇을 주장하거나 관측했는지 보존한다. Proposition은 평가 대상이 되는 최소 명제다. Evaluation은 하나의 Projection 아래에서 Claim들이 그 Proposition에 어떤 영향을 주는지 기록한다. Derivation은 결과가 어떻게 산출됐는지 보여주는 증명 객체다. Accepted Fact는 그 절차가 이번 판정에 사용하도록 허용한 전제다.

따라서 같은 Claim도 목적, 기준 시점, 증명 기준, 권한이 다르면 서로 다른 Accepted Fact를 만들거나 아무 사실도 만들지 않을 수 있다. Accepted Fact는 현실 전체에 대한 절대적 진실이 아니다. 선언된 판정 경계 안에서 사용하도록 채택된 전제다.

결과가 그래프여야 하는 이유

판정의 전제는 고립된 문장이 아니다. 누가 누구에게, 언제, 얼마를, 어떤 계약 아래, 어느 채무를 위해 지급했는지, 그때 계약이 유효했는지는 서로 연결된 명제다.

Graph of Accepted Facts는 그 전제와 의미 관계뿐 아니라, 그것을 산출한 derivation과 provenance도 함께 담는다.

  • 개체, 행위, 시점, 수량, 상태
  • 각 Proposition을 지지하거나 반박한 Claim
  • 원본 출처와 책임 주체
  • Evaluation과 파생 규칙
  • 기각되거나 미해결된 대안
  • 시간·논리·대체 관계

그래프의 목적은 설명을 꾸미는 것이 아니다. 기계가 추적할 수 있는 의존성을 만드는 것이다.

감사자는 Verdict에서 출발해 GAF와 규칙을 거쳐 원본 Claim까지 내려갈 수 있어야 한다. 무효가 된 Claim이나 출처에서 출발하면 재검토가 필요할 수 있는 모든 Accepted Fact, Closure, Verdict, Action을 찾을 수 있어야 한다.

Provenance만으로는 부족하다. 완전한 영향 분석에는 파생 의존성, 부정 의존성, 집계 조건, 정책 범위도 필요하다. 결론은 존재하는 Claim이 아니라, 자격을 갖춘 Claim이 하나도 없다고 선언된 상태에 의존할 수도 있다. PROV-O: The PROV Ontology 표준은 개체, 활동, 에이전트, 한정 관계를 중심으로 상호운용 가능한 provenance를 정의한다. 여기에 GAF가 더 부담해야 할 것은 판정을 다시 열기 위해 필요한 판정별 채택 상태와 부정 의존성을 보존하는 일이다.

이것은 논리적 데이터 모델이지 그래프 데이터베이스를 강제하는 명령이 아니다. 관계형 데이터베이스, 내용 주소화 객체 저장소, append-only event log, graph database 모두 구현체가 될 수 있다. 노드, 타입이 있는 관계, 계보, 의존성 질의를 의미 손실 없이 보존한다면 물리 저장 방식은 유효하다.

Closure는 GAF보다 크다

GAF는 Accepted Facts와 그 Derivation, Provenance를 보존한다. Closure는 GAF보다 크다. 어느 질문에 어떤 조건으로 정확히 어느 GAF를 사용했는지 동결한다. Closure는 판정을 위한 재연 계약이다.

Closure에는 최소한 다음이 들어가야 한다.

  • 판정의 질문과 목적
  • 사건·대상·시간 범위
  • 정확한 GAF 스냅샷과 무결성 식별자
  • 완전성 선언과 부재·부정·미상의 처리 방법
  • Projection 정책과 구현 버전
  • Verdict 규칙과 엔진 버전
  • 숫자 정밀도, 정렬, 동률 처리 같은 실행 조건
  • 같은 그래프를 다시 식별하기 위한 정규화 규칙

같은 Closure가 같은 실행 환경에서 다른 Verdict를 낸다면 연산 계층의 결함이다. Closure가 다르다면 불일치를 입력, Projection 정책, Accepted Facts, 규칙, 실행 환경의 차이로 국소화할 수 있다.

결정론은 현실을 완벽하게 안다는 뜻이 아니다. 같이 닫힌 세계는 같은 방식으로 연산돼야 한다는 뜻이다.

하나의 사건을 끝까지 통과시켜 보자

임대인은 7월분 임대료가 미납됐다고 주장한다. 임차인은 5일에 임대료를 송금했다고 주장한다. 확정 은행 원장은 그날 임대인에게 100만 원이 입금됐음을 보여주지만, 송금 메모는 비어 있다. 계약은 매월 5일까지 100만 원을 지급하도록 정한다.

Open Claim Ledger는 어느 기록도 다른 기록으로 덮어쓰지 않고 네 기록을 모두 보존한다.

Claim내용출처 상태
Claim A7월분 임대료가 미납됐다임대인 주장
Claim B5일에 임대료를 송금했다임차인 주장
Claim C5일에 임대인 계좌로 100만 원이 입금됐다확정 은행 원장
Claim D매월 5일까지 임대료 100만 원을 지급한다유효한 계약

Projection은 질문을 “7월분 임대료의 연체가 확정됐는가?”로 좁힌다. 해당 계좌와 기간에 대해 은행 원장을 완전하다고 인정한다. 동시에 메모나 별도 합의가 없으면 특정 채무에 대한 변제로 추정하지 않는 정책을 적용한다.

Claim C와 Claim D는 채택된 Proposition을 지지한다. Claim B의 날짜와 금액은 Claim C로 뒷받침되지만, 7월분 임대료에 충당됐는지는 미상이다. Claim A는 미지급에 대한 독립 근거가 아니라 당사자가 원하는 결론을 주장한 것이므로, 반복된다고 Accepted Fact가 되지 않는다.

GAF는 다음을 기록한다.

The contract required monthly payment by the fifth.       [accepted]
The landlord received the contractual amount that day.    [accepted]
Allocation of that payment to the July debt is unresolved.[unknown]
July rent delinquency has not been established.            [not derived]

Closure는 이 GAF를 Projection 정책, 원장의 완전성 범위, 기준 시점, Verdict 엔진과 묶는다. Verdict는 delinquent가 아니라 undetermined다. 따라서 Authorized Action은 독촉장 발송이 아니라 변제 충당을 확인하라는 요청이다.

나중에 “7월 월세”라고 적힌 원본 송금 확인서가 새 Claim으로 들어온다. 이전 Closure는 그대로 보존된다. Reopen 사건이 새로운 Projection을 시작한다. 메모가 채택되면 새 GAF가 변제 충당을 인정하고, 새 Closure는 paid라는 Verdict를 산출한다.

이 사례에서 Projection은 어느 사람의 말이 더 그럴듯한지 투표하는 일이 아니다. 판정 가능한 사실 상태를 만들기 위해 질문, 완전성 경계, 원자적 Proposition, 결측의 의미, 파생 규칙을 고정하는 일이다.

결정을 계약으로 보존하라

이 예시에는 여전히 병목이 있다. 입금 메모가 없을 때마다 임대인에게 변제 충당을 확인받아야 한다면 불확실성을 제거한 것이 아니다. 인간 승인 대기열로 옮겼을 뿐이다.

첫 확인은 이번 사건을 해결해야 한다. 같은 양상이 반복된다면 한 걸음 더 나아가야 한다. 결정을 계약으로 보존하여 다음 Projection의 입력으로 만들어야 한다.

임대인이 이번 지급을 확인하고 양 당사자가 다음 규칙을 승인했다고 하자.

임차인의 등록 계좌에서 지급기일까지 계약 금액과 같은 돈이 입금되고 다른 미결제 채무가 없다면, 해당 월 임대료에 충당된 것으로 본다. 어느 조건이라도 충족하지 않으면 다시 심사한다.

그러면 서로 다른 네 기록이 생긴다.

Case Decision    ── this payment satisfied the July rent
Policy Candidate ── matching future payments may satisfy monthly rent
Ratified Contract── authorized conditions, exceptions, effective date, version
Policy Exception ── ambiguity outside the contract returns to human review

다음 Closure는 승인된 정책 버전을 참조한다. 조건에 맞는 Claim은 임대인에게 같은 질문을 다시 하지 않고 Projection할 수 있고, 새로운 예외만 인간의 판단을 소비한다. 인간의 결정은 한 번 사용되지만, 권한 있게 고정된 구조는 계속 작동한다.

그러나 한 번의 결정은 아직 정책이 아니다. 시스템이 한 사건의 확인을 몰래 선례로 일반화해서는 안 된다. 권한 있는 사람이 규칙의 적용 범위, 예외, 시행일, 소급 여부를 승인해야 한다. 그전까지 사건 기록은 Policy Candidate일 뿐이다. 새 계약에 소급 적용이 명시되지 않았다면 이후 Closure에만 적용되고 이전 Closure를 다시 쓰지 않는다.

이로써 GAF에 두 번째 보존 순환이 생긴다. Claim은 현실에서 무엇이 들어왔는지 보존한다. GAF와 Closure는 특정 판정이 무엇을 채택했는지 보존한다. 승인된 정책은 반복되는 모호성을 권한 있는 사람이 어떻게 해소했는지 보존한다. 다음 Projection은 같은 병목이 아니라 더 강한 계약에서 시작한다.

오류가 다르면 수리법도 다르다

Projection, Verdict, Action을 분리하면 하나의 “틀린 결과”가 서로 다른 실패로 나뉜다.

  • 관련 Claim을 놓쳤다면 수집 오류다.
  • 출처나 Proposition을 잘못 평가했다면 Projection 오류다.
  • 올바른 Accepted Facts에 잘못된 규칙을 적용했다면 연산 오류다.
  • 올바른 Verdict를 부정확하게 표현했다면 소통 오류다.
  • 올바른 Verdict를 잘못된 대상·한도·권한으로 실행했다면 Action 오류다.

이 분류는 오류를 없애지 않는다. 무엇을 다시 열어야 하는지 알려준다.

수집 오류에는 새 Claim이 필요하다. Projection 오류에는 Evaluation과 Derivation의 재검토가 필요하다. 연산 오류는 Closure를 보존한 채 엔진을 고쳐 비교할 수 있다. Action 오류는 사실을 다시 쓰면 안 된다. 외부 세계에서 취소, 정정, 보상이 필요하다.

이 모든 것을 “모델이 틀렸다”로 부르면 구별이 사라진다. 원인을 잃으면 수리 뒤 무엇이 달라졌는지도 증명할 수 없다.

Accepted Fact는 행동 권한이 아니다

Accepted Fact는 권력을 부여하지 않는다. “임대료가 연체됐다”와 “이 시스템이 독촉장을 보내도 된다”는 서로 다른 Proposition이다.

Verdict 엔진은 Closure를 받아 판정과 연산 추적을 출력한다. Authorized Action은 다음을 별도로 검사해야 한다.

  • 누가 그 효과를 승인했는가?
  • 어떤 주체와 객체를 대상으로 하는가?
  • 적용되는 금액과 횟수 한도는 무엇인가?
  • 재시도는 멱등적인가?
  • 어떤 영수증이 실행을 증명하는가?
  • 잘못된 효과를 어떻게 취소하거나 보상할 수 있는가?

사실 생산, 판정, 실행은 서로 다른 종류의 권한을 행사하므로 분리해야 한다.

닫힌 세계는 다시 열 수 있어야 한다

Closure는 영원한 진실인 척하지 않으면서 불변이어야 한다. 근거가 늦게 도착할 수 있다. 출처가 위조로 밝혀질 수 있다. 정책의 결함이 발견될 수 있다. 영향을 받은 당사자가 이의를 제기할 수 있다.

이전 결과를 덮어쓰면 당시 왜 그런 행동을 했는지 설명할 수 없게 된다. 따라서 Reopen은 이전 Closure를 수정하는 일이 아니라 새로운 사건이다.

새 근거, 정책 변경, 이의 제기, 결함 보고를 기록한다. 의존성 그래프는 영향을 받을 수 있는 Closure를 식별한다. 권한 있는 절차가 재심사를 허용하면 새로운 Projection이 새 GAF, Closure, Verdict를 만든다. 새 결과는 과거를 덮어쓰지 않고 무엇을 대체하는지 밝힌다.

Action이 이미 세계를 바꿨다면 재연산만으로 되돌릴 수 없다. 취소, 정정 통지, 환불, 보상도 각각 자체 승인과 영수증을 가진 새로운 Action이다.

다시 열 수 있다고 Closure가 약해지는 것은 아니다. 무엇을 고정했는지 보존하고 선언된 절차로만 교체를 허용할 때 Closure는 정당성을 얻는다.

LLM은 경계를 대신할 수 없다

대부분의 종단간 LLM 응용은 질문 해석, 검색, 출처 선택, 사실 인정, 규칙 적용, 표현을 한 번의 생성에 섞는다. 채택하고 기각한 Claim을 외부 상태로 만들지 않으면 같은 답이 같은 근거를 뜻하지 않는다. 답이 달라져도 입력 경계가 달라졌는지 연산이 달라졌는지 알 수 없다.

긴 설명이나 생성된 추론 기록도 이 문제를 해결하지 못한다. 사후 설명은 실제로 사용한 입력·규칙·권한의 실행 기록이 아니다.

LLM은 여전히 경계 주변에서 유용하다. 비정형 출처에서 Claim 후보를 추출하고, 원자적 Proposition을 제안하고, 충돌과 미상을 설명하고, Projection 정책의 초안을 만들고, 확정된 Verdict를 사람의 언어로 옮길 수 있다.

그러나 제안은 채택이 아니다. LLM이 생성한 Claim, 매핑, Evaluation, 규칙은 provenance와 버전을 가진 입력이 되어 권한 있는 절차를 통과해야 한다. 중대한 결과를 낳는 행동의 최종 권한을 자연어 생성 안에 숨겨서는 안 된다.

기여는 연결된 사슬이다

각 부품이 모두 새로운 것은 아니다. 닫힌 세계 추론, provenance, truth-maintenance system, event sourcing, rule engine, 법적 사실 인정, 이의 절차에는 긴 역사가 있다. 닫힌 세계 데이터베이스에 관하여는 열린 세계와 닫힌 세계의 구분을 세웠고, PROV-O: The PROV Ontology는 활동과 책임 주체를 거쳐 개체를 추적하는 그래프 모델을 표준화했다.

기여는 연결된 사슬, 곧 하나의 책임 프로토콜이다.

Claims → Projection → GAF → Closure → Verdict → Action → Reopen

모든 화살표는 단순한 데이터 변환이 아니라 권한과 오류의 경계다. Claim을 보존하는 주체, 전제를 채택하는 권한, Verdict를 연산하는 엔진, 세계를 바꾸는 게이트웨이는 서로 다른 계약 아래 작동한다. 기록은 연결되지만 어느 단계도 다른 단계의 권한을 몰래 물려받지 않는다.

GAF는 또 하나의 데이터베이스를 발명하는 일이 아니다. 열린 Claim에서 행동 가능한 사실로 가는 전체 경로를 감사하고, 재현하고, 이의를 제기할 수 있게 만드는 제안이다.

목표는 완벽한 진실이 아니라 통제 가능한 폐쇄다

열린 세계 전체를 아는 시스템은 만들 수 없다. 어떤 정보를 왜 전제로 채택했는지 말하는 시스템은 만들 수 있다.

Open Claims는 불일치와 불확실성을 보존한다. Projection은 목적, 범위, 증명 기준, 부재의 의미를 고정한다. GAF는 채택된 전제를 관계와 계보에 연결한다. Closure는 재연 조건을 동결한다. Verdict는 닫힌 입력 위에서 연산한다. Action은 별도 권한 아래 현실을 바꾼다. Reopen은 역사를 지우지 않고 경계를 다시 심사한다.

이 순환이 있으면 오류는 하나의 불투명한 환각으로 남지 않는다. 시스템이 무엇을 놓쳤는지, 무엇을 잘못 채택했는지, 채택된 전제로 무엇을 잘못 계산했는지, 올바른 판정 뒤 무엇을 잘못 실행했는지 구별할 수 있다.

Claim을 GAF로 투영하는 일은 기계를 무오류로 만드는 방법이 아니다. 기계가 무엇을 전제로 판단했는지 고정해 그 판단을 재현하고, 다투고, 정정할 수 있게 만드는 방법이다.

“수학은 닫힌 계에서 연산하기에 진실이다”라는 문장은 더 좁고 방어 가능한 사실을 가리키는 격언이다. 공리, 정의, 추론 규칙이 고정되면 그 형식적 경계 안의 도출을 검사하고 재연할 수 있다 (수학철학의 형식주의). 이것이 모든 수학적 진리를 계산할 수 있다거나, 모든 명제를 결정할 수 있다거나, 모든 공리계가 완전하다는 뜻은 아니다. Closure는 채택된 도출의 재현성을 보장하지 전지성을 보장하지 않는다.

현실 세계의 판정도 연산 전에 같은 규율을 필요로 한다. GAF는 진실 그 자체가 아니다. 열린 현실에서 어떤 전제를 채택했는지 고정하여, 그 안에서 판정을 재현하고 다툴 수 있게 만드는 닫힌 세계다.

관련 글

더 읽을거리 (외부)

출처