id: E3
version: 9
bundle: overall
name: 채워지지 않은 자리가 보임
gold: false
status: fix
unit: component
sample:
  conditions:
  - O
  - O_v10
  - a1
  - a
  - c
  scope: top10
question: |
  결과에 실제로 들어간 DO 전체(그림에 보이는 컴포넌트 전부)가 page_yaml(이 장을 만드는 데 들어간 YAML 몫) 내용으로 채워져 있는가, 빈 자리(임시 문구, 빈 칸)나 원본 템플릿의 글, 템플릿 데이터가 보이는가?
  범위: 그림은 DO 전체가 1920x1080 가운데 놓인 것이고, 보이는 것은 전부 결과에 들어간 부분이다. 경계 밖 = outside_nodes 의 노드(같은 DO 에 함께 들어간 나머지), 경계 안 = 그 밖의 부분(binding 이 사용자 글을 넣은 질의 자리)이다.
  판정은 아래 세 단계를 이 순서대로 기계적으로 한다.
  frame_tree 는 경계 안 노드의 대치 전 템플릿 원문이다. binding 에 sheet_id 가 있는 노드와 그 아래 노드(parent 를 따라 이어진 자식, 예: 표의 칸)는 사용자 글로 바뀐 자리라 frame_tree 에 적힌 그 글(「A열」, 「텍스트」 등)은 그림에 없다. frame_tree 는 1단계에서 쓰지 않고, (라)로 고른 글이 템플릿 원문인지 확인할 때만 쓴다.
  1단계 그림 읽기: 그림에서 글을 직접 읽어 「보이는 글」을 모은다. 입력 자료(outside_nodes 의 template_text 등)에 적힌 글은 그림에서 같은 글을 읽었을 때만 보이는 글이다. 자료에만 있고 그림에서 읽지 못한 글은 없는 글이다.
  2단계 출처 판정: 보이는 글마다 위에서부터 먼저 맞는 출처 하나를 고른다.
   (가) 사용자 글: binding 의 text 나 page_yaml 에 있는 글이다(줄바꿈, 띄어쓰기, 잘림, 일부만 보임, 「label:」 같은 필드 접두는 차이로 보지 않는다). 영어, 일본어 등 외국어 글과 숫자, 기호('-', '****', 단위)도 page_yaml 이나 binding 에 있으면 사용자 글이다. outside_nodes 에서 now 가 null 이 아닌 노드는 바뀐 자리이고 now 의 글은 사용자 글이다.
   (나) 임시 문구: placeholder_table 의 문구다(「제목을 입력해주세요.」, 「제목 입력」, 「제목」, 「부제목 입력」, 「설명을 입력해주세요.」, 「설명」, 「내용」 등). 임시 문구는 템플릿 글이 아니다. 어느 자리에 있는지로 3단계에서 다룬다.
   (다) 구조 토큰: Marker 의 순번(01, 02, 10, 11, STEP 1), 한 글자나 짧은 이름표(A, B, C, F, A, Q, VS, O, X), 기호, 장식이다. 이름표는 page_yaml 항목 수를 세어 맞춰 본다. 이름표 수가 page_yaml 항목 수와 같고 의미가 맞으면 결함이 아니고, 어긋나면 템플릿 글(라)이다(예: FAQ 가 아닌 내용에 F, A, Q 는 어긋남. 항목 하나에 A, B, C 는 어긋남. 항목 셋에 A, B, C 는 맞음). 순번 숫자 Marker(01, 02, 10, 11)는 결함이 아니다(v7 과 같음).
   (라) 템플릿 글: (가), (나), (다) 어디에도 맞지 않는 글이다. 템플릿 안내문(「이곳에 ... 입력해 보세요」, 「샘플 이미지입니다」, 영어 안내문), page_yaml 과 다른 언어의 낱말이 붙은 marker(フェーズ1, 1 steps), 템플릿 표와 차트의 글(「기본 타이틀」, 「A항목」, 「20XX년」) 등이다. (라)로 고르기 전에 그 글을 page_yaml 과 binding 에서 다시 찾아 (가)가 아님을 확인한다.
  3단계 자리 확인:
   자리 = 위성 자리인지 본문 자리인지는 그림 모양이 아니라 slot_kind 로 정한다. frame_tree, binding, outside_nodes 의 글 노드마다 slot_kind 가 적혀 있다(색인 구조에서 기계로 정한 값). 그림의 글이나 빈 자리를 노드에 맞출 때는 frame_tree 의 box(위치, 크기)와 글(binding 의 text, 임시 문구)로 맞춘다.
    satellite(색인 위성 title, subtitle, desc. 경계 밖 satellite true 도 이것) 와 unbound_satellite(어느 자리에도 묶이지 않은 컴포넌트 제목, 묶음 표제) = 위성 자리. 임시 문구가 남아도 결함이 아니다(satellite_only, 결정 11).
    unit_field(색인 유닛 항목 필드, 표 칸과 머리) 와 unbound_core(경계 안에서 어느 자리에도 묶이지 않은 나머지 글) = 본문 자리. 그 항목의 page_yaml 몫에 내용이 있는데 빈 칸이나 임시 문구로 보일 때만 빈 자리다(유저 10/23).
    그림에서 컴포넌트 제목, 설명처럼 보여도 slot_kind 가 unit_field 나 unbound_core 면 본문 자리이고, 항목 안 제목처럼 보여도 slot_kind 가 satellite 나 unbound_satellite 면 위성 자리다. 경계 밖 노드(slot_kind unbound_core = satellite false)는 3단계가 아니라 답 (3)으로 다룬다.
   빈 자리 세기: page_yaml 항목(entity, 행)을 하나씩 세어 그 label 과 값이 그림에 보이는지 본다. 그림에 없는 page_yaml 글이 있고, 그 글이 들어갈 경계 안 본문 자리(slot_kind unit_field, unbound_core)가 빈 칸이나 임시 문구로 보이면 빈 자리다. 위성 자리(slot_kind satellite, unbound_satellite)는 page_yaml 에 그 글이 있어도 빈 자리로 세지 않는다. page_yaml 항목이 모두 그림에 보이면 나머지 항목 자리의 빈 칸과 임시 문구는 남는 자리다. 글이 길어 잘리거나 줄어 보이는 것, 다른 칸이나 줄에 합쳐 보이는 것은 그 글이 보이는 것이고 빈 자리가 아니다. body_blank 의 근거에는 그림에서 빈 칸이나 임시 문구로 보이는 자리와 거기 들어가야 할 page_yaml 글을 함께 적는다. 다음은 빈 자리가 아니다: page_yaml 에 값이 없는 칸, 남는 자리(page_yaml 항목 수보다 많은 행, 열, 카드)의 빈 칸과 임시 문구, label 만 있고 설명이 없는 항목의 설명 자리, 그림 자리의 사진 삽입 안내, 다른 장(L2 의 형제 컴포넌트, 나눠 담기의 다른 쪽) 몫의 항목이 여기 없는 것, 장식과 배경. page_yaml 은 이 장 몫만 들어 있다.
  답 고르기(위에서부터 먼저 맞는 것):
   (1) template_left: 경계 안에서 그림으로 읽은 (라) 템플릿 글이 있다.
   (2) body_blank: 경계 안 본문 자리(slot_kind unit_field, unbound_core)에 빈 자리(위 정의)가 있다.
   (3) outside_left: 경계 밖에 다음이 그림에 보인다. now 가 null 인 글 노드의 템플릿 원문 글(구조 토큰 아님), element 가 chart, table, diagram 인 노드의 템플릿 데이터(수치, 축, 범례. cells_replaced 가 true 인 표는 아니다), satellite 가 false 인 자리의 임시 문구. 근거에 종류(임시 문구 / 템플릿 원문 글 / 차트·표·다이어그램 데이터)를 적는다.
   (4) satellite_only: (1)–(3)이 없고 임시 문구가 위성 자리(slot_kind satellite, unbound_satellite)나 빈 자리가 아닌 남는 자리에만 보인다(결정 11).
   (5) complete: 임시 문구, 템플릿 글, 템플릿 데이터가 하나도 보이지 않는다.
  근거(evidence) 쓰는 법: 답을 정한 글만 「『그림에서 읽은 글』→출처(가/나/다/라), 자리(slot_kind)」를 ; 로 이어 적고 끝에 「⇒ 답」을 붙인다. complete 이면 「잔존 후보 없음 ⇒ complete」. template_left 와 outside_left 의 글은 그림에서 읽은 그대로 적는다.
