모델 버전을 올릴 때마다 인젝션 테스트를 다시 돌리는 이유: 게이트를 직접 짜봤다
LLM 파이프라인에 프롬프트 인젝션 회귀 스위트를 직접 돌렸다. 순진한 키워드 가드는 11건 중 2건, 구조적 가드는 11건 전부를 잡았고, 내가 저지른 리팩터링이 떨어뜨린 탐지까지 게이트가 집어냈다. 모델 버전을 올릴 때마다 다시 돌려야 하는 이유를 실측으로 정리했다.
archive
356 · 페이지 4
LLM 파이프라인에 프롬프트 인젝션 회귀 스위트를 직접 돌렸다. 순진한 키워드 가드는 11건 중 2건, 구조적 가드는 11건 전부를 잡았고, 내가 저지른 리팩터링이 떨어뜨린 탐지까지 게이트가 집어냈다. 모델 버전을 올릴 때마다 다시 돌려야 하는 이유를 실측으로 정리했다.
WebMCP가 Chrome 149 오리진 트라이얼로 배포됐지만 2월 API는 이미 바뀌었다. navigator.modelContext는 document.modelContext로 옮겨졌고 provideContext는 보안 문제로 사라졌다. 지금 등록해야 할 툴 형태를 정리했다.
Google이 2026년 5월 7일 FAQ 리치 결과를 완전히 종료했다. 오프라인 검증기로 FAQPage JSON-LD를 실측하면 스키마는 통과하지만 리치 결과는 DEPRECATED다. 검증 통과와 노출이 갈라진 지금 코드와 콘텐츠를 어떻게 바꿀지 공식 문서로 정리했다.
Chrome 149가 WebSocket의 bfcache 차단을 풀었다고 발표했다. Chrome 150 세 환경에서 다시 재보니 notRestoredReasons는 여전히 websocket을 돌려줬다. 릴리스 노트와 실측이 갈리는 지점을 재현 스크립트와 측정 로그까지 함께 기록했다.
role="dialog"에 aria-modal="true"까지 붙인 모달에서 Tab을 세 번 누르자 포커스가 오버레이 뒤로 빠져나갔다. axe는 위반 0건. 같은 마크업을 aria-hidden, inert로 바꿔가며 키보드 포커스가 실제로 어디에 떨어지는지 기록했다.
직접 운영하는 음식점 추천 PWA에 Restaurant 구조화 데이터를 넣으면서 요일별 평문 영업시간 문자열을 openingHoursSpecification으로 변환하고, 같은 결함 세 개를 타입체크·스키마 검증기·런타임 게이트에 차례로 넣어 어느 계층이 무엇을 잡는지 측정했다.
뒤로 가기가 즉시 열리는지는 취향이 아니라 측정 대상이다. 차단 조건을 하나씩 심은 페이지 여섯 개에 back 내비게이션을 걸어 pageshow.persisted와 notRestoredReasons를 받아냈다. unload는 막혔고 beforeunload와 no-store는 통과했다.
W3C가 공개한 문자열 언어·방향 메타데이터 초안을 기준으로 4개 언어 블로그를 감사했다. 통합 RSS 1,248건이 언어 표시 없이 나갔고 dir="auto" 휴리스틱은 14건 중 4건을 틀렸다. dc:language 수정 코드와 회귀를 막는 빌드 게이트까지 정리한다.
손끝이 빗나가는 22×22 버튼에 Lighthouse는 접근성 92점을 줬다. WCAG 2.2 SC 2.5.8(최소 24×24)을 샌드박스에 심어 재보니 자동 도구는 크기 위반만 잡고 예외 조항은 사람에게 넘겼다. 스페이싱 예외 계산과 CSS 수정을 실측 로그로 정리한다.
nosnippet 한 줄은 이제 검색 스니펫만 끄지 않는다. Google 공식 문서는 이 지시자가 AI Overview·AI Mode의 인용 입력까지 막는다고 못박았다. 두 페이지를 만들어 파서로 max-snippet·data-nosnippet의 실제 효과를 다시 재봤다.
같은 HTML, 같은 바이트인데 CSS 한 줄만 넣었더니 강제 레이아웃이 27.3ms에서 1.8ms로 줄었다. 400개 섹션 페이지 두 벌을 Chrome 트레이스로 재고, content-visibility: auto의 절감분과 contain-intrinsic-size 함정까지 정리한다.
INP는 2024년 FID를 대체한 Core Web Vitals 응답성 지표다. 같은 220ms 작업을 통짜로 돌릴 때와 scheduler.yield로 쪼갤 때를 Event Timing API로 측정했다. 264ms(개선 필요)가 56ms(양호)로 떨어지는 과정을 코드와 로그로 기록한다.