Task #705: 한컴 호환 셀 안 PageHide 컨트롤 본질 정정#711
Closed
planet6897 wants to merge 7 commits into
Closed
Conversation
7 tasks
edwardkim
added a commit
that referenced
this pull request
May 8, 2026
PR #638 (Task #634, 한컴 호환 쪽번호) close 영역 + PR #641 (Task #639, cover-style 룰) close 영역 처리: - 두 PR 모두 devel 반영 부재 (작업지시자 결정 영역 정합) - 컨트리뷰터 (@planet6897) 영역의 후속 PR #711 (Task #705) 영역에서 본질 정정 영역 진행 PR #638 영역의 본질 결함 발견: - pagination/engine.rs 셀 안 PageHide 무시 (page 2 쪽번호 결함의 본질) - layout.rs hide_border/hide_fill 가드 부재 - main.rs dump 셀 안 PageHide 분기 부재 → 컨트리뷰터에게 정석 처리 안내 댓글 등록 영역 PR #641 영역의 cover-style 휴리스틱: - 본 환경 결함 영역의 우회 (workaround) 영역으로 분석 - 174 샘플 영역 중 영향 페이지 2 영역만 매칭 (PR #711 영역의 6 샘플 영역 영역 영역) - 작업지시자 결정: 본 PR close + PR #711 본질 정정으로 재검토 영역 archives 이동: - mydocs/pr/archives/pr_638_review.md - mydocs/pr/archives/pr_641_review.md - mydocs/pr/archives/pr_641_close_report.md (close 결정 + supersede 안내) 5/8 orders 영역 신규: - mydocs/orders/20260508.md - PR #684 (5/8 처리 완료) + PR #638 (close) + PR #641 (close, supersede PR #711) entry 본 사이클 (5/7~5/8) close 패턴 누적: - PR #638 (본질 결함 발견) - PR #641 (우회 접근 → PR #711 supersede) - 메인테이너 게이트웨이 방식의 권위 사례 영역 강화 누적 본 사이클 PR 처리 누적: 17건 (15 merged + 2 closed)
- inspect_705.rs / scan_cell_pagehide.rs 분석 도구 추가 - aift.hwp 셀[167]/p[3] PageHide 6필드 모두 true 확인 (메인테이너 권위 측정 일치) - 198 샘플 sweep: 셀 안 PageHide 13건 / 6 샘플 (3%) — PR edwardkim#640 H2 측정 누락 영역 - 중첩 표 (depth 2+) 실측 0건 — Stage 2 재귀 1 depth 충분 - 신규 회귀 테스트 후보 6건 도출 (aift x4 + 국립국어원/KTX x2) Refs edwardkim#705
- test_705_aift_page2_cell_pagehide_collected - test_705_aift_page2_cell_pagehide_six_fields (메인테이너 권위 측정 6 필드) - test_705_aift_page3_cell_pagehide_collected - test_705_aift_cell_pagehides_total_count (실제=2 vs 기대>=4 정량 측정) 모두 RED — 결함 #1 (engine.rs 셀 안 paragraph 미순회) 정량 검증. Refs edwardkim#705
- engine.rs + typeset.rs 두 경로 모두에 collect_pagehide_in_table 헬퍼 추가 - 결함 #1 본질: TypesetEngine::typeset_section 가 main path, Paginator::paginate_with_measured 는 RHWP_USE_PAGINATOR=1 fallback - 두 경로 동시 정정 필요 (PR edwardkim#641 description 의 두 경로 양분 정합) - 외부 paragraph index pi 그대로 사용 → 페이지 매핑 정합성 유지 - 중첩 표 (depth 2+) 재귀 보존 (실측 0건이지만 미래 케이스 대비) 회귀 sweep: 1123 passed, 0 failed (RED 4건 → GREEN, 기존 1119건 유지) Refs edwardkim#705
…ide_border 가드 추가 - build_page_background() 호출에 hide_fill 가드 - build_page_borders() 호출에 hide_border 가드 - 기존 hide_master/hide_header 패턴 (layout.rs:417-431) 과 동일 aift.hwp page 2 (6 필드 모두 true) 검증: - page 1 (정상): SVG 에 fill="#ffffff" 페이지 배경 rect 존재 - page 2 (감추기): 페이지 배경 rect 미존재 → 가드 정확 동작 회귀 sweep: 1123 passed, 0 failed (영향 페이지는 aift p2 1건만) Refs edwardkim#705
…기 추가 - Control::Picture/Shape 매칭 직후 Control::PageHide(ph) 분기 추가 - 6 필드 모두 출력 (header/footer/master/border/fill/page_num) 검증: rhwp dump samples/aift.hwp -s 0 -p 1 → 셀[167] ctrl[0] PageHide: 모든 필드 true (메인테이너 권위 측정 일치) 회귀 sweep: 1123 passed, 0 failed Refs edwardkim#705
- 신규 회귀 가드 2건 추가 (국립국어원 + KTX) — 통합 테스트 6건 모두 GREEN - 전체 회귀: cargo test 1123 passed 0 failed, clippy 0 warning - 198 sample sweep: 분포 무변화 (본문 95 + 셀안 13) - aift.hwp 페이지 카운트 77 무변화 - SVG smoke check: aift p1/2/4/5/6 표시·미표시 정합 - 최종 보고서 작성 closes edwardkim#705 Refs edwardkim#705
Task edwardkim#705 의 셀 안 PageHide 정정으로 KTX TOC 페이지의 부당한 페이지 번호 footer ("- 2 -") 가 정확히 숨겨짐 — 이는 본 타스크의 의도된 시각 변경. UPDATE_GOLDEN=1 로 재생성. cargo test --release 전부 통과. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 9, 2026
작업지시자 시각 판정 (2026-05-09): PR #711 의 셀 안 PageHide 본질 정정이 한컴 PDF 권위본 (pdf/2022년 국립국어원 업무계획-2022.pdf page 3 마지막 줄 "- 1 -") 정합. 페이지 3 의 쪽번호 영역 의 셀[0]/p[5] PageHide hide_page_num 영역 적용 영역으로 미표시 영역 정합. 기존 가드 영역 의 의도 변경: - PR #634 시점 (rhwp 의 한컴 부정합 행위 보존): count == 3 - PR #711 시점 (한컴 권위 정합): count == 0 PR #634 시점 영역 의 가드 주석 ("페이지 2, 3 미표시 메커니즘은 별도 issue") 영역 — PR #711 영역 의 셀 안 PageHide 메커니즘 영역 으로 본질 정정 영역 완성. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 9, 2026
PR #638/#641 close 시 작업지시자 (메인테이너) 가 발견한 본 환경 결함 3건의 본질 정정. PR #641 (cover-style 휴리스틱 우회) 폐기 후 작업지시자 권고 영역의 본질 정정 supersede. 본질 결함 3건: 1. pagination/engine.rs:519-544 + typeset.rs:2120 — page_hides 수집이 본문 paragraph 만 → 셀 안 PageHide 무시 (두 페이지네이션 경로 양분 정합) 2. layout.rs:411-422 — build_page_background()/build_page_borders() 호출에 hide_fill/hide_border 가드 부재 3. main.rs:1665-1670 — dump 셀 안 controls 매칭에서 PageHide 분기 부재 정정: - collect_pagehide_in_table 재귀 함수 (engine.rs + typeset.rs 두 경로 동기) - layout.rs 의 hide_fill/hide_border 가드 추가 — 6 필드 모두 가드 정합화 - main.rs dump 셀 안 PageHide 분기 추가 Stage 0 198 sample sweep 측정: - 셀 안 PageHide 13건 / 6 샘플 (PR #640 H2 측정 누락 영역의 정량 확인) - 영향 샘플: aift, 2022 국립국어원, KTX, kps-ai, tac-img-02 hwp+hwpx 회귀 가드 (test_705_*) 6건: - aift p2 셀[167] 6 필드 모두 true 검증 - aift p3 셀[31] page_num 검증 - 국립국어원/KTX 셀 안 PageHide 매핑 검증 - 본문 + 셀 안 합산 카운트 검증 작업지시자 시각 판정 ★ 통과 (2026-05-09): - 한컴 PDF 권위본 (pdf/2022년 국립국어원 업무계획-2022.pdf page 3 마지막 줄 "- 1 -") 정합 - 한컴 편집기 [감추기] 다이얼로그 6 필드 영역 정합 - aift.hwp page 2 + 국립국어원 page 3 등 셀 안 PageHide 영역 모두 정합 메인테이너 가드 갱신 commit (3253f7d): - test_634_gukrip_page3_shows_page_number: count == 3 → count == 0 (rhwp 의 한컴 부정합 행위 보존 → 한컴 권위 정합으로 의도 변경) 검증: - cargo test --release: lib 1173 (+6 test_705 신규) + 통합 ALL GREEN, failed 0 - cargo clippy --release: 신규 경고 0 - 광범위 sweep 7 fixture / 170 페이지 / diff 2 (aift p2/p3 의도된 변경, 다른 fixture 회귀 0) - WASM 빌드 4,606,179 bytes PR supersede 영역: - PR #638 (Task #634) close → src 무변경 회귀 가드만 머지 - PR #640 (Task #637) close → 분석 docs (H2 측정 누락 영역의 정량 확인) - PR #641 (Task #639) close → cover-style 휴리스틱 폐기 (작업지시자 권고) - PR #711 (Task #705) — 본질 정정 supersede Closes #705 Co-Authored-By: Jaeook Ryu <jaeook.ryu@gmail.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 9, 2026
- mydocs/pr/archives/pr_711_review.md (검토 문서, 시각 판정 결과 반영)
- mydocs/pr/archives/pr_711_report.md (처리 보고서, 가드 갱신 명시)
- mydocs/plans/archives/task_m100_705{,_impl}.md
- mydocs/orders/20260509.md: PR #711 행 + 본 사이클 패턴 라인 추가
처리 결과:
- 옵션 A — 7 commits cherry-pick + 메인테이너 가드 갱신 + no-ff merge (2bc982c)
- 작업지시자 시각 판정 ★ 통과 — 한컴 정답지 정합 확정
- test_634_gukrip_page3 가드 갱신 (count=3 → 0, 메인테이너 commit 3253f7d)
- PR #638/#640/#641 close → PR #711 본질 정정 supersede
- Issue #705 close 자동 정합
부수 사실:
- PR #706 form-002 패턴 정합 영역 의 두 번째 사례
- `feedback_visual_judgment_authority` + `feedback_visual_regression_grows` 권위 사례 강화
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Owner
|
@planet6897 PR 머지 완료되었습니다 (devel 처리 결과
시각 판정 본질 메인테이너 가드 갱신 (commit
PR #634 시점 영역 의 가드 주석 ("페이지 2, 3 미표시 메커니즘은 별도 issue") 영역 — PR #711 영역 의 셀 안 PageHide 메커니즘 영역 으로 본질 정정 완성. 검증
메모리 룰 권위 사례 강화
처리 보고서: |
edwardkim
added a commit
that referenced
this pull request
May 9, 2026
본질: HwpUnit=u32 영역의 signed 캐스트 누락 결함.
`vertical_offset` 음수 (예: -1796 HU) 의 unsigned 비트표현 = 0xFFFFF8FC =
4294965500u32. `> 0` 게이트가 unsigned 양수로 통과 → 후속 `as i32` 캐스트
에서 음수 적용 → 표가 위로 점프, 직전 인라인 표 영역 침범.
비-Partial 경로 (table_layout.rs:1069+) 에는 `raw_y.max(y_start)` 클램프
영역으로 음수 무력화. Partial 경로 (table_partial.rs:59-78) 에는 클램프
부재 영역 → 결함 노출.
영향 샘플: samples/2022년 국립국어원 업무계획.hwp 영역의 12x5 일정 표 영역
(작업지시자 안내 영역의 페이지 31, 본 환경 영역 35 페이지 영역의 동적 페이지
탐색):
- pi=585: 1x3 인라인 TAC 제목 표 ("붙임 / / 과제별 추진일정")
- pi=586: 12x5 일정 표 (vert=문단 -1796 HU 음수)
- 결함: pi=586 외곽 상단이 pi=585 안쪽으로 ~15.94 px 침범
- 정정 후: 침범 0 px (PDF 권위 정합)
정정 (signed 비교 14 라인):
- src/renderer/layout/table_partial.rs:59-78 (Partial 경로, 본질):
let vert_off_signed = table.common.vertical_offset as i32;
&& vert_off_signed > 0
- src/renderer/layout.rs:2687+ (비-Partial 경로 게이트 동기):
&& (t.common.vertical_offset as i32) > 0
영향 좁힘 (feedback_hancom_compat_specific_over_general):
- is_continuation=true 분할 표 연결 페이지 영역 무영향
- vertical_offset >= 0 영역 (signed 양수/0) 무영향
- 비-TopAndBottom wrap / TAC 표 영역 무관
회귀 가드 (tests/issue_712.rs +88 LOC, 신규):
- 동적 페이지 탐색 영역 — 페이지네이션 변동 영역 견고 (PR #644 / PR #711
머지 영역 자동 적응)
- pi=586 외곽 상단 ≥ pi=585 외곽 하단 (0.5 px 허용 오차)
검증:
- cargo test --release: lib 1173 + 통합 ALL GREEN, failed 0
- cargo test --release --test issue_712: 1 PASS (회귀 가드)
- cargo test --release --test svg_snapshot: 8/8 (form-002 PR #706 영역 보존)
- cargo test --release test_705: 6/6 (PR #711 영역 보존)
- cargo test --release test_634: 8/8 (가드 갱신 후 보존)
- cargo clippy --release: 신규 경고 0
- 광범위 sweep 7 fixture / 170 페이지 / 회귀 0
Closes #712
Co-Authored-By: Jaeook Ryu <jaeook.ryu@gmail.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PR #638 (Task #634) close 시 메인테이너 (@edwardkim) 가 발견한 본질 결함의 후속 본질 PR. PR #641 (Task #639, cover-style 휴리스틱 우회 접근) 폐기 후 본 task 로 본질 정정.
aift.hwp page 2 의 셀[167] paragraph[3] 에 PageHide 컨트롤 6 필드 모두 true 로 인코딩되어 있으나, 본 환경 페이지네이션·렌더러·dump 3 곳에서 무시·미적용되는 결함을 정정합니다.
closes #705
정정한 결함 3건
핵심 발견 — 두 페이지네이션 경로
Stage 2 GREEN 시도 시 engine.rs 만 수정 → RED 유지 → typeset.rs 도 동일 결함 발견:
PR #641 description 의 "두 페이지네이션 경로 양분" 진단 정합. 두 경로 동시 정정.
Stage 0 측정 — 198 sample sweep
PR #640 의 H2 가설 ("셀 내부 PageHide") 기각이 본 환경 결함 #1 으로 인한 잘못된 측정 결과였음을 정량 확인.
검증
신규 회귀 가드 (통합 테스트 6건)
회귀 sweep
dump 검증 (메인테이너 권위 측정 일치)
```
$ rhwp dump samples/aift.hwp -s 0 -p 1 | grep "셀\[167\]\|PageHide"
[0] 셀[167] r=34,c=0 ... text="...| 년 월 일|..."
[0] ctrl[0] PageHide: header=true footer=true master=true border=true fill=true page_num=true
```
SVG smoke check (aift.hwp 5 페이지)
메모리 룰 정합
영향 범위
기능적 영향
무영향
관련
Test plan
🤖 Generated with Claude Code