Task #1363: 미주 높이 모델 SSOT 리팩터 — 다단 미주 col0 본문 초과(#1357) 해소#1368
Task #1363: 미주 높이 모델 SSOT 리팩터 — 다단 미주 col0 본문 초과(#1357) 해소#1368planet6897 wants to merge 6 commits into
Conversation
) 해소 미주 para 높이를 typeset 누적(saved-vpos delta)과 layout 렌더(순차 format)가 따로 계산해 단 하단 본문을 초과하던 문제(edwardkim#1357/edwardkim#1336)를, layout 렌더를 ground truth 로 삼는 SSOT 점진 마이그레이션으로 해소한다. 근본 원인 (대상 sep20/20 p22 col0 overflow 50.1px): - TAC(treat_as_char) 그림 미주(pi=1131, 309px)를 typeset 이 "앞 제목 옆 배치(겹침)" 로 보고 max(rewind_start+adv) 누적했으나, 렌더러는 문단 흐름에 inline 순차 적층. → 단 +58px 과충전 → 본문 50px 초과. 변경: - RHWP_EN_SSOT 단계 플래그(EnSsotLevel) + RHWP_EN_SSOT_DEBUG 계측 - Divergence A: 내부 vpos rewind para acc = line_advances_sum (모델 정합) - Divergence C: TAC 그림 미주 순차 적층(+= adv) — 겹침 가정 제거 → overflow 50.1→0 - 기본 레벨 B(A+C) 승격. legacy/A/on 플래그로 롤백·비교 - issue_1082 대상 가드 REG_LIMIT 60 → TIGHT 5.0px (회귀 가드) - 골든 비교 하니스 scripts/task1363_ssot_diff.py 검토 결과 (보류): - 전면 SSOT(전 para acc=line_advances_sum): capped/overlap para 를 렌더가 겹쳐 그려 2022 overflow +166px 회귀 - 잔여 Divergence B(trailing-ls): 미주 질문흐름 회귀 10건(issue_1139/1261/1284) → overflow 무이득 + 회귀로 보류. 안전·유익 영역 = A+C(기본 B) 확정. 검증: 전체 cargo test 2126 pass / 0 fail, visual_sweep flagged 불변, issue_1082 비대상 0.0 유지 / 대상 50.1→0.
|
- v1(A/C+그림 overflow, PR edwardkim#1368)로 닫히지 않은 콘텐츠 배치(p17/p21) 근본 해결 계획 - 진단: 두 케이스 반대 방향, 블랭킷 acc 보정 3종 모두 회귀 실증 - 해법: typeset 누적 per-para = 렌더러 vpos_adjust 예측(공유 함수), caps 단계 제거+재튜닝 - 최고난도 코어 리팩터, v1 merge 후 별도 이슈/브랜치 착수 권장
- vpos_adjust(735줄) 입력을 페이지네이션 가용성으로 분류: IR파생(가용)/단기하(조건부)/렌더러닝상태(불가) - 핵심: cap 분기 전량이 y_offset(러닝 렌더 위치) 의존 → IR 예측 불가 - 결론: vpos_adjust 예측 불가 → 페이지네이션이 렌더 y 시뮬레이션 필요 → build_single_column 미주 루프를 height-only 공유 시뮬로 추출, typeset 배선 - caps 는 vpos_adjust 중복이므로 단계 제거+재튜닝 대상
- EnSsotLevel::A2 + RHWP_EN_SSOT=A2 (기본 B 불변, opt-in) - simulate_endnote_column_bottom_y: current_items 를 렌더러 build_single_column 동일 경로(HeightCursor::vpos_adjust)로 재생해 단 bottom y 산출 → current_height 스냅 - 측정: 누적 정합 성공(p17 pi=894 C×C 우단 이동, p21 단1 1022.9→994) 그러나 fit/split 미정합으로 p17 단1 overflow·pi=1127 미이동 - DEFAULT(B) 2137 pass 유지, A2 회귀 3건(전부 issue_1082 overflow=fit/split lag) - Stage 3: fit/split 결정도 시뮬 기반 전환 필요
- 시도: 시뮬 기반 fit 게이트 + 단일줄 fit-or-advance - 결과: p17/p21 미개선 + p22 신규 overflow 121.2 (악화) → 전량 revert - 근본: break 루프는 ~10 휴리스틱 게이트 상호작용 → 일부만 sim 전환 시 충돌 - 결론: break 루프 홀리스틱 재작성 필요(별도 대형). 누적 절반(Stage2 A2)은 유지 - 기본 B 무회귀, A2 누적 인프라 토대 보존
정리 — v2 후보 A 조사 결과 (커밋 추가)#1357 콘텐츠 배치(p17 C×C·p21 pi=1127) 근본 해결을 위한 후보 A(누적기↔렌더러 vpos 공유) 조사를 단계별로 수행, 본 브랜치에 문서/실험 인프라 커밋. Stage 1: Stage 2 (✅): Stage 3 (❌ 음성): fit/split을 점진적으로 시뮬 전환 시도 → 악화(p22 신규 overflow). 미주 단-break은 ~10개 휴리스틱 게이트 상호작용이라 일부만 sim 전환하면 충돌. break 루프 홀리스틱 재작성(전 게이트 동시 치환 + 전 exam 재튜닝)이 필요 — 별도 대형 작업. 결론: 누적 절반(Stage 2)은 성립·안전(토대 보존). break 절반은 대형 잔여. 본 PR의 기본 B(그림 overflow + A/C 정합)는 #1357 부분 개선으로 그대로 유효. p17/p21 두 배치는 break-루프 재작성 후속 과제로 추적. |
typeset.rs SSOT 리팩터 코드의 rustfmt 미정합으로 CI Build & Test의 Format check(`cargo fmt --all -- --check`)가 실패했다. 변경 파일 typeset.rs만 포맷 적용 — 로직 변경 없음(공백/줄바꿈만). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- v1(A/C+그림 overflow, PR #1368)로 닫히지 않은 콘텐츠 배치(p17/p21) 근본 해결 계획 - 진단: 두 케이스 반대 방향, 블랭킷 acc 보정 3종 모두 회귀 실증 - 해법: typeset 누적 per-para = 렌더러 vpos_adjust 예측(공유 함수), caps 단계 제거+재튜닝 - 최고난도 코어 리팩터, v1 merge 후 별도 이슈/브랜치 착수 권장
|
PR #1368은 처리 내용:
이번 PR은 대상 샘플의 page-height overflow 지표를 개선하는 v1 범위로 수용합니다. 다만 반영된 |
개요
미주 para 높이를 typeset 누적(saved-vpos delta)과 layout 렌더(순차 format)가 따로 계산해 단 하단 본문을 초과하던 문제(#1357/#1336)를, layout 렌더를 ground truth 로 삼는 SSOT 점진 마이그레이션으로 해소합니다.
근본 원인 (대상 sep20/20 p22 col0 overflow 50.1px)
TAC(
treat_as_char) 그림 미주(pi=1131, 309px)를 typeset 이 "앞 제목 옆 배치(겹침)"로 보고max(rewind_start+adv)누적했으나, 렌더러는 문단 흐름에 inline 순차 적층 → 단 +58px 과충전 → 본문 50px 초과.변경
RHWP_EN_SSOT단계 플래그(EnSsotLevel) +RHWP_EN_SSOT_DEBUG계측acc = line_advances_sum(모델 정합)+= adv) — 겹침 가정 제거 → overflow 50.1→0legacy/A/on플래그로 롤백·비교issue_1082대상 가드REG_LIMIT 60 → TIGHT 5.0px(회귀 가드)scripts/task1363_ssot_diff.py검토 결과 (보류)
→ 안전·유익 영역 = A+C(기본 B) 확정. 잔여는 overflow 무이득 + 회귀로 보류(현 caps + layout 조건부 bridge 가 실 렌더 최선 근사).
검증
cargo test2137 pass / 0 failtask1274_visual_sweep.pyflagged 불변(베이스라인)issue_1082비대상 0.0 유지 / 대상 50.1→0🤖 Generated with Claude Code