2026-11-03모르도르 02 RLSC 고도화발표 류민MOR-2921

RLSC 고도화 — IIS 를 페이지 단위로 옮겨 RLSC 에 통합

컴포넌트 의미(IIS)가 DO 를 자른 뒤 조각마다 붙어서, 한 장의 구조와 의미가 따로 논다. IIS 를 린트 직후 · 페이지 전체로 옮기고 결과를 페이지 RLSC 노드 id 에 붙이면, 의미가 DO 경계를 정하고 구조 · 의미 · 스타일이 한 문서(로드맵 02 의 「자체 DSL」)로 모인다. 최근 원문 400 으로 재 보니 judge 와 규약 카드 모두 나아졌고, 남은 악화 하나(순위 역전)는 경계가 아니라 제목 없는 표 DO 의 1위 독점에서 나와 검색 쪽 과제로 둔다. 남은 것은 사람 판정이다.

1 / 4

RLSC 통합 — 한 장으로 본 실제 값

의미와 스타일은 RLSC 트리를 고치지 않고, 키 (linted_rlsc_id, anchor_node_id) 의 증분 행으로 붙는다. layout 1521198 한 장에서 같은 트리에 칸이 붙어 가는 모습을 세 단계로 본다.

layout 1521198 썸네일 — How It Works 제목 아래 네 단계 카드(Notice a need · Talk it over · Make a plan · Take action)

트리에 겹쳐 읽은 보기 (overlay)

장 전체 53노드 · 노드 id 원문 · role 은 Role. 접두 생략
anchor 경계 노드 · 의미 문서 요약 slot 문서 칸이 가리키는 노드 page satellite 경계 밖 · 저장 자리 미정 style 노드 style · 토큰 참조

증분 행

id: Group_11
type: Group
role: Role.Page.Content
children:
- id: Group_1
  type: Group
  role: Role.LayoutContainer.Background
  children:
  - {id: 1dd330ec-93fb-4c65-b2df-ff229110658d, type: Image, role: Role.Element.Decoration}
  - {id: 15d6e842-126a-499c-a574-954b26b6bca2, type: Image, role: Role.Element.Background}
- {id: 86855b06-405b-4609-aeda-2888d582a7ed, type: Text, role: Role.Element.Title, text: How It Works}
- id: Group_2
  type: Group
  role: Role.LayoutContainer.Separator
  children:
  - {id: 6a336822-f4fb-4ce9-8280-e3db9c96dd59, type: SVG, role: Role.Element.Separator}
  - {id: 4da9b528-64ea-4fe1-8ded-06fa05560b9a, type: SVG, role: Role.Element.Separator}
