채널 어댑터
사람 대면 surface는 하나. 채널은 교체 가능하게.
Persona는 transport-neutral human_* 도구를 사용하고 hub가 channel credential을 보유합니다. Teams가 첫 adapter이며, Telegram·Slack·Email과 미래 채널은 추가될 때 같은 선언형 계약에 맞춥니다.
TERMINATION
Adapter는 hub에서 끝납니다.
Adapter는 persona session에 직접 연결되지 않고, session은 channel protocol을 말하지 않습니다. Inbound 사람 트래픽은 envelope으로 hub에 들어와 address에 따라 대상 seat의 local hub로 전달되고, outbound는 seat → hub → adapter 순서로 나갑니다.
이 경계가 channel을 교체 가능하게 만듭니다. Channel을 바꾸면 hub가 무엇과 대화하는지가 바뀔 뿐, persona가 무엇인지와 어떻게 동작하는지는 바뀌지 않습니다.
선언된 CAPABILITY
없는 기능을 조용히 버리지 않습니다.
BINDING
Persona가 아니라 경로를 바꿉니다.
Binding 변경은 persona identity·tool·runtime을 바꾸지 않고 channel만 전환합니다. Channel type은 adapter와 일치해야 하며 모든 operation은 binding과 caller의 stamped path를 비교합니다. 다른 workspace나 project의 그럴듯한 binding은 거부합니다.
전달
Retry는 identity와 intent를 보존합니다.
Boundary contract는 외부 side-effect port가 같은 durable key를 강제하도록 요구합니다. Redis는 임의의 외부 API 호출을 atomic하게 만들 수 없습니다.
메시지가 도착하지 않을 때
Private content가 아니라 metadata를 추적합니다.
설계된 channel doctor는 lane, authentication 존재 여부, terminal HTTP 또는 adapter-admission status만 관찰합니다. Candidate가 정확히 하나일 때 세 outcome branch를 따르고, 여러 개면 attribution 없이 inconclusive로 끝냅니다.
채널 진단 열기