id: P2
version: 5
bundle: index
name: core 글이 어느 자리에도 묶이지 않음
gold: false
status: fix
unit: component
sample:
  conditions:
  - O
  - O_v10
  - a1
  - a
  - c
  scope: top10
question: |
  경계 안(frame_tree)의 글 노드(type Text, 글이 비지 않은 것) 가운데 아래 둘에 드는 노드 수를 센다.
  참조된 자리 = frame_iis 의 유닛 필드 노드, dataset 칸 노드(표 자리 grid 노드가 있으면 그 노드 아래 글 전부), relations 의 노드, satellites 의 title, subtitle, desc 노드(sheetId). frame.nested(자식 경계 Frame) 안의 같은 자리도 참조된 자리다.
  ① 잔여 core 글: frame_iis 의 inside_unbound_text 에 올라 있고, 어느 유닛의 항목 자리(유닛 id 노드 아래) 안에 있는 글. 유닛 항목 자리 밖의 role Title, Subtitle 글(컴포넌트 제목, 묶음 표제, 행 머리)은 자리가 없는 위성 성격이라 세지 않는다.
  ② 목록 누락 글: 참조된 자리, inside_unbound_text, outside_text, preserve_text_nodes 어디에도 없는 글. 원문이 임시 문구인 글은 세지 않는다.
  frame_tree 의 bound_field 는 이 질의가 쓴 필드일 뿐이다. bound_field 가 null 이어도 frame_iis 에 자리가 있으면 묶인 것이다.
  둘 다 세지 않는 것: role 이 Marker, Decoration, Separator, Annotation 인 노드. 구조 토큰(숫자가 아닌 한 글자 A, B, F, Q 와 VS, TAM/SAM/SOM 같은 장식 글자). 표 자리나 표, 차트 노드 아래 글. ① 에서는 경계 안에 type Table 이나 Chart 노드가 있거나 dataset 이 matrix 면 role Title, Subtitle, Legend 글(차트 제목, 부제, 범례), categories 에 Unclassified 가 있으면 role Title, Subtitle 글(column 로컬 제목)도 세지 않는다.
  답은 ① 과 ② 를 더한 노드 수다. 하나도 없으면 0.
inputs:
- frame_tree
- frame_iis:
  - units
  - nested
  - dataset
  - relations
  - satellites
  - inside_unbound_text
  - outside_text
  - preserve_text_nodes
- result_meta:
  - categories
- spec_excerpt:
  - gate-33
  - b124-22
  - b124-50
answers:
  kind: count
  label: 묶이지 않은 노드 수
defect:
  bad_if: '> 0'
  rule_extra: unbound_core_parts
aggregate: ratio
truth:
  kind: rule
  rule: unbound_core_text_count
allowed:
- Marker, Decoration, Separator, Annotation 은 자리가 없는 것이 맞다. 세지 않는다.
- frame_iis 의 satellites(title, subtitle, desc)와 frame.nested(자식 경계)의 유닛 필드, 위성, 칸, 관계에 잡힌 글은 자리가 있는 것이다. 세지 않는다.
- 유닛 항목 자리 밖의 Title, Subtitle(컴포넌트 제목, 묶음 표제, 행 머리)이 inside_unbound_text 에 있는 것은 위성 성격이라 맞다. 세지 않는다.
- 차트 제목, 부제, 범례와 대시보드(Unclassified) column 로컬 제목은 property 에 자리가 없는 것이 맞다. 세지 않는다.
sources:
- design/content-binding-contract.md(묶이지 않은 글은 자리표시로 바뀜)
- prompts/property-v8:38-39(구조 대응을 못 찾은 필드는 빼도 된다), boundary-v12.4:31(자리가 있으면 core)
- policy/iis-boundary-gold-core-scope.md:24, 28-29(자리가 있으면 core, 컴포넌트 제목과 묶음 표제는 언제나 밖)
- iui comp-frame-shared insideResidue.ts:13-16, nodeTextPolicy.ts decideUnreplacedNode(잔여 노드는 임시 문구로 덮임)
- 19-index-cards.md §0.4(boundary 와 property 사이 빈틈)
threshold:
  basis: w
  value: null
model:
  default: gpt-6-luna
  current: gpt-6-luna