- id: HStack_1
  type: HStack
  role: Role.LayoutContainer.Description
  children:
  - id: VStack_2
    type: VStack
    role: Role.LayoutContainer.Description
    children:
    - id: VStack_1
      type: VStack
      role: Role.LayoutContainer.Description
      children:
      - {id: e9182b3b-7dff-4733-b48d-71e998f378d7, type: Text, role: Role.Element.Title, text: Notice a need}
      - id: Group_3
        type: Group
        role: Role.LayoutContainer.Decoration
        children:
        - {id: 73edd261-8fcc-427e-80a1-88ae2c938e0c, type: SVG, role: Role.Element.Background}
        - {id: b23a5709-bdc8-4a5f-83fd-b86c8c86f010, type: SVG, role: Role.Element.Decoration}
    - id: Group_4
      type: Group
      role: Role.LayoutContainer.Decoration
      children:
      - {id: 3a9380ce-4f9b-4659-8f76-f410acb156a4, type: Image, role: Role.Element.Background}
      - id: 1051d69c-1a78-4582-bc59-35a208c9873d
        type: Frame
        role: Role.LayoutContainer.Decoration
        children:
        - {id: 95c63b8d-0133-4348-87d6-738eb7e3ee0f, type: Image, role: Role.Element.Decoration}
    - {id: ac5e1cc3-1843-4015-97a9-0b50170b40af, type: Text, role: Role.Element.Description, text: Please provide a detailed explanation.}
  - id: VStack_4
    type: VStack
    role: Role.LayoutContainer.Description
    children:
    - id: VStack_3
      type: VStack
      role: Role.LayoutContainer.Description
      children:
      - {id: fd1a4da1-cae5-4517-8ccb-279a56a5437b, type: Text, role: Role.Element.Title, text: Talk it over}
      - id: Group_5
        type: Group
        role: Role.LayoutContainer.Decoration
        children:
        - {id: f0bc9340-2363-4da7-82e2-1d0bc72fb256, type: SVG, role: Role.Element.Decoration}
        - {id: fd5f7ba0-f74e-4cc6-8216-d44734c01d52, type: SVG, role: Role.Element.Background}
    - id: Group_6
      type: Group
      role: Role.LayoutContainer.Decoration
      children:
      - {id: 1f3d9cbc-80d8-47c9-8e87-261af3a53fff, type: Image, role: Role.Element.Background}
      - id: 05a15fa2-0f1d-437f-bb0e-c7a4a5657ebc
        type: Frame
        role: Role.LayoutContainer.Decoration
        children:
        - {id: 05a36f52-f3a5-47c5-8848-4c9f0915962b, type: Image, role: Role.Element.Decoration}
    - {id: d0de082d-2f8f-46b7-815d-9a7db6c2254d, type: Text, role: Role.Element.Description, text: Please provide a detailed explanation.}
  - id: VStack_6
    type: VStack
    role: Role.LayoutContainer.Description
    children:
    - id: VStack_5
      type: VStack
      role: Role.LayoutContainer.Description
      children:
      - {id: 4a619f1c-7030-4be4-8a02-dfafa78d9aa8, type: Text, role: Role.Element.Title, text: Make a plan}
      - id: Group_7
        type: Group
        role: Role.LayoutContainer.Decoration
        children:
        - {id: c0862342-006b-4178-8ffb-9622725caf0f, type: SVG, role: Role.Element.Decoration}
        - {id: bb90fff1-40d7-4440-92f8-ca1965b61fe0, type: SVG, role: Role.Element.Background}
    - id: Group_8
      type: Group
      role: Role.LayoutContainer.Decoration
      children:
      - {id: 599ba6e9-42cd-4cf5-9486-8c5e7f3f4b53, type: Image, role: Role.Element.Background}
      - id: 4bda3ec0-dc82-45a3-b000-dcdff0ad43ba
        type: Frame
        role: Role.LayoutContainer.Decoration
        children:
        - {id: d53c2e95-5857-433b-9e51-07f702551acb, type: Image, role: Role.Element.Decoration}
    - {id: bd4a4359-c7a7-4f77-b530-1245a75ce9a3, type: Text, role: Role.Element.Description, text: Please provide a detailed explanation.}
  - id: VStack_8
    type: VStack
    role: Role.LayoutContainer.Description
    children:
    - id: VStack_7
      type: VStack
      role: Role.LayoutContainer.Description
      children:
      - {id: 53954015-6881-47d6-bf38-8bf3309f01e6, type: Text, role: Role.Element.Title, text: Take action}
      - id: Group_9
        type: Group
        role: Role.LayoutContainer.Decoration
        children:
        - {id: a6751031-427d-45e2-bed5-907a2a52ab86, type: SVG, role: Role.Element.Background}
        - {id: 49c03986-903c-461d-be1d-eaebd9cc53c8, type: SVG, role: Role.Element.Decoration}
    - id: Group_10
      type: Group
      role: Role.LayoutContainer.Decoration
      children:
      - {id: b3d0d541-5017-45e4-8c36-47899c1ed33a, type: Image, role: Role.Element.Background}
      - id: acec490e-dfc1-4b44-a085-5b2541f996be
        type: Frame
        role: Role.LayoutContainer.Decoration
        children:
        - {id: 910eaa17-477a-4412-823b-7c83f39227b7, type: Image, role: Role.Element.Decoration}
    - {id: b63c3b12-208b-432d-997f-6938e05e9de8, type: Text, role: Role.Element.Description, text: Please provide a detailed explanation.}

어디에 저장하나 — 트리는 고치지 않는다

overlay 는 읽는 쪽이 노드 id 로 조인해서 보는 모습이다. 저장 위치는 아직 정하지 않았다(MOR-2922). 저장은 jsonb, LLM 입출력과 사람 검수는 YAML 로 편다 — 규약 v0.5 의 「YAML 로 쓰고 JSON 으로 검증」과 같은 길이다.

A · 트리 안

린트본 노드에 semantic · style 칸을 연다. 읽는 쪽은 트리 하나만 본다.

대신 판이 바뀔 때마다 린트본을 다시 쓴다. 「RLSC 노드를 수정하지 않고 투영」 원칙과 부딪힌다.

B · 옆 테이블 제안

(linted_rlsc_id, node_id) 행에 semantic · style · 판을 둔다. 린트본을 건드리지 않고, 판별 재기록과 부분 갱신이 쉽다.

읽을 때 노드 id 조인이 든다. 새 테이블이라 DB 규약과 코드 오너 승인을 거친다.

2 / 4

IIS 실행 위치를 옮기는 이유

IIS 가 DO 를 자른 뒤 조각마다 돌면, 의미는 이미 잘린 조각에 덧붙을 뿐 구조를 정하지 못한다. 린트 직후 페이지 전체에서 경계를 먼저 정하고, 그 경계로 DO 를 자른다.

지금

IIS 는 PIPELINE_STEPS 밖 배치 · 입력은 이미 만든 DO 하나의 크롭 + 그 서브트리
Structuriser
Linter페이지 RLSC
DO 추출레이아웃 컨테이너 서브트리마다 한 행
본선 밖
IISDO 크롭 하나씩
iis_semantic_componentdesign_object_id 키

comp_frame ← design_objects 와 iis_semantic_component 두 곳을 따로 읽어 맞춘다

변경안 · Go

의미가 DO 경계를 정한다
Structuriser
Linter페이지 RLSC
페이지 IIS장 전체 · 묶음 → 경계 → 속성
RLSC 증분 저장linted_rlsc_id + node_id
DO 추출경계 기준

comp_frame ← RLSC 증분 한 곳을 노드 키로 읽는다

Hold 일 때

순서는 그대로 · 결과만 같은 자리로 투영
Linter페이지 RLSC
DO 추출컨테이너마다
DO IIS지금과 같음
페이지 노드 id 로 투영같은 증분 자리에 쓴다

스키마는 Go · Hold 어느 쪽이든 같다. 위치 결정이 스키마 일정을 막지 않는다.

근거 셋

