아카이브 · 당시 기준

2026-10-18 보관. 반복된 PR 상태·티켓 담당·분리 이력을 모으고 규칙별 설명과 사례 중심으로 재구성했다. 본문과 자동 동기화 표는 보관 당시 내용입니다.

현재 기준과 원본 보기 → · 보관 목록
miricanvas-iui · PR #1458 main 머지 · 후속 PR 5개 미머지 · MOR-2516 · 2026-10-18 갱신 · 저자 홍지혜(jhhong) · 구성 복원 · 이전판

MOR-2516 투영 규칙

PR #1458이 main에 머지됐다. 실제 표 머리글·관계 desc 처리가 반영됐고, 후속 5개 PR은 모두 main 기준으로 열려 있다. 원래 재현 문제인 period: 2018년 → 2018년은 PR #1487에서 이어 처리한다.

PR 상태는 2026-10-18 00:46 KST 원격 확인 기준이다. 로컬 검증은 표에 적힌 head의 기록이며, 썸네일은 본문에 적은 커밋의 렌더 결과입니다. 별도 origin/main 대조 기록도 참고할 수 있습니다.

어긋남 (의도) 정본과 다르게 동작한다. 정본을 고칠 대상이다 정본 없음 해당 동작을 정한 규칙이 없다 · 필요한 규칙은 정본에 보충한다 일치 정본대로다 열린 문제 정본 안에서 해석이 갈린다

작업 업데이트 · 2026-10-18 · #1458 머지

#1458 main 머지 완료 · 후속 5개 PR은 main 기준 미머지 · CI·자동 리뷰 검사 통과.

Jira 담당 재분리 완료: MOR-2770은 규칙 1·1b·2, MOR-2771은 규칙 6의 규약·Eregion 구현을 맡는다. MOR-2776에는 iUi 동기화·VENDOR.json·TS/Rust 대조만 남겼다. MOR-2778의 중복 책임도 정리하고 네 티켓 본문 저장을 확인했다. 담당표.

PR별 변경·검증·이전 기록 보기

#1458 머지 완료: 2026-10-18 00:41 KST, main에 826cda2e31로 머지됐다. 표 머리글·관계 desc 처리(규칙 3·7)가 반영됐다. 후속 5개 PR은 모두 main 기준으로 열려 있다.

원래 재현 문제의 담당 PR: period: 2018년 → 2018년 등 문자열 필드 접두 제거는 PR #1487에 있다. #1458은 머지됐지만 period 접두는 남으며, MOR-2516은 #1487의 머지·배포·결과 확인까지 추적한다. 이를 Jira 추가 댓글에 명시했다.

2026-10-18 Jira 기록: MOR-2516 댓글에 #1458의 머지 전 head 6b99594353 기준 두 변경(표 머리글·관계 desc), 다섯 독립 후속 PR, 정본 티켓 대응, 검증·배포 조건을 기록했다. 이전 댓글의 통합 범위와 측정값 제거 설명도 정정했다. #1458의 GitHub check·comp-pass와 자동 리뷰 검사는 모두 통과했다.

빈 문자열 필드 보강을 PR #1488으로 분리했다. 분리 당시 공통 base PR #1458의 6b99594353에는 표 머리글·관계 desc만 남겼다. 기존 네 정책 PR도 이 base를 반영했고, 다섯 후속 PR끼리는 서로의 변경을 포함하지 않는다. 기존 커밋 이력은 보존했다. #1458은 main에 머지됐으며, 다섯 후속 PR의 base도 모두 main으로 전환된 것을 확인했다.

담당 PR·상태최종 diff 범위검증 당시 head와 로컬 결과
PR #1458 · 표 머리글·관계 desc
main 머지 완료
규칙 3 실제 머리글만 보존 · 규칙 7 desc만 이동(빈 desc 제외)6b99594353 · Rust 888개 / TS 2,532개 통과·51개 skip
PR #1488 · 빈 문자열 필드
main 기준 · 미머지
규칙 1b만 — 정렬·투영 P3·용량 사전 필터에서 접두어 전에 빈 값 제외33cfb07bf8 · Rust 891개 / TS 2,532개 통과·51개 skip
PR #1487 · 문자열 P3
main 기준 · 미머지
규칙 1만 — period·speaker·author·source·organization 접두 제거bec77cb1bd · Rust 891개 / TS 2,532개 통과·51개 skip
PR #1484 · value 접두
main 기준 · 미머지
규칙 2만 — value 이동의 「값:」 제거aa58b8a6d0 · Rust 888개 / TS 2,532개 통과·51개 skip
PR #1485 · 평탄화 접두
main 기준 · 미머지
규칙 4만 — 평탄화한 줄의 필드 이름 제거2e75e0f91a · Rust 889개 / TS 2,533개 통과·51개 skip
PR #1486 · 신호 제외
main 기준 · 미머지
규칙 6만 — emphasis·weight·avatar, 별칭 호스트·폴백 자리 제외2f6f0a4950 · Rust 894개 / TS 2,533개 통과·51개 skip
  • 리뷰 Low 1: 빈 관계 desc는 정렬에서도 건너뛴다. 본문에 빈 줄을 붙이거나 대치 종류·내용 손실을 바꾸지 않는다. 회귀 테스트는 desc 없음·빈 문자열, 두 관계 종류, 연결 대상 있음·없음을 검사했고 수정 전 실패 → 수정 후 통과를 확인했다. 관계 설명 수정은 #1458, 빈 필드 수정은 #1488 소속이다.
  • 리뷰 Low 2: AGENTS.md와 계획 배너의 대응을 통일했다. P3·value → MOR-2770(§3.4 P3), 평탄화 → MOR-2777, 신호 → MOR-2770(§2)·MOR-2771(§3.5), 빈 필드 버그 → MOR-2778·정본 P3 → MOR-2770. TS 벤더 동기화 MOR-2776는 Eregion 수정 후 수행하는 별도 작업이다.
  • 공통 검사: 여섯 브랜치 각각 Rust 전체 테스트·fmt·전체 workspace Clippy(--all-targets --all-features -- -D warnings), TS 132파일, 저장소 format:check·lint(오류 0·기존 경고 238)·앱 tsc·diff 검사를 통과했다. 분리와 병합 충돌 해소 후 최종 diff의 별도 코드 리뷰에서도 추가 결함이 없었다. 2026-10-18 00:46 KST 원격 확인: #1458은 MERGED, 후속 5개 PR은 main 기준 OPEN·MERGEABLE(충돌 없음)이다. 여섯 PR의 check·comp-pass·자동 리뷰 검사는 모두 SUCCESS다. 아래 로컬 결과는 기존 head의 기록이며 머지 후 main에서 다시 실행한 결과는 아니다.
  • 정본 대조: 실제 머리글 보존은 P4와 일치한다. 머리글 없음·빈 머리글 처리는 정본 없음이며 MOR-2779에서 P4를 보충한다. 빈 문자열 필드도 정본 없음이다. 관계 desc만 이동하는 규칙은 P7과 일치한다.
  • 배포: LOGIC_ID 유지·(b) 검증 블록이 있는 서빙 판 재굽기 방침이다. stg/prd 배포 전 판 재굽기와 태그·환경별 짝 증명서 갱신이 필요하다. 이번 문서 갱신에서는 배포·재굽기 완료 여부를 확인하지 않았다. 측정값은 MOR-2769 범위로 남는다.
  • 렌더 기록: 아래 18개 사례는 분리 전 통합판의 썸네일이다. 이번 여섯 PR의 최종 범위를 따로 재렌더하지 않았다. 대체된 통합 PR #1483은 닫힌 기록으로 유지한다.
