1. 원칙 다섯
2. 계통
다섯 단계. 사람은 마지막에 섭니다
각 단계는 무엇을 통과해야 다음으로 가는지가 정해져 있습니다. 색이 다른 칸이 사람이 서는 자리입니다.
왜
왜
왜
왜
왜
3. 게이트
무엇을 잡고, 이번 빌드에서 어땠는가
선행 운영판(m-SIGNAL)에서 하루에 잘못된 시그널 4건이 발행된 뒤 발견됐습니다. 넷 다 과거 사건을 당주로 옮겨 적은 것이었고, 원인은 하나 — 검색 요약만 보고 발행일을 확인하지 않았습니다. 같은 날 외부 수집 회신이 실적 수치를 2년 전 값으로 적은 조작도 두 번 들어왔습니다. 게이트는 그 두 사고에서 나왔습니다.
| 게이트 | 잡는 것 | HARD 판정 | 이번 빌드 | 출력 |
|---|---|---|---|---|
validate_ia.py | IA 게이트 — 관측축·메뉴·근거 URL의 구조 결함 | BADDATE · FRONTURL · NODATE · NOURL · SLUGURL | 통과 | 회사 33 · 판정 0건 (HARD 0 · SOFT 0) |
validate_intake.py | 수집 회신 판정 — 외부에서 돌아온 것을 그대로 믿지 않는다 | BADDATE · BADSECTOR · BADSEV · BADSRC · BLOCKED · DUPKEY · FORBIDDEN · FRONTURL · NOANCHOR · NOCITE · NODATE · NOURL · ORPHANCITE · OUTOFWINDOW · SLUGURL | 통과 | 파일 38 · 시그널 125 · 인용 257 (tier1 93) · 미해결 310 |
audit_dates.py | 인용 발행일 ↔ 사건일 불일치 — 과거 사건을 최근으로 옮겨 적기 | BADDATE · NOANCHOR | 통과 | [audit_dates] 판정 10건 (HARD 0) — 인박스 125 · 스토어 125 · IA events 218 |
audit_numbers.py | 실적 수치가 다른 시점인데 원 단위까지 일치 — 조작 | BASECONFLICT · REPEAT | 통과 | [audit_numbers] 판정 0건 — 실적 수치 472개 대조 |
audit_links.py | URL 형태·차단 도메인·산출물 최신성·외부 호출 | BADURL · BLOCKED · FRONTURL · SLUGURL · STALE_ART · URLDEAD | 빌드 후 검증에서 | 산출물 최신성을 보는 게이트라 이 화면 안에서 돌리면 결정론이 깨진다. rebuild_all.py의 빌드 후 검증에서 돈다 |
audit_style.py | 문체 — 질문형·서술형 제목, AI 상투어, 조사 띄어쓰기, 표 말끝 섞임 | CLICHE · HEADASK · HEADTAIL · SPACING · TABLEMIX | 통과 | [audit_style] 판정 22건 — 화면 43개 |
audit_dupes.py | 같은 사건이 두 행으로 적재됨 | DUPKEY · DUPTITLE | 통과 | [audit_dupes] 판정 41건 (HARD 0) — 시그널 250건 검사 |
audit_axes.py | 축 어휘가 정본을 벗어나 두 층이 안 이어짐 — 「없음」과 「못 이음」의 혼동 | AXISLABEL · JOINDROP | 통과 | [audit_axes] 판정 2건 (HARD 0 · soft 2) — 시그널 125 · 전이 58 |
audit_collect.py | 수집 축이 끊겼는데 산출물은 정상으로 보임 — 「안 들어온 것」 | AXISDROP · SRCSTALE | 통과 | [audit_collect] 판정 2건 (HARD 0 · soft 2) — 원천 5층 |
validate_monthly.py | 월간 층 회신 판정 — rcpNo·DOI·공보번호 형태 · 회사·축 매핑 · 검증자 판정(DEAD/MISMATCH 제외) | — | 통과 | [validate_monthly] 파일 4 · 항목 841 · 판정 358건 (HARD 0 · soft 358) |
audit_scope.py | 대조량 — 「볼 것이 없었다」가 「통과」로 보고되는 것을 막는다 | — | 통과 | [audit_scope] 대조량 — 코퍼스 14종 · 기준선 14종 |
audit_docs.py | 문서 표류 — 손으로 적은 수가 실측과 다른가 · 판정마다 강제 수단이 적혀 있는가 | — | 빌드 후 검증에서 | 산출물(단일본)의 화면 수를 세는 게이트라 이 화면 안에서 돌리면 직전 빌드를 읽게 된다. rebuild_all.py의 빌드 전 게이트에서 돈다 |
audit_design.py | 화면 규약 — 임의 px·토큰 밖 색·의미 클래스가 있는 조합의 인라인 재작성 | — | 통과 | [audit_design] 판정 0건 (HARD 0 · soft 0) — 인라인 style 215곳 (상한 220) |
audit_canary.py | 게이트가 아직 도는가 — 심어 둔 결함을 잡지 못하면 실패 | — | 통과 | [audit_canary] 생존 14/14 |
게이트가 아닌 도구 4종 — 네트워크 사용으로 분리
| 도구 | 하는 일 | 게이트와의 관계 |
|---|---|---|
check_urls.py | URL 실재 검사 — 형태는 멀쩡한데 존재하지 않는 URL을 잡는다 | 결과를 data/url_check.json에 남기고, audit_links가 그것을 **오프라인으로** 읽는다 |
measure_ai.py | AI 구간 재현율·회수율 실측 | 주장하지 않고 잰다. 결정론 구간은 audit_canary가 따로 본다 |
export_metrics.py | 실측값 내보내기 — 기획서를 쓰는 쪽에 넘길 숫자 | 손으로 옮기면 어긋난다. 정본과 산출물을 읽어 그 시점의 값을 낸다 |
build_dist.py | 배포 패키지 조립 + **배포물 자체 감사** | 게이트의 경계는 인박스가 아니라 배포 폴더까지다 |
4. 교정 플로우
틀린 것이 발견되면
게이트를 통과시키는 것이 목적이 아니라 원인을 없애는 것이 목적입니다. 여섯 단계를 건너뛰지 않습니다. 틀린 것을 흔적 없이 지우지 않습니다.
왜
왜
왜
왜
왜
왜
판정 코드 사전 25종 — 뜻과 손댈 곳
| 코드 | 등급 | 뜻 | 손댈 곳 |
|---|---|---|---|
| STALE | HARD | 인용 기사가 사건일보다 30일 이상 과거 | 과거 사건을 당주로 옮겨 적은 것이다. 시그널을 뺀다 |
| FUTURE | HARD | 인용 발행일이 사건일보다 미래 | 날짜 오타이거나 그 사건의 인용이 아니다 |
| REPEAT | HARD | 같은 지표가 다른 시점인데 원 단위까지 일치 | 1차 자료로 확인하고 정정하거나 뺀다 |
| SLUGURL | HARD | 사람이 읽는 슬러그 URL | 지어낸 것이다. 배치째 의심한다 |
| FRONTURL | HARD | 대문·섹션 URL 단독 인용 | 기사가 아니다. 뺀다 |
| BLOCKED | HARD | 시장조사 SEO·리포트밀 도메인 | 1차 출처로 대체하거나 그 항목을 버린다 |
| NOURL | HARD | 근거 URL 없는 사건 | 근거 없는 사건은 뺀다 |
| NODATE | HARD | 인용에 발행일 없음 | 발행일 미확인 인용은 싣지 않는다 |
| FORBIDDEN | HARD | 외부 노출 금지어 포함 | 산출물이 사외로 나간다. 즉시 제거 |
| BADSEV / BADSECTOR / BADSRC | HARD | enum 밖의 값 | 정본은 collect_spec.py 하나다 |
| DUPKEY / DUPURL / DUPTITLE | HARD | 같은 사건이 두 행 | 같은 이슈는 한 행으로 갱신한다 |
| STALE_ART | HARD | 산출물이 입력보다 오래됨 | 생성기·데이터를 고치고 재빌드하지 않았다. 과거 실제 사고 |
| EXTCALL | HARD | 외부 리소스 호출 | 사내망 CDN 차단 환경에서 깨진다 |
| URLDEAD | HARD | 근거 URL이 실제로 사라짐(404/410) | 대체 근거를 찾거나 그 항목을 뺀다 |
| BADRCP / BADDOI / BADPUB | HARD | 월간 층 식별자(rcpNo·DOI·공보번호) 형태가 틀리거나 url과 다름 | 지어낸 것이다. 항목을 뺀다 |
| DEAD (검증자) | HARD | 검증 에이전트가 식별자를 열어 사멸·불일치로 판정 | 정본에 넣지 않는다. 인박스에는 감사용으로 남긴다 |
| UNCHK / NOAXIS (월간) | soft | 검증자가 못 본 항목 · 관측축 매핑 없음 | 사람이 본다. 축 매핑이 비면 그 회사 축 정의를 의심한다 |
| URLUNCHECKED | soft | URL 실재를 확인한 적 없음 | 형태만 통과했다. check_urls.py를 돈다 |
| URLERR | soft | 연결 실패·타임아웃 | 사멸과 다르다. 재검사한다 |
| HALFCONFLICT | soft | 같은 시점인데 값이 갈림 | 양쪽 병기. 한쪽을 고르지 않는다 |
| IMPERATIVE | soft | 영향 서술이 권고·명령형 | 서술형만. '해야 한다' 대신 '~로 보도됐다' |
| NOAXIS | soft | 대응 관측축을 밝히지 않음 | 축에 안 걸리면 이 회사 시그널이 아니다 |
| NOTIER1 | soft | 1차 자료 인용 0건 | 보강하거나 confidence_note에 명시 |
| XCOMPANY | soft | 같은 근거가 여러 회사에 걸림 | 계열사 시스템에서는 정상일 수 있다. 사람이 본다 |
| UNVERIFIED | soft | 명부 재검증에서 확인 못 함 | 추측으로 OK를 내지 않는다 |
5. AI 구간과 사람 구간
후보·축 매칭·요약까지가 AI, 형태 검사는 결정론 코드, 진위·채택·발행은 사람. AI 구간의 재현율 100%를 주장하지 않습니다 — 그래서 그 위에 결정론 층을 둡니다.
| 단계 | 주체 | 하는 일 | 보장 범위 |
|---|---|---|---|
| 수집 — 후보 발굴 | AI | 회사별 관측축에 걸리는 사건을 공개 소스에서 찾는다 | 재현 보장 없음. 온도 0이어도 동일 출력을 약속하지 않는다 |
| 수집 — 축 매칭 | AI | 찾은 사건이 어느 관측축에 걸리는지 제안한다 | 축 밖의 값을 내면 게이트가 BADAXIS로 거부 |
| 수집 — 요약 | AI | 사실 → 수치 순으로 요약문을 만든다 | 결론·전망·대응 방향은 쓰지 않는다 |
| 판정 — 형태 검사 | 결정론 | URL 형태·발행일 정합·enum·중복·금지어 | 같은 입력이면 항상 같은 판정 |
| 판정 — 진위 | 사람 | 주장이 사실인가 | 게이트 셋을 다 통과해도 진위는 사람이 본다 |
| 채택 — 적재 여부 | 사람 | 무엇을 싣고 무엇을 버리는가 | AI는 후보와 근거를 내는 데까지 |
| 발행 — 배포 | 사람 | 배포물은 나가면 되돌릴 수 없다 | 발송 자동화하지 않는다 |
AI 구간 실측
주장하지 않고 잽니다
회사별 실측
| 회사 | 축 라벨 | 메뉴 | 근거 URL | 겹친/합집합 |
|---|---|---|---|---|
| SKIET | 0.0 | 0.278 | 0.3 | 3/10 |
| SK오션플랜트 | 0.0 | 0.278 | 0.1 | 1/10 |
| SK디앤디 | 0.0 | 0.048 | 0.286 | 2/7 |
| SK엔무브 | 0.143 | 0.833 | 0.429 | 3/7 |
| 드림어스컴퍼니 | 0.0 | 0.176 | 0.25 | 1/4 |
| SK브로드밴드 | 0.0 | 0.263 | 0.0 | 0/16 |
| SK이노베이션E&S | 0.0 | 0.5 | 0.231 | 3/13 |
| SK리츠 | 0.062 | 0.643 | 0.5 | 2/4 |
| SK에코플랜트 | 0.133 | 0.533 | 0.8 | 4/5 |
| SK시그넷 | 0.133 | 0.211 | 0.231 | 3/13 |
| 티맵모빌리티 | 0.0 | 0.294 | 0.231 | 3/13 |
| SK플라즈마 | 0.067 | 0.429 | 0.067 | 1/15 |
| SK팜테코 | 0.0 | 0.353 | 0.455 | 5/11 |
| SK주식회사AX | 0.133 | 0.615 | 0.4 | 4/10 |
| SK에코플랜트머티리얼즈 | 0.6 | 0.917 | 0.231 | 3/13 |
| SK지오센트릭 | 0.062 | 0.467 | 0.154 | 2/13 |
| SK에너지 | 0.059 | 0.176 | 0.067 | 1/15 |
| SK플래닛 | 0.0 | 0.312 | 0.286 | 2/7 |
| 11번가 | 0.062 | 0.294 | 0.25 | 3/12 |
6. 로드맵
현재 위치 = 데이터 실측 · 수기 금지
| 단계 | 무엇 | 실측 | 상태 | 비고 |
|---|---|---|---|---|
| 0 | 신뢰 | 게이트 14종 + 빌드 후 검증 2종 · 판정 코드 25 · 카나리아 결함 주입 + 정상본 음성 검사 | 운영 | 정정 46건 · 판정 근거 71건이 게이트와 함께 쌓였다. 그중 둘은 정상 데이터를 잡던 과잉 게이트를 게이트 쪽을 고쳐 푼 것 |
| 1 | 명부 · 관측축 | 33사 전건 재검증 · 관측축 309개 (회사마다 다르다) | 운영 | 공정위 지정 기준일과 재검증일을 화면에 함께 표시한다. 이탈·소멸도 지우지 않고 상태를 붙인다 |
| 2 | 주간 층 — 시그널 | 시그널 125건 · 인용 257건 · 계열사 간 전이 58건 (측정 불가 65건 별도 기재) | 운영 · 첫 전주 대비는 다음 주차 | 전이는 근거 있는 연결만 싣고, 잴 수 없는 것은 「측정 불가」를 정식 결과로 남긴다 |
| 3 | 월간 층 — 원장 | 공시 329건 · 논문 154건 · 특허 76건 · 사업장 251건 | 첫 회차 | 찾지 못한 것 109건·두지 않은 것 59건 전건 기재. 독립 검증자가 전 트랙을 반박 검사해 논문 30편을 실재-비저술로 제외했다 |
| 4 | 연결 — 두 축 | 긴급 축(생산영향 등급 PI-0~3 알람 기준) ↔ 동향 축(여섯 층) 상호 이식 조건 명문화 | 기준 확정 · 실물 연결은 조인 대기 | 월간 층 사업장 원장이 긴급 축 명부가 되는 조인이 「다음 여섯」의 마지막 항이다 |
| 5 | AI 실측 | 재현율·리서치 일치도·회수율 | 측정값 게시 | 측정 전에는 수치를 쓰지 않는다. 잰 값만 §5에 온다 |
다음 여섯 — 있는 기계 켜기 우선
| 순위 | 무엇 | 왜 여기부터 |
|---|---|---|
| 0 | 주간 전주 대비 첫 값 | 시계열은 두 점부터다. WW35가 첫 점이고 WW36 수집이 끝나야 「전주 대비」칸이 처음 채워진다 |
| 1 | 월간 층 2회차 | 첫 회차는 스냅샷이다. 전월 대비 증감이 생겨야 「층」이라는 이름값을 한다 |
| 2 | P0·P1에 1차 자료 필수 래칫 | 선행 운영판 실측 — 심각도가 높을수록 1차 자료가 없다. P0의 89%(19건 중 17건 · m-SIGNAL 인박스 WW01~WW35 · 2026-08-31 실측 · 근거는 그쪽 저장소). 모수가 19라 한 건이 5%p를 움직인다. 급보일수록 원문이 늦게 나오는 구조라, 나중에 원문으로 되짚는 절차가 답이다. 소급하지 않고 기준선 뒤로만 요구한다 |
| 3 | 검증자 잔여분 재검사 큐 | BLOCKED(봇 차단)·UNCHECKED는 사멸이 아니라 미확인이다. 미확인을 확인으로 승격하는 별도 큐를 돌린다 |
| 4 | 실행 기록 한 줄 | 입력 해시 · 게이트 판정 · 산출물 지문을 실행마다 한 줄로 남긴다. 부품(지문·검증결과)은 이미 있고 묶는 일만 남았다 |
| 5 | 사업장 × 재난 판정 조인 | 월간 층의 사업장 원장이 긴급 축(생산영향 등급 PI-0~3)의 명부가 된다. 두 축이 실제로 만나는 지점이고, 외부에서 복제할 수 없는 연결이다 |
하지 않기로 한 것 8 — 기록 = 재논의 차단
| 하지 않는다 | 왜 |
|---|---|
| LLM으로 요약·초록을 생성해 본문을 채우기 | 재현 불가·환각. 자른 것은 원문으로 되돌아가지만 지어낸 것은 되돌아갈 데가 없다. 본문은 원문 인용과 결정론 집계로만 만든다 |
| 발송 자동화 | 배포물은 나가면 되돌릴 수 없다. 만들어 두고 사람이 보낸다 |
| 별도 그래프 DB | JSON 정본 + 단일 HTML로 같은 효용을 낸다. 폐쇄망에서 열리는 것이 그래프 질의보다 먼저다 |
| 미래 시나리오·확률 예측(기본/상승/하락) | 가설을 세우지 않고 **가설이 깨지는 지점**을 표시한다. 관측축의 cadence·why가 그 지점이며, 정보분석 실무에서 Indicators/Signposts of Change 라 부르는 것과 같은 자리다. 형제 시스템이 이 결정을 원장에 안 적어 두었다가 걷어낸 시나리오 코드가 빌더에 그대로 남았다 — **조건이 없으면 결정이 아니라 관습이 되고, 관습은 코드를 못 지운다.** 그래서 여기 적는다 |
| 사건에 우리가 기회·위기의 부호를 붙이기 | 전이 원장은 `direction` 을 들지만 그것은 **근거 문서가 말한 부호**이지 우리 판정이 아니다. 화면에 올릴 때는 부호만 올리지 않고 **누가 그렇게 말했는가를 함께** 올린다. 귀속 없이 올리면 `INTERP` 게이트가 잡는다 — 우리가 만든 게이트에 우리가 걸린다 |
| DART·특허 전면 자동 수집 | 엔티티 해소·별칭 유지보수가 운영 인원 한계를 넘고 rate·약관 리스크가 있다. 월간 배치 + 독립 검증자로 간다 |
| AI 구간 재현율 100% 주장 | 온도 0이어도 동일 출력이 보장되지 않는다. 실측값(0.077~0.401)을 그대로 보고한다 |
| 선행판 원문 화면 반출 | 사내 소재 관점이 담긴 원문 hub는 내보내지 않는다. 시스템 기준서와 SK SIGNAL이 그 자리를 대신한다 |
확장성 — 교체 경계 실측(배터리판 → 그룹판)
| 요소 | 도메인 변경 시 | 비고 |
|---|---|---|
| 계열사 명부 · 관측축 | 교체 | 회사·축은 도메인의 것이다. 구조(key·근거 URL·재검증 기록)는 재사용 |
| 소스 티어 · 금지어 · enum | 교체 | 값은 바뀌어도 「정본 한 곳을 세 경로가 읽는다」는 유지 |
| 게이트 · 카나리아 | 유지 | 날짜 정합·수치 조작·URL 형태·중복·금지어 판정은 도메인을 모른다 |
| 정본 → 빌드 → 검증 파이프라인 | 유지 | 단일 정본 · 결정론 · 외부 호출 0 · 사람이 마지막 |
| 교정 플로우 · 이력 규율 | 유지 | C-번호·G-번호와 「흔적 없이 지우지 않는다」는 어느 도메인에서도 같다 |
7. 정본 목록
어느 값이 어디 사는가. 같은 값을 두 곳에 두면 한 곳은 반드시 낡습니다. 이 저장소에서 그 형태로 다섯 번 정정했고, 다섯째는 제출물이 틀렸습니다.
| 정본 | 무엇 | 규율 |
|---|---|---|
| data/registry.json | 계열사 명부 33사 · 지분 · 상태 | 공정위 지정 + 전건 재검증 |
| data/company_ia.json | 회사별 관측축 · 메뉴 · 정보원 · 안 보기로 한 것 | 리서치 판정 결과 |
| data/propagation.json | 계열사 간 전이 · 경로 · 부호 · 시차 | 근거 있는 연결만 |
| data/monthly.json | 월간 층 — 공시 · 논문 · 특허 · 사업장 | 검증자 판정 통과분 |
| data/entity_aliases.json | DART 등록 상호 매핑 | 수집기가 조용히 실패하는 것을 막는다 |
| data/source_tiers.json | 인용 tier 판정 규칙 | 사람 감으로 등급을 매기지 않는다 |
| data/fin_baseline.json | 확정 실적 기준선 — 매출·영업이익·순이익 | OpenDART 2025 사업보고서 · 건마다 접수번호 |
| data/entity_aliases.json의 corp_code | DART 법인 고유번호 | 전체 118,810 법인과 대조해 확보. 회사명으로 조회하지 않는다 |
| data/url_check.json | URL 실재 검사 결과 | 게이트가 아니라 별도 도구가 만든다 |
| data/bridge_spec.json | 두 축의 역할 · AI 관여표 | m-BRIDGE 연결 화면 정본 |
| store/signals.json | 적재된 시그널 | 판정 통과분만 |
| src/collect_spec.py | enum · 금지어 · 차단 도메인 · 수집 회차 창 | 세 경로가 이것 하나를 읽는다 |
| src/rebuild_all.py | 절차 — 게이트와 빌드 순서 | 문서에 나열하지 않는다 |
| src/theme.py | 화면 토큰 — 색 · 타이포 6단 · 의미 클래스 | m-SIGNAL 승계 |
8. 없음을 가르는 법
이 시스템이 「없다」를 한 값으로 두지 않는 이유입니다. 뭉치면 그 게이트는 매번 붉고 아무도 보지 않습니다. 그리고 화면에서 「없음」이 「정상」과 같은 모양이 되면 아무도 알아채지 못합니다.
실측 하나 — 전이 원장을 시그널에 잇기 전에 조인율을 먼저 쟀더니 115건 중 71건이 「관련 이력 없음」으로 뜰 상태였고, 그중 진짜 없음은 8건이었습니다.
| 갈래 | 무슨 뜻 | 어떻게 다루나 |
|---|---|---|
| 전이 이력 없음 | 정말로 그 회사에 걸린 전이가 없다 | 판정이다 |
| 축 어휘 불일치 | 전이는 있는데 축 이름이 갈려 못 이었다 | 우리 데이터 문제다 |
| 전이 원장 축 미기재 | 전이는 있는데 원장이 축을 안 적었다 | 우리 데이터 문제다 |
| 미확정(AXISPEND) | 아직 회차를 닫을 때가 아니다 | 구멍이 아니다 |
| 지금 끊김(AXISDROP) | 닫힌 회차인데 들어온 것이 0 | 고장이다 |
| 과거 구멍(AXISHOLE) | 지나간 회차의 누락 | 보고만 하고 막지 않는다 |
| 못 잼(NOCLOCK) | 신선도를 잴 날짜 자체가 없다 | 나쁜 것과 다르다 |
| 미구축(NOROUTE) | 수집 경로를 두지 않기로 했다 | 고장이 아니라 의도다 |
9. 화면 규약
화면이 무엇을 보여 주느냐만큼 어떻게 적느냐가 규율입니다. 같은 뜻을 매번 손으로 다시 조립하면 화면마다 조금씩 달라지고 어느 것이 맞는지 아무도 모릅니다.
| 규약 | 내용 | 근거 |
|---|---|---|
| 제목은 명사 | 설명·이유는 제목에 붙이지 않고 바로 아래 註로 내린다. 대시 뒤에 올 수 있는 것은 한정어뿐이다 | G-052 |
| 메뉴는 분류 | 최상위는 매주 여는 것만. 33사는 대분류 7로 접는다. 그룹 이름은 목적으로 짓는다 | G-049 |
| 의미 클래스 | 반복 조합을 손으로 다시 조립하지 않는다. 간격은 그릇이 든다 | G-046 |
| 타이포 6단 | 연속 크기를 쓰지 않는다. 6단 밖으로 나가면 「이 글자는 몇 px 인가」를 아무도 답할 수 없다 | G-046 |
| 비어 있음을 감추지 않는다 | 기계가 못 고른 것을 고른 것처럼 보이게 하는 순간 화면이 사실과 달라진다 | G-048 |
10. 하지 못하는 것
약속할 수 없는 것은 약속하지 않습니다. 한계를 빼면 나머지가 전수 검증처럼 읽힙니다.
| 한계 | 내용 |
|---|---|
| audit_dates는 형식만 본다 | URL과 날짜가 멀쩡하면 통과한다. 내용이 그 사건인지는 보지 않는다 |
| audit_numbers는 코퍼스에 과거 값이 있어야 잡는다 | 처음 보는 조작은 못 잡는다. 공백은 data/fin_baseline.json에 사람이 심어 메운다 |
| URL을 실제로 열지 않는다 | 게이트는 외부 호출 0 이다. 실재는 별도 도구(check_urls)가 네트워크로 검사해 파일로 남기고, 게이트는 그 파일을 오프라인으로 읽는다 |
| 반입 시험은 자동화돼 있지 않다 | 소스 zip을 풀어 재빌드하는 시험은 사람이 돌려야 안다. ZIP_DIRS 누락이 재발해도 잡는 게이트가 없다 — 봉인마다 한 번 돌린다(C-035) |
| 바이너리 안의 글자는 못 본다 | PDF·PNG·docx는 zip 안이든 밖이든 텍스트로 읽지 않는다. 밖에서 만든 PDF를 넣으면 아무도 안 본다 |
| 링크 검사는 파일 존재까지다 | 앵커(#id)가 실제 뷰에 닿는지는 안 본다. 도달 불가 뷰(C-036)를 잡은 것은 이 검사기가 아니라 사람의 클릭이었다 |
| 명부는 낡는다 | 공정위 지정 기준일 이후 변동을 자동으로 알 수 없다. 재검증일을 화면에 표시한다 |
| AI 구간의 재현율을 100%로 약속하지 않는다 | 온도 0이어도 동일 출력이 보장되지 않는다. 결정론 구간과 갈라 쓰고 실측값을 그대로 보고한다 |
| 관측 경계는 외부까지다 | 사내 재고·계약 조건·발주 판단은 관측 대상이 아니다. 언론이 자사를 보도했더라도 '~로 보도됐다'로 쓴다 |
수집에서 실측된 함정 — DART · 비상장 3층 · 접근 불가 도메인
- 공시검색은 POST 전용. GET은 미지원
- 본문 뷰어는 세션 쿠키+Referer 2단계. 쿠키 없이 부르면 485바이트 빈 응답이 온다
- 정정 공시가 같은 사안에 여러 rcpNo로 남는다. 최신 rcpNo만 채택
- 회사명 한글 검색 금지 — 등록 정식상호 불일치(SK바이오팜→'에스케이바이오팜'). 종목코드 기반
- 1층 모회사 사업보고서 「II. 사업의 내용 › 7. 기타 참고사항」 — 전용 절이 있는지 먼저 본다
- 2층 연결재무제표 주석 — 특히 「우발부채 및 약정사항」. 사업 리스크가 여기 있다
- 3층 연결 영업부문 주석 — 기타부문에 묻힌다. 마지막에 본다
| 도메인 | 증상 |
|---|---|
dart.fss.or.kr | GET 검색 미지원 — POST 전용. 본문 뷰어는 세션 쿠키+Referer 2단계 |
egroup.go.kr | JS 렌더링 |
fnnews.com | 403 |
html.duckduckgo.com | CAPTCHA |
kisrating.com | 간헐 500 |
law.go.kr | JS 렌더링 |
search.naver.com | 페처 차단 |
sk-on.com | TLS 인증서 불일치(altnames가 *.skenergy.com 뿐) |
thebell.co.kr | 본문 빈 응답 |
yna.co.kr | 페처 차단 |
src/collect_spec.py 가 단일 정본