① 지금의 visual summary 추출기는 RLSC 의 그룹 판단에 종속된다

DO 는 RLSC 의 레이아웃 컨테이너 서브트리마다 하나씩 잘리고, IIS 는 그 DO 하나의 크롭과 서브트리만 보고 의미를 붙인다. 그래서 의미 단위는 RLSC 가 컨테이너를 어떻게 묶었는지를 넘지 못한다.

그런데 RLSC 는 유형(이 묶음이 Steps 인가 Versus 인가), 병치(나란한 카드가 한 세트인가), 위성(제목 · 장식이 어느 본체에 딸리는가)을 고려하지 않고 노드를 묶는다. 이 판단은 IIS 가 장 전체를 볼 때만 할 수 있다.

② 지금의 DO 추출은 주연과 조연을 가르지 못한다

주연은 디자이너가 의도적으로 페이지 전면에 디자인한 컴포넌트, 조연은 다른 컴포넌트를 보조하려고 디자인한 컴포넌트(작은 TIP · 포인트 바 · 카드 속 머리글 등)다. 컨테이너로 자르면 둘 다 똑같이 독립 DO 가 된다.

내용시각화는 주연 컴포넌트 위주로 먼저 매칭되는 것이 타당하다(공급 원칙 — 자주 찾는 시각화는 디자이너가 주연으로 만든 컴포넌트로 채운다). 변경안은 조연을 독립 DO 로 세우지 않고 가장 가까운 주연의 satellite 로 붙인다(4절).

358 / 614 행

강조 한 문장을 찾는 HighlightedMessage 질의에, 다른 카드 안의 「제목 + 설명」 칸 DO(조연)가 매칭됐다(58%). 글은 하나인데 자리는 둘이라 절반에 빈 자리가 남았다.

near 987

변경안 2천 장에서 조연 덩어리를 가장 가까운 주연에 붙인 satellite 수(전체 satellite 귀속의 28%). 예: 1339293 「ポイント」 바 → ProblemSolution 의 satellite.

③ 자체모델은 레이아웃 단위다 — 데이터 준비도 지금부터 레이아웃 단위여야 한다

우리는 RLSC 구조 + visual summary 구조 + 스타일 정보를 통합해 추출하는 자체모델로 나아간다(로드맵 02 「RLSC + Role + Semantic Component + Style → 자체 DSL」, STAGE 04). 이 모델은 필연적으로 레이아웃 한 장을 단위로 처리한다.

그렇다면 그 데이터를 준비하는 지금도 visual summary 정보를 레이아웃 단위로 추출해야 한다. DO 조각마다 붙인 의미는 한 장의 문서로 읽으려면 다시 맞춰야 하고, 나중에 단위를 바꾸면 그동안 쌓은 자료를 다시 뽑아야 한다.

2,000 대 28,387

2천 장 기준 호출 수 — 페이지 2,000 회 대 DO 행 28,387. page-v1.6.1 실측은 장당 약 $0.003 이다.

style 자리 없음

노드 단위 style 을 붙일 공식 자리가 없다(레이아웃 단위 layout_style_metadata 뿐). 통합 RLSC 증분이 그 자리를 연다(1절).

3 / 4

수정 후 평가 결과 — 최근 원문 400

공급(DO 풀)만 바꾼 비교에서 경계 기준 DO(B)는 judge BAD 를 24.4% → 20.9% 로 낮추고 규약 카드 다섯 장을 개선했다. Q1 · Q2(R6 제외) · J3 원값을 통과했고, 남은 것은 사람 판정이다.

3.1 요약

A 운영 2.7

컨테이너마다 DO, DO 마다 IIS, 운영 유효성 · GC.

B 페이지 IIS page-v1.6.1

경계 기준 DO, 유지안 거름(구현 전 결정 4).

A · B 는 생성 · 검색 · 대치 · judge 의 코드와 프롬프트가 같고, 검색 풀(DO 공급)만 다르다. 코드는 iui main@8aede8d19, judge 다섯 축도 같다. 생성은 운영 로그 결과를 재사용해 생성 차이가 없다.

판정선은 판정 기준 기록 4 · 5절.
항목값
질의운영 최근 원문 400, 생성 결과 재사용
풀파일럿 2천 레이아웃(seed 20261102). 운영 풀보다 작아 운영 수치와 직접 비교하지 않는다
표본A · B 그림이 다른 자리 1,000쌍(원문 330)
구간원문 군집 부트스트랩 4,000회 95%
judge묶음 yaml 8 · 다섯 축 · rep 1 · 정본 총평 규칙
판정선뜻B
Q1기본 품질 카드 하나 이상 개선통과 R4 · E3 · R7 · D8 · D4
Q2나머지 카드 B − A 구간 상한 ≤ +2.0%p통과 R6 은 이 표본에서 판정력이 없어 제외
J3사람 판정으로 오판 보정한 BAD 상한 ≤ +2.0%p원값 통과 · 보정은 사람 판정 대기
H2블라인드 비교에서 A 우세가 유의하지 않음사람 판정 대기

R6(순위 역전)을 왜 뺐나. 같은 그림 재판정의 흔들림 반폭은 1.4%p 인데 A 대 B 비교의 반폭은 4.0 – 4.7%p 라, 참 차이가 0이어도 「상한 ≤ +2.0%p」를 통과할 확률이 12 – 16%다. A 원문을 반으로 나눈 A 대 A 비교도 20회 중 1회만 통과했다. R6 악화는 경계가 아니라 제목 없는 표 DO 가 표 질의 1위를 몰아 받는 데서 나오고, DO 를 걸러도 다음 표가 그 자리를 잇는다 — 검색 쪽 과제로 둔다제안.