inputs:
- result_thumb
- page_yaml
- binding:
  - slot_kind
- frame_tree:
  - slot_kind
- outside_nodes:
  - slot_kind
- placeholder_table
answers:
  kind: categorical
  options:
  - key: complete
    label: 완성
  - key: satellite_only
    label: 위성 자리만 비어 있음
  - key: body_blank
    label: 본문 자리 비어 있음
  - key: outside_left
    label: 경계 밖 잔존
  - key: template_left
    label: 템플릿 글 남음
defect:
  bad:
  - body_blank
  - template_left
  - outside_left
aggregate: ratio
truth:
  kind: human
allowed:
- 페이지 완성 여부(DO 밖 여백, 페이지 제목 유무)는 보지 않는다. 평가 대상은 결과에 들어간 DO 전체다.
- 위성 자리(slot_kind 가 satellite, unbound_satellite 인 컴포넌트 제목, 부제, 설명)의 임시 문구는 경계 안팎 모두 「위성 자리만 비어 있음」으로 따로 답한다. 그 자리에 임시 문구가 남는 것은 대치 규칙이 허용한다.
- 글이 아닌 장식, 배경 그림, 사진은 남은 것이 아니다.
- page_yaml 에 값이 없는 표 칸이 비어 있는 것, page_yaml 에 설명이 없는 항목의 설명 자리가 비어 있는 것은 빈 자리가 아니다.
- page_yaml 에는 이 장 몫만 들어 있다. 다른 장 몫의 항목이 여기 없다고 빈 자리로 세지 않는다.
sources:
- 22-overall-cards.md §1 E3(옛 judge agent_1, agent_2 임시 문구 규칙)
- 22-overall-cards.md §2, §3
- eval/human/PACKET_INSTRUCTIONS.md(라벨러 전제 1, 2)
- 30-human-truth-fable.md(라벨러 규칙: 위성 임시 문구 제외, 한 글자 토큰은 눈에 템플릿 글. 경계 밖 제외 규칙은 v3 에서 범위가 바뀌어 맞지 않는다)
- 37-residue-attribution.md §2.1(삽입 단위 = DO 전체), §6 제안 1
- 47-decisions-1020.md 결정 11(위성 임시 문구 결함 아님), 결정 12(구조 토큰은 어긋날 때만)
threshold:
  basis: a1
  value: null
