아카이브 · 당시 기준

2026-10-18 보관. 기존 v0.5 입력 사례를 보존하고 최신 origin/main의 규약 v0.5.6과 재대조하기 전 판이다. 본문과 자동 동기화 표는 보관 당시 내용입니다.

현재 기준과 원본 보기 → · 보관 목록
miricanvas-iui · MOR-2516 · 2026-10-18 갱신 · 저자 홍지혜(jhhong) · 중복 정리 · 이전판

MOR-2516 투영 규칙

내용 대치 과정에서 코드가 붙이는 접두어를 정리하는 작업이다. 규칙별 변경·정본과의 차이·사례를 설명하고, Rust PR과 규약·Eregion·iUi 동기화의 담당을 구분한다.

진행 상태

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

원래 period: 노출 문제는 #1487의 머지·배포·결과 확인까지 추적한다. 여섯 PR의 CI·자동 리뷰 검사는 통과했다(2026-10-18 확인).

규칙 한눈에 보기

표의 변화는 각 PR의 목표 범위다. 사례·행 수는 분리 전 통합판의 기록이며, 개별 PR의 최종 결과를 다시 렌더한 것은 아니다. 측정·렌더 기준

어긋남 (의도) 구현 방향에 맞춰 규약을 고칠 대상 정본 없음 규약 보충 필요 일치 현재 규약과 같음 열린 문제 해석·표기 결정 필요
#규칙변경정본 대조Rust PR
1문자열 필드period: 2018년 → 2018년어긋남 (의도)#1487
1b빈 문자열빈 항목·빈 bullet → 이동하지 않음정본 없음#1488
2value 접두값: 70억원 → 70억원어긋남 (의도)#1484
3표 머리글열 4: 연락 → 연락
실제 머리글·사용자 콜론은 보존
일치
실제 머리글
정본 없음
머리글 없음·빈 머리글
#1458
4평탄화 접두value: 42% → 42%
label·값을 한 줄로 합칠지는 미결정
열린 문제#1485
5측정값target: 80 등 기존 표기 유지어긋남 (의도) 열린 문제범위 밖
6신호 필드emphasis·weight·avatar를 글로 옮기지 않음어긋남 (의도) 열린 문제#1486
7관계 설명교집합: 설명 → 설명
빈 desc는 건너뜀
일치#1458
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)에만 남긴다.

구현 범위: p3_text를 유지해 신호 필드의 기존 표기는 바꾸지 않는다. 신호 제외는 규칙 6에서 따로 처리한다.

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

사례 4개 · YAML·전후 이미지

기간 슬롯이 없는 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.

사례 1개 · YAML·전후 이미지

기간 슬롯이 없는 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)로만 확인했다.

2.6판 영향 범위 · 분리 전 측정 — 0 — 검색 경로에서 닿지 않는다.

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

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와 충돌하지 않지만, 이 예외 처리를 정본이 이미 정한 것은 아니다.

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

2.6판 영향 범위 · 분리 전 측정 — matrix 를 못 읽는 fallback·tier 3 도착(Versus·List·Steps·HighlightedMessage·LongForm·Timeline)의 items 행 118,431.

보충할 규칙: 실제 머리글이 있으면 열이름: 값을 유지하고, 머리글이 없거나 공백뿐이면 열 N이나 콜론을 생성하지 않고 값(단위가 있으면 단위 포함)만 보존한다. entities+columns 평탄화에도 같은 규칙을 명시해야 한다. 이 예외를 규약에 보충하는 작업은 아직 남아 있다.

사례 1개 · YAML·전후 이미지

열 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 이 이 변화를 잠근다.

2.6판 영향 범위 · 분리 전 측정 — 종단 세 카테고리의 items 행 107,398. peel 자식은 어느 카테고리든 되므로 상한은 items 행 전체 174,648.

사례 1개 · YAML·전후 이미지

중첩 컴포넌트를 벗기는 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 칸이 없어 생긴 구현 사정이다.

측정값은 접두만 없애면 무엇이 목표·상한·임계값인지 알 수 없어 이번 변경에서 제외했다. 통합판 4634def6e의 결과 목록·순위·cost는 당시 main과 같았다. 당시 V3 생성 프롬프트에는 KPI 타입이 없었다.

2.6판 영향 범위 · 분리 전 측정 — items 행: Gauge 239, BigNumber 5,314, HighlightedMessage 10,266, List 69,014 (합집합 84,613).

사례 5개 · YAML·전후 이미지

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·파일 이름이 찍혔다.

별칭 호스트도 신호 필드를 제외한다

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

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

2.6판 영향 범위 · 분리 전 측정 — BigNumber 중 emphasis 슬롯 있음 158 / 없음 8,063, Pyramid 중 weight 슬롯 있음 2 / 없음 360, ProfileCard 중 avatar 슬롯 0 (글 자리 있는 행 7,284).

사례 4개 · YAML·전후 이미지

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 에서 나는 누출이라 운영 결과가 바뀐다.

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

2.6판 영향 범위 · 분리 전 측정 — Versus·Venn 의 글 자리 행 3,128. 관계 desc 는 어느 후보의 items 에도 붙으니 상한은 글 자리 행 전체 205,288.

