Repository navigation
[회귀 검사 정비] 현행 지침에 맞지 않는 기존 회귀 테스트 전수 조사·보정 #8232
Description
사용 경로
기타 — 기존 회귀 테스트와 이를 실행하는 Native·CLI·Studio/E2E 경로, 공용 helper·fixture·baseline/golden·검증 스크립트입니다.
하려는 작업
기존 회귀 테스트를 전수 조사하여, 현행 조판·시각 검증 지침에 맞지 않는 기대값과 검사 방식을 보정합니다.
조사 보고만 만드는 작업이 아닙니다. 전수 조사와 판정을 이 이슈에 정리한 뒤, 부적합한 기존 검사를 실제로 수정하고 필요한 출력 보정·재검증까지 진행합니다. 기준은 0.3 같은 숫자나 기존 이슈 번호가 아니라 현재 지침과 독립적인 원본·출력 근거입니다.
- 실제로 보정하는 파일명과 함수명은
issue_8232기준의 새 이름으로 변경합니다. 기존 이슈 번호를 이름에 남기거나 원래 이름의 wrapper를 유지할 필요는 없습니다. - 보존할 것은 독립 근거로 확인되는 검증 목적입니다. 잘못된 고정 px 기대값·허용오차·판정 방식까지 보존하지 않습니다. 정상 검사를 이름만 바꾸기 위해 재작성하거나 이전 이름의 wrapper로 중복 등록하지 않습니다.
- GitHub의 기존 관련 이슈를 일괄 개명하는 작업이 아닙니다.
- 독립 입력·Print PDF·보호해야 할 동작·검증 결과는 조사/변경 원장에 남깁니다.
- PR은 나중에 진행합니다. 조사용 스크립트·임시 PDF·PNG·TSV·로그는 Git에서 제외된
output/issue8232-audit/에 생성합니다.
문제와 판정 기준
지침은 바뀌었어도 기존 검사에 잠정 출력의 절대 좌표·고정 영역·전체 SVG golden, 근거가 불명확한 기대값이나 허용폭이 남을 수 있습니다. 검사가 현재 PASS라고 해서 현행 지침에 적합한 것은 아닙니다.
다음 기준을 적용하며, 서로 다른 계약을 구분합니다.
- 실물 배치의 기본 검사는 의미와 관계입니다. 쪽·문단·줄·개체 소속, 내용 순서·누락·중복, 자동번호, 셀/단 내부 포함, 앞뒤 요소의 겹침·이어받기와 후속 내용 보존을 검사합니다.
- 절대 px 좌표는 페이지별 자격을 먼저 확인합니다. 같은 원본·독립 한컴 Print PDF의 해당 페이지에서 Native와 fresh WASM의
silhouette_raw_match_percent가 각각98% 이상이고 직접 확대 판독을 완료한 경우에만, 독립 PDF 좌표의 ±2 CSS px 검사를 유지·추가합니다. 좌표계가 다르면 같은 단위로 환산합니다. 내용 소속·순서 관계도 함께 보호합니다. - 전체 SVG 해시·바이트 golden으로 실물 잠정 배치를 고정하지 않습니다. 같은 호출의 결정성이나 원본 구문/저장 보존 계약은 별도로 구분합니다. 파일명에 snapshot/golden이 있다는 이유만으로 모두 삭제하지 않습니다.
- 원본 단위·치수와 관계 검사는 보존합니다. 독립 원본HU·선언 크기·padding·font em·실제 객체 간 상대 관계를 px로 환산한 것까지 일괄 부적합으로 취급하지 않습니다.
±0.3만 검색해 일괄 삭제하거나 모든 수치를±2로 바꾸지 않습니다. - 현재 구현 값을 기대값으로 복사하지 않습니다. 기존 검사도 독립 기대값과 대조합니다. 구현과 같은 helper의 결과를 다시 호출하거나 현재 SVG를 재생성한 것만으로 올바른 회귀 정답이라고 판단하지 않습니다.
- 유지하던 완료 페이지가98% 미만으로 떨어졌다면 구현 회귀입니다. 좌표 검사가 PASS여도 조사하며, 기대 좌표·원본·PDF·허용폭 변경으로 하락을 숨기지 않습니다.
- 검사 보정의 시각 선행 조건을 지킵니다. 필요한 원본 출력 보정 → 버전에 맞는 독립 Print PDF와 Native/fresh WASM의 관련 전쪽 raw90% 이상·쪽수/내용/직접 판독 확인 → 독립 기대값에 따른 검사 변경 순서로 진행합니다. 90% 미만·측정 불가를 검사 삭제나 기대값 완화로 해소하지 않습니다.
- 등록·PASS·시각 일치·직접 판독을 분리합니다. 조건부 테스트를 수집하지 않은 목록이나 좁은 focused PASS를 전체 검사/문서의 완료 증거로 쓰지 않습니다. 자료가 없으면 미검증이며 적합/해결로 세지 않습니다.
기준 문서:
작업 단계가 바뀌면 현재 권위 문서를 다시 확인합니다. 이 이슈를 해결하려고 지침이나 문턱을 완화하지 않습니다.
전수 조사 범위
- 소스
.rs내부 검사:src/**/*.rs,crates/*/src/**/*.rs, 그 밖의 workspace 소스에 포함된#[cfg(test)],#[cfg(all(test,...))],cfg_attr와 Native/WASM·feature/target 조건부 검사. - 전체
/tests/**: 루트와 각 crate의 integration 파일,tests/cases/이외의 하위 모듈, helper, fixture, baseline/golden과 생성기. - 간접/실행 경로: 인라인·외부
mod,#[path],include!, 매크로 생성 테스트, 생성suite/manifest, 상수·다른 파일 helper·공통 corpus·동적 파일 순회. - Studio/Node/E2E와 도구: 실물 문서의 위치·영역·출력을 정답으로 고정하는 검사 및 해당 데이터를 실제 소비하는 경로.
- 수집과 실제 등록 대조: Native·Skia·feature/target별 조건을 원장에 기록하고, 미수집 경로를 PASS나 삭제 대상으로 간주하지 않음.
다른 작업에서 진행 중인 문서는 현재 검사 등록·담당 범위부터 확인하고 무단 복원하거나 중복 보정하지 않습니다. 이번 감사에서 필요한 기대값·보호 동작·출력 보정에 집중하며, 관련 없는 문서의 전체 피델리티 개선으로 확대하지 않습니다.
해결 방안과 진행 순서
1. 전수 조사와 판정 원장 확정
현재 base/head와 권위 문서를 고정하고, 검사 함수·assertion·입력·페이지·간접 호출·실제 실행 등록을 연결합니다. 각 항목을 다음 중 하나로 근거와 함께 분류합니다.
| 분류 | 조사·처리 방향 |
|---|---|
| 현행 지침에 맞는 관계/원본 단위 계약 | 정상 보호를 유지하며 수정 대상에서 구분 |
| 자격을 충족한 완료 페이지의 독립 px 검사 | 페이지별 raw·직접 판독·기대값·좌표계·±2px·관계 보호 요건 확인 |
| 지침에 맞지 않는 절대 좌표·고정 영역·golden | 잘못된 단언은 제거·대체하고, 독립 근거에서 확인한 유효한 검증 목표를 의미/관계 검사로 보호. px 검사는 페이지별 자격과 독립 기대값을 실제로 충족한 경우에만 구성 |
| 현재 출력/같은 구현에 종속된 기대값·잘못된 기준 | 독립 근거에 맞게 기대 계약을 재구성. 원 기대값이 맞으면 구현을 보정 |
| 증거 부족·입력/쪽/글꼴/실행 연결 불명확 | 필요한 자료와 실제 실행을 확보하고 재판정. 미검증을 해결로 세지 않음 |
원장에는 파일·함수·구문, 입력/PDF SHA, 저장 제품·Print engine/job, source/build·실제 글꼴/출력 경로, 해당 쪽 Native/WASM raw·TSV, 의미 분류·판정 이유, 변경/보존 범위와 전후 증거를 기록합니다.
2. 조사 결과 이슈 업데이트
검사 숫자 목록과 실제 부적합 건수를 구분하고, source 내부·integration·스크립트 경로별 결과, 조건부/동적 경로와 남은 미검증을 공개합니다. 누락/미분류가 남았는데 전수 조사 완료라고 표시하지 않습니다.
3. 부적합 검사 보정 및 issue_8232 새 명명
기존 검사의 동작을 그대로 보존하는 조건은 두지 않습니다. 기존 기대값·좌표·판정 방식 자체가 잘못됐다면 독립 근거에 따라 수정하거나 제거합니다. 내용 보존·순서·소속·저장 계약 등 근거가 확인된 검증 목적은 적절한 검사로 유지하거나 대체합니다. issue_8232 이름 변경은 실제 보정 항목의 추적 방식이며, 잘못된 기존 판정을 보존할 의무를 뜻하지 않습니다.
- 현행 지침과 독립 근거를 기준으로 기존 검사를 재작성합니다. 기존 검사 형태·단언·동작의 유지를 전제로 하지 않습니다. 부적합한 기대값·절대 px 단언은 삭제·교체하고, 필요한 검증 목표는 현재 지침과 독립 기준에서 다시 정합니다.
- 재작성한 검사에는
issue_8232기준의 새 파일명·함수명을 사용합니다. 공용 helper·module·suite manifest·생성 경로·스크립트/E2E 호출도 새 구성에 맞게 갱신하며, 기존 이름을 보존하기 위한 wrapper나 중복 등록은 만들지 않습니다. - 파일 하나에서 정상 검사를 공유한다면 그 보호를 유지하며 필요한 단위로 구성합니다. 정상 검사까지 이름만 바꾸기 위한 대량 수정이나 무관한 삭제를 하지 않습니다.
- source-side 검사에는 지침에 맞는 자동 수집·수용 위치를 사용하고, 생성suite를 손으로 편집하거나 CI에 불필요한 개별 호출을 추가하지 않습니다.
- 필요한 구현 보정은 공통 규칙과 실제 소비 경로에서 수행합니다. 기대값·baseline·허용폭 완화, skip/ignore 추가, 입력/PDF 교체·영역 축소로 실패를 감추지 않습니다.
4. 실제 재검증과 완료 판정
독립 근거로 유효성이 확인된 결함 반례를 수정 전에는 검출하고 수정 후에는 해소하는지 확인합니다. 기존 검사가 잘못된 출력을 정답으로 고정했다면 그 단언 자체를 먼저 보정 대상으로 판정합니다. 새 의미 검사와 정상 대조군을 실제 실행합니다. 영향 범위의 Native/fresh WASM 전쪽 TSV·쪽수·내용 소속·대표 review/overlay 직접 판독을 다시 연결합니다. 이름 변경 후에는 실제 등록 목록에서 이전 이름 잔여·중복·누락이 없는지 확인하고 필수 게이트를 수행합니다.
조사·검사 수정·출력 개선·시각 검증을 각각 보고합니다. 전체 필수 항목을 확인한 뒤 PR 준비 단계로 넘어가며, PR은 사용자 후속 지시를 따릅니다.
현재 진행 상황: 80차
audit/8232-px-regressions-20261025 / 01ced3d42724
- 제외: 삭제 Rust 3(4그룹), 신규 Rust 95/48파일·JS callback1(schema2)·관련 helper. 암호 E2E 유지·새 sample16 제외; 신규는 점검/PASS 제외.
- 대장 21,334그룹/2,501파일. 직접 9,480함수·Rust 6,358검사/834파일. 의미 8,969·file-scope 9·근거 511·미분류 11,845.
- 범위 정정: 검색 밖 기존 Rust 2,887·스크립트 5,630후보를 미분류에 연결했습니다. workspace 제외 vendor 6,496은 별도이며 등록·매크로·동적 경로 확인은 남습니다.
- 6778/7쪽 Native 99.99786%; 현재 WASM·탭 root 6개 자격 확인 중.
- 73차 미해결: basic2007 2/3쪽 65.96489/99.82268%, PrEP 69/70쪽 **99.98404/100%**입니다. basic 2쪽 표·본문 상향과 고정 영역 선택자 2검사가 남습니다. PrEP 독립 괘선 16개를 대조했으나 현재 fresh WASM·전쪽 자격은 pending입니다.
- 63차 고정 핀 3개: 메모리 합성 x48.32, 정상 empty 3입력의 표/End 위치, 정상 width 3입력의 PDF x/y 배열입니다. 14입력 Native는 최저 73.60167%·90미달 4쪽·98미달 14쪽, 대표 4쪽 review/overlay 판독입니다. width 최저 95.31710%, empty 최저 93.22155%로 핀 자격이 없습니다. overlay3종/border-off 미달 gate의 exit1을 보존하고 완료 캡처를 재실행하지 않고 TSV를 수집했습니다. 원 위치/내용 관계를 남겨 보정하며 fresh WASM·시각 통과는 아닙니다.
- 62차: 원 CFB/XML로 pending 4건 해소입니다. 공백 폭 ±1px는 Native 96.27348%, 밑줄 ±1px는 Native 전 2쪽 100%/fresh WASM 미확인입니다. 같은 검사 본문이 Screen SVG·선 defs 숨김·부모 200px 이동 모두 PASS했고 rsvg는 숨김/이동을 확인했습니다. 표시/CTM 검사의 한계이며 제품 선 누락은 관측하지 않았습니다.
- 61차: 원 XML 1,466줄 보존입니다. 목록 머리 43쌍의 PDF ±0.2CSSpx는 재작성 대상입니다. Native 전 4쪽 raw100·직접 판독, fresh WASM 미확인입니다. raw100은 RGB 동일성이 아닙니다.
- 60차: 합성 pending 1건 해소입니다. 행렬 265행/고유ID264개와 종료 코드 8개를 0으로 바꿔도 각각 9검사 PASS입니다. 원 tree 265개 ID/scan_page는 정상이며 성적표 root 2개가 대상입니다. 제품 exit 오류/누락 관측은 아닙니다.
- 58차: 소스/입력은
2546c8b2ab이후 불변입니다. 점 1,435개 defs/scale 2도 4검사 PASS·점 래스터 10,174→0입니다. 스타일 40→2·12→2·13→2 손실도 5검사가, MCP 추가 content 카나리도 no-echo 3검사가 놓쳤습니다. 제품 손실/암호 유출 관측은 아니며 대상 9그룹입니다. - 57차 미해결: casebook 1,480행/고유ID1,472개·276CU→275CU도 PASS입니다. Rust deferred10이름×5형태는 제외, Python의 없는 중첩 Path 2개만 필터 차이이며 실제 재유입 관측은 없습니다.
- 제품/검사 수정 0·개명 0, 감사·보정 미완료입니다. 과거 raw/PNG는 새 head 통과가 아닙니다.
동기화 전 누적 조사 — 아래 수치와 시각 결과는 이전 head의 이력
조사 head: 238de6de41a208648f4ade6b494fe433a81c1fce, 브랜치 audit/8232-px-regressions-20261025.
-
추적 코드 6,253파일과 Native 실제 등록 11,639건을 연결했습니다. 직접 정의/조건부 attribute 11,507건 + 매크로 생성 132건이며 등록 경로 미연결은 0건입니다. 이는 PASS 수가 아닙니다. 기본 구성에서 제외되는 조건부 정의 223건도 별도 원장에 남겼습니다.
-
통합 후보 원장은 11,945함수/helper 그룹·2,138파일입니다. 최초 숫자·기하 후보 2,707그룹과 렌더 생성 경로, 기하 단어 없는 숫자 단언·중첩 helper·기대값 생산 helper를 함께 대조합니다. 숫자 후보에는 byte·문자 개수·HTTP/프로토콜·원본 단위도 있으므로 위반 수와 구분합니다.
-
현재 원장의 미분류 상태는 3,507그룹입니다. 별도 메모만 있어 함수별 판정이 끝나지 않은 316그룹(의미 메모 104·파일 맥락 212)도 남아 있어, 분류 미확정은 합계 3,823그룹입니다. 직접 수치 의미를 판정한 뒤에도 외부/중첩 helper·독립 근거·조건부 수집·실제 실행 연결이 남은 항목이 있습니다. 파일 메모나 한 함수의 직접 분류를 호출 경로 전체의 적합 판정으로 확대하지 않습니다.
-
확인된 문제에는 98% 미만 페이지의 절대 위치 핀, 잘못된 Recipe 축소 상태를 정답으로 요구하는 검사, 현재 Field/URL 보존을 검출하지 못하는 옛 Hyperlink 드롭 검사, renderer와 다른 상대 글자 크기 전제가 포함됩니다. 각각 원 해결·실제 통합·후속 보정과 독립 반례를 추적하고 있습니다.
-
추가로 HWPX→HWP 어댑터의 18그룹과 쪽수 helper 3개는 독립 계약 확인이 필요합니다. “oracle”이라는 이름과 달리 한컴 저장 HWP를 현재 rhwp로 다시 조판한 쪽수이며, 실패 시 현재 HWPX 쪽수로 fallback합니다. 독립 Print 정답으로 간주하지 않습니다.
-
시각 증거 통합 목록은 194조건·각 backend 3,078쪽입니다. 과거 capture의 코드 무변경 재사용과 현재 생성 증거를 구분하며, 목록의 수치 자격만으로 검사 적합이나 시각 완료를 판정하지 않습니다.
-
참고 이슈 #8266은 LineSeg 없는 혼합 TAC 도형·글상자의 기존 base 겹침입니다. overfill45쪽과 별개로 추적합니다. 해당 PR7694 fixture와 참조는 현재 감사 head에 없어 외부 보고로 연결하며, 독립 재검증·해결 건수에는 넣지 않습니다.
-
현재 추가 확인된 보류:
table_giant_cell_overfill.hwpx45쪽 Native47.62515/WASM47.62403%. 기존1/2쪽 검사PASS와 구분하고 기대값 완화 없이 구현 원인을 조사합니다. 독립 근거 pending499개이며 전체 감사는 미완료입니다. -
기존 ±2CSSpx 검사 중 2023년9월 미주 HWP/HWPX의 14쪽은 각각 독립 Print 좌표·Native/fresh WASM 양쪽 raw 98% 이상·직접 확대 판독·원본 소유/내용 관계를 대조했습니다. 두 기존 caller를 각각 exact 실행하여 각각 1 PASS / 0 FAIL을 확인했습니다. 이는 해당 제목 위치 검사 유지 근거이며 전체 suite·CI 또는 문서 전체 글리프 일치의 완료가 아닙니다. 다른 쪽 overflow 진단도 보존했습니다.
-
기존 ±2CSSpx 검사 중 78494 법령 원본의 21쪽 제목은 독립 Print 문자 원점, Native/fresh WASM 양쪽 raw100%, review/overlay와 확대 판독, 원본 제목의 소속·내용·단일 출현·부모 종료 뒤 배치를 대조했습니다. 기존 모듈5개 검사는 5 PASS/0 FAIL이지만, 줄간격을100%로 바꾼 복제의 고정74쪽 근거와62쪽 overflow 진단 대조는 별도로 남아 있습니다.
-
추가로
page5_inner_11x3_char_overlap_marker_advances_one_box가 실제10번 겹침이 있는22번셀이 아닌 일반 숫자4의19번셀을 검사함을 확인했습니다. 원 해결6c887fc7의 검사 본문과 입력은 현재까지 동일합니다. 기존 검사는23.9px로PASS하지만 의도한 두PUA/한글자 상자 전진을 보호하지 않습니다. 허용폭 조정이 아니라 실제 원본 소유자·payload·논리offset 관계를 검사하도록 보정해야 합니다. -
#7490의 정확한20444/표폭12000HU 편집을 현재 라이브러리로 재생성한 HWP는 독립 Print 입력과 바이트 동일했습니다. 각각 전1쪽 Native/fresh WASM100/100%, 독립 문자 원점/셀clip 경계·직접 확대 판독·기존 내용/소속 관계를 확인해 기존 ±2px 검사2개의 유지 근거를 확보했습니다. 다른 prefix/growth 편집과 파일 전체의 완료로 확대하지 않습니다.
-
PDF 가져오기 두 파일의 검사 65개·helper 74개를 직접 분류했습니다. 별도 원본 PDF 16개의 선폭·글자 폭·회전 행렬을 조판 결과와 독립적으로 읽었습니다. 정식 Native 집중 실행은 65 PASS / 0 FAIL이며, 필터로 제외한 455건은 실행 결과에 합산하지 않습니다. 회전 문자 첫 기준선의 절대 좌표 검사는 현재 Native/fresh WASM 98% 자격·저장 경로별 직접 판독 연결이 필요해 미검증으로 남겼습니다.
-
독립
tools/pdf-ir-poc의 검사 38개·helper 13개도 직접 분류했습니다. 자체 Cargo workspace라 루트 nextest 등록과 구분하며, 실제 PDF의 표 15셀·그림 소유를 요구하는 2개는 독립 원본 및 해당 crate 실행 연결이 남아 있습니다. 작성된 기하의 위상·상태·원본 단위 계약을 실물 페이지 px 핀과 혼동하지 않습니다. -
그림 삽입 파일의 검사 19개·helper 12개를 확인했습니다. 75HU/px 환산과 용지 경계는 원본 CFB
PAGE_DEF를 직접 읽어 CLI dry-run과 대조했습니다. 명시한 그림 크기·위치의 원본 HU 계약을 잘못된 px 핀으로 취급하지 않습니다. 다만 HWPX 자료가 없으면 그냥 반환하여 저장 결과를 검증하지 않고 PASS하는 경로는 보정 대상으로 기록했습니다. 현재 자료 존재와 이 검사 전체 실행 여부는 구분합니다. -
MCP의
boolean_false_does_not_inject_a_presence_flag는 helper가 이미 파싱한 본문을 반환했는데 다시 외부result.content를 읽어 빈 문자열을 검사합니다. 실제 서버의 정상 false 응답과 반대 true 응답을 모두 통과시키는 반례를 확인했습니다. 현재 제품의 dryRun 실패가 아니라 기존 검사의 검출 대상 오류이며, 원 PR fix(mcp): 선언만 되고 CLI 에 닿지 않는 입력 인자 10건 배선 — dryRun:true 인데 문서가 덮어써진다 #3724 → 누적 e22e60d → 통합 #3742의 실제 반영도 확인했습니다. -
[layout] 문단 끝 자리차지 표의 앵커 줄 보정 누락으로 본문과 겹침 #6950 원본 HWPX 전 3쪽은 검사 함수의 기본 모드에서도 Native/fresh WASM 최저 99.13921%/99.13741%, 누락·쪽수 차이 0입니다. 3쪽 raw 99.79849%/99.79842%, 독립 PDF 괘선 307.8226666667 CSSpx와 직접 확대 판독을 연결했습니다. 기존 307.823±0.6px 검사는 원본 1541HU 정렬 공간·셀 포함·내용 소유를 함께 보호하며 현행 ±2CSSpx로 보정할 대상입니다. 기존 정식 Native 27개 검사는 모두 PASS이지만 파일 전체의 지침 적합 완료로 세지 않습니다. 2024 호환 모드와 기본 모드는 별도로 캡처·기록했습니다.
-
추가 14개 파일의 검사 158개·helper 101개를 직접 분류했습니다. PrEP의 원본 HU·표 분할 관계, Native 편집의 문자 주소, 링크/혼합 서식, 누름틀과 호스트 좌표 산술, 현재 raster crop/cache의 동등성을 실물 페이지 절대 px 핀과 구분했습니다. 파일 전체를 읽었다는 사실을 전체 production 호출 폐쇄나 실행 PASS로 확대하지 않습니다.
-
#5788의 TAC 표 간격 검사는 고정 y380..500 영역으로 표를 선택한 뒤 raw
y속성만 읽습니다. 현재 SVG의 실제 다음(주)글줄은translate(...,484.893333)로 배치되어 건너뛰고, 뒤 표 본문 610.346667px을 선택하여 간격 145.52px로 통과합니다. 본문<text>를 모두 제거한 반례에서도f64::MAX기본값 때문에 통과했습니다. 고정 영역 선택·좌표 소비·대상 누락 미검출을 함께 보정해야 합니다. 원 PR fix(renderer): 버그헌트 배치 r5 — 신규 렌더러 이슈 4건 (#5789 #5793 #5787 #5788) #5829 → 실제 통합 feat: 열린 PR 13건 통합 검토 #5844/1b8c39b6을 확인했고, 해당 테스트의 도입/현재 SHA는 같습니다. 이 결과는 현재 SVG에 대한 기존 predicate 반례이며 제품 mutation이나 새 정식 검사 FAIL→PASS가 아닙니다. -
RowBreak 두 원본의 독립 PDF는 각각18쪽임을 확인했습니다. 캡션→글상자 간격 비율은 직접 HWPX 글줄의1000→11564HU/LH1100HU에서 확인했습니다. 중첩 글상자의 로컬 글줄 축을 host 축으로 혼합하지 않습니다. 현재 전쪽 Native/fresh WASM 근거가 없는 고정18쪽 검사는 시각 자격 미검증으로 남겼습니다.
-
원장 연결 검사에서 직접 검토 기록78개가 초기 숫자/렌더 검색에 없다는 이유로 빠진 것을 확인해 집계를 보완했습니다. MCP 응답 선택 오류도 이에 포함됐습니다. 전체 직접 판정5,197개가 원장에 모두 연결됐으며 이 추가는 새 결함이나 실행 PASS 증가가 아닙니다. 이 연결 보완을 미분류 감소나 실제 보정으로 세지 않습니다.
-
다음 8개 파일의 검사 55개/helper 46개를 직접 분류했습니다. 새 전쪽 근거로
table-in-tbox.hwp의 두 쪽이 Native92.05166/92.55344%, 동일 코드 fresh WASM92.02897/92.59857%임을 확인했습니다. 해당 페이지의 절대 x/y·고정 폭/영역 선택은98% 자격이 없으며, 현재 엔진 잔차334.73을 독립 정답으로 고정한 검사도 보정 대상입니다. 첫 쪽 외곽선이 로고 위에서 닫히는 차이를 확대 판독했으므로90% 이상만으로 시각 완료를 선언하지 않습니다. -
한국어 가정통신문은 두 쪽 Native98.57113/93.68608%, WASM98.99134/93.89238%입니다. 중국어는80.87359/93.76267%,81.26138/93.92760%이며1쪽은 canonical capture/TSV 모두exit1·re_review_required입니다. 각 원본 2/2쪽·누락0이고12개 review와 주요 overlay·2배 확대 9개를 판독했습니다. 원 #6712의 그림 옆 흐름/예방수칙/2쪽footer는 보존돼 있으므로, 당시3→2쪽 결함이 되살아났다고 단정하거나 정상 관계 검사를 일괄 제거하지 않습니다. 현재 시각 미달과 검사 변경의 선행 조건을 구분합니다.
-
CFB 원본을 rhwp 모델과 독립적으로 읽어 자간10%·글자 크기1600HU·8글자의7개 내부 간격, Chinese 저장 글줄1760HU 전진, Korean 어울림 column5297HU, 셀 안 여백850HU/지정bit를 확인했습니다. 이 원본 단위·상대 정렬 계약을 px 핀과 혼동하지 않습니다. 관련 기존 Native 33개는33 PASS / 0 FAIL(실행 3.574초)이고 선택한 target의1,285개는 미실행입니다. 이 통과를 지침 적합/전체 회귀/시각 완료로 세지 않습니다.
-
18차에는 추가 16개 파일의 검사 196개/helper 93개, 총 289개 함수를 직접 분류했습니다. EPS의 작성 BoundingBox·변환 행렬, 구조 level/저장 break bit, 논리 검색 주소와 CLI 종료 코드를 실물 페이지 px 핀과 구분했습니다.
render-diff기본 임계값 1px는 API 계약이므로 페이지별 ±2px 지침을 이유로 일괄 변경하지 않습니다. -
기존 정식 검사 3개를 정상 CLI/잘못된 응답으로 각각 실제 실행했습니다.
capabilities --search가 exit1이어도 PASS하고, 읽기 실패 검사에서 usage exit2도 PASS하며, 표 검색의 실제 cell 주소 6개를 모두 제거해도 PASS했습니다. 현재 제품의 실패가 아니라 기존 검사의 검출력 결함입니다. 정상/반례 모두 기존 검사 PASS라는 뜻이며 새 검사 FAIL→PASS로 보고하지 않습니다. -
redact/sanitize의 자료 누락 반환과document_text의 누락 text 기본값을 추적했습니다. 실제 읽기 전용 응답은 3쪽/156글자이지만, 기존 helper는 서로 다른 누락/null 응답을 같은 빈 본문 값으로 바꿉니다. 이는 source predicate 대조이며 실제 정식 검사에 변형 응답을 주입한 증거가 아닙니다. 최초 주입 시도는 컴파일 시 CLI 경로 때문에 proxy가 호출되지 않아 무효로 구분했습니다. -
18차의 289개 중 보정 후보 20개는 helper/caller를 포함한 함수 기록 수입니다. 같은 원인의 호출들을 별도 결함 20건으로 세거나 전수 조사 완료 수로 승격하지 않습니다. 당시 직접 판정 5,564개가 원장에 모두 연결됐고 누락 0입니다.
-
이전 집중 실행 producer가 캐시된 바이너리 경로에서 SHA를 읽은 증적 오류를 정정했습니다. 실제 실행 요약과 SHA 출처를 분리했고, 기존 27개 검사는 현재 metadata의 바이너리·source 해시를 고정하여 다시 실행해 27 PASS/0 FAIL을 확인했습니다. 지난 33개 실행의 현재 바이너리 연결 근거도 정정했으며, 당시 receipt는 정정 전 snapshot으로 보존했습니다. 이 정정은 제품/검사 보정 완료가 아닙니다.
-
19차에는 표 분할·그림 회피·셀 서식·layout-anomaly·Native 접근성 5개 파일의 검사 80개/helper 55개를 직접 분류했습니다. 현재 수집 metadata의 바이너리 경로·실행 전후 SHA를 고정해 실제 기존 Native 80개가 모두 PASS(38.803초, 선택 target의 954개 skipped)함을 확인했습니다. 이 통과는 시각 수용이나 지침 적합 완료가 아닙니다.
-
CFB/XML을 독립적으로 읽어 survey의 64680→64462HU, CBTA 1200/6960HU·여백282HU, 1480000의1417HU, 면적조서2362HU, 전직 면제 표7940/18898HU를 확인했습니다. CBTA 원시 문단 ordinal1132/1142와 모델 pi1133/1143은 달라서 처음에는 선택에 실패했으나, CTRL_HEADER42바이트 전체·instance ID·행열을 정확히 대조해 대응을 확인했습니다. 네 현재 caller에서 선택되는 셀도 유일하며 기대 표 소유임을 확인해, 원본 크기 계약1건의 수치 의미 pending을 해소했습니다. 작은 0.5px 허용폭이라는 이유만으로 원본 HU 계약을 바꾸지 않습니다.
-
같은 코드의 Native/fresh WASM로 4조건·각 backend57쪽을 새로 비교했습니다. 어울림 그림 원본11쪽은 최저98.22063/98.22041%, 누락0입니다. 70833 기존 Print18쪽은17.30667/17.08658%로 양쪽6쪽 미달입니다. 새 한컴2020 Print18쪽에서도17.62349/17.42335%이고 미달은 Native5쪽/WASM6쪽입니다. 면적조서의 새 Print10쪽은50.85095/50.84211%, 양쪽5·6쪽 미달입니다. 모든 조건의 전체 쪽수는 맞지만 미달 gate는 유지합니다.
-
새 Print2건은 입력 저장 제품2010/2020을 확인한 뒤 MCP engine2020·timeout1800초·실제한컴11.0.0.9136·direct DLL host·Print method0/one-up으로 생성했습니다. 기존 PDF를 교체하지 않았습니다. 대표 review/overlay16개를 판독해70833의 표 조각/후속 본문 위치와 면적조서의 행 높이 차이를 확인했습니다. 특히 독립 PDF9쪽의 선행 bullet이 현재 Native10쪽에 있어 폰트 차이만으로 설명할 수 없습니다. 이는 source 수정 전 현재 base의 관측이며 새 후보의 회귀로 보고하지 않습니다.
-
19차 당시 직접 판정5,676개는 모두 원장에 연결됐고 누락0이었습니다.
cell_box의 다른 caller 소유, 닫는 선100HU·내용+4px/선언+30px 같은 미확인 기준과 미분류4,385개를 계속 확인합니다. 전쪽 수치만으로 새 절대 px 검사 자격을 승인하지 않았습니다. -
20차에는 portable glyph geometry·표 대각선·저장 글줄 이탈·PDF 합성 굵게·glyph-band 진단의 6개 파일을 읽고 검사 62개/helper 40개를 직접 분류했습니다. f32 범위·decimal wire의 크기 소실·원본 HU·작성 기하와 실물 페이지 절대 px 핀을 구분했습니다. 원본 HWP에서 제목 셀 5개의 3928HU를 직접 읽었고, HWPX의 1020/13423HU baseline 차이도 XML에서 확인했습니다. 따라서 52.4±0.1px와 165.37±0.05px를 숫자 크기만으로 제거하지 않습니다.
-
반면 대각선 검사의 첫/후속 제목행 Y=225.3/113.4±0.1px는 절대 페이지 위치입니다. 정확한 HWP와 대응 Print PDF 전 6쪽을 새로 비교한 결과 Native 최저40.01798%/fresh WASM40.45121%, 양쪽 전6쪽 미달이며 누락·쪽수 불일치0입니다. 현재 소스 무변경 base의 관측이고 대각선 복원 자체의 재발이라고 단정하지 않습니다. 1·6쪽 review/overlay를 직접 읽었으며 마지막 쪽의 시작 내용·표 끝·뒤 비고 위치 차이를 확인했습니다. 이 조건에서는 기존 고정 Y 핀의 자격이나 관계 검사 변경 완료를 승인하지 않습니다.
-
같은 실행의 합성 굵게 HWP는1/1쪽, Native99.94520%/fresh WASM99.91276%입니다. 양쪽 review/overlay에서12행의 내용·순서를 확인했지만 WASM의 굵게 획과 새굴림의 글리프 차이가 보여 전체 시각 수용은 보류합니다. 현재 font catalog에 New Gulim face가 없는 사실도 확인했습니다. 이름/서식 보존 검사와 실제 글꼴 소비의 정상 여부는 다릅니다. 수제 HWPX는 README가 별도의 위치 조건임을 명시하므로 이 HWP Print 결과를 HWPX의 자격으로 재사용하지 않습니다.
-
기존 정식 Native62개는 현재 metadata의 실제 바이너리 경로·실행 전후 SHA를 고정하여62 PASS/0 FAIL(요약0.478초, 선택 target의1,210개 skipped)을 확인했습니다. 테스트 PASS를 위 시각 차이의 해소로 세지 않습니다. 직접 판정5,776개가 모두 현재 원장과 source SHA에 연결됐고 누락0입니다. 원장은10,450그룹이며 미분류4,336개·독립 근거 pending451개 등 미완료가 남아 있습니다.
-
21차에는 TAC 재조판 표·셀 속성/리사이즈·Skia host surface·진단 음성 대조군 4개 파일의 검사36개/helper32개를 직접 분류했습니다. 이 중6개는 이전 기록을 보완한 것이므로 고유 직접 판정은62개 늘었습니다. 원본 CFB/XML에서 표43190/17932HU·위치4/22133HU·셀20 폭5951HU·padding2834/2834/0/0HU·저장 글줄0/2/4를 확인했습니다. Skia 지정 pixel은 명시 변환/클립의 안팎을 독립 수식으로 확인한 합성 계약입니다. 이 원본/작성 기하를 실물 페이지 잠정 좌표 핀으로 일괄 삭제하지 않습니다. 보상 resize 후 폭>90px는 편집 변화의 유효한 보호 범위를 추가 조사합니다.
-
#7419의 원 PR #7433은 superseded CLOSED이고 실제 통합은 fix(renderer): 저장 줄 없는 TAC 표의 성장과 중첩 이월 보정 (#7419) #7951/552514f423ec91f1b7171f6e6b0882a4efe034f2입니다. 원 기여와 메인터너의 선언 높이 추정 제거·중첩 줄 소유·분할/이월 보정을 구분했고, 현재 HEAD의 조상임을 확인했습니다. 기존13입력·19쪽을 같은 독립 Print와 현재 코드로 새 캡처하여 Native/fresh WASM 모두 전쪽100%, 쪽수 일치·미달/누락0을 확인했습니다. 실제 capture/TSV gate와 source/build·입력/PDF 해시를 연결했으며 과거100%를 재인용한 값이 아닙니다. Mac WASM은 web/pkg/no-opt 로컬 대체 빌드이고 Docker 최적화 통과가 아닙니다.
-
기존18쪽48핀의 기대 좌표를 PDFium의 독립 문자 원점으로 다시 읽었습니다. 저장 기대값과 최대 차이는0.000040823CSSpx이며 현재 SVG도±2px 안입니다. 해당 text의 조상 transform이 없고 실제 제목 셀/후속 본문 소유와 대응함을 확인했습니다. Native/WASM 전38쪽 중 원 PNG와 PDF PNG가 함께 바이트 동일한 조건만 묶어28고유쌍의 review/standalone overlay56개를 직접 읽고, 나머지10쪽은 producer·양 PNG SHA로 판독을 연결했습니다. 제목·자식 줄·개행/폭 부족·여백·통째 이월·뒤 본문의 위치/순서를 확인했고 미세 glyph raster 잔차는 관용100%와 구분합니다. 기존 핀의 좌표/시각 자격은 확인됐지만 파일 전체 production 호출 폐쇄·전체 감사 완료로 확대하지 않습니다.
-
정식 Native+native-skia 집중35개를 현재 metadata의 바이너리 경로·실행 전후 SHA 고정으로 실행해35PASS/0FAIL(Summary3.932초, 선택 target769skipped)을 확인했습니다. 추가로 읽은 chemical 진단 음성 대조군1개는 이35개 실행에 넣지 않았습니다. 직접 판정5,838개가 원장/현재 source SHA와 모두 연결됐고 누락0입니다. 원장은10,481그룹, 미분류4,305개·독립 근거 pending451개이며 실제 검사 수정·개명은 여전히0건입니다.
-
제품·테스트 수정·이름 변경은 아직 0건이며 PR은 생성하지 않았습니다. 전수 조사와 독립 판정, 부적합 검사 실제 보정·새 명명·등록/호출 갱신·필수 재검증을 계속 진행합니다.
-
22차에는 대각선·각주 예약 두 파일의 검사33개/helper52개, 총85함수의 직접 의미를 확인했습니다. 이전20개 기록과 중복되므로 고유 직접 판정은65개 증가한5,903개이며 전부 현재 원장/source SHA와 연결됩니다. 원장은10,514그룹이고 미분류4,281개·독립 근거 pending472개 등 미완료가 남습니다. 실제 검사 수정·개명은0건입니다.
-
각주 파일의14개 현재 test root에서 함수 포인터와 매크로 token-tree 식별자까지 포함한 보수적 로컬 도달성을 확인했습니다. private helper23개(최상위20개/중첩3개)는 그 root들로부터 미도달입니다. 이 안에 남은 p31/32·90·121·126·156 등의 절대 PDF 좌표를 현재 활성 검사 실패나 실행 PASS에 합산하지 않습니다. 동명 nested helper의 과대 연결을 허용한 분석이므로 나머지24개 helper 모두의 실제 실행을 입증한 것은 아닙니다. 전체 repository 동적 호출 폐쇄·안전한 삭제 완료도 별도입니다.
-
활성 대각선 검사에서는
y<350,x130..155/y140..150의 고정 화면 영역과 선 길이 구간 선택을 확인했습니다. 선의 source-cell 소유·transform·독립 Print 자격을 추가 대조해야 합니다. 작성 셀4195×1282HU의 치수 관계와 절대 화면 원점 선택을 구분하며, 길이 임계값만 보고 현재 출력 결함 또는 적합 완료로 판정하지 않습니다. 원본 대각선 표는3×4이고 sample3/4/5는10×10임을 직접 XML/CFB로 확인했습니다. -
활성 각주 대조군의73..84/70..85쪽 제한 탐색은 실제 내용/각주/예약 관계를 검사하지만 범위 밖의 추가 소유·중복 검출은 아직 확인해야 합니다. 원본 note240의 저장 vpos
[0,0,1172]와 caption1000HU는 XML을 직접 읽어 확인했으며 실물 절대 px 핀과 구분합니다. 기존33개 Native 검사는 실제 metadata/바이너리 전후 SHA 고정 실행에서33PASS/0FAIL(Summary10.150초, 선택 target478skipped)이었습니다. 이것은 기존 집중 실행이며 새 검사FAIL→PASS·전체 회귀·전체 시각 수용이 아닙니다. 이번에는 새 전체 캡처를 시작하지 않았습니다. -
23차에는 WMF mask·thumbnail CLI·legacy chart grid와 공용 chart probe 네 파일의 검사38개/helper54개, 총92함수를 직접 분류했습니다. 기존2개 기록 보완을 제외한 고유 직접 판정은90개 늘어5,993개/704소스 파일이며 전부 원장·현재 source SHA와 연결됩니다. 현재 원장은10,573그룹/2,107파일, 미분류4,250개·독립 근거 pending484개입니다. 제품/검사 수정·개명은 여전히0건이고 전수 조사 완료가 아닙니다.
-
원본 CFB의 내장
PrvImage17,256바이트를 직접 읽어 frozen CLI의 base64 복원 바이트·이미지 크기와 같음을 확인했습니다. 이는 원본 내장 preview 전달이며 현재 조판 PNG의 historical golden이 아닙니다. 차트 helper의 동적 재귀 corpus는 HWPX28종/HWP28종이고, ZIP의 OOXML28종을 production parser 없이 직접 읽어 계열 값을 확인했습니다. 4.3·12·56 같은 데이터/개수와 px 위치를 구분합니다. 별도 corpus/전체 차트 배치의 완료를 주장하지 않습니다. -
WMF fixture92,032바이트가 월간 수출입 HWP의
BinData/BIN0003.wmfraw-deflate 원본과 같았습니다. 작성 mask의(D XOR217) AND M XOR217항등식512경우와 source 장치 좌표·팔레트·50% 피복률 검사는 실제 페이지의 잠정 위치 핀과 다릅니다. 반면issue_6865_multibit_pattern_blit_is_still_painted는svg.contains("rop_pat")만 확인합니다. 현재 정상 production SVG의 visible 사각형2개를 모두 제거하고 defs만 남긴 분석용 반례에서도 이 predicate가 통과했습니다. 정의 존재가 실제 paint 보존을 검출하지 못하므로 보정 대상입니다. 제품의 실제 그림 실패나 formal 새 검사FAIL→PASS로 확대하지 않으며, 다른 문자열-only 대조군의 개별 의미는 pending으로 기록했습니다. -
위 세 정식 모듈/target은 현재 metadata38개 중 기존 ignored generator1개를 제외한37개가 실제 PASS/0FAIL(Summary0.824초, 선택 target481skipped)였습니다. generator/새 Print·전체 회귀·전체 시각 검증은 실행하지 않았고 원본·PDF·공유 target은 보존했습니다. 별도 px 자격을 무시하는 일괄 삭제/허용폭 변경 없이 감사와 독립 판정을 계속합니다.
-
24차에는 PDF frontend·테두리 행열 편집·중첩 표 합성 세 파일의 검사33개/helper35개, 총68함수를 직접 분류했습니다. 기존4개 보완을 제외한 고유64개가 추가됐습니다. source29개 PDF를 production parser 없이 직접 읽었고, periodic8종의 축별 stroke 구간 합집합 길이2480/2250/2150/2830/2955pt와0.5pt 선언 폭이 기존 기대값과 정확히 같았습니다. 이는 원본 중심선 extent 보존 계약이며 native style의0.8CSS 실제 pen 면적과 혼동하지 않습니다. 실제 셀 frame 포함·테두리 gap·상대0.5px 여유도 절대 페이지 핀과 구분했습니다.
-
issue_7998_pdf_table_composition::verify는 모델과 paint의 문자를 정렬해 비교합니다. 독립 PDF에서A는(48,265)pt,B는(118,265)pt의 서로 다른 자식 셀에 있습니다. 실제 IR에서 row0/col0의A와row0/col1의B를 교환한 뒤에도 현재 helper의 문자 multiset·표 개수·선 extent·포함·BEFORE/AFTER 관계 검사가 모두 통과했습니다. 원래 모델/paint도 통과했습니다. 이 helper는 source cell별 원문 소속 검출이 부족하므로 보정 대상으로 판정했습니다. 현재 제품의 원본 import 실패나 정식root 전체 mutation·새formal FAIL→PASS로 주장하지 않습니다. 별도 compound leaf-owner 검사는 cell별 문자열을 확인하므로 같은 약점으로 일괄 분류하지 않습니다. -
기존 PDF 정식 Native33개는33PASS/0FAIL(Summary0.542초, 선택 target775skipped)였습니다. 소스29개를 직접 읽은 사실과 현재 Native/freshWASM 전쪽 시각 완료는 구분합니다. inline2그림의85% baseline factor와 전체 caller의 source 소유/순서는 여전히 pending이며 과거 qualification을 현재 결과로 재인용하지 않았습니다.
-
25차에는 agent CLI·capabilities schema·scan의 세 파일, 검사40개/helper18개를 전체 직접 분류했습니다. 버전·exit code·정의 개수·byte수·작성 corpus·구간 커버·같은 호출의 fingerprint/undo 동등성을 잠정 페이지 배치 핀과 구분했습니다. 실제 정식 Native40개는40PASS/0FAIL(Summary2.718초, 선택 target774skipped)이며 Unix symlink 조건도 현재 Mac 수집에 포함됐습니다.24~25차 고유 직접 판정은122개 늘어 6,115개/709소스 파일이고 전부 현재 원장/source SHA와 연결됩니다. 원장10,630그룹/2,107파일, 미분류4,185개·독립 근거 pending487개 등 전체 판정은 아직 미완료입니다.
-
scan의field-01 고정3쪽 기대값은 원본SHA518cb939...와 oracle commit9d18eb5a의 입력 바이트 동일성을 확인하고, 독립PDF SHAec488080.../129,044바이트/3쪽에 연결했습니다. Creator는Hwp2022이며 파일명2020만으로 실제MCP engine/job을 추정하지 않았습니다. 같은 현재 소스의 hash고정 Native/freshWASM을 재사용해 PNG/TSV를 새로 생성했고 양쪽3/3쪽, raw100/99.99969/100%, 미달·누락·쪽수차이0입니다. Mac locked-wrapper web/pkg/no-opt 로컬 대체 빌드 재사용이며 새 Docker최적화 통과가 아닙니다. actual nextest CLI의 scan도3쪽을 보고했습니다.
-
위 field-01의6개 backend-page에 대해 canonical review/standalone overlay 총12개를 직접 읽었습니다. 표지·목차01..05·마지막쪽01.과 하단 장식의 해당 쪽 소속을 확인했고, 사진·글리프/색상 raster잔차는 남으므로 엄격RGB동일성으로 표현하지 않습니다. Native/WASM PNG는 모두 바이트가 달라 판독을 backend 간 재사용하지 않았습니다. 이것은 scan metadata의 현재 독립 쪽수 근거이며 새 절대px 테스트 추가·다른 caller 전체 적합의 완료가 아닙니다. 통합 시각 목록은116조건/각backend2,591쪽(과거 미달 포함)으로 늘었습니다. 제품/테스트 수정·개명은 아직0건이며 PR은 제출하지 않았습니다.
-
26차에는 shaping shadow context·atomic activation·logical caret 분할의 세 파일, 검사43개/helper40개(총83함수)를 전체 직접 분류했습니다. 기존8개 기록 보완을 제외한 고유75개가 추가돼 직접 판정은6,190개/710소스 파일이며 모두 원장/current source SHA와 연결됩니다. 원장10,676그룹/2,107파일, 미분류4,156개·독립 근거 pending489개 등 전체 판정은 아직 미완료입니다. 실제 검사 수정·개명은0건입니다.
-
실제 Native metadata43정의 중 기존 성능용ignored2개를 제외한41개가41PASS/0FAIL(Summary0.180초, 선택 target473skipped)이었습니다. shadow target의source모듈 include를 따로 확인했으며 이번 선택에서 그 안의 추가test 등록은0개입니다. CanvasKit/Native/SVG 등의 선택 보고서 검사를 실제 browser/각 backend 재생 통과로 표현하지 않습니다. 기존ignore를 추가하거나 완화하지 않았고WASM/capture를 새로 시작하지 않았습니다.
-
exact font3개를 독립 C HarfBuzz14.4.0·fontTools로 읽었습니다. Noto office의liga on/off20.488/20.504px·cluster/부분폭7.344px, AV9.464/9.320px·delta-0.144px, 옛한글 cluster/15.456px은 원본 정수font unit×10×0.8/UPEM에서 확인했습니다. 이런1e-9 수치는 실물 페이지의 절대 위치 핀과 다릅니다. 기존small tolerance를 일괄±2로 바꾸지 않습니다.
-
15개 독립 shaping조건 중 가변 Typography/wght650/opsz400은 C의UPEM scale44.456px와 기존Rust기대44.448px가 달랐습니다. 원본GDEF/GPOS의T/y pair base-65·variation-2.5와HVAR Tadvance650을 직접 읽었습니다. 현재Rustybuzz0.20.1의variation단계f32.round는-3이므로T582·run5556fontunits→44.448px가 되고, C관측은T583/고정밀scale582.5입니다. 원본·dependency 변환 규칙으로 설명되는 엔진 단위 계약이며 페이지좌표/현재검사오류로 단정하지 않았습니다. 실제NativePASS와 일치해 기대값·허용폭은 변경하지 않았습니다.
-
세로쓰기한/글의원본glyph bounds는(52,-58,885,826)/(50,-67,870,788), vmtx는advance1000/상단bearing54·92입니다. 작성1000HUfont에서각bbox크기11.10667×11.78667/10.93333×11.4px·상대top차이13.84px는독립적으로유도됩니다. 반면같은검사의절대x257.92/y132.986...원점은독립page/cell기준과현재Print자격이아직없어pending입니다. 과거qualified기록·현재PASS·fontbounds만으로완료판정하지않습니다. 고정JSON3375713/9161바이트의receipt도wire-cost계약과레이아웃의간접고정을분리해추가확인합니다. 같은현재호출의clear/rollback/ABA해시동등은historicalwholeSVGgolden과구분했습니다.
-
caret파일의도형·그림작성HU/16pixel크기와문자·논리slot·sourceoffset은화면위치핀이아닙니다. float0칸/inline·각주1칸/번호placeholder1칸을생산splithelper와독립적인작성anchor순회로비교하고본문/셀/머리말/각주·양저장·Enter/Page/Column/merge/paste/copy경로를확인했습니다. 공용check_split은head객체종류·위치는엄격히보지만tail은개수만보므로전체payload/소속보호로확대하지않습니다. 논리계약과검출범위를구분하며조사와필요보정을계속합니다.
조사 기록:
-
27차에는 글상자 LIST_HEADER·HWP3 변환 쪽수·외부 그림 주입·중첩 표 검색의 네 파일 전체에서 검사 39개와 helper 23개, 총 62함수를 직접 분류했습니다. 중복 없이 직접 판정 6,252개/714소스 파일이 원장과 현재 source SHA에 연결됐습니다. 원장은 10,699그룹/2,107파일이며 미분류 4,117개·독립 근거 pending 506개가 남아 있습니다. 전체 조사와 호출 경로 검증은 미완료입니다.
-
HWPX XML 2개와 원본 CFB 3개를 제품 parser 없이 읽었습니다. 각주 원본의 bullet 4개(❏/※/soft-hyphen/❍), style 14개의 langID 1042와 각주 style 11, 실제 paragraph MSB id, fn/gso 소속의 16/33바이트 LIST_HEADER와 33바이트 레코드의 후행 13바이트 0을 대조했습니다. 바이트 오프셋·논리 CU·원본 단위는 실물 절대 px 핀과 구분하며, 레코드 크기 존재 검사를 모든 owner의 대응 검증으로 확대하지 않습니다.
-
#554의 10개 입력에 대해 지정 독립 PDF의 36/64/64/16/16/16/64/35/74/30쪽과 기존 기대값이 모두 같았습니다. 같은 입력의 기존 paired catalog가 있는 2건과 나머지 8건을 구분했으며, 다른 저장 형식이나 PDF의 전쪽 증거를 재사용하지 않습니다. 실제 CLI의 그림·캡션 간격은 원본 offset/margin/LS의 HU 환산과 0.2px 직렬화 오차 관계로, 일괄 ±2px 변경 대상이 아닙니다. 쪽수만의 PASS는 전체 내용·분할·빈 쪽이나 현재 전쪽 시각 수용이 아니므로 필요한 자격은 pending입니다.
-
기존 정식 Native 검사 39개는 현재 metadata와 실제 실행 바이너리의 전후 SHA를 고정한 실행에서 39 PASS/0 FAIL이었습니다(Summary 6.022초, 선택 target 758 skipped). 이름에 wasm/CanvasKit이 있는 주입 검사도 이번에는 Native API와 plan을 실행했으며 실제 WASM/browser 재생으로 보고하지 않습니다.
-
검사 검출 범위도 반례로 확인했습니다. 분석용 source 복사본에서 외부 그림 rdb02.gif/s1.jpg 대신 별개 원본 oracle.gif를 공급해도 기존 root 9개가 모두 PASS였습니다. 실제 변형 영향은 key2 주입·3형식 순차 주입·3basename cache의 root 3개에 한정됩니다. 다른 6개는 영향이 없거나 원래 oracle를 읽으므로 9개 모두의 payload 검출 결함으로 세지 않습니다. 별도 복사본에서 모든 line_spacing_v2를 1로, 첫 bullet을 원문 ❏ 대신 A로 바꿔도 기존 synced/bullet 보존 검사 2개가 PASS였습니다. 단언이 nonzero·존재·개수만 보아 원본 값의 동일성을 검출하지 못하는 범위를 기록했습니다. 제품 그림 오류나 새 정식 검사 FAIL→PASS로 확대하지 않으며 정상 메타데이터·저장 계약까지 일괄 제거하지 않습니다.
-
분석용 driver의 첫 실행은 load_doc과 read_sample에 같은 read 표현이 있어 selector 검증에서 중단됐습니다. 이 실행은 반례 증거가 아닙니다. 원본 driver를 보존하고 read_sample 함수 안으로 선택을 한정한 최종 실제 실행만 사용했습니다. 정식 source/test·지침·CI 변경, 새 캡처나 MCP 출력은 없으며 보정·개명 0건, PR 미생성입니다. 잘못된 기존 판정의 유지 의무를 두지 않고 현재 지침과 독립 근거에 따라 재작성·제거·대체합니다.
-
28차에는 책갈피 추가·삭제, Native clipboard, HWP3 objtype3·수식 상자, OLE 차트 Contents의 네 파일 전체에서 검사 45개와 helper 37개, 총 82함수를 직접 분류했습니다. 고유 직접 판정은 6,334개/718소스 파일이며 모두 원장과 현재 source SHA에 연결됩니다. 원장은 10,745그룹/2,107파일, 미분류 4,081개·독립 근거 pending 507개입니다. 전체 판정·호출 경로 검증은 미완료이고 제품·테스트 보정·개명은 0건입니다.
-
책갈피의 8유닛 슬롯, raw 경계 27/37, 14개 scalar의 주소 배열은 UTF-16·탭·명시 control gap의 산술과 대조했습니다. 작성 도형 치수와 clipboard의 scalar/revision/byte capacity, 현재 호출의 snapshot·undo/redo 동등성은 실물 페이지 px 핀이나 과거 SVG golden과 구분합니다. HWP3의 100 hunit 문단 간격은 독립 사양의 1/1800인치로 환산하면 16/3 CSS px입니다. 문단 IR의 ×8 저장과 흐름의 절반 소비를 함께 추적했으며, 이 상대 이동 검사에 쓰인 1e-6을 근거 없이 ±2px로 완화하지 않습니다. 10pt 호스트의 160% leading 600HU, 상자 크기 ×4, baseline 300/400=75%도 원본 단위 계약입니다. 수식 기본 12pt/HYhwpEQ의 현재 독립 근거는 이 산술로 입증되지 않아 별도 pending으로 남겼습니다.
-
두 차트 입력의 nested CFB는 각각 Contents 단일 스트림 9,876바이트입니다. CP949 라벨 8개와 정확한 raw offset의 f64 수치 12개는 두 입력에서 같지만, storage와 Contents의 전체 바이트·SHA는 서로 다릅니다. 차이를 단순 metadata로 추정하거나 형식 간 전쪽 증거를 재사용하지 않습니다. 독립 HWPX의 isEmbeded=0 내부 ole3 경로·extent 7200HU, 원본 HWP의 attr 0x143a2610·OLE 26바이트·직전 shape component 196바이트·CTRL_DATA 24바이트 2개/책갈피 16바이트 1개도 대조했습니다. 차트 값 1702나 작성 canvas 420×320은 화면 절대 좌표 기대값이 아닙니다. 기존 한컴 원본 HWPX와 후보의 한컴 재저장본도 각각 표 2개·버튼 0개·-581-13- 원문을 보존하며, 후자를 독립 원본으로 취급하지 않았습니다.
-
위 네 모듈의 로컬 helper 연결도 Rust AST 식별자 참조와 현재 생성 suite·실제 등록 목록으로 대조했습니다. 검사 root 45개에서 보수적으로 연결되는 helper 37개(7/6/18/6)는 모두 이번 직접 판정에 포함됐고, 로컬 미도달 helper는 발견되지 않았습니다. 이는 동명·함수 포인터 참조를 포함한 정적 과대 근사이며, 모든 분기의 실제 실행이나 저장소 전체 동적 호출 경로의 완료를 뜻하지 않습니다.
-
현재 정식 수집 목록의 3개 suite와 실제 바이너리 전후 SHA를 고정한 Native 실행은 45 PASS/0 FAIL이었습니다(Summary 0.102초, 선택 target 753 skipped). 실제 OS clipboard, WASM/browser/CanvasKit 재생, 새 MCP Print나 전쪽 시각 캡처를 수행했다고 주장하지 않습니다. 이번 source 형식·산술 증거와 focused PASS는 전체 지침 적합 또는 전체 시각 수용의 완료가 아닙니다.
-
29차에는 입력 스캔·CLI catalog·양식 작성 및 recipes 문서 fixture 검사 네 파일 전체와 포함된 catalog source helper 7개를 조사했습니다. 검사 60개/helper 42개, 총 102함수가 중복 없이 추가돼 직접 판정은 6,436개/723소스 파일이며 모두 원장과 현재 source SHA에 연결됩니다. 원장은 10,808그룹/2,108파일입니다. 원장 미분류 상태 4,042개와 메모만 있는 330개를 합친 분류 미확정 4,372개, 독립 근거 pending 507개 및 전체 호출 경로 검증이 남아 있습니다. 제품·검사 보정·개명은 여전히 0건입니다.
-
200자 발췌 상한, 40/80사례·16개 reference의 분량 조건, schema 1.0·이슈 id·0기반 필드 순번, 명령 목록·가시성은 실물 페이지 px 핀과 구분했습니다. 실제 CLI 최상위 match pattern과 catalog를 별도 Rust AST로 읽어 중복 없는 103개 명령 집합이 같음을 확인했습니다. source 주석의 옛 98개를 현재 명령 수나 시각 일치율로 인용하지 않습니다. 함수 이름·위임 문자열 guard는 모듈 소유 구조를 검사할 뿐 모든 handler의 실제 동작을 입증하지 않습니다. peer skill 존재 검사도 그 내용의 비변경까지 입증하는 것으로 확대하지 않습니다.
-
현재 Native metadata에서 선택한 기존 검사 60개를 동일한 실제 libtest 바이너리로 14/20/14/12개씩 실행해 모두 PASS/0 FAIL을 확인했습니다(각 summary 6.19/0.08/0.11/0.02초, 합계 986개 filtered). 이것은 nextest run summary가 아닙니다. Cargo nextest list로 현재 수집·바이너리를 고정했고 빌드와 실행 중 CLI/test 바이너리의 전후 SHA를 대조했습니다. 포함된 catalog source의 helper 7개는 추가 test 7개가 아니며 실제 등록된 source test는 0개입니다.
-
CLI를 변경 없이 위임하는 관찰 wrapper에서 실제 108호출을 기록했습니다. 주입 합성 문서 24개가 모두 생성됐고, 양성 9사례·음성 10사례·추가 5개 대조군의 스캔을 실제 파일 SHA와 연결했습니다. 임시 원본이 검사 뒤 삭제되기 전에 동일 바이트 24개를 ignored output에 보존했습니다. 모든 관찰 입력 파일의 전후 SHA가 같았고, 양식의 fields 2건·dry-run·빈 CSV 오류도 실제 실행됐습니다. dry-run의 exit 0/filledCount 1/출력 미생성을 확인했습니다. 검사 payload는 입력 데이터로만 다뤘으며 실제 외부 도구 호출이나 전송을 수행한 것이 아닙니다.
-
신규 정상 문서 스캔 guard는 환경 JSON이 비면 등록 PASS여도 본문을 건너뜁니다. 이번에는 기존 원본 1개를 명시해 실제 checked>0 분기를 확인했고, 이를 신규 PR 문서 전체나 전체 samples 스캔으로 확대하지 않았습니다. CI의 added 문서 선택 → workflow 환경 JSON → Rust 경로 filter·동적 corpus의 연결을 읽고, 추가/수정/이름 변경/삭제·확장자·경로를 나눈 10경우를 실제 순수 함수로 대조했습니다. 공용 source include 16개와 fixture JSON 17개의 현재 hash도 연결했습니다. 양식 myMsg01은 원본 CFB의 %clk CTRL_HEADER 한 개와 그 자식 CTRL_DATA의 UTF-16 이름으로 확인했습니다. 새 PDF·시각 캡처·WASM/browser 또는 원격 CI 수용을 주장하지 않으며 전수 조사와 실제 보정·개명은 계속 남아 있습니다.
-
30차에는 암호 HWP3·변환 구조·개체 복제·문단 반복 네 파일 전체를 읽고 기존 검사 37개와 helper 24개, 총 61함수를 추가 판정했습니다. 직접 판정은 6,497개/727소스 파일이며 현재 source SHA·원장 연결 누락은 없습니다. 원장 10,836그룹/2,108파일 중 미분류 4,009개, 메모만 있는 330개, 독립 근거 pending 508개와 전체 호출 경로 검증이 남습니다. 이 수치를 위반 또는 보정 완료 수로 세지 않으며 제품·검사 수정·개명은 아직 0건입니다.
-
기존 Native 검사 37개는 실제 현재 metadata·바이너리 전후 SHA를 고정한 실행에서 모두 PASS/0 FAIL이었습니다(Summary 0.908초, 선택 target 1,022 skipped). 그러나 암호 HWP3의
actual_hwp3_password_fixture_preserves_p3_inline_object_vertical_contract가 고정한 vpos 4개는 독립 한컴 HWP5 원시 레코드·HWPX보다 각각 568HU 작았습니다. 원 도입 c3ab3aa → PR #3669의 최종 head 6c4183f → 실제 merge 3b28ab5 → 현재 HEAD를 확인했고 실제 merge tree에도 같은 기대값이 있습니다. 한 함수의 같은 원인에 속한 4개 단언이며 독립 결함 4건으로 부풀리지 않습니다. -
원본 암호 HWP3의 독립 Print PDF 3쪽에서 표 상단은 210.39998 CSS px이며, 독립 저장 vpos 5,720HU·쪽 여백·표 바깥여백의 투영 210.4px와 일치합니다. 기존 기대 5,152HU는 202.82667px, 현재 Native paint는 202.8px로 약 7.57px 앞섭니다. HU라는 자료형만으로 원본 보존 계약이라고 판정할 수 없는 파생 배치 golden입니다. 반대로 차례 11문단의 저장 줄 tuple, 같은 3쪽의 높이·간격, 단 범위·내어쓰기·암호/직렬화·복제 소유 계약은 각각 독립 근거와 구분해 보존 여부를 판정했습니다.
-
정확한 원본을 공개 fixture 암호의 stdin 인증만 추가하는 임시 adapter로 canonical Native sweep에 입력했습니다. 선택한 3쪽 raw는 39.00717%로 gate exit 1이며 review와 overlay를 직접 판독했습니다. 표·후속 본문의 세로 차이 외에 PDF 3쪽에 없는 큰 배경 그림이 Native 본문 위에 표시됩니다. 양 PDF의 1/3쪽 그림 resource와 독립 HWP5/HWPX의 BOTH/EVEN/ODD 배경 선언도 대조했으나 공통 구현 원인 규명·보정은 아직 아닙니다. PDF bbox 보조 추출의 exit -6도 성공으로 세지 않습니다.
-
이번은 Native 3쪽 진단이며 fresh WASM·전 24쪽의 90% 자격이나 새 px 검사의 98% 자격이 아닙니다. 기대값 완화·정상 source 계약 일괄 제거로 통과시키지 않고 잘못된 vpos와 필요한 공통 출력 보정을 대상으로 기록했습니다. 기존 17/18쪽 hyperlink 이어받기 소유는 별도 독립 쪽 대조가 남아 있습니다. 전수 조사·실제 보정·새 이름의 호출/등록 정리는 계속 남아 있습니다.
-
31차에는 외부 문단 import·반복/양식 채우기·CLI 계획 실행·Unicode 탐지 네 파일 전체를 조사했습니다. 기존 검사 43개/helper 27개, 총 70함수가 중복 없이 추가돼 직접 판정은 6,567개/731소스 파일입니다. 원장은 10,872그룹/2,108파일이며 미분류 3,975개와 메모만 있는 330개, 독립 근거 pending 508개 및 전체 호출 경로 검증이 남습니다. 모든 직접 판정은 현재 source SHA·원장에 연결됐으며, 제품·검사 수정·개명은 0건입니다.
-
현재 생성 suite 005/013/027과 실제 nextest metadata를 대조해 43개 등록을 확인했습니다. 수동 labnote 산출 생성기 2개는 기존 ignored 상태로 실행하지 않았고, 나머지 41개는 Native 41 PASS/0 FAIL이었습니다(Summary 1.977초, 선택 target 751 skipped, 준비 빌드 10.71초). 실행 바이너리·필수 원본 8개의 전후 SHA가 같고, 임시 산출은 ignored output 아래에서 생성·정리됐습니다. 새 회귀의 FAIL→PASS나 전체 회귀·시각 수용 결과가 아닙니다.
-
이번 파일의 1,700HU 서식·1,000HU 작성 그림, storage/ordinal/instance ID, 4+4바이트 비교 예산, 65,536 셀 주소 초과, Unicode run·scalar/UTF-16 인덱스는 실물 절대 페이지 px 핀과 구분했습니다. 원본 CFB에서 labnote 문단 12의 표 3개, field-01의 회사명/작성자 누름틀, Unicode 합성 대상 원문의 anchor 1회를 production 모델 없이 읽었습니다. 제로폭 3개·태그 문자 6개와 Ignore 복원·키릴/Latin 쌍·원😀형의 scalar 3/UTF-16 4 및 gap 이후 주소 [8,9,11]도 별도 산술과 대조했습니다. 실제 저장 재열기나 자기검증을 독립 Print 수용으로 확대하지 않습니다.
-
검출 범위도 분리했습니다. 일부 계획 검사의 “디스크 무변경”은 실제로 출력 부재만 단언하며, “한 번 저장”도 출력 존재만으로 write 횟수를 입증하지 않습니다. 재독 검사의 전체 JSON 문자열 포함은 해당 필드 소속까지 보장하지 않고, enum/property 배선 검사는 모든 서버 runtime 인자 전달을 실행한 증거가 아닙니다. 반면 정상 Unicode corpus는 누락·파싱 실패를 continue하더라도 최종 checked가 5개 전체와 같아야 하므로 이 실행에서 누락을 PASS로 숨기지 않습니다. 로컬 helper 70개의 정적 식별자 근사·실제 등록·ignored 경로를 연결했고, RAII Drop과 trait 동적 호출을 정적 이름 도달 또는 실행 완료로 혼동하지 않았습니다. 전수 조사·실제 부적합 보정과 새 이름의 호출/등록 정리는 미완료입니다.
-
32차에는 Studio backend 검사 파일 전체와 직접 사용하는 공용 TS 8파일의 함수 본문을 조사했습니다. 실제 Node 검사 callback 65개, 중첩 callback 11개, 공용/생산 helper 45개로 총 121함수가 중복 없이 추가됐습니다. 일반 함수 인덱스의 closure 표기와 실제 test 등록을 구별했고 TAP 제목 65개가 직접 판정한 root와 정확히 같음을 확인했습니다. 누적 직접 판정은 6,688개/740소스 파일이며 모두 현재 SHA·원장에 연결됩니다. helper를 추가 연결한 원장은 10,980그룹/2,116파일이고, 미분류 3,962개와 메모만 있는 330개, 독립 근거 pending 508개 및 전체 호출 경로 검증이 남습니다.
-
기존 Node 검사는 65 PASS/0 FAIL/0 skipped였습니다(TAP 226.586125ms, wrapper 0.282281초, Node v24.15.0). 실행 import와 source guard 입력의 전후 SHA를 고정했습니다. 이는 실제 browser·CanvasKit surface·fresh WASM 또는 실물 문서 전쪽 시각 검증이 아닙니다. 소수 종이 크기의 ceil·scale 전달은 production 메서드를 추출해 작성 page/tree/canvas mock으로 실행하며, page 7은 전달 identity입니다. 작성 SVG fragment/bbox의 정확한 base64 포장, cache key 소수 3자리, 재시도 시간·영상/cache 예산도 실물 페이지 golden과 구분했습니다.
-
crop의 75HU/원본 pixel 환산과 contain 사각형을 독립 유리수로 대조했습니다. 작성 cell bbox에 대한 정확한 폭은 165.1325991711, x는 510.7337004144이고 기존 근사 기대값과 각각 약 0.0274/0.0137 차이로 0.05 이내입니다. 입력 bbox를 이동하면 결과 원점도 같은 만큼 이동하고 크기는 같았습니다. 이 검사는 실물 HWP에서 산출된 셀 원점을 고정한 검사가 아니므로 이 결과를 해당 문서의 98% 자격으로 인용하지 않습니다. 작성 배너의 source 높이 70/58.1951189행과 한 축에서 확인한 등방 scale도 대조했습니다. FNV32가 7f1d283a로 충돌하는 두 PNG는 실제 2×1 영상의 서로 다른 pixel/bytes이며, 기존 BLAKE3 cache identity 검사가 둘을 구별함도 확인했습니다.
-
PageLayerTree bridge verifies the returned profile instead of relabeling it에서는 실제 검출 누락을 확인했습니다. 정상 production 메서드는 print 요청에 screen tree가 오면 거절합니다. 비교 분기를 false로 바꾸고 원 조건 문자열만 주석에 남긴 메모리 사본에서는 잘못된 profile이 반환되지만, 실제 기존 source guard는 정상/변형에서 각각 1 PASS/0 FAIL입니다. 정확한 한 분기만 바꿔 해당 기존 검사만 실행했고 제품·테스트 원본은 변경하지 않았습니다. 실제 메서드 추출 실행의 transport는 명시 mock이며 전체 WASM 오류로 확대하지 않습니다. 원 도입 bd9c15b → PR test(render): refresh cross-backend diagnostics and regression corpus #2297 최종 head 7998e4f → 실제 merge 45cd411 → 현재 HEAD와 merge tree의 같은 guard를 확인했습니다. 이름/주석 존재 대신 실제 profile 거절·정상 profile 보존을 실행하는 검사로 보정할 대상입니다. -
초기 TAP 제목 대조는 #가 포함된 4개 제목의 이스케이프 때문에 중단됐고, 원래 역슬래시가 없는 제목임을 확인한 뒤 해당 표기만 해석해 65개 전체를 정확히 대조했습니다. 제품 또는 검사 실패로 세지 않으며 끝난 65개를 다시 실행하지 않았습니다. 기존 source guard PASS·단위 산술·범위별 반례와 전체 지침 적합을 구분합니다. 이번 실제 보정·개명은 여전히 0건이며 전수 조사와 이후 실제 수정·등록 갱신·검증은 미완료입니다.
-
33차에는 AI 쓰기 단위 검사·덮어쓰기 부모 검사·자식 러너 세 파일 전체를 조사했습니다. 함수 인덱스의 같은 줄 중첩 정의를 합친 305그룹이 중복 없이 추가돼 직접 판정은 6,993개/743소스 파일입니다. 실제 Node test 46개와 러너 시나리오 callback 정의 31개, 기타 mock/helper·중첩 callback 228개를 구별했습니다. 원장은 11,265그룹/2,117파일이며 미분류 3,942개와 메모만 있는 330개, 독립 근거 pending 508개 및 전체 호출 경로 검증이 남습니다. 제품·검사 수정·개명은 아직 0건입니다.
-
기존 Node 검사는 46 PASS/0 FAIL/0 skipped였습니다(TAP 892.799167ms, wrapper 0.987147375초). loader는 nextLoad의 반환을 변경하지 않고 실제 파일/hash만 기록했으며 module load 103건을 확인했습니다. 부모가 실행한 같은 자식 PID에서 덮어쓰기 러너와 production 입력 handler·명령·history가 실제 로드됐고, 부모는 자식 exit 0과 성공 marker도 검사했습니다. 원본·관찰한 모든 source의 전후 SHA가 같습니다. 러너의 literal 호출 30개와 deactivate/dispose 반복 2개는 source에서 32호출로 확인했으며 이들을 Node test 수에 더하지 않습니다. 시나리오별 runtime event를 32개 수집한 결과로 확대하지 않습니다.
-
AI 도형의 9,283HU는 작성 mock 본문 하단 120 CSS px×75HU+1mm의 상대 계산입니다. 실제 prepareWrite 진단에서 본문을 40px 내리면 12,283HU, 셀 조각만 1,000px 옮기면 9,283HU, 본문을 0.5px 내리면 반올림해 9,321HU였습니다. 다른 도형 속성은 같았습니다. 해당 검사는 실물 HWP에서 계산한 페이지 원점을 고정하지 않습니다. 독립 유리수로 1/8/12/25/30/40/50/60/182/257mm의 HU 반올림, 16.5pt→1,650HU, 12pt→1,200HU도 대조했습니다. 실제 페이지 90/98%나 독립 Print 위치의 자격으로 인용하지 않습니다.
-
덮어쓰기의 field/link 범위 2..4, source scalar·logical offset, fragment ID/capacity, 같은 호출의 undo/redo·clone snapshot, 300/301ms 병합 경계는 실물 페이지 px 핀과 구분했습니다. 😀는 scalar 1/UTF-16 2, ❤️는 2/2, 👍🏽는 2/4, e+결합 악센트는 2/2임을 별도로 계산했습니다. mock의 문자소·양식 소유 결과와 실제 production 입력 경로의 호출을 연결하되, 모든 Unicode 규칙이나 실제 Native/WASM 모델과 mock의 완전한 동등성을 주장하지 않습니다.
-
검출 범위도 구분했습니다. AI fakeDoc은 BMP 중심 length/slice와 많은 ok 반환·call 기록을 사용하며 cell 2 같은 일부 요청은 실제 본문을 편집하지 않습니다. 그림의 10/5바이트 배열도 실제 PNG/JPEG decode가 아닙니다. replace-all 검사는 제안/재검색 개수 변화와 호출을 보호하지만 mock 자체는 실제 모든 문자열을 치환하지 않습니다. 따라서 API 인자 전달·원자성·내용 관계 단위 검사로 판정하며 실제 저장·전쪽 render 수용으로 확대하지 않습니다. 덮어쓰기 러너도 @wasm을 명시 data-URL 이름 stub으로 해석하고 문단 모델/DOM 대역을 쓰므로 실제 browser·WASM binary·OS IME 검증이 아닙니다. 이번 세 파일에서 실물 페이지 px 핀 보정 대상은 추가로 확인되지 않았으며 전체 조사와 이미 확인한 부적합 항목의 실제 보정·개명은 계속 남습니다.
-
34차에는 합성 PDF/raster·중첩 표 검사 두 파일 전체, 생성기 1파일과 공통 helper 9파일의 함수 본문을 조사했습니다. 검사 23개/helper 65개, 총 88함수가 중복 없이 추가돼 직접 판정은 7,081개/755소스 파일입니다. 원장은 11,335그룹/2,127파일이며 미분류 3,924개와 메모만 있는 330개, 독립 근거 pending 508개 및 전체 호출 경로 검증이 남습니다. 제품·검사 보정·개명은 아직 0건입니다.
-
루트의 기존 Native 합성 검사 11개는 PASS/0 FAIL이었습니다(Summary 0.026초, 선택 target 258 skipped). 별도 POC는 원본 Cargo.lock의 --locked 빌드가 갱신을 요구해 exit 101로 테스트 전에 실패했고, metadata 재확인도 같은 실패였습니다. 원본 lock을 보존하고 byte가 같은 Rust 소스를 ignored 진단 사본에 복사한 뒤, rhwp 상대 경로만 절대 경로로 지정하고 사본 잠금을 생성해 실행한 12개는 PASS/0 FAIL이었습니다(0.10초). 원본 잠금 gate 실패와 이 진단 결과를 분리하며 합쳐서 전체 gate 통과라고 보고하지 않습니다. 사본 잠금에는 현재 rhwp 의존성 변경에 따른 package 추가 42개/제거 24개가 있어 원본과 같은 잠금이라고 주장하지 않습니다.
-
bug(render): #3820 후속 PDF raster fidelity 잔여 추적 #4764 생성기는 출력 경로만 ignored 사본으로 지정해 실행했으며 12개 파일이 커밋 fixture와 byte 동일했습니다. 현재 7corpus/185개 page label·1,480개 격리 사례는 합성 메타데이터이고, 기존 casebook 본문이 선택하는 것은 454개·건너뛰는 것은 1,026개입니다. PDF builder도 185행 중 12개 작성 표본만 사용합니다. seed로 만든 histogram/bbox/MediaBox나 과거 잔여 tag를 실제 한컴 PDF 측정값·현재 전쪽 검증으로 인용하지 않습니다. 생성 과정에서 제외된 편람/sample16을 복원하지 않았습니다.
-
fixture의 reg_76076 index 1에 해당하는 8행을 index 2의 8행으로 대체해 전체 1,480행은 유지하되 고유 identity를 1,472개로 줄인 반례를 확인했습니다. 기존 casebook과 well-formed 검사 두 개는 정상/변형에서 각각 2 PASS/0 FAIL이었습니다. 개수·일부 flag만으로 페이지별 누락과 중복을 검출하지 못하므로 공통 loader와 두 caller를 같은 원인의 보정 대상으로 기록했습니다. 원 PR #5464는 미병합 CLOSED이고, 실제 통합은 feat: kevin9327 누적 기여 PR 통합 및 HWPX 호환 보정 #5530/bef280b0, 현재 개수 보정은 feat: 기여 PR 10건 통합과 조판·Studio 회귀 보정 #8228/3e02fe27임을 구분해 source·실제 merge tree·현재 조상을 추적했습니다.
-
중첩 표의 보류 검사에서는 실제 인식 결과의 후보 3개를 모두 비운 분석 사본도 기존 단언을 PASS했습니다.
all(status==Deferred)가 빈 배열에서 참이고 bodyRegions도 비어 있어 family 누락을 놓칩니다. 정상/변형의 해당 기존 검사는 각각 1 PASS/0 FAIL이었습니다. 도입 PR #7913과 실제 merge 4662c06·현재 조상을 확인했으며 candidate 존재·identity·보류 소유를 보호하도록 보정할 대상입니다. 앞의 fixture 문제와 합쳐 새 원인은 2개이고, helper/여러 caller를 독립 결함 수로 부풀리지 않습니다. 이 반례들은 기존 단언을 유지한 분석 copy이며 제품 원본의 실제 오류나 새 정식 회귀 FAIL→PASS가 아닙니다. -
작성 격자의 F2 경계 행렬을 독립 계산해 full 3×3의 rank 15/9·Betti [1,0,0], hole [1,1,0], 분리 [2,0,0], 중복 face [1,0,1], 병합 3face [1,0,0]을 대조했습니다. 정규화 embedding의 두 합성 순서는 유리수 [29/100,8/25,3/25,9/100]로 정확히 같았습니다. 여기의 1e-6은 f32 대수 오차이고 실제 PDF/HWP의 절대 page px 허용폭이 아닙니다. 같은 호출의 path 순서/중복 대조·논리 소유와 실물 golden도 구분합니다. 실제 HWP/독립 한컴 Print·WASM·전쪽 시각 캡처는 이번에 수행하지 않았으며 전체 감사·보정·새 이름의 등록/호출 정리는 미완료입니다.
35차 추가 조사 — 실물 기준선의 자격과 원본 정렬 관계
- 이번에는
stored_partial_frame_alignment.rs와issue_4962_font_metric_coverage.rs전체 38함수를 직접 읽고 기존 15검사를 실행했습니다. 실제 결과는 15 PASS / 0 FAIL, Summary 4.200초, 선택한 두 target의 나머지 502개는 skipped입니다. 전체 회귀 통과라는 뜻은 아닙니다. 제품·검사 수정과 개명은 아직 0건입니다. - 직접 기록은 신규 33개와 기존 5개 재판정입니다. 누계는 7,114개 / 756소스 파일, 통합 원장은 11,352그룹 / 2,127파일입니다. 분류 미확정은 3,908개와 메모만 있는 330개를 합친 4,238개이며 독립 근거 pending 507개는 직접 기록 안에 포함됩니다. 원장 증가분을 새 결함이나 PASS로 세지 않습니다.
- 가맹사업 원본의 57·68·70·71쪽을 같은 현재 source의 hash 고정 Native와 fresh WASM으로 새로 캡처했습니다. 기본 환경(57·71)과 기존 명시 Human/Haansoft 환경(68·70)을 분리하고, 정본 96 CSS dpi / 2px raw 계산을 유지했습니다. Native/fresh WASM 각각 57쪽100/100%, 68쪽100/100%, 70쪽100/100%, 71쪽99.93799/99.93797%였습니다. 두 경로의 review와 독립 overlay 16장을 직접 읽었으며 획·농도·밑줄/점선의 미세 차이는 남습니다. raw100은 RGBA 동일성을 뜻하지 않습니다.
- 같은 입력 SHA a1b8299b…와 독립 한컴 Print PDF SHA 4cf22800…의 네 기준선을 PDF의 CTM과 Tm을 합성해 다시 확인했습니다. 57쪽840.16, 68쪽796.96, 70쪽155.84, 71쪽527.52 CSS px이며 기존 기대와 최대 차이는0.000039 CSS px입니다. 기존 양쪽 전142쪽 TSV의 입력/PDF 해시와 현재 코드 동일성도 확인했고 최저93.81069/93.80829%였습니다. 전142쪽은 기존 증거 재확인이며 이번 새 실행은 네 쪽뿐입니다. 해당 네 기준선 ±2 CSS px는 유지 근거가 있으므로 불필요하게 삭제·완화하지 않습니다. baseline helper 2개의 독립 근거 pending을 이 caller 범위에서 해소했습니다.
- rhwp 모델을 거치지 않은 CFB 원시 읽기로 직접 표의 Center 셀14개, 557번 표6셀의 저장 앞 띠=문단 before/2, 650번 표의 닫는 빈 문단14 높이600HU·뒤 간격360HU를 확인했습니다. Center 여유 관계의 0.05 누적 반올림 bound와 독립 page 위치 고정을 구분합니다. section1 중첩118/119쪽의 전체 raw ancestry는 이번 직접 표 스캔 범위가 아니므로 해당 독립 근거 pending 1개를 분리했습니다. 글꼴 집계의 count·현재 호출 결정성·자원 예산·논리 Unicode scalar 검사를 실물 page px golden으로 취급하지 않았습니다.
- 원장은
integration-semantics-batch-48.json/non-numeric-helper-semantics-41.json, 실행은phase35-existing-tests-producer.json/log, 독립 근거는phase35-independent-pdf-baselines.json/phase35-independent-raw-bands.json, 새 캡처는phase35-franchise-pages/state.json, 판독은phase35-direct-review.json입니다. 실제 통합 수정: #7445 기존 완료 문서의 표·줄·글꼴·출력 경계 보존 #8191·후속 #8228의 merge가 현재 조상임을 확인했습니다. 감사·모든 호출 경로·보정·issue_8232 명명·필수 재검증은 계속 미완료이며 PR을 생성하지 않았습니다.
36차 추가 조사 — 차트 실측 핀과 레인·셀 오류 검출력
- 저장 줄 축·차트 기본 배치·Square 옆 레인·걸친 셀 검사 네 파일 전체 68함수를 직접 읽었습니다. 신규 61개/기존 7개 재판정으로 직접 기록은 7,175개 / 759소스 파일, 통합 원장은 11,381그룹 / 2,127파일입니다. 미분류 3,876개와 메모만 있는 330개를 합친 분류 미확정은4,206개이며, 독립 근거 pending511개는 직접 기록 안에 포함됩니다. 제품·검사 수정·개명은 아직0건입니다.
- 실제 등록을 현재 generated suite009/015/021/028에서 확인한 기존 Native 검사는 37 PASS / 0 FAIL, Summary167.071초(2 slow), 선택target의 나머지1,032개 skipped였습니다. wrapper168.503855초이며 source·원본·바이너리 전후 SHA가 같습니다. 끝난 테스트를 중복 실행하지 않았고, 이 PASS를 실물 출력의 시각 수용으로 확대하지 않습니다.
- 첫 레인 글줄의 소실을 놓치는 검사를 확인했습니다. 기존
square_beside_lane_starts_next_to_the_table_not_below_it의 첫 para13 TextLine1개(y762.5466667)를 실제 결과에서 제거한 분석 사본도 PASS했습니다. 기존 단언은 source 첫 줄의 소유·존재 대신 표 오른쪽 영역의 어느 TextRun이라도 표 바닥−100px 위에 있으면 통과합니다. root와 nested lane selector를 같은 원인의 보정 대상으로 기록했습니다. 원 PR #6784는 미병합 CLOSED이고 실제 통합은 수정: planet6897 렌더링 PR 10건 통합 및 메인터너 보정 #6847/a3a30d99입니다. 실제 merge tree의 같은 단언과 현재 조상을 확인했습니다. - 옛 오류 개수 상한이 새 오류를 허용하는 검사도 확인했습니다. [layout/table] 분할 표 행 높이가 셀 내용보다 작아 둘째 줄이 행 밖으로 나가 사라진다 — 행 21.1px 에 13.3px 두 줄 (1342000 edu 377쪽, #6924 잔여) #6981 대조 원본의 현재 실제 escaped 결과는0개인데, 기존 검사는 과거 상한3개를 허용합니다. 실제 수집 뒤 전혀 다른 새 오류3개(각5,800문자)로 교체한 분석 사본도 PASS했습니다. 정상/변형 두 경우의 기존 검사 각각1PASS이며 실제 제품 원본의 새 오류나 정식 FAIL→PASS는 아닙니다. 원 PR #7143의 실제 merge a2cc0d23에서도 같은 상한을 확인했습니다. 오류 개수를 오류 identity·크기 무회귀의 증명으로 쓰지 않도록 보정할 대상입니다.
- 차트5종의 기존 PDF는 텍스트 추출이 없고 페이지 이미지이며 Creator는Hwp2022였습니다. 파일명2020·과거 page diff만으로 현재 Print 출처나 raw98%를 확정하지 않았습니다. 원본의 저장 제품은5개 모두한컴2022로 확인하고 MCP engine2020/실제11.0.0.9136/pdf_print_method0/hancom2020_pdf_driver_one_up으로 새 Print5건을 생성했습니다(timeout1800초). start/status/download·입력/PDF SHA를 연결했고 원본과 기존 PDF는 보존했습니다. 실제 통합은 원 PR #6626의 직접 merge가 아니라 fix(renderer): jeong-sik 그림·WMF·차트·표 통합 보정 #6645/2edbe62e이며 merge tree와 현재 조상을 확인했습니다.
| 새 MCP2020 Print 기준, 각 전1쪽 | Native raw | fresh WASM raw |
|---|---|---|
| 묶은세로막대형.hwp | 90.76307% | 87.88801% |
| 꺽은선형.hwp | 85.74791% | 79.27503% |
| 2차원원형.hwp | 97.34921% | 94.74776% |
| 시가고가저가종가.hwp | 74.38419% | 67.96440% |
| 직선이있는분산형.hwp | 87.37078% | 78.91848% |
- 새 Print 대비 총10개 backend/page 중7개가90% 미만이고 양쪽98% 자격은5문서 모두 없습니다. 해당 exit1은 빌드 실패가 아니라 정상 산출된 미달 gate입니다. 기존 PDF 대비도 따로 보존했습니다. Native5종의 기존 review/overlay10장, 새 Print의column·stock·pie 양쪽 review/overlay12장을 직접 읽었습니다. 축·계열·범례·라벨 위치 차이가 보이며 글꼴 하나만의 원인으로 단정하지 않습니다. 다른 두 새 Print의 TSV를 모든 PNG 직접 판독으로 확대하지 않습니다.
hancom_default_layout_pins_430x250의y35.47/60.85/208.67±0.05는 생산 renderer의 래스터 근사35.5/61/209→1.9T/1.36T/3.1L 경험식을 다시 정답으로 고정합니다. 같은 실물 차트의 현재98% 자격과 독립 subpixel 근거도 없으므로 보정 대상으로 판정했습니다. 앞의 실행 반례2개와 이 정책 위반1개를 구분하며, 관련 직접 기록은4개입니다. 명시 XML의font pt·선EMU·축 소유와 수평 선의 상대 동등성은 일괄 삭제하지 않습니다. 다른 경험적 서식/비율과 내부IR 고정4쪽의 독립 근거는 별도로 남겼습니다.- 독립 원시 읽기에서는 Square 표 우단17,060HU와 레인cs17,626HU, aift host 문단의 직계 저장 textpos0/24를 확인했습니다. 처음 탐색에서 중첩 표의6개 lineseg를 host 배열에 섞은 선택은 수정했고 최종 근거는 직계 배열만 사용했습니다.75HU 단위 예산 변형·논리 offset·원본 서식과 실제 page px 고정을 구분합니다. 통합 시각 목록은 기존/새 Print 조건을 분리해126조건·각backend2,601쪽이며, 같은5문서의 두 PDF를 새 문서10개나 통과 수로 세지 않습니다.
- 함수별 원장은
integration-semantics-batch-49.json/non-numeric-helper-semantics-42.json, 실행은phase36-existing-tests-producer.json/log, 반례는phase36-predicate-counterexamples.json, 기원은phase36-origin-chains.json, 원시 근거는phase36-independent-raw-contracts.json입니다. Print job은mcp-phase36/jobs.json, 구/신 PDF 비교는phase36-chart-evidence/와phase36-chart-new-print-evidence/, 판독은phase36-direct-review.json입니다. 전수 조사·전체 호출 경로·실제 보정·issue_8232 명명·필수 재검증은 미완료이며 PR 생성·push는 하지 않았습니다.
37차 조사 — 저장 레코드·원본 PDF sample·Skia 영역·눈금자 UI
- 네 Rust 검사 파일 전체와 눈금자 지원 모듈·선택한 production 함수 본문을 읽어 154개 신규 그룹 / 12소스 파일을 판정했습니다. 누계는 직접 7,329개 / 771소스 파일, 원장 11,495그룹 / 2,134파일입니다. 미분류 3,836개와 메모만 있는 330개를 합친 분류 미확정은 4,166개이며, 독립 근거 pending 511개는 직접 기록 안에 포함됩니다. 파일 전체 판독과 선택 함수 판독을 구분했습니다.
- 기존 Native 검사는 현재 manifest에서 34개 실제 등록·실행하여 34 PASS / 0 FAIL, 12.172초였습니다. 조건부 PDF source mask 8개와 Skia 영역 8개도 실제 실행했습니다. 필터로 제외된 741개를 실행·통과 수에 넣지 않았습니다. 원본 소스와 실행 바이너리의 전후 SHA가 같습니다.
- 눈금자 부모 검사는 1 PASS, 자식 직접 실행은 19 PASS / 0 FAIL / 0 skip입니다. 부모도 같은 자식을 실행하므로 독립 20개 동작으로 합산하지 않습니다. 원문 callback 정의 13개가 반복문으로 19개 검사가 되는 경로를 확인했습니다. 실제 Ruler·pin geometry 모듈 load를 관찰했지만 DOM/canvas/WASM은 명시적 fake이므로 실물 문서 글리프나 browser paint 검증으로 확대하지 않습니다.
- 독립 CFB 해제·레코드 읽기로 7원본·11구역의 tail 순서·payload·MEMO identity를 확인했습니다. 일부 16바이트 LIST_HEADER에 20바이트 구조를 일괄 적용했던 감사 스캐너 오류는 수정했습니다. 원본 검사의 결함으로 오인하지 않았습니다. 현재 모델의 저장·재열기 동등성은 과거 배치 SVG golden과 구분합니다.
- 작성 PDF 7개에서 원본 packed sample·Mask·Decode·원시 Indexed palette·16bit sample·SMask 우선순위·stencil 행 padding을 독립적으로 읽었습니다. 같은 RGB로 환산되는 서로 다른 palette index와 32767/32768을 구분해야 하는 계약이며 문서 페이지 px 핀이 아닙니다. 정확한 RGBA/source alpha를 ±2px로 완화하지 않습니다. minification은 ink 혼합 관계이고 특정 회색값이나 sampling kernel을 고정하지 않습니다.
- Skia 작성 window의 floor/ceil·교집합·RGBA 메모리 크기를 유리수로 재계산했습니다. 눈금자의 container offset·scroll·zoom·DPR도 작성 UI 입력에서 독립 계산했습니다. HTML의 30px→2250HU는 입력 치수이며, 개체 폭을 정렬한 다중집합 검사는 순서 보존 증명이 아닙니다. SVG 호출 성공만으로 모든 그림의 실제 paint를 입증했다고 하지 않습니다.
- 이번 묶음에서 새 부적합 px 핀은 확인하지 못했습니다. 기존에 확인한 부적합 판정은 남아 있으며 제품·검사 보정 0건 / 개명 0건 / 전수 조사 미완료입니다. 새 전쪽 시각 캡처나 PDF Print는 수행하지 않았고, 시각 목록 126조건·각 backend 2,601쪽에 통과 수를 추가하지 않았습니다.
- 근거:
phase37-semantic-ledger-validation.json,integration-semantics-batch-50.json,non-numeric-helper-semantics-43.json,phase37-existing-tests.log,phase37-ruler-child.log,phase37-independent-{raw-tail,pdf-samples,math}.json(output/issue8232-audit/). 잘못된 기존 판정을 보존하지 않고, 독립 근거로 보호할 동작을 먼저 확정한다는 해결 방안을 계속 적용합니다.
38차 조사 — 독립 Print 좌표가 있는 기존 ±2px 검사의 현재 자격
semanticist21_qualified_print_positions.rs와issue_7902_completed_page_geometry.rs두 파일 전체 70함수를 읽었습니다. 신규 직접 기록 68개와 기존 공용near2개의 재판정으로 누계는 직접 7,397개 / 771소스 파일입니다. 원장은 11,548그룹 / 2,134파일, 미분류 3,826개 + 의미 메모 113개 + 파일 맥락 212개 = 분류 미확정 4,151개입니다. 독립 근거 pending 529개는 직접 기록 안에 포함됩니다. 신규 기록과 원장 신규 후보 수를 같은 수로 세지 않습니다.- 현재 manifest에서 두 모듈의 기존 검사 43개를 실제 등록·실행하여 43 PASS / 0 FAIL, 4.348초였습니다. 필터로 제외된 512개는 실행·통과 수가 아닙니다. Native/Skia feature, suite004/023과 원본·바이너리 전후 SHA를 확인했습니다. 현재 PASS만으로 페이지의 시각 자격을 판정하지 않았습니다.
- 탭·본문 자동번호·새 쪽 단의 29개 입력 / 전42쪽은 README의 입력/PDF SHA를 실제 파일과 대조하고, 같은 독립 Print로 현재 frozen Native와 fresh WASM을 각각 전쪽 실행했습니다. 양쪽 모두 최저 raw 100.00000%, 90%·98% 미달 0쪽, 쪽수 불일치·누락·추가 0쪽입니다. 정본 96 CSS dpi/2px raw·compat2022·총 capture8을 유지했습니다. Mac WASM은 기존 locked wrapper web/pkg/no-opt 로컬 대체 빌드의 동일 artifact이며 Docker 최적화 통과가 아닙니다.
- 같은 PDF의 94개 문자 원점·벡터 좌표를 원문 내용 또는 단일 수직 path로 선택해 독립적으로 다시 읽었습니다. 기대 좌표 근방으로 대상을 고르지 않았습니다. 기존 기대값과 최대 차이는 0.0005604655 CSS px였습니다. PDFium 원문 문자 원점과 path segment/object matrix를 사용했고, renderer의 계산값을 정답으로 재인용하지 않았습니다.
- 양쪽 84 backend/page에서 정본 review와 별도 overlay의 동일 crop을 연결한 88영역·12개 2배 확대 시트를 직접 읽었습니다. 탭 앞뒤 내용, 본문/각주·미주의 별도 소속, 그림 바로 뒤 번호, 한·두 자리 PAGE/TotalPage, 부분 문단의 쪽 경계, 양쪽 정렬 줄 끝, 좌우 단 순서·너비·구분선 끝을 확인했습니다. 미세한 획·래스터 차이는 남으며 raw100을 RGBA 완전 동일로 주장하지 않습니다. 원래 비교 영역·쪽 범위·문턱을 바꾸지 않았습니다.
- 따라서 이 29개 검사는 잘못된 px 핀으로 일괄 교체하거나 이름만 바꿀 대상이 아닙니다. 독립 Print ±2px와 현재 페이지별 98% 자격, 내용·소유·비겹침 보호가 확인된 묶음으로 분류했습니다. 입력 치수/상대 포함 관계의 0.02·0.05를 절대 페이지 허용폭과 혼동하지 않았습니다.
- 반면
#7902의 14개 기존 검사와 연결된 6개 helper, 20기록은 현재 자격 pending입니다. 과거 전쪽 835쪽·선정 쪽 98% 기록과 현재 Native PASS가 있어도, 새 source/글꼴의 각 선정 쪽 자격·독립 좌표 재대조를 아직 완료하지 않았으므로 그대로 수용하지 않습니다. 이것을 곧바로 새 결함 20개로 세지도 않습니다. - 원 수정: 다시 연 저장본에서 탭 뒤 글자가 겹치지 않게 한다 #7663·수정: Studio 탭 설정과 구역 설정이 탭 값을 조판과 같은 배율로 다룬다 #7670·수정: 각주·개체 바로 뒤 자동 번호가 HWP 저장본에서 제자리에 남게 한다 #7671·#7673은 미병합 CLOSED이며 실제 통합은 fix: semanticist21 7개 PR 통합 및 탭·자동 번호·단 배치 보정 #7935 / e4e6d0c입니다. 다른 파일의 실제 통합은 fix(renderer): #7877 통합 후 원본 프레임·HFT 출력 회귀 보정 (#7902) #7941 / 84764fa입니다. 두 실제 merge의 조상 관계와 검사 파일의 현재 바이트 동일성을 확인했습니다. 원 PR에
merge_commit_sha가 있더라도merged_at없는 상태를 병합으로 취급하지 않았습니다. - 근거:
phase38-semantic-ledger-validation.json,phase38-existing-tests.log,phase38-independent-pdf-positions.json,phase38-reading-sheets.json,phase38-origin-chains.json,phase38-semanticist-evidence/state.json(output/issue8232-audit/). 시각 목록은 155조건·각 backend 2,643쪽이며 실패·기존 재사용을 포함한 목록이지 전부 PASS 수가 아닙니다. 이번 새 부적합 판정 0개, 제품·검사 보정 0건 / 개명 0건 / 전수 조사 미완료입니다.
39차 조사 — 논리 슬롯·편집 단위·상대 줄 전진과 본문 소실 검출
- 자동번호 자리표·셀 높이 편집·빈 문단 뒤 서식·표 뒤 본문·연속 표 생성의 다섯 파일 전체 36함수를 읽었습니다. 신규 35개와 기존
close1개 재판정으로 누계 직접 7,432개 / 775소스 파일입니다. 원장은 11,569그룹 / 2,134파일, 미분류 3,812 + 의미 메모 113 + 파일 맥락 212 = 분류 미확정 4,137개입니다. 독립 근거 pending 529개는 직접 기록 안에 포함됩니다. - 기존 Native 검사는 현재 suite011/014/015/024에서 12개 실제 등록·실행, 12 PASS / 0 FAIL, 0.062초였습니다. 필터 밖 1,066개는 실행·통과 수가 아닙니다. 원본 소스/실행 바이너리 전후 SHA가 같습니다. 첫 감사 driver는 source SHA 수집 시
blank2010.hwp의 경로를 잘못 지정하여 검사 실행 전에 종료했고, 실제saved/blank2010.hwp로 수정했습니다. 이를 제품 검사 FAIL로 세지 않았습니다. - 표 뒤 셋째 문단의 소실을 놓치는 원인 1개를 확인했습니다.
column_top_table_reserves_outer_margins의 실제 RenderTree 응답에서 문단2TextLine을 하나씩 제거해도, 현재·HWP 재열기·HWPX 재열기·여백 변형의 8개 관측을 거친 기존 root가 PASS했습니다. 정상 사본도 1 PASS입니다. 기존assert_text_clears_table은 남은 줄의 y가 표 아래인지와 비어 있지 않은지만 확인하고셋째 문단의 존재·원문 소속을 확인하지 않습니다. root와 공용 assertion helper 2기록을 같은 원인의 보정 대상으로 판정했습니다. 실제 제품에서 본문이 사라졌다는 주장이나 새 정식 FAIL→PASS/CI 등록은 아닙니다. 상대 비겹침 검사를 유지하면서 독립 입력의 내용·소속·누락/중복 보호를 추가할 대상입니다. - 반대로 빈 문단 검사의
±0.05는 원본 13/20pt·160%가 정하는 줄 상자 전진, 같은 서식 편집 전후·저장 재열기의 현재 동등성입니다. 독립 CFB에서 C13pt/D20pt, 2,080HU 전진과 빈 문단 삭제의 3,200HU 이동을 확인했습니다. PDF의 글리프 기준선은 줄 상자 원점과 다릅니다. 최초 감사 계산에서 D도 13pt라고 가정해 PDF 기준선 차이를 직접 비교한 것은 잘못이어서 폐기했습니다. 원본 줄 상자의 삭제 이동은 42.66667CSSpx이고, 관측한 PDF 글리프 기준선 이동은 42.51351CSSpx입니다. 이 차이를 근거로 유효한 source 단위 검사를 잘못된 절대 px 핀으로 판정하거나 PDF 기준선으로 기대값을 덮어쓰지 않았습니다. - 관련 고정 표본
edited·deleted·한컴 실제 재저장stored-control의 입력/PDF SHA와 원시 레코드를 대조했습니다. raw 문단41의 vpos0 경계와 독립 Print의 첫 쪽Line001~041/ 다음 쪽Line042~070순서를 확인했습니다. 같은 세 표본의 현재 Native/fresh WASM 전4쪽씩은 양쪽 최저 raw100%, 90%·98% 미달 및 쪽수 불일치·누락/추가0입니다. 정본 review/별도 overlay의 동일 영역 10개를 6개 확대 시트로 읽었습니다. 획·래스터 차이는 남고 raw100은 RGBA 동일이 아닙니다. 이 고정 표본 증거를 모든 live 편집 API 출력의 바이트 동일성이나 다른 표 문서의 전쪽 수용으로 확대하지 않습니다. - 자동번호 주소3/4/6·원시8유닛, 셀 width±900HU/height3000HU, 원본 바깥 여백5000HU는 논리 주소·입력 단위·객체 간 관계입니다. 숫자가 작거나 px로 환산된다는 이유만으로 일괄 삭제하거나 ±2로 바꾸지 않습니다. API 상자 관계와 실제 paint/전내용 검증의 범위도 구분합니다.
- 원 수정: #7467 빈 문단 뒤 글자 크기 변경이 가짜 쪽 나눔을 만들지 않게 #7468·fix(table): 셀 높이만 편집할 때 표 너비를 보존한다 #7558·수정: 표 바로 아래에 만든 표가 앞 표와 겹치지 않게 한다 #7613·수정: HTML 붙이기가 논리 캐럿을 쓰고 문단 끝 자동 번호 자리를 지킨다 #7614·수정: 누름틀 문단 편집이 다른 컨트롤 슬롯과 문단 앞 정의를 지킨다 #7615·#7656은 미병합 CLOSED이며 실제 통합은 각각 [통합] 셀 블록 삭제와 빈 문단 뒤 서식 변경 리뷰 보정 (#7464, #7468) #7686·semanticist21 24건 누적 적용 및 메인터너 조판 보정 #7601·fix(renderer): 초기 PR 통합과 표 조판·OLE 차트 메인터너 보정 #7882 경로입니다. 자동번호의 후속 보정 #8191까지 실제 merge 조상과 현재 파일 바이트를 확인했습니다. 이 추적은 잘못된 옛 판정이나 옛 이름 wrapper를 보존하는 조건이 아닙니다.
- 근거:
phase39-semantic-ledger-validation.json,phase39-existing-tests.log,phase39-content-counterexample.json,phase39-content-probes/,phase39-independent-source-and-print.json,phase39-origin-chains.json,phase39-reading-sheets.json(output/issue8232-audit/). 시각 목록은 실패·재사용을 포함한 158조건·각 backend 2,647쪽입니다. 제품·정식 검사 보정 0건 / 개명 0건 / 전수 조사 미완료이며, 조사 완료 후 실제 보정·새 명명·간접 등록 갱신·재검증까지 진행합니다.
40차 조사 — source 내부 HeightCursor 39개 검사 재판정
- 이미 독립 근거 pending으로 직접 기록했던
src/renderer/height_cursor.rs의 39개 검사 본문과 작성 helper, 측정·실제 배치의 소비 위치를 다시 대조했습니다. 신규 그룹을 더한 것이 아니므로 누계는 직접 7,432개 / 775소스 파일, 원장 11,569그룹 / 2,134파일, 분류 미확정 4,137개로 같습니다. 이번 재판정은 원본 단위·상태 관계 26개 / 검출 누락 보정 대상 1개 / 독립 근거 미확정 12개입니다. 전체 독립 근거 pending은 529→502개, source 내부 pending은 65→38개입니다. pending은 직접 기록 안에 포함됩니다. - 현재 Native/Skia의
--lib등록 목록에서 39개를 정확히 선택해 39 PASS / 0 FAIL, 0.065초를 확인했습니다. 3,831개는 필터 밖이며 실행·통과 수가 아닙니다. 선행 정상 컴파일은 2분13초였고, 실제 프로세스·최종 exit0와 summary를 확인했습니다. 원본 소스와 실행 바이너리의 전후 SHA가 같습니다. 최종 paint나 독립 PDF 수용을 이 unit PASS로 대신하지 않았습니다. - 되감김 하한을 확인하지 않는 검사 1개를 보정 대상으로 확인했습니다.
compact_endnote_deep_backtrack_allows_safe_new_note_title의 원문 단언은got < 980뿐입니다. 작성 상태의 직전 내용 바닥은980−6000/75=900px, 단 위끝은100px인데, 원문 단언을 그대로 컴파일한 재생은 899px와99px를 모두 허용했습니다. 상한 대조980px는 거부하므로 단언 미실행이나 skip이 아닙니다. 현재 39개 실제 unit 실행은 별도이고, 이 재생은 잘못된 후보 반환값에 대한 단언의 검출력 반례입니다. 실제 생산 엔진이899/99를 반환했다거나 전체 원 unit을 그 값으로 실행했다고 주장하지 않습니다. 기존 되감김 검사를 유지하면서 직전 점유 끝·단 내부 포함을 함께 보호할 대상입니다. - 선언 HU와 상태 보존을 검사하는 26개는 작은 허용오차만으로 부적합으로 처리하지 않았습니다. HWPX
endNotePr/noteSpacing betweenNotes=1984와 별도 HWP 원시 레코드의1984/5669HU를 모델 없이 읽었고, 저장 원점·이미 소비한 간격·활성 base 이동을 유리수 산술10건으로 대조했습니다. 문서의 위치를 미세 px로 고정하는 것과 작성 단위의 정확한 환산·동일 좌표계 보존을 구분했습니다. 모든 실제 문서의 stale 판별·후속 paint까지 완료했다는 뜻은 아닙니다. - 나머지 12개는 아직 수용하지 않습니다. 11개는 생산의4/10/16/18/30/40/41px 완충·되감김 제한을 기대값에 포함하고 있어 독립 선언·실제 점유/Print 근거를 더 확인해야 합니다. 또 한 개의 lazy-base 기대6800HU는 전체 줄 끝을 순차 위치와 대응시킨 단순 계산12800HU와6000HU 차이가 납니다. 생산 코드는 후행6000HU를 별도로 차감하지만 그 anchor 소유·소비 근거는 확정하지 않았습니다. 기대값을12800으로 바꾸거나 생산식을 독립 정답으로 복사하지 않고 해당 항목을 pending으로 남겼습니다.
- 원 수정 기록과16개 도입 커밋·조상 merge를 추적했습니다. 과거 커밋 제목에
Merge PR이라고 쓰여 있어도 task 1139: 수식/미주 렌더링 정합 보정 및 미주 입력 지원 #1178·task 1209: task 1139 후속 미주·그림 흐름 보정 #1232·Task #1256: 미주 답안 제목 between-notes(7mm) 갭 복원 #1259·task 1261: 문28 조건 박스와 미주 간격 정합 보정 #1264·#1292는 GitHubmerged_at이 없습니다. 이를 실제 GitHub 병합으로 취급하지 않았습니다. 해당 검사를 포함한 task 1189: task 1139 후속 미주/수식 정합 보정 #1194·Task #1246: 미주 between-notes margin min-gap (HeightCursor) — closes #1238, #1246 #1247·Release v0.7.14 #1294·#1743의 실제 병합 메타데이터, 소스와 현재 조상 관계를 별도로 확인했습니다. 제목만으로 통합 출처를 확정하지 않았습니다. - 근거:
phase40-semantic-ledger-validation.json,source-semantics-batch-36.json,phase40-existing-tests.log,phase40-predicate-counterexample.json,phase40-independent-units.json,phase40-origin-chains.json(output/issue8232-audit/). 이번에는 새 시각 캡처를 실행하지 않았습니다. 기존 시각 목록 158조건·각 backend 2,647쪽은 그대로이며 전부 PASS 수가 아닙니다. 제품·정식 검사 보정 0건 / 개명 0건 / 전수 조사 미완료입니다.
41차 조사 — 활성 SVG 의미 검사와 동일 표 중복 검출 누락
tests/svg_snapshot.rs전체 **9함수(검사4·helper5)**를 읽고 기존4개를 재판정·신규5개를 연결했습니다. 누계 직접7,437개 / 775소스 파일, 원장 11,571그룹 / 2,134파일입니다. 미분류3,809 + 의미 메모113 + 파일 맥락212 = 분류 미확정4,134개이고, 독립 근거 pending502개는 직접 기록 안에 포함됩니다. 전체 감사·호출 폐쇄는 미완료입니다.- 현재
regression_suite_022의 실제 등록4개를 실행해 4 PASS / 0 FAIL, summary0.186초를 확인했습니다. 필터 밖255개는 통과 수가 아닙니다. 소스·바이너리 전후 SHA가 같습니다. 과거 골든 비교check_snapshot은 현재 호출0개이며 컴파일러의 dead-code 경고와 실제 등록을 대조했습니다. 파일명/옛 UPDATE_GOLDEN 설명만으로 활성 whole SVG 골든이라고 분류하지 않았습니다. 같은 호출의 SVG 결정성 검사는 별도 정상 계약입니다. - 동일 표 중복을 놓치는 공통 원인1개·root2개를 확인했습니다. 실제 RenderTree JSON에 같은 원문·내용·상자의 Table subtree를 추가하고 정확히2개임을 확인했습니다.
form_002_page_0은 전10쪽 중복 관측을 거쳐도 PASS했고,issue_157_page_1도 문단25 표 중복을 놓쳤습니다. 두 검사의 첫 표/첫 일치 선택이 원인입니다. 같은 변형의 정상 대조군table_text_page_0은 기존 표 개수 단언에서2≠1로 FAIL했습니다. 분석 정상 사본3 PASS와 변형2 PASS/1 FAIL을 구분하며, 실제 제품의 중복 출력이나 정식 FAIL→PASS 완료를 주장하지 않습니다. 원래 쪽·문단 소속/본문 비겹침을 유지하면서 중복 검출을 보완할 대상입니다. - 같은 세 입력·독립 Print를 현재 Native/fresh WASM으로 각 전13쪽 비교했습니다. form002 전10쪽 최저 96.86327% / 96.86530%(7쪽), 기부 통계 전1쪽과 주주총회 전2쪽은 각각 **100% / 100%**입니다. 90% 미달·쪽수 차이·누락0입니다. form002의98% 미만 페이지에는 절대 px 핀을 추가하지 않습니다. 원본 ZIP/XML의 표·셀·문단 소유와 독립 Print 내용, 별도 글꼴 hmtx 숫자1128/2048·
감2048/2048을 대조했습니다. 작은 상대 허용폭·source 글자 전진을 실물 쪽의 절대 좌표 핀으로 취급하지 않았습니다. - 대표 5쪽/backend 개관과 핵심2배 확대5영역의 정본 review/동일 standalone overlay를 직접 읽었습니다. form002의 체크박스·진한 제목·테두리에는 미세 차이가 남으며 raw100도 RGBA 완전 동일을 뜻하지 않습니다. 전13쪽 모두를 확대 판독했다고 쓰지 않습니다. 원 PR#181은 실제 CLOSED/unmerged이고 도입 커밋은 devel 직접 cherry-pick을 명시합니다. 현재 의미 계약의 실제 통합수정: PR #7382 분할 표·각주 통합과 메인터너 보정 및 전수 검증 #7505·fix: planet6897 PR 11개 통합과 조판·회귀 검증 보정 #7568·#8191과 조상 관계를 확인했고 현재 파일은#8191과 byte 동일합니다. 결정성 함수는 도입 이후 rustfmt 줄바꿈만 바뀌었으므로 도입 원문 byte 동일이라고 쓰지 않습니다.
- 근거:
phase41-semantic-ledger-validation.json,phase41-existing-tests.log,phase41-duplicate-counterexamples.json,phase41-origin-chains.json,phase41-independent-xml-metrics.json,phase41-independent-pdf-content.json,phase41-svg-semantics-evidence/state.json,phase41-reading-sheets.json(output/issue8232-audit/). 시각 목록 161조건·각 backend2,660쪽은 실패·재사용도 포함한 증거 목록입니다. 제품·정식 검사 보정0건 / 개명0건 / 전수 조사 미완료이며, 조사 뒤 실제 보정·새 명명·간접 호출/등록 갱신·재검증까지 진행합니다.
42차 조사 — CLI 숫자 계약과 쪽 주소의 검출 누락
verify_contract·extract_data_contract·digest_v2_contract·issue_3359_export_family_option_order네 파일 **1,039줄/55함수(검사34·helper21)**를 직접 확인했습니다. 신규55개를 연결해 누계 직접7,492개 / 779소스 파일입니다. 원장 11,594그룹 / 2,134파일, 미분류3,777 + 의미 메모113 + 파일 맥락212 = 분류 미확정4,102개이며 독립 근거 pending502개는 직접 기록 안에 포함됩니다.- 현행 suite004/006/009/016의 실제 등록34개를 선택해 34 PASS / 0 FAIL, summary2.211초를 확인했습니다. 필터 밖1,042개는 실행·통과 수가 아닙니다. source/실행 바이너리 전후 SHA가 같습니다. 사용자가 제외한 sample16·편람 검사는 복원하지 않았습니다.
- exit0/1/2/3, stdout0B, 문자 수40, 컨텍스트 상한50, 정수 금액, 범위1..2→3..4와16쪽의 마지막 인덱스15는 실물 페이지 px가 아닙니다. 같은 호출에서 측정한 표 수n에 n/n+1 조건을 주는 검사는 비교·봉투의 자기일관이며 독립적인 표 개수 정답으로 사용하지 않았습니다. MCP schema의 동적 배선 검사와 실제 세션/비밀번호 stdin 검증도 구분합니다. 이러한 정상 계약을 일괄±2로 변경하거나 이름만 바꾸지 않습니다.
- 부분 날짜의 쪽 주소를 검증하지 못하는 원인1개·root1개를 확인했습니다. 원문 단언을 유지한 분석 사본에서 실제 CLI 응답의 raw·정규화 날짜는 그대로 두고
page만999로 바꾸어도 1 PASS입니다. 정상 사본도1 PASS이며, 이 검사는 정수 존재만 확인합니다. 현재 실제 제품은 0쪽/문단18/문자주소0을 반환하므로 제품의 잘못된999쪽 출력이라고 주장하지 않습니다. 원본 XML과 독립 Print30쪽 중 첫 쪽의 부분 날짜를 확인했으므로, 올바른 raw/정규화 보호를 유지하며 원문 소유·주소 범위를 보완할 검사 대상입니다. 현재 미사용page_counthelper가 실제 범위 검사를 대신한다고 세지 않았습니다. - 원본 HWP CFB의 네 금액 표기를 조판 helper 없이 읽고, 유리수 십진수×단위 배수로 3,180백만원=3,180,000,000원 / 12.03억원=1,203,000,000원 / 2.15백만원=2,150,000원 / 57억원=5,700,000,000원을 대조했습니다. 원본 부분 날짜에 없는 일을 추가하지 않는 계약과 CLI 범위·오류 소비도 확인했습니다. 실제 통합 feat: kevin9327 연작 27건 통합 및 계약 보정 #4253·feat: Kevin 13개 기능 PR 누적 통합 #3816·feat: kevin9327 누적 PR 통합 검토 #3742·feat(cli): kevin9327 CLI·서식·정합 도구 통합 #3397, 후속 feat: 기여 PR 10건 통합과 조판·Studio 회귀 보정 #8228의 metadata/조상/source byte를 대조했습니다. #8228에서 제외된 검사까지 도입 당시 모습으로 되돌리지 않습니다.
- 근거:
phase42-semantic-ledger-validation.json,phase42-existing-tests.log,phase42-page-address-counterexample.json,phase42-actual-date-response.json,phase42-independent-source-and-units.json,phase42-origin-chains.json(output/issue8232-audit/). 이번 새 시각 캡처는0건이며, 독립 Print의 쪽수·문구 확인을 전쪽 Visual Sweep 완료로 쓰지 않습니다. 기존 시각 목록161조건·각 backend2,660쪽도 그대로입니다. 제품·정식 검사 보정0건 / 개명0건 / 전수 조사 미완료이며 실제 보정·새 명명·호출/등록 갱신·재검증까지 계속합니다.
43차 조사 — 병합 셀 격자 검출력과 유지할 치수선 px 계약
- 표 추출·편집 vpos 리셋·HWP3 도형 저장의 세 파일 **1,263줄/46함수(검사22·helper24)**를 확인했습니다. 신규45개와 기존 pending1개를 재판정해 누계 직접7,537개 / 781소스 파일입니다. 원장 11,616그룹 / 2,134파일, 미분류3,754 + 의미 메모113 + 파일 맥락212 = 분류 미확정4,079개, 독립 근거 pending은 502→501개이며 직접 기록 안에 포함됩니다.
- 현재 suite012/022/026의 실제 등록22개를 실행해 22 PASS / 0 FAIL, summary1.093초였습니다. 필터 밖754개는 통과 수가 아닙니다. 소스·실행 바이너리 전후 SHA가 같습니다. TAC 두 fixture의 continue로 실제 검사가 생략되지 않았는지도 별도 분석 사본에서 오류를 드러내도록 하여 두 입력 모두 편집/관계 단언 실행, 1 PASS를 확인했습니다. 이는 추가 독립 등록 검사1개라는 뜻이 아닙니다.
- 면적 합으로 중복 금지를 대신하는 원인1개·root1개를 확인했습니다.
export_tables_preserves_merged_spans는 병합 존재와 면적 합<=행×열을 검사합니다. 원본 CFB의 표는19×9,131셀이고171칸을 정확히 한 번씩 덮습니다. 실제 CLI JSON에서 (0,4)의1×1 셀을 (0,0)의 복제로 바꾸면 동일 셀 수131·면적171이지만 한 칸 중복/한 칸 누락입니다. 기존 병합 검사와 봉투/주소 범위 검사는 모두 통과했습니다(정상3 PASS, 변형3 PASS). 실제 제품이 중복 셀을 출력한다는 주장이나 정식 FAIL→PASS 완료가 아닙니다. 정상 병합·범위 보호를 유지하며 source 앵커/덮인 격자의 유일성·보존을 보완할 대상입니다. 원시 레코드로 다른 중첩/컨테이너 입력의 표2개/3개도 대조했습니다. - 반대로 #1892의 기존 화살촉 끝점±2CSSpx 검사는 유지할 근거를 확보했습니다. 현재 공개 저장 helper로 다시 만든 저장/비표시/가시 대조군 세 입력은 기존 독립 Print 입력과 SHA가 정확히 같습니다. 원본까지 네 조건의 각 전2쪽 Native/fresh WASM을 재산출했고1쪽 양쪽 raw가 모두99% 이상입니다. source 소유·본문/표 순서·누락/중복·가시/비표시 경로도 같은 기존 함수가 보호합니다. 독립 PDF path에서 기대 좌표 없이 가장 긴 채운 치수선을 선택한 실제 tip과 기대값 차이는 원본0.000006px 미만, 저장본 최대 0.478672CSSpx로±2 안입니다. 처음 감사 checker가 두 독립 Print의 tip도0.002px 이내로 같다고 가정한 것은 틀렸습니다. 그 가정을 폐기하고 원래±2 계약으로 대조했으며 제품 검사·허용폭은 변경하지 않았습니다. shaft 끝과 arrow tip을 혼동하지 않았습니다.
- 신규 시각 증거는 5조건·각 backend 전15쪽입니다. 도형 조건 최저 Native/WASM은 원본 99.71888/99.71890, 공개 저장·비표시 각각 99.73096/99.73097, 가시 대조 **99.68124/99.68126%**입니다. shortcut 원본 전7쪽은 96.75856/96.74946%(3쪽)이며90% 미달·쪽수 차이·누락0입니다. 대표7쪽/backend 개관과9영역2배 확대, 최저3쪽 review/standalone overlay를 직접 읽었습니다. 네 도형 조건의 빈2쪽 PNG/PDF 이미지16개도 실제 잉크 없음을 확인했습니다. 미세 획·색상·글리프 차이는 남으며, 원본7쪽을 편집8조건 전부의 Print 수용으로 확대하지 않습니다. shortcut의98% 미만 쪽에는 절대 px 핀을 추가하지 않습니다.
- 저장 후 현재 기하 차이<=1px, 용지에 대한 프레임 비율1HU, source offset/affine 보존·탭 null 마커·Column 논리 주소와 저장 vpos0은 과거 실물 페이지 절대 좌표 핀과 구분했습니다. 원본 CFB 문단16의0HU를 직접 확인했으며 옛 문서의76회라는 서술을 현재 원시 레코드 관측값73회로 대신하지도, 테스트 기대값으로 추가하지도 않았습니다. 실제 통합Task #1892: 대법원 서식(HWP3) HWP5 라운드트립 렌더 대변위 수정 — 4중 결함 체인 #1905·Task #2299: 편집 vpos 재계산의 저장 리셋·문단 여백 보존 — 다단 단-밴드 소멸/쪽수 이탈 수정 #2314·#3304와 후속#8191의 의도·현재 source byte/조상 관계를 확인했습니다.
- 근거:
phase43-semantic-ledger-validation.json,phase43-existing-tests.log,phase43-cell-duplicate-counterexample.json,phase43-independent-raw-contracts.json,phase43-independent-arrow-endpoints.json,phase43-input-producer.json,phase43-group-vpos-evidence/state.json,phase43-reading-sheets.json,phase43-origin-chains.json(output/issue8232-audit/). 시각 목록 166조건·각 backend2,675쪽은 실패·재사용을 포함한 목록입니다. 제품·정식 검사 보정0건 / 개명0건 / 전수 조사 미완료이며 실제 보정·새 명명·간접 호출/등록 갱신·재검증을 계속합니다.
44–46차 누적 요약
본문 한도를 위해 이 세 차수의 자체 조사 서술만 요약합니다. 원문은 각 phase44/45/46-final-issue-body.md와 GitHub 수정 이력, 함수·실행·입력 hash 원장에 보존합니다. 미완료·검출 누락과 검증 범위는 유지합니다.
- 44차: 11파일124함수, Native57PASS·실제 WASM trace E2E2PASS. 같은-ID JSONL의276CU를275CU로 바꿔도 행수만 비교하는 기존12검사가 모두PASS했습니다.
extract_char_shape_ir.py:333은 XML 전체 노드 ordinal을 문단 번호로, scalar 수를 UTF-16CU로 기록했습니다(진단 A😀/B 기대0/3·4CU→실제0/2·3CU, 문단0/1→1/6). 실제 HWPX 첫 문단도0을1로 기록합니다. 현재 JSONL/Rust2591행의 일치 자체는 독립 source 정답이 아닙니다. HWPX2394행 모두의 오류 확정은 아닙니다. 원인3개/root2개이며 검사·추출기 보정은 미실시입니다. 원장 integration56/helper49·phase44-*-counterexample.json·phase44-independent-contracts.json을 연결합니다. glyph trace hash는 bbox/전체SVG golden과 다르고4literal pin은 deferred, 합성 localState는 실제 OS/브라우저 paint 관측이 아닙니다. - 45차: 5파일39함수(신규38·pending1 재판정), Native12PASS.
issue_4138_reparsed_split_frame_cache.rs:116은 실제 중첩 표의 TextRun18개(25쪽)·19개(156쪽)를 제거해도PASS했습니다. 모델 내용/행열만으로 실제 paint 보존을 대체한 검출 누락1root이며 정상 저장 앵커·원문 보호를 유지해 보완할 대상입니다. 수식5문서 p1은 현재 양backend 최저99.53928% 이상·독립26origin·9영역/backend2x 판독으로 기존±2px를 유지할 자격을 확인했습니다. 합성±의 주변 겹침은 Print에도 있습니다. 캡처는7조건 전12쪽+split 지정4쪽이고 전체197쪽 신규 완료가 아닙니다. 원장 integration57/helper50·phase45-independent-origins.json·phase45-reading.json·phase45-split-paint-counterexample.json을 연결합니다. - 46차: 조회 CLI10파일97함수·Native53PASS. 원시 CFB의1구역/13문단/중첩 LIST_HEADER·TABLE0, 글자높이1000HU, 용지·여백을 실제10query와 대조했습니다. listCount2는 구역수가 아닌 예약 ID0/1 뒤의 상한이고,120,120은 히트 입력/echo입니다. 자료형·봉투·종료코드·문자열 blacklist를 독립 물리좌표 정답이나 모든 간접 호출의 읽기 전용 증명으로 확대하지 않습니다. 새 부적합 px0은 이 범위에만 해당합니다. 잘못된 copy휴리스틱의
git log --follow를 버리고 실제경로 추가/통합5666·5674→7954의 조상·현재byte를 확인했습니다. 원장 integration58/helper51·phase46-independent-query-contracts.json·phase46-origin-chains.json입니다.
세 차수 모두 실제 검사 수정/issue_8232 개명0이며 전수 조사는 미완료입니다. 함수 판정·pending·시각 카탈로그의 최신 누계는 위 현재 진행 상황과 후속 차수를 따릅니다.
47–55차 누적 요약 — 동기화 전 head의 이력
자체 조사 이력만 요약하며 전문은 prior-47-55-unabridged.md와 각 차수 producer·TSV·독립 계약·직접 판독·원인 계보·게시 영수증에 보존합니다. 아래 수치는 238de6de41a208648f4ade6b494fe433a81c1fce의 이력이며 최신 head 통과가 아닙니다.
- 47–48차: Native 4+3 PASS, 전26+12쪽/backend·독립 좌표와 확대 판독으로 px root9개의 근거를 보완했습니다. 98% 미만인 다른 쪽은 별개입니다.
- 49–51차: CLI/도구의 61+99함수와 helper1·별도41함수를 점검했습니다. Native35+67·Skia24·비활성1 PASS와 PDFium8PDF/11쪽을 대조했고 실물 페이지 자격으로 확대하지 않았습니다.
- 52차: Native3 PASS와 전66쪽/backend를 대조했습니다. **overfill45쪽 N47.62515/W47.62403%**는 실제 fix(renderer): #7877 통합 후 원본 프레임·HFT 출력 회귀 보정 (#7902) #7941 입력/PDF가 같고 26×9 표와 본문이44.67CSSpx 이동해 보류입니다. 첫 원인 커밋은 미확정입니다.
- 53차: 원본 변환/출처 41함수, Native17 PASS·비Mac1 미등록입니다. 원문XML/Node서명·변조 반례와 실제 통합 계보를 확인했고 Linux의 다른 HEAD·사용자 자료는 보존했습니다.
- 54차: 60함수(신규44/재검토16), Native28 PASS, 11조건 전136쪽/backend입니다. 26고유 preview·15확대를 판독했습니다. **[renderer] 중첩 표 행 높이를 첫 줄 크기로만 잡아 쪽 넘김 판정이 뒤집힌다 — 1쪽 하단 행이 2쪽으로 안 넘어가고 96자·그림 2개 소실 (3090867) #5884 p2 N88.37652/W71.69801%**는 원본 BMP/양쪽 Image node가 있어도 WASM 내부가 백색입니다. **terminal-follower p2 N95.63313/W95.63377%**도 Print row2가 출력p1에 있어 내용 동등 PASS와 구분했습니다. 원본22194HU·141/283HU·800HU×120%의 상대 lead45.413333CSS는 유지할 계약입니다. p2의128.34±2·규제p34의147.6784±1은98% 자격이 없습니다. terminal-old p2의537.17±2는 양쪽100·독립537.171997·확대 판독 근거를 확보했습니다. 규제 전82쪽 최저37.03370/37.06577%, 양쪽 미달7/20/21/38/51/82쪽, nested-split 두 조건p5도85.62%입니다.
- 55차: 규제 완료/구조분류 39함수(신규38/재검토1), Native18 PASS입니다. 80168 전157쪽/backend 최저N95.44852/W95.44144%,90미달·누락0입니다. 양쪽98미만은30/57/85/140/152쪽입니다. 17preview·20확대를 판독했습니다. 90쪽은 양쪽raw100이어도 WASM ‘계획’이 얇고 17/93/121쪽도 굵기 차이가 있습니다. 논리bold=true와 실제paint를 구분하며 17쪽 dark<128은N506/W371/PDF480입니다. 원인은 미확정입니다. 독립 기준선8건·CFB를 대조하여133/139쪽의 기존±2와13줄/4줄·36572HU·소유 관계를 확인했고 다른7caller+near는 보류했습니다. clause의 -1280/-1281HU는 명시 구조분류 정책입니다. 초기 WASM 폰트 적재 실패137쪽 부분 결과는 수용하지 않았고 원본글꼴/guard 불변 재실행을 완료했습니다.
이전 누계5,741개 Rust 검사+2,381개 helper/스크립트=8,122함수, 원장11,945·pending499·시각194조건/3,078쪽/backend는 동기화 전 snapshot입니다. 제품/검사 수정0·개명0이며 전수 완료가 아닙니다.
앞선 댓글은 당시 조사 snapshot입니다. 현재 범위와 해결 방안은 이 본문을 따릅니다.
완료 조건
- source 내부
.rs, 전체/tests/**, helper·동적 corpus·fixture/golden·스크립트/E2E를 누락 없이 조사하고 의미 판정·조건부 수집·실제 소비 경로를 연결함. - 자료 부족·미분류를 해결하고 각 판정의 독립 기대값·해당 페이지·실제 출력 증거를 연결함.
- 현행 지침에 부적합한 기존 기대값·검사 방식을 모두 보정함. 정상 원본 단위·관계·구문/저장 계약은 유지함.
- 보정 대상 파일·함수를
issue_8232새 이름으로 변경하고 실제 수집·호출에서 이전 이름 잔여·중복·누락이 없음을 확인함. - 필요한 원본 출력 보정과 관련 전쪽 Native/fresh WASM raw90% 이상·쪽수/내용/직접 판독을 확인하고, 유지하는 px 검사에는 페이지별98%·독립 기대값·±2px·관계 보호를 입증함.
- 수정 전후·정상 대조군·영향 범위 집중/전체 회귀·lint/build·수집 게이트 등 필수 검증을 완료하고, 미달을 숨기는 삭제·완화가 없음을 확인함.
- 후속 PR 단계와 승인된 CI·통합·후속 처리를 완료함. 미완료가 남으면 이슈를 닫지 않음.
Activity
jangster77 commentedon Oct 25, 2026
#8232 전수 조사를 시작했습니다.
238de6de41a208648f4ade6b494fe433a81c1fce, 로컬audit/8232-px-regressions-20261025.src/**·각 crate.rs의#[cfg(test)]/조건부 테스트와/tests/**, helper·fixture·생성/실행 경로, Studio/Node/E2E를 조사합니다.jangster77 commentedon Oct 25, 2026
#8232 조사 기록 — 정적 전수 목록과 현재 증거 대조
사용자 요청에 따라 조사와 이슈 업데이트만 수행했습니다. 제품·회귀 검사·fixture·baseline을 수정하지 않았고 PR·push를 하지 않았습니다. 이후 개선은 새 PR에서 처리합니다.
조사 기준
audit/8232-px-regressions-20261025, base/head238de6de41a208648f4ade6b494fe433a81c1fce. 착수 시 upstream/devel fetch 후 동일 SHA를 확인했습니다.범위와 실제 수집
.rs#[test]4,248개src/+crates/*/src#[test]4,072개/tests/경로의 Rust#[test]7,679개/tests/전체 파일 경로src/·tests/·crates/아래에서 추적 목록 밖의.rs는 이28개뿐. 원본case에 전부 연결, 직접 테스트 정의0cargo nextest list --workspace --cargo-profile release-testexit0. 테스트 실행·PASS 수가 아님CARGO_TARGET_DIR=target/pr-review, jobs8로 실제 등록 목록을 취득했습니다. 새 full-nextest·WASM·Visual Sweep 실행은 하지 않았습니다. source/fixture가 바뀌지 않은 기존 증적의 동일성을 확인하여 조사에 사용했습니다.source unit registry의4,100개와 AST4,072개의 차이: 외부 모듈3개에서 중복 집계51개, registry 별도 항목으로 잡히지 않는5파일의23개로
4100 - 51 + 23 = 4072입니다. 테스트 누락 판정과 같지 않습니다. 이23개 중17개는 실제 Native 목록에 있으며, 나머지6개는native-skia조건부라 기본 feature 목록에서 제외됐습니다. 후속 적합성 심사에서 해당 feature/target 조건을 별도 추적해야 합니다. 외부 별도 테스트 모듈과cfg(all(test,...))를 이번 조사에서 제외하지 않았습니다.정적 후보 원장
숫자와 기하 assertion/helper를 보수적으로 추출한 결과 2,707함수·helper 그룹 / 1,071파일 / 4,756구문 지점입니다. source내부495그룹,
/tests1,909그룹, 테스트스크립트291그룹, 기타스크립트12그룹입니다. helper중복·합성계약·운영코드 오탐이 포함되어 부적합 검사2,707개라는 뜻이 아닙니다.upper/lower같은 별칭의 누락을 점검하기 위해0.3수치도 별도 역검색했습니다. 30구문/14파일을 확인했으며 메시지의0.3, 비율0.3%, font em 및 운영코드 IIFE 오탐을 구분했습니다.issue_7902...의 위아래 여백 차이≤0.3은 절대 페이지 위치가 아니라 가운데 정렬 관계입니다.현재 증거로 확인한 98% 미만 절대 고정 — 2개 테스트
391.3/535.2/580.3, 대칭±6px 및 아래방향6px미만first_x <235,second_x <222절대 x상한두 함수 모두 실제 Native suite에 등록되어 있습니다. 각각
regression_suite_017,regression_suite_007에서 확인했습니다. 이번에 테스트를 실행하거나 고치지 않았습니다. 98% 자격 미충족은 원래 빈 슬롯/그림 어울림 기능이 쓸모없다는 판정이 아닙니다.원 해결 경로도 확인했습니다.
3380ada6d92ad2bd818d9427ddcaf793fa54cc0e→ 메인터너 입력중복 제거·기존 PDF재사용 → 통합 PR#7264, commit62f1048f469f767a1c9f200209d23cf48b90016a. 당시 보정·독립 PDF 기록에는 공통 원점 약4px 잔여도 명시되어 있습니다. 현재 좌표 자격과 원래 기능 개선을 구분합니다.7f026325d279b8a306412cb9beed8b440b753044, 실제 mergefc8cf550952792654de7b8fd88fe1c32233b61c2. 원래 목적은 저장 LineSeg column_start의 이중 적용 방지입니다.동일 입력·PDF 해시:
samples/issue6924/148751598-briefing.hwp/pdf/148751598-briefing-2020.pdf03c93b021e01652b1ca5ba3a4a301decf9da33484af7d088987327efcb59e61098ce52ec0a6ed25ba73070b22c743cb72d129113456ae3019f417d1b53ee9dd3samples/[2027] 온새미로 1 본교재.hwp/pdf/[2027] 온새미로 1 본교재-hwp-2020.pdfe8592e74c9a8425c4ee2c5824d012ebe45e9f6dd36880b784ba594b4fd0a31ce450c793f33a134198936504b38d3b21c01a343a11c09c13e5a7a00e39e2d58c7TSV: 6925 Native / 6925 WASM / 1440 Native / 1440 WASM.
오탐을 제거한 대조와 별도 증거 확인 대상
증거 재사용과 미완료 범위
현재 제출 증거 35조건, Native2,041쪽/fresh WASM2,041쪽에서35개 입력/PDF쌍의SHA를 실제 파일과 대조했습니다. producer
673c1d5f7cdcb5573b793ba2d2abaaedd2602134와 조사head의src crates rhwp-studiodiff가0임을 확인했습니다. 현재 증거 provenance를 사용했으며 과거 전체최저값을 각 검사 쪽수의 값으로 대신하지 않았습니다.2,707그룹의 자동 입력·페이지 연결은 다음 상태입니다. 이것은 적합/부적합 수가 아니라 증거 검색 상태입니다.
남은 조사: 우선literal88그룹을 포함한 나머지 후보의 독립 기대값·현재 입력/글꼴/쪽/양쪽raw·확대 판독 연결, 타파일helper·동적fixture·feature/target 조건별 추가 연결입니다. AST는 Rust/JS/TS완전한 심볼·매크로전개 해석기가 아닙니다. 기본 feature Native목록만으로 조건부Skia/Windows/WASM경로까지 실제 실행했다고 주장하지 않습니다. 생산 TypeScript
rhwp-studio/src/core/wasm-bridge.ts1파일은 파서오류가 있어 별도 문자열검색(직접assert/expect0)을 했고, 테스트코드 AST파서오류는0입니다. shell/PowerShell38파일(테스트·harness표식28)도 별도 원장에 남겼으며,svg_regression_diff.sh는 before/after SVG byte차이 보고도구로 독립PDF98%자격을 대신하지 않습니다.전체 의미 판정·시각 증거 연결·수정·전후회귀·CI/통합은 미완료입니다. 이 이슈의 완료 체크박스를 완료로 바꾸거나 이슈를 닫지 않습니다.
로컬 조사 산출물
/Users/tsjang/rhwp/output/issue8232-audit/에만 보관했습니다. 저장소 changes에 임시자료를 섞지 않았습니다.files.json,functions.json,assertions.json,indirect.json,macros.json: 전체 구문/간접 참조 원장candidate-functions.tsv/json:2,707그룹 전체 후보literal-pin-priority.tsv/json:88그룹 우선 조사 목록tolerance-0p3-reviewed.json:30구문 수동 분류와 사유canonical-suite-inventory.json,canonical-suite-check.json,generated-suite-reconciliation.json:정본/생성suite 대조conditional-unit-reconciliation.json,runtime-selected-tests.json:조건부 및 확인된 검사의 실제 등록nextest-list.json,nextest-list.log:Native 실제 등록 원문/로그(exit0, 컴파일8분40초)current-evidence-index.json:현재35조건의 해시와 전쪽 rawPR·개선 작업은 사용자 후속 지시 시 별도 단계로 진행합니다.
jangster77 commentedon Oct 25, 2026
#8232 부록 — 실물 입력과 literal이 함께 검출된 우선 조사88그룹
자동 검출 후보를 보존하는 목록입니다. 88개 전부 위반 또는 적합이라는 뜻이 아닙니다. HU/치수·상대계약도 포함되며, 본 조사 댓글의 확인2건은 상수/상한 수동 추적이므로 별도로 다룹니다. 현재 raw연결이 있어도 직접 판독과 기대값 출처까지 완료한 판정이 아닙니다.
closure@10/samples/field-01.hwpfield-01.hwp쪽 힌트:페이지 해석 필요
closure@482ta-pic-001-r-쪽영역안제한.hwpta-pic-001-r-쪽영역안제한no.hwp쪽 힌트:페이지 해석 필요
closure@5issue6882/synth_cell_enter_table_growth.hwp쪽 힌트:페이지 해석 필요
issue_3257_centered_trailing_picture_uses_full_line_widthsamples/issue3257/webhangul_product_spec_v1.1.hwp쪽 힌트:4
raised_button_has_dark_bottom_edge_inside_original_bounds../../samples/hwpx/form-01.hwpx쪽 힌트:1
combo_label_origin_matches_independent_hancom_pdf../../samples/hwpx/form-01.hwpx쪽 힌트:페이지 해석 필요
issue_5720_table_width_stays_at_declarationsamples/issue5720/2734559_mixed_column_grid.hwpx쪽 힌트:1
issue_5721_textbox_float_tables_keep_stored_ordersamples/issue5721/2568129_textbox_float_tables.hwp쪽 힌트:1
issue_5727_next_line_after_inline_picture_starts_at_stored_horzpossamples/issue5727/156732636_inline_logo_cell.hwp쪽 힌트:1
issue_5846_cut_fragment_defers_partial_nested_tail_rowsamples/task2097/75544_pii_bunseok.hwpx쪽 힌트:2,3,59,60,65,66
object_anchor_line_is_not_stacked_when_a_sibling_cell_expands_the_rowsamples/issue6312/fiscal_trend_float_table_anchor.hwpx쪽 힌트:1
anchor_ownership_follows_the_cell_after_serialization_order_changessamples/issue6312/fiscal_trend_float_table_anchor.hwpx쪽 힌트:1
liver_picture_row_and_caption_keep_the_independent_pdf_framesamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:11
blank_line_spent_spacing_is_not_added_again_to_the_lazy_originsamples/issue6312/fiscal_trend_float_table_anchor.hwpx쪽 힌트:3
first_page_inline_pictures_follow_their_text_linesamples/table-in-tbox.hwp쪽 힌트:1
second_page_repeated_pictures_keep_distinct_cell_pathssamples/table-in-tbox.hwp쪽 힌트:2
left_aligned_table_prefix_does_not_expand_to_fill_the_linesamples/table-in-tbox.hwp쪽 힌트:1
the_ccc_image_is_restored_in_its_original_fragment_cellsamples/issue6782/1480000-201900042-chemical-product-labeling-study.hwp쪽 힌트:77
centered_wrapper_preserves_its_cell_frame_and_nested_table_originsamples/hwpx/20260909-para-table.hwpx쪽 힌트:3
tac_host_text_uses_its_own_stored_line_baselinesamples/issue7018/2769535-records-inspection-plan.hwpx쪽 힌트:페이지 해석 필요
tac_host_text_baseline_matches_the_hangul_oraclesamples/issue7018/2769535-records-inspection-plan.hwpx쪽 힌트:페이지 해석 필요
real_header_diagonal_is_present_once_on_all_six_pagessamples/task2146/21761835_jeonjik_exemption_table.hwp쪽 힌트:페이지 해석 필요
issue_7048_table_first_fragment_keeps_the_footer_clearsamples/issue6782/1480000-201900042-chemical-labeling-standards.hwpsamples/issue6782/1480000-201900042-chemical-product-labeling-study.hwp쪽 힌트:페이지 해석 필요
issue_7086_empty_paragraph_between_two_table_hosts_keeps_its_linesamples/issue7062/tac_object_host_line_height.hwp쪽 힌트:페이지 해석 필요
issue_7086_downstream_content_shifts_by_the_same_slotsamples/issue7062/tac_object_host_line_height.hwp쪽 힌트:페이지 해석 필요
issue_7095_fragment_box_opens_the_table_outer_top_marginsamples/issue7062/tac_object_host_line_height.hwp쪽 힌트:페이지 해석 필요
issue_7095_last_fragment_and_downstream_contracts_holdsamples/issue7062/tac_object_host_line_height.hwp쪽 힌트:페이지 해석 필요
issue_7095_first_fragment_starting_at_page_top_is_pinned_toosamples/issue6023/30269_reform_recommendation.hwp쪽 힌트:페이지 해석 필요
fragment_budget_preserves_units_with_visible_and_empty_hostssamples/issue7062/tac_object_host_line_height.hwp쪽 힌트:페이지 해석 필요
qualified_last_fragment_and_following_body_keep_print_positionssamples/issue7095/36308670_split_row_declared_tail.hwpx쪽 힌트:2
issue_7097_row_height_drops_the_trailing_spacing_of_an_empty_last_linesamples/issue2470/36382471_masked.hwpx쪽 힌트:페이지 해석 필요
issue_7097_following_row_moves_up_by_the_same_amountsamples/issue2470/36382471_masked.hwpx쪽 힌트:페이지 해석 필요
negative_percent_tac_hosts_preserve_the_three_page_physical_layouttests/fixtures/planet_review_20260917/156676190_[교육부 02-27(목) 조간보도자료] 2026년 국립대 임대형 민자사업(BTL) 기숙사 추진.hwpx쪽 힌트:1,2
hwpx_continuation_fragment_reopens_saved_outer_top_marginsamples/issue7336/stored_frame_page_larger_rowbreak.hwpx쪽 힌트:2
assert_saved_caption_table_referencesamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:90,91
assert_empty_opening_picture_fragmentsamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:12
assert_picture_fragment_remaindersamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:13
assert_interior_control_picture_table_anchorsamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:12
assert_empty_picture_table_closed_outer_framesamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:11
assert_figure11_closed_source_framesamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:14
assert_figure64_next_page_source_framesamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:155,156,157
assert_terminal_table_frame_uses_outer_top_oncesamples/정책연구용역사업 중간진도보고서(살아있는 간장 기증자의 의학적 선별기준 연구).hwpx쪽 힌트:120,121
the_hyphen_in_a_hangul_run_advances_with_latin_slot_metricssamples/issue6776/78494-virtual-convergence-industry-decree.hwpx쪽 힌트:8
picture_successor_keeps_source_gap_and_independent_print_baselinesamples/issue6031/3249937_asset_management_rules.hwpx쪽 힌트:36
gray_grid_keeps_its_print_coverage_cell_owners_and_pdf_originsamples/issue5941/1480000-201900698-native-neartop-reset.hwp쪽 힌트:143
declared_onepoint_provider_preserves_the_heading_owner_and_print_successor_originsamples/task2097/75544_pii_bunseok.hwpx쪽 힌트:65
compressed_body_keeps_the_authored_indent_aligned_with_its_continuationsamples/task2097/75544_pii_bunseok.hwpx쪽 힌트:21
justified_terminal_glyph_preserves_the_source_frame_and_contentsamples/task2097/75544_pii_bunseok.hwpx쪽 힌트:11,38
worklife_symbol_point_preserves_source_and_independent_completed_page_positionsamples/issue6145/worklife_balance_index_156607916.hwpx쪽 힌트:5
rotated_picture_keeps_its_unrotated_paint_frame_and_both_query_routespublic-picture-outlines.hwpx쪽 힌트:1
completed_shortcut_last_page_keeps_both_column_tails_and_print_baselinessamples/basic/shortcut.hwp쪽 힌트:페이지 해석 필요
stored_hyphen_uses_the_measured_latin_face_and_preserves_source_membershipsamples/task2097/75544_pii_bunseok.hwpx쪽 힌트:10
applying_indent_to_hancom_paragraph_draws_itsamples/issue6190/center_align_first_line_indent.hwp쪽 힌트:1
issue7642_anchor_stack_page12_footer_keeps_print_position_and_source_ownershipsamples/issue1880_anchor_stack_sb_convert.hwpx쪽 힌트:12
narrow_square_keeps_side_lanes_and_empty_line_flowkiit-narrow85-hancom.hwp쪽 힌트:페이지 해석 필요
application_final_fragment_preserves_source_rows_and_print_boundarysamples/issue7840/1150200_youth_vision2030_application.hwp쪽 힌트:4
original_gist_preserves_second_row_ownership_and_independent_print_positionstests/fixtures/issue7872/nested-tac-row-drop-original.hwpx쪽 힌트:페이지 해석 필요
original_equations_keep_control_ownership_roman_units_and_print_origintests/fixtures/issue7873/eq-rm-quarterspace-original.hwpx쪽 힌트:1
overfill_opening_pages_keep_the_last_definition_and_next_heading_originssamples/table_giant_cell_overfill.hwpx쪽 힌트:1,2
stored_frame_first_page_keeps_form_title_signature_and_printed_bottomsamples/issue7336/stored_frame_page_larger_rowbreak.hwpx쪽 힌트:1
scattered_header_pages_two_and_three_keep_the_continuation_and_next_tablesamples/table_scattered_header_rowbreak.hwp쪽 힌트:2,3
carried_anchor_first_page_keeps_the_last_body_line_and_footnote_baselinessamples/issue5543_carried_anchor_ladder.hwpx쪽 힌트:1
hft_hwp_and_hwpx_pages_104_keep_source_face_and_post_table_body_originssamples/issue1949_giant_cell_nested_tables_perf.hwpsamples/issue1949_giant_cell_nested_tables_perf.hwpx쪽 힌트:104
observed_indentation_survives_reflow_and_both_save_formats{name}.pdf쪽 힌트:1
body_source_soft_wrap_survives_edits_and_saves_without_hard_breaks{name}.pdf쪽 힌트:페이지 해석 필요
rotated_text_hit_and_cursor_follow_the_painted_frame_through_both_saves{}/pdf/issue7998/text-transform/{name}.pdf쪽 힌트:페이지 해석 필요
merged_grid_shares_declared_column_boundaries_on_completed_page17samples/80168_regulatory_analysis.hwp쪽 힌트:17,18
source8152-d80168 p18 N99.52505/W99.51453
continuation_keeps_final_row_frame_and_plan_on_completed_page90samples/80168_regulatory_analysis.hwp쪽 힌트:90
complete_wrapper_preserves_following_blank_heading_and_table_on_completed_page93samples/80168_regulatory_analysis.hwp쪽 힌트:93
empty_line_cut_keeps_amendment_and_existing_label_aligned_on_completed_page109samples/80168_regulatory_analysis.hwp쪽 힌트:109
bold_decoration_preserves_hancom_line_partition_on_completed_page133samples/80168_regulatory_analysis.hwp쪽 힌트:133
absolute_nested_table_keeps_width_and_text_inside_owner_on_completed_page139samples/80168_regulatory_analysis.hwp쪽 힌트:139
partial_row_cut_keeps_independent_physical_frame_on_completed_page121samples/80168_regulatory_analysis.hwp쪽 힌트:121,122
source8152-d80168 p122 N99.70367/W99.68677
carried_rowspan_label_keeps_its_print_center_and_page_ownersamples/80168_regulatory_analysis.hwp쪽 힌트:60,61
source8152-d80168 p61 N99.78850/W99.76394
single_cell_opening_fragment_preserves_successor_sentence_ownersamples/80168_regulatory_analysis.hwp쪽 힌트:29,30
source8152-d80168 p30 N95.83355/W95.83355
empty_leading_paragraph_keeps_its_line_space_in_nested_table_alignmentsamples/stored-nested-content-flow/cell-{align}-collapsed.hwpx쪽 힌트:페이지 해석 필요
saved_empty_leading_paragraph_preserves_pdf_table_and_border_positionsempty-first-{align}.hwpx쪽 힌트:페이지 해석 필요
hancom_recomposed_lines_and_nested_table_match_pdf_positionswidth-{align}.hwp쪽 힌트:페이지 해석 필요
standalone_table_character_border_preserves_pdf_decoration_marginshost-char-border-off.hwpxmargin-both-1000.hwpmargin-both-2000.hwpmargin-min-700.hwpmargin-min-800.hwpwidth-top.hwp쪽 힌트:페이지 해석 필요
stored_text_tail_follows_the_measured_table_and_preserves_the_line_gap../../samples/stored-table-text-tail/native-8-0.hwpx쪽 힌트:페이지 해석 필요
saved_whitespace_row_keeps_its_character_border_width../../samples/stored-table-text-tail/native-8-0.hwpx쪽 힌트:페이지 해석 필요
issue_1418_first_page_table_top_overlaps_title_textbox_centersamples/2026_oss_rst.hwp쪽 힌트:1
issue_1486_page29_tac_logo_aligns_with_text_linesamples/hwpx_sample2.hwpx쪽 힌트:29
center_cell_anchored_picture_is_vertically_centeredsamples/ta-pic-001-r-쪽영역안제한.hwpx쪽 힌트:페이지 해석 필요
pic_pos_valign_ignored_in_center_cellsamples/ta-pic-cell-center-pos-bottom.hwpx쪽 힌트:페이지 해석 필요
pic_pos_valign_ignored_in_top_cellsamples/ta-pic-cell-top-pos-center.hwpx쪽 힌트:페이지 해석 필요
issue_2308_nested_non_tac_table_uses_table_content_boxsamples/76076_regulatory_analysis.hwp쪽 힌트:34
issue_4690_stored_column_start_line_keeps_body_widthsamples/issue4690/30098_indent_over_stored_cs.hwp쪽 힌트:3
jangster77 commentedon Oct 25, 2026
#8232 추가 조사 — 실행 경로 전건 연결·88그룹 의미 분류·새 MCP Print 5조건
아직 전수 의미 심사가 완료된 것은 아닙니다. 숫자 목록만으로 조사를 완료 처리하지 않고 실제 모듈·매크로·독립 PDF 연결을 보완했습니다. 제품 코드와 테스트는 아직 수정하지 않았습니다.
최신 작업지시 반영
issue_8232기준의 새 이름으로 변경합니다. 이전 이슈 번호를 이름에 남기지 않습니다. GitHub의 기존 이슈를 일괄 개명하는 뜻으로 처리하지 않습니다.output/issue8232-audit/아래에만 있습니다.1. Native 등록 11,639건의 정의 경로 연결 완료
Cargo metadata의 workspace target에서 인라인/외부
mod,#[path],include!, 파일 수준#![cfg],cfg_attr(..., test)와proptest!를 추적했습니다.native-skia조건을 포함합니다. 나머지는 WASM 전용, subsecond-dev, PDF feature-off/추가 codec, debug_assertions, macOS 제외 unix 조건입니다. 등록되지 않은 조건을 삭제나 유효 검사 누락으로 추정하지 않았습니다.#[cfg(test)]registry 차이만으로 실제 누락을 판단하지 않습니다. 예를 들어 CanvasKit7건은include!로 실제 호출되고, kerning11건은cfg_attr로 Native 테스트가 됩니다.근거:
module-graph-tests.json,module-graph-gaps.json,runtime-macro-expansions.json,runtime-source-reconciliation-summary.json.2. 우선 후보88그룹의 기하 assertion 의미 분류
이88개는 최초 literal 후보에 대한 의미 분류이고, 전수 조사 전체의 최종 부적합 건수가 아닙니다. 상수·튜플 변수 뒤에 숨은 좌표처럼 이 목록 밖에서 확인한 대상도 함께 조사합니다.
소스 내부에서 실물 입력이 연결된22그룹도 확인했습니다.
src/renderer/layout/integration_tests.rs의 #3257 그림x129.8±2와 TAC 합성 문서의 CELL baseline122.1±2는 독립 좌표 확인 대상입니다. 같은 TAC 검사의 NEXT161.3은 원본4160HU와 저장 baseline에서 유도한 축이어서 분리했습니다. 배경 그림의 page(0,0)·출력 bitmap 크기·소속/순서·HU 저장 계약을 동일하게 취급하지 않습니다.근거:
priority-semantic-reviewed.tsv/json,source-input-semantic-reviewed.json.3. MCP 새 독립 Print와 현재 Native/fresh WASM 전쪽 비교
5개 입력 모두
rhwp info --json의 저장 제품이2022 이하임을 확인하고 engine2020·timeout1800으로 출력했습니다. 실제 한컴 11.0.0.9136 / hwp-managed-direct-dll-host / Print method0 / hancom2020_pdf_driver_one_up / preprocess none을 status와 download에서 확인했습니다. 기존 PDF는 덮어쓰지 않았습니다.현재 source head
238de6de41a208648f4ade6b494fe433a81c1fce에서 Native Skia 빌드 exit0, locked wrapper fresh WASM 빌드 exit0을 확인했습니다. Mac WASM은--target web --out-dir pkg --no-opt로컬 대체 빌드이며 Docker 최적화로 주장하지 않습니다. root pkg와 감사용 고정 pkg의 실제 JS/WASM hash가 같습니다. 새 WASM hash는0a81d25f3e910d91d9b89fa5a06dbcb5cd6f38d126cb2caf3b1abb27bffe118d입니다.현재 canonical Visual Sweep의 Native Skia PNG / fresh WASM Print Canvas PNG / PDFium / 96 CSSpx / 2px 관용 / page-workers8로 전쪽 비교했습니다. 이 값은 새5조건의 결과이며 기존35조건 TSV의 일부를 다시 산출했다고 쓰지 않습니다. 비교 PNG에서 canonical TSV를 별도 산출했으며 입력 PNG hash를 기록했습니다.
samples/issue6312/fiscal_trend_float_table_anchor.hwpxsamples/issue3257/webhangul_product_spec_v1.1.hwpsamples/hwpx/form-01.hwpxsamples/tac-host-spacing.hwpxsamples/issue2470/36382471_masked.hwpxNative/fresh WASM 각각14쪽이며 누락·중복·쪽수 불일치가 없습니다. 마지막 입력의 Native 미달은 그대로 실패로 보존했습니다. Native 전체 통과 또는 양쪽98% 통과로 묶지 않았습니다.
#7150 입력의 미달 원인 구분
해당 HWPX ZIP에는 BinData가 없고, 그림2개의
binaryItemIDRef가 빈 문자열입니다. 직접 review에서 Native만 회색 missing-image 표식2개를 인쇄하고, 한컴 Print와 WASM Print는 그 잉크를 표시하지 않는 것을 확인했습니다.src/renderer/skia/renderer.rs의 Image 데이터 결측 fallback이 회색 표식을 그리는 소비 경로도 읽었습니다.따라서77.19425를 곧바로 표 원점 오류나 글꼴 차이라고 설명하지 않습니다. 반대로 표 원점 검사가 PASS라는 이유로 이 페이지의 미달을 면제하지 않습니다. 이 입력의 고정px값은 원본 줄/여백·셀 선언·공유 기준선으로 독립 유도한 계약인지 별도 추적 중입니다. 구현 보정 필요 여부와 적절한 관계 검사를 조사 후 결정합니다.
현재 검사의 실제 동작도 확인했습니다. #6312의±0.3 검사1건과 #7150 모듈5건은 6 PASS /0 FAIL,0.068초입니다. 이는 전체 회귀나 시각 일치 통과를 의미하지 않으며, 기존 좌표 검사가 PASS여도 Native Print 미달이 남는 사례입니다. 필터로 제외한11,633건을 실행 결과에 합산하지 않습니다.
4. 남은 조사
issue_8232명명으로 보정·재검증합니다. 아직 제품·테스트 수정0, PR0이며 이슈는 OPEN입니다.[-][회귀 검사 감사] PDF 대비 raw 98% 미만 페이지의 절대 px 고정 전수 조사·해결[/-][+][회귀 검사 정비] 현행 지침에 맞지 않는 기존 회귀 테스트 전수 조사·보정[/+]jangster77 commentedon Oct 25, 2026
#8232 추가 조사 — 상수·SVG 문자열·E2E 경로와 현재 페이지별 자격
아직 전수 의미 심사와 보정이 완료되지는 않았습니다. 현재 작업 브랜치는
audit/8232-px-regressions-20261025, 고정 source head는238de6de41a208648f4ade6b494fe433a81c1fce입니다. 제품 코드·테스트의 변경과 PR 제출은 아직 없습니다.숫자 검색에서 빠질 수 있는 검증 경로
let기대값도 별도로 수집했습니다. 상수 선언만으로는 놓치는 좌표 튜플·배열을 포함한 데이터 의존 후보2,133지점/397파일이며, 그중 literal·배열·튜플152지점을 우선 심사합니다. 이 숫자도 결함 수가 아닙니다.embed-svg-profile.test.mjs의 번호x86.673024±2,tac-prefix-page-handoff-issue7491.test.mjs의 표y69.844±0.5, repaint helper의 cellBounds.h945.9처럼 실제 문서의 좌표/프레임 크기를 간접 고정하는 경로도 심사 대상입니다. 커서 문자 offset, DOM 투영, 실제 셀 포함, 편집 전후 이동과 합성 PaintOp 수치는 별도로 구분합니다.기존 검사 자체의 반례
tests/issue_1105.rs::task1105_k_water_rfp_2024_cover_hides_first_page_footer는 특정 좌표·stroke를 모두 포함한<line .../>문자열이 없는지만 검사합니다. 같은 선의 y를 1CSSpx만 옮겨 보이게 한 구성 반례에서도 기존 부재 조건은 참입니다. 따라서 이 조건만으로 꼬리말 비표시를 검증할 수 없습니다.이것은 단언 수준의 구성 반례이며 Native 엔진에 결함을 재주입해 실행한 결과로 주장하지 않습니다. 원본 source SHA와 정확한 단언·반례를 로컬 감사 자료에 고정했습니다. 실제 보정에서는 독립 근거에 따른 첫 쪽 꼬리말의 소유·가시성 및 정상 대조군을 검사해야 합니다.
tests/issue_501.rs::mel001_pi22_row0_height_matches_ir도 행 높이를 확인하기 전에x="212.9333333333333"문자열로 셀을 찾고 y600~800을 요구합니다. 원본1980HU 행 높이 계약과 관계없는 위치 locator가 섞여 있으므로 원본 표·셀 소유 경로로 재검토합니다.fixture와 golden의 실제 소비 경로
tests/**구조 자료 중 숫자 기하가 있는400파일의 소비 목적을 연결했습니다.tests/svg_snapshot.rs의 활성 검사는 의미·상대 관계와 같은 프로세스의 결정성을 검사합니다. 사용하지 않는 골든5개를 활성 전체 SVG 해시 고정 검사로 오분류하지 않았습니다. 이400파일은 소비 목적 분류이며, 전체 검사의 적합 판정 완료 수가 아닙니다.tests/밖 구조 자료91파일의 활성 소비 여부도 남아 있습니다.새 독립 Print와 현재 Native/fresh WASM 결과
기존 고정 Native와 현재 source의 locked wrapper fresh WASM으로 새 입력17조건의 비교를 순차 실행하고 있습니다. PDFium·96CSSpx·2px raw 기준과 capture workers8을 유지합니다. 아래 값은 이미 양쪽 TSV가 나온 실제 검사 대상 쪽입니다.
hwp3-sample-hwp5.hwp위의 ‘수치 요건 충족’은 기대값·확대 판독·의미 보호·±2px 조건까지 모두 충족했다는 뜻은 아닙니다. 꼬리말·셀 그림·캡션·header4쪽 review를 직접 읽었고, 남은 원인/기대값 검증을 통과로 바꾸지 않았습니다.
전쪽 결과도 따로 보존합니다. #6608의 전체6쪽 최저는 Native58.73613%/WASM58.73383%(4쪽)입니다. 실제 좌표 검사의1~3쪽과 전체 최저 쪽을 혼동하지 않습니다. #6133 축소본은 Native/WASM1쪽 대 Print2쪽으로 전쪽 TSV를 산출하지 못했으며, 이를 제외하고 전체 통과로 쓰지 않습니다.
새 MCP 요청 중 배포 문서와 footer-logo2조건은 worker 실패입니다. 배포 문서는 확장자와 달리 실제 HWP5 CFB이며, 동일 바이트
.hwp전송 별칭으로 출력했던 독립 Print 근거가 저장소에 있습니다. 입력/PDF hash가 일치하는 기존 Print를 별도로 재사용해 새 Native/WASM을 검증할 예정입니다. 새 MCP 실패와 기존 PDF 재사용을 구분합니다.진행 상태
issue_8232명명 및 호출 경로 갱신 → 실제 재검증 순서를 유지합니다.output/issue8232-audit/에 보관합니다. PR 제출은 하지 않습니다.jangster77 commentedon Oct 25, 2026
#8232 추가 조사 — 중첩 helper 누락 보완과 독립 Print 대조
전수 조사와 보정은 아직 완료되지 않았습니다. 브랜치는
audit/8232-px-regressions-20261025, source head는238de6de41a208648f4ade6b494fe433a81c1fce입니다. 제품 코드·테스트 변경, 이름 변경, PR 제출은 아직 없습니다.감사 수집기의 누락을 발견해 보완했습니다
처음 숫자·기하 후보를 추릴 때 source helper의
#[test]/cfg(test)속성을 확인했지만, 테스트 함수 안에 정의한 중첩 helper가 바깥 함수의 테스트 문맥을 상속받지 못했습니다. 또한 기하 단어가 없는 숫자 단언도 별도 대조가 필요했습니다.실제로
src/wasm_api/tests.rs에서 다음 두 경로를 추가로 발견했습니다.test_hy001_textbox_inline_pictures_render_for_hwp_and_hwpx→ 중첩assert_textbox_picture_roundtrip: 그림 사이 간격을525..550px로 고정합니다.test_hy002_textbox_non_tac_picture_keeps_declared_size→ 중첩assert_textbox_picture_size: 그림 ID뿐 아니라width>600,height>50으로 대상을 선택합니다. 선택 조건과 원본 선언 치수 보존 검사를 분리해 심사해야 합니다.수집 경로를 외부
cfg(test)모듈의 상속, 중첩 함수, 같은 파일의 helper 호출, 기하 단어에 의존하지 않는 숫자 단언까지 보완했습니다. 동명 함수·method dispatch·외부 호출은 구문 목록만으로 해결됐다고 판정하지 않습니다.통합 원장은 9,664함수/helper 그룹·2,103파일입니다. 최초 2,707개 기하 후보와 399개 렌더 생성 그룹에 숫자 단언 후보 6,558그룹을 추가한 수입니다. HTTP 코드·문자 개수·바이트/형식 계약도 포함하므로 위반 수가 아닙니다. 같은 후보를 wrapper로 중복 등록한 것도 아닙니다.
종전 source 기하 후보 529그룹은 직접 수치의 의미를 분류했습니다. 이 결과는 함수 내부 수치 목적의 분류이며, 중첩·외부 helper·전체 파일의 지침 적합 판정과 구분합니다. 원본 HU·glyph em·직접 만든 PaintOp·검색 offset 등을 절대 페이지 좌표로 오분류하지 않으며, 호출 근거가 부족한 항목은 미검증으로 유지합니다.
파일 누락을 PASS로 숨기는 경로도 실제 재현했습니다
공용
src/renderer/layout/integration_tests.rs::load_document는 fixture가 없을 때None을 반환하고, 호출 테스트는 곧바로return합니다. 기존에 빌드한 정확한 Native 테스트 바이너리를 빈 fixture 환경에서 실행하자 다음 결과가 나왔습니다.이는 누락 환경의 음성 대조입니다. 정상 렌더링이나 시각 검증 PASS 증거로 세지 않습니다. 바이너리·source hash, 실행 cwd와 로그를 감사 원장에 고정했습니다. 단순히 PASS 수만 유지하는 보정으로 끝내지 않습니다.
종료된 추가 비교
앞선 17조건의 Print/캡처 시도는 모두 종료 기록을 확보했습니다. 그중 Print 실패 2조건은 정확한 입력·PDF hash 및 Print 실행 근거가 남은 기존 자료를 재사용해 현재 source로 재캡처했습니다. 16조건·각 backend 210쪽의 전쪽 TSV를 확보했으며, 나머지 1조건은 Native/WASM 1쪽 대 Print 2쪽 불일치로 미해결입니다. 시도 종료를 전체 시각 통과로 보고하지 않습니다.
기존 Print 재사용 조건의 전쪽 최저:
distribution_doc.hwpx— 실제 HWP5 CFB#6551의 같은 문서에서도 7쪽은 Native 99.51472% / WASM 99.51876%, 8쪽은 97.60422% / 97.65753%입니다. 다른 쪽의 높은 점수를 8쪽의 px 자격으로 쓰지 않습니다. 전체 46쪽 최저는 69.44170% / 69.45610%이며, 검사 대상 쪽과 전체 최저를 분리했습니다.복합 검사 안의 정상 Print 비교도 구분했습니다
src/renderer/skia/renderer.rs::raster_options_scale_output_size는 직접 만든 장면의 배율 검사뿐 아니라 독립 Print 비트맵 3조건의 내용 보존 검사도 포함합니다. 잉크 기준min(R,G,B)<232, 반경 2px, 양방향 미지원 잉크와 합집합 분모의 98% 기준은 현행 raw 실루엣 계산과 대응합니다.이 세 원본·독립 Print PDF를 현재 PDFium 5.13.0과 고정 Native/fresh WASM으로 다시 검증한 결과, **각 backend 3쪽 모두 raw 100%**입니다. 대표 review/overlay에서 격자와 색상 띠의 정합도 확인했습니다. 과거 PDFium 5.12.1의 기준 PNG와 이번 결과를 섞지 않습니다. 기존 Rust 검사 자체를 이번에 실행했다고 주장하지 않으며, 실제 실행 등록·직접 소비 경로 감사는 별도로 남깁니다.
새로 찾은 두 중첩 검사의 독립 대조
원 수정 기록에서
hy-001은 TAC 그림 사이 공백 advance 누락,hy-002는 non-TAC 그림의 과도한 축소가 원래 결함임을 확인했습니다. 네 입력의 저장 제품을 각각 확인하고 버전에 맞는 한컴 MCP Print를 새로 생성했습니다. Native/fresh WASM 전쪽 TSV는 다음과 같습니다.hy-001.hwphy-001.hwpxhy-002.hwphy-002.hwpx모두 2쪽 문서이며 원본별 독립 Print와 쪽수를 맞춰 비교했습니다.
hy-0012쪽은 본문 자형·표와 로고의 위치 차이가 보이므로, 고정 간격을 먼저 바꿔 통과시키지 않습니다.hy-002의 높은 점수도 현재 selector의 타당성을 자동으로 증명하지 않습니다. 선언 그림 치수·소속과 독립 출력의 대응을 계속 확인합니다.처리 원칙과 남은 작업
issue_8232기준으로 명명하고, 관련 helper·module·manifest·생성/스크립트/E2E 호출을 갱신합니다. 이전 이름의 wrapper·중복 등록은 만들지 않습니다.output/issue8232-audit/에 원장·TSV·review/overlay·실패/정상 로그를 보존합니다. PR은 제출하지 않습니다.기존 PASS와 독립 출력의 실제 차이도 확인했습니다
동일 source의 기존 Native 단위 검사 두 건을 정확한 이름으로 실행했습니다.
hy-001·hy-002모두 각각 1 PASS였습니다. 전체 회귀를 실행한 결과는 아닙니다.그런데
hy-001의 현재 Print RenderTree에서 원본 문단 27의 두 로고 시작점 간격은 약 539.0 CSS px이고, 독립 PDF의 두 image object 경계에서는 532.99334 CSS px입니다. 약 6.01px 차이가 기존525..550조건 안에 들어갑니다. 두 로고는 원본 문단/컨트롤 소속과 직접 review로 대응시켰고, PDF object는 Form 안이 아닌 page level 0입니다. PDF point→96 CSS px 좌표 변환 및 JSON tree의 0.1px 표시 정밀도를 구분했습니다.이는 기존 PASS가 원래 보호 목표인 그림 사이 공백 advance의 정확성을 충분히 입증하지 못한다는 실제 대조입니다. 테스트가 출력하지 않은 내부 좌표를 PASS 결과에서 역추정하지 않습니다. 기존 단위 검사의 실행 경로와 별도 Print 소비 경로의 관측을 각각 기록했습니다.
hy-002HWPX 원본의 해당 그림 선언은 48190×4331 HU이며, 현재 bbox는 약 642.4×57.7 CSS px입니다. 독립 PDF image 경계는 약 642.215×57.697 CSS px입니다. 크기 selector를 보호 계약 자체로 유지하기보다 그림 소속/ID로 식별한 뒤 원본 선언 치수와 실제 크기의 대응을 검사하는 근거로 연결합니다. 아직 테스트를 수정한 것은 아닙니다.jangster77 commentedon Oct 25, 2026
#8232 추가 조사 — 우선 좌표 검사 40파일의 단언·호출과 현재 Print 근거
전수 조사는 계속 진행 중이며 제품·테스트 수정,
issue_8232이름 변경 및 PR 제출은 아직 없습니다. 고정 head는238de6de41a208648f4ade6b494fe433a81c1fce입니다.파일 태그를 실제 함수·helper 판정으로 내렸습니다
기존 부동소수 상수 조사에서 우선 확인한 40파일·81함수/helper의 실제 단언·상수·호출 문맥을 대조했습니다. 그중 14그룹은 해당 국소 단언이 원본 HU·실제 포함·원문/소유·CLI 실행 계약이고, 67그룹은 절대 위치·고정 selector·독립 쪽수/내용 대응의 추가 근거가 필요합니다. 67은 확정 위반 수가 아닙니다. 공용 helper가 올바른 ±2px 비교를 한다는 사실만으로 모든 caller의 페이지별 자격이 입증되지는 않습니다.
확인한 구분 사례:
1.5pt=2 CSS px, y에는3pt=4 CSS px를 허용합니다. 단위 표기만 보고 둘 다 ±2px인 것으로 세지 않습니다.추가 9조건의 전쪽 Native/fresh WASM 대조
각 입력의 실제 저장 제품을 확인해 engine을 선택하고 새 MCP Print를 생성했습니다. 모두 독립 Print와 쪽수가 일치하며 각 backend 16쪽의 TSV를 산출했습니다. 아래는 문서별 전쪽 최저 raw입니다.
36374873_night_guard_log.hwpx각 조건은 새 Print job·원본/PDF hash·source/build·전쪽 TSV에 연결했습니다. 98% 이상이라는 수치만으로 독립 기대 좌표·selector·직접 판독·의미 보호가 완료됐다고 판정하지 않습니다. 91.9%인 야간방호일지의
붙임 y<1400을 좌표 검사로 유지할 자격은 없으며, 저장 사다리와 이미 그린 표 밴드의 소유·후속 원문 관계로 재검토합니다. 97.9%인 spacing-before 입력의 기존 검사는 원본 간격 관계이므로 숫자가 있다는 이유로 절대 위치 핀으로 오분류하지 않습니다.marine-mobility의 실제 변경 대상은 1쪽 담당자 표와 아래 개체입니다. 해당 쪽 raw는 Native99.99504% / WASM99.99421%이며 Native review와 WASM overlay를 직접 확인했습니다. 독립 PDF의 표 상단 선은 945.20534 CSS px인데 기존 검사는 946.4±1.5를 사용합니다. 아래 개체의 PDF path 원점도 별도로 읽었지만, path의 채움·stroke 유무와 실제 원본 개체 소속을 구분합니다. 모든 PDF path bbox를 보이는 테두리의 정답으로 복사하지 않습니다.
hy-001의 글꼴과 배치 차이도 분리했습니다앞선 로고 간격 대조에 대해 PDF 내부 정보도 추가로 확인했습니다. 2020 engine으로 출력한 HWP의 본문 font descriptor는 Gulim이고, 2024 engine의 HWPX 및 기존 PDF에서는 CP949 이름의 휴먼명조가 관측됩니다. 이 정보만으로 HWP 원본의 실제 글꼴 선택 원인을 단정하지 않습니다.
HWPX의 본문 PDF subset에서는 비어 있지 않은 157글리프 모두 로컬 휴먼명조와 정규화 윤곽·advance가 일치했습니다. subset에 Unicode cmap이 없어 문자별 매핑을 입증한 것은 아니며, 이것만으로 Native가 선택한 typeface를 확인했다고 주장하지도 않습니다. 프로그램 바이트 hash 동일성과 subset 윤곽/advance 대응은 구분합니다. 추출 프로그램은 로컬 ignored output에만 보관합니다.
추가로 현재 source의 Native renderer에서 실제 font decision trace를 실행했습니다. 두 입력 모두 2쪽 본문123문자와 로고 줄 공백54자의 요청/선택은 휴먼명조이며, HCI Poppy 요청9문자는 Palatino Linotype으로 선택됐습니다. 각 입력258문자 전체를 제한 누락 없이 관측했고, Canvas2D/CanvasKit은 이 Native 관측의 지원 범위가 아니므로 확인했다고 세지 않습니다. 따라서 HWP PDF의 Gulim 차이를 현재 Native가 휴먼명조를 찾지 못한 현상으로 단정할 수 없습니다. HWP 원본 선언도 휴먼명조를 참조합니다. 한컴 2020 worker의 실제 선택 원인은 별도 확인이 필요하고, 공통 로고 간격의 강제 폭 배분은 계속 구분합니다.
HWPX도 같은 로고 간격 차이를 보이므로 이를 본문 글꼴 차이 하나로 설명하지 않습니다. 원본 로고 줄은 두 TAC 그림, 사이 공백54자, 음수 자간과
horzsize=47372HU를 가집니다. 현재textbox_tac_space_advance_override는 저장 폭에서 두 그림 폭을 뺀 나머지를 공백에 전부 배분합니다. 두 그림과 공백의 사용 폭을 저장 폭으로 가득 채우는 이 계산과 실제 Print의 사용 끝점을 대조하고 있습니다. 문서별 오프셋이나 기대값 완화로 처리하지 않습니다.증거 통합과 남은 작업
기존 재사용 근거와 새 산출을 합친 현재 비교 카탈로그는 72조건·각 backend 2,292쪽입니다. 입력/PDF 143파일의 현재 hash를 재확인했습니다. 기존 산출을 재사용한 35조건은 producer와 현재 head의
src/crates/rhwp-studio차이가 없음을 다시 확인했으며, 이 2,292쪽을 전부 이번에 새로 캡처했다고 보고하지 않습니다. 미달·쪽수 불일치·독립 근거 부족은 별도로 남깁니다.이 카탈로그는 수치·출처 연결이며 자동 품질 래칫이나 새 PR 제출 게이트를 제품에 추가한 것이 아닙니다. 전체 전수 판정·보정은 미완료이고, 미분류와 간접 호출을 해소한 뒤 이슈 결과 정리 → 부적합 검사 재작성·
issue_8232명명/호출 갱신 → 실제 재검증을 진행합니다. PR은 나중에 진행합니다.추가 source-side70그룹의 직접 단언도 대조했습니다. 원문 코드유닛·모양 ID·저장 비트/byte·HU 편집 delta 및 합성 편집의 간격 단조 관계를 실물 절대 px 핀과 구분했습니다. 이70을 새 위반이나 문서 시각 통과 건수로 세지 않습니다.
jangster77 commentedon Oct 25, 2026
#8232 추가 조사 — 원본 계약과 고정 위치의 분리, 8조건 전쪽 대조
전수 조사는 계속 진행 중입니다. 고정 head는
238de6de41a208648f4ade6b494fe433a81c1fce이며, 제품·테스트 수정과 이름 변경·PR 제출은 아직 없습니다.앞선 추가 조사 이후 integration 140함수/helper의 전체 단언·호출 목록과 필요한 source/helper 문맥을 대조했습니다. 국소 수치 의미가 단위·원본·상대/동등 계약인 70그룹과 독립 근거를 더 연결해야 하는 70그룹을 구분했습니다. 이는 확정 위반 수나 전체 호출 경로의 적합 판정 수가 아닙니다.
예를 들어 원본 13pt·160%에서 유도한 상대 줄 전진, 밑줄 조각의 실제 접속, 원본 HU 여백과 셀 내부 포함, 글꼴 em/cluster advance와 같은 계약은 실물 페이지의 절대 좌표 고정과 다릅니다. 반대로 상대 비율이라는 이름만 붙인 경험적 배치 상수, 좌표·폭으로 대상을 고르는 selector, 과거 결함 좌표의 부재만 보는 검사도 근거를 확인합니다. 합성 차트나 합성 세로표의 최종 bbox를 소수점 이하까지 고정한 경우도 합성이라는 이유로 심사를 면제하지 않습니다.
추가 독립 Print와 전쪽 Native/fresh WASM
저장제품 또는 실제 HWP3 format을 확인해 모두 2020 engine을 사용했습니다. 새 Print는 method 0·one-up이며, 현재 canonical 96 CSS dpi·PDFium·2px raw 기준으로 각 backend 38쪽을 산출했습니다.
7조건은 전쪽 양쪽 raw 98% 이상입니다. 이것만으로 그 조건의 모든 px 검사가 적합하다고 판정하지 않습니다. 전자투표 서식은 양쪽 1쪽이 90% 미만이며 실제 비교 명령도 exit 1입니다. 전체 driver 종료와 시각 수용을 구분합니다.
전자투표 서식의 1쪽 Native review/overlay를 직접 읽었습니다. 내부 후보 상자의 위·아래 경계와 사진/후보자 문구·기호, 아래 설명문의 원점/간격 차이가 보입니다. 글꼴 하나의 문제라고 단정하지 않았고, 이 입력의 고정 x 배열·±0.6 검사를 적합으로 처리하지 않습니다. 원본과 PDF, 미달 TSV·PNG를 보존합니다.
#1133은 허용폭만 바꾸면 검출력이 사라집니다
실제 대상 2·3쪽 Native review와 WASM overlay를 직접 대조하고, 독립 PDF의 stroke path에서 다음 좌표를 다시 읽었습니다.
HWP/HWPX 원본의 출력 PNG와 독립 PDF PNG는 각 backend 전 3쪽에서 hash가 동일했습니다. 판독 재사용은 이 동일 픽셀과 현재 producer를 근거로 연결합니다. 2쪽 순서도와 일부 글자의 미세한 차이는 남으며, raw 100%를 엄격한 RGB 일치로 해석하지 않습니다.
기존 함수는 이 좌표를 ±0.6/±1.3으로 검사합니다. 현행 ±2 CSS px로 공차만 넓히면, 원 보정 기록의 잘못된 상단 439.066667/75.573333도 독립 기준과 차이가 약 1.4/1.8px여서 통과합니다. 이 수학적 단언 대조는 과거 engine을 새로 실행한 결과와 구분했습니다.
따라서 원본 141HU 바깥 위여백의 첫/이어받기 프레임 소유와 실제 예약·배치 소비, 행·내용·후속 문단 보존을 관계로 보호하고, 자격을 확인한 독립 좌표만 ±2 CSS px로 대조해야 합니다. 원 해결 #7382와 실제 보정
f07affc3607e858aa83909465fa453626be6acf9, 후속 분리fff5310762b8642fa4ef39135274970e3616e9f1및 현재 원본·출력을 연결했습니다. 이 helper는 공차 보정 대상임을 확정했지만 아직 재작성하지 않았습니다.새 진단 driver는 HWP3에 저장제품 메타데이터가 없다는 처리를 누락해 4조건 뒤 한 번 중단됐습니다. 같은 작업 범위에서 원본 format을 확인하는 분기를 수정했고, 완료한 source/build/input/PDF hash를 검증해 나머지만 재개했습니다. 실패 로그를 보존했으며 완료한 4조건을 중복 실행하지 않았습니다.
전수 판정과 간접 호출·조건부 경로의 대조는 미완료입니다. 필요한 검사 보정과
issue_8232명명·실제 등록/검출력 재검증도 남아 있습니다. PR은 나중에 진행합니다.jangster77 commentedon Oct 25, 2026
#8232 추가 조사 — 잘못된 출력 자체를 정답으로 고정하는 검사
조사 head는
238de6de41a208648f4ade6b494fe433a81c1fce입니다. 전수 조사는 미완료이며 제품·테스트 변경, 이름 변경, 커밋·PR 제출은 아직 없습니다.보정 목적 정정
기존 검사 형태나 기대값을 무조건 보존하지 않습니다. 기존 기대값과 검출 목적부터 검증하고, 현행 지침·독립 근거에 맞지 않는 단언은 교체하거나 제거합니다. 유효한 결함 검출 목표는 독립 근거에 따른 내용·소속·관계 검사로 보호합니다. 실제 보정한 파일·함수 및 호출·등록 경로만
issue_8232기준으로 갱신하고, 이전 이름의 wrapper나 중복 등록은 만들지 않습니다.추가 함수와 helper 조사
integration 200그룹의 단언·호출과 필요한 원본/helper 문맥을 추가 대조했습니다. 국소 수치 의미상 원본 단위·상대 계약인 113그룹, 독립 근거를 더 연결해야 하는 83그룹, 보정이 필요한 4그룹을 구분했습니다. 이 수는 전체 호출 경로의 적합 판정 수가 아닙니다.
issue_7059_nearfit_shrink_stored_ladder::recipe_still_disagrees_with_its_oracle은 한컴과 다른 좁은 표 폭을 의도적으로 유지하도록 단언합니다. 현재 PASS가 올바른 회귀 계약의 증거가 되지 않는 실제 사례입니다.issue_7150_tac_line_owner_anchor의 세 검사는 같은 입력의 1쪽 Native raw가 77.19425%인데 y·높이를 ±0.2/0.3px로 고정합니다. 같은 쪽 WASM 100%로 Native 미달이나 px 자격을 상쇄하지 않습니다.widths의declared = drawn.max(body)는 원본 선언을 읽지 않습니다. 단, 현재 세 caller는 이 두 번째 반환값을 버리므로 이것이 기존 PASS를 직접 만들었다고 주장하지 않습니다.max_table_width역시 원본 표 소유 대신 모든 Table의 최대 폭을 고릅니다.baseAdvanceHwpunit와 허용폭 2/4는 HU입니다. CSS px 2/4와 혼동해 정상 프로그램 단위 계약을 완화하지 않습니다.통합 후보 원장은 9,666함수/helper 그룹·2,103파일입니다. 이는 위반 수가 아니며, 조건부·간접 호출과 미분류 항목은 계속 조사합니다.
Book/Movie/Recipe의 새 독립 Print와 현재 양쪽 출력
세 입력의 저장 제품은 한컴 2010입니다. 2020 engine·Print method 0·one-up·timeout 1800으로 새 독립 PDF를 생성하고, 현재 canonical PDFium 5.13.0·96 CSS dpi·2px raw로 전쪽을 비교했습니다.
samples/basic/BlogForm_BookReview.hwpsamples/basic/BlogForm_MovieReview.hwpsamples/basic/BlogForm_Recipe.hwpRecipe Native review와 overlay를 직접 대조했습니다. 주 표의 오른쪽 끝이 좁고 본문·제목에도 미세 차이가 남습니다. 세 조건이 90% 이상이라는 결과를 Movie/Recipe의 절대 px 검사 자격으로 해석하지 않습니다.
RHWP 모델을 거치지 않은 CFB·원시 레코드 대조에서 대상은 최상위 문단 1의 표이며, 세 입력 모두 선언 폭 35,719HU(476.253333 CSS px), 본문 폭 35,149HU(468.653333 CSS px)입니다. 현재 출력의 Book/Movie는 약 476.3px, Recipe는 약 468.7px입니다. compact tree 수치는 소수 첫째 자리로 반올림되므로 정밀 좌표 정답으로 쓰지 않습니다.
독립 PDF의 실제 stroke path는 세 입력 모두 주 가로선 폭 475.79068 CSS px입니다. 선언 frame과 stroke 범위는 서로 다른 의미이므로 두 값을 정확히 같다고 단언하지 않습니다. 기존 Recipe 검사의
abs(drawn-body) <= 1.5는 잘못된 본문 폭 축소를 수용하고, 선언 폭을 보존하는 출력을 약 7.6px 차이라는 이유로 거부합니다. 이는 단언의 수학적 반례이며 과거/보정 engine 실행 결과로 대체하지 않습니다.실제 기존 검사 실행 및 원 해결 경로
현재 source에서
run-rust-test.mjs issue_7059_nearfit_shrink_stored_ladder를 release-test·threads 8로 실행했습니다. 실제 suite는regression_suite_020이며 3 PASS, 271 filtered, 실행 0.528초, exit 0입니다. run id는cc9deae4-35d0-48f1-9936-12bb212a2745입니다. 전체 회귀 또는 수정 후 통과가 아닙니다.원 제안 PR #7120은 CLOSED·미병합이며, 실제 반영은 통합 PR #7138의
63547ddf1525b9c2ce35e580a32f72905c2cda49입니다. 현재 HEAD의 ancestor임을 확인했습니다. 원 PR와 로컬 검토 기록도 Recipe 잔여를 명시합니다.merge_commit_sha필드만 보고 원 PR가 병합됐다고 판단하지 않습니다.제품 출력의 원인을 보정하고 독립 기대 계약을 정한 뒤 검사를 재작성해야 합니다. 잘못된 Recipe 상태를 유지하는 검사만 새 이름으로 복사하거나, 공차만 넓혀 통과시키지 않습니다. 전수 판정·필요 보정·이름 변경·등록/검출력 재검증은 미완료이며 PR은 나중에 진행합니다.
직접 소수 공차 후보의 추가 대조
이후 integration 270그룹의 직접 단언 의미를 더 분류했습니다. 원본 HU·글꼴 em·실제 요소 사이의 상대/동등 계약인 146그룹과 독립 원본·출력·caller 대조가 더 필요한 124그룹입니다. 이번 두 묶음에서는 위반을 추가 확정하거나 검사·구현을 변경하지 않았습니다.
tests/의 미분류 함수 중 직접 소수와 abs/approx/assert_near 등이 나타나는 검색 집합에는 남은 항목이 0입니다. 이는 그 검색 조건에 한정한 목록 대조이며, 전체 전수 조사 완료가 아닙니다. 상수·정수·생성 기대값·숫자 없는 selector·다른 파일 helper·동적 순회·조건부/E2E 경로와 이미 보류한 독립 증거 대조는 남아 있습니다.추가로 표식 번호를 고정 y270/558±8 영역에서 찾는 검사, cellzone 선을 고정 x/y 범위에서 고르는 검사도 확인했습니다. 최종 위치뿐 아니라 대상 선택 자체가 잠정 좌표에 묶였는지 조사합니다. 반면 caret와 실제 glyph 원점의 동등, source HU 여백 편집 차이, 독립 글꼴 em, actual 셀 내부 포함은 소수 공차가 작다는 이유만으로 지침 위반으로 처리하지 않습니다.
source 내부 80그룹도 추가 분류했습니다. HWPX→HWP의 bit/byte·원본 문자/자원 인덱스·CSV·보안 nonce·데이터 추출·캐럿 탐색 성능 카운터 등이며, 직접 단언 수치는 실물 페이지의 절대 px 핀이 아니었습니다. 예를 들어 0.01/924.09는 직접 작성한 shape의 original/current 크기 비율을 저장 affine에 정확히 기록하는 검사입니다. 소수라는 이유로 이 정상 단위/저장 계약을 완화하지 않습니다. 전체 호출 경로와 독립 시각 판정을 마쳤다는 뜻은 아닙니다.
jangster77 commentedon Oct 25, 2026
#8232 추가 조사 — 소스 내부 검사와 오래된 렌더러 전제
조사 head는
238de6de41a208648f4ade6b494fe433a81c1fce입니다. 전수 조사 중이며 제품·테스트 재작성과 이름 변경·커밋·PR 제출은 아직 없습니다.추가 source 160그룹
전체 단언의 직접 수치 의미와 필요한 producer 문맥을 대조했습니다. 158그룹은 문자/자원 인덱스·HWP bit/byte·필드 편집/저장·CSV/수식 데이터·보안 진단 건수·직접 작성 EMF 형식/좌표·캐럿 탐색/메모리/시간 한도 등의 계약입니다. 소수나 width라는 이름이 있다는 이유로 실물 페이지의 절대 px 핀으로 취급하지 않습니다. 함수의 직접 수치 분류는 전체 helper 호출과 독립 시각 수용의 완료를 뜻하지 않습니다.
나머지 두 그룹에서는 기존 기대값의 전제와 현재 renderer의 불일치를 발견해 추가 근거 대조 대상으로 남겼습니다.
상대 글자 크기를 무시한다는 전제가 현재 코드와 다릅니다
src/document_core/queries/hidden_text.rs의 다음 두 검사는 실제 진단 결과를 10pt로 고정합니다.effective_size_ignores_relative_sizes_like_the_renderer_doesdefault_relative_sizes_can_never_cause_a_zero_size_misjudgment이 파일의 설명은 renderer가
relative_sizes를 전혀 읽지 않으므로 진단도 곱하지 않는다고 합니다. 현재src/renderer/style_resolver.rs와ResolvedCharStyle::font_size_for_lang은 언어별 상대 크기를 적용합니다. 진단 호출은 여전히classify_char→effective_pt로 기본 크기만 소비하며 문자별 언어 슬롯을 전달하지 않습니다.현재 source의 Native rlib를 이용한 별도 관찰 프로그램을 컴파일·실행했습니다. rlib SHA-256은
5768866158c10fc9e1336cc286e2daa3a8d548baaaf602a89359a2e8de217c27입니다. 직접 작성한 기본 1000HU(10pt) 입력에 대해 같은 언어 슬롯을 비교한 결과입니다.이는 언어별 resolved size와 실제 진단 함수 반환의 실행 증거입니다. 최종 paint의 크기, 독립 한컴 Print, 실제 문서 전체 시각 수용을 검증한 것으로 확대하지 않습니다. 0%는 원 유효 범위 밖 입력이므로 정상 10% 사례와 구분하며, 잘못된 입력에 대한 계약을 독립적으로 확인해야 합니다.
같은 source의 기존 release-test root binary에서 위 두 정의를 각각 exact filter로 실행했습니다. 두 검사 모두 1 PASS/0 FAIL, 각 3812 filtered로 끝났습니다. 전체 회귀 또는 보정 후 통과가 아닙니다. 현재 PASS가 오래된 기대값의 유효성을 입증하지 않는 추가 사례입니다.
원 제안과 실제 반영 경로
6ab503fe97b7abfd1839800c5c018da9f9abf4c5이며, 해당 함수 도입 커밋은8a1db1933c719a9f8ccf3aa36bf51e9245e06b72입니다.23ff5b6f1acd67aaccdf1ecfb47a7dc1918a13ed는 HWP3 상대 크기 기본값을 100으로 보정하면서 진단 설명을 갱신했지만, 여전히 renderer가 상대 크기를 곱하지 않는다는 결론을 유지했습니다.7eddd19da61247fcd291cb3c1912ab4037d8daae는 실제 통합 #7505에 연결됩니다. 후속 #7805의 글자 장치 격자·자간 규칙도 상대 크기 소비를 전제로 합니다.merge_commit_sha필드만 보고 병합됐다고 판단하지 않았습니다.두 검사에는 실물 페이지의 절대 px 위치 핀은 없습니다. 다만 현재 구현을 따라야 한다는 오래된 가정으로 기대값을 정한 문제여서, 단순 정상 단위 검사로 승인하지 않았습니다. 독립 근거와 실제 소비 경로를 추가 연결해 필요한 기대 계약과 보정 범위를 정합니다. 모든 보안 검사를 변경하거나 범위를 다른 기능으로 확대하는 근거로 쓰지 않습니다.
전수 조사·독립 증거 판정·필요한 실제 보정과
issue_8232명명·등록/검출력 재검증은 계속 미완료입니다. PR은 나중에 진행합니다.추가 원본 모델·paint 경로 대조
이후 source 160그룹을 더 대조했습니다. 문단 문자 축·표 모델의 행/열/병합/분할·원본 HU 치수·raw provenance·OLE 차트 원본 데이터·작성한 viewport 인수·paint op/자원/clip 보존 검사입니다. 직접 단언 의미상 실물 페이지의 잠정 절대 px 핀은 없었습니다. 실제 호출/helper와 독립 출력 대조를 생략했다는 뜻은 아닙니다.
이번 두 묶음은 합계 320그룹이며, 318그룹의 직접 수치 목적을 구분하고 위 두 그룹의 오래된 renderer 전제를 추가 근거 대조 대상으로 남겼습니다. 감사 중 일부 기록의 원본 수치를 잘못 옮긴 부분은 해당 source와 다시 대조해 공개 전 정정했습니다. 제품·테스트·지침은 변경하지 않았습니다.
jangster77 commentedon Oct 25, 2026
#8232 추가 조사 — 수치 목적 구분과 미주 간격의 독립 대조
조사 head는
238de6de41a208648f4ade6b494fe433a81c1fce, 브랜치는audit/8232-px-regressions-20261025입니다. 제품·테스트 수정·이름 변경·커밋·PR은 아직 없습니다. 이번 기록도 전수 조사 완료 보고가 아닙니다.기존 검사의 보존 범위
기존 검사 자체가 잘못된 출력을 정답으로 고정했다면 그 동작을 무조건 보존하지 않습니다. 기존 목적과 기대값을 현행 지침·독립 근거로 재검증하여 유효한 결함 검출을 보호하고, 부적합한 단언은 보정·대체하거나 제거합니다. 실제 보정 대상만
issue_8232로 새로 명명하며 이전 이름 wrapper로 중복 등록하지 않습니다. 현 이슈 본문에도 이 원칙이 반영되어 있음을 다시 확인했습니다.source 내부 900그룹 추가 대조
직전 댓글 이후 source 묶음 24–30의 직접 단언 의미와 필요한 입력 문맥을 대조했습니다.
855항목에는 HWP/HWPX 원본 HU·bit/byte·문자/자원 id·저장/파싱·font em·상대 자간·뷰포트·clip·색상 채널·내용 컷·행/줄 소속·분할 상태가 포함됩니다. 숫자, px 환산 또는 작은 오차가 있다는 이유만으로 삭제하지 않습니다. 이는 실제 테스트 PASS 수나 전체 helper 호출의 적합 판정이 아닙니다.
45항목은 합성 입력이라고 해서 현재 구현 규칙을 독립 정답으로 승인하지 않았습니다. compact 미주 HeightCursor 39항목과 대각선 비율 1항목, 밑줄 0.17em의 출처·저장 행 경계 잔여 25px·저장 꼬리줄 수 제한 2개·각주 안전마진/흐름 허용 1개를 추가 대조 대상으로 남겼습니다. 이 항목 모두가 부적합으로 확정된 것도 아닙니다.
전체 후보 원장은 여전히 9,666그룹·2,103파일입니다. 현재 미분류 6,328그룹 외에도 직접 의미 분류 후 helper·독립 근거·실제 실행 경로 대조가 남은 항목이 있어 전수 완료나 보정 완료로 표시하지 않습니다.
미주
+40px·+18px기대값의 원 해결 추적src/renderer/height_cursor.rs의 두 검사는 합성 cursor 결과를원본 줄간격 +40px또는+18px로 계산하여1e-6오차로 비교합니다. 작은 오차만으로 실물 절대 좌표 핀이라고 판정하지는 않지만, 생산 코드의 상수와 같다는 사실만으로 올바른 단위 계약이라고 보지도 않습니다.+40px검사 도입 커밋c8b81708c244205fae4dd73a12bbb2e3c19f963a는 실제 병합 PR task 1189: task 1139 후속 미주/수식 정합 보정 #1194, 통합6f42d2005ac330a8345cfda6bcaf201d01841ab8에 연결됩니다.+18px검사 도입7b5b3dbfcd6af7fde63a9fae1c75f2701319e4ba는 현재 HEAD의 ancestor이지만 commit→PR 조회에서 연결 PR이 없어 임의로 추정하지 않았습니다.996e780fe3266b87bc482e81f9de61e3b4b93c24는 실제 병합 PR task 1293: 공식 미주 모양 모델 정규화 #1410, 통합a2a1b3837f36083f7bcf2de0653bab4aa94ad78e에 연결되며 현재 HEAD에 포함됩니다.현재 원본·새 Print·Native/fresh WASM 대조
세 원본의 실제 저장 제품은 한컴2022이므로 MCP Print는 engine2020, Print method0, timeout1800초를 지정했습니다. PDFium5.13.0·96CSS DPI·2px raw와 정본 Visual Sweep을 사용하며 전체 캡처는 8개로 제한합니다. fresh WASM은 Mac locked wrapper web/no-opt 로컬 대체 빌드이며 Docker 최적화 결과가 아닙니다.
첫 문서
samples/3-09월_교육_통합_2023.hwp는 새 Print와 Native/fresh WASM 모두 20쪽입니다.원본 SHA-256:
47a503ea0e92a63ee58b552e661fbde27f8a611afffd67e822be5928319e3c87.새 Print PDF SHA-256:
36b7d4aded9a6ff8e1205e9d9f95eb6bd888cb7ade24300da429cb4ddeabcfd3.MCP job:
353a7e1f-ca53-4a9c-bdd1-ae359b01e986, 한컴11.0.0.9136, one-up Print method0.19쪽 Native review와 Native/fresh WASM overlay를 직접 확인했습니다. 문28/문29 제목·풀이·그림이 같은 단에 이어지고 문29 tail이 하단 프레임 안에 있습니다. 일부 글리프·수식·선의 미세 차이는 남습니다. 이 판독과 수치만으로
+18px또는+40px의 보편적 단위 계약이나 다른 모든 페이지의 px 검사 자격을 확정하지 않았습니다. 독립 기대 좌표·원본 소유·검출력의 연결이 필요합니다.같은 원인과 연결된
3-10월_교육_통합_2022.hwp18쪽의 새 Print는 완료됐고 Native 전쪽 캡처가 실행 중입니다. 이후 fresh WASM과3-11월_실전_통합_2022.hwp전21쪽을 순차 대조합니다. 실행 중인 범위를 완료나 PASS로 세지 않습니다.로컬 증거는
output/issue8232-audit/phase10-endnote-evidence/아래 input/PDF SHA·MCP 영수증·실행 명령·Native/fresh WASM 전쪽 TSV·review/overlay PNG로 보존합니다. 독립 검증·실제 보정·새 명명·필수 재검증을 계속 진행하며 PR은 나중에 처리합니다.이후 추가 조사 — 소스280그룹과 미주 관계 검사
소스 묶음31–32의280그룹을 추가 대조했습니다. 276그룹의 직접 단언은 원본 문자/control offset·HU 저장 치수·byte/bit·XML/ZIP 자원 소유·내용 순서·합성 본문 포함 관계이며, 실물 페이지의 잠정 px 원점 고정과 구분했습니다. 큰 그림 분배 정책2그룹과 이름/실제 검출 범위가 다른 저장 검사2그룹은 독립 근거 대조 대상으로 남겼습니다.
tests/cases/issue_7642_oct_endnote_relations.rs도 전체 helper와9개 검사 본문을 읽었습니다. 기존 원장13그룹은 실제 단 내부 포함·선택 영역 교차·미주/수식 원본 소유·내용 순서/비겹침 관계입니다. 숫자 단언 없이 원본 loader·재귀 순회·결과 수집·앞뒤 점유 비교를 담당하는 helper4개도 원장에 연결했습니다. 이에 현재 후보 원장은 9,670그룹·2,103파일이고, 미분류는 6,035그룹입니다. 직접 의미 분류와 전체 호출 경로 적합 판정을 구분합니다.오래된 Hyperlink 드롭 전제와 실제 검출력
baf6ef7ff13ebbb782277b8391b81b81f1250a5f입니다. 원 커밋f6dbf96b47482e13457da1d5df8eebfd0f99c857와 후속f1e7c5706c17b7b51a7f4bf953837430a46470a5를 확인했습니다.4324eb0e4cf1a65f7efb305993a79ac44859a7ca는 HWP3 Hyperlink를 HWPXHYPERLINK필드와 Command로 보존하도록 개선했습니다. 두 실제 통합은 현재 HEAD의 ancestor입니다.issue4388_hyperlink_control_drop_is_not_silent는 여전히 “드롭이 현재 계약”이라고 설명하지만, 실제 단언은 재파싱 결과에 옛Control::Hyperlinkenum이 없다는 조건입니다. 대체Field의 존재·URL은 검사하지 않습니다.Field(Hyperlink)1개와 URLhttp://example.com을 보존했습니다. 정상 보존 중이어도 옛 enum 개수는0이므로 기존 검사는 PASS합니다.유지할 근거를 확인한 기존 ±2px 검사
verified_september_2023_note_print_origins.rs의 HWP caller는 14쪽 문20/문22 제목 기준선을 독립 Print의±2CSSpx로 검사하면서 원본 미주·본문·첫 수식의 소유/순서/누락/중복도 보호합니다.새 Print의 PDFium
FPDFText_GetCharOrigin을72pt에서96CSSpx로 환산한 결과, 문20은(34.0799993,415.2000326), 문22는(402.5599772,239.0400391)이었습니다. 기존 기대값(34.08,415.20)·(402.56,239.04)와 일치합니다. 해당14쪽의 현재 raw는 **Native99.34847%·fresh WASM99.27113%**이며 review/양쪽 overlay를 직접 판독했습니다.실제 기존 검사 source를 현재 Native rlib와 standalone
rustc --test로 연결해 HWP 경로1개를 실행한 결과, 1PASS/0FAIL·1filtered·47.39초·exit0입니다. 자동 등록도tests/generated/regression_suite_024.rs에 연결되어 있음을 확인했습니다. 이 실행을 integration suite 전체 실행으로 보고하지 않습니다. 로그의 다른 쪽LAYOUT_OVERFLOW진단은 남겨 두었으며 별도 실제 paint 대응 확인 대상으로 기록했습니다.이 HWP caller의14쪽 px 검사에는 유지 근거가 있습니다. 같은 helper의 HWPX caller는 다른 원본이므로 별도 자격 확인이 필요합니다. HWPX 저장 제품이 한컴2024·20쪽임을 확인하고 engine2024의 독립 Print/전쪽 비교를 현재 캡처 종료 뒤 공유 lock으로 순차 실행하도록 대기시켰습니다. 아직 HWPX 파일이나 전체 helper의 적합 판정을 완료하지 않았습니다.
전쪽 비교 진행 갱신
2022년10월 원본은 새 Print·Native·fresh WASM 모두18쪽이며, 전쪽 최저는 각각 98.10796%·98.05920%, 90% 미만은 양쪽0쪽입니다. Native11쪽과 WASM17쪽의 review·overlay를 직접 확인했으며, 미주18→19→20의 간격과 문29의 풀이 tail이 대응 내용과 같은 단에 이어집니다. 일부 글리프·수식·정답 표시 위치 차이는 남습니다.
2022년11월 원본은 새 Print·Native·fresh WASM 모두21쪽으로 산출을 마쳤습니다. Native11쪽과 WASM19쪽의 review·overlay도 직접 확인했습니다. 문13→14 및 문24→25의 제목·풀이·그림과 후속 내용이 같은 단에 이어지고 프레임 안에 남습니다. 일부 수식·그림 선·글리프 차이는 남으며 전체 피델리티 개선 완료를 뜻하지 않습니다.
2022년11월11쪽은 Native97.87979%·WASM97.87183%이므로 절대 px 좌표 고정 자격은 없습니다. 대표 판독이나 다른 쪽의 높은 수치로 이 조건을 대신하지 않습니다. 이번 실행은 총59쪽/각 backend의 TSV 산출을 완료한 것이며, 여전히39개 미주 cursor 단위 기대 규칙의 독립 타당성 판정을 모두 마친 것은 아닙니다.
phase10은 실제 exit0과 최종 상태를 확인했고, 대기 중이던 HWPX 비교는 capture lock을 넘겨받아 engine2024 Print job
837f88e3-90c1-48c8-ab79-07c74847830b를 시작했습니다. 전수 조사·독립 판정·실제 검사/출력 보정·이름/등록 변경은 계속 미완료입니다.추가 조사 — 419개 함수와 쪽수 기대값 생산 helper 6개
소스 묶음33–35의 247개와 integration 묶음09의 172개를 추가로 대조했습니다. 직접 수치 의미가 실물 페이지의 절대 px 핀이 아닌 항목은 400개이며, 19개는 독립 계약 확인을 남겼습니다. 이는 실제 테스트 PASS나 파일 전체 적합 판정 수가 아닙니다.
test_paste_cascade_floating_picture의 567HU 기본 이동량은 원본 작성값이 아니라 붙여넣기 정책 상수이므로 독립 계약의 근거를 확인할 항목으로 남겼습니다.tests/hwpx_to_hwp_adapter.rs에서 쪽수 기준과 기존 위반 상태를 요구하는 18개 그룹을 추가 확인 대상으로 남겼습니다. 일부 probe의 고정 9쪽은 독립 Print가 아니라 rhwp 재로드 기준입니다. source LineSeg의 68258HU 저장 보존은 별개의 원본 단위 계약입니다.oracle_hwp_page_count_for_hwpx는 한컴 저장 HWP를 현재 rhwp로 조판한 쪽수이고, 읽기/파싱 실패 시 caller의 rhwp HWPX 쪽수로 fallback합니다. 독립 Print 정답을 입증한 것으로 세지 않습니다. 이 중 3개 helper는 독립 기준 확인을 남겼습니다.현재 원장은 9,676그룹·2,103파일, 미분류는 5,616그룹입니다. 직접 의미 분류 후에도 helper·독립 근거·실제 실행 대조가 남습니다. source 내부의 직접 숫자 의미 분류를 source 경로 전체의 적합 판정으로 확대하지 않습니다. 제품·테스트 수정·새 명명은 여전히 0건이며 PR은 만들지 않았습니다.
HWPX caller의 기존 ±2px 검사 자격 대조 완료
samples/3-09월_교육_통합_2023.hwpx는 실제 저장 제품이 한컴2024이므로 engine2024로 별도 Print를 만들었습니다. 원본 SHA-256은9ff4ba0f8530621c0ad89be3bc563135cc88f75052949e4d444cfcd715375340, PDF SHA-256은f63ea5e5c15c6bcf1208a29fe5c2845ad5413d1e390ac8d27b93311ce3a02371입니다. job837f88e3-90c1-48c8-ab79-07c74847830b, 한컴13.0.0.3901, 전처리 없음·one-up Print method0·20쪽을 확인했습니다.두 backend의 전체 TSV·쪽수 20쪽·종료 코드0을 확인했습니다. PDFium5.13.0의 문자 원점을 96CSSpx로 환산한 문20
(34.0799993,415.2000326)과 문22(402.5599772,239.0400391)은 기존 기대값과 일치합니다. 같은 helper의 HWP와 HWPX를 서로 대신한 것이 아니라 각각 독립 Print와 대조했습니다.Native와 fresh WASM의 14쪽 review/overlay 및 문20·문22 제목/후속 본문/첫 수식을 3배 확대해 직접 읽었습니다. 대응 내용과 위치·단·순서는 맞으며, Native의 미세 글리프 차이와 WASM의 제목/본문 두께·수식 모양 차이는 남습니다. 이번 판정은 제목 위치의 기존 ±2px 검사 유지 근거이며 글꼴 모양 전체의 일치 판정이 아닙니다.
현재 source와 Native rlib의 SHA를 다시 확인한 뒤 이미 컴파일한 실제 기존 HWPX caller를 exact 실행했습니다. 결과는 1 PASS / 0 FAIL / 1 filtered, 167.55초, exit0입니다. 실제 자동 등록은 기존
tests/generated/regression_suite_024.rs에 있습니다. standalonerustc --test실행이므로 suite 전체·CI 통과로 보고하지 않습니다. 검사 로그의 다른 쪽LAYOUT_OVERFLOW진단은 보존했으며 실제 paint 대응을 별도로 확인할 항목으로 남겼습니다.관련 전쪽 TSV·원본/PDF·실행/빌드 hash·독립 좌표·직접 판독 기록은
output/issue8232-audit/phase11-existing-px-evidence/와phase11-existing-px-page-qualification.json,phase11-existing-hwpx-test.log에 보존합니다. 통합 시각 증거 목록은 87조건·각 backend 2,412쪽이며, 기존 무변경 코드의 capture 재사용과 현재 생성 증거를 구분합니다. 목록의 수치 자격은 전수 감사 또는 각 검사의 최종 적합 판정이 아닙니다.jangster77 commentedon Oct 25, 2026
추가 조사와 기존 검사 검증 — 2026-10-26
조사 head는
238de6de41a208648f4ade6b494fe433a81c1fce, 브랜치는audit/8232-px-regressions-20261025입니다.기존 검사 자체의 기대값도 검증합니다. 기존 형태·단언·동작의 무조건 유지를 전제로 하지 않습니다. 독립 근거에서 유효한 검증 목표를 확인하고 부적합한 기대값/방식은 대체·제거하며, 실제 보정 대상만
issue_8232이름으로 재구성합니다. 이 기준은 현 이슈 본문에 반영되어 있습니다.새로 확인한 검사 의미
samples/chart와 scene fixture의tests/fixtures/render_backend/scenes/*.json등 실제 loader 범위로 구분했습니다.78494 법령 원본: 현재 전체74쪽과 기존 위치 검사
입력은
samples/issue6776/78494-virtual-convergence-industry-decree.hwpx입니다. 확장자와 달리 실제 HWP5/한컴2018 저장본이며, 기존 독립 engine2020 Print PDF와 대조했습니다.5090e9d20ce75814febeb4b79e106ea6abfd2546e511f229900d137d42623617pdf/issue7642-legal-table-origin/78494-virtual-convergence-industry-decree-2020.pdf674ef63b51adc926c7c89f530bd142a45bb64cb655a7117bc20285d7a6e5a8d2PDFium5.13.0/96CSSdpi/색상 경계 보정 전2px 기준입니다. Mac fresh WASM은 locked wrapper의 web/no-opt 로컬 대체 빌드이며 Docker 최적화 결과가 아닙니다. source/build/JS/WASM/입력/PDF/canonical script와 전쪽 TSV hash를 고정했습니다.
21쪽
□ 간접편익의 독립 PDF 문자 원점을 직접 읽었습니다. CSS 좌표(75.47909037272136,472.2838541666667)이 기존 기대값과 일치합니다. Native/WASM의 review·overlay와 제목/후속 표를 확대 판독하여 소속·내용·순서 대응을 확인했습니다. 일부 선 가장자리·글리프 차이는 남습니다. raw100은 픽셀 완전 동일을 뜻하지 않습니다.기존 제목 검사는 ±2px와 원본 소속·제목 내용·단일 출현·부모 표 종료 뒤 배치를 함께 검사하므로 해당 위치 검사 유지 근거를 확보했습니다. 줄간격100% 복제의 독립 Print/전체 쪽수 근거와62쪽
LAYOUT_OVERFLOW진단·실제 paint 대응은 별도 미완료입니다.실제 실행과 남은 작업
기존 코드를 그대로 실행한 집중 검사입니다. standalone Rust 테스트를 integration 전체·CI 통과로 보고하지 않습니다.
현재 통합 원장은 9,854그룹·2,103파일, 미분류는 5,129그룹입니다. 시각 증거 목록은 88조건·각 backend2,486쪽으로 갱신했습니다. 수치 목록에 들어갔다는 이유로 검사 적합/문서 완료로 판정하지 않습니다.
제품·테스트 수정과 이름 변경은 아직0건이며 PR은 생성하지 않았습니다. 전수 판정, 부적합 검사 실제 보정·새 이름·호출/등록 갱신과 필수 재검증이 남아 있습니다.
로컬 조사 기록은
output/issue8232-audit/의audit-ledger.json/.tsv,phase12-original-title-qualification.json,paired-evidence-catalog.json,existing-6776-tests.log,existing-studio-contracts-tests.log,font-unit-independent-oracles.json에 보존했습니다. 로컬 파일을 공개 GitHub 첨부로 주장하지 않습니다.jangster77 commentedon Oct 25, 2026
추가 조사: 잘못된 셀을 검사하던 회귀 발견 — 2026-10-26
기존 검사의 PASS를 그대로 승인하지 않고 원 결함과 실제 관측 대상을 대조했습니다.
tests/issue_table_vpos_01_page5_cell_hit_test.rs의page5_inner_11x3_char_overlap_marker_advances_one_box는 10번 글자겹침을 검사한다고 되어 있지만, 경로가 19번 셀의 일반 숫자4를 가리키고 있었습니다. 10번의 두 PUA 제어는 22번 셀의 첫 문단에 있습니다.4, CharOverlap 없음U+F02BA + U+F02C3CharOverlap16<delta<30독립 CFB/DocInfo의 CHAR_SHAPE 레코드에서도 id79=3100HU, id68=1400HU를 확인했습니다. 실제 마커의 한 em은18.6666667 CSSpx입니다. 현재 API의18.7은 소수 첫째 자리 출력과 구분했습니다. 단순히16~30 범위를 조정하는 것으로는 잘못된 소유자 선택을 고칠 수 없습니다.
추가로 같은 실제 마커를 현재 일반 scalar 경로로 계산하면 첫 전진이20.5333333px가 되어 기존16~30 범위가 이 잘못된 경로까지 받아들임을 확인했습니다. 실제 한 상자18.6666667px와 구분하지 못하므로 셀 번호만22로 바꿔도 충분하지 않습니다. 같은 소유자의 paint 끝과 커서 끝을 연결하는 관계는 정상 끝203.1과 선언 끝203.08을 받아들이면서 일반 scalar 경로의1.8666667px 오차를 검출했습니다. 이 정밀도는 cursor JSON의 소수 첫째 자리 직렬화 오차에서 도출했으며 PDF 절대 위치 핀이 아닙니다. 현재 경로의 관계식 반례 관찰이고, 과거 전체 바이너리/production mutation 또는 새 정식 회귀 실행으로 주장하지 않습니다.
원 해결은 6c887fc79887d16eded0d8fadae174e7350bad1b, 설명은
mydocs/report/archives/task_m100_1023_report.md입니다. 최초 추가 때부터 검사 본문이 현재와 동일하고 HWP 입력 SHA도 바뀌지 않았습니다. 후속 #3386의 클릭점 관계화 및 #7941 수정에서도 이 경로는 남았습니다. 해당 커밋과 뒤의 v0.7.14 Release 집계 PR #1294 merge가 현재 head의 조상임을 확인했습니다. #1294를 이 기능의 개별 해결 PR이라고 부르지 않습니다.기존 두 모듈은 35 PASS / 0 FAIL이지만 이 잘못된 검사도 포함되어 있습니다. 따라서 PASS만으로 원 결함 보호를 입증할 수 없다는 실제 사례입니다.
issue_8232기준으로 재작성할 대상으로 확정했으며, 실제 원본 제어/payload·논리offset·같은 셀 소유·한 상자 전진을 검사할 계획입니다. 제품/테스트 source 수정과 개명, 실제 mutation 전후 검증은 아직 수행하지 않았습니다.이번에 확보한 시각/단언 근거
현재 head는
238de6de41a208648f4ade6b494fe433a81c1fce이며 작업 트리는 clean입니다.PDFium5.13.0/96CSSdpi/2px raw의 전쪽 TSV입니다. review 그림에 이미 적힌 반올림 수치가 아닌 별도 전쪽 TSV 원값을 기록했습니다. 두 편집 HWP를 현재 Native 라이브러리로 재생성하여 기존 독립 Print 입력과 바이트 동일함을 확인했습니다. Mac fresh WASM은 web/no-opt 로컬 대체 빌드입니다.
기존 #7490 제목/표 ±2px 검사2개는 현재 자격을 확인했습니다. 제목의 독립 원점은
(413.535888671875,167.81656901041666)CSSpx이고, 표의 두 의미 셀 clip 합집합은(326.064,630.3506666666667,159.91466666666665,132.17466666666672)입니다. 현재 구현 bbox를 정답으로 복사하지 않았습니다. 양쪽 review/overlay 및 Native→WASM→독립 PDF의2배 확대에서 원문·줄 소속·prefix/표 순서·내용 보존을 확인했습니다. 글리프 획/힌팅·table-vpos 제목/번호의 글꼴 모양 차이는 남습니다.다른 prefix/Enter 성장 입력의 쪽수 근거와 로그의 다른 문서 overflow 진단은 별도 미완료입니다. 이 두 위치 검사 유지 근거를 파일 전체 완료로 확대하지 않습니다.
원장과 남은 작업
배치·CAS·CLI 직접 단언87그룹과 SVG/LayerTree의 현재 호출 결정성·직접 선언 clip/paint·글꼴 원본 단위 계약을 추가 분류했습니다. 현재 원장은 9,899그룹·2,103파일, 미분류는 4,985그룹입니다. 이 숫자는 위반 건수나 PASS 수가 아닙니다. 시각 증거 목록은 91조건·각 backend2,493쪽입니다.
조사 기록은 ignored
output/issue8232-audit/의table-vpos-marker-audit-finding.json,table-vpos-raw-char-shapes.json,phase13-existing-pins-qualification.json,phase13-independent-indent-oracles.json, 전쪽 TSV와 review/overlay, 실제 실행 로그에 보존했습니다.제품·테스트 보정/개명은 아직0건이고 PR은 생성하지 않았습니다. 전수 판정 후 실제 보정·등록/호출 갱신·필수 재검증까지 계속 진행합니다.
jangster77 commentedon Oct 25, 2026
14차 조사 — PDF 검사와 그림 삽입의 단위·소유·등록 구분
조사 head는
238de6de41a208648f4ade6b494fe433a81c1fce, 브랜치는audit/8232-px-regressions-20261025입니다. 제품·테스트 변경과 이름 변경은 아직 0건입니다. 전수 조사 완료가 아닙니다.regression_suite_005/007에서 해당 65개를 실행하여 65 PASS / 0 FAIL을 확인했습니다. nextest 명시 summary는 3.522초이고, 컴파일·실행 전체는 27.572초였습니다. 필터 제외 455개는 실행한 검사 수에 합산하지 않습니다. 이 통과는 지침 적합이나 시각 검증 완료를 뜻하지 않습니다.rotated_text_hit_and_cursor_follow_the_painted_frame_through_both_saves의 첫 기준선 (110,130)pt ±2CSSpx는 실제 절대 위치 핀입니다. 원본 PDF 행렬은 확인했지만 현재 양쪽 raw 98%·저장 경로별 직접 판독을 연결하지 못했으므로 적합 판정을 보류합니다. 과거 주석의 99%를 새 head 증거로 재인용하지 않습니다.return하여 실제 저장 검사를 실행하지 않고 PASS할 수 있는 경로를 보정 대상으로 기록했습니다. 현재 자료는 존재하며, 이 파일 전체의 통과를 주장하지 않습니다.이번 직접 검토는 검사122개·helper99개입니다. 이 중 이미 원장에 있던 함수와 새로 연결한 helper를 중복해서 신규 검사 수로 세지 않습니다. 최신 통합 원장은 9,981그룹·2,103파일이고 미분류4,870, 직접 의미 판정4,332, 독립 증거 확인 중436, 의미 메모 후 재판정131, 파일 문맥만 확인212입니다. 판정 수는 적합·수정 완료 수가 아닙니다.
기존 기대값·검출 동작은 무조건 보존하지 않습니다. 독립 근거에서 유효한 결함 검출 목표를 다시 정하고, 잘못된 단언·대상은 대체합니다. 실제로 보정하는 검사만
issue_8232기준으로 새로 명명하며 이전 이름 wrapper나 중복 등록은 만들지 않습니다. 전수 조사·독립 판정 뒤 실제 보정·등록 갱신·필수 검증을 계속하고, PR은 나중에 진행합니다.jangster77 commentedon Oct 25, 2026
15차 조사 — 빈 응답을 검사하는 MCP 회귀와 #6950 좌표 자격
기준은
audit/8232-px-regressions-20261025, head238de6de41a208648f4ade6b494fe433a81c1fce입니다. 작업장은 clean이며 제품·테스트 보정/개명은 아직 0건입니다.1. MCP 검사의 실제 미검출 반례
tests/mcp_server_contract.rs::boolean_false_does_not_inject_a_presence_flag의 helper는 이미content[0].text를 JSON으로 파싱한 본문을 반환합니다. 검사 함수가 여기에 다시result.content[0].text를 적용하므로 빈 문자열을 얻고,dryRun:true가 없다는 부정 검사가 통과합니다.같은 현재 서버에서 실제로 false/true 두 요청을 실행했습니다. false는 파일을 기록하고 본문에 false를 반환했으며, true는 파일을 기록하지 않고 본문에 true를 반환했습니다. 제품은 정상 동작했습니다. 그러나 기존 검사 식은 두 응답을 모두 PASS시켰습니다. 직접 본문의 boolean과 파일 기록 여부를 보호하는 계약은 반대 true 응답을 거부할 수 있습니다. 이는 현재 응답에 대한 검사 식의 반례 관찰이며, 과거 binary나 production mutation 전후 검증은 아닙니다.
원 PR #3724는 미병합 CLOSED지만, 누적 commit
e22e60dfcd8120ce3e873e35ee0531781a46eeb1이 통합 #3742의 mergecc382911684c05c041a6b5ae86a873f7321f2153를 통해 현재 head에 포함돼 있습니다. helper의 최초 도입 때도 반환 형태는 파싱된 본문이었고, 잘못된 검사 본문은 도입 후 그대로입니다. 미병합 원 PR을 미반영으로 오인하지 않습니다.2. #6950 원본 3쪽과 기존 px 검사
동일 원본
samples/hwpx/20260909-para-table.hwpx와 독립 한컴 PDFpdf/hwpx/20260909-para-table-2024.pdf를 전쪽 비교했습니다. 저장 제품 버전과 조판 호환 모드는 별개이므로, 검사 함수가 사용하는 기본 모드와 2024 호환 모드를 각각 실행했습니다.PDFium 5.13.0·96 CSS dpi·2px raw이며, Mac WASM은 locked wrapper의 web/no-opt 로컬 대체 빌드입니다. 두 설정의 PNG를 동일하다고 주장하거나 한 설정의 결과로 다른 설정을 대체하지 않았습니다. 양쪽 전쪽 review와 핵심 영역 확대를 직접 판독했으며, 글리프 획·점선 농도·화살표 이미지의 미세 차이는 남습니다.
3. 조사 원장과 남은 범위
이번에는 5개 파일의 검사 104개·helper 53개, 총 157개 함수를 직접 분류했습니다. CLI/MCP의 byte·문자 수·논리 셀 주소·원본 HU·현재 단건/배치 동등성은 실물 px 핀과 구분했습니다. 자료가 없으면 그냥 반환하는 6개 경로와 위 MCP 검사도 기록했으며, 현재 자료의 존재를 미실행 PASS 경로의 해소로 간주하지 않습니다.
현재 통합 원장은 10,024그룹·2,103파일입니다. 미분류 4,795, 직접 의미 판정 4,449, 독립 증거 확인 중 438, 의미 메모 후 재판정 130, 파일 문맥만 확인 212입니다. 판정 수는 적합/보정 완료 수가 아닙니다. 시각 목록은 두 조판 설정을 구분한 93조건·각 backend 2,499쪽입니다.
원시 자료는 ignored
output/issue8232-audit/의mcp-boolean-response-owner/observation.json,mcp-boolean-origin-pr-metadata.json,phase15-default-para-table-evidence/,phase15-para-table-evidence/,phase15-existing-tests.log와 원장에 보존했습니다. 원본·기준 PDF·기존 증거는 변경하지 않았습니다.전수 조사·독립 판정과 이후 실제 검사 보정·
issue_8232새 명명·등록/호출 갱신·필수 검증은 계속 남아 있습니다. PR은 생성하지 않았고 이슈를 완료로 처리하지 않습니다.jangster77 commentedon Oct 25, 2026
#8232 16차 전수 조사 진행 기록
현재 head는
238de6de41a208648f4ade6b494fe433a81c1fce, 브랜치는audit/8232-px-regressions-20261025입니다.집계 연결 보정
기록을 원장과 대조하는 검사에서 직접 검토한78개 함수가 초기 숫자/렌더 검색에 없다는 이유로 원장에 빠진 것을 확인했습니다. 이전에 발견한 MCP 응답 선택 오류도 포함됐습니다. 통합 builder가 직접 검토 기록을 모두 연결하도록 보완했습니다. 전체5,197개 직접 검토 기록의 원장 누락은0개이며, 이는 새 결함/실행 PASS 증가가 아닙니다. 이번14개 파일의259개 함수도 source SHA·함수 전수 목록·원장 연결을 모두 대조했습니다. 미분류4,655개는 그대로입니다.
확인된 추가 보정 대상
tests/cases/issue_5788_tac_table_anchor_line_spacing.rs:20은 고정 y380..500 영역의 괘선과 다음 raw y attribute를 선택합니다.따라서 고정 영역뿐 아니라 변환 좌표를 무시하는 선택, 유효한 다음 글줄 존재를 확인하지 않는 계약을 함께 고쳐야 합니다. 단순 허용폭 변경으로 해결하지 않습니다. 원 해결 #5829는 미병합 종료됐으나 #5844의
1b8c39b6c32baf00574564016bd9d9f7d1d88198로 실제 통합됐고 현재 조상입니다. 도입/현재 검사 SHA256은2472b97f95b6b3c8fdb7f67e065db0af9d8e336a9e368e15bdf7a19aea6448bb로 같습니다.현재 제품을 수정한 실행이나 과거 binary 반례가 아니라 현재 SVG에 기존 predicate를 재현하고 문자 제거 대조군을 적용한 감사입니다. 정식 새 검사 FAIL→PASS나 독립 전쪽 시각 수용으로 세지 않습니다. 첫 CLI -p1은 실제 두 번째 쪽을 출력했으므로 INVALID로 보존하고, 정확한 -p0 첫 쪽만 최종 진단에 사용했습니다.
제품·테스트 수정/새 명명은 아직0건입니다. 전수 조사 후 현행 지침과 독립 근거에 맞는 실제 보정·issue_8232 새 명명·등록/호출 갱신·필수 검증을 계속합니다. 잘못된 기존 단언 자체를 보존하는 조건은 적용하지 않습니다. PR/push는 하지 않았습니다.
jangster77 commentedon Oct 25, 2026
#8232 17차 전수 조사·기존 핀 자격 검증
head
238de6de41a208648f4ade6b494fe433a81c1fce, 브랜치audit/8232-px-regressions-20261025에서 진행했습니다. 제품·테스트 수정과 개명은 아직 0건이며 PR/push는 하지 않았습니다.직접 분류
8개 파일의 검사 55개/helper 46개를 읽었습니다. 반각/PUA 전진, 마지막 자간, 글상자 셀 그림, 저장 기준선, 한/중 가정통신문, 강제 개행 수식/커서, ingest 내용/구조를 대조했습니다.
table-in-tbox의 x128.70/123.10/334.73, 그림 x/y±0.06, 표 폭430.9/590.2로 선택하는 검사 등은 절대 위치/고정 선택 보정 대상입니다. 특히334.73은 주석에서도 독립 PDF 정답과 다른 현재 엔진 잔차를 복사한 값입니다. 숫자를 일괄±2로 바꾸는 것으로 대신하지 않습니다.충남중부권지사장8글자의7개 내부 간격을 정렬 폭에 반영하는 상대 계약과 페이지 좌표 핀을 구분합니다.현재 전쪽 Native/fresh WASM 대조
기존 원본·독립 Print PDF를 사용했습니다. 기존 검사와 같은 기본compat2022, canonical PDFium/96CSSdpi/2px raw입니다. 코드가 같은 frozen Native와 기존 fresh WASM 빌드를 hash로 확인해 재사용했습니다. Mac web/pkg/no-opt 로컬 대체 빌드이며 Docker 최적화 결과가 아닙니다.
각 backend 6쪽, 총 12쪽 모두 산출됐고 세 원본 모두독립 PDF2쪽과 일치·누락0입니다.12개 review와 주요 standalone overlay, 원본 PNG를 보존한2배 확대 9개를 직접 읽었습니다.
실제 기존 검사 실행
기존6모듈을 실제 등록 목록에서 찾아 Native로 실행했습니다.33실행/33 PASS / 0 FAIL, 선택한 target의1,285개 미실행, 테스트 3.574초·컴파일 포함 31.336초· exit 0입니다. 새 정식 검사FAIL→PASS나 전체 회귀가 아닙니다. 현재PASS만으로 지침 적합을 판단할 수 없음을 별도 전쪽 결과와 함께 기록합니다.
원장과 남은 작업
최신 원장 10,227그룹 / 2,103파일, 미분류 4,613, 직접 의미 판정 4,829, 독립 근거 대기 446, 의미 메모 127, 파일 문맥 212입니다. 직접 검토 5,275개가 원장에 모두 연결됐고 누락0입니다. 전쪽 증거 목록은96조건·각 backend 2,505쪽이며 목록 존재가 모두 수용됐다는 뜻은 아닙니다.
현행 지침에 따른 판정·독립 근거·실제 소비 경로 연결과 남은 전수 조사를 계속합니다. 이후 부적합 검사를 실제 보정하고 issue_8232 새 명명·호출/등록 갱신·필수 검증을 완료해야 합니다. 잘못된 기존 단언을 보존하는 조건은 적용하지 않습니다.
jangster77 commentedon Oct 25, 2026
#8232 18차 전수 조사·검사 검출력 대조
head
238de6de41a208648f4ade6b494fe433a81c1fce, 브랜치audit/8232-px-regressions-20261025에서 진행했습니다. 제품·테스트 소스 수정/개명은 아직 0건이며 PR/push는 하지 않았습니다. 전수 조사 후 실제 보정과 새 명명·호출/등록 갱신·필수 검증까지 수행하는 목표는 유지합니다.직접 분류
16개 파일의 검사 196개와 helper 93개, 총 289개 함수를 직접 읽어 분류했습니다.
실제 기존 검사에서 확인한 허위 통과
현재 실제 등록 목록의 binary 경로/SHA와 source SHA를 각각 고정했습니다. 정상과 반례 합계 6회의 기존 검사 실행입니다. 제품은 정상 응답을 반환합니다. 제품 회귀·과거 바이너리 재현·새 정식 검사 FAIL→PASS가 아닙니다. 원본은 수정하지 않았습니다.
Codex/visual 검사는 원 이슈 #5318/#5312 전체 본문·댓글 → 원 PR #5328/#5320 → 실제 통합 #5444/e79f113 → 현재 파일 이력을 대조했습니다. 두 허위 통과 조건이 실제 통합 시점부터 있었음을 확인했습니다. 자료 contract와 기존 CLI 호출을 연결하는 목적은 유효하지만 잘못된 단언까지 보존하지 않습니다. 검색 주소 검사는 실제 수정 전에 원 해결 계보의 나머지 확인이 남습니다.
본문 응답 검사
document_text는 text 키가 없어도 빈 문자열을 반환합니다. 현재 frozen Native의 읽기 전용 field-01 응답은3쪽/156글자입니다. missing/null이라는 서로 다른 잘못된 응답을 기존 predicate가 같은 빈 본문 값으로 바꾸는 반례를 기록했습니다.첫 proxy 주입 시도에서는 runtime env를 바꿨지만 해당 helper가 compile-time env!를 사용하여 proxy를 호출하지 않았습니다. 그 두 PASS는 변형 응답 검출력의 증거가 아니며 INVALID 기록과 원 driver를 보존했습니다. 최종 근거는 읽기 전용 실제 응답과 source predicate 대조로 제한합니다.
바이너리 증적 정정
기존 15/17차 producer의 캐시된 이전 binary SHA를 실행 바이너리 증거로 잘못 연결한 부분을 정정했습니다. 원 producer와 당시 receipt는 정정 전 snapshot으로 보존하고 실제 nextest 요약과 SHA 출처를 분리했습니다.
원장과 남은 작업
원장10,346그룹/2,105파일, 미분류4,443, 직접 의미 판정5,118, 독립 근거 대기446, 의미 메모127, 파일 문맥212입니다. 직접 판정5,564개는 모두 원장에 연결됐고 누락0입니다. 이번289개 source SHA도 현재와 대조했습니다.
기존 전쪽 시각 목록96조건/각 backend2,505쪽은 변경하지 않았습니다. 새 캡처나 시각 개선으로 보고하지 않습니다. 미분류·독립 근거·동적 호출 폐쇄가 남아 전수 조사 미완료입니다. 판정을 마친 뒤 실제 보정·issue_8232 새 명명·등록/호출 정리·필수 검증을 이어갑니다. 잘못된 기존 단언의 유지를 전제로 삼지 않습니다.
jangster77 commentedon Oct 25, 2026
#8232 19차 — 원본 HU 계약과 실제 출력 미달의 분리
head
238de6de41a208648f4ade6b494fe433a81c1fce, 브랜치audit/8232-px-regressions-20261025입니다. 제품·테스트 수정/개명은 아직0건입니다. 전수 조사 후 실제 보정·issue_8232 명명/호출·등록 정리·필수 검증을 끝내는 목표를 유지합니다.직접 분류와 원본 근거
다음5개 파일 전체의 검사80개/helper55개, 총135개 함수를 직접 읽었습니다.
CFB 원시 레코드와 HWPX XML을 rhwp 모델과 별도로 읽었습니다. survey는109개 직접 문단과64680→64462HU, CBTA는1200/6960HU와 padding282HU, 1480000은 cell1417HU, 면적조서는2362HU, 전직 면제 표는7940/18898HU입니다.
CBTA의 원시 문단 ordinal1132/1142와 모델 pi1133/1143은 달랐습니다. 처음 ordinal을 그대로 쓴 진단은 실패했고 근거로 쓰지 않았습니다. 정확한 CTRL_HEADER42바이트·instance ID2061287189/2062292470·행열을 대조해 같은 표를 연결했습니다. 모델은 ID/raw bytes 연결에만 쓰고 기대 HU는 CFB에서 읽었습니다.
저장 끝 행 크기 검사의 네 caller는 현재 페이지에서 선택 셀이 각각 하나이고 기대 표 소유임을 확인했습니다. 해당 수치 의미 pending1건을 해소했습니다. 0.5px라는 숫자만 보고 정상 원본 크기 계약을 ±2로 바꾸지 않습니다. 다른 caller의 소유·100HU 닫는 선·+4/+30px 같은 임의 하한은 계속 확인합니다.
전쪽 Native/fresh WASM
canonical PDFium/96CSSdpi/2px raw입니다. 같은 코드의 hash 고정 Native와 기존 fresh WASM 빌드를 재사용해 PNG/TSV는 새로 생성했습니다. Mac web/pkg/no-opt 대체 빌드이며 Docker 최적화 결과가 아닙니다.
4조건 각backend57쪽, 총114쪽이며 쪽수 불일치·누락0입니다. 미달 조건의 canonical capture/TSV는 exit1·re_review_required로 남습니다. 예외·문턱 완화·평균 상쇄를 하지 않았습니다. 어울림 그림 원본의 수치98%를 수동 IR 변형이나 새 독립 좌표 핀의 자격으로 확대하지 않습니다.
새 Print는 두 입력의 저장 제품을 확인해 engine2020/timeout1800초로 요청했습니다. 실제한컴11.0.0.9136, direct DLL host, pdf_print_method0, hancom2020_pdf_driver_one_up, scripts_disabled와 session0 font 상태를 기록했습니다.
04a34b99-7525-452e-bb27-8fae01500e5b,10쪽,126531bytes, PDF SHAa4ba078927ab1839ff26270f8fc4e948960d72991417f40c6d84f8ff1e56aa99.719ab169-b508-4407-ad2f-8d19d5db3f4b,18쪽,587117bytes, PDF SHAaa3a7ba5c3243b75fce7fe8e64c2a848b37e5b0a2ab4ba3c7d387a7c358e291a.입력과 기존 기준 PDF는 교체하지 않았습니다. 기존70833 PDF의 실제 엔진 빌드는 과거12.0.0.4605였으며 새11.0 대조군과 구분했습니다.
직접 판독
review와 standalone overlay16개를 읽었습니다. 어울림 그림1쪽은 상단 그림과 TAC 표 순서·여백,11쪽은 질문9/후속 본문을 확인했습니다. 제목 자간·글리프 잔차는 남습니다.
70833의 기존5쪽과 새10쪽은 표 조각 높이·후속 본문 위치가 다릅니다. 새 독립 PDF에서 선행 bullet은 물리9쪽에만 있고 현재 Native10쪽은 그 bullet을 포함한 뒤 II를 시작합니다. 큰 차이를 폰트만의 문제로 돌리지 않습니다. 15쪽은 Native91.07744/WASM89.25151%이며 한 줄 제목의 글리프/미세 위치 차이가 보여도 canonical 보류를 그대로 유지합니다. 면적조서5쪽은 같은 행 번호들의 수직 띠 높이와 끝 괘선이 다릅니다.
이 관측은 source 변경 전 고정 base의 상태입니다. 후보 변경 전후 회귀나 새 보정 완료로 보고하지 않습니다.
실제 기존 Native80개
현재 nextest metadata의 suite006/019/022/025를 조회하고 정확한 binary 경로와 실행 전후 SHA를 고정했습니다. 80실행/80 PASS/0 FAIL,38.803초, 선택 target의954개 skipped입니다. 실행 전후 binary hash는 같고 command/summary/exit0을 확인했습니다. 전체 회귀·새 검사 FAIL→PASS·시각 수용이 아닙니다.
최신 원장과 남은 작업
10,400그룹/2,105파일, 미분류4,385, 직접 의미 판정5,229, 독립 근거 대기447, 의미 메모127, 파일 문맥212입니다. 직접 판정5,676개가 원장에 모두 연결됐고 누락0입니다. 전쪽 목록은100조건/각backend2,562쪽/입력·PDF196파일이며 미달도 포함합니다.
새 절대 px 검사 자격은0건입니다. 조사·원본/출력 판정·실제 보정·새 명명·수집/호출 정리·필수 검증을 계속하며, 잘못된 기존 단언을 유지하는 조건은 적용하지 않습니다. PR/push는 하지 않았습니다.