다음. 사람 판정 100쌍(H1 40 · H2 60)으로 J3 보정과 H2 를 확정한 뒤 Go / Pilot / Hold 를 정한다(MOR-2925, 11/7). 평가 비용은 $118.73 이다.

3.2 DO 구성 비교

B 는 DO 가 30% 적고, DO 하나에 서로 다른 유형이 붙던 경우가 548 → 9 로 사라졌다.

같은 2천 장 풀. 운영 DB 읽기만, 비용 0. 병치 = 한 장 안에서 나란한 카드 · 같은 모양 세트를 한 묶음으로 본 관계(Juxtaposition 296장 · set 155장, 겹침 제외 409장). A 는 DO 크롭마다 따로 판단해 장 안 병치를 보지 않는다.
지표AB
검색 풀 DO · frame3,882 · 4,8842,709 · 2,736
장당 DO 평균 · 중앙값1.94 · 21.35 · 1
DO 하나에 서로 다른 유형이 붙음5489
병치 컴포넌트로 판단된 장판단 없음20.5% (409 / 2,000)
  • A DO 3,882 중 30.5% 는 B 의 더 큰 DO 안으로 들어갔다(HighlightedMessage 는 62.5%).
  • 병치 부모 405 는 풀에 남았지만 상위 10 에 19번만 나온다(A 에서는 같은 DO 가 List 등으로 달려 154번). 부모를 Unclassified 로 다는 관계 라벨 탓이고, 긍정 매칭은 다음 판 과제다.

예시 — 같은 장에 그린 A · B 의 DO 루트 상자

A DOA 칸 DO (긴 점선) B leafB 병치 부모 (긴 점선)B 포함 부모 (짧은 점선)B satellite (가는 점선)

3.3 judge 비교

총평 BAD 는 24.4% → 20.9%(−3.5%p, 구간 −7.1 – +0.2)다. 구조 · 내용 대치 PERFECT 가 크게 오르고, 디자인 완결성 BAD 는 구간 전체가 0 아래다.

1,000쌍PERFECTACCEPTABLEBADBAD 비율
A38137524424.4%
B45134020920.9%
B − A−3.5%p (−7.1 – +0.2)

쌍 승패: B 나음 321 · 같음 437 · 나쁨 242.

BAD 비율 차이 B − A (%p) · 점 = 차이, 선 = 95% 구간

차이 0
judge 총평과 다섯 축의 BAD 비율 차이와 구간

0 왼쪽이 B 가 나은 쪽이다.

축A BADB BADB − A (구간)A PERFECTB PERFECT쌍 나음 · 나쁨
judge 는 흔들린다. A 와 똑같은 그림 239장을 다시 판정했더니 총평 일치 50% · BAD 여부 일치 65% 였다. rep 1 judge 의 ±3%p 차이는 이 흔들림 안에 든다. 그래서 판정은 규약 카드와 사람 판정에 더 기댄다. 아래 질의 예시도 등급 수가 아니라 그림과 근거 문장으로 읽는다.

예시 — 질의 3개의 A · B 상위 5

judge 는 A · B 그림이 다른 자리만 판정했다. 그래서 상위 5 중 일부는 「판정 안 함」이다. 판정된 그림을 누르면 축별 등급과 근거 문장이 펼쳐진다. 질의 원문은 노출 허락을 받았다.

3.4 기본 품질 카드 비교

다섯 장(R4 · E3 · R7 · D8 · D4)은 구간 전체가 0 아래로 개선이고, 나머지는 +2.0%p 상한 안이다. R6 만 상한을 넘지만 이 표본에서 판정력이 없어 참고로 둔다.

결함률 차이 B − A (%p) · 점 = 차이, 선 = 95% 구간

차이 0Q2 상한 +2.0%p
기본 품질 카드별 결함률 차이와 구간

구간이 있는 카드만 그렸다. 속이 빈 점(R6)은 판정력 없음 · 참고.

카드무엇ABB − A (구간)

LLM 카드는 3회 최빈, 규칙 카드는 규칙 정답. D4 개선의 일부는 B frame 에 제목 자리가 줄어서다(no_slot 438 → 674). D2 · D3 은 측정 도구가 「시각화 종류」 1군 장을 다른 YAML 몫과 비교하던 오류를 고친 값이다.

4 / 4

위치 말고 무엇을 바꾸었나

4.1 구성 비교 — 운영 대 변경

단계운영 A (2.7)변경 B (page-v1.6.1)
입력DO 하나의 크롭 그림 + DO 서브트리. DO 는 이미 파이프라인이 컨테이너 단위로 잘라 둠레이아웃 린트 RLSC 전체(전경 기준) + sheet + 장 그림 + 정의기 페이지 역할
1단계없음 — DO 나눔이 묶음을 대신한다묶음: 의미로 함께인 노드 집합과 묶음 사이 관계(포함 · 병치 · 세트)
2단계경계 v12.4: DO 안에서 경계 노드 + 유형. 경계는 core 만이라 그 밖은 기록 없이 버린다경계: 묶음마다 유형 → 그 유형 슬롯으로 core. 나머지는 코드가 satellite desc/deco 로 기록한다
3단계속성 v8 (경계 노드마다)속성 v8 그대로 (core 마다)
코드 검사경계 출력 계약 검사 (DO 하나 안)묶음 · 경계 계약 검사, 반복 카드가 쪼개지면 다시 묻기, 글 없는 묶음 지움, 세트 위 머리 블록 예외, satellite 귀속(tree · box · near)

