본문 바로가기
C.W.K.
Lesson 04 of 07 · published

생성 보드도 사실을 실을 수 있어

~14 min · generative-images, acceptance-criteria, provenance, evolution

Level 0불 꺼진 작업장
0 XP0/58 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

규칙, 그리고 그 규칙이 휘어야 했던 이유

앞 강의는 모든 프레임 한가운데로 선을 그었어. 사실은 코드와 데이터에서 렌더하고, 앱 화면은 진짜 스크린샷이고, 생성 이미지는 분위기만 싣는다고. 그 선은 한 달 버텼어. 그러다 작업장이 새 시리즈를 차렸어. 기술 주제를 이름만 들어본 사람한테 풀어 설명하는 게 일의 전부인 시리즈야. 거기서 그 선이 감당 못 하는 프레임을 만났지.

키랑 값이 뭔지도 모르는 사람한테 언어 모형이 작업 기억을 어떻게 쓰는지 설명한다고 쳐봐. 이름표 붙은 네모 넷에 화살표 하나로는 안 돼. 코드로 그린 판은 형식적으론 그걸 보여주지만, 내레이션이 이미 한 말 이상은 하나도 못 가르쳐. 설명 영상에서 화면은 목소리 옆에 붙은 장식이 아니라 설명 그 자체야. 그래서 2026-08-27 에 규칙이 고쳐졌어. 생성한 인포그래픽 보드도 사실을 실을 수 있다.

목적은 남고, 장치가 바뀌었어

원래 규칙은 생성기가 지어내기 때문에 있었어. 그 목적, 그러니까 지어낸 게 화면에 올라가면 안 된다는 건 그대로 두고, 대신 새 의무 셋을 짊어졌어.

  1. 라벨은 전부 저자가 쓰고, 생성기는 그리기만 해. 프롬프트에 패널마다 들어갈 글자를 정확히 싣고, 어느 글자가 한국어고 어느 게 로마자로 남는지도 밝혀. 시청자한테 뭔가를 주장하는 프레임은 한 줄짜리 소원으로 절대 안 뽑아.
  2. 보드는 한 장도 빠짐없이 열어서, 확대한 채로 글자 하나하나를 명세와 맞춰 읽어. 설명 파이프라인에선 검증이 확인하는 필수 단계야. 틀린 글자 하나는 어떤 검사기에도, 썸네일 크기로 흘긋 보는 눈에도 안 보이거든.
  3. 고칠 땐 다시 뽑지 말고 참조 편집으로 고쳐. 보드를 생성기한테 돌려보내면서 바꿀 것 두세 개만 짚고 나머진 똑같이 두라고 해. 다시 뽑으면 거의 맞았던 보드를 버리고, 엉뚱한 데서 새 오류가 날 운에 거는 셈이야.

같은 날 이 개정은 작업장 전체로 넓어졌고, 기본값도 같이 뒤집혔어. 작업장에서 제일 약한 부분이 대놓고 지목됐거든. 거의 모든 에피소드가 코드로 그린 단순한 다이어그램 천지였다고. 그래서 입증 책임이 거꾸로 됐어. 이제는 '생성기를 쓸 이유를 대라'가 아니라, '생각을 와닿게 하는 게 일인 프레임에 굳이 코드로 직접 그린 판을 쓸 이유를 대라'야. 판단 기준은 질문 하나야. 이 프레임이 코드로 그린 판이었다면 시청자는 뭘 잃지? 진짜 답이 나오면 생성해.

여전히 생성하지 않는 것

이 개정이 안전한 건 선 반대편도 똑같이 정확하게 다시 적었기 때문이야. 이것들은 절대 생성 안 해. 데이터에서 온 사실: 명단, 이름, 포트, 측정한 숫자, 날짜. 진짜 픽셀: 진짜 스크린샷으로 둬. 생성기는 사용자 인터페이스를 절대 안 그리거든. 내레이션 시계에 맞춰 큐 단위로 움직이는 것: 자막 판 같은 거. 데이터가 바뀌면 같이 바뀌어야 하는 것. 그리고 비싸게 배운 하나, 글자만으로 된 보드. 글 덩어리 셋뿐인 마무리 카드 하나가, 두 언어가 맞닿는 곳에서 한국어 한 줄이 뭉개진 채로 돌아왔거든. 생성으로 얻는 건 구도, 은유, 규모감이야. 글자는 못 얻어.

이 거래엔 인정하기 좀 불편한 반대편도 있어. 같은 날 누가 도구함의 '굵은' 글씨를 확인해봤더니, 여태껏 한 번도 굵었던 적이 없었어. 글꼴 조회가 처음부터 보통 굵기 서체를 가리키고 있었는데, 기하 검사는 전부 통과했고 결과물도 다 그럴듯해 보였어. 요청한 굵기랑 대조해본 사람이 없었으니까. 코드로 직접 그린 프레임은 조용히 실패하고, 겉보기엔 멀쩡히 출고될 것 같아. 그러니 습관처럼 아무 데나 쓰지 말고, 진짜로 그래야 하는 곳에만 써야 해.

은퇴 둘, 그리고 두 번째 문

