코어 기준선 통과 확인 — F·G·H·I 동결 판정
무엇을
6주차 «종료 시점»에 코어(A~E, C-5) 기준선 통과 여부를 판정하고,
F·G·H·I 착수 여부를 결정한다(CLAUDE.md §1 범위 관리 규칙).
⚠ 시점이 있는 조건이다 — 상시 금지가 아니다
2026-08-27 에 이 문장에서 「6주차 종료 시점에」가 빠져 있었고, 그 탓에
시한 있는 조건이 상시 금지로 읽혀 확장 논의가 6건 멈췄다(decisions/022).
원문은 「6주차까지는 자유, 그때 판정」이다. 이 티켓은 그 «그때» 를 실행하는 자리다.
무엇을 보고 판정하는가
- B(검색) — Recall@5 ≥0.70(오류 없음) / ≥0.60(오류 10%)
- C-5 — 누락 0건. ⚠ 잰 범위 안에서만 성립한다 — 표본 0건인 패턴은 「통과」가 아니라 「측정 불가」다
- E — 하네스가 실제로 돌고 값에 측정일·커밋·명령·표본 수가 붙어 있다(§5)
- 여러 번 실행한 값 중 최저치로 고정한다(절대 원칙 4)
게이트를 켜는 것과 수치가 나온 것은 다른 결정이다
STATE.md 가 적어 둔 그대로다 — 절대 원칙 5(미달 시 CI 실패)를 켜면
미구현 항목 때문에 계속 빨간불이 된다. 무엇을 게이트에 넣고 무엇을 「측정 불가」로 둘지를
여기서 정한다. 선행 티켓이 w2-baseline-gate다.
⚠ 2026-09-19 — 판정일이 11일 남았는데 쓸 수 있는 공식 수치가 없다
판정일은 6주차 종료 = 2026-09-30이다(1주차 08-20~08-26 기준). 그런데 —
STATE.md의 실측값 블록은 2026-09-09 값이다:retrieval 0.833/0.659 ✅·masking 누락 2 ❌·closure_gate측정 불가 ·trigger·compliance측정 불가. 지금 판정하면 C-5 절대 규칙 미달로 동결이 걸린다.- 그 뒤 2주 동안 들어온 것(dense+리랭커
0.979/0.919· NER · C-5 규칙 보강 누락 0 · 컴플라이언스 규칙 v1)은 전부 로컬 측정이고 하네스 기록(eval_run)이 아니다. 절대 원칙 2·5 상 그 값으로는 판정할 수 없다.
그래서 판정 전에 두 가지가 먼저다.
① 무엇을 판정 대상 구성으로 삼을지 정한다 — 이게 순서상 먼저다.
운영은 규칙 + BM25로 돌고(이미지에 torch 가 없다), 로컬 최고 구성은 NER + dense + 리랭커다.
로컬 최고 수치로 「통과」를 선언하면 운영에서 성립하지 않는 통과가 된다. decisions/208(운영에 NER·임베딩을
올릴지)이 아직 «제안» 상태라 그 결정이 곧 판정 기준선의 정의다. 둘 다 재고 어느 쪽을 기준선으로 고정할지를 판정문에 적는다.
② 현재 코드로 하네스를 다시 돌려 기록한다(--record — 커밋·골든셋·표본 수가 함께 남는다).
ES·모델이 필요해 이 저장소의 윈도 머신에서는 못 돈다 — 류준 님 맥이나 측정 전용 인스턴스(런북 22장) 몫이다.
docker build -t callguard-es:local infra/elasticsearch/ # 9200 에 띄운다
.venv/bin/python scripts/index_knowledge_base.py --to-es --recreate # 98조항
ELASTICSEARCH_URL=http://localhost:9200 .venv/bin/python scripts/run_eval.py --runs 3 --record
볼 것: ① masking 이 09-09 의 ❌(누락 2)에서 정말 0 으로 갔는지 ② NO_SAMPLES 가 어디에 남는지 —
골든셋 v1-150(156건)에 C-5 표본은 일곱 패턴 다 있지만(P1 4·P2 2·P3 3·P4 5·P5 4·P6 7·P7 3),
f2_case 는 여전히 0건이라 F-2 는 측정 불가 그대로다(09-19 파일 실측).
2026-09-21 — 운영 구성으로 재측정했다
도커 없이 ES 9.5.1 + nori 를 zip 배포판으로 띄워(운영과 같은 버전·같은 설정) 98조항을 적재하고 하네스를 돌렸다.
커밋 261bce4-dirty · 골든셋 v1-150(156건) · ES 9.5.1+nori · 기록 DB 없음(run_id 없음)
python scripts/run_eval.py --runs 3 --no-ner --retriever bm25 # 3회 중 최저치
[retrieval] recall@5 0.833 ✅ · mrr 0.666 ✅ · n 96
[masking] 누락 0 ✅ · 오분류 0 · 과잉 0.0 · n 28 ← 09-09 의 ❌(누락 2)가 풀렸다
[closure_gate] 측정 불가(0건) · [trigger] 측정 불가(의도적 미배선)
오류 내성(같은 구성): 검색은 오류 10% 에서 0.812(기준 ≥0.60) · 20% 에서도 0.792.
⚠ C-5 는 오류가 들어가면 뚫린다 — 0% 0건 → 5% 2건 → 10% 3건 → 15·20% 4건. 「누락 0」은 오류 없는 전사에서만 성립한다.
수치·그림·한계는 STATE.md 「실측값」과 jekyll/assets/error-tolerance-2026-09-21.png.
기준선 구성은 정해졌다(decisions/121) — 모델은 전용 GPU EC2 에 올린다. 판정일까지 그것이 운영 경로에 붙어 있으면 모델 구성,
아니면 운영 구성(위 값)이 기준선이고 모델 구성은 로컬 측정 참고치로 나란히 적는다. 떠 있지 않은 구성의 수치로 통과를 선언하지 않는다.
⚠ 판정문에 같이 적을 것 — ① C-5 「누락 0」은 오류 없는 전사 한정이다(위 곡선) ② 쌍둥이 조항 2건은 구분 단서가 없는 기준으로
채점된다(decisions/123) ③ 주입기가 실측 오류의 46.9% 를 흉내 내지 못해 곡선이 낙관 쪽이다 ④ F-2 는 측정 불가라 설계 문서로 갔다(118).
완료 조건
- 판정 대상 구성(운영 구성 / 최고 구성)을 정해 판정문에 적는다 —
decisions/121 - 판정 결과(통과 / 미달)를 숫자와 함께
jekyll/_logs/에 남긴다 - 미달이면 F·G·H·I 를 착수하지 않는다 — 대신 8주차 확장 택1을 닫는다
- 통과면 무엇이 통과했고 무엇이 「측정 불가」인지를 갈라 적는다
- 성공 조건은 F-2 가 아니라 STT 오류 내성 실험 + 검색 품질 개선 수치임을 판정문에 다시 적는다
보드 최신화 (2026-09-21, 정성윤 — 사용자 지시로 전체 보드를 한 번에 맞췄다).
todo→in-progress. 09-21 에 운영 구성 재측정과 기준선 구성 결정(121)이 끝났으니 착수한 것이 맞다. 남은 것 — 판정문(09-30) · 모델 구성 값(w6-model-config-remeasure) ·--record(기록 DB 가 없어run_id를 못 남겼다).
판정문 초안 (2026-09-21, 정성윤) —
_project/baseline-check-2026-09-30-draft.md(비공개). 기준 · 지금 있는 값과 네 조건 · 측정 불가 목록 · 한계 넷 · 판정일 명령을 채워 두었다. 판정일에 빈칸을 채워_logs/로 옮긴다. ⚠ 지금 가장 약한 것은 E — 09-21 값에run_id가 없다. 판정일 전에--record로 한 번 더 돌린다. 모델 배치는decisions/124(09-22)로 정해졌다 — NER·임베딩만 운영 노드에 CPU 로(리랭커 제외). F-2 는decisions/125로 「구현 완결」이 됐고 골든셋에f2_case99건이 들어와 이제 잰다 — 초안의 측정 불가 목록을 그에 맞춰 고쳤다(09-22).
2026-09-22 — 선행 조건 풀림 (정성윤)
w2-baseline-gate 가 닫혔다(decisions/134). 판정일에 할 일은 판정문 초안(_project/baseline-check-2026-09-30-draft.md)대로 운영 /health 확인 + 검색 기준선 확인 한 번:
ELASTICSEARCH_URL=… python scripts/run_eval.py --runs 3 --no-ner --retriever bm25 --report-json r.json && python scripts/check_baseline.py r.json.
09-22 에 이 머신에서 같은 명령으로 Recall@5 0.853 · MRR 0.686(n 102) — 통과를 확인했다(기록 DB 없음, 공식 값은 류준 run_id 8·9).
2026-09-30 — 판정일: 통과 (정성윤)
운영 /health 에 pii_ner·retrieval_dense 가 있어 운영 실구성(run_id 8) 으로 판정했다 — 통과. 판정문은 진행 기록 2026-09-30-02-seongyun이 정본이다(초안 _project/baseline-check-2026-09-30-draft.md 는 옮기고 지웠다).
B 0.971(n 102) · C-5 누락 0(n 40, 오류 없는 전사 한정) · F-2 1.0(n 99, 규칙표 안) · E run_id 8·9. 곡선은 한 세대 낡은 값(e966b62, n 96)이라 그렇게 적었다. F·G·H·I 는 판정과 무관하게 착수하지 않는다(decisions/132).