2026-10-17 분리·검증 기록 (이전 head)

작업 업데이트 · 2026-10-17 · 4개 독립 PR 생성 완료

네 정책을 각각 리뷰·머지할 수 있도록 분리하고 네 PR을 모두 생성했다. #1458의 문서 정정 head a5bb50d452가 공통 base이며, 실행 코드는 검증한 48cf4ed722와 같다. 네 PR의 GitHub base는 모두 fix/mor-2516-yaml-keys-in-replacement이고, 네 정책 PR끼리의 의존은 없다.

구분이 PR에 포함할 범위비교 기준과 상태
PR #1458 · 유지규칙 3 실제 표 머리글만 보존 · 규칙 7 관계의 desc만 이동 · 규칙 1b 빈 문자열 이동 제외main 기준 · 문서 정정 head a5bb50d452 · 실행 코드는 48cf4ed722와 동일
PR #1487 · 문자열 P3규칙 1만 — period·speaker·author·source·organization의 문자열 P3 접두 제거dfd5dbc37b · 로컬 Rust 893개 / TS 2,532개 통과·51개 skip · 원격 PR 생성 완료
PR #1484 · value 접두규칙 2만 — value 이동의 「값:」 접두 제거5716caeed6 · 로컬 Rust 890개 / TS 코드 변경 없음 · 추가 TS 실행 없음 · 원격 PR 생성 완료
PR #1485 · 평탄화 접두규칙 4만 — 평탄화한 줄의 필드 이름 접두 제거c9b8bbe331 · 로컬 Rust 891개 / TS 2,533개 통과·51개 skip · 원격 PR 생성 완료
PR #1486 · 신호 제외규칙 6만 — emphasis·weight·avatar 제외, 폴백 자리·별칭 호스트 보강 포함0e3e4fbb49 · 로컬 Rust 896개 / TS 2,533개 통과·51개 skip · 원격 PR 생성 완료
모든 PR 범위 밖규칙 5 측정값MOR-2769 future plan

기존 통합 PR 처리: PR #1483은 네 정책을 함께 담은 중간 결과다. 네 개별 PR로 대체했으며 CLOSED 상태를 확인했다.

  • #1458 로컬 검증 통과. 48cf4ed722에서 Rust 전체 890개(핵심 comp-frame-core 437개), TS 132파일 2,532개 통과·51개 skip을 확인했다. core Clippy(--all-targets -- -D warnings)·Rust fmt·저장소 format:check·앱 tsc도 통과했다. lint 오류는 0건이고 기존 경고 238건은 그대로다.
  • #1487 문자열 P3 로컬 검증. dfd5dbc37b에서 Rust 893개, TS 2,532개 통과·51개 skip.
  • #1484 value 접두 로컬 검증. 5716caeed6에서 Rust 890개 통과. TS 코드 변경이 없어 이 PR에서는 TS 테스트를 추가 실행하지 않았다.
  • #1485 평탄화 접두 로컬 검증. c9b8bbe331에서 Rust 891개, TS 2,533개 통과·51개 skip.
  • #1486 신호 제외 로컬 검증. 0e3e4fbb49에서 Rust 896개, TS 2,533개 통과·51개 skip.
  • 공통 로컬 검사. 네 PR의 관련 Rust fmt·format·lint·core Clippy·앱 tsc 검사와 범위별 독립 코드 리뷰를 통과했다. 이 결과는 로컬 검증이며 GitHub 자동 리뷰 완료를 뜻하지 않는다.
  • P3의 독립성. #1487은 신호 필드의 기존 표기를 보존한다. 통합 이력의 p3_text 삭제 커밋 48142fa는 적용하지 않고 helper를 유지했다. 실행 코드와 무관한 추가 테스트 하나를 제거한 최종 head의 Rust 테스트 수는 893개다.
  • GitHub CI. #1458·#1484는 check·comp-pass가 통과했고 자동 리뷰는 pending이다. #1485는 check 통과·comp-pass 진행 중이다. #1486·#1487의 CI와 나머지 자동 리뷰도 진행 중이다. 열려 있는 다섯 PR 모두 MERGEABLE(충돌 없음)을 확인했다.
  • 빈 문자열 보강 PR 추가 분리 진행. 규칙 1b(MOR-2778)의 정렬·투영·용량 사전 필터와 회귀 테스트를 #1458에서 별도 PR로 옮긴다. #1458에는 표 머리글·관계 설명만 남기고, 기존 네 정책 PR도 새 기준 브랜치를 반영한다. 각 diff와 Rust 테스트를 확인한 뒤 담당 PR·검증 기록을 갱신한다.
  • 정본 대조 용어와 P4 티켓 갱신. 정본이 규정하지 않은 동작의 표기를 “정본 없음”으로 통일했다. 규칙 3은 실제 머리글 보존(일치)과 머리글 없음·빈 머리글 처리(정본 없음 · P4 보충 필요)를 나누어 적고, 정본 보충 버그 MOR-2779를 생성해 연결했다.
  • 규칙 3의 정본 보충 구분. 실제 머리글 보존은 P4와 일치하지만, 머리글이 없는 경우의 값만 보존 규칙은 정본에 없다. “정본 수정 없음”을 “P4 예외 규칙 보충 필요 · MOR-2779”으로 정정했다. 구현과 기존 P4가 충돌하지 않는다는 사실과 정본 보충 필요성을 구분한다.
  • #1458 본문 갱신. 실제 머리글은 정본 P4와 일치하고, 이름 없는 열·빈 문자열 처리는 정본이 정하지 않은 보강이며, 관계 desc는 P7과 일치한다는 근거를 고정 코드·정본 원문·로직 운영 링크와 함께 원격 Summary·Test plan에 반영했다.
  • 배포 방침. LOGIC_ID 유지와 (b) 서빙 중인 판을 새 코드로 다시 굽기를 유지한다. 각 정책 PR에도 이 결정을 적는다. stg/prd 배포 전 필요한 판 재굽기와 태그·환경별 짝 증명서 갱신은 이번 PR 재분리에서 실행하지 않는다.
  • TS 벤더. Eregion에서 복사한 TS 원본은 직접 바꾸지 않는다. 각 정책 PR에서 Rust와 TS 벤더의 차이를 명시하고, Eregion 수정 후 MOR-2776에서 sync 한다.
  • 썸네일 기준. 아래 18개 사례는 통합 변경 4634def6e의 렌더 기록이다. 이후 ca5d4c555의 별칭 보강과 이번 네 PR 재분리는 재렌더하지 않았다. 개별 PR 단독의 최종 렌더 결과로 읽으면 안 된다.
대체된 통합 PR #1483의 기록 · a25e4eb267