생성 보드를 내레이션 호흡에 맞춰 보여주려던 첫 시도는 영역별로 드러내기였어. 목소리가 아직 안 닿은 패널을 흐리게 가려두는 방식이지. 한 에피소드 만에 끝났어. 그 한 편에서 눈에 보이는 실수가 다섯 번 나왔거든. 잘린 괄호, 끝내 안 켜진 줄, 두 상자 사이에 갇힌 결론. 원인은 보정이 아니라 구조였어. 네모는 기하 도형이고 생성 인포그래픽은 유기적인 그림이라, 가림막 가장자리엔 늘 뭔가가 걸쳐 있어. 드러내기는 그렇게 은퇴했고, 이제 보드는 통째로 보여줘. 뒤 장면을 미리 누설할 보드는 가리지 말고 두 장으로 쪼개.

이미지가 들어오는 문도 바뀌었어. 원래 규칙은 '언제나 가족 이미지 엔진을 거쳐서'였어. 그 엔진이 프롬프트, 참조, 모형, 결과물까지 계보를 기록하고, 그 기록이 사실을 싣는 생성 프레임을 감사 가능하게 해주니까. 2026-09-05 부터는 특정 두뇌 하나가 제작을 맡으면, 썸네일 글자까지 포함해서 모든 이미지를 그 두뇌의 자체 이미지 도구로 만들어. 그리고 프롬프트, 참조, 결과물, 판정을 제작 기록에 적어. 그 일을 엔진으로 돌려보내는 건 주인이 분명하게 지시했을 때뿐이야. 도구가 없거나 생성이 실패한 건 그런 지시가 아니라서, 몰래 엔진으로 넘어가지 않고 일을 멈춘 뒤 주인과 경로를 정해. 받은 적 없는 엔진 계보 식별자를 주장하는 건 절대 안 되고. 다른 제작자는 여전히 엔진을 거쳐. 밑에 깔린 원칙은 그대로야. 공급자를 날것으로 부르지 않고, 흔적 없는 생성 프레임은 없어.

안전 규칙이 진짜 일을 막으면, 목적은 남기고 장치를 바꿔. '아트는 사실을 실으면 안 된다'가 지키던 건 하나야. 지어낸 게 시청자한테 닿지 않는 것. '라벨은 전부 저자가 쓰고, 라벨은 전부 다시 읽는다'는 같은 걸 지키면서 옛 규칙이 못 받아주던 프레임까지 받아줘. 규칙을 풀기 전에 그게 뭘 지키는지 이름부터 붙여. 그다음 그걸 계속 지키는 장치를 적든가, 아니면 규칙을 그냥 둬.

Code

프레임 네 종류, 그리고 누가 그려도 되나·text
FACT FROM DATA   code-drawn, always
                 rosters, names, ports, measured numbers, dates,
                 anything that must change when its data changes

REAL PIXELS      screenshots of software that actually runs
                 a generator never draws a user interface

CLOCK-DRIVEN     code-drawn, always
                 subtitle plates, anything that moves cue by cue

BOARD            generated BY DEFAULT when the frame's job is comprehension
                 - every label authored in the prompt, languages declared
                 - read back against the spec, zoomed, glyph by glyph
                 - revised by reference edit, never re-rolled
                 - shown whole: no rectangle masks over organic art
                 EXCEPT a board that is pure type -> code-drawn

the test:  "if this were a code-drawn plate, what would the viewer lose?"
보드 명세는 소원이 아니라 명세야·python
board = {
    "key": "b07",
    "layout": "three panels, left to right, one arrow between each",
    "panels": [
        {"title": "프리필(Prefill)", "label": "read the whole prompt once"},
        {"title": "캐시(Cache)",     "label": "keep every key and value"},
        {"title": "디코드(Decode)",  "label": "add one token, reuse the rest"},
    ],
    "languages": {"korean": ["title"], "latin": ["label"]},
    "forbid": ["user interface elements", "any number not listed above"],
}


def read_back(image, spec) -> list[str]:
    """Every string, at full size, against the spec. [] is a pass.

    This is a read by eye at magnification, not an OCR confidence
    score: the defect it hunts is one wrong glyph in a fluent word.
    """
    defects = []
    for panel in spec["panels"]:
        for field in ("title", "label"):
            seen = read_zoomed(image, panel, field)
            if seen != panel[field]:
                defects.append(f"{spec['key']}: {field} reads {seen!r}")
    return defects  # non-empty -> a reference edit naming ONLY these

External links

Exercise

네 일에서 도구를 못 믿는다는 이유로 아예 금지해둔 규칙을 하나 찾아봐. 핵심 모듈엔 생성 코드 금지, 고객용 문구엔 기계 번역 금지, 문서엔 생성 이미지 금지 같은 거. 그 규칙이 지키는 걸 딱 하나 적어. 그다음 그 도구를 받아들이면서도 같은 걸 지키는 장치를 설계해봐. 저자가 미리 뭘 명시해야 하는지, 나중에 뭘 확인해야 하는지, 얼마나 확대해서 볼지. 그 장치가 금지보다 싸게 먹히는지 정직하게 판정해.
Hint
확인이라면 금지가 걱정한 바로 그 결함을 만났을 때 걸려야 해. '결과물을 검토한다'는 장치가 아니야. '보드의 글자를 전부, 전체 크기로, 명세의 글자와 대조한다'는 장치야. 뭘 대조하는지, 어긋나면 어디서 드러나는지를 짚고 있으니까.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.