대화가 끝났다고 브라우저에서 시작한 모든 일이 사라지는 것은 아니다. 반대로 작업 하나를 멈추려고 앱 전체를 종료하면 다른 프로젝트까지 영향을 받는다. 나는 연결 해제와 작업 중지, 정상 종료를 서로 다른 수명으로 다뤘다.

disconnect는 대화 쪽 자원을 정리한다

McpClient.disconnect는 대기 중 응답을 오류로 끝내고 stdio 입력과 읽기를 닫은 뒤 중계 프로세스를 종료한다. 이것은 호스트의 taskControl 취소 명령과 다른 동작이다. 브라우저 앱 자체를 닫는 명령도 아니다.

따라서 예제의 finally에서 연결을 정리했다고 진행 중 브라우저 작업이 모두 중지됐다고 보고하면 안 된다. 작업을 끝내려면 finish나 stop의 결과를 먼저 확인해야 한다. 연결 객체의 정리와 업무 정리가 서로 대체되지 않도록 코드에서도 호출 순서의 뜻을 읽을 수 있어야 한다.

stop은 특정 현재 작업을 대상으로 한다

작업 stop은 같은 taskId와 프로필·프로젝트를 확인한 뒤 기존 taskControl cancel 명령을 사용한다. 다른 작업의 번호를 넣어도 현재 작업을 대신 멈추지 않는다. 프로그램과 노트북의 중지는 각각의 실행 경로를 갖는다.

이것은 아무 창이나 강제로 닫는 방식보다 범위가 작다. 멈추려던 업무와 계속 남겨야 할 업무를 구별할 수 있다. 다만 취소 요청이 서버에서 이미 처리한 외부 저장을 되돌리는 것은 아니다. 이후 결과 확인과 필요한 정리는 실제로 남은 상태를 기준으로 판단해야 한다. 취소 버튼을 눌렀다는 이벤트와 실행기가 중단 상태를 돌려준 결과도 따로 읽는다.

중지는 대기 중 입력과 동시에 가능해야 한다

파이프 서버는 일반 변경 요청의 동시 실행을 제한하지만 stop은 그 대기 뒤에 막히지 않게 분류한다. 입력이 오래 기다린다는 이유로 중지 요청도 같은 잠금 뒤에 줄 서면 사용자가 멈출 수 없는 구조가 된다.

관련 통합 시험은 진행 중 요청을 대기시킨 상태에서 stop을 받아 실행을 풀 수 있는지 확인한다. 이 시험의 stop 처리는 제어기 대역의 협력 동작이다. 모든 임의 Python 코드가 즉시 종료된다는 보장으로 넓히지 않는다. 중지 입구가 열린다는 사실과 각 실행기의 실제 중단 능력은 별도 검증 대상이다.

앱 종료는 모든 프로젝트의 상태를 본다

정상 종료 요청은 현재 문맥과 실행 중 여부를 확인하고 다른 프로젝트가 바쁜지도 본다. 현재 화면이 조용하다고 백그라운드 프로그램까지 없는 것은 아니다. 하나라도 실행 중이면 MCP_BACKGROUND_PROJECT_RUNNING 같은 오류로 종료를 거절한다.

종료할 수 있는 상태에서는 초안을 캡처하고 브라우저 상태 저장을 기다린 뒤 창 닫기를 예약한다. 반환값의 closing은 종료 절차를 요청했다는 의미다. 그 응답 자체를 다음 시작의 모든 복원 성공으로 해석하지 않는다. 종료 전 저장과 재시작 후 복원 검증도 서로 다른 단계다.

끊어진 연결에는 새 판단과 기존 상태를 구분한다

호스트는 연결이 없어도 기존 실행 상태를 유지할 수 있다. 하지만 새 AI 판단은 다시 연결된 외부 대화가 필요하다. 프로그램이 결정된 절차를 계속 수행하는 것과 모델이 새 오류를 판단하는 기능을 같은 상시 지능이라고 설명하지 않는다.

재연결하면 현재 task와 program을 먼저 읽고, 결과가 불확실한 경우 그 상태를 이어 받아야 한다. 연결을 다시 만들었다는 이유로 처음 요청을 재전송하지 않는다. 이미 끝난 일과 아직 진행 중인 일, 확인이 필요한 일을 구별하는 절차가 수명 분리의 실무적인 결과다.

동사의 이름보다 실제 효과를 설명한다

연결 해제·중지·종료는 모두 끝내는 말처럼 보이지만 실제 영향 범위가 다르다. 나는 상태 문구를 정할 때 어떤 자원이 끝나고 어떤 결과가 남는지 함께 설명해야 한다고 봤다. 사용자에게 다시 연결하라는 안내와 업무가 취소됐다는 안내를 혼용하지 않는다.

이 글은 현재 클라이언트와 handler, 파이프 시험을 대조했다. 운영 중인 사용자의 앱을 종료하거나 실제 노트북을 중단한 검수는 아니다. 다른 업무 프로그램에서도 통신·작업·애플리케이션 수명을 먼저 나누면 불필요한 전체 종료와 잘못된 완료 보고를 줄이는 설계 기준을 얻을 수 있다.