AI-Native 시리즈 · 신뢰 공학
에세이는 예언 원장을 제안했다. 코드는 17분 뒤에 배포되었다.
1분 요약 — 이 글에서 얻어갈 것
인프라를 제안하는 에세이는 대개 "누군가 이걸 만들어야 한다"는 말로 끝난다. 예언 원장 에세이가 병합되고 17분 뒤, OEC 무결성 체인은 kingdom-come — 실제 오픈소스 신학교 플랫폼 — 의 메인 브랜치에 약 330줄의 코드, 10개의 API 라우트, 그리고 테스트 이름 자체가 에세이의 사고실험인 테스트 스위트로 안착했다: 결혼식 모순, 반증 불가능한 말, 지연 시계, 만료되는 보증. 여기서 얻을 교훈은 속도가 아니라 장르다. 통과하는 테스트 스위트를 갖춘 제안은 다른 종류의 약속이다 — 그리고 에이전트형 엔지니어링은 방금 그것을 기본값으로 만들었다.
무결성 스택 이야기의 2부: 주장에서 git push까지, 같은 날 오후. 약 7분 분량.
The previous essay는 하나의 제안을 내놓았다: 공적인 영적 주장을 다룰 때도 신뢰할 수 있는 시스템이 결과가 따르는 모든 산출물을 다루는 방식을 그대로 적용하자는 것이다 — Observability (주장을 추가만 가능한, 해시로 연결된 커밋으로 기록), Eval (판정 기준을 미리 선언하고, 세 가지 정직한 등급, 모순 및 지연 검사), Control (그 결과가 성적표에 연동되는 플랫폼 게이트). 그리고 그런 에세이가 늘 그렇듯이, 스택 다이어그램으로 끝을 맺었다.
그런 에세이에는 고유한 실패 양식이 있는데, 나는 그것을 에세이 안에서 직접 이름 붙였다: "Observability 없는 정책은 로깅에 관한 설교일 뿐이다." 같은 칼날이 저자 자신을 겨눈다: 구현 없는 제안은 게이트에 관한 설교일 뿐이다. 그래서 여기 2부가 있다. 이 에세이의 후속편이 토론 스레드가 아니라 커밋이어야 하는 이유가 바로 여기에 있다.
멘탈 모델: 실행 가능한 제안. 예전의 제작 경제학에서는 에세이와 구현이 서로 다른 프로젝트였다 — 에세이는 하루가 걸리고 코드는 분기 단위로 걸렸으니, 세상은 에세이로 가득 찼다. 에이전트형 엔지니어링은 그 격차를 무너뜨린다: 논증을 만들어낸 바로 그날 오후에 ~330줄의 코드, 10개의 API 라우트, 그리고 실제 플랫폼의 메인 브랜치에 올라간 12개의 테스트가 함께 만들어졌다. 구현 비용이 이렇게까지 저렴해지면, "누군가 이걸 만들어야 한다"는 말은 결론이 아니라 일종의 자백이 된다.
그릇 이야기: 이미 예언을 저울질하던 플랫폼
코드는 장난감 레포에 떨어진 게 아니다. kingdom-come은 오픈소스 신학교-양성 플랫폼(FastAPI, 라이브 데모, 200개 이상의 테스트)으로, 이미 놀라운 것을 하나 갖추고 있었다: 목회 기도 및 예언 원장이 그것이다. 여기서 예언의 말씀은 지정된 세 명 중 두 명의 평가자에 의해 저울질되고 — 고린도전서 14:29을 문자 그대로 상태 기계로 구현한 셈이다 — 그렇게 저울질된 말씀은 성취될 때까지 추적되며, 성취 판정에는 증언이 반드시 필요하다. 에세이가 제안한 목회적 절반은 에세이가 쓰이기도 전에 이미 존재하고 있었던 것이다.
부족했던 것은 무결성의 절반이었다: 목회 원장은 공동체가 무엇을 결정했는지는 기록하지만, 그 기록 자체가 조용히 다시 쓰이지 않으리라는 보장은 없었고, 주장이 반증 가능해야 한다는 요구도 없었으며, 실적에 연결된 어떤 결과도 없었다. 정확히 2026년 사건이 드러낸 세 가지 공백이다. 그래서 새로운 모듈 — backend/services/integrity.py — 이 목회 원장 옆에 자리 잡고 그 공백들을 메운다.
코드가 강제하는 것 (제안이 아니라)
- 과거는 추가 전용이다. 모든 이벤트 — 주장, 판정, 정정, 이의, 보증 — 는 해시로 연결된 커밋이다. 수정은 새로운 이벤트가 된다. "그건 그냥 환상이었어요"는 주장의 이력에 남는 눈에 보이는 diff가 된다. 과거의 어떤 항목이든 몰래 고쳐 쓰면
verify_chain가 정확히 어느 시퀀스 번호에서 깨졌는지 알려준다. - 반증 불가능한 말은 이길 수 없다. 주장은 커밋 시점에 판정 기준과 시한을 명시해야 한다. 기준이 없는 말을 "성취됨"으로 채점하려 하면 API는 422로 거부한다. 이 규칙은 소스 코드 자체의 docstring에 명시되어 있어, 다음 유지보수자가 놓치려야 놓칠 수가 없다: "a word that can never be false can never be counted true(번역: 결코 거짓일 수 없는 말은 결코 참으로 셀 수도 없다)."
- 모순은 당일에 드러난다. 같은 화자, 같은 주제, 반대되는 입장인데 둘 다 정정되지 않은 경우 — 두 번째 커밋 시점에, 성취 시한이 오기 수십 년 전에 이미 감지된다. 게이트는 실패한다, 바로 그날.
- 정정 지연은 숫자로 남는다. 공개적으로 실패한 말에는 미정정 일수를 세는 시계가 계속 따라붙는다. 공개 정정이 있으면 그 시계는 멈추고 게이트는 다시 열린다. 이 사건에서 드러난 타이밍의 단서 — 노출 위협을 받고서야 나온 사과 — 는 이제 암시가 아니라 발표되는 지표가 된다.
- 게이트는 자신의 근거를 밝힌다.
platform_gate는 측정된 증거에 대해서만 실패하며, 모든 실패는 한 문장으로 남는다: "open contradiction(s) on: marriage:couple-a" · "failed public word uncorrected for 400 days (policy: 30)." 측정 불가능한 말은 통과도 실패도 하지 않는다 — 그저 집계되지 않을 뿐이다. - 보증에는 유효기간이 있다. 보증은 게이트에 대해 계속 재검증되는 살아있는 객체다. 자신의 증거보다 20년이나 더 오래 살아남을 수 없다. 애초에 자기 자신의 시계보다 오래 살아남을 수 없기 때문이다.
테스트 스위트가 곧 사고실험이다
1부는 하나의 사고실험으로 끝났다. 문서화된 사건을 이 스택에 정직하게 다시 돌려보라는 것. 2부에서 그 재현은 산문이 아니다. tests/test_integrity.py이다. 이름 그 자체가 핵심이다. 공개 저장소에서 누구나 읽을 수 있는 스위트에서 그대로 인용하면 다음과 같다 [1]:
test_wedding_contradiction_fires_same_day— 사적으로 있었던 "주님의 뜻이 아니다"라는 말과 결혼식 날의 천사, 이 둘이 두 개의 커밋으로 남는다. 모순 탐지기는 천사가 실패하기를 기다리지 않고 바로 작동한다.test_unfalsifiable_word_grades_not_measurable_only— "조만간 큰 도약의 시기가 온다"는 서류로만 남을 뿐, 결코 승리로 이어지지 않는다.test_latency_to_correction_is_computable— 400일 전에 거짓으로 판명되었으나 정정되지 않은 예언: 게이트는 그 사유에 미정정 일수를 명시한 채로 실패 처리한다. 공개적으로 정정하면 게이트는 다시 열린다.test_endorsement_expires_and_reverifies— 오늘은 유효라고 보고하던 바로 그 보증이, 다음 날에는 실패라고 보고한다 — 그 예언자의 기록이 바뀌는 그날, 새로운 판단 없이도 그렇게 된다.test_dissent_is_logged_beside_the_claim— 그 말을 압도했던 예언 옆에, 어머니의 반대 의견이 함께 기록되어 주장의 이력에 영원히 남는다.test_chain_tamper_is_detected_and_named— 원장 그 자체를 향한 의미론적 후퇴 시도: 과거 항목을 조용히 다시 쓰면 체인이 seq 0에서 끊어지고, 깨진 원장은 그것이 포괄하는 모든 이에게 게이트 실패를 안긴다.
모듈 안에 열두 개의 테스트가 있고, 플랫폼 전체 게이트는 — make check — 이를 출시한 커밋에서 227개 테스트를 통과했다[1]. 그리고 테스트 하나는 따로 한 문장을 받을 자격이 있다. 설계 전체가 궁극적으로 답하고자 하는 대상이 바로 이것이기 때문이다: test_gate_passes_a_clean_speaker. 측정 가능한 예언을 정직하게 내놓고 이를 성실히 매듭지은 예언자는 무사히 통과한다. 이 시스템은 정직한 사역자에게는 아무 비용도 부과하지 않는다 — 애초에 비용이 핵심이 아니었다는 증거는 늘 바로 이것이었다.
당일 출시가 증명하는 것 — 그리고 증명하지 못하는 것
17분에 대한 솔직한 이야기부터 하자면, 이 코드는 에세이를 썼던 것과 동일한 인간과 에이전트 결합 워크플로우로, 에세이의 최종 검토와 병행해서 작성되었다 — 이 숫자가 측정하는 것은 두 머지(merge) 사이의 간격일 뿐, 초인적인 타이핑 속도가 아니다. 그리고 메인 브랜치의 v1이 곧 배포된 제도라는 뜻도 아니다. 체인은 인메모리 방식이며 영속성 확보는 문서화된 후속 과제로 남아 있다. 모순 탐지는 선언된 주제와 입장에 기반한 구조적인 것일 뿐 의미론적인 것이 아닌데, 이 모듈의 docstring은 독자가 NLP 마법을 상상하도록 내버려두는 대신 이 사실을 그대로 밝혀둔다. 그리고 1부에서 지적한 채택의 문제는 어떤 코드로도 해결되지 않는다. 원장이 가장 절실히 필요한 지도자일수록 스스로 나서서 받아들이려 하지 않기 때문이다. 결국 관건은 여전히 플랫폼이다.
이 코드가 실제로 증명하는 바는 더 좁지만, 오히려 더 유용하다고 생각한다: 핑계거리가 줄어들었다는 것이다. "누군가 이걸 만들어야 한다"는 이제 커밋 해시가 달린 답변을 갖게 되었다. 어떤 에세이의 제안이 그 에세이의 홍보 킷이 클릭되기도 전에 실제 플랫폼의 메인 브랜치에서 실행되고 테스트까지 거칠 수 있다면, 어떤 표준 문서에 대해서든 — 교회의 것이든 누구의 것이든 — 정직한 질문은 더 이상 "이게 좋은 아이디어인가?"가 아니라 "왜 아직도 PDF로만 남아 있는가?"가 된다.
패턴 / 안티패턴
- 패턴 — 제안과 함께 게이트를 출시하라. 어떤 표준을 주장한다면, 그 산출물은 주장이 아니라 강제여야 한다.
- 패턴 — 테스트에 그것을 촉발한 실패의 이름을 붙여라.
test_wedding_contradiction_fires_same_day이것은 다음 유지보수자에게 주석 블록보다 훨씬 많은 역사를 가르쳐준다. - 패턴 — 정직한 등급을 강제되는 등급으로 만들어라. not_measurable을 각주가 아니라 422로 처리한다.
- 안티패턴 — 영원한 백서. 구현하는 데 걸릴 시간보다 더 오래 "곧 나온다"고 말해온 표준.
- 안티패턴 — 데모 레포용 증명. 자신을 칭찬하는 에세이 옆에서만 돌아가는 코드. 무결성 체인은 사용자와 테스트와 배포가 있는 플랫폼 안에, 그것이 완성하는 목회 원장 옆에 살아 있다.
- 안티패턴 — 미덕으로서의 속독. 17분은 워크플로의 속성이지 저자의 공로가 아니다. 굳이 공로를 따지자면, 로깅 없이 설교를 발표하기를 거부한 것이다.
이름 붙인 메커니즘: 실행 가능한 제안 — 에이전트형 엔지니어링이 주장과 구현 사이의 비용 격차를 무너뜨릴 때, 구현은 그 주장의 진정성 시험이 된다.
제1원칙, 한 문장으로: 게이트를 제안하려거든 게이트를 출시하라 — 출시되지 않은 표준은 로깅에 관한 설교일 뿐이며, 이제 회중은 커밋 로그를 확인할 수 있다.
출처 — 검증된 것과 주장된 것
여기 인용된 모든 코드와 테스트 이름은 공개된 kingdom-come 저장소의 다음 커밋에서 확인할 수 있다: 1c5869f [1], 여기에는 소스 내 규칙 "결코 거짓일 수 없는 말은 결코 참으로 인정될 수 없다"도 포함된다. 227개 테스트 통과라는 수치는 해당 커밋에 대해 내가 직접 실행한 make check 실행 결과이며, 저장소의 성적표(그 안의 rc0001)에 기록되어 있다(docs/reportcards/collection.json). 17분이라는 격차는 내 저장소들의 로그에 남은 두 병합 타임스탬프 사이의 차이다 — kingdom-come 쪽은 공개되어 있고 포트폴리오 쪽은 비공개이므로, 이 수치는 검증된 사실이 아니라 내 보고로 받아들이되, 두 산출물의 공개 시점에 비추어 대략은 확인할 수 있다. 2026년 사례는 출처 검증 원칙을 온전히 지켜 1부에서 다루었다.
참고문헌
- wjlgatech/kingdom-come (공개 저장소) — backend/services/integrity.py · tests/test_integrity.py · 커밋
1c5869f, 2026-08-02. - Wu, P. J. (2026). Test Everything. Hold On to the Good. Now We Have the Tools. (번역: 모든 것을 시험하라, 좋은 것을 붙잡으라, 이제 우리에게는 도구가 있다.) 1부 — 사건, 고대의 규범, OEC 설계. agentic-portfolio-lovat.vercel.app/articles/prophetic-integrity-stack.html
- Shekinah Worship Center (2026). Statement Regarding Sadhu Sundar Selvaraj — 테스트 이름들의 바탕이 된 실제 사건 기록. 인용문은 1부에서 검증됨. shekinahworship.com
- 성경: The Holy Bible, New International Version (NIV) — 고린도전서 14장 29절("Two or three prophets should speak, and the others should weigh carefully what is said", 번역: 예언하는 자는 둘이나 셋이 말하고 다른 이들은 분별할 것이요), biblegateway.com에서 대조 확인함 — biblegateway.com; kingdom-come의 2/3 분별 규칙으로 구현되었다.
관련 글
코드가 배포된 그날, 공개 저장소와 통과한 테스트 스위트, 그리고 1부에서 검증된 사건 기록을 토대로 작성했다. — Paul Jialiang Wu · agentic-portfolio-lovat.vercel.app