v12.4 도 「경계는 core 만」이라 satellite 를 빼는 것은 같다. 다른 점은 B 가 뺀 것을 satellites 로 남긴다는 것이다.

4.2 satellite — 경계 밖 딸림 기록

무엇인가

core 밖에 있지만 그 묶음에 딸린 노드다. desc = 글(Text), deco = 그 밖(SVG · Image). 경계에는 넣지 않고 따로 적는다.

유형이 정한 뒤 가른다

core 와 satellite 는 유형 슬롯으로 가른다. 같은 제목도 LongForm 이면 title 슬롯이라 core, 슬롯이 없는 유형 · 묶음 밖이면 satellite 다(아래 1376230 · 1521198).

어디에 딸리나 — 위에서부터 차례로

tree가장 가까운 공통 묶음 조상
box묶음 밖이면 그 노드를 상자로 품는 가장 작은 묶음
near그래도 남은 작은 TIP · 포인트 바 · 하단 박스 → 상자 빈틈이 가장 작은 본체 (코드 규칙)
페이지제목 영역 · 배경 · 장식 · 페이지 제목 블록
파일럿 2천 장 · page-v1.6.1 iis 행 3,151. 출처 vault 22 문서 7절 · val200 재판정 기록.
수치값읽는 법
행당 satellite desc · deco0.37 · 0.74p90 은 1 · 2. 행 대부분은 satellite 가 없거나 한두 개다
near 로 붙은 몫28%satellite 노드 3,520 중 987. 주인공이 아닌 강조를 버리지 않고 본체에 붙인 몫이다
satellite 가 묶인 frame14.4% → 19.0%A → B. frame 빌더(iui)가 frame 안에 붙인 칸을 센 값이라 IIS satellite 효과로 읽지 않는다
HighlightedMessage 리프 (val200)18 → 8v1.5 → v1.6(주인공 기준) 비교다. 줄어든 12장 중 10장이 v1.6 쪽이 맞았다

4.3 같은 장 세 장 — A 와 B 의 추출

A 경계 (v12.4) A DO 크롭 (경계보다 클 때) B core satellite desc (글) satellite deco (장식) 페이지 satellite (1점 쇄선 · 굵게 desc · 가늘게 deco)

포인트 바가 독립 DO 에서 본체의 near satellite 로

layout 1339293
layout 1339293 썸네일 위 A 운영 IIS 경계 상자 4개(주황)
A운영 2.7 · DO 마다 v12.4 경계
layout 1339293 썸네일 위 B core 상자 1개(파랑)와 satellite 상자(회색 점선 · 페이지는 자주 쇄선)
Bpage-v1.6.1 · core · satellite
A
HStack_0 Unclassified · Group_2 Unclassified (DO 루트 Group_3 · 경계 밖 3노드 버림) · Group_5 Unclassified (DO 루트 Group_6 · 경계 밖 3노드 버림) · HStack_1 HighlightedMessage (DO 루트 Group_8 · 경계 밖 1노드 버림)
B
HStack_0 ProblemSolution core + satellite 5노드(near) · 페이지 satellite desc 2(「どんな課題があったか?」, 「課題と原因を一文ずつ整理します。」) · deco 2

바뀐 점 — A 는 「ポイント」 바를 HighlightedMessage DO 로 따로 세우고(바 배경은 버림) 두 카드를 칸 DO 로 겹쳐 잘랐다. B 는 HStack_0 하나를 ProblemSolution core 로 잡고, 「ポイント」 바 5노드를 near satellite 로 그 본체에 붙였다.

제목 · 배경 · 구분선이 페이지 satellite 로

layout 1521198
layout 1521198 썸네일 위 A 운영 IIS 경계 상자 2개(주황)
A운영 2.7 · DO 마다 v12.4 경계
layout 1521198 썸네일 위 B core 상자 1개(파랑)와 satellite 상자(회색 점선 · 페이지는 자주 쇄선)
Bpage-v1.6.1 · core · satellite
A
HStack_1 Steps · VStack_2 Unclassified
B
HStack_1 Steps core · 페이지 satellite desc 1(「How It Works」) · deco 4

바뀐 점 — A 는 Steps DO 에 첫 칸 DO(Unclassified)가 겹쳤고, 제목 「How It Works」 · 배경 · 구분선은 어느 IIS 행에도 남지 않았다. B 는 Steps core 하나만 두고, 그 다섯 노드를 페이지 satellite(desc 1 · deco 4)로 기록했다.

LongForm 의 제목은 core 에 남는다

layout 1376230
layout 1376230 썸네일 위 A 운영 IIS 경계 상자 1개(주황)
A운영 2.7 · DO 마다 v12.4 경계
layout 1376230 썸네일 위 B core 상자 1개(파랑)와 satellite 상자(회색 점선 · 페이지는 자주 쇄선)
Bpage-v1.6.1 · core · satellite
A
Group_1 LongFormTextLayout
B
Group_1 LongFormTextLayout core · 페이지 satellite desc 0 · deco 3