PR #1483은 a25e4eb267로 원격에 생성했다가 네 개별 PR로 대체해 닫은 통합 PR이다. 실행 코드·골든은 그 이전 통합 head ca5d4c555와 바이트가 같고 빈 값 용량 사전 필터 테스트 1개를 추가했다. 아래 검사는 이 통합판의 기록이며, 네 개별 PR의 검사 결과가 아니다.

  • #1483 로컬 검증 통과. a25e4eb267에서 Rust 전체 897개(핵심 comp-frame-core 444개), TS 132파일 2,533개 통과·51개 skip을 확인했다. core Clippy(--all-targets -- -D warnings)·Rust fmt·format:check·앱 tsc도 통과했다. lint 오류 0건, 기존 경고 238건이다.
분리 전 통합판의 구현·검증 기록 · ca5d4c555

ca5d4c555는 분리 전 #1458에 커밋·푸시했던 통합 head다. 아래 결과는 그 판의 기록이며, 현재 #1458과 네 개별 PR의 상태는 위 표를 따른다.

  • High — 별칭 호스트의 신호 필드 제외. pass 1.5가 호스트에서 Marker만 빼던 누락을 고쳤다. emphasis·weight·avatar를 제외하고 일반 별칭 호스트를 계속 찾으며, 없으면 기존 items·폴백 경로로 본문을 옮긴다. 원인과 영향 · 수정 코드.
  • Low — 어댑터 머리말 정정. summary_projection.rs가 벤더 스냅샷을 바이트 그대로 둔다는 설명을 고쳤다. Rust는 루트 AGENTS.md의 MOR-2516 규칙을 따르고, TS 벤더의 값:·emphasis: true는 Eregion 수정 뒤 MOR-2776에서 sync 한다.
  • 회귀 검증. 신호 호스트를 건너뛴 본문이 items로 옮겨지는 경우와 뒤쪽 일반 별칭 호스트를 사용하는 경우를 추가했다. 두 테스트 모두 수정 전 실패·수정 후 통과를 확인했고, 사용자 본문의 콜론과 신호 슬롯의 blank도 검증한다. items 이동 테스트 · 일반 별칭 호스트 테스트.
  • 검사 결과. Rust 전체 cargo test 896개 통과, comp-frame-core Clippy(--all-targets -- -D warnings)·Rust fmt·저장소 format:check 통과. lint 오류 0건(기존 경고 238건), 앱 타입 검사 통과(WASM 생성물 연결 후). 별도 코드 리뷰에서도 추가 수정 사항이 없었다.

분석·구현·검증·PR 상태가 바뀔 때마다 관련 규칙과 작업 업데이트를 함께 갱신한다. 최초 통합판 문서 보관본.

#1458과 다섯 개별 PR을 읽는 기준

PR #1458은 표 머리글·관계 설명을 다루며 main에 머지됐다. 실제 머리글과 사용자 본문의 콜론을 보존하고, 임의의 열 N과 관계 종류 접두를 만들지 않는다. 빈 관계 desc도 건너뛴다.