reps: 5
observe_only: false
purpose: "색인이 경계 안 글을 다루는 두 실패를 잡는다. ① 유형에 맞는 유닛 필드가 있는 core 글을 잔여(inside_unbound_text)로 둔 일: 대치가 그 노드를 임시 문구로 덮으므로 원문은 남지 않지만 유저 내용이 들어갈 자리를 잃는다(자리가 있으면 core, boundary-v12.4:31, gold-core-scope:24). ② 글 노드를 어느 목록(필드, 위성, 칸, 관계와 자식 경계 frame.nested 의 같은 자리, 잔여, outside_text, preserve)에도 올리지 않은 일: 대치가 목록에 있는 노드만 덮으므로 템플릿 원문이 그대로 남게 되어 다른 사람의 문구가 섞여 나간다(gate-33). 색인 링크의 책임이고 경계 트리와 운영 색인을 규칙으로 견준다. 비본문 role, 구조 토큰, 그리고 자리가 없는 위성 성격 글(유닛 항목 자리 밖의 컴포넌트 제목, 묶음 표제, 행 머리, gold-core-scope:28-29)은 잔여로 두는 것이 맞아 세지 않는다(관찰값으로만 남긴다). 대치가 받은 목록을 안 덮은 것은 D6, 결과에 보이는 잔존은 E3 몫이다."
changelog:
- 'v2 (2026-10-20): 거짓 양성 623 건 진단. (b) 꾸러미에 운영 자리 지도가 없어 frame_tree.bound_field=null 인 노드(위성 desc, subtitle, title 등 380 건은 frame_iis satellites 자리)를 전부 묶이지 않은 것으로 셌다. frame_iis(units, dataset, relations, satellites)와 categories 를 넣고 「참조」의 정의를 frame_iis 로 바꿨다. (a) 제외 role 네 가지와 차트 제목, 대시보드 제목 조건을 규칙과 같은 문장으로 적었다.'
- 'v3 (2026-10-20): 프롬프트 틀 수정으로 재실행(system 의 답 형식을 JSON 으로 바로잡아 user 지시와 충돌 제거).'
- 'v4 (2026-10-22): 규칙 결함 점검(12 문서). 운영 표본 250 결함 95 건 가운데 39 건이 구조 토큰(FAQ 의 F, a, Q, 상자 글자 A, B, C, VS 원)만으로 셌다. 색인은 이 글자를 원문 보존(preserve_text_nodes)으로 두고 대치 뒤에도 그대로라 결함이 아니다. 규칙의 목록 누락 몫과 E3, D6, R8 은 이미 구조 토큰을 빼는데 경계 안 몫만 빼지 않았다. 경계 안 몫에서도 빼고 질문에 적었다.'
- 'purpose 추가(10/24)'
- 'v5 (2026-10-27): 결함 정의를 좁혔다(유저 결정 10/27). (a) 참조에 frame.nested(자식 경계 Frame, 재귀)의 유닛 필드, 위성, 칸, 관계를 넣었다(iismap.op_referenced_nodes_deep, P2 전용이라 다른 카드 값은 그대로). v4 는 부모 frame 만 봐서 자식 경계 유닛 필드 글을 미참조로 셌다(O2k 목록 누락 55 단위 전부, 확인 4 건 모두 오탐). (b) 유닛 항목 자리 밖의 Title, Subtitle(컴포넌트 제목, 묶음 표제, 행 머리)은 자리가 없는 위성 성격이라 세지 않는다(gold-core-scope:24, 28-29, property-v8:38-39 는 구조 대응을 못 찾은 필드를 빼도 된다고 허용, boundary-v12.4:31 은 자리가 있으면 core). 항목 자리 = 유닛 id 노드의 하위 트리(없으면 필드 노드의 최소 공통 조상), 유닛이 없거나 애매하면 결함 아님 쪽. (c) 남는 결함을 ① 잔여 core 글(대치가 임시 문구로 덮음, insideResidue.ts:13-16)과 ② 목록 누락 글(원문이 남음)로 나눠 rule_extra unbound_core_parts 와 규칙 근거(evidence)에 기록한다. 「템플릿 원문이 그대로 남는 일」은 ② 에만 해당한다. (d) 위성 성격 잔여, 자리 없는 잔여, preserve 는 관찰값으로만 남긴다. 표, 차트 노드 아래 글은 경계 안 몫에서도 뺀다(v4 는 목록 누락 몫에서만 뺐다). O2k 결함 308 -> 63(전부 ①).'
