Skip to content

Task #1363: 미주 높이 모델 측정 SSOT — scratch 전-단 순차 렌더 (A3 opt-in)#1371

Merged
jangster77 merged 3 commits into
edwardkim:develfrom
planet6897:task1363
Jun 12, 2026
Merged

Task #1363: 미주 높이 모델 측정 SSOT — scratch 전-단 순차 렌더 (A3 opt-in)#1371
jangster77 merged 3 commits into
edwardkim:develfrom
planet6897:task1363

Conversation

@planet6897

Copy link
Copy Markdown
Contributor

개요

미주(endnote) 다단 누적 SSOT 리팩터. #1357 col0 본문 초과 해소(B 기본) + 렌더 실측 정확화(A3 opt-in).

핵심 변경

  • LayoutEngine::measure_endnote_column_bottom: 미주 단의 전 items 를 scratch 로 1회 build_single_column 렌더해 정확한 단 bottom 산출 → sim==render 를 구조적으로 보장. per-para 고립 측정의 컨텍스트 의존·순차 상호작용(vpos forward-jump↔trailing) 발산을 회피.
  • typeset A3 분기(simulate_endnote_column_bottom_y): RHWP_EN_SSOT=A3 opt-in. 두 배치(p17 C×C 우단·p21 pi=1127)·sep20/20 overflow→0, issue_1082 5/5 달성.
  • blocker 2건 해소: endnote_para_base=0(미주 vpos 정규화 활성), 로컬 +1 오프셋(para_index==0 column-top vpos fallback 오발동 회피 — 수식 35px→13721px 폭발 제거).
  • 부작용 격리: 3계층(self/render/scratch) 분리 + 회귀 가드 테스트(test_measure_endnote_advance_side_effect_free).

검증

  • 기본(B) 전체 cargo test 무회귀: 123/123 test 바이너리 ok, exit 0. 측정 경로 전부 ssot_level >= A3 게이트 — 미설정(기본 B) 시 종전과 100% 동일.
  • A3 권위 경로: issue_1082 5/5(두 배치·overflow→0), dump-pages 23쪽 건전.

