Skip to content

fix: Layout 리팩터링 Phase 1 디버그 인프라 누락 회귀 정정 (Task #517 재적용, closes #647)#649

Closed
planet6897 wants to merge 1 commit intoedwardkim:develfrom
planet6897:pr-task647
Closed

fix: Layout 리팩터링 Phase 1 디버그 인프라 누락 회귀 정정 (Task #517 재적용, closes #647)#649
planet6897 wants to merge 1 commit intoedwardkim:develfrom
planet6897:pr-task647

Conversation

@planet6897
Copy link
Copy Markdown
Contributor

개요

이슈 #647 정정. Task #517 (Layout 리팩터링 Phase 1 — 디버그 인프라 + 회귀 검증 도구) 의 원 commit 9c16a1b4stream/devel 기준으로 cherry-pick 재적용.

회귀 메커니즘

이슈 #618 (Task #519) → PR #620 와 동일 패턴: 묶음 머지 a7e43f9 (Task #517/#518/#519/#520/#521/#523/#528)local/devel 에는 머지되었으나 stream/devel 으로 승격되지 않음.

$ git merge-base --is-ancestor 9c16a1b4 stream/devel
NOT in stream/devel

변경 내역

원 commit 9c16a1b4git cherry-pick -x 로 그대로 적용 (충돌 없음).

영역 경로 변경
디버그 로깅 src/renderer/layout/paragraph_layout.rs +32 줄 (env-var-checked, 기본 동작 변경 없음)
회귀 비교 도구 scripts/svg_regression_diff.sh +154 줄 (build/diff 두 모드, 7 샘플 170 페이지 byte 비교)
매뉴얼 mydocs/manual/svg_regression_diff.md +85 줄
문서 mydocs/plans/, mydocs/working/, mydocs/report/ +257 줄

총 7 files changed, 528 insertions(+).

검증

$ cargo build
Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.82s

$ cargo test --release --lib
test result: ok. 1141 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out

env-var (RHWP_LAYOUT_DEBUG) 이 설정되지 않은 기본 상태에서는 동작 변경 0.

후속

본 PR 머지 후 후속 PR 로 #648 (Task #518 Layout Phase 2 본질 정정 — line_break_char_idx 다중화) 적용 예정. #648LAYOUT_BREAK_INDICES 디버그 로깅이 본 PR 의 layout_debug_enabled() 헬퍼에 의존하므로 본 PR 선행 머지 필요.

참고

Stage 1: RHWP_LAYOUT_DEBUG=1 env logging
- paragraph_layout.rs 에 layout_debug_enabled() + layout_inline_table_paragraph 진단 로깅
- 출력: pi/sec/col_x/col_w/y_start/ls_count/tables + 각 ls/inline_tbl 상세
- env-var-checked → 기본 동작 변경 없음

Stage 2: scripts/svg_regression_diff.sh
- build mode: 두 ref 자동 빌드 + 광범위 비교
- diff mode: 두 디렉토리 byte 비교
- 기본 7 샘플 170 페이지 커버

검증:
- cargo test --release: 1103 passed
- svg_regression_diff.sh build devel HEAD: 170/170 byte 동일, diff=0
- exam_science p2 pi=61 logging: ls_count=3 tables=1 rows=2 확인

Phase 2~4 본질 정정의 측정·재현·검증 인프라 마련.

(cherry picked from commit 9c16a1b)
@edwardkim
Copy link
Copy Markdown
Owner

@planet6897 님 13번째 사이클 PR 안내입니다.

본 환경 검증 결과:

결정적 검증 통과:

  • cargo test --release --lib → 1165 passed (회귀 0)
  • cargo clippy --release → clean
  • cherry-pick simulation 충돌 0건

env-var 영역 본질 확증:

$ md5sum /tmp/pr649-{default,debug}/exam_science_002.svg
842c9513bbbb833c5ba1ad27bac52694  /tmp/pr649-default/exam_science_002.svg
842c9513bbbb833c5ba1ad27bac52694  /tmp/pr649-debug/exam_science_002.svg

→ env-var 미설정 / 설정 영역의 SVG md5 동일 — 기본 동작 무영향 확증.

처리 결정: CLOSE — devel 반영 부재.

본 PR 영역의 commit ffb32ff7 은 PR #650 (Task #518 Phase 2 본질 정정) 의 첫 commit 으로 이미 포함되어 있습니다. PR #650 본문에서 안내하신 "PR #649 머지 후 본 PR 자동 1 commit 축약" 영역 대신, 본 PR close + PR #650 영역에서 두 commit 함께 cherry-pick 영역으로 통합 처리합니다.

본 PR 영역의 가치 영역은 PR #650 영역에 그대로 보존됩니다 — (cherry picked from commit 9c16a1b4) 영역의 author 정합 + Phase 1 인프라 + Phase 2 본질 정정 두 영역의 단계별 보존 머지 영역 정합.

Issue #647 은 PR #650 머지 시 함께 close 영역 정합.

처리 보고서: mydocs/pr/archives/pr_649_close_report.md
검토 보고서: mydocs/pr/archives/pr_649_review.md

@edwardkim edwardkim closed this May 8, 2026
edwardkim added a commit that referenced this pull request May 8, 2026
PR #649 (Task #517 재적용): Layout 리팩터링 Phase 1 디버그 인프라 누락 회귀 정정
- 단일 commit `ffb32ff7` (원 commit `9c16a1b4` cherry-pick)
- 본 환경 결정적 검증 1165 lib pass, clippy clean
- env-var 미설정/설정 SVG md5 동일 — 기본 동작 무영향 확증

처리: close (PR #650 영역 통합 처리)
- PR #650 이 본 PR `ffb32ff7` + Task #518 `e8dd3f0f` 두 commit 포함
- PR #650 머지 시 두 commit 함께 cherry-pick 영역으로 통합 처리
- Issue #647 OPEN 유지 (PR #650 머지 시 close 정합)

산출물:
- mydocs/pr/archives/pr_649_review.md
- mydocs/pr/archives/pr_649_close_report.md
- mydocs/orders/20260508.md 갱신
edwardkim added a commit that referenced this pull request May 8, 2026
closes #647 (Phase 1 인프라)
closes #648 (Phase 2 본질 정정)

원 commits 영역의 squash merge (옵션 B):
- ffb32ff Task #517 Phase 1: 디버그 인프라 + 회귀 검증 도구
  - layout_debug_enabled() env-var 헬퍼 (RHWP_LAYOUT_DEBUG=1)
  - LAYOUT_INLINE_TABLE_PARA / LAYOUT_LS / LAYOUT_INLINE_TBL 진단 로깅
  - scripts/svg_regression_diff.sh (build/diff 두 모드)
- e8dd3f0 Task #518 Phase 2: line_break_char_idx 다중화
  - line_break_char_idx: Option<usize> → line_break_char_indices: Vec<usize>
  - ctrl_gap 합산 (saturating 0 → 항상 None) → char_offsets[i] >= ts 직접 룩업
  - ls[1] 만 → ls[1..] 모두 (3줄 이상 wrap 케이스)
  - LAYOUT_BREAK_INDICES 디버그 로깅

회귀 메커니즘:
- 묶음 머지 a7e43f9 (Task #517/#518/#519/#520/#521/#523/#528) 영역에서 local/devel 까지만
  머지되고 stream/devel 으로 승격 누락 — PR #620 (Task #519, Issue #618) 동일 패턴

본 환경 검증:
- cherry-pick 영역 충돌 0건 (Auto-merging paragraph_layout.rs 자동 정합)
- cargo test --release 1165 lib pass (회귀 0)
- cargo clippy --release clean
- env-var 미설정/설정 SVG md5 동일 — 기본 동작 무영향 확증
- 광범위 sweep 7 샘플 170 페이지: same=170 / diff=0 ✅

PR: #650
컨트리뷰터: @planet6897 (14번째 사이클)
선행 PR: #649 close 결정 영역의 통합 처리 영역 정합

Co-Authored-By: Jaeook Ryu <jaeook.ryu@gmail.com>
edwardkim added a commit that referenced this pull request May 8, 2026
PR #650 (Task #517+#518): Layout 리팩터링 Phase 1+2 누락 회귀 정정
- merge commit: e8f93de (옵션 B — squash merge → 1 commit 축약)
- PR #649 close 영역의 통합 후속 처리 영역
- 본 환경 결정적 검증 1165 lib pass + clippy clean
- 광범위 sweep 7 샘플 170 페이지: same=170 / diff=0
- WASM 빌드 산출물 갱신
- 시각 판정 게이트 면제 영역 정합 (작업지시자 직접 영역 결정)

closes #647 + #648

산출물:
- mydocs/pr/archives/pr_650_review.md
- mydocs/pr/archives/pr_650_report.md
- mydocs/orders/20260508.md 갱신
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants