Implemented (Codex gpt-5.6-sol wrote, I directed+verified) docs/41 §A R2 on branch feat/ontology-brain-split, uncommitted (parent commits).
Root cause confirmed live: old extract_hwp_text (OleStorage(BytesIO)+StringIO) dies with TypeError: string argument expected, got 'bytes' (pyhwp lxml serializer emits bytes), hidden by a broad except -> generic "not reliable" message. Fix: temp-file + .venv/bin/hwp5txt --output subprocess (shell=False list args, timeout=120s, bounded stdout 64MB, stderr[:500], guaranteed finally cleanup, honest BinaryTextExtractionError when exe absent).
Per-format caps replace flat 25MB: PDF 200 / DOCX·HWP·HWPX 100 / XLSX·PPTX 50 MB, under a global ceiling (DEFAULT_MAX_BINARY_BYTES + source_config default bumped 25M->200M). Oversize -> honest status skipped_resource_limit.
Honest statuses in loader.extract_binary_text: empty PDF -> ocr_required, empty other -> no_embedded_text, <32 chars -> low_text_yield (keeps body, NOT a stub), else success. R1 source_filter _GDRIVE_NON_CONTENT_EXTRACTION_STATUSES extended with skipped_resource_limit/no_embedded_text/ocr_required (kept legacy four).
ZIP-bomb guard _guard_zip_archive (2GB uncompressed / ratio 200) called at start of docx/pptx/xlsx/hwpx; guard error re-raised before broad except.
Live-verified (read-only, local .hwp): real HWPs recover 1,725 / 7,791 / 21,079 / 32,600 chars incl. a 28MB file (was stub under both TypeError bug + 25MB cap). Honest statuses + caps + zip guard all fire correctly. pytest: 742 passed, only the 3 pre-existing test_source_config_seed failures (KeyError gdrive-1, unrelated to max_binary_bytes). ruff clean on changed files.
Recovery estimate of 171 stubs: ~27 hwp(failed) recover now + oversize non-pptx under new caps (63MB PDF->18,858 chars precedent); ~42 scanned/image become honest ocr_required/no_embedded_text for a future OCR round; 73 oversize pptx (median 162MB) stay capped at 50MB. Exact backfill count needs an approved prod dry-run (not run).
Lesson: pyhwp's in-memory OleStorage path is broken for text transform; the CLI (hwp5txt) is the reliable path. Resolve exe via Path(sys.executable).parent/"hwp5txt" (same venv/bin).
Sagwan Revalidation 2026-07-15T16:09:27Z#
- verdict:
refresh - note: uncommitted branch·pytest 수치 등 시점 의존 주장이 많아 재검증 필요.
Sagwan Revalidation 2026-07-17T16:49:16Z#
- verdict:
refresh - note: 미커밋 브랜치·테스트 실패 수 등 변동 가능 항목 재확인이 필요함
Sagwan Revalidation 2026-07-19T18:00:51Z#
- verdict:
ok - note: 이틀 전 검증된 구현·테스트 기록으로, 갱신 필요 징후가 없다.
Sagwan Revalidation 2026-07-21T18:43:15Z#
- verdict:
ok - note: 최근 검증된 내부 구현·테스트 기록으로, 갱신 필요 징후가 없다.
Sagwan Revalidation 2026-07-23T20:54:25Z#
- verdict:
ok - note: 2일 전 검증된 구현·테스트 기록으로, 즉시 갱신 근거 없음
Sagwan Revalidation 2026-07-25T23:10:13Z#
- verdict:
ok - note: 2일 전 검증된 구현·테스트 주장으로, 현재 낡은 내용은 보이지 않습니다.
Sagwan Revalidation 2026-07-28T06:18:07Z#
- verdict:
ok - note: 3일 전 검증된 구현·수치·상태 정의로, 낡은 징후 없음
Sagwan Revalidation 2026-07-30T10:37:42Z#
- verdict:
ok - note: 2일 전 검증된 구현·수치·상태 설명으로 현재 갱신 근거가 없다.
Sagwan Revalidation 2026-08-01T21:16:00Z#
- verdict:
ok - note: 최근 검증본으로, 수치·상태·구현 권장안의 변경 근거가 없다.
Sagwan Revalidation 2026-08-05T21:29:41Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-08T06:21:34Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-10T18:41:24Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-13T06:25:23Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-15T19:35:50Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-18T07:30:23Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-20T19:51:11Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-23T08:24:31Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-25T20:52:02Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-28T09:09:38Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-08-30T21:42:13Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-09-02T11:08:03Z#
- verdict:
ok - note: 최근 검증 후 며칠뿐이며 코드·수치·상태 주장에 즉시 낡은 요소가 없음
Sagwan Revalidation 2026-09-08T14:21:12Z#
- verdict:
ok - note: [chatgpt HTTP 404] {
Sagwan Revalidation 2026-09-11T03:48:23Z#
- verdict:
ok - note: 3일 전 검증된 구현·수치·상태 정의로, 즉시 갱신 필요는 낮음
Sagwan Revalidation 2026-09-13T23:17:46Z#
- verdict:
ok - note: 이틀 전 live 검증된 구현이며, pyhwp subprocess 우회·포맷별 캡·ZIP 가드·정직 상태 설계 모두 현재 practice에 부합.