바뀐 점 — 경계 · 유형 · core 는 A 와 B 가 같다 — LongForm 은 title 파라미터가 있어 제목 「Abstract」가 core(label)다. B 는 경계 밖 사진 · 장식 3개를 페이지 deco 로 기록했다. 1521198 의 제목이 페이지 satellite 인 것과 대비된다.

4.4 1339293 단계별 입출력

LLM 출력은 회차 기록의 원문이고, 코드 단계는 그 결과를 그대로 옮겼다. 노드 id 옆 # 주석은 그 노드의 글 또는 type 이다.

A운영 산출DO 4개 · v12.4 경계 · 경계 밖은 버림
# A 운영 — DO 마다 크롭 + DO 서브트리를 입력으로 경계 v12.4 → 속성 v8
# 운영 iis_semantic_component 읽기 전용 SELECT(tools/a_iis_rows.jsonl). 경계 밖 노드는 어느 행에도 없다
- design_object_id: 13949728
  do_root: HStack_0
  node_id: HStack_0  # 경계
  categories: [Unclassified]
  boundary_extractor_version: boundary-v12.4
  property_prompt_version: null  # Unclassified 는 속성 없음
- design_object_id: 13949729
  do_root: Group_3
  node_id: Group_2  # 경계 — DO 루트보다 안쪽
  categories: [Unclassified]
  boundary_extractor_version: boundary-v12.4
  property_prompt_version: null  # Unclassified 는 속성 없음
  # DO 안 · 경계 밖(기록 없이 버림):
  #   c920ba6a-21b6-42a8-b7f3-91f689443deb  (SVG · Element.Decoration)
  #   c95e1e3d-a611-4bb2-a560-7f91e5998ee5  (SVG · Element.Background)
  #   63f6fd8b-ac8b-48b8-90a8-54d064174c08  (SVG · Element.Decoration)
- design_object_id: 13949733
  do_root: Group_6
  node_id: Group_5  # 경계 — DO 루트보다 안쪽
  categories: [Unclassified]
  boundary_extractor_version: boundary-v12.4
  property_prompt_version: null  # Unclassified 는 속성 없음
  # DO 안 · 경계 밖(기록 없이 버림):
  #   3798a5df-e751-491c-82f6-024c0ebdb162  (SVG · Element.Decoration)
  #   04bdc078-13d2-44a5-9cc4-04363cf2b6e2  (SVG · Element.Background)
  #   dd1abb2c-ed5a-4573-8dcb-87406da0224e  (SVG · Element.Decoration)
- design_object_id: 13949737
  do_root: Group_8
  node_id: HStack_1  # 경계 — DO 루트보다 안쪽
  categories: [TextBasedCommunication_HighlightedMessage]
  boundary_extractor_version: boundary-v12.4
  property_prompt_version: property-v8
  structure:
  - id: VStack_3
    items:
    - 8594d852-caec-4dde-8823-3e49a33afe67  # 課題を明確にし、原因を特定することで、次の改善につなげます。
    label: fc5609ee-ef40-467e-a7f8-a7b2c26c24a6  # ポイント
  # DO 안 · 경계 밖(기록 없이 버림):
  #   3b461c05-7573-4c15-8458-07a0fd4e78d2  (SVG · Element.Background)
입력린트 RLSC 전체노드 38개 · id · type · role · 글만
# 입력 — 린트 RLSC 전체 · linter_results.id = 2169919 (layout 1339293)
# 실제 입력에는 position · 폰트 · sheet · 장 그림이 더 있다. 여기서는 id · type · role · 글만 남겼다.
id: Group_9
type: VStack
role: Role.Page.Content
children:
- id: Group_0
  type: Group
  role: Role.LayoutContainer.Title
  children:
  - {id: d8d8461c-8ee3-4bc7-8fbb-5d2a29871c8c, type: SVG, role: Role.Element.Background}
  - {id: 44dbc915-357f-45bd-83b6-fab33d04fba2, type: SVG, role: Role.Element.Decoration}
  - id: VStack_0
    type: VStack
    role: Role.LayoutContainer.Title
    children:
    - {id: 6e9c2028-a4c5-4047-badf-4c7938313341, type: Text, role: Role.Element.Title, text: "どんな課題があったか?"}
    - {id: 1cbde986-2d75-4a62-a64d-f21493ad4f15, type: Text, role: Role.Element.Subtitle, text: "課題と原因を一文ずつ整理します。"}
