auth_credential_blocks (인증 스키마 v5)는 행 id + 제공자 키 + 블록 범위를 키로 하여 자격증명별 블록을 저장하며 MAX-upsert 의미론을 사용하고, AuthStorage는 읽기 시 지속되는 블록과 메모리 내 블록을 병합하며, 인증 브로커 스냅샷/SSE는 POST /v1/credential/:id/block 및 DELETE /v1/credential/:id/blocks 엔드포인트와 함께 항목별 블록을 수행하므로 게이트웨이와 형제 omp 프로세스가 429를 한 번씩 소모하여 소진된 계정을 다시 발견하지 않습니다.exhausted 상태 또는 사용된 비율 >= 1)일 때 라이브 resetsAt을 통해 자격증명을 사전에 하드 블록하고, 라이브 Fable 429는 반응형 블록을 60초 기본값 대신 확인된 계층 리셋까지 연장합니다. 미확인 행(누락/만료된 리셋, 한도 미만)은 허위-100% 가드를 유지하면서 순위 지정 힌트로만 유지됩니다.true/false)를 값 확장 anyOf 프리미티브 타입 유니온으로 다시 작성하고, 부울 additionalProperties/unevaluatedProperties를 제거하고, 도구 매개변수를 직렬화하기 전에 nullable type 배열을 평탄화하므로 제약이 없는 필드는 여전히 문법 제약 샘플러(llama.cpp)에 "모든 JSON 값"을 광고하고 빈 객체로 축소되지 않습니다. (#4488)TranscriptContainer는 하나의 경계(최종화된 블록과 첫 번째 라이브 블록의 getTranscriptBlockSettledRows(), 마크다운의 고정 토큰 접두사로 제공됨 — 스트리밍 회신의 완성된 콘텐츠 블록은 최종 렌더링되고 완전히 정산되므로 긴 회신과 보이는 사고는 정확한 바이트로 터미널 스크롤백에 도달)를 보고합니다. 휴리스틱 커밋 machinery(deriveLiveCommitState 추가 전용 감지, 안정 접두사 래칫, 휘발성 쿨다운, 재작성 바닥), isTranscriptBlockCommitStable 및 렌더러별 provisionalPendingPreview/provisionalPartialResult 플래그는 모두 제거됩니다. 임시 블록 축소(치환 가능한 todo/job 카드, IRC 카드)는 이제 TranscriptContainer.isBlockUncommitted()에 제어됩니다 — 행이 이미 스크롤백에 진입한 카드는 제거되는 대신 이력으로 밀폐됩니다.429 rate_limit_error)은 라이브 보기, 재구성, 재개, 서브에이전트/협업 대화 기록 보기 전반에서 rate-limited; switched account; retried 같은 단일 희미한 주석으로 렌더링되며 세션 재개 시 모델 컨텍스트에서 제외됩니다. 터미널(복구되지 않음) 오류는 완전한 오류 렌더링을 유지합니다. 지속된 마커는 어시스턴트 메시지의 retryRecovery이고 auto_retry_end 성공 이벤트는 추가 recoveredErrors 데이터를 전달합니다.read 범위가 편집 본 라인 출처에 기여하지 않는 문제 수정: :raw를 사용하여 앵커 범위를 다시 읽으면 이제 비 원본 라인 접두사를 추가하지 않고 해시라인 편집을 차단 해제합니다.setSessionName 경로(첫 입력 제목 지정, /rename, 계획 시딩, 재계획 새로고침)가 OSC 제목을 일관되게 설정합니다.Interrupted by user 레이블을 렌더링하는 문제 수정; 재생 및 라이브 보기는 이제 일반/사용자 정의 중단 레이블을 보존하면서 그 중복 라인을 다시 억제합니다.!/$ 실행 블록은 최종화 계약을 보고합니다.Error: 블록 위에 이중 빈 간격으로 렌더링되는 문제 수정(호출자 및 오류 블록이 각각 스페이서를 추가).browser({action:"run"}) 호출이 탭이 실행 중 해제될 때(예: 형제 서브에이전트가 browser({action:"close", all:true}) 호출 또는 세션 범위 탭 수거) 처리되지 않은 거부로 전체 프로세스를 충돌시키는 문제 수정. tab-supervisor.ts의 runInTabWithSnapshot은 releaseTab이 진행 중인 실행에 신호를 보낼 수 있도록 Promise.withResolvers() 트리플을 생성하지만 cmux 분기는 runCmuxCode(...)를 직접 대기하고 로컬 프로미스를 기다리지 않았습니다. releaseTab이 고아 프로미스("Tab ... was closed")를 거부하면 Bun이 이를 처리되지 않은 거부로 표시하고 최상위 핸들러가 전체 세션을 중단하며 이를 공유하는 다른 모든 탭과 서브에이전트를 죽였습니다. 두 백엔드는 이제 동일한 promise를 대기하므로(따라서 pending.reject는 항상 연결된 핸들러를 가지며 호출자는 실행의 타임아웃까지 차단되지 않고 즉시 Tab "..." was closed 를 봅니다), 그리고 새로운 pending.closeAc는 cmux 실행의 중단 신호로 구성되므로 wait(...), 진행 중인 cmux 소켓 호출 및 파사드 프록시는 자신의 타임아웃으로 누수되지 않고 탭이 닫힐 때 빠르게 해제됩니다 (#4499).grep 디렉터리 검색을 트리가 보행되는 동안 스트리밍하도록 다시 작성: 작업 탈취 병렬 순회는 검색자에게 직접 공급하고 콘텐츠 모드 일치 예산은 이제 검색만이 아닌 보행 자체를 종료합니다. 제한된 검색은 윈도우 커밋을 통해 모든 예산 크기에서 결정적 경로 순서 첫 페이지를 유지하며 초과 크기 파일은 여전히 정상 크기 결과 뒤에 지연됩니다.grep 호출은 더 이상 서로 직렬화되지 않고 검색자는 파일별로 재구성되는 대신 워커별로 재사용되고, 비다중 라인 패턴은 호환성 폴백과 함께 grep-regex의 라인 종료자 빠른 경로에 옵트인합니다.Markdown.getLastRenderSettledRows(): 가장 최근 스트리밍 렌더의 렌더된 고정 토큰 접두사 행 수, 네이티브 스크롤백 커밋 게이팅을 위해 노출(텍스트 계보별 하드 단조). 고정 접두사 코드 블록은 이제 스트리밍 렌더 중에 구문 강조되므로 정산된 행은 최종화 전반에서 바이트 안정 상태를 유지합니다.NativeScrollbackLiveRegion은 이제 단일 메서드(getNativeScrollbackLiveRegionStart)로 정확성 경계를 보고합니다: 아래의 행은 정확히 감시된 바이트로 커밋됩니다; 위의 행은 소스가 라이브로 유지되고 경계가 이들을 통과할 때 정확히 한 번 엄격하게 검증되는 동안 감사 면제 고정 시각 스냅샷으로 커밋됩니다(차이점은 고정 조각 아래에서 최종 콘텐츠를 다시 커밋합니다 — 중복, 손실 없음). getNativeScrollbackCommitSafeEnd/getNativeScrollbackSnapshotSafeEnd 및 그들이 공급한 휴리스틱 프로모션 machinery는 제거됩니다.Full Changelog: v16.3.5...v16.3.6