중지 버튼이 없어졌으니 답이 끝났다고 바로 읽으면 아직 빈 응답이거나 매체가 준비 중인 순간을 잡을 수 있다. 반대로 긴 시간만 기다리면 이미 끝난 응답에도 불필요하게 멈춰 있게 된다. 북극성의 대기는 시간 하나보다 현재 관찰한 조건을 함께 읽는 쪽으로 구성했다.

생성 중이 아님은 완료의 일부 조건이다

busy는 현재 서비스의 stop 제어가 있는지 읽은 값이다. waitAnswer는 새 답변이 없거나 busy이면 last와 stable을 초기화하고 기다린다. 중지 표시가 없다는 사실만으로 바로 true를 돌려주지 않는다. 새 응답과 필요한 내용이 함께 있어야 안정 비교를 시작할 수 있다.

중지 표시도 실제 모델 내부의 모든 상태를 직접 읽는 API는 아니다. 사이트 어댑터가 알려진 제어를 해석한 관찰이다. 화면 구조가 달라졌거나 생성 표지가 누락됐을 가능성을 타이머 하나로 없앨 수는 없다. 그래서 완료를 단일 버튼의 유무로 설명하지 않고 여러 관찰의 결합으로 남겼다.

처음 같은 값과 연속 반복을 구분한다

원래 함수는 처음 signature를 보면 last를 갱신하고 stable=0으로 둔다. 같은 signature가 다시 오면1, 또 같으면2가 되어 통과한다. 즉 초기 적격 관찰 뒤 두 번의 반복이 필요하다. “본문2회 안정”이라는 짧은 말만으로 총 두 snapshot이면 된다고 이해하지 않게 했다.

text에서는 trim한 응답 본문, 매체 요청에서는 같은 응답의 매체 이름과 ordinal도 지문에 들어간다. 원래 모든 분기에 응답 ID가 지문으로 들어가는 것은 아니다. 공유 예제는 ID도 추가하는 더 좁은 비교를 택했으므로 원본 전체와 동일한 상태 기계라고 부르지 않는다.

안정될 자료가 없으면 횟수를 올리지 않는다

일반 text 목표에 본문이 비어 있으면 stable을 지우고 기다린다. 이미지·영상 목표에서는 해당 매체 준비가 없을 때 같은 대기 상태를 유지한다. 빈 문자열을 여러 번 봤다고 답변이 안정됐다고 부르지 않는다. 기다림의 반복과 완료 증거의 반복은 다른 값이어야 했다.

사용자 허용을 기다리는 제어나 오류 응답도 정상 완료로 흘려보내지 않는다. 일부 서비스의 매체 생성 불가 응답은 별도 안정 확인 뒤 명확한 오류로 돌려준다. 할 수 없다는 문장이 안정됐다는 사실이 원하던 생성물이 준비됐다는 뜻으로 바뀌지 않도록 했다.

대기 간격은 고정 성공 시간이 아니다

until은 관찰하고 조건을 검사한 뒤 잠깐 쉬며 다시 읽는다. 현재 구현의 보통 간격은600ms이고 매우 긴 timeout에서는2초다. 이 값으로 모든 답변이 일정 시간 안에 끝난다고 보장하지 않는다. 조건을 만족하지 못하면 정해진 오류로 끝나며 새 요청을 대신 보내는 함수도 아니다.

이전 글의 로컬 대기는 기다릴 때마다 새 모델 대화를 만드는 비용을 다뤘다. 이번 질문은 그 기다림 안에서 무엇을 완료로 읽는가다. 같은 반복 구조여도 실행 영수증을 읽는 일과 서비스 응답의 본문·매체가 안정됐는지 보는 일은 자료와 조건이 다르다.

fixture의 안정된 답과 실제 서비스 완료를 나눈다

기존 fixture는 처음 partial과 streaming을 보인 뒤 완성 답을 반환한다. 시험은 같은 요청 재사용에서도 보내기 클릭이1회인지 확인하고 사용자 확인 대기는 completed가 아닌 상태로 남기는지 본다. 이번에는 그 시험과 waitAnswer를 읽었으며 원래 서비스에 새 질문을 보내지 않았다.

공유 모듈의32개 시험은 busy·본문 변경·매체 변경·응답 ID 변경에서 안정 횟수를 초기화하는지 확인한다. 실제 시간 간격을 스스로 기다리지는 않고 증가하는 선언 시각을 받는다. 따라서 이 시험이 실제 네트워크 지연이나 제공자의 최종 결과 정확도를 측정했다는 뜻은 아니다.

안정됐다는 말의 한계를 결과에 남긴다

세 번 같은 관찰이 이어져도 그 내용이 영원히 바뀌지 않거나 사실이라는 뜻은 아니다. 현재 어댑터가 읽은 범위에서 정한 완료 조건이 맞았다는 의미다. 큰 본문과 복잡한 매체 결과는 관찰 한도와 실제 파일 확인도 따로 봐야 한다. 짧은 상태 이름이 확인 범위를 넓혀서는 안 된다.

나는 빠른 완료보다 다음 작업자가 믿을 수 있는 완료 설명을 원했다. 언제 생성 중이었고 어떤 내용이 반복됐으며 무엇이 아직 확인되지 않았는지 남기면 재전송 없이도 결과를 이어 볼 수 있다. 안정 관찰은 그 연결을 만드는 도구이며 업무 목적 달성의 유일한 판단은 아니다.