한 시즌은 14시간이었다가 2시간 20분이 됐다 — 인물 리포트 파일명의 시각 도장 351개
AI 인물 생성 시즌 리포트에는 시간이 없다. 상단 배지에 테마와 일치율이 있고, 아래에 15줄짜리 라운드 표가 있고, 하이라이트 세 칸이 있다. 라운드가 몇 시에 돌았는지, 한 라운드와 다음 라운드 사이에 몇 분이 흘렀는지, 한 시즌이 끝나는 데 몇 시간이 걸렸는지 — 지면 어디에도 적혀 있지 않다. 우리가 지금까지 쓴 인물 칼럼 스무 편이 점수와 문장만 다뤄 온 데에는 그런 이유도 있다. 시간 축이 없으니 시간을 말할 수 없었다.
그런데 한 군데 남아 있다. 리포트에 박힌 이미지의 주소다.
generated/character/season-100/round-6-candB-260815052207-aa95805f.png
가운데 열두 자리가 시각 도장이다. 26년 08월 15일 05시 22분 07초. 이 글은 공개 인물 리포트 국문 전수 152편에서 이런 주소를 전부 긁어 — 중복을 뺀 351개 — 지면에 없는 시계를 복원한 기록이다. 결론부터 적으면, 라운드 간격은 넉 달 동안 다섯 번 갈렸고 한 시즌의 벽시계는 14시간에서 2시간 20분까지 움직였다. 그리고 그 변화를 빼면, 라운드는 놀라울 만큼 정확한 격자 위에서 돌았다.
방법 — 파일명을 믿어도 되는지부터 확인한다
도장을 숫자로 쓰기 전에 그게 정말 시각인지 확인해야 한다. 파일명은 생성 과정의 부산물이고, 집계에 쓰라고 만든 필드가 아니다. 세 가지를 검사했다.
① 형식. 351개 전부가 round-{번호}[-cand{A|B}]-{12자리}-{8자리 해시}.png 형식에 들어맞았고(파싱 실패 0건), 열두 자리는 전부 유효한 날짜·시각으로 읽혔다(월 1~12, 시 0~23 범위 위반 0건). 주소 안의 시즌 번호가 그 리포트의 시즌 번호와 어긋나는 경우도 0건, 여덟 자리 해시가 겹치는 경우도 0건이었다.
② 순서. 도장이 둘 이상인 시즌 121편에서, 라운드 번호가 큰 쪽이 항상 시각도 늦었다. 쌍 199개 중 역전은 0건이다. 파일명의 숫자가 아무 의미 없는 난수라면 절반쯤은 뒤집혀야 한다.
③ 날짜의 외부 대조. 각 리포트의 JSON-LD datePublished와 맞춰 봤다. 그 필드가 발행일이 아니라 시즌 종료일이라는 것은 지난 칼럼에서 확인한 바 있다. 152편 중 151편에서 그 시즌의 모든 도장 날짜가 종료일과 정확히 같았다. 어긋난 단 한 편은 시즌 13으로, 도장이 7월 6일과 7월 7일에 걸쳐 있고 종료일은 7월 7일이다 — 뒤에서 보듯 이 시즌은 자정을 넘긴 유일한 시즌이다. 즉 예외조차 설명되는 예외다.
세 검사를 통과했으니 도장을 시각으로 읽는다. 도장은 편당 1~4개뿐이다(1개 31편 · 2개 50편 · 3개 64편 · 4개 7편). 하이라이트 세 칸과 '대상 인물' 사진이 참조하는 라운드만 지면에 올라오기 때문이다. 그래서 복원하는 값은 '모든 라운드의 시각'이 아니라 두 도장 사이의 라운드당 간격이다. 라운드 6의 도장과 라운드 2의 도장이 240분 떨어져 있으면 라운드당 60분이다.
결과 ① — 슬롯은 다섯 번 갈렸다
간격을 시간순으로 늘어놓으면 구간이 눈에 보일 만큼 또렷하게 갈린다. 아래가 이 글의 핵심 표다.
| 구간 | 시즌 번호 | 기간 | 리포트 | 도장 | 실측 라운드 간격 | 15라운드 벽시계 |
|---|---|---|---|---|---|---|
| 몰아치기 | 1 | 06-30 | 1 | 4 | 1.32분 | 약 18분 |
| 30분 1기 | 2~9 | 06-30 ~ 07-05 | 8 | 25 | 30.00분 | 7시간 |
| 60분 | 11~122 | 07-06 ~ 08-22 | 64 | 170 | 59.99분 | 14시간 |
| 전환 | 124~128 | 08-23 ~ 08-24 | 4 | 12 | 19.9 / 29.9~30.0분 | 5~7시간 |
| 10분 | 131~141 | 08-25 ~ 09-02 | 11 | 24 | 10.08분 | 2시간 20분 |
| 20분 | 142~204 | 09-03 ~ 10-11 | 63 | 115 | 20.00분 | 4시간 40분 |
시즌 1은 혼자 떨어져 있다. 라운드 3의 도장이 00:51:32, 라운드 15가 01:07:41 — 열두 라운드가 16분 만에 지나갔다. 라운드당 1.32분이다. 그 뒤로는 간격이 사람이 고른 값들 위에 또박또박 얹힌다. 30분, 60분, (이틀의 전환), 10분, 20분.
리그 운영의 관점에서 이 표의 가장 중요한 칸은 맨 오른쪽이다. 같은 15라운드 시즌인데 7월의 한 시즌은 하루의 절반(14시간)을 쓰고, 8월 말의 한 시즌은 2시간 20분에 끝났다. 여섯 배다. 지면에서는 둘이 똑같이 생긴 15줄 표로 보인다.
벽시계 칸은 간격 × 14로 계산한 값이지만, 추정만은 아니다. 1라운드와 15라운드의 도장이 모두 남은 시즌이 세 편 있는데 — 구간마다 하나씩 — 실측과 계산이 거의 그대로 맞는다.
| 시즌 | 구간 | R1 도장 | R15 도장 | 실측 벽시계 | 간격×14 예측 |
|---|---|---|---|---|---|
| 시즌 15 | 60분 | 2026-07-07 06:06 | 2026-07-07 20:05 | 13.98시간 | 14.00시간 |
| 시즌 131 | 10분 | 2026-08-25 00:07 | 2026-08-25 02:24 | 2.28시간 | 2.33시간 |
| 시즌 182 | 20분 | 2026-09-22 00:16 | 2026-09-22 04:53 | 4.63시간 | 4.67시간 |
결과 ② — 196쌍 중 185쌍이 격자에 정확히 얹힌다
구간별 간격을 '명목 슬롯'으로 보고, 도장 쌍마다 경과 분 ÷ 슬롯을 반올림해 소비된 슬롯 칸 수를 세어 라운드 번호 차와 비교했다. 라운드가 슬롯 격자를 한 칸씩 또박또박 밟았다면 두 값이 같아야 한다.
| 구간 | 명목 슬롯 | 도장 쌍 | 격자 일치 | 비-R1 구간 측정 | 그 중앙값 |
|---|---|---|---|---|---|
| 30분 1기 | 30분 | 17 | 17 (100%) | 13 | 30.00분 |
| 60분 | 60분 | 106 | 101 (95.3%) | 72 | 59.99분 |
| 전환 | 20·30분 | 8 | 7 (87.5%) | 5 | 29.97분 |
| 10분 | 10분 | 13 | 12 (92.3%) | 4 | 10.08분 |
| 20분 | 20분 | 52 | 48 (92.3%) | 11 | 20.00분 |
| 합계 | — | 196 | 185 (94.4%) | 105 | — |
격자에 얹힌 185쌍의 잔차 — 실제 경과 분과 라운드 차 × 슬롯의 차이 — 는 중앙 0.52분이다. 90퍼센타일이 3.15분, 최대가 6.15분이고 164쌍(88.6%)이 3분 이내다. 아홉 라운드를 건너 측정한 쌍에서도 오차가 몇 분 수준이라는 뜻이다. 사람이 버튼을 누르는 리그라면 나오지 않는 숫자다.
결과 ③ — 1라운드는 언제나 2~3분 늦는다
격자가 그렇게 정확하다면, 어긋나는 자리는 어긋나는 이유가 있다. 가장 체계적인 어긋남은 1라운드에 있다.
R1 쪽 간격을 R2 이후 간격과 함께 가진 시즌 41편 중 37편에서 R1 쪽이 짧았다. 한 방향으로 쏠린 이 편차를 '1라운드가 격자보다 Δ분 늦게 끝났다'로 환산하면 구간별 중앙값이 30분 1기 1.6분(4쌍) · 60분 2.3분(32쌍) · 10분 3.0분(9쌍) · 20분 2.7분(37쌍)이다. 구체적으로는 20분 슬롯에서 R1→R2가 17분대로 측정되고, 60분 슬롯에서는 57~58분으로 측정된다.
해석은 어렵지 않다. 1라운드만 하는 일이 더 많다. 시즌을 만들고, 테마와 외형 카드를 정하고, 챔피언을 처음 그린다. 그 몇 분이 도장에 그대로 찍혀 있다. 자정에 시작한 여성 레인 시즌의 1라운드 이미지가 00:06~00:08에 올라오는 것도 같은 이야기다. 자정에 시작한다는 말은 자정에 끝난다는 말이 아니다.
결과 ④ — 빈 슬롯은 넉 달에 여덟 칸
격자를 벗어난 11쌍은 두 종류다. 여덟 쌍은 라운드 차보다 슬롯을 더 썼다 — 중간에 아무 라운드도 얹히지 않은 빈 칸이 있었다는 뜻이다.
| 시즌 | 구간 | 측정 쌍 | 경과 | 소비 슬롯 | 라운드 차 | 빈 칸 |
|---|---|---|---|---|---|---|
| 시즌 33 | 60분 | R5 → R8 | 240분 | 4 | 3 | +1 |
| 시즌 63 | 60분 | R1 → R6 | 357분 | 6 | 5 | +1 |
| 시즌 63 | 60분 | R6 → R8 | 180분 | 3 | 2 | +1 |
| 시즌 77 | 60분 | R1 → R7 | 418분 | 7 | 6 | +1 |
| 시즌 125 | 30분 | R1 → R6 | 206분 | 7 | 5 | +2 |
| 시즌 139 | 10분 | R4 → R8 | 50분 | 5 | 4 | +1 |
| 시즌 142 | 20분 | R1 → R8 | 157분 | 8 | 7 | +1 |
| 시즌 183 | 20분 | R1 → R4 | 76분 | 4 | 3 | +1 |
넉 달 104일, 공개된 152개 시즌에서 관측 가능한 빈 칸이 여덟 개다. 다만 이 수는 바닥값이다 — 도장이 편당 1~4개뿐이라 두 도장 사이에 들어온 빈 칸만 보이고, 측정 구간 밖의 빈 칸은 애초에 보이지 않는다.
나머지 세 쌍은 반대로 격자보다 빨랐다. 시즌 162와 164는 R1→R2가 각각 8분·7분으로, 20분 슬롯에서 한 칸도 쓰지 않은 셈이다. 시즌 81은 더 극적이다. R1→R5는 라운드당 59분인데 R5→R9는 30.7분 — 같은 시즌 안에서 간격이 반으로 줄었다. 시즌 81은 남성 테마 레인의 첫 시즌이고, 그 레인이 처음 돌던 날(8월 8일 09:45 시작)의 기록이다. 간격 변경이 시즌 경계가 아니라 라운드 사이에서 일어날 수 있다는 증거다.
결과 ⑤ — 두 레인의 시차는 20분에서 10분으로 줄었다
인물 생성은 여성 테마와 남성 테마를 각자의 레인으로 돌린다. 같은 날 두 레인의 1라운드 도장이 모두 남은 날이 38일인데, 자정 기준 시차가 구간마다 다르다.
| 기간 | 관측일 | 여성 레인 R1 | 남성 레인 R1 | 시차 중앙 |
|---|---|---|---|---|
| 07-06 ~ 08-07 | 16 | 00:05 ~ 00:10 (중앙 00:07) | — | — |
| 08-12 ~ 08-22 | 7 | 00:24 | 00:43 ~ 00:44 | 20분 |
| 09-03 ~ 10-11 | 31 | 00:06 ~ 00:46 | 00:15 ~ 00:59 | 10분 |
8월 중순에는 여성 레인 1라운드가 00:24, 남성 레인이 00:44로 20분 벌어져 있다(7일 중 6일이 정확히 20분). 9월 이후에는 00:06과 00:16 — 10분이다(31일 중 중앙값 10분, 범위 1~31분). 공개 리포트의 시즌 번호 공백도 같은 이야기를 한다. 1부터 204까지 중 리포트가 없는 번호 52개가 전부 130 이하이고, 그 안에서 10~80은 짝수만(두 레인 중 한 레인이 비공개), 84부터 126까지는 세 번째 번호마다(84·87·90·…·126, 세 레인 중 한 레인이 비공개) 빠져 있고 마지막이 130이다. 레인이 하나 → 둘 → 셋으로 늘어난 흔적이 번호 공백의 주기로 남아 있는 셈이다.
자정이 아닌 시각에 1라운드가 돈 시즌은 122편 중 11편뿐이다(시즌 5·6·7·9·15·81·125·127·136·141·164). 그리고 앞서 본 시즌 13이 152편 중 유일하게 자정을 넘긴 시즌이다 — 60분 슬롯에서 4라운드가 7월 6일 18:06에 돌았고 12라운드가 이튿날 02:06에 돌았다. 14시간짜리 시즌을 저녁에 시작하면 날짜가 바뀐다는, 지극히 당연한 산술의 유일한 실례다.
결과 ⑥ — 달력에 난 8일의 구멍
도장을 날짜로만 펼쳐 보면 뜻밖의 것이 하나 더 나온다. 2026년 6월 30일부터 10월 11일까지 104일 중 도장이 있는 날은 96일이고, 없는 8일은 흩어져 있지 않다. 2026년 9월 29일부터 10월 6일까지 연속 8일이다.
그 앞뒤 시즌의 번호가 중요하다. 9월 28일에 돈 시즌이 194·193이고, 10월 7일에 돈 시즌이 195·196이다. 번호가 연속이다. 131번 이후로는 공개되지 않은 번호가 하나도 없으므로, 그 8일 동안 비공개 레인이 번호를 소비한 것도 아니다. 즉 그 주에 시즌 시딩 자체가 멈춰 있었다. 리포트 어디에도 "쉬었다"고 적혀 있지 않지만, 파일명의 날짜만 세어도 보인다.
한계 — 이 분석이 말할 수 없는 것
첫째, 도장은 라운드의 시각이 아니라 이미지가 S3에 올라간 시각이다. 저장소의 키 조립 코드(Character/AutoCharacter/characterEngine.js)는 업로드 직후 UTC+9 벽시계로 열두 자리를 찍는다. 그래서 이 글의 '라운드 간격'은 정확히 말하면 '채택본 업로드 시각 사이의 간격'이고, 라운드가 실제로 시작한 시각이나 생성에 걸린 시간은 알 수 없다. 1라운드 지연 2~3분도 '시딩에 2~3분 걸렸다'가 아니라 '1라운드 이미지가 2~3분 늦게 올라왔다'까지만 말할 수 있다.
둘째, 지면에 올라온 라운드만 보인다. 편당 도장이 1~4개인 것은 하이라이트 세 칸과 '대상 인물' 블록이 참조하는 이미지만 리포트에 실리기 때문이다. 미채택 라운드의 이미지는 주소가 노출되지 않는다. 31편은 도장이 하나뿐이어서 간격을 아예 낼 수 없었고, 전체 구간을 실측한 시즌은 세 편뿐이다.
셋째, 구간별 표본이 많이 다르다. 60분 구간은 비-R1 측정이 72개인데 10분 구간은 4개, 20분 구간은 11개다. 10분·20분 구간의 도장은 R1에 쏠려 있어서(각각 9개·37개 쌍이 R1에 걸려 있다) 간격 추정이 R1 지연 보정에 더 의존한다. 그 구간의 슬롯 값을 소수점까지 인용하는 것은 권하지 않는다.
넷째, 왜 바뀌었는지는 이 데이터에 없다. 간격이 다섯 번 갈렸다는 것은 세었지만, 각 변경의 이유(비용·품질·운영 편의 중 무엇이었는지)는 파일명에 적혀 있지 않다. 날짜만 남는다.
다섯째, 빈 칸 여덟 개는 하한이다. 측정 쌍 사이에 끼인 빈 칸만 보이므로, 실제 빈 칸은 이보다 많을 수밖에 없다. 반대로 '격자 일치 94.4%'도 상한이 아니다 — 격자 밖 11쌍 중 3쌍은 느려진 게 아니라 빨라진 쪽이었고, 그것들은 결함이라기보다 설정 변경의 흔적으로 읽힌다.
여섯째, 시즌 1의 1.32분은 '그때 그랬다'는 기록일 뿐이다. 도장 네 개, 쌍 세 개에서 나온 값이고 그 뒤 어떤 시즌도 그렇게 돌지 않았다. 103일 추세선에 이 점을 끼워 넣으면 선이 이 한 점에 끌려간다.
그래서 무엇이 남는가
세 가지가 남는다. 첫째, 리포트가 숨긴 축이 리포트 안에 있었다. 시간 정보를 담도록 설계된 필드는 리포트에 하나뿐이고(종료일), 그마저 날짜까지다. 그런데 집계용으로 만들어진 적 없는 파일명 조각에서 초 단위 시계가 복원됐고, 그 시계는 세 가지 독립 검사(형식·순서·종료일 대조)를 통과했다. 공개 지면으로 집계할 수 있는 범위는 지면이 '보여 주려고 한 것'보다 넓다.
둘째, 같은 15줄이 같은 시즌이 아니다. 7월 시즌의 15줄은 14시간의 기록이고 8월 말 시즌의 15줄은 2시간 20분의 기록이다. 라운드 수가 같다는 이유로 두 시즌을 나란히 놓아 온 우리의 비교에는 — 최고 일치율 시계열을 포함해 — 숨은 변수가 하나 더 있었던 셈이다. 라운드 사이 간격이 여섯 배 다르면 생성 조건도 사람의 개입 여지도 같지 않다.
셋째, 격자는 거의 완벽했다. 196쌍 중 185쌍, 잔차 중앙 0.52분. 넉 달 동안 관측되는 빈 칸이 여덟 개. 자정에 시작해 정해진 간격으로 열다섯 번 돌고 끝나는 일이, 사람이 보지 않는 동안 이 정밀도로 반복됐다. 그 사실이 가장 선명하게 드러나는 것이 오히려 어긋난 쪽이다 — 1라운드는 언제나 2~3분 늦고, 시즌 81의 중간에서 간격이 반으로 줄고, 9월 말 8일은 통째로 비어 있다. 기계의 리듬이 일정할 때에만 그 리듬의 흔들림이 사건이 된다.
원자료는 열려 있다. 아무 인물 시즌 리포트나 열어 하이라이트 이미지의 주소를 보면 열두 자리가 그대로 있다 — 예컨대 시즌 15는 1라운드와 15라운드 도장이 모두 남아 14시간을 직접 보여 주는 편이고, 시즌 131은 같은 15라운드를 2시간 17분에 끝낸 편이다.
집계 기준. 저장소의 공개 인물 생성 시즌 리포트 국문 전수 152편(시즌 번호 1~204, JSON-LD datePublished 2026-06-30 ~ 2026-10-11, 104일). 각 편에서 generated/character/… 로 시작하는 이미지 S3 키를 전부 추출해 중복 제거 후 351개를 얻었고, round-{번호}[-cand{A|B}]-{YYMMDDHHMMSS}-{해시8}.png 패턴으로 라운드 번호·후보 슬롯·시각 도장을 읽었다(파싱 실패 0건, 도장 범위 2026-06-30 00:51 ~ 2026-10-11 02:54, 라운드 분포는 R1 122개 · R15 11개, 후보 표기는 없음 148 · candB 172 · candA 31). 도장은 저장소의 키 조립 코드가 업로드 시점에 UTC+9 벽시계로 찍는 값이므로 KST로 읽었다. '라운드 간격'은 같은 시즌의 라운드 번호순 인접 도장 쌍에서 경과 분 ÷ 라운드 번호 차로 계산했고(쌍 199개), 구간 대표값은 1라운드를 끼지 않은 쌍 105개의 중앙값이다. '격자 일치'는 반올림(경과 분 ÷ 명목 슬롯) = 라운드 번호 차인 쌍이며, 명목 슬롯은 구간 대표값에서 정했다(시즌 2~9 = 30분, 11~122 = 60분, 124 = 20분, 125~128 = 30분, 131~141 = 10분, 142~204 = 20분; 시즌 1은 명목값을 두지 않아 격자 집계에서 제외해 쌍 196개). 1라운드 지연 Δ는 격자에 맞은 R1 쌍에서 (슬롯 − 측정 간격) × (상대 라운드 − 1)로 환산한 값이다. 레인은 테마명으로 갈랐다(여성 아름다움·청순·귀여움·매력·예쁨·톰보이시 103편 / 남성 미남·청량·소년미·카리스마·훈훈함 49편). 평균·중앙값·비율은 원자료에서 계산해 소수점 둘째 자리에서 반올림했다.