v0.25.1.ko.md
docs/i18n/release-notes/v0.25.1.ko.md
Tesserae v0.25.1 — 컴파일이 더 이상 멈추지 않고, 저하된 문서가 복구 가능하다
<!-- translations:start -->
English · 中文 · 日本語 · Русский · Español · Français · Deutsch
<!-- translations:end -->
Released 2026-07-25 · PyPI · GitHub release · pip install --upgrade tesserae==0.25.1
버그 수정 릴리스입니다. API 변경은 없으며 v0.25.0 위에 바로 올려도 되지만, 한 가지 동작 기본값이 뒤바뀌었습니다 (업그레이드 참조).
모든 수정이 한 건의 조사에서 나왔습니다. 실제 프로젝트에서 컴파일이 0% CPU로 5시간 43분 동안 멈춰 있었는데, 그 뒤에는 4시간 6분 동안 유휴 상태였던 codex exec 자식 프로세스가 있었습니다. 이미 메모리에 32개의 COMMUNITY_SUMMARY 노드를 만들었지만 영속화되지 못했고, 그래서 graph.json은 0개로 끝났습니다. 이 실을 당기자 세 가지 더 있는 결함이 드러났습니다.
수정 사항
- 추출 웨지 가드가 기본으로 활성화되었습니다. v0.25.0은 파일별 추출 타임아웃을 선택적으로 제공했지만, 꺼져 있었으므로 그것이 방지하는 실패가 계속 일어났습니다.
_run_cli의 프로세스 그룹killpg는 처음부터 제대로 연결되어 있었으나,communicate(timeout=None)이 예외를 던지지 않았기 때문에 실행되지 않았습니다. 이제 한계가 시도당 1800초 기본값입니다. 웨지된 자식의 프로세스 그룹을 죽이자 부모 컴파일이 몇 초 안에 재개되었습니다 — 4시간 동안communicate()에서 대기 중이었습니다.
타이핑 실수가 안전 밸브를 조용히 해제해서는 안 되므로, 사용할 수 없는 값(10m, 600s, 음수, inf)은 이제 경고를 하고 기본값을 유지합니다. TESSERAE_EXTRACT_TIMEOUT=0이 명시적 탈출구입니다.
compile --retry-fallbacks가 결정론적으로 저하된 문서를 복구합니다. 추출이 실패하면 문서는 결정론적 기준선으로 제공되지만, 매니페스트 항목이 깨끗한 추출과 바이트 동일했으므로--changed-only가 나중의 모든 컴파일에서 건너뛰었고 파일의 자체 내용이 변할 때까지 저하가 영구적이었습니다. 몇 개의 문서를 복구하려면manifest.json을 손으로 편집해야 했으며, 대신 결정론적 채우기로 전체 코퍼스를 채우고 수 시간의 입력 작업을 파괴할 위험이 있었습니다. 이러한 항목은 이제 표시되고 필요에 따라 재시도되며,distill --retry-fallbacks를 반영합니다.graph_map카드의live_member_count.size와leaf_member_count는 컴파일 중간에 작성되는hierarchy.json사이드카에서 옵니다.graph.json이 나중에 다시 작성되면 둘이 달라지고, 카드가 수백 개의 멤버를 광고할 수 있지만 아무것도 해결되지 않습니다 — 클라이언트가graph.json자체를 다시 읽지 않으면 건강한 카드와 구별할 방법이 없습니다. 그래프에서 파생된 카드(kind=community|node)는 이제 현재 그래프가 수용하는 멤버 수도 보고합니다.0은 스코프가 죽었다는 뜻이며: 내려가지 말고 건너뜁니다.
한 실제 7,133노드 그래프에서는 즉시 2개의 죽은 루트 카드와 42개의 부분 해결 카드를 드러냈으며 아무도 알아채지 못했습니다.
_CLIENT_FACTORY테스트 시임이 호출자의 타임아웃을 존중합니다.build_default_json_client가 이를 떨어뜨렸고, 주입된 가짜에 30초 기본값을 제공했으므로, 타임아웃을 설정한 테스트가 조용히 아무것도 증명하지 못했습니다. 시임만 해당; 프로덕션 구성은 이미 올바렀습니다.
v0.25.0에서 업그레이드
바로 올려도 되지만, 한 가지 알아야 할 점: 추출이 기본값으로 시간이 제한됩니다 (시도당 1800초). 의도적으로 무제한 실행을 원한다면 TESSERAE_EXTRACT_TIMEOUT=0을 설정하세요.
한계는 문서당이 아니라 *시도*당입니다 — 타임아웃 시 클라이언트가 다음 CODEX_HOME / claude 설정 디렉터리로 회전하므로, 문서의 최악의 경우는 timeout × 구성된 프로필입니다.
이전 컴파일이 문서를 결정론적 추출에서 멈춰 두었다면, 다음으로 복구하세요:
tesserae compile --changed-only --retry-fallbacks
입력 추출이 실제로 실패한 문서만 재시도되며; 깨끗한 것들은 건너뛴 상태로 유지됩니다.