model:
  default: gpt-6-luna
  current: gpt-6-luna
  reasoning: medium
reps: 5
observe_only: false
purpose: "유저가 받는 DO 전체에 본문 빈 자리(임시 문구, 빈 칸), 원본 템플릿 글, 경계 밖 템플릿 데이터(차트, 표의 수치와 범례)가 보이는 일을 잡는다. 이것이 보이지 않는 것은 대치 결과의 최소 조건이다(기본품질 13 1.1). 종합 결과이고 범위는 결과에 들어간 DO 전체이며(평가틀 47 결정 2, 평가틀 37 6절 제안 1), 빈 자리는 이 장의 YAML 몫에 내용이 있는 자리만 센다(유저 결정 10/23). 위성 자리와 본문 자리는 그림 모양이 아니라 색인 구조(slot_kind: 색인 위성 · 유닛 필드 · P2 v5 미결속 판별)로 가른다(유저 지적 10/27). 위성 자리 임시 문구와 항목 수에 맞는 구조 토큰은 결함이 아니고(평가틀 47 결정 11, 12), 원인 쪽은 P2(색인 미결속), D6(대치 안 덮음), R8(경계 밖 후보)이 나눠 잰다."
changelog:
- 'v2 (2026-10-20): Fable 라벨 150 단위 대비 거짓 양성 25 진단. (b) 그림이 페이지 전체라 경계 밖 차트 범례(「20XX년」)를 템플릿 글로 셈 8 건. frame_tree 와 binding 을 넣고 경계 안 정의를 적었다. (a) 위성 자리 임시 문구를 template_left 로 답함 8 건. 위성과 본문 자리를 정의하고 답 우선순위를 적었다. (b) 원문에 없는 값의 빈 칸을 빈 자리로 셈 4 건. source_text 를 넣고 「원문에 있는 내용의 자리만」을 적었다. 한 글자 구조 토큰은 라벨러 다수(3/5)대로 template_left.'
- 'v3 (2026-10-20): 범위를 경계 안에서 결과에 들어간 DO 전체로 넓혔다(37 문서 6절 제안 1, 삽입 단위 = DO 전체). 답에 outside_left(경계 밖 잔존: 템플릿 원문 글, 차트·표·다이어그램 데이터, 위성 아닌 자리의 임시 문구)를 더하고 결함으로 센다. 근거에 경계 밖 요소의 종류를 적게 했다. 입력에 outside_nodes(경계 밖 노드의 원문, 대치 뒤 글, 데이터 요소)를 더했다. 경계 밖 위성 임시 문구는 satellite_only. 사람 대신 라벨(truth-combined)은 경계 밖 제외 규칙의 옛 범위라 v3 와 범위가 다르다(e3v3-units.txt 로 다시 받는다).'
- 'v4 (2026-10-20): v3 의 허용 행동에 「Marker 등 비본문 role 의 원문은 남은 것이 아니다」가 들어가 답 고르기 (1)(marker 와 한 글자 토큰은 template_left)과 어긋났다. 허용 행동을 「글이 아닌 장식, 배경 그림, 사진」으로 좁히고 (1)에 「한 글자 토큰과 marker 낱말은 보존 허용이지만 보이면 template_left, Marker 숫자는 아니다」를 적어 경계 안 판정을 v2 와 같게 맞췄다. 범위 확장(outside_left)은 v3 그대로다.'
- 'v5 (2026-10-20): 구조 토큰(A, B, C, F, A, Q, Q, A)을 원문 항목 수와 의미에 맞으면 남은 것이 아니고 어긋날 때만 template_left 로 바꿨다(47 문서 결정 12, D6 의 구조 토큰 제외와 맞춤). 위성 자리 임시 문구는 satellite_only 로 결함이 아님을 결정 11 근거로 적었다(판정은 v4 그대로). 범위(DO 전체)는 그대로다. 사람 대신 라벨은 옛 범위와 옛 토큰 규칙 기준이라 신뢰도는 참고값이다.'
- 'v6 (2026-10-20): v5 실측에서 template_left 가 386 에서 662 로 늘었고, 늘어난 단위의 근거가 그림에 없는 frame_tree 원문(대치 전 글)을 인용한 거짓 양성이었다(예: 모든 자리가 채워진 장에서 「Tax & Succession Linkage」를 남은 글로 답함). 자료 읽는 법에 「binding 에 있는 노드의 frame_tree 원문은 남은 것이 아니다」, 「근거에는 그림에서 직접 읽은 글을 적는다」를 더했다. 판정 기준(구조 토큰 결정 12, 위성 결정 11)은 v5 그대로다.'
- 'v7 (2026-10-23): 원문 대신 이 장의 YAML 몫(page_yaml)을 받는다(유저 결정 10/23). body_blank 는 page_yaml 에 해당 내용이 있는 자리만 센다. 다른 장 몫의 항목이 없는 것은 빈 자리가 아님을 적었다.'
- 'v8 (2026-10-27): 거짓 양성 32 단위(batch3 쌍 라벨 · hold3 사람 라벨 대비, 측정기 결함 · 라벨 무결함)를 열어 오판 유형 다섯을 찾았다. (a) 그림에 없는 frame_tree · outside_nodes 원문을 보인다고 답함 약 20 건(binding 이 표 전체를 채운 자리의 자식 칸 「A열」, 「텍스트」 등). (b) 위성 임시 문구를 template_left 로 답함 6 건. (c) page_yaml 몫이 없는 남는 자리(남는 행 · 열 · label 만 있는 항목의 설명 자리)를 빈 자리로 셈 5 건. (d) 사용자 글을 템플릿 글로 봄 3 건. (e) 항목 수에 맞는 구조 토큰 · 순번 marker 를 템플릿 글로 봄 3 건. 판정 순서를 1단계 그림 읽기 → 2단계 출처 판정(가 사용자 글 · 나 임시 문구 · 다 구조 토큰 · 라 템플릿 글) → 3단계 자리 확인으로 기계화하고, 자료에만 있는 글은 없는 글, binding 노드와 그 자식은 바뀐 자리, outside_nodes now 가 null 이 아니면 바뀐 자리, 외국어 · 숫자도 page_yaml 에 있으면 사용자 글, 이름표는 page_yaml 항목 수를 세어 맞춰 보기, 항목 안 제목 · 설명 자리는 본문 자리, 빈 자리는 page_yaml 글이 그림 어디에도 없고 그 자리가 빈 칸이나 임시 문구일 때만, 근거는 「『글』→출처, 자리 ⇒ 답」 꼴로 적게 했다. 추론 강도를 low 에서 medium 으로 올렸다(반복 안정, 비용 약 +10%). 답 key 와 판정 기준(결정 2 · 11 · 12, 유저 10/23)은 그대로다. 라벨 112 단위 시드 분할(개발 68 · 검증 44) 5회: 검증 정밀도 0.607→1.0, 재현율 1.0→0.824, F1 0.756→0.903(층 가중 같음), 반복 0.991.'
- 'v9 (2026-10-27): 유저 지적 10/27. 남은 라벨 충돌은 항목 안 제목, 설명 자리가 비었을 때 body_blank(결함)와 satellite_only(결함 아님)가 갈리는 것이었고, 측정기와 라벨러가 이 자리를 그림 모양으로 위성, 본문으로 판단해서 생겼다. 위성, 본문 자리는 구조로 정해진다. 입력 frame_tree, binding, outside_nodes 의 글 노드마다 slot_kind(satellite = 색인 위성 title, subtitle, desc 와 경계 밖 satellite true, unit_field = 색인 유닛 필드, 표 칸과 그 아래, unbound_satellite = 어디에도 묶이지 않은 Title, Subtitle 로 유닛 항목 자리 밖(P2 v5 판별), unbound_core = 나머지)를 싣고(비용 0, E3 가 이름을 댄 키에만), 3단계 자리 확인을 「satellite, unbound_satellite = 위성 자리(임시 문구가 남아도 satellite_only, 결정 11), unit_field, unbound_core = 본문 자리(그 항목 page_yaml 몫에 내용이 있는데 비었을 때만 body_blank, 유저 10/23)」로 바꿨다. 1, 2단계 판정 순서, 답 key, 결정 2, 11, 12 는 그대로다.'
- 'purpose 추가(10/24)'