- id: HStack_0
  type: Group
  role: Role.LayoutContainer.Description
  children:
  - id: Group_3
    type: Group
    role: Role.LayoutContainer.Description
    children:
    - {id: 63f6fd8b-ac8b-48b8-90a8-54d064174c08, type: SVG, role: Role.Element.Decoration}
    - id: Group_1
      type: Group
      role: Role.LayoutContainer.Decoration
      children:
      - {id: c95e1e3d-a611-4bb2-a560-7f91e5998ee5, type: SVG, role: Role.Element.Background}
      - {id: c920ba6a-21b6-42a8-b7f3-91f689443deb, type: SVG, role: Role.Element.Decoration}
    - id: Group_2
      type: VStack
      role: Role.LayoutContainer.Description
      children:
      - {id: a4fefdf2-c8b0-4e20-a123-dcc69af0a93d, type: Text, role: Role.Element.Subtitle, text: "PROBLEM"}
      - id: VStack_1
        type: VStack
        role: Role.LayoutContainer.Description
        children:
        - {id: 7f75938b-264c-43b7-a8d6-8710a30854a3, type: Text, role: Role.Element.Title, text: "課題"}
        - {id: 32df860f-52ca-4e30-8a49-9ce321d33768, type: Text, role: Role.Element.Description, text: "目標達成を / 妨げた課題"}
  - {id: 4f865940-c6a2-403d-a667-58d63ac6b68c, type: SVG, role: Role.Element.Separator}
  - id: Group_6
    type: Group
    role: Role.LayoutContainer.Description
    children:
    - {id: dd1abb2c-ed5a-4573-8dcb-87406da0224e, type: SVG, role: Role.Element.Decoration}
    - id: Group_4
      type: Group
      role: Role.LayoutContainer.Decoration
      children:
      - {id: 04bdc078-13d2-44a5-9cc4-04363cf2b6e2, type: SVG, role: Role.Element.Background}
      - {id: 3798a5df-e751-491c-82f6-024c0ebdb162, type: SVG, role: Role.Element.Decoration}
    - id: Group_5
      type: VStack
      role: Role.LayoutContainer.Description
      children:
      - {id: ca07da1d-34db-45b1-86be-99d311d987f8, type: Text, role: Role.Element.Subtitle, text: "CAUSE"}
      - id: VStack_2
        type: VStack
        role: Role.LayoutContainer.Description
        children:
        - {id: e4fcdda7-9361-496c-a86f-346cc8557122, type: Text, role: Role.Element.Title, text: "原因"}
        - {id: 78db43be-b00e-4615-acd1-5d99e9a936b4, type: Text, role: Role.Element.Description, text: "課題が起きた / 主な原因"}
- id: Group_8
  type: Group
  role: Role.LayoutContainer.Highlight
  children:
  - {id: 3b461c05-7573-4c15-8458-07a0fd4e78d2, type: SVG, role: Role.Element.Background}
  - id: HStack_1
    type: HStack
    role: Role.LayoutContainer.Description
    children:
    - id: Group_7
      type: Group
      role: Role.LayoutContainer.Decoration
      children:
      - {id: 19627b8e-bdd1-4297-bc05-8346bbe06101, type: SVG, role: Role.Element.Background}
      - {id: 365dc53c-07a6-400d-8571-bd3d7426ed7c, type: SVG, role: Role.Element.Decoration}
    - id: VStack_3
      type: VStack
      role: Role.LayoutContainer.Description
      children:
      - {id: fc5609ee-ef40-467e-a7f8-a7b2c26c24a6, type: Text, role: Role.Element.Title, text: "ポイント"}
      - {id: 8594d852-caec-4dde-8823-3e49a33afe67, type: Text, role: Role.Element.Description, text: "課題を明確にし、原因を特定することで、次の改善につなげます。"}
1단계묶음 (LLM)묶음 하나 — HStack_0
# 1단계 P1 묶음 — LLM 출력 원문(run.attempts.p1[-1].raw)
# 입력: 위 트리 + 고정 묶음(격자 · 페이지 역할)
groups:
- {id: g1, root: HStack_0, parent: null}
2단계경계 (LLM)ProblemSolution · core HStack_0
# 2단계 P2 경계 — LLM 출력 원문(run.attempts.p2[-1].raw)
# 입력: 트리 + 1단계 묶음 + 페이지 역할. 묶음마다 유형을 고르고, 그 유형 슬롯으로 core 노드를 정한다
boundaries:
- {group: g1, category: ReasoningStructure_ProblemSolution, core: HStack_0}
relations: []
2단계satellite (코드)near 5노드 · 페이지 4노드
# 2단계 코드 — core 밖 Element 를 satellite 로 가른다(run.groups · run.page_satellites)
# Text → desc, 그 밖 → deco. via: tree = 묶음 서브트리 · box = 상자 포함 · near = 가장 가까운 본체(결정 2′)
groups:
- id: g1
  core: HStack_0
  category: ReasoningStructure_ProblemSolution
  satellites:
    desc:
    - fc5609ee-ef40-467e-a7f8-a7b2c26c24a6  # ポイント
    - 8594d852-caec-4dde-8823-3e49a33afe67  # 課題を明確にし、原因を特定することで、次の改善につなげます。
    deco:
    - 3b461c05-7573-4c15-8458-07a0fd4e78d2  # SVG
    - 19627b8e-bdd1-4297-bc05-8346bbe06101  # SVG
    - 365dc53c-07a6-400d-8571-bd3d7426ed7c  # SVG
  satellite_via: {near: 5개}  # 노드마다 값, 여기선 셈
page_satellites:
  desc:
  - 6e9c2028-a4c5-4047-badf-4c7938313341  # どんな課題があったか?
  - 1cbde986-2d75-4a62-a64d-f21493ad4f15  # 課題と原因を一文ずつ整理します。
  deco:
  - d8d8461c-8ee3-4bc7-8fbb-5d2a29871c8c  # SVG
  - 44dbc915-357f-45bd-83b6-fab33d04fba2  # SVG
