하네스 전이

하네스 전이

문제는 여러 개가 아니다. 하나의 구조가 다른 형태로 반복될 뿐이다.


계속 어긋난다

앞에서 본 세 가지 문제는 따로 보면 다른 것처럼 보인다.

프롬프트가 부족하면 프롬프트를 고친다. 컨텍스트가 단절되면 컨텍스트를 늘린다. 실행이 달라지면 규칙을 더 추가한다.

각각을 고쳤는데도, 결과는 항상 같다. 처음에는 잘 된다. 조금 지나면 어긋난다. 어느 순간부터는 어디가 문제인지 알 수 없어진다.

이 세 가지 문제는 사실 하나다.


하나로 묶으면

프롬프트도, 컨텍스트도, 실행도 — 결국 경로를 다루지 않는다.

그래서 이런 일이 생긴다.

같은 기능을 서로 다른 방식으로 만든다. 같은 상태를 서로 다른 경로로 바꾼다. 같은 문제가 다른 형태로 반복된다. 이 모든 것이 하나의 원인에서 나온다.

시스템은 어떤 경로를 허용하는지 정의하지 않는다.

경로가 정의되지 않으면, 가능한 경로는 모두 열려 있다. 열려 있는 경로는 언젠가 사용된다.


왜 기존 방식이 실패하는가

더 잘 설명하고, 더 많은 규칙을 만들고, 더 많은 상태를 전달하는 방식은 효과가 있다. 하지만 경로를 닫지는 못한다.

프롬프트는 “이 경로를 쓰라"고 말할 수 있다. 하지만 다른 경로가 사라지지는 않는다. 규칙은 “저 경로를 쓰지 마라"고 말할 수 있다. 하지만 그 경로는 여전히 존재한다. 컨텍스트는 “이전에는 이렇게 했다"고 알려줄 수 있다. 하지만 다음 실행에서 같은 방식을 쓰도록 강제하지 못한다.

이 방식들은 모두 “사용하지 않기를 바라는” 경로를 닫는 게 아니라, “사용하기 어렵게 만드는” 것이다. 그 차이가 반복의 원인이다.


선택지는 하나다

여기까지 오면 남는 선택지는 하나다.

설명을 더 정교하게 만드는 것도 아니고, 상태를 더 많이 전달하는 것도 아니다.

어떤 경로만 허용할 것인가.

허용하지 않을 경로는 실행 자체가 안 되게 만든다. 허용된 경로만 통과하게 만들고, 그 밖은 실패로 바꾼다.


하네스

이 문서에서는 이 접근을 하네스라고 부른다.

하네스는 규칙이 아니다.

규칙은 선택이다. 지킬 수도 있고, 우회할 수도 있다. 우회가 가능한 한, 우회는 일어난다.

경로는 다르다. 경로는 존재 자체가 실행을 의미한다. 허용된 순간 사용된다. 그래서 허용 여부 자체를 결정해야 한다.

하네스는 그 허용 여부를 시스템 수준에서 정의하는 것이다. 어떤 경로를 통해서만 상태가 바뀔 수 있는지, 어떤 경로를 통해서만 작업이 완료될 수 있는지를 구조로 고정한다. 설명이 아니라 구조로.


이제 설명은 끝난다

여기까지는 문제가 무엇인지, 왜 기존 방식으로는 충분하지 않은지를 다뤘다.

다음부터는 우회가 실제로 어디에서 발생하는지를 본다. 어떤 구조가 경로를 열어두는지, 그리고 그것을 어떻게 식별하는지.