post-replace-relayout · idle-area 설계

결정론적 후보 선택기

후보 전부를 돌리고 고정 우선순위(사전순 비교)로 케이스마다 최선을 고르는 선택 층 — 학습·가중치 없음

상세 설계안 C · 이번 라운드는 설계만, 구현은 A·B 이후 · 2026-08-27

§1한 줄 요약

후보는 이미 11개(단독 6 + 합본 5)이고 A·B가 붙으면 파이프라인 변형이 더 는다. 고정 순서 합본 하나로는 「케이스 X에는 4→7 순서가, 케이스 Y에는 7→4 순서가 낫다」를 담을 수 없다. 선택기는 후보 풀 전체를 실행하고, 결과 지표를 고정 우선순위로 비교해 케이스마다 최선을 확정한다. PowerPoint Designer의 generate-and-rank나 Jacobs(SIGGRAPH 2003)의 템플릿 선택과 같은 구조이되, 랭커가 ML이 아니라 닫힌 규칙이다.

§2비교 규칙 — 사전순(lexicographic), 가중치 없음

가중치 튜닝은 새 자유도(회귀·과적합)를 만든다. 대신 이미 합의된 판정 체계의 서열을 그대로 비교 순서로 쓴다 — 아래 항목을 위에서부터 견주고, 같으면 다음 항목으로 내려간다.

순위비교 항목근거
1판정 라벨 랭크 (SUCCESS > ACCEPTABLE > FAIL)verdict.ts가 정본 — 라벨이 이기면 나머지는 안 본다
2⑤-b 신규 겹침 쌍 수 ↓, 그다음 면적 ↓게이트 지표 — FAIL끼리도 덜 나쁜 쪽
3① 넘침 노드 수 ↓, 그다음 면적 ↓게이트 지표
4② 최소 폰트 배율 ↑덜 줄인 쪽 — SUCCESS 불가를 만든 대가의 크기
5④ |유휴 여백 − 원안| ↓원안의 밀도로 돌아간 정도
6③ 정렬선 보존율 ↑라벨이 같은 결과 중 무엇이 나은가를 이미 이 값으로 고른다(evaluation-rules §3)
7총 변위(Σ|Δ좌표|) ↓, 마지막으로 후보 등록 순서같은 값이면 덜 움직인 쪽 — 마지막 항목이 결정론을 보장한다

결정론 보장 — 모든 항목이 순수 함수의 산출이고 마지막 비교가 등록 순서라 동률이 없다. 같은 입력이면 언제나 같은 후보가 뽑힌다. 무작위성·학습·환경 의존이 0이다.

§3실행 구조

selectLayout(doc, original, pool = METHODS):
  results = pool.map(m => ({ m, out: m.run(doc, { base }) }))   // 전부 순수 함수
  scored  = results.map(r => metricsOf(r.out))                  // computeLayoutMetrics 재사용
  return argmaxLexicographic(scored)                            // §2의 순서

§4장단점

장점단점 · 리스크
고정 순서 합본의 조합 한계를 케이스 단위로 해소 — 후보가 늘수록 가치가 커진다실행 비용 N배 (순수 함수라 감당 가능하나 뷰어 초기 로딩에 영향)
새 알고리즘 없이 기존 자산만 조합 — 구현 리스크 최소후보들이 못 만드는 배치는 여전히 못 만든다 — 생성력이 아니라 선택력
완전 결정론 · 재현 가능 — 가중치 튜닝 루프가 없다비교 순서 자체는 사람이 정한 규칙 — 순서를 바꾸면 결과가 바뀐다(단, 문서화된 한 곳)
지표·판정 정본과 어긋날 수 없다 — 같은 함수를 쓴다「최선 합본」이라는 단일 서사가 사라져 성적표 읽기가 한 겹 복잡해진다

§5왜 지금이 아니라 A·B 다음인가

§6측정 계획 (채택 게이트)