사례 2개 · YAML·전후 이미지

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
* 끈기
* 교집합: 겹치는 부분은 문제해결력이다.
* 끈기
* 겹치는 부분은 문제해결력이다.

티켓 담당과 작업 순서

규약·Eregion 구현 → iUi 동기화 → TS·Rust 통합 검증. MOR-2776은 앞선 구현을 받아 동기화·검증하는 단계다. 아래는 2026-10-18 Jira에 반영한 담당 범위이며, 구현·머지 완료를 뜻하지 않는다.

티켓담당 작업경계·의존
MOR-27701·1b·2의 P3 규약·Eregion 구현·단위 테스트. §2 신호 정의와 강조 슬롯 정책 검토.빈 값 방어도 여기서 구현하고, 머지 결과를 2776에 넘긴다.
MOR-27716의 §3.5 엣지 표·Eregion 신호 제외 구현·단위 테스트.2770의 신호 정의를 따른다.
MOR-27781b의 빈 문자열 버그·재현·Rust #1488 추적.규약·Eregion 구현은 2770, iUi 동기화는 2776.
MOR-2776iUi 동기화·TS/Rust 통합 검증·결과 기록.규칙 구현은 선행 티켓에서 받는다. 새 정책을 정하지 않는다.
MOR-27793의 P4·entities+columns 머리글 없음 예외 규약 보충.실제 머리글 보존과 예외 처리를 구분한다.
MOR-27774의 평탄화 줄 표기 결정·Rust/TS 본문 평탄화 코드·골든 수정.#1485의 접두 제거만으로 완료되지 않는다.
MOR-27695의 측정값 표기 결정·P5 규약·코드·골든 수정.측정값 접두·state의 처리 정책을 먼저 정한다.
MOR-2776 동기화·검증 절차
  1. 입력 확정. 2770·2771에서 규약·Eregion 원본·단위 테스트를 마친 머지 커밋을 받는다.
  2. 동기화. 벤더링 정책에 따라 sync-eregion으로 사본과 VENDOR.json을 갱신한다. 벤더 파일을 직접 고치지 않는다.
  3. 통합 검증. sync-eregion --check와 벤더 밖 TS/Rust 대조 테스트를 실행한다. 대응 경로의 structure·params·rules·losses를 비교하고 동기화 커밋·Rust 기준 커밋·결과를 기록한다.

대조 항목: 문자열 값만 이동, 빈 항목·빈 bullet 방지, value의 값·0·단위 보존, emphasis·weight·avatar 제외. 규칙 구현 결함은 2770·2771에서, 동기화·검증 문제는 2776에서 고친다.

통합 후 배포

LOGIC_ID 유지·(b) 검증 블록이 있는 서빙 판 재굽기 방침이다. stg/prd 배포 전에 판 재굽기와 태그·환경별 짝 증명서 갱신이 필요하다. 이 문서에서는 배포 완료를 확인하지 않았다.

채움 글(항목·속성 N·값 없음 등)은 별도 MOR-2768 범위다.

검증 기록 · PR별 head와 로컬 결과

기존 head에서 실행한 로컬 결과다. 머지 후 main에서 재실행한 결과나 개별 PR의 최종 렌더 결과를 뜻하지 않는다.

PR검증 headRust 통과TS 통과
#14586b99594353888개2,532개 · 51 skip
#148833cfb07bf8891개2,532개 · 51 skip
#1487bec77cb1bd891개2,532개 · 51 skip
#1484aa58b8a6d0888개2,532개 · 51 skip
#14852e75e0f91a889개2,533개 · 51 skip
#14862f6f0a4950894개2,533개 · 51 skip

공통 검사: Rust 전체 테스트·fmt·workspace Clippy(--all-targets --all-features -- -D warnings), TS 132파일, 저장소 format:check·lint(오류 0·기존 경고 238)·앱 tsc·diff 검사. 분리·충돌 해소 후 별도 코드 리뷰에서도 추가 결함이 없었다.

이전 기록·출처·렌더 기준

PR 분리: 통합 PR #1483은 닫고 후속 정책을 독립 PR로 나눴다. 빈 문자열 필드는 마지막으로 #1488에 분리했다. 커밋별 수정·검증 내역은 정리 전 기록에 보관했다.

담당 재정리: 2778과 겹치던 P3 규약·Eregion 구현은 2770에 모으고, 2776은 동기화·통합 검증만 맡도록 했다. 미결정인 측정값 정책은 2769에 남겼다. 당시 대조는 분리 전 기록에서 확인할 수 있다.

Jira 근거: PR 범위·검증·배포 조건 정정 · period 문제의 담당 PR 보충.

정본: mordor-wiki 규약·schema-v0.5.md. Eregion: 원본 TS 구현. 두 원천의 2026-10-18 origin/main을 다시 확인했다. 카드의 코드 위치·실측은 각 사례 당시 기준이다. 별도 origin/main 대조 기록.

썸네일은 분리 전 통합판의 역사적 비교다. 전 = 당시 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/.

예시 이미지 확대

2배 확대 후 스크롤로 살펴볼 수 있습니다. 바깥 영역이나 Esc 키로 닫습니다.