
【후편】 RPR 내부 들여다보기 — Human Gate, 결과 불명, 대조, 복구, 재개
요약
AI 에이전트의 외부 조작 시 발생할 수 있는 책임 문제를 해결하기 위한 Responsibility Pathway Runtime(RPR)의 내부 동작 원리를 설명합니다. Human Gate, 결과 불명 상태 처리, 상태 복구 및 재개 경로를 통해 AI 실행의 안정성과 신뢰성을 확보하는 방법을 다룹니다.
핵심 포인트
- RPR은 AI의 외부 조작 전후로 상태, 권한, 증거를 연결하여 책임 소재를 명확히 함
- Human Gate는 단순 확인 버튼이 아니라 외부 조작을 시작할 수 없는 상태와 권한을 제어함
- API 응답(callback)만으로 성공을 판단하지 않고 외부 상태의 readback을 통해 완료를 검증함
- 통신 장애나 일부 실행 성공 시 복구 경로를 분리하여 안정적인 재개 경로를 제공함
그래서, 이 Runtime. 내부에서는 무엇을 하고 있는가
전편에서는 Responsibility Pathway Runtime (RPR)을 만들고, 처음으로 PyPI에 공개한 이야기를 썼습니다.
이번에는 그 내용입니다.
"AI 거버넌스를 Runtime으로 만들었다"라고 해도, 무엇이 움직이고 있는지 알기 어렵지요.
그래서 Human Gate, 결과 불명, 대조, 복구, 재개라는 흐름에 따라 RPR이 무엇을 하고 있는지 살펴보겠습니다.
먼저 테스트만 해보려면, 이것으로 설치합니다.
python -m pip install responsibility-pathway-runtime
rpr --help
특정 버전을 지정하려면, 이것입니다.
python -m pip install responsibility-pathway-runtime==0.1.0a2
첫 PyPI입니다. 제대로 설치됩니다 (웃음)
어떤 때에 필요해지는가
AI에게 문장을 쓰게 하는 것뿐이라면, 실패해도 다시 쓸 수 있습니다.
하지만 파일을 수정하거나, API로 POST를 하거나, 메시지를 보내거나, 리포지토리나 업무 시스템을 업데이트하게 되면 이야기가 달라집니다.
인간의 확인 전에 실행해서는 안 된다.
통신이 끊겼다고 해서 바로 재전송해서는 안 된다.
함수가 반환되었다는 것만으로 완료 처리해서는 안 된다.
일부만 진행된 처리는 통상적인 실행과는 별도로 복구해야 한다.
RPR은 이러한 외부 조작의 전후로 책임이 끊기지 않도록 상태, 권한, 증거, 재개 경로를 연결합니다.
| 하고 싶은 것 | RPR에서의 취급 |
|---|---|
| AI가 멋대로 툴을 실행하지 않게 하고 싶다 | Human Gate로 외부 조작을 시작하지 못하게 함 |
| API 타임아웃 후에 재전송해도 될지 판단하고 싶다 | write_status_unknown으로 멈추고 확인 단계로 진행 |
| 이중 전송이나 이중 등록을 피하고 싶다 | 동일한 조작과 실행 이력을 연결 |
| callback 이외의 완료 증거가 필요하다 | 외부 상태를 다시 읽어서 확인 |
| 일부만 성공한 처리를 복구하고 싶다 | 통상 실행과 복구 경로를 분리 |
| ... |
RPR의 담당 범위
RPR은 AI의 답변 내용이 옳은지, 업무 판단이 타당한지, 법령에 적합한지를 판정하는 제품이 아닙니다.
그 부분은 RPE나 도입 측의 규칙, 인간이나 조직의 판단 영역입니다.
RPR이 다루는 것은,
그 판단을 어떤 상태, 권한, 증거, 재개 경로로 실행할 것인가
입니다.
AI / planner / agent framework
↓
실행 후보 조작
...
Human Gate는 "확인 버튼"이 아니다
프롬프트에 "중요한 변경은 인간에게 확인해 주세요"라고 쓰는 것만으로는 실행 경로의 통제가 되지 않습니다.
확인하지 않아도 툴을 호출할 수 있다면, AI는 외부 조작을 시작할 수 있습니다.
RPR에서는 Human Gate가 필요한 경우, 외부 조작 자체를 시작하지 않습니다.
실행 후보
↓
요건 평가
...
Human Gate는 화면에 버튼을 두는 이야기가 아닙니다.
"외부 조작을 시작할 수 없는 상태"와 "그 상태를 해제할 수 있는 권한"을 갖는 것입니다.
승인 후에 전제가 바뀌면, 동일한 승인을 그대로 사용하지 않고 재평가합니다.
callback이 반환되었다. 그러므로 성공……이 아니다
함수가 정상 종료된 것과 외부의 상태가 기대대로 변한 것은 별개입니다.
API가 200을 반환해도, 대상 데이터가 저장되지 않았을 수도 있습니다.
파일을 다 썼어도, 기대한 내용을 다시 읽어올 수 없을지도 모릅니다.
A callback is not proof of an external effect.
RPR은 완료의 근거로서 외부 상태의 readback을 다룹니다.
| 외부 조작 | 확인 방법의 예 |
|---|---|
| 파일 업데이트 | 다시 읽어 들여서, 기대값이나 SHA-256을 비교함 |
| ... | completed로 진행하지 않고, 미결 상태로 유지 |
"처리는 반환되었다. 좋아!" 하고 끝내지 않는 것입니다 (웃음)
성공했는지 모를 때, 바로 재전송하지 않는다
외부 시스템으로 쓰기 요청을 보낸 직후에 통신이 끊겼다.
클라이언트 측에서는 실패로 보입니다.
하지만 외부 측에서는 이미 처리가 완료되었을지도 모릅니다.
여기서 자동 재시도를 하면 이중 등록, 이중 전송, 이중 결제, 이중 업데이트로 이어집니다.
RPR은 이 상태를 결과 불명 (write_status_unknown) 으로 저장합니다.
running
↓
write_status_unknown
...
모른다면, 모르는 상태로 멈춘다.
사소해 보이지만, 이 부분이 상당히 중요합니다.
복구와 재개는 '재실행 버튼'이 아니다
이상(Anomaly)이 발생한 후, 원래의 조작을 다시 실행한다고 해서 반드시 해결되는 것은 아닙니다.
일부만 성공했다면, 동일한 조작을 반복하는 것은 위험합니다.
전제 조건이나 권한이 바뀌었을 수도 있습니다.
RPR에서는 통상적인 실행(Normal Execution)과 복구(Repair)를 분리합니다.
| 상태 | 의미 |
|---|---|
stopped | 외부 조작 또는 지속을 중단함 |
partially_completed | 일부 외부 조작만 성립함 |
write_status_unknown | 외부 결과를 확정할 수 없어 대조가 필요함 |
repair_required | 복구 경로와 담당자가 필요함 |
ready_to_resume | 재개 조건이 갖춰져 재평가할 수 있음 |
human_gate | 인간의 판단이 필요함 |
프로세스를 재시작할 수 있는 것과, 안전하게 재개할 수 있는 것은 별개의 문제입니다.
권한, 전제 조건, 증거, 남은 영향을 재평가하고, 책임 경로(Responsibility Pathway)를 다시 연결할 수 있을 때 재개합니다.
되돌릴 수 없는 영향은 누군가가 책임진다
되돌릴 수 없는 조작이나 부분 완료 상태에서는, 단순히 '되돌리기(Rollback)'만으로 끝나지 않습니다.
영향이 남는다면, 누가 이를 감시하고, 설명하며, 다음 판단을 맡을지를 남겨두어야 합니다.
RPR은 복구 담당자, 인간으로의 귀환점(Return Point), 잔여 담당자가 불명확한 상태로 자율적으로 지속하지 않습니다.
이는 법적 책임을 자동으로 결정하는 메커니즘이 아닙니다.
운용상 판단과 감시를 돌려줄 대상을 잃지 않기 위한 런타임(Runtime) 구조입니다.
Lean 4에서는 무엇을 검사하는가
RPR에는 Python Runtime, JSON 상태 머신(State Machine), Lean 4 형식 모델(Formal Model)이 포함되어 있습니다.
Lean 4로 검사하는 것은 공개된 상태 전이(State Transition)와, 그로부터 선택한 불변 조건(Invariant)입니다.
| 검사 예시 | 방지하는 것 |
|---|---|
Human Gate에서 직접 completed로 진행하지 않음 | 승인을 완료 증거 대신 사용하지 않음 |
write_status_unknown에서 직접 running으로 돌아가지 않음 | 결과 불명인 조작을 암묵적으로 재실행하지 않음 |
repair_required에서 직접 running으로 진행하지 않음 | 복구와 통상 실행을 혼동하지 않음 |
ready_to_resume에서 직접 completed로 진행하지 않음 | 재개 가능 상태와 완료 상태를 구분함 |
Lean 4를 사용한다고 해서 현실 세계의 안전성까지 모두 증명되었다는 뜻은 아닙니다.
어디까지 형식화(Formalization)할 것인지, 어디서부터는 도입 환경이나 인간의 판단 영역인지, 그 경계를 공개하고 있습니다.
브라우저 데모에서는 무엇이 작동하는가
공개 데모는 단순히 상태 전이만을 보여주는 모크(Mock)가 아닙니다.
GitHub Actions가 생성한 RPR의 wheel 파일을 브라우저 내의 Python 환경(Pyodide)으로 로드합니다.
브라우저 내부에서는 실제 ResponsibilityPathwayRuntime이 작동하며, SQLite 저장, 실행 이력, 결과 불명 처리, 재시작 후 읽기, 외부 상태와의 대조, 증거 체인(Evidence Chain)이 실행됩니다.
Human Gate
↓
외부 서비스로 1회만 실행
...
모의(Simulate)하고 있는 것은 외부 서비스뿐이며, RPR 본체는 실제 구현체입니다.
어디까지 검증되었는가
| 포함 항목 | 현재 검증 범위 |
|---|---|
| Python Runtime, CLI, SQLite | 단체 테스트 및 클린 환경 도입을 통해 확인 |
| ... |
RPR은 MIT License 기반의 Public Alpha 버전입니다.
특정 용도에 대한 적합성, 본방 운용의 안전성, 법령 준수, 외부 서비스의 정확성을 보장하지 않습니다.
도입 측에서는 대상 조작, 권한 경계, 증거, 외부 상태 확인 방법, 복구, 재개, 남은 영향을 자신의 환경에 맞춰 정의해야 합니다.
우선 직접 사용해 보세요
로컬에 설치하려면 PyPI를 이용하세요.
python -m pip install responsibility-pathway-runtime
rpr --help
설치 없이 분위기를 보고 싶다면 브라우저 데모를 이용하세요.
처음 만든 Runtime을 처음으로 PyPI에 출시했습니다.
아직 Public Alpha 단계이지만, 문서로만 생각하던 책임 경로가 실제로 멈추고, 저장하고, 확인하고, 복구하고, 재개하는 단계까지 도달했습니다.
직접 만져보시고, "이 부분은 이해하기 어렵다", "이 상황에서도 사용할 수 있지 않을까", "이 설계는 위험하지 않을까"와 같은 피드백을 주신다면 기쁘겠습니다.
만든 사람은 무척 기뻐할 것입니다 (웃음)
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기