다섯 후속 PR은 서로 독립이다. 문자열 P3, value 접두, 평탄화 접두, 신호 제외, 빈 문자열 필드 보강(PR #1488)을 각각 다룬다. 분리 당시 공통 base는 #1458의 6b99594353였다. 현재 다섯 PR의 base는 모두 main이며 아직 머지되지 않았다. 빈 필드 보강 PR에서도 비어 있지 않은 period: 2018년의 표기는 유지한다.

규칙 카드의 사례·행 수·썸네일은 분리 전 통합판 분석이다. 「분리 전 구현 기록」은 역사적 근거이며 현행 PR 소속을 뜻하지 않는다. 현재 담당 PR·head·검증 상태는 위 작업 업데이트를 따른다.

한눈에 보기

#규칙전 → 후정본 대조사례분리 후 담당 PR규약·Eregion 구현 및 후속 티켓
1문자열 내용 필드는 값만 옮긴다
period · speaker · author · source · organization
period: 2018년 → 2018년어긋남 (의도)4PR #1487 · 문자열 P3
iUi 동기화·대조: MOR-2776
분리 전 구현 기록
MOR-2770 (§3.4 P3·Eregion 구현)
1b빈 문자열 값은 옮기지 않는다 (보강)
period · speaker · author · source · organization 의 빈 값
빈 항목 '' · 빈 bullet * → 옮기지 않는다정본 없음1PR #1488
iUi 동기화·대조: MOR-2776
분리 전 구현 기록
빈 값 4c20fa1
MOR-2778 (버그·Rust)
P3 규약·Eregion 구현: MOR-2770
2value 이동에 「값:」을 붙이지 않는다
value (+ unit)
값: 70억원 → 70억원어긋남 (의도)—PR #1484 · value 접두
iUi 동기화·대조: MOR-2776
분리 전 구현 기록
MOR-2770 (P3·Eregion 구현)
3표를 펼칠 때 실제 머리글만 남기고 「열 N」을 만들지 않는다
matrix 열 · entities+columns
열 4: 연락 → 연락 (실제 머리글 원인: 생활관리 는 그대로)일치
실제 머리글 보존
정본 없음
머리글 없음·빈 머리글 처리 — P4 보충 필요
1PR #1458 · main 머지
분리 전 구현 기록
열 N a18526f
P4 예외 규칙 보충 필요
머리글 없음·빈 머리글 → 값만 보존 · MOR-2779
4평탄화한 줄에 필드 이름을 붙이지 않는다
value · unit · period · … · values
value: 42% · values: 77 → 42% · 77열린 문제1PR #1485 · 평탄화 접두
분리 전 구현 기록
MOR-2777 (정본에 규칙을 적고 코드를 맞춘다)
5측정값 — 모든 PR 범위 밖
measure 의 min · max · target · delta · thresholds
target: 80 · threshold: 50 주의 (warn) → 그대로 (main 과 같다)어긋남 (의도) 정본 없음5— 모든 PR 범위 밖 (통합 첫 판에서 제외)MOR-2769 (future plan · 정본 §3.4 P5 포함)
6신호 필드는 글로 옮기지 않는다
emphasis · weight · avatar
true · weight: 0.2 · avatar: a.png → 실리지 않는다 (강조 슬롯이 있으면 빈 필드)어긋남 (의도) 열린 문제4PR #1486 · 신호 제외
iUi 동기화·대조: MOR-2776
분리 전 구현 기록
MOR-2770 (§2 신호 정의) · MOR-2771 (§3.5 엣지 표·Eregion 구현)
7관계는 종류 없이 desc 만 옮긴다
relations (intersects · compares)
교집합: 겹치는 부분은… → 겹치는 부분은…일치2PR #1458 · main 머지
분리 전 구현 기록
관계 desc 2c8f63b
— (정본 수정 없음)

정본: mordor-wiki projects/mordor/visual-summary/spec/capability-table.md(5b5e3d7, 원격과 같은 내용)와 schema-v0.5.md. iUi 에서는 서브모듈 docs/mordor-wiki 다.

담당 분리 · 2026-10-18: 규칙 1·1b·2의 규약·Eregion 구현은 MOR-2770, 규칙 6의 엣지 표·Eregion 구현은 MOR-2771이 맡는다. MOR-2776에는 iUi 동기화·VENDOR.json·TS/Rust 통합 대조를 남겼다. 전체 담당 경계.

MOR-2776 · Eregion 투영을 iUi로 동기화하고 TS·Rust 일치를 검증한다

Eregion 규칙 구현은 관련 규약 티켓에서 끝내고, MOR-2776은 그 결과를 받아 동기화와 통합 검증을 수행한다. 2026-10-18에 MOR-2770·2771·2776의 제목·본문과 MOR-2778의 담당 설명을 이 기준으로 갱신했다. 구현·머지 완료를 뜻하지 않는다.

확정된 규칙Rust 구현 PR규약·Eregion 구현 담당MOR-2776의 역할
1 · 문자열 값만 이동#1487MOR-2770 · P3 문서·문자열 이동 구현·단위 테스트머지된 Eregion 코드를 iUi로 sync하고 Rust 결과와 대조
1b · 빈 문자열 제외#1488MOR-2770 · P3 문서·빈 값 방어·단위 테스트
MOR-2778은 버그·Rust 추적
sync 후 빈 항목·빈 bullet이 생기지 않는지 대조
2 · value의 「값:」 제거#1484MOR-2770 · P3 문서·value 이동 구현·단위 테스트sync 후 값·0·단위 보존 결과 대조
6 · 신호를 글로 옮기지 않음#1486MOR-2771 · §3.5 엣지 표·신호 제외 구현·단위 테스트
§2 신호 정의는 MOR-2770
sync 후 emphasis·weight·avatar 제외 결과 대조
  1. 규약·Eregion 구현: MOR-2770·MOR-2771에서 각 규약과 Eregion 원본을 고치고 관련 테스트를 통과시킨 뒤 머지 커밋을 넘긴다.
  2. MOR-2776 동기화: 벤더링 정책에 따라 sync-eregion으로 사본과 VENDOR.json을 갱신한다. 벤더 파일은 직접 수정하지 않는다.
  3. MOR-2776 검증: sync-eregion --check와 벤더 밖 TS/Rust 대조 테스트를 통과시킨다. structure·params·rules·losses를 대응 경로끼리 비교하고, 동기화 커밋·Rust 기준 커밋·검사 결과를 기록한다.

대조 실패의 담당: 규칙 구현 결함은 2770·2771에서 고친다. 2776은 동기화·검증 경계를 고치며 새 정책을 정하거나 Eregion 규칙을 중복 구현하지 않는다. 원래 period: 대치 노출을 고치는 Rust PR은 #1487이다.

최종 담당 경계 · Jira 반영 완료

티켓담당 산출물중복을 피하는 경계
MOR-2770규칙 1·1b·2의 P3 규약·Eregion 구현·단위 테스트. §2 신호 정의와 강조 슬롯 정책 검토.빈 값의 규약과 Eregion 구현은 여기서 한 번 수행한다.
MOR-2771규칙 6의 §3.5 엣지 표·Eregion 구현·단위 테스트.2770의 신호 정의를 따르고, iUi 동기화는 2776으로 넘긴다.
MOR-2778빈 문자열 버그·재현·Rust #1488 추적.P3 규약과 Eregion 구현은 2770, 동기화는 2776을 연결한다.
MOR-2776iUi sync·VENDOR.json·동기화 검사·TS/Rust 통합 대조·결과 기록.규칙별 Eregion 구현과 단위 테스트는 선행 규약 티켓 소속이다.
MOR-2779규칙 3의 P4·entities+columns 머리글 없음 예외 규약 보충.#1458의 실제 머리글 처리와 연결한다.
MOR-2777규칙 4 후속: 평탄화 줄 표기를 정하고 Rust·TS 본문 평탄화 코드·골든 수정.#1485의 접두 제거만으로 전체가 해결되지는 않는다.
MOR-2769규칙 5 측정값 표기 결정·P5 규약·코드·골든 수정.2776에 있던 측정값 접두·state 제거 지시를 삭제했다. 표기는 이 티켓에서 먼저 정한다.

정본은 mordor-wiki 규약 문서, Eregion은 원본 TS 구현이다. 이번 분리는 둘을 관련 규약 티켓에서 함께 고치고 iUi 동기화·통합 검증만 2776에 남기는 결정이다. Jira 상태·담당자와 기존 PR 범위는 바꾸지 않았다.

분리 전 대조 기록

처음에는 MOR-2776이 Eregion 구현과 iUi sync를 함께 맡았다. 티켓 대조에서 2778의 P3 문서가 2770과 겹치고, 2776의 측정값 제거 지시가 2769의 미결정 정책과 충돌함을 확인했다. 사용자의 2026-10-18 지시에 따라 위 담당으로 재분리하고 관련 Jira 본문을 갱신했다.

1

문자열 내용 필드는 값만 옮긴다

period · speaker · author · source · organization
전period: 2018년→ 후2018년

어디서 생기나

  • 정렬 — 후보에 그 슬롯이 없으면 items 로 옮긴다
    align.rs:718 move_field_into_items · text.rs:57 p3_text
  • 투영 P3 — fallback 도착이 그 필드를 안 읽는다
    visual_summary/projection.rs:440 move_unread_content

정본과 대조

어긋남 (의도)
mordor-wiki capability-table.md:286 · §3.4 P3
도착이 안 읽는 내용 필드는 그 entity 의 items 맨 뒤에 이름: 값 으로 붙인다.

정본대로면 period: 2018년 이 화면에 그대로 찍힌다. 필드 이름은 매핑 메타데이터(moves)에만 남긴다.

개별 PR 확정: PR #1487 · 문자열 P3 · dfd5dbc37b. 로컬 Rust 893개·TS 2,532개(51개 skip)와 관련 정적 검사를 통과했다. 신호 필드의 기존 접두를 보존하기 위해 p3_text를 유지했다. 아래 통합 이력의 삭제 커밋 48142fa는 이 개별 PR에 적용하지 않았다. GitHub CI·자동 리뷰 상태는 상단 작업 업데이트를 따른다.

2.6판에서 그려질 수 있는 행 — 2.6판에서 그 필드 슬롯이 없고 글 자리(label·items)가 있는 행 — 선언 카테고리 안에서: period(Timeline·ResumeCV) 1,837행, speaker 123행, author 922행, source 1,836행, organization 5,268행. 카테고리와 상관없이 세면 20만 행 안팎이다(검증기가 필드를 카테고리로 막지 않는다).

분리 후 담당: PR #1487 · 문자열 P3
분리 전 구현 기록

정본 수정 티켓: MOR-2770 (§3.4 P3 수정)

사례

기간 슬롯이 없는 Timeline

V3 생성 기록 2.6판 13482509 · Group_2 · tier 1 · Timeline (투영 없음)
쿼리 YAML
version: "0.5"
title: 소프트웨어개발기록
components:
  - type: TimelineSchedule.Timeline
    structure:
      entities:
        - label: v1
          period: "2018년"
        - label: v2
          period: "2019년"
        - label: v3
          period: "2024년"
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
items
period: 2018년
2018년
items
period: 2019년
2019년
items
period: 2024년
2024년

출처 슬롯이 없는 QuoteTestimonial

합성 문서 2.6판 13050011 · VStack_0 · tier 1 · QuoteTestimonial (투영 없음)

author 는 슬롯이 있어 제자리에 가고, source 만 옮겨진다.

쿼리 YAML
version: "0.5"
title: 고객 후기
components:
  - type: Utterance.QuoteTestimonial
    structure:
      entities:
        - label: 배송이 빠르고 포장이 꼼꼼해서 다음에도 이용하고 싶어요
          author: 김민지
          source: 2025 고객 만족도 조사
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
label
* 배송이 빠르고 포장이 꼼꼼해서 다음에도 이용하고 싶어요
* source: 2025 고객 만족도 조사
* 배송이 빠르고 포장이 꼼꼼해서 다음에도 이용하고 싶어요
* 2025 고객 만족도 조사

QuoteTestimonial → HighlightedMessage (tier 2)

합성 문서 2.6판 13556260 · Group_8 · tier 2 · QuoteTestimonial → HighlightedMessage

author·source 슬롯이 둘 다 없는 Quote 304행만으로는 tier 1 결과가 0건이라 tier 2 로 그렸다.

쿼리 YAML
version: "0.5"
title: 고객 후기
components:
  - type: Utterance.QuoteTestimonial
    structure:
      entities:
        - label: 배송이 빠르고 포장이 꼼꼼해서 다음에도 이용하고 싶어요
          author: 김민지
          source: 2025 고객 만족도 조사
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
items
author: 김민지
김민지
items
source: 2025 고객 만족도 조사
2025 고객 만족도 조사

organization 슬롯이 없는 ProfileCard

합성 문서 2.6판 13514020 · HStack_1 · tier 1 · ProfileCard (투영 없음)
쿼리 YAML
version: "0.5"
title: 프로젝트 팀 소개
components:
  - type: PortraitProfile.ProfileCard
    structure:
      entities:
        - label: 김하늘
          organization: 미리디 디자인팀
          items:
            - 브랜드 경험 설계
        - label: 이도윤
          organization: 미리디 개발팀
          items:
            - 편집기 성능 개선
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
items
* 브랜드 경험 설계
* organization: 미리디 디자인팀
* 브랜드 경험 설계
* 미리디 디자인팀
items
* 편집기 성능 개선
* organization: 미리디 개발팀
* 편집기 성능 개선
* 미리디 개발팀
1b

빈 문자열 값은 옮기지 않는다 (보강)

period · speaker · author · source · organization 의 빈 값
전빈 항목 '' · 빈 bullet * → 후옮기지 않는다

어디서 생기나

  • 정렬 — 슬롯 없는 필드를 items 로 옮길 때
    align.rs:718 move_field_into_items
  • 투영 P3
    visual_summary/projection.rs:440 move_unread_content
  • 용량 사전 필터
    capacity_prefilter.rs query_unit

정본과 대조

정본 없음

통합판에서 키를 떼고 값만 옮기자 빈 항목이 드러났다. 분리 후에는 접두 제거(규칙 1)와 독립적으로 빈 문자열 자체를 이동 대상에서 제외한다. 접두를 붙이기 전에 빈 값인지 검사하므로 접두 제거에 의존하지 않는다. 비어 있지 않은 값의 표기는 이 규칙이 바꾸지 않는다. 정본은 빈 값을 다루지 않는다.

MOR-2778. 이 사례만 전 = 분리 전 통합판의 보강 전 head cb3645e60, 후 = 접두 제거와 빈 값 보강이 함께 든 4634def6e다. 이번 빈 문자열 PR의 단독 렌더는 아니다. 빈 bullet 이 붙으면 글상자가 목록 모양이 되어 왼쪽 위로 밀린다.

PR #1488 고정 근거: 정본 P3에는 빈 값 처리가 없다(MOR-2770). 정렬, 투영 P3, 용량 사전 필터가 접두어를 붙이기 전에 빈 값을 거른다. 다섯 빈 문자열 필드 회귀 테스트는 비어 있지 않은 필드의 접두 표기에 의존하지 않아 문자열 P3 PR과도 독립이다.

2.6판에서 그려질 수 있는 행 — 다섯 필드 중 하나라도 슬롯이 없고 items 가 있는 2.6판 행 174,648. 기간 슬롯 없는 Timeline 중 items 있는 행 1,461.

분리 후 담당: PR #1488
분리 전 구현 기록
빈 값 4c20fa1

정본 수정 티켓: MOR-2778 (버그 기록 · 정본 §3.4 P3 은 MOR-2770)

사례

기간 슬롯이 없는 Timeline 에 period ""

합성 문서 2.6판 13579287 · Graph_1 · tier 1 · Timeline (투영 없음)

바뀐 칸 근처만 잘라 그렸다.

쿼리 YAML
version: "0.5"
title: 서비스 출시 일정
components:
  - type: TimelineSchedule.Timeline
    structure:
      entities:
        - label: 베타 오픈
          period: "2025년 3월"
          items:
            - 초대 사용자 대상
        - label: 정식 출시
          period: ""
          items:
            - 전체 공개
        - label: 해외 진출
          period: "2026년"
          items:
            - 일본·대만
전
전 · cb3645e60
후
후 · 분리 전 통합판 4634def6e
슬롯전후
items
* 전체 공개
전체 공개
2

value 이동에 「값:」을 붙이지 않는다

value (+ unit)
전값: 70억원→ 후70억원

어디서 생기나

  • 투영 P3 — 도착이 value 를 안 읽는다
    visual_summary/projection.rs:440 move_unread_content

정본과 대조

어긋남 (의도)
mordor-wiki capability-table.md:286 · §3.4 P3
… items 맨 뒤에 이름: 값 으로 붙인다.

검색 경로에서는 닿지 않는다. ① value 를 reads.content 로 선언한 카테고리는 BigNumber(measure?)·Gauge(measure) 둘뿐이다(vocab.json 45종·kernel 41종). ② 선택 dataset 도 dataset 을 가진 것으로 보니(capability_data.rs:136 has_dataset) value 를 안 읽는 도착은 measure 도 못 읽어 P5 가 늘 같이 걸린다(projection.rs:80-83). ③ P5 가 걸리면 unread 에서 Value·Unit 을 지운다(projection.rs:224-228). BigNumber↔Gauge 는 서로 value 를 읽어 unread 가 아니다. 그래서 썸네일 사례가 없고, 단위 테스트(p3_merges_unread_value_and_unit_into_one_line·p3_keeps_unit_when_only_value_is_unread)로만 확인했다.

개별 PR 확정: PR #1484 · value 접두 · 5716caeed6. 로컬 Rust 890개(이 PR에서 TS 테스트 추가 실행 없음)와 관련 정적 검사를 통과했다. GitHub CI·자동 리뷰 상태는 상단 작업 업데이트를 따른다.

2.6판에서 그려질 수 있는 행 — 0 — 검색 경로에서 닿지 않는다.

분리 후 담당: PR #1484 · value 접두
분리 전 구현 기록

정본 수정 티켓: MOR-2770

이 규칙은 썸네일 사례가 없다.

3

표를 펼칠 때 실제 머리글만 남기고 「열 N」을 만들지 않는다

matrix 열 · entities+columns
전열 4: 연락→ 후연락 (실제 머리글 원인: 생활관리 는 그대로)

어디서 생기나

  • 평탄화 — 표 행을 글 줄로 편다
    visual_summary/summary_content.rs:389 cell_line
  • 투영 P4 — 도착이 matrix 를 못 읽는다
    visual_summary/projection.rs:398 unfold_matrix_rows

정본과 대조

일치
mordor-wiki capability-table.md:287 · §3.4 P4
… 첫 열이 label, 나머지 열이 열이름: 값 으로 items 에 들어간다.

머리글이 있는 열은 정본대로 열이름: 값 을 남긴다.

정본 없음

빈 머리글이나 대응하는 열 정의가 없는 여분 값의 표기는 정본이 다루지 않는다. 현재 구현은 지어낸 열 N 대신 값만 남긴다. 기존 P4와 충돌하지 않지만, 이 예외 처리를 정본이 이미 정한 것은 아니다.

#1458 고정 근거: 정본 P4의 실제 열이름: 값은 보존한다. 정본이 정하지 않은 빈 머리글·여분 열에서만 임의의 열 N을 만들지 않는 구현으로 보강했다.

2.6판에서 그려질 수 있는 행 — matrix 를 못 읽는 fallback·tier 3 도착(Versus·List·Steps·HighlightedMessage·LongForm·Timeline)의 items 행 118,431.

분리 후 담당: PR #1458 · main 머지
분리 전 구현 기록
열 N a18526f

정본 보충: P4 예외 규칙 명문화 필요 · MOR-2779

보충할 규칙: 실제 머리글이 있으면 열이름: 값을 유지하고, 머리글이 없거나 공백뿐이면 열 N이나 콜론을 생성하지 않고 값(단위가 있으면 단위 포함)만 보존한다. entities+columns 평탄화에도 같은 규칙을 명시해야 한다. 종전의 “정본 수정 없음”은 기존 규칙과 충돌하지 않는다는 뜻을 과도하게 단정한 표기였다. 정본 원문은 아직 수정하지 않았다.

사례

열 3개짜리 표에 칸 4개인 행 (ListingTable → List)

V3 생성 기록 2.6판 13625758 · VStack_19 · tier 2 · ListingTable → List

바뀐 칸 근처만 잘라 그렸다.

쿼리 YAML
version: "0.5"
title: 출결 원인 분석
components:
  - type: Enumeration.ListingTable
    structure:
      entities:
        - label: 출결 원인 분석
          items:
            - 🔴 신앙 포기
            - 🟠 생활관리 및 기질
            - 🟡 보고체계 미흡
            - 🟢 개인사정
      dataset:
        shape: matrix
        columns:
          - label: 대상
            role: category
          - label: 주요 내용
            role: category
          - label: 원인
            role: category
        rows:
          - [김종수, 연속 결석, 신앙 포기]
          - [김재희, 사유출석·인증, 생활관리, 연락]
          - [양기영, 인증·보고 문제, 보고체계 미흡]
          - [조부경, 대체예배, 개인 사정]
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
items
* 원인: 생활관리
* 열 4: 연락
* 원인: 생활관리
* 연락
4

평탄화한 줄에 필드 이름을 붙이지 않는다

value · unit · period · … · values
전value: 42% · values: 77→ 후42% · 77

어디서 생기나

  • 평탄화 — 중첩 peel·종단 N5·표 행·용량 계산이 쓰는 글 줄
    visual_summary/summary_content.rs:18 entity_lines

정본과 대조

열린 문제
schema-v0.5.md:956 · 8.7절 예시
위 예시가 평탄화되면 1분기 항목의 items 가 [신규 계약 12건, 매출 12억원] 이 된다

정본은 「중첩은 평탄화된다」(:115)까지만 규칙으로 적고 줄 표기는 정하지 않았다. 다만 예시는 { label: 매출, value: 12, unit: 억원 } 을 매출 12억원 한 줄로 적는다. MOR-2516 수정은 키만 뗐고, label 과 값은 여전히 두 줄(매출 · 12억원)로 나눈다 — 예시와 다르다.

화면에는 중첩 컴포넌트를 벗길 때(peel)와 종단(List 등)으로 내려갈 때 보인다. 골든 nested.json·summary_content.json 이 이 변화를 잠근다.

개별 PR 확정: PR #1485 · 평탄화 접두 · c9b8bbe331. 로컬 Rust 891개·TS 2,533개(51개 skip)와 관련 정적 검사를 통과했다. GitHub CI·자동 리뷰 상태는 상단 작업 업데이트를 따른다.

2.6판에서 그려질 수 있는 행 — 종단 세 카테고리의 items 행 107,398. peel 자식은 어느 카테고리든 되므로 상한은 items 행 전체 174,648.

분리 후 담당: PR #1485 · 평탄화 접두
분리 전 구현 기록

정본 수정 티켓: MOR-2777 (정본에 규칙을 적고 코드를 맞춘다)

사례

중첩 컴포넌트를 벗기는 peel (stage N3)

합성 문서 2.6판 13631655 · VStack_3 · tier 1 · List (투영 없음)

안쪽 컴포넌트의 value·period 가 부모 items 줄로 펼쳐진다.

쿼리 YAML
version: "0.5"
title: 하반기 영업 성과
components:
  - type: TimelineSchedule.Timeline
    structure:
      entities:
        - label: 하반기 신규 계약
          period: "2025 하반기"
          value: 42
          unit: 건
          components:
            - type: Enumeration.List
              structure:
                entities:
                  - label: 대기업
                    items:
                      - 제조·유통 3곳
                  - label: 중견기업
                    items:
                      - IT 서비스 12곳
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
items
* 제조·유통 3곳
* 하반기 신규 계약
* value: 42건
* period: 2025 하반기
* 제조·유통 3곳
* 하반기 신규 계약
* 42건
* 2025 하반기
5

측정값 — MOR-2516 범위 밖

measure 의 min · max · target · delta · thresholds
전target: 80 · threshold: 50 주의 (warn)→ 후그대로 (main 과 같다)

어디서 생기나

  • 쿼리 Frame 구성 — tier 1 에서도 부속값을 items 로 편다 (Frame 에 min·target 칸이 없다)
    query_frame.rs:429 build_frame_for_structure → summary_content.rs:241 materialize_measure
  • 투영 P5 — measure 를 못 읽는 도착 (→ HighlightedMessage·List)
    visual_summary/projection.rs:133 · :518 threshold_line
  • 투영 — measure 가 남는 엣지 (Gauge → BigNumber)
    visual_summary/projection.rs:244 move_unread_measure_fields · summary_projection.rs:96 drop_thresholds

정본과 대조

어긋남 (의도)
mordor-wiki capability-table.md:288 · §3.4 P5
measure 를 못 읽는 곳으로 가면 value 와 unit 을 entity 로 옮긴다. 나머지 필드는 P3 을 따른다

P3 을 따르니 정본대로면 target: 80 이다. fallback 엣지(P5·Gauge→BigNumber)는 이 조항과 어긋난다.

정본 없음

tier 1(Gauge → Gauge)에서 부속값이 items 글이 되는 것은 정본이 다루지 않는다. §3.4 는 「fallback 은 카테고리를 바꾸는 일이므로」 엣지만 말한다. Frame 에 measure 칸이 없어 생긴 구현 사정이다.

Gauge 타입 처리라 MOR-2516 범위 밖으로 남겼다. 분리 전 통합 PR 첫 판에서 키를 떼 봤지만 숫자만 남아 무엇이 목표인지 알 수 없어 뺐다. 당시 렌더 기준 4634def6e로 다시 돌려 결과 목록·순위·cost까지 당시 main과 같은 것을 확인했다. 아래는 그 통합판 기록이며, 분리 후 개별 PR의 재렌더 결과는 아니다. 표기를 정하는 일은 MOR-2769 future plan 이다. 운영 생성 프롬프트 V3 에는 KPI 타입이 없어 지금 운영 영향은 없다.

2.6판에서 그려질 수 있는 행 — items 행: Gauge 239, BigNumber 5,314, HighlightedMessage 10,266, List 69,014 (합집합 84,613).

담당 PR: — 모든 PR 범위 밖 (통합 첫 판에서 제외)

정본 수정 티켓: MOR-2769 (future plan · 정본 §3.4 P5 포함)

사례

Gauge → Gauge, fallback 없음

합성 문서 2.6판 12821819 · VStack_2 · tier 1 · Gauge (투영 없음)
쿼리 YAML
version: "0.5"
title: 상반기 목표 달성률
components:
  - type: KPIKeyMetric.Gauge
    structure:
      entities:
        - label: 상반기 목표 달성률
      dataset:
        shape: measure
        value: 87
        unit: "%"
        min: 0
        max: 100
        target: 80
지금
기존 렌더 · 당시 main과 통합판 동일 (모든 PR 범위 밖)

Gauge → BigNumber (tier 2)

합성 문서 2.6판 13602576 · Group_7 · tier 2 · Gauge → BigNumber
쿼리 YAML
version: "0.5"
title: 상반기 목표 달성률
components:
  - type: KPIKeyMetric.Gauge
    structure:
      entities:
        - label: 상반기 목표 달성률
      dataset:
        shape: measure
        value: 87
        unit: "%"
        min: 0
        max: 100
        target: 80
지금
기존 렌더 · 당시 main과 통합판 동일 (모든 PR 범위 밖)

Gauge → BigNumber 의 임계값

합성 문서 2.6판 13606965 · VStack_2 · tier 2 · Gauge → BigNumber
쿼리 YAML
version: "0.5"
title: 서버 사용률
components:
  - type: KPIKeyMetric.Gauge
    structure:
      entities:
        - label: CPU 사용률
      dataset:
        shape: measure
        value: 72
        unit: "%"
        min: 0
        max: 100
        thresholds:
          - at: 50
            label: 주의
            state: warn
          - at: 90
            label: 위험
            state: danger
지금
기존 렌더 · 당시 main과 통합판 동일 (모든 PR 범위 밖)

Gauge → HighlightedMessage (P5)

합성 문서 2.6판 13579650 · Group_3 · tier 2 · Gauge → HighlightedMessage
쿼리 YAML
version: "0.5"
title: 상반기 목표 달성률
components:
  - type: KPIKeyMetric.Gauge
    structure:
      entities:
        - label: 상반기 목표 달성률
      dataset:
        shape: measure
        value: 87
        unit: "%"
        min: 0
        max: 100
        target: 80
지금
기존 렌더 · 당시 main과 통합판 동일 (모든 PR 범위 밖)

Gauge → List (P5)

합성 문서 2.6판 13636373 · VStack_2 · tier 2 · Gauge → HighlightedMessage
쿼리 YAML
version: "0.5"
title: 상반기 목표 달성률
components:
  - type: KPIKeyMetric.Gauge
    structure:
      entities:
        - label: 상반기 목표 달성률
      dataset:
        shape: measure
        value: 87
        unit: "%"
        min: 0
        max: 100
        target: 80
지금
기존 렌더 · 당시 main과 통합판 동일 (모든 PR 범위 밖)
6

신호 필드는 글로 옮기지 않는다

emphasis · weight · avatar
전true · weight: 0.2 · avatar: a.png→ 후실리지 않는다 (강조 슬롯이 있으면 빈 필드)

어디서 생기나

  • 투영 P3 — 도착이 안 읽으면 버린다
    visual_summary/projection.rs:440 move_unread_content
  • 평탄화 — 줄로 내지 않는다
    visual_summary/summary_content.rs:18 entity_lines
  • 정렬 — 같은 슬롯·별칭의 쿼리와 호스트·items 이동·폴백 어디에도 싣지 않는다 (tier 1 포함)
    frame.rs:72 Field::is_signal · align.rs:647 별칭 호스트 · capacity_prefilter.rs query_unit

정본과 대조

어긋남 (의도)
mordor-wiki capability-table.md:65 · §2 머리 표
선택 내용 — period, weight, speaker, author, source, avatar, organization, children … → 옮긴다 (P3, P7)
mordor-wiki capability-table.md:315–317 · §3.5
BigNumber → List | value, unit, delta, emphasis 가 items 로 간다
mordor-wiki capability-table.md:389–391 · §3.5
ProfileCard → List | avatar, organization
mordor-wiki capability-table.md:392·394 · §3.5
Pyramid → List·Staircase | weight 가 items 로 간다
열린 문제
mordor-wiki capability-table.md:393 · §3.5
Pyramid → NestedScope | weight 는 표현 선택이라 버린다

정본 안에서 weight 가 엣지마다 다르게 적혀 있다. MOR-2516 수정은 늘 버린다.

schema-v0.5.md:51
강조(Element.Highlight)는 대치가 내용으로 채우는 노드 … entity.emphasis 가 담는다

강조 노드를 비울지, 강조된 entity 의 내용을 실을지는 정본 해석이 갈린다. MOR-2516 수정은 비운다(임시 문구).

2.6판에는 avatar 슬롯이 0행, weight 3행, emphasis 165행뿐이라 거의 늘 items 로 흘러 true·0.8·파일 이름이 찍혔다.

신호 제외 PR #1486에 포함한 리뷰 보강 — 신호 필드는 별칭 호스트로도 쓰지 않는다

적재는 FIELD_ORDER 순으로 같은 Text 노드의 첫 필드를 호스트로 잡는다. emphasis·weight가 speaker·author·source·organization보다 먼저 잡으면 본문 필드는 그 신호 슬롯의 별칭이 된다. pass 1.5는 쿼리 신호 필드를 걸렀지만 호스트에서는 Marker만 제외해, 일반 본문이 강조·가중치 칸에 들어갈 수 있었다.

호스트에도 !host.is_signal()을 적용했다. 신호 칸은 빈 필드로 남고, 본문은 다음 일반 별칭 호스트 또는 기존 items·폴백 경로를 따른다. 저장 데이터의 손상이 아니라 화면의 대치 위치가 잘못되는 문제다. 검색 후 용량 게이트는 정렬 결과를 다시 보므로 이번 누락으로 용량 초과 후보가 검사를 우회하는 것은 아니다.

개별 PR 확정: PR #1486 · 신호 제외 · 0e3e4fbb49. 로컬 Rust 896개·TS 2,533개(51개 skip)와 관련 정적 검사를 통과했다. GitHub CI·자동 리뷰 상태는 상단 작업 업데이트를 따른다.

2.6판에서 그려질 수 있는 행 — BigNumber 중 emphasis 슬롯 있음 158 / 없음 8,063, Pyramid 중 weight 슬롯 있음 2 / 없음 360, ProfileCard 중 avatar 슬롯 0 (글 자리 있는 행 7,284).

분리 후 담당: PR #1486 · 신호 제외
분리 전 구현 기록

정본 수정 티켓: MOR-2770 (§2 머리 표) · MOR-2771 (§3.5 엣지 표)

사례

ProfileCard 의 avatar

합성 문서 2.6판 13470888 · VStack_4 · tier 1 · ProfileCard (투영 없음)

organization 은 슬롯이 있어 제자리에 간다.

쿼리 YAML
version: "0.5"
title: 프로젝트 팀 소개
components:
  - type: PortraitProfile.ProfileCard
    structure:
      entities:
        - label: 김하늘
          organization: 미리디 디자인팀
          avatar: avatar-kim.png
          items:
            - 브랜드 경험 설계
        - label: 이도윤
          organization: 미리디 개발팀
          avatar: avatar-lee.png
          items:
            - 편집기 성능 개선
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
items
* 브랜드 경험 설계
* avatar: avatar-kim.png
브랜드 경험 설계
items
* 편집기 성능 개선
* avatar: avatar-lee.png
편집기 성능 개선

강조 슬롯이 있는 BigNumber

합성 문서 2.6판 12793308 · VStack_2 · tier 1 · BigNumber (투영 없음)

강조 칸에 true 가 찍히던 것이 빈 필드(임시 문구 「강조」)가 된다.

쿼리 YAML
version: "0.5"
title: 3분기 핵심 지표
components:
  - type: KPIKeyMetric.BigNumber
    structure:
      entities:
        - label: 신규 가입자
          value: 1200
          unit: 명
        - label: 재방문율
          value: 64
          unit: "%"
          emphasis: true
        - label: 평균 체류 시간
          value: 12
          unit: 분
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
emphasis
true
(빈 필드 · 임시 문구)

weight 슬롯이 없는 Pyramid

합성 문서 2.6판 13616844 · Group_5 · tier 1 · Pyramid (투영 없음)
쿼리 YAML
version: "0.5"
title: 학습 단계
components:
  - type: Hierarchy.Pyramid
    structure:
      entities:
        - label: 응용
          weight: 0.2
        - label: 이해
          weight: 0.5
        - label: 기억
          weight: 0.8
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
label
* 응용
* weight: 0.2
응용
label
* 이해
* weight: 0.5
이해
label
* 기억
* weight: 0.8
기억

강조 슬롯이 없는 BigNumber

합성 문서 2.6판 13549097 · VStack_4 · tier 1 · BigNumber (투영 없음)

emphasis: true 가 items 에 붙던 것이 사라진다.

쿼리 YAML
version: "0.5"
title: 3분기 핵심 지표
components:
  - type: KPIKeyMetric.BigNumber
    structure:
      entities:
        - label: 신규 가입자
          value: 1200
          unit: 명
          emphasis: true
        - label: 재방문율
          value: 64
          unit: "%"
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
label
* 신규 가입자
* emphasis: true
신규 가입자
7

관계는 종류 없이 desc 만 옮긴다

relations (intersects · compares)
전교집합: 겹치는 부분은…→ 후겹치는 부분은…

어디서 생기나

  • 정렬 — 관계 desc 를 그 유닛 items 뒤에 붙인다
    align.rs:1187 align_relations

정본과 대조

일치
mordor-wiki capability-table.md:290 · §3.4 P7
도착이 관계를 못 그리면 relation.desc 를 of 첫 항목의 items 맨 뒤로 보낸다

이번엔 코드가 정본에 맞춘 쪽이다. TS relationLines 는 2026-09-13 부터 이미 desc 만 옮겼고, Rust 정렬만 종류를 붙이고 있었다.

V3 가 실제로 만드는 relations 에서 나는 누출이라 운영 결과가 바뀐다.

#1458 고정 근거: 정본 P7이 지정한 relation.desc와 Rust 정렬의 이동 문구를 맞췄다. 관계 종류 접두를 덧붙이지 않는다.

#1458 추가 리뷰 반영: 정렬도 Rust relation_lines·TS relationLines처럼 빈 desc를 건너뛴다. 회귀 테스트에서 본문·대치 종류·내용 손실이 관계 없음과 동일함을 확인했다. 이 보강은 빈 문자열 필드 PR #1488과 구분한다.

2.6판에서 그려질 수 있는 행 — Versus·Venn 의 글 자리 행 3,128. 관계 desc 는 어느 후보의 items 에도 붙으니 상한은 글 자리 행 전체 205,288.

분리 후 담당: PR #1458 · main 머지
분리 전 구현 기록
관계 desc 2c8f63b

정본 수정 티켓: — (정본 수정 없음)

사례

Versus 의 compares

V3 생성 기록 2.6판 13209109 · HStack_0 · tier 1 · Versus (투영 없음)
쿼리 YAML
version: "0.5"
title: 시작 방식의 비교
components:
  - type: AttributeComparison.Versus
    structure:
      entities:
        - label: 피해야 할 시작
          items:
            - "회사소개를 길게 하는 것"
            - "통화 가능 여부부터 묻는 것"
            - "정책자금·상품 설명부터 하는 것"
        - label: 좋은 시작
          items:
            - "정책자금 신청 건 먼저 언급"
            - "연락 목적을 짧게 설명"
            - "바로 확인 질문으로 연결"
      relations:
        - type: compares
          of: [피해야 할 시작, 좋은 시작]
          desc: 피해야 할 시작과 좋은 시작의 접근 방식을 비교한다.
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
items
* 정책자금·상품 설명부터 하는 것
* 비교: 피해야 할 시작과 좋은 시작의 접근 방식을 비교한다.
* 정책자금·상품 설명부터 하는 것
* 피해야 할 시작과 좋은 시작의 접근 방식을 비교한다.

List 의 intersects

V3 생성 기록 2.6판 13634877 · VStack_2 · tier 1 · List (투영 없음)
쿼리 YAML
version: "0.5"
title: 끈기와 적응력
components:
  - type: Enumeration.List
    structure:
      entities:
        - label: 끈기
        - label: 적응력
      relations:
        - type: intersects
          of: [끈기, 적응력]
          desc: 겹치는 부분은 문제해결력이다.
전
전 · 962dde1f5
후
후 · 분리 전 통합판 4634def6e
슬롯전후
label
* 끈기
* 교집합: 겹치는 부분은 문제해결력이다.
* 끈기
* 겹치는 부분은 문제해결력이다.

MOR-2516 수정이 바꾸지 않는 것

개별 PR 분리 결과와 다음 순서

썸네일은 분리 전 통합판의 역사적 비교다. 전 = 당시 origin/main 962dde1f5(1b만 cb3645e60), 후 = 별칭 리뷰 보강 전 4634def6e(18개 사례). 이후 통합 head ca5d4c555의 별칭 호스트 수정은 당시 회귀 테스트로 확인했다. 재분리한 개별 PR은 아직 재렌더하지 않았다. 두 판의 comp-pass-logic::run_document_search 를 2.6판 후보 풀(excluded=false)에 돌리고, comp-frame-client buildFrameReplacement 로 대치해 preview 렌더러로 그렸다(글자 축소 끔). 문서 제목(pageTitle)은 넘기지 않아 경계 밖 제목 자리는 임시 문구다 — 전·후 조건은 같다. 「V3 생성 기록」은 iui.visual_summary_generations 의 YAML 그대로, 「합성 문서」는 V3 가 만들지 않는 필드를 보이려고 손으로 쓴 최소 v0.5 문서다. 재현 스크립트: ~/Documents/miricanvas-iui-pr-assets/mor-2516/scripts/.