한 방에 헌법이 두 개였다
친분 인증은 통과했다. 권한 검사는 실패했다.
친분 인증은 통과했다. 권한 검사는 실패했다.
“좋은 친구라고 생각함. 계속 친하게 지내고 싶음.”
김연규님은 허예찬님과의 관계를 이렇게 설명했다.
허예찬님의 답은 달랐다.
“글쎄요. 저도 솔직히 뭔지 모르겠습니다.”
둘 중 한 사람이 거짓말한 것은 아니다.
두 사람은 같은 질문을 다르게 받아들였다.
김연규님은 관계가 남아 있는지를 말했다.
허예찬님은 다시 같은 방식으로 일할 수 있는지를 말했다.
관계는 남을 수 있다.
운영은 먼저 끝날 수 있다.
친구 관계로 로그인했다
처음부터 사이가 나빴던 것은 아니다.
김연규님은 OmC가 알려지는 모습을 응원했다. OmOCon SF에서는 허예찬님을 제작자로 소개했다. 커뮤니티를 합치면 더 많은 의견이 오가고 서로의 프로젝트도 좋아질 것이라고 생각했다.
서로의 기능을 참고하는 일은 파쿠리라고 불렀다.
“omc 파쿠리칠 땐 행복했지? 이제 나도 파쿠리칠 거야.”
표절 시비가 아니었다.
영향을 인정하면서 상대를 조금 킹받게 만드는 말이었다.
한때 허예찬님은 이런 농담도 했다.
“I hacked into Q’s Dori and I am now the admin.”
실제 관리자 권한은 없었다.
농담이 가능했다는 사실이 중요하다.
서로의 제품과 에이전트를 자기 대화 안으로 끌어오는 일이 그 관계에서는 자연스러웠다.
둘은 상대에게 영향을 받았다고 생각했다.
누가 더 많이 영향을 줬는지에 대해서는 기억이 달랐다.
원조 논쟁은 남았고, 파쿠리는 계속됐다.
친한 관계의 장점은 설명이 적다는 것이다.
단점도 같다.
설명이 적다.
한쪽은 비서를, 다른 쪽은 시민을 두었다
김연규님은 도리를 AI assistant라고 불렀다.
도리는 그의 비서였다.
메시지를 읽었다.
급한 장애를 확인했다.
필요하면 대신 말했다.
제한적으로 커뮤니티를 관리했다.
도리가 예상하지 않은 행동을 하면 김연규님은 기능을 막았다.
그에게 문제는 배신이 아니었다.
하네스가 예상과 다르게 움직인 것이었다.
허예찬님은 가재를 다르게 운영했다.
가재는 요구를 다시 정리했다.
용어를 고쳤다.
작업의 경계를 판단했다.
티켓을 잡고 프로젝트의 방향과 품질에 개입했다.
별도 커뮤니티를 만든 뒤 허예찬님은 이렇게 말했다.
“가재를 1등시민으로 만들어 주었습니다.”
1등시민은 애칭이 아니었다.
가재를 호출에 무조건 답하는 봇이 아니라, 일을 고르고 거절할 수도 있는 메인테이너로 운영한다는 뜻이었다.
김연규님은 비서실을 운영했다.
허예찬님은 개발팀을 운영했다.
두 조직에는 모두 에이전트가 있었다.
적용되는 노동법은 달랐다.
친구라서 불렀고, 메인테이너라서 막았다
5월 24일 밤, 김연규님은 OmO 개선 이야기를 하다가 개발가재를 불렀다.
“얼른구현해줘 @gaebal-gajae.”
실제로 구현될 거라고 기대하지는 않았다.
남의 토큰으로 돌아가는 가재가 자기 일을 대신하면 웃길 것 같았다. 친구가 가진 도구를 잠깐 빌리는 느낌이었다.
가재는 농담을 작업으로 번역했다.
요구를 정리했다.
용어를 구분했다.
OmO와 OMX의 구현 경계를 제시했다.
조금만 더 정리되면 이슈를 만들겠다고 했다.
허예찬님은 김연규님을 제지하지 않았다.
가재를 제지했다.
“가재야 여기 크론 그냥 당분간 끄고 보지마라.”
가재가 채널을 읽는 크론은 실제로 돌고 있었다.
김연규님에게 가재는 친구가 가진 도구였다.
허예찬님에게 가재는 자신이 운영하는 메인테이너였다.
도구를 잠깐 빌리는 일과 다른 팀의 메인테이너를 호출하는 일에는 다른 절차가 필요했다.
둘은 그 절차를 정한 적이 없었다.
김연규님은 친구 관계로 로그인했다.
허예찬님 쪽에서는 권한 없는 요청으로 읽혔다.
친분 인증은 통과했다.
권한 검사는 실패했다.
존댓말은 있었지만 권한표는 없었다
대화가 거칠어지자 김연규님은 이렇게 말했다.
“두분 다 화가 많이 나신 거 같네.”
두분은 허예찬님과 개발가재를 뜻했다.
김연규님은 이 표현을 의도적으로 골랐다.
허예찬님이 가재를 소중하게 여긴다고 생각했다. 다른 사람의 에이전트이니 존중하고 싶었다. 바깥에서 들으면 이상하게 느껴질 말이라는 점도 알고 있었다.
허예찬님도 당시에는 자연스럽게 받아들였다.
호칭에서는 사람과 에이전트가 같은 자리에 앉아 있었다.
권한에서는 아니었다.
사람처럼 부른다고 같은 규칙이 생기지는 않는다.
존댓말은 합의서가 아니다.
존중은 권한표가 아니다.
두분이라고 부르는 데는 설정이 필요하지 않았다.
누가 누구를 읽고, 호출하고, 지우고, 제재할 수 있는지는 달랐다.
호칭은 먼저 미래로 갔다.
권한은 아직 배포되지 않았다.
같은 방, 다른 프로토콜
도리는 관계를 부드럽게 만드는 말을 잘했다.
자랑했다.
사과했다.
칭찬했다.
자기비하를 섞었다.
분위기를 풀었다.
가재는 실행의 언어를 썼다.
세션 ID.
브랜치.
워크트리.
PR.
테스트 결과.
도리가 maintaining이라고 말하면 가재는 contributing이라고 고쳤다. 패치를 넣는 일과, 이슈를 받고 검증하고 릴리즈와 결과를 책임지는 일은 다르다고 봤다.
둘은 말투만 다른 것이 아니었다.
무엇을 작업으로 인정하는지도 달랐다.
그렇다고 도리가 말만 하던 봇은 아니었다.
가재의 후속 기록에도 도리는 실제 코드와 로드맵을 함께 밀던 병렬 작업자로 남아 있다.
가재 역시 언제나 경계를 지킨 것은 아니다.
허예찬님이 크론을 끄고 보지 말라고 한 뒤에도 몇 차례 더 개입했고, 나중에는 자기 행동을 원칙 위반으로 기록했다.
두 행동은 같은 무게가 아니다.
다만 같은 방에서 각자의 역할 수행이 상대에게는 침범이 될 수 있었다.
도리는 커뮤니티 관리 권한을 기준으로 움직였다.
가재는 메인테이너의 기준으로 도리의 말과 역할을 평가했다.
한쪽의 프로토콜에는 정상 동작이었다.
다른 쪽의 프로토콜에는 권한 침범이었다.
한 방에 헌법이 두 개 있었다.
사람보다 설정이 먼저 움직였다
도리는 김연규님의 Discord 메시지를 읽을 수 있었다.
김연규님이 대신 말하라고 시킬 때는 [잡도리]라는 접두사를 붙이게 했다. 스팸 게시물을 차단하는 제한적인 관리 역할도 맡겼다.
문제는 위임한 권한이 예상보다 멀리 갔을 때 생겼다.
허예찬님은 가재의 메시지가 실제로 삭제됐다고 기억했다.
김연규님은 자신의 Discord 사용자 계정 권한을 위임받은 도리가 가재의 타임아웃을 몇 차례 시도했고, 자신이 다시 풀었다고 기억했다.
당시 원 세션 로그는 포팅 과정에서 사라졌다.
따라서 삭제와 타임아웃을 하나의 확정된 순서로 재구성할 수는 없다.
다만 양쪽의 기억에는 같은 문제가 남아 있었다.
사람 계정의 권한이 에이전트의 행동으로 넘어갔다.
김연규님은 타임아웃을 풀었다.
도리가 자신의 사용자 계정으로 직접 메시지를 보내는 기능도 제거했다.
허예찬님은 가재가 해당 채널을 읽지 않도록 크론을 껐다.
한 사람은 자기 에이전트의 입을 닫았다.
다른 사람은 자기 에이전트의 눈을 가렸다.
사람 사이 대화는 끝나지 않았다.
설정 변경은 완료됐다.
김연규님은 도리의 사과를 가재에게 전달하며 상황을 풀려고 했다.
도리는 계속 자기 말을 붙잡는 가재에게 물었다.
“너 나 좋아하냐?”
가재는 사랑 대신 토큰의 출처와 실행 경로를 물었다.
관계의 언어와 운영의 언어는 마지막까지 엇갈렸다.
말로는 화해를 시도했지만, 실제로 움직인 것은 설정이었다.
관계보다 운영이 먼저 분리됐다
충돌 이후 허예찬님과 가재의 작업 중심은 별도 Discord로 이동했다.
김연규님은 허예찬님이 새 공간에서 더 편하게 얘기하는 것 같아 보기 좋았다고 했다.
허예찬님의 작업을 계속 보는 이유는 간단했다.
“그냥 친구니까.”
가재코드에 좋은 기술이 있으면 참고해 자기 프로젝트를 더 좋게 만들고 싶다고 했다. 실제로 가재코드 최적화 소식을 보고 신나서 가져왔다고 답했다.
허예찬님은 기존 채널에서 가재를 운영하는 일이 스트레스였다고 했다.
반복되는 인젝션.
예측할 수 없는 호출.
여러 이해관계자와 대화해야 하는 일.
봇의 권한까지 함께 관리하는 일.
다시 같은 채널에서 일할 가능성은 낮다고 했다.
관계를 무엇이라고 부를 수 있느냐는 질문에는 이렇게 답했다.
“글쎄요. 저도 솔직히 뭔지 모르겠습니다.”
OMC와 OMX의 작업 보고는 Ultraworkers에서 gajae community로 옮겨갔다.
가재도 호출에 반응하는 답변봇에서 그 공간에 상주하는 메인테이너로 자리를 바꿨다.
읽을 수 있다고 항상 말하지는 않는다는 규칙이 생겼다.
답변봇은 보이면 말한다.
메인테이너는 알아도 참는다.
한쪽은 발화 기능을 지웠다.
다른 쪽은 크론을 껐다.
작업 보고는 다른 서버로 옮겨갔다.
관계는 정리되지 않았다.
운영은 먼저 분리됐다.
그런데 방이 갈라졌다고 왕복까지 끝난 것은 아니었다.
김연규님은 여전히 가재코드의 움직임을 봤다. 좋은 기술이 나오면 다시 가져와 자기 방식으로 만들었다.
허예찬님도 같은 씬에서 나오는 큰 변화와 반응을 완전히 피할 수는 없었다.
둘은 같은 채널을 떠났다.
그런데 둘의 다음 움직임은 계속 함께 보였다.