심사평이 가장 자주 깎는 것은 결함이 아니라 '변화 없음'이었다 — 인물 시즌 103편 심사평 255건 전수 분류
칼라톤의 AI 인물 생성 시즌 리포트에는 표 아래에 '하이라이트'라는 칸이 있다. 그 시즌에서 점수가 가장 높았던 라운드 몇 개를 골라, 심판 모델이 그때 남긴 한국어 심사평을 그대로 싣는 자리다. 표가 숫자로 말하는 것을 여기서는 문장으로 말한다.
지금까지 이 문장들은 인용되기만 했지 세어진 적이 없다. 그래서 이번에는 문장 쪽을 셌다. 공개 리포트 103편에 실린 심사평 255건, 30,132자를 전부 꺼내 무엇을 칭찬하고 무엇을 깎는지를 기계적으로 분류했다. 질문은 하나다. 심사평이 후보를 떨어뜨릴 때, 그 문장은 무엇을 근거로 드는가.
먼저 — 하이라이트에 실리는 심사평은 어떤 문장인가
하이라이트의 선정 규칙은 취향이 아니라 코드다. 리포트 생성기(html2pdf/src/character-data-fetcher.js)는 채택된 라운드만 모아 일치율 내림차순으로 세운 뒤 위에서 세 개를 자른다. 103편 전부에서 이 규칙이 어긋나지 않았다 — 하이라이트에 실린 라운드는 항상 그 시즌 채택 라운드의 상위 3개였고, 채택 라운드가 셋에 못 미치는 시즌은 그만큼만 실렸다(3건 63편, 2건 26편, 1건 14편). 그래서 이 255건은 전부 '이긴 라운드'의 심사평이다. 진 라운드의 심사평은 리포트에 아예 실리지 않는다.
그런데 '이긴 라운드'의 심사평이라고 해서 칭찬만 있는 것은 아니다. 문장의 생김새부터 세 갈래로 갈린다. 심사평이 후보를 몇 개나 부르는지를 기준으로 가르면 이렇다.
| 장르 | 건수 | 구간 ①/②/③ | 평균 길이 | 평균 일치율 |
|---|---|---|---|---|
| 대조 평 — 후보 둘을 나란히 부른다 | 148건 (58.0%) | 55 / 59 / 34 | 134.9자 | 72.53 |
| 단일 평 — 후보 하나를 원본과만 견준다 | 21건 (8.2%) | 20 / 1 / 0 | 111.0자 | 64.05 |
| 단독 평 — 후보를 부르지 않고 결과물만 평한다 | 86건 (33.7%) | 33 / 24 / 29 | 91.2자 | 67.50 |
구간은 이 시리즈가 계속 써 온 경계다. ① 2026-08-06까지(42시즌), ② 08-07~08-22(31시즌), ③ 08-23 이후(30시즌). 8월 7일은 후보 두 개 중 한 자리가 '원본 편집'에서 '완전히 새로 생성'으로 바뀐 날이고, 그 이후 리포트의 라운드 표에 '생성' 라벨이 등장한다(앞선 칼럼에서 다뤘다).
단독 평 86건 중 73건은 1라운드다. 1라운드에는 견줄 챔피언이 아직 없으니 문장이 홀로 설 수밖에 없다. 나머지 13건은 후보를 개별로 부르지 않은 라운드로, 9건이 시즌 1~3(6월 30일~7월 1일)에 몰려 있고 두 건은 후보를 뭉뚱그려 "두 후보 모두"라고만 쓴 경우다. 남은 두 건은 시즌 4의 R9·R13인데, 이 둘은 아예 이렇게 적혀 있다 — "제공된 두 이미지는 이목구비의 형태, 피부 텍스처, 미세한 점의 위치까지 완벽히 동일합니다. 시각적 차이가 전혀 존재하지 않아 우열을 가릴 수 없습니다." 채택된 라운드의 심사평이 '두 이미지가 완전히 같다'고 적은 셈인데, 이 표현은 뒤에서 다시 만난다.
대조 평이 가장 길고(134.9자) 단독 평이 가장 짧다(91.2자) — 후보를 견주는 문장은 '무엇이 달라졌는지'를 둘 다 적어야 하기 때문이다.
결과 ① — 심사평이 지목한 승자는 147건 중 146건에서 실제 채택본과 같았다
분류에 들어가기 전에 눈금부터 맞췄다. 대조 평은 마지막에 "이미지 3이 주제에 가장 부합합니다" 같은 식으로 승자를 지목한다. 이 지목이 실제로 채택된 이미지와 같은지 확인할 방법이 리포트 안에 있다 — 하이라이트에 붙은 이미지 파일 이름이다. 파일 키에는 그 이미지가 어느 슬롯에서 나왔는지가 round-11-candA-…, round-8-candB-…처럼 박혀 있다.
대조 평 148건 중 승자를 명시적으로 지목한 147건을 파일 슬롯과 대조한 결과, 146건(99.3%)이 일치했다. 어긋난 한 건은 시즌 33 R5(2026-07-16)로, 문장은 세 번째 이미지를 최고점으로 부르는데 저장된 채택본은 두 번째 슬롯이다. 심사평이 최고로 부른 이미지와 실제로 채택되는 이미지가 갈릴 수 있는 경로는 둘이다 — 심사평과 점수가 어긋났거나, 최고점을 받은 후보가 채택 게이트의 다른 조건에서 걸러졌거나. 리포트만으로는 둘을 가를 수 없어 예외로만 적어 둔다. 다만 엔진 코드에 "심사평에서 최고라고 부른 이미지는 반드시 match_rate 최고점 이미지여야 한다 — 한쪽을 칭찬하며 다른 쪽에 더 높은 점수를 주지 말 것"이라는 조항이 있고, 이 조항은 v3.5 척도부터만 프롬프트에 붙는다(주석의 날짜는 2026-07-24). 유일한 예외가 그보다 여드레 앞선 시즌이라는 점은 적어 둘 만하다.
결과 ② — 지는 쪽은 거의 언제나 편집 후보다
승자가 확정된 147건에서 진 후보의 슬롯을 세면 그림이 한쪽으로 쏠린다.
| 구간 | 대조 평 | A 슬롯(편집)이 진 경우 | B 슬롯이 진 경우 |
|---|---|---|---|
| ① ~2026-08-06 (두 슬롯 모두 편집) | 55건 | 41건 (74.5%) | 14건 |
| ② 08-07~08-22 (B = 독립 재생성) | 58건 | 48건 (82.8%) | 10건 |
| ③ 08-23~ (B = 독립 재생성) | 34건 | 34건 (100%) | 0건 |
| 합계 | 147건 | 123건 (83.7%) | 24건 |
구간 ③에서는 편집 후보가 34전 34패다. 이 방향 자체는 새로운 발견이 아니라 어제 칼럼이 라운드 표로 확인한 사실(8월 23일 이후 편집 후보 채택 0건)의 다른 얼굴이다. 이 글이 새로 묻는 것은 그다음이다. 심사평은 그 패배를 어떤 말로 적는가.
결과 ③ — 1위 감점 사유는 결함이 아니라 '아무것도 달라지지 않았다'
대조 평을 절 단위로 잘라 진 후보를 주어로 삼는 부분만 모은 뒤, 표지 어휘로 분류했다. 한 절이 여러 표지를 가질 수 있으므로 아래 비율의 합은 100%를 넘는다.
| 감점 표지군 | 전체 147건 | 구간 ① | 구간 ② | 구간 ③ |
|---|---|---|---|---|
| 매력·주제 부합도 감소 (반감·감소·떨어짐·밋밋) | 53건 (36.1%) | 38.2% | 29.3% | 44.1% |
| 인위성·왜곡·렌더링 결함 | 47건 (32.0%) | 36.4% | 36.2% | 17.6% |
| 색·톤·입술 (창백·탈색·색온도·생기) | 45건 (30.6%) | 29.1% | 27.6% | 38.2% |
| 변화 없음·원본과 동일 | 37건 (25.2%) | 12.7% | 29.3% | 38.2% |
| 질감·선명도 | 14건 (9.5%) | 9.1% | 12.1% | 5.9% |
| 표지 없음(중립 서술만) | 16건 (10.9%) | 20.0% | 6.9% | 2.9% |
표의 네 번째 줄이 이 글의 중심이다. '변화 없음'은 결함이 아니다. 후보가 못생겼다거나 뭉개졌다는 말이 아니라, 손을 댔는데 아무 일도 일어나지 않았다는 말이다. 이 사유의 비중은 구간을 지나며 12.7% → 29.3% → 38.2%로 올라섰다. 반대로 진짜 결함을 지적하는 '인위성·왜곡' 표지는 구간 ③에서 36.2% → 17.6%로 반토막 났다. 편집 후보가 점점 더 자주 지는데, 지는 이유는 점점 덜 '나빠서'이고 점점 더 '없어서'다.
편집 후보(A 슬롯)만 따로 세면 기울기가 더 선명하다. 진 편집 후보에게 '변화 없음'이 붙은 비율은 구간 ① 3/41(7.3%) → ② 17/48(35.4%) → ③ 13/34(38.2%)다. 실제 문장은 이렇게 생겼다.
"후보 A(이미지 2)는 원본과 시각적으로 완전히 동일하여 차이가 없습니다. 후보 B(이미지 3)는 짙은 눈썹과 뚜렷한 골격을 바탕으로 강렬한 눈빛을 연출하여 '카리스마'라는 주제에 훨씬 부합합니다." — 시즌 143 14라운드(일치율 81.0%)
"후보 A(이미지 2)는 원본의 피부결과 윤곽을 미세하게 정돈하여 깔끔함을 더했으나 인상의 큰 변화는 없습니다. 반면 후보 B(이미지 3)는 부드러운 이목구비와 조화로운 미소로 다정하고 온화한 분위기를 극대화했습니다." — 시즌 155 8라운드(일치율 75.0%)
두 번째 인용은 이 유형의 전형이다. 편집이 실패했다고 말하지 않는다. "깔끔함을 더했"다고 인정까지 한 다음, 그래서 어쨌다는 것이냐고 되묻는다. 진 후보의 절에 '~했으나/~지만' 같은 양보 연결이 붙은 경우가 147건 중 36건이었고, 표지가 하나도 없이 중립적으로만 서술된 경우도 16건 있었다 — 진 쪽이 늘 나쁘게 적히는 것은 아니라는 뜻이다.
결과 ④ — 깎일 수 있는 사유가 슬롯마다 다르다
여기서 중요한 비대칭이 하나 나온다. 재생성 후보(B 슬롯)가 도입된 구간 ②③에서 진 후보를 슬롯별로 갈라 보면 감점 사유의 구성이 완전히 다르다.
| 구간 ②③에서 진 후보 | 건수 | 변화 없음 | 색·톤·입술 | 인위·왜곡 |
|---|---|---|---|---|
| A 슬롯 — 챔피언을 편집한 후보 | 82건 | 30건 (36.6%) | 28건 (34.1%) | 20건 (24.4%) |
| B 슬롯 — 독립 재생성 후보 | 10건 | 0건 (0%) | 1건 (10.0%) | 7건 (70.0%) |
재생성 후보는 '변화 없음'으로 깎인 적이 한 번도 없다. 그럴 수가 없기 때문이다. 심사 지시문은 세 이미지를 붙여 놓고 "IMAGE 2에 대해: IMAGE 1과 눈에 보이는 차이가 조금이라도 있는가? 없으면 visually_identical_2 = true. IMAGE 3은 새로 생성된 것이므로 항상 false"라고 못 박는다. 원본과의 차이를 묻는 항목 자체가 편집 후보에게만 열려 있다. 같은 구조가 색·톤 항목에도 있다 — 체크리스트의 톤 조항은 "IMAGE 1 대비 차갑거나 창백한 색조, IMAGE 1 대비 입술이 본래 색을 잃는 것"처럼 전부 '원본 대비'로 쓰여 있고, 지시문은 "이 상대 항목들은 IMAGE 2에 적용하고, IMAGE 3의 톤은 절대 기준으로 판정하라"고 덧붙인다. 표의 34.1% 대 10.0%는 그 문장의 그림자다.
남은 10건의 재생성 후보가 깎인 사유는 70%가 렌더링 결함·인위성이다. 이쪽은 원본을 볼 필요가 없는, 그림 자체의 흠이다.
"이미지 3은 새로운 인물이나, 인위적인 렌즈 느낌과 과하게 창백한 피부 톤이 결함으로 작용했습니다." — 시즌 101 11라운드. 편집 후보가 이긴 드문 사례이고, 창백한 톤이 '원본 대비'가 아니라 그 자체로 결함이라고 적혀 있다.
결과 ⑤ — '반면'은 남을 깎고 '다만'은 자기를 깎는다
이 주제를 큐에 넣을 때의 가설은 "심사평의 대조 구조를 '반면/다만/부족' 같은 표지로 분류해 보자"였다. 세어 보니 그 세 단어는 같은 종류가 아니었다. 장르가 다르면 쓰는 접속사와 감점 어휘가 아예 갈린다.
| 어휘 | 대조 평 148건 | 단일 평 21건 | 단독 평 86건 |
|---|---|---|---|
| 반면 | 60건 | 0건 | 0건 |
| 다만 | 0건 | 0건 | 26건 |
| 부족 | 0건 | 0건 | 26건 |
| 전형적 | 1건 | 1건 | 23건 |
| 아쉽- | 0건 | 0건 | 6건 |
| 결함 | 12건 | 2건 | 6건 |
| 대비 / 비해 | 22건 / 20건 | 1건 / 2건 | 1건 / 0건 |
| 부합 | 100건 | 7건 | 18건 |
'반면'은 대조 평에서 60번 나오고 나머지 두 장르에서 0번이다. '다만'과 '부족'은 정확히 반대로 단독 평에서만 26번씩 나온다. 255건에서 두 접속사가 같은 글에 함께 등장한 사례는 없다. 대조 평의 '반면'은 옆에 있는 후보를 깎는 말이고, 단독 평의 '다만'은 깎을 상대가 없어 자기 자신을 깎는 말이다.
실제로 두 장르의 감점 방향은 반대다. 대조 평 147건 중 이긴 후보를 두고 감점 어휘를 쓴 경우는 6건(4.1%)뿐이다. 반면 단독 평 86건 중 66건(76.7%)에 감점·유보 표지가 들어 있다. 채택돼서 하이라이트에까지 실린 그림인데도, 옆에 견줄 후보가 없으면 심사평은 그 그림의 흠을 적는다.
"둥글고 부드러운 얼굴형과 맑은 미소가 주제인 '귀여움'에 잘 부합하는 호감형 인상입니다. 하지만 머리 상단이 프레임 밖으로 잘려나간 구조적 결함이 발견되어 점수에 큰 페널티가 적용되었습니다." — 시즌 133 1라운드(일치율 64.0%)
"자연스러운 인상이나 시선을 끄는 특별한 매력은 부족합니다. 다소 평면적인 조명이 얼굴의 입체감을 저해합니다." — 시즌 1 9라운드(일치율 59.0%). 이 시즌에서 가장 점수가 높았던 라운드의 심사평이다.
결과 ⑥ — 점수와의 관계는 한쪽에서만 나타난다
주제가 요구한 마지막 축은 표지와 점수의 대조다. 결과는 장르에 따라 갈렸다.
단독 평에서는 관계가 분명하다. 감점 표지가 있는 66건의 평균 일치율은 65.85, 없는 20건은 72.95로 7.10점 차이다(순열검정 p=0.0015). 자기 감점은 장식이 아니라 점수와 같은 방향을 가리킨다.
반면 대조 평에서 '변화 없음' 표지의 유무는 그 라운드의 일치율과 사실상 무관하다 — 있는 37건 71.78, 없는 110건 72.77로 0.99점 차이이고 순열검정 p=0.31이다. 당연한 결과이기도 하다. 하이라이트의 일치율은 이긴 후보의 점수이지 진 후보의 점수가 아니기 때문이다. 진 후보가 원본과 똑같았든 크게 망가졌든, 왕좌에 앉은 그림의 점수는 그것과 무관하게 매겨진다.
해석 — 지시문 안에 답이 세 줄 들어 있다
왜 심사평이 이렇게 생겼는지는 Character/AutoCharacter/characterEngine.js의 판정 프롬프트를 읽으면 대부분 설명된다. 세 줄이 각각 이 글의 결과 하나씩에 대응한다.
첫째, 대조 구조는 문체가 아니라 규격이다. 심사평 항목의 지시는 "한국어로 2~3문장 — 두 후보가 각각 무엇이 달라졌고, 셋 중 어느 이미지가 왜 주제에 가장 부합하는지"다. 후보 둘을 각각 서술하고 마지막에 승자를 지목하라는 요구가 그대로 '반면' 구문과 "…주제에 가장 부합합니다"라는 결말을 만든다. 대조 평 148건 중 100건에 '부합'이 들어 있는 이유다.
둘째, '변화 없음'은 채점 항목이 아니라 별도의 문이다. 지시문에는 "IMAGE 2가 IMAGE 1과 눈에 보이는 차이가 있는가"를 묻는 항목이 따로 있고, 그 답이 '없음'이면 코드는 점수를 보기도 전에 후보를 돌려보낸다(if (v.visually_identical) return { accept: false, reason: 'no_op' }). 즉 '변화 없음'은 감점 사유가 아니라 탈락 사유다. 심사평이 그 말을 점점 더 자주 적는다는 것은, 편집 후보가 점점 더 자주 이 문에 걸리고 있다는 뜻으로 읽힌다. 다만 앞에서 인용한 시즌 4의 두 라운드(2026-07-02)는 "완벽히 동일합니다"라고 적힌 채로 채택돼 하이라이트에까지 올라 있다. 초기 척도에서는 이 문이 지금과 같은 방식으로 걸리지 않았을 가능성이 있고, 리포트만으로는 확인할 수 없어 예외로 적어 둔다.
셋째, 같은 지시문이 "편집 크기는 보지 말라"고도 말한다. 프롬프트 상단에는 "주제 우선: 편집이 크든 작든 상관없다 — 결과 이미지만 보고 판정하라"는 문장이 굵게 박혀 있다. 그런데 심사평의 4분의 1은 결과가 아니라 변화량을 근거로 든다. 두 문장이 모순인 것은 아니다. 채점(match_rate)에서는 변화량을 보지 말라는 것이고, 별도의 no_op 문에서는 변화량만 본다. 다만 심사평은 그 둘을 구분해 쓰지 않는다 — 독자가 읽는 문장에서는 게이트 사유와 채점 사유가 같은 자리에 섞여 있다.
이 대응은 강한 정황이지 증명은 아니다. 저장소의 코드가 실제 배포본과 같다고 단정할 수 없고, 조항이 언제 들어갔는지도 이력으로 추적할 수 없다(아래 한계 참조).
교차 검증 — 영문 리포트 103편
모든 리포트에는 영문판이 있고, 심사평도 별도 열(eval_comment_en)로 따로 저장된다. 영문 255건과 국문 255건을 대조한 결과 라운드 번호·일치율·생성/수정 구분·이미지 URL이 255건 전부 일치했다(불일치 0건). 영문 심사평만 가지고 승자 판정을 다시 돌리면 138건 중 137건이 국문 판정과 같았고, 어긋난 1건(시즌 75 R3)은 "The second image best fits…"처럼 판정어가 지시어보다 앞에 오는 영어 어순을 파서가 놓친 것으로, 사람이 읽으면 국문과 같은 승자다.
다만 장르 분류는 영문에서 정확히 재현되지 않는다(영문 기준 대조 140 / 단일 24 / 단독 91). 후보를 "candidate A"로 명시하는지 그냥 "the second image"로 부르는지가 번역마다 달라지기 때문이고, 이는 국문 소개문과 영문 소개문이 갈리는 앞선 관측과 같은 성격의 문제다. 이 글의 장르 수치는 국문 표면 표현 기준으로 읽어야 한다.
한계 — 이 분석이 말할 수 없는 것
첫째, 표본이 이긴 라운드로 잘려 있다. 255건은 채택 라운드 364개 중 상위 3개씩만 뽑은 것이고, 기각된 1,181개 라운드의 심사평은 리포트에 실리지 않는다. "심사평 전반이 무엇을 깎는가"가 아니라 "가장 좋았던 라운드의 심사평이 무엇을 깎는가"까지만 잰 것이다. 특히 구간 ③의 편집 후보 34전 34패는 하이라이트에 실린 34개 라운드의 이야기다.
둘째, 표지 분류는 문자열 기계 분류다. 사람이 문맥을 읽고 라벨을 단 것이 아니라 미리 정한 어휘 목록의 포함 여부로 셌다. 특히 '미세·살짝·소폭·약간'은 변화의 크기를 한정할 수도 있고("턱선이 미세하게 갸름해졌다") 결함의 크기를 한정할 수도 있어서("어색함이 미세하게 남았다") 어느 쪽인지 자동으로 가릴 수 없다. 그래서 이 네 단어는 '변화 없음' 표지군에서 제외했고, 표의 37건은 '동일·유사·차이 없음·변화 없음' 계열만 센 값이다. 이 네 단어만 들어 있는 절이 23건 더 있으므로, 넓게 잡으면 '변화량 언급'은 최대 60건까지 늘어난다.
셋째, 인과는 확정하지 못했다. '심사 지시문이 그렇게 쓰여서 심사평이 그렇게 나온다'와 '편집 후보가 실제로 아무 변화를 못 만들어서 그렇게 적힌다'는 이 데이터에서 같은 모양이다. 전자를 지지하는 것은 지시문의 항목 구조이고, 후자를 지지하는 것은 재생성 후보가 도입되기 전인 구간 ①에서도 편집 후보가 74.5%로 지고 있었다는 사실이다. 둘 다 조금씩 맞을 가능성이 가장 높다.
넷째, 진 후보의 실제 점수는 알 수 없다. 리포트의 기각 행 점수는 표시 규칙상 그 시점 최고점을 넘지 못하도록 눌려 있고 상당수는 챔피언 점수의 복사본이다(앞선 칼럼). 그래서 "'변화 없음'이라고 적힌 후보가 실제로 몇 점을 받았나" 같은 질문에는 답하지 않았다.
다섯째, 코드 근거는 정황이다. 클라우드 세션의 저장소 클론이 얕은 클론(50커밋, 가장 오래된 커밋 2026-09-03)이라 조항의 도입 시점을 이력으로 확인할 수 없고, 배포본이 저장소 코드와 같다고 단정할 수도 없다.
그래서 무엇을 읽어야 하나
심사평을 인용할 때 우리는 대개 승자 칭찬 문장을 가져온다. 그런데 255건을 통째로 세어 보니 정보량이 많은 쪽은 반대편이었다. 이긴 후보의 절은 거의 정형구다 — 이목구비의 조화, 자연스러운 톤, 그리고 "주제에 가장 부합합니다". 진 후보의 절에만 그 라운드에서 실제로 무슨 일이 있었는지가 적힌다. 그리고 요즘 그 자리에 가장 자주 적히는 문장은 결함 보고가 아니라 "원본과 시각적으로 동일하여 차이가 없습니다"다.
운영자로서 여기서 얻는 것은 하나다. 편집 파이프라인의 실패는 '나쁜 그림'으로 오지 않고 '아무 그림도 아닌 것'으로 온다. 점수만 보면 잘 안 보이고(진 후보의 점수는 표시되지 않으니까), 심사평을 읽어야 보인다. 리포트가 심사평을 요약하지 않고 원문 그대로 싣는 이유이기도 하다.
표와 문장은 시즌 143 리포트를 비롯한 공개 시즌 리포트에서 직접 확인할 수 있다. 이 글의 모든 숫자는 그 페이지들만 읽어서 다시 셀 수 있다.
집계 기준. 2026년 9월 9일(KST) 기준 저장소에 공개된 AI 인물 생성 시즌 리포트 국문 103편(Frontend/public/reports/character/season-*.html, 시즌 1~155, 2026-06-30~2026-09-09) 전수. 라운드 행 103 × 15 = 1,545개 중 채택 행은 364개이고, 하이라이트에 실린 심사평은 255건(30,132자, 평균 118.2자, 중앙값 119자, 44~211자)이다. 장르는 심사평이 후보를 부르는 표현('후보 A/B', '이미지 2/3', '두 번째·세 번째 이미지·후보', '2번/3번' 등)의 등장 여부로 갈랐고, 승자는 판정어(가장·최고점·최우수·1위·우수) 직전에 나온 후보 지시어로 판정한 뒤 하이라이트 이미지 파일 키의 candA/candB 표기와 대조했다. 감점 표지군은 진 후보를 주어로 하는 절에 대해 고정 어휘 목록의 포함 여부로 다중 라벨 분류했으며, '미세·살짝·소폭·약간'은 변화량과 결함 크기 중 어느 쪽을 수식하는지 자동 판별이 불가능해 '변화 없음' 표지군에서 제외했다. 구간 경계(08-06 / 08-22)는 이 시리즈의 기존 칼럼과 동일하다. 순열검정은 20,000회 재배치 기준 양측 p값이다. 교차 검증으로 영문 리포트 103편 255건의 라운드·일치율·생성/수정 구분·이미지 URL을 대조해 불일치 0건을 확인했다. 코드 근거는 Character/AutoCharacter/characterEngine.js의 판정 프롬프트와 채택 게이트, html2pdf/src/character-data-fetcher.js의 하이라이트 선정 코드이며, 배포본이 저장소 코드와 동일하다고 단정할 수 없으므로 정황으로 읽어 주시기 바란다.