잔여 (후속 #1370)

  • 13건 hancom 배치 재보정: 정확 sim ≠ hancom 특이 배치 → issue_1139/1189/1209/1284 회귀. 정확 sim 위에서 게이트 per-document 재보정(비단조 cascade, 다회차). 완료 시 A3 기본 승격.
  • export-svg CLI A3 페이지 폭발(권위 경로·dump-pages 무관) 조사, O(n²) 성능 캐싱.

참조

🤖 Generated with Claude Code

@edwardkim

Copy link
Copy Markdown
Owner

후속 PR로 #1368에서 남겨둔 미주 단 전환/측정 SSOT 범위를 이어서 다뤄주셔서 감사합니다.

검토해 보니 기술 방향 자체는 #1368의 잔여 문제와 잘 맞습니다. 특히 RHWP_EN_SSOT=A3 opt-in으로 전 단 scratch 렌더 측정을 도입하는 접근은 pi=1156/1157 주변의 단 전환 지연 문제를 검토하기에 적절한 방향으로 보입니다.

다만 현재 PR은 #1368 반영 전 devel(2f985a90)을 base로 하고 있어, 현재 최신 devel 기준으로는 merge가 불가능합니다.

확인된 상태:

  • mergeable=CONFLICTING
  • mergeStateStatus=DIRTY
  • src/renderer/typeset.rs에서 충돌 발생
  • git diff --check 기준 trailing whitespace 1건
    • mydocs/working/task_m100_1363_v2_stage4.md:10

가능하시다면 최신 devel 기준으로 rebase 후 PR을 업데이트해 주세요. rebase 시 아래 사항을 함께 반영해 주시면 검토가 수월하겠습니다.

  1. EnSsotLevel 주석은 #1368에서 정리한 것처럼 기본값 B 기준을 유지해 주세요. A3는 opt-in 경로로만 추가되어야 합니다.
  2. Task #1363: 미주 높이 모델 SSOT 리팩터 — 다단 미주 col0 본문 초과(#1357) 해소 #1368 처리 과정에서 archive로 이동된 contributor 문서들이 active 폴더로 되살아나지 않도록 정리해 주세요.
  3. mydocs/pr/pr_1368_review.md, mydocs/pr/pr_1368_report.md는 유지되어야 합니다.
  4. task_m100_1363_v3* 관련 새 문서/보고서도 수용 시에는 archive 정리 대상입니다.
  5. trailing whitespace를 제거해 주세요.
  6. A3는 아직 기본 승격 대상이 아니라 RHWP_EN_SSOT=A3 opt-in으로 유지해야 합니다. PR 본문에 적힌 13건 hancom 배치 재보정 및 export-svg A3 잔여도 그대로 후속 범위로 보는 것이 맞습니다.

업데이트 후 다시 검증하겠습니다. 감사합니다.

@edwardkim edwardkim self-requested a review June 11, 2026 05:29
@edwardkim edwardkim added the enhancement New feature or request label Jun 11, 2026
@edwardkim edwardkim added this to the v1.0.0 milestone Jun 11, 2026
미주 다단 누적 SSOT 리팩터: edwardkim#1357 col0 본문 초과 해소(B 기본) + 렌더 실측 정확화(A3).

핵심:
- LayoutEngine::measure_endnote_column_bottom: 미주 단의 전 items 를 scratch 로 1회
  build_single_column 렌더해 정확한 단 bottom 산출 → sim==render 를 구조적으로 보장.
- typeset A3 분기(simulate_endnote_column_bottom_y): RHWP_EN_SSOT=A3 opt-in. 두 배치
  (p17 C×C 우단·p21 pi=1127)·sep20/20 overflow→0, issue_1082 5/5 달성.
- blocker 2건 해소: endnote_para_base=0(미주 vpos 정규화 활성),
  로컬 +1 오프셋(para_index==0 column-top vpos fallback 오발동 회피, 수식 폭발 제거).
- 부작용 격리 3계층 분리 + 회귀 가드 테스트(test_measure_endnote_advance_side_effect_free).
- 계측: EN_COLSIM/EN_RENDER(RHWP_EN_SSOT_DEBUG).

기본(B) 무회귀 — 측정 경로 전부 ssot_level>=A3 게이트(미설정 시 종전과 동일).
잔여 13건 hancom 배치 재보정은 후속 edwardkim#1370.

Refs edwardkim#1363, edwardkim#1370
@jangster77

Copy link
Copy Markdown
Collaborator

검토했습니다. 최신 devel 반영 후 GitHub 상태와 로컬 사전 검증을 다시 확인했습니다.

확인 결과:

  • GitHub merge state: CLEAN
  • GitHub CI: Build & Test, CodeQL, Canvas visual diff, Analyze 계열 모두 통과
  • 로컬 검증:
    • cargo build --lib 통과
    • cargo test --lib 통과 (1724 passed / 0 failed / 6 ignored)
    • cargo clippy -- -D warnings 통과
    • cargo test --doc 통과

다만 merge 전 아래 1건은 추가 정리가 필요합니다.

mydocs/working/task_m100_1363_v2_stage4.md:10: trailing whitespace.
+계상 → fit 결정 오류. 

즉, git diff --check upstream/devel...HEAD가 아직 실패합니다. 이전 코멘트에서 언급한 trailing whitespace 제거 항목이 남아 있으므로, 현재 상태에서는 merge를 보류하겠습니다.

가능하면 PR branch에서 위 trailing whitespace 1건을 제거해 업데이트해 주세요. 업데이트 후 다시 확인하겠습니다.

감사합니다.

@jangster77

Copy link
Copy Markdown
Collaborator

위 trailing whitespace 1건은 maintainer edit 권한으로 직접 정리해 PR branch에 push했습니다.

추가 커밋:

36a474ed Task #1363: trailing whitespace 정리

로컬에서 다음 확인은 통과했습니다.

git diff --check upstream/devel...HEAD

새 커밋으로 GitHub Actions가 다시 실행 중이므로, CI 완료 후 다시 merge 가능 상태를 확인하겠습니다.

@jangster77 jangster77 merged commit 0f0c731 into edwardkim:devel Jun 12, 2026
7 checks passed
@jangster77

Copy link
Copy Markdown
Collaborator

@planet6897 감사합니다. PR #1371은 merge 완료했습니다.

검증 결과:

  • GitHub Actions: Build & Test, CodeQL, Canvas visual diff 모두 통과
  • 로컬 사전 검증: merge 시뮬레이션 충돌 0, git diff --check 통과, cargo build --lib, cargo test --lib, cargo clippy -- -D warnings, cargo test --doc, cargo test --test svg_snapshot 통과
  • 메인터너 코멘트의 trailing whitespace 1건은 36a474ed에서 정리했습니다.

merge commit: 0f0c7319cd88ecd2b78136df1907f1d541ed180c
관련 이슈 #1363 closed 상태도 확인했습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants