사용자 추가 딥다이브 · 2026-07-24 · KLIC · AESTHETE

klic-co-kr/KLIC-Aesthete 딥다이브
— 레이아웃 미학을 LLM이 아니라 '수식'으로 채점하고 고치는 결정론 엔진

Aesthete(미학가)는 인지 미학 이론 — 게슈탈트, Ngo 균형, 보색 조화, 처리 유창성 — 을 순수 기하 산술로 정형화한 레이아웃 미학 측정·보정 엔진이다. 한 문장 정의는 "구조화된 레이아웃(SVG·HTML·PPTX·ALT)의 미학을, 생성 결정론적 기하로 측정하고 보정한다".

이 프로젝트의 급소는 이것이다: 평가자가 LLM이 아니라 수식이다. 그래서 "예뻐 보인다"는 사후 합리화나 편향이 구조적으로 불가능하고, 같은 입력은 언제나 같은 출력을 낸다(Math.random·Date 사용 금지). 코어는 도메인을 모른다 — 오직 ALT(Abstract Layout Tree)라는 중간 표현만 보고, 어댑터가 SVG·PPTX·HTML·이미지를 ALT로 번역한다.

(저장소 klic-co-kr/KLIC-Aesthete · 이름 Aesthete v1.0 · 제작 KLIC Co., Ltd(한국) · 런타임 Bun / Node ≥18 · 순수 ESM .mjs 107파일·약 4,100줄 · bun run test 244 pass · 라이선스 Modified MIT + Commons Clause + Media Restrictions(오픈소스 아님, source-available) · shallow clone 소스 직접 분석)
목차
  1. 프로젝트 한 줄 요약
  2. 왜 주목받는가 — 심판을 매수할 수 없게
  3. 기술 스택 — 픽셀 없는 순수 기하
  4. 아키텍처 심화 — ALT 파이프라인과 9개 인지 스킬
  5. 디렉토리 구조 해부
  6. 학습 포인트 — 여기서 훔쳐올 설계
  7. 시스템 요구사항 · 라이선스 주의
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한 줄 요약

"AI가 만든 화면이 잘 됐는지, 누가 객관적으로 판정하나" — 그 심판을 사람도 LLM도 아닌 수식으로 세운 엔진
한 문장으로

Aesthete = 레이아웃 미학의 매수 불가능한 심판. 점수를 매기는 게 LLM이 아니라 기하 공식이라, "그럴듯해 보여서 통과"가 원천적으로 안 된다.

LLM에게 "이 디자인 괜찮아?"라고 물으면, 모델은 결론을 먼저 정하고 이유를 나중에 지어내기(합리화) 쉽다. Aesthete는 이 고리를 끊는다 — 균형·근접·여백·색조를 전부 좌표와 넓이로 계산하므로, 판정에 주관이 끼어들 자리가 없다.

그리고 측정에서 그치지 않는다. 어긋난 요소를 measure → resolve → patch → re-measure의 폐루프로 자동 보정까지 한다. 생성 에이전트의 루프 안에서 레이아웃을 점진적으로 고쳐 나가는 게 목표다.

용어
ALT · 결정론(deterministic) · 사후(post) 보정
ALT(Abstract Layout Tree)는 "무엇이 어디에 얼마 크기로 있는가"만 남긴 도메인 중립 레이아웃 표현이다 — SVG든 PPTX든 전부 이걸로 번역해 하나의 코어로 다룬다. 결정론은 같은 입력이면 언제나 같은 출력이라는 뜻(난수·시각 금지). 사후 보정은 "생성을 대신하지 않고, 이미 만들어진 레이아웃을 뒤에서 측정·수선한다"는 역할 규정이다.

2왜 주목받는가

별점이 아니라 발상 — "LLM-as-judge의 합리화 문제"에 수식으로 답한다

요즘 "AI가 만든 걸 AI가 평가한다(LLM-as-judge)"가 흔하지만, 여기엔 고질병이 있다: 평가자가 언어 모델이라 편향·아부·합리화에 취약하다는 것. Aesthete가 눈에 띄는 이유는 이 문제를 정면으로, 그것도 결정론적 기하라는 급진적 방법으로 우회하기 때문이다.

핵심 주장 ①

평가자 = 산술 → 합리화가 원천 봉쇄된다

균형은 Ngo의 대칭균형 공식, 근접은 게슈탈트 RANG/PDL, 색조는 보색 모멘트 평형으로 수치가 먼저 나온다. 판정은 그 수치를 동결된 루브릭(Sprint Contract)과 순수 비교해 PASS/FAIL을 낼 뿐이다. "결론을 정하고 이유를 붙이는" LLM식 실패가 코드 구조상 불가능하다.

핵심 주장 ②

인지 미학을 "실행 가능한 스킬"로 캡슐화

전통적 계산 미학(IAA/IQA)은 완성된 이미지에 사후 점수만 매긴다. Aesthete는 게슈탈트·처리 유창성 같은 인지 원리를 기하로 정형화해, 에이전트가 생성 과정에 개입해 점진 개선하는 재사용 스킬로 만든다. 9개 인지 스킬 각각이 "관찰·측정·인지효과" 3계층으로 짜여 있다.

눈여겨볼 것 — 드물게 정직한 자기검증
"돌아간다"와 "검증됐다"를 엄격히 구분

README·DESIGN이 스스로 한계를 못 박는다: export는 ALT(JSON)만 무손실이고 SVG/PPTX는 손실 재출력, docx/xlsx/image는 export 자체가 없다. 검증 코퍼스의 상관(ρ≈0.33)도 "baseline은 이기지만 인간 미학 선호의 증명은 아니다"라고 선언한다. 과대광고가 흔한 판에서, 이 절제가 오히려 신뢰를 준다.

주의 — 성격과 라이선스
별점 낮은 신생 + "오픈소스 아님"

대중적 인기 레포가 아니라 설계 사상을 공부할 레퍼런스다(별점·포크 적음, 2026-07 시점). 또 라이선스가 Modified MIT + Commons Clause + Media Restrictions라 OSI 의미의 오픈소스가 아니다(source-available). 유료 재판매(SaaS·화이트라벨) 금지, 그리고 소스·UI·파생물로 공개 미디어(유튜브·블로그 방송/리뷰) 제작에 사전 서면 동의가 필요하다 — 공개 공유 전 §7·§11의 라이선스 항목을 반드시 확인.

3기술 스택 전체 지도

브라우저도 픽셀도 없다 — 전부 순수 기하 산술로, JSON Schema로 계약을 건다
기술왜 이걸 썼나
런타임Bun / Node ≥18테스트·CLI를 bun으로 구동(bun lib/measure.mjs …). Node 호환.
언어순수 ESM JavaScript(.mjs)lib/에 107개 모듈·약 4,100줄. 타입스크립트·번들러 없이 모듈 자체가 계약.
스키마 검증ajv + JSON Schema 2020-12ALT·contract·report·decision·slop 등 10종 스키마, additionalProperties:false로 엄격.
픽셀 보조(선택)playwright-core · cloakbrowser이미지 어댑터가 픽셀에서 쿼드트리 기하를 뽑을 때만. 미학 판정 본체는 브라우저 불요.
테스트bun:test + zero-dep golden스킬·어댑터·fix·slop별 39개 테스트 파일, 244 pass. 결정론이라 골든 스냅샷이 성립.
순수 수학geometry·color·quadtree·similarity넓이·광도가중·복잡도·쿼드트리 여백 — 전부 0나누기·NaN 가드 포함한 자작 산술.
비유로 이해하기

Aesthete는 건축 도면 검사기 같다. 완성된 건물 사진(픽셀)을 보고 "느낌"을 말하는 게 아니라, 도면의 치수(좌표·넓이)만 보고 "무게중심이 왼쪽으로 쏠렸다", "기둥 간격이 리듬 없이 다 똑같다"를 자로 재서 지적한다. 자가 재는 값이라 검사관이 바뀌어도 결과가 같고, 뇌물이 통하지 않는다.

4아키텍처 심화 분석

모든 도메인이 ALT로 모이고, 9개 인지 스킬이 같은 수식으로 측정한 뒤 폐루프로 보정한다

전체를 한 문장으로: 대상을 어댑터가 ALT로 번역 → 9개 인지 스킬이 측정해 report → 동결 루브릭(Contract)과 비교해 PASS/FAIL → 어긋나면 폐루프로 자동 보정 → 다시 도메인으로 export. 아래가 그 흐름이다.

대상(SVG · HTML · PPTX · OOXML · Image) │ adapter (import) ▼ ┌──────────────────────────────────────────────┐ │ ALT = Abstract Layout Tree (도메인 중립 IR) │ │ nodes[{bbox, style, group, kind}] + canvas │ └───────────────┬──────────────────────────────┘ ▼ 9개 인지 스킬이 "같은 수식"으로 측정 ┌──────────────────────────────────────────────┐ │ P0 collision·boundary (하드: 겹침/이탈 = 0) │ │ P1 hierarchy (폰트 단위성 × WCAG 대비) │ │ P2 balance·proximity·whitespace·harmony· │ │ similarity·fluency (Ngo·게슈탈트·보색·유창성)│ └───────────────┬──────────────────────────────┘ ▼ report.json ──► Sprint Contract (동결 루브릭) │ 순수 비교 → PASS / FAIL ▼ FAIL 이면 폐루프 fix : measure → resolve → patch → re-measure (단조 개선 게이트 · P0 서브루프 청소 · 진동/NaN 방지) │ ▼ adapter (export) 보정된 결과 → 원 도메인 (ALT만 무손실, SVG/PPTX는 손실)

핵심 설계 ① — 9개 인지 스킬과 위계(P0/P1/P2)

각 스킬은 관찰·측정·인지효과 3계층이고, 우선순위 티어가 있다. P0(구조 무결성)는 하드 제약이라 미학보다 먼저다.

스킬측정 방식티어
collision쌍별 bbox 겹침 수P0 하드
boundary캔버스 이탈 수P0 하드
hierarchy폰트 스케일 단위성 × WCAG 대비P1
balanceNgo 대칭균형 BMP2
proximity게슈탈트 RANG + 근접붕괴 PDLP2
whitespace점유 쿼드트리 여백률(픽셀 없음)P2
harmony보색 모멘트 평형P2
similarity같은 그룹의 크기·명도·색 일관성P2
fluency읽기 흐름(Z/F 패턴) + 크기-중요도 기울기P2

graph.mjs는 스킬 사이의 세 관계를 선언적 엣지로 둔다: priority(상위 티어가 가독성 선점), conflict(근접↔여백처럼 대립하는 쌍을 캔버스 면적 비례로 연속 감쇠하며 타협), influence(hierarchy가 proximity로 상향 전이). 하드 임계가 아니라 동적 보상 가중치로 충돌을 조정한다.

핵심 설계 ② — 균형은 실제로 이렇게 계산된다 (Ngo BM)

추상 같지만 lib/skills/balance.mjs의 실제 수식은 이렇다 — 각 요소의 광학 무게 = 넓이 × 광도가중(어두울수록 무겁다) × 도형복잡도, 이를 캔버스 중심 기준 사분면 모멘트로 합산한다.

// 광학 무게 W = 넓이(a) × 광도가중(c) × 도형복잡도(s), 투명도만큼 감쇠
const c = luminanceWeight(luminanceFromStyle(n.style)) * opacity;
const w = a * c * s;

// 좌/우, 상/하 모멘트를 중심거리로 가중해 합산
if (r.nx < cx) WL += r.w * dv; else WR += r.w * dv;
if (r.ny < cy) WT += r.w * dh; else WB += r.w * dh;

// BM = 1 − (|BMv| + |BMh|)/2  →  1에 가까울수록 완벽한 평형
const BM = 1 - (Math.abs(BMv) + Math.abs(BMh)) / 2;
if (BM < 0.85) // → "가장 무거운 요소를 중심으로 옮겨라" 위반 보고

주관이 한 톨도 없다. BM < 0.85면 가장 무거운 노드를 지목하며 "왼쪽으로 쏠림(left-heavy)"까지 수치로 말해 준다.

핵심 설계 ③ — 폐루프 자동 보정의 안전장치

fix.mjs는 기본적으로 P0(겹침·이탈)만 청소한다. 미학(P1/P2) 이동은 --aesthetic로 켜야 하고, 이때는 Goodhart 위험(점수는 올라도 실제 미학은 나빠질 수 있음)을 명시적으로 경고한다. 루프에는 단조 개선 게이트(나빠지면 롤백)·진동/NaN 방지가 걸려 있고, 못 고치는 것(폰트·색·의미)은 suggestionOnly로 분리해 사람/재생성에 넘긴다.

핵심 설계 ④ — slop·vuln: 미학과 나란한 형제 측정 층

9스킬이 "얼마나 균형인가"를 연속 점수화한다면, vuln.mjs이산 known-bad 패턴(no-focal·no-rhythm·rainbow·even-split·ai-cliche 등)을, slop.mjsAI 슬롭 시그니처를 잡는다. 특히 slop은 그 유명한 indigo→violet→pink 그라디언트·이탤릭 헤딩(대표적 AI tell)·마케팅 상투어·가짜 정밀 수치를 HTML 소스에서 스캔한다. 둘 다 맥락 인식(artifact_type)으로 위양성을 억제하고, 게이트가 아닌 advisory다.

5디렉토리 구조 해부

lib/가 심장 — 9스킬 + 어댑터 + 엔진 CLI들, 그리고 계약을 거는 schemas/
KLIC-Aesthete/ ├── lib/ ★ 엔진 (순수 ESM .mjs) │ ├── skills/ 9개 측정 스킬 + 레지스트리 │ │ ├── collision · boundary (P0 하드) │ │ ├── hierarchy (P1) │ │ └── balance · proximity · (P2) │ │ whitespace · harmony · │ │ similarity · fluency · symmetry(opt-in) │ ├── adapters/ svg·html·pptx·ooxml·image ↔ ALT (+xml/zip/emu 유틸) │ ├── measure.mjs ALT → 9스킬 측정 → report.json │ ├── contract.mjs Sprint Contract(동결 루브릭) 작성·평가 │ ├── graph.mjs 스킬 관계(priority/conflict/influence) │ ├── fix.mjs 폐루프 보정 (단조 게이트 · P0 청소) ← 450줄, 최대 │ ├── preflight.mjs 생성 전 목표(contract+budget+negation) │ ├── vuln.mjs · slop.mjs known-bad 패턴 · AI 슬롭 시그니처 │ ├── validate.mjs 검증 하네스 (인간 코퍼스 상관) │ ├── tune.mjs 자가진화 튜너 (편집 diff → 파라미터) │ ├── lint.mjs · tokens.mjs 토큰 샌드박스 CI (임의 핵사/폰트 차단) │ ├── structure.mjs 구조 분류/검증 (CI 게이트) │ ├── skill-pre / -post / -gate 에이전트용 facade (권장 진입점) │ └── geometry·color·quadtree·similarity 순수 수학 (NaN 가드) │ ├── schemas/ alt·contract·report·decision·slop 등 JSON Schema 2020-12 ├── examples/ catalog-{good,bad,fixable}.layout.json + contract + 178개 SVG ├── test/ 39개 bun:test (244 pass) + golden.mjs ├── docs/ agent-llm-usage(플레이북) · integration · specs ├── SKILL.md · DESIGN.md 스킬 사용 규약 · 설계 계약서(수학 근거) └── README.md · README.ko.md 영/한 문서 · LICENSE(Modified MIT+Commons Clause)

구조가 말하는 것: 계약과 수학이 코드 곳곳에 못 박혀 있다. schemas/가 입출력을 엄격히 잠그고, DESIGN.md가 "미학 법칙·측정 규칙·도메인 한계"를 사람과 에이전트 모두 파싱할 수 있는 계약서로 둔다. skill-pre/post/gate가 에이전트용 권장 진입점이고, 나머지 엔진 CLI는 그 아래에서 각 측면을 담당한다.

6학습 포인트

디자인 도구에 관심 없어도 훔쳐올, 결정론 시스템·평가 설계의 정수
배울 것 ①

"평가자 = 산술" — LLM-as-judge의 합리화를 구조로 막기

평가를 언어 모델이 아니라 결정론 수식에 맡기면, 편향·아부·사후 합리화가 코드 구조상 발생할 수 없다. 자동 평가 파이프라인을 짤 때 "판정 근거를 재현 가능한 수치로 고정"하는 사고틀은 미학 밖에서도 값지다.

배울 것 ②

인지 미학을 수식으로 — 이론을 실행 가능한 코드로

게슈탈트 근접·Ngo 균형·보색 조화 같은 말랑한 이론을 좌표·넓이 산술로 옮기는 법. balance.mjs의 광학 무게·사분면 모멘트가 산 예시다. "감각적 개념을 측정 가능하게 조작화"하는 연습.

배울 것 ③

도메인 불가지론 IR + 어댑터 — 코어를 한 번만 짜기

SVG·PPTX·HTML을 각각 다루지 않고 중간 표현(ALT)으로 모으면, 새 도메인은 "어댑터 한 쌍"만 추가하면 된다(코어 무수정). 컴파일러·데이터 파이프라인에서 쓰는 IR 패턴을 디자인에 적용한 사례.

배울 것 ④

결정론 폐루프 + 단조 게이트 — 자동 수선을 안전하게

measure→fix→re-measure를 돌리되 나빠지면 롤백(단조 개선)·진동/NaN 방지를 거는 법. 자동 최적화 루프가 지표만 좇다 망가지는(Goodhart) 걸 어떻게 방어하는지 배운다.

배울 것 ⑤

토큰 샌드박스 — 정적 분석으로 "탈출구" 막기

lint.mjs는 승인된 색·폰트 밖의 임의 핵사코드·비표준 폰트를 정적 분석으로 잡아 CI에서 exit 1. 미학 계약과 독립된 게이트다. "규칙을 문서가 아니라 CI로 강제"하는 설계.

배울 것 ⑥

지적 정직함 — 한계를 "선언"하는 엔지니어링

coverage를 measured/partial/unmeasurable로 3분할해 점수를 부풀리지 않고, 검증 상관 ρ≈0.33을 "증명이 아니라 약~중간 신호"라고 못 박는다. 자기 결과를 과대주장하지 않는 태도 자체가 배울 점이다.

실습 아이디어 (짧게)

bun lib/measure.mjs examples/catalog-bad.layout.json을 돌려 report.json을 열고, balanceBM 값과 위반 메시지를 확인하라. 그다음 catalog-good과 비교하면, "수식이 실제로 무엇을 보는지"가 한눈에 들어온다.

7시스템 요구사항 · 라이선스 주의

실행은 가볍다 — 그러나 라이선스는 반드시 먼저 읽어야 한다
항목내용
런타임Bun 권장 / Node ≥18. bun installbun run test(244 pass).
의존성ajv(스키마) · playwright-core · cloakbrowser(이미지 어댑터 픽셀 보조).
진입점에이전트: skill-pre → 생성 → skill-post → decision. 엔진 직접: measure/fix/lint/….
플랫폼순수 JS·브라우저 없음. 픽셀 필요 부분(이미지 영역·local-variance)은 한계 명시.
라이선스Modified MIT + Commons Clause + Media Restrictions — 아래 주의 참조.
상태v1.0(private 패키지). 대중 배포보다 설계 참조·에이전트 스킬 목적.
주의 — 반드시 확인할 라이선스 제약
"오픈소스"가 아니라 source-available

① Commons Clause: Software를 유료로 제3자에게 제공(SaaS·호스팅·화이트라벨 포함)하는 판매가 금지된다. ② Media Restriction: 저작권자의 사전 서면 동의 없이 소스·UI·파생물로 공개 미디어 콘텐츠(유튜브·트위치·블로그의 방송·데모·리뷰·분석)를 만드는 것이 제한된다(특히 상업/자기홍보 목적). 위반 시 권리가 즉시 종료된다. 이 딥다이브는 개인 학습용 정리이며, 공개 배포·미디어 제작 전에는 원 저작권자(KLIC Co., Ltd) 동의를 확인하는 것이 안전하다. © 2026 KLIC Co., Ltd.

8직접 해볼 수 있는 실습 과제

엔진 돌려보기부터, 수식 손검증·나만의 슬롭 규칙·어댑터 작성까지

과제 1. measure로 좋은/나쁜 레이아웃 비교 난이도 ★☆☆

bun lib/measure.mjs examples/catalog-bad.layout.jsoncatalog-good을 각각 돌려 report의 스킬별 score·violations를 표로 정리하라. 목표: 9스킬이 실제로 무엇을 수치화하는지 감 잡기.

과제 2. Ngo BM을 손으로 재현 난이도 ★★☆

노드 3~4개짜리 ALT를 종이에 그리고, W = 넓이×광도가중×복잡도와 사분면 모멘트로 BM을 손계산한 뒤 balance.mjs 출력과 대조하라. 목표: "미학을 수식으로 조작화"를 몸으로 이해.

과제 3. 나만의 slop 규칙 추가 난이도 ★★☆

slop.mjs의 4축(palette·decoration·copy·template)을 읽고, 당신이 싫어하는 AI tell(예: 특정 상투어) 하나를 임계값 override 가능한 시그니처로 추가하라. 목표: 존재-스캔식 휴리스틱 탐지의 구조 체득.

과제 4. ALT 어댑터 한 쌍 작성 난이도 ★★★

아주 단순한 새 포맷(예: 좌표가 든 CSV)을 import(→ALT)하는 어댑터를 짜서 measure에 물려라. 목표: "코어 무수정, 어댑터만 추가"라는 도메인 불가지론을 직접 실현.

과제 5. 폐루프 fix 관찰 난이도 ★★☆

bun lib/fix.mjs examples/catalog-fixable.layout.json --contract examples/catalog.contract.json을 돌리고 fix-log.json에서 각 반복의 점수 변화·단조 게이트·skippedFixes를 따라가라. 목표: 안전한 자동 수선 루프가 어떻게 도는지 관찰.

9관련 기술 심화 학습 로드맵

이 엔진을 온전히 이해하려면 밟을 5주 코스
주차주제무엇을 · 왜
1주차인지 미학 이론게슈탈트 법칙, Ngo 대칭균형, 처리 유창성(Reber), 보색 조화, Birkhoff M=O/C. 스킬들이 "왜 그 수식인지"의 동기를 잡는다.
2주차계산 기하 & 색bbox·넓이·광도(WCAG 대비)·쿼드트리 여백·복잡도. NaN/0나누기 가드. geometry·color·quadtree.mjs를 읽으며 과제 2 수행.
3주차IR & 어댑터 설계중간 표현으로 도메인을 통일하는 컴파일러식 사고, import/export의 비대칭(무손실 vs 손실). 과제 4로 어댑터 제작.
4주차결정론 시스템 & CI 게이트재현성(난수·시각 금지), 골든 테스트, 단조 최적화, Goodhart 방어, 토큰 샌드박스 정적분석. 과제 5로 폐루프 관찰.
5주차평가·검증 방법론휴리스틱 vs data-driven 미학, Spearman/Pearson 상관, Bradley-Terry 쌍체 비교, 순환성·smallSample 함정. "검증됐다"의 문턱을 배운다.

10핵심 키워드 사전

이 문서에 나온 개념들을 한 줄로
ALT (Abstract Layout Tree)
도메인 중립 레이아웃 중간표현. 노드의 bbox·스타일·그룹만 남긴다. 어댑터가 모든 도메인을 이걸로 번역. 유일한 무손실 round-trip.
평가자 = 산술
판정을 LLM이 아니라 결정론 수식이 한다. 사후 합리화·편향이 구조적으로 불가능. 같은 입력 → 같은 출력.
Ngo BM (대칭균형)
BM = 1 − (|BMv|+|BMh|)/2. 광학 무게(넓이×광도×복잡도)의 사분면 평형. 1에 가까울수록 균형. 임계 0.85.
게슈탈트 근접 (RANG · PDL)
가까운 것끼리 묶여 보인다는 법칙을 거리로 수치화. 잘못된 인접(false adjacency)·파편화(fragmented)를 잡는다.
보색 모멘트 · 처리 유창성
색조는 보색 평형으로, 여백·읽기흐름은 "처리하기 쉬울수록 아름답다"는 유창성 이론으로 측정.
Sprint Contract
동결된 루브릭(임계값 묶음). 측정 수치와 순수 비교해 PASS/FAIL만 낸다 → 합리화 격리.
폐루프 보정 · 단조 게이트
measure→resolve→patch→re-measure 반복. 나빠지면 롤백(단조 개선), 진동·NaN 방지. 기본은 P0만, 미학은 opt-in.
토큰 샌드박스
승인 색·폰트 밖의 임의 핵사/폰트를 정적 분석으로 잡아 CI에서 차단. 미학 계약과 독립된 게이트.
slop · vuln
slop = AI 슬롭 시그니처(보라 그라디언트·이탤릭 헤딩·마케팅 상투어). vuln = 이산 known-bad 패턴(no-focal·rainbow·even-split). 둘 다 advisory.
coverage 3분할 · Goodhart
measured/partial/unmeasurable로 나눠 점수 부풀림 방지. Goodhart = 지표만 좇다 실질이 나빠지는 위험(미학 fix의 경계).
도메인 불가지론
코어는 ALT만 안다. 새 포맷 지원 = 어댑터 한 쌍 추가(코어 무수정). 컴파일러의 IR 패턴.

11참고 링크

원문으로 더 파고들기 (라이선스 재확인)