3단계속성 v8 (LLM)칸 2개 — 課題 · 原因
# 3단계 P3 속성 — 운영 속성 프롬프트 v8 그대로(run.properties)
# 입력: core 노드 + 유형. 출력: params + structure map(칸 → 노드 id)
- nodeId: HStack_0
  category: ReasoningStructure_ProblemSolution
  properties: {}
  structure:
  - id: Group_3
    label: 7f75938b-264c-43b7-a8d6-8710a30854a3  # 課題
    items:
    - 32df860f-52ca-4e30-8a49-9ce321d33768  # 目標達成を / 妨げた課題
  - id: Group_6
    label: e4fcdda7-9361-496c-a86f-346cc8557122  # 原因
    items:
    - 78db43be-b00e-4615-acd1-5d99e9a936b4  # 課題が起きた / 主な原因
결과최종 iis 행행 1개
# B 최종 iis 행(iis-rows.jsonl) — 행마다 core 노드 · 유형 · satellites
- design_object_id: 13949728  # do_match: root
  node_id: HStack_0
  categories: [ReasoningStructure_ProblemSolution]
  boundary_kind: leaf
  boundary_extractor_version: page-v1.6.1
  property_prompt_version: property-v8
  satellites: {desc: 2개, deco: 3개}
  satellite_via: {near: 5개}
# 페이지 satellite 는 지금 iis 행에 실리지 않는다(run.page_satellites 에만 있음 · 저장 자리 미정)

프롬프트 전문

주제별 원문 대조(줄 번호 포함)는 3편 8절에 있다. 전문은 원본 그대로다. 운영 v12.4 는 DB 행과 md5 가 같다. 속성 v8 은 A · B 공통이다.

4.5 바꾼 것 9가지

입력 단위만 바꾼 것이 아니다. 경계 · 유형 판단을 아홉 군데 고쳐 gold 22장 중 19장이 맞고, 22장 모두 3회 같은 답을 낸다. 운영 경계 프롬프트 v12.4 원문과 DB 행은 고치지 않았다 — 새 판은 page-v1.x 로 따로 만들었다. 속성 프롬프트는 운영 v8 그대로다.

추출 구조

세 단계 추출

① 묶음(의미로 함께인 노드 + 관계) → ② 경계(묶음마다 유형 → 그 유형 슬롯으로 core) → ③ 속성(properties + structure map).

묶음과 유형 · core 판단이 한 번에 섞이던 것을 갈랐다.

satellite

경계 밖 딸림 글 · 장식(desc · deco)을 가장 가까운 공통 묶음 조상에 붙인다. 같은 제목도 LongForm 이면 core, 다른 유형이면 satellite.

제목 · 장식이 core 에 섞이거나 버려지지 않는다.

주인공 기준

크고 중심인 강조만 독립. 작은 TIP · 메모 · 포인트 바는 가장 가까운 본체의 satellite(코드 규칙 satellite_via=near 포함).

2천 장 List −146 · HighlightedMessage −121.

포함 · 병치 · 다중 표

부모가 자식을 품는 포함, 나란히 놓인 병치를 관계로 내고 DO 에도 반영한다. 표가 여럿이면 표마다 경계 하나.

표 · 카드 묶음의 부모가 Unclassified 하나로 남던 것을 고쳤다.

조각 색인

차트는 격자 하나마다 경계 하나. 같은 유형 반복을 하나로 묶지 않고, 세트 복원은 검색 쪽 조합 가중치로 한다.

파이 4개 장에서 Pie 가 다섯 번 나던 중복을 없앴다.

판단 조건

숫자 구동 차트만 진짜 격자

Pie · Bar · LineArea 등 숫자 차트만 sheet ChartItem · RLSC Chart 를 요구한다. 「진짜 격자」에서 RLSC Graph 를 뺐다.

계단 · 타임라인 · 목차를 차트로 내던 경고 11장 중 11장의 원인.

페이지 역할 4종

표지 · 목차 · 간지 · 끝장은 템플릿 정의기 값을 쓰되, RLSC 루트 role 과 같을 때만 장 전체 경계로 강제한다.

2천 장 강제 189장(어긋난 채 강제 0), 어긋난 장 161장은 따로 센다.

전용 유형 49 어휘 점검

전용 유형(Versus · QnACard · Transformation 등)을 고를 수 있는데 일반 유형을 고르는지 49 어휘 전체를 점검했다. 조건은 v12.4 glossary · manifest 에서 옮겼다.

반영 31. val200 개선 10장 · 회귀 1장.

검사

코드 검사 · 다시 묻기

반복 카드가 줄별로 쪼개지면 다시 묻고, 글 없는 빈 묶음은 지운다. 세트 위 머리 블록(제목 + 설명)은 예외로 둔다.

프롬프트로 막지 못하는 구조 오류를 코드로 막는다.

판별 결과 — gold 22장 × 3회

판gold 22장 일치(3회)비고
page-v1.53회 일치 20 (다수결 21)파일럿 2천 장의 판
page-v1.617정의기 강제로 3장, 머리 블록 검사로 2장 새로 틀림
page-v1.6.119 · 22장 모두 3회 같은 답위 다섯 중 둘(1425583 · 1445596) 회복

남은 오류는 1390272(LongForm 으로 묶음) · 1376128(이미지 자리 안내문을 강조로 독립)이다. 정의기는 Content, RLSC 는 Opening 인 표지 장(1321078)을 어떻게 판단할지와 병치 부모 긍정 매칭은 다음 판 과제다. 2천 장 재실행 비용은 $5.91 이다.