새벽 1시 36분에 열어 밤 8시 30분에 닫은 하루였다. 퇴사하고 AI로 회사를 만드는 중이라 사이트 품질 기준도 혼자 정하는데, 외국인에게 한국 입국·생활 정보를 영어로 알려주는 사이트(korea-guide)에 기준을 하나 세웠다. 발행된 글에는 FAQ가 있어야 하고, 없으면 사이트 상태 점검을 실패로 만든다.
기준을 세운 날 점검이 처음 실패했다
20시 24분, 상태 점검이 종료 코드 1로 끝났다. 출력에 “FAQ 없는 발행 글 (오늘 게이트 기준 미달)“이라는 제목이 붙은 목록이 있었고, 거기 기후동행카드를 다루는 글 두 편(climate-card-payback-foreign-residents, climate-card-ending-which-card-now)이 들어 있었다. 그 아래로 더 있었다.
기준은 앞으로에 걸리고 점검은 전부를 본다
게이트를 정할 때 내 머릿속 문장은 “앞으로 쓰는 글은 FAQ 필수”였다. 점검은 그렇게 읽지 않는다. 이미 나간 19편도 같은 기준으로 센다. 글이 망가진 게 아니라 기준이 글보다 늦게 온 것이고, 늦게 온 만큼이 그대로 백로그가 된다.
함정으로 적으면 이렇다. 조건은 이미 발행된 글이 쌓여 있는 사이트에 필수 항목 게이트를 새로 세우고 그것을 상태 점검에 연결했을 때. 증상은 점검이 종료 코드 1로 끝나는데 실패 목록에 방금 만진 것과 무관한 옛날 글만 올라오는 것. 회피법은 기준을 정하는 그 자리에서 기존 글 전부에 먼저 돌려 미달 목록을 뽑고, 그 목록을 다 채운 다음에 점검을 실패로 바꾸는 것이다. 순서를 지키면 같은 정보를 빨간 점검이 아니라 할 일 목록으로 받는다.
발행 글에 필수 항목을 새로 정하실 거면, 정하는 날 그 기준을 이미 나간 글 전부에 먼저 돌려보세요. 저는 순서를 반대로 해서 세션이 끝나기 4분 전에 고칠 목록을 처음 봤고, 그래서 채우는 일은 그날 안에 시작도 못 했습니다.
같은 출력에 안 보던 숫자가 같이 찍혔다
미달 목록보다 그 위에 찍힌 숫자들이 더 낯설었다. 발행된 글 19개, 미발행 초안 1개, 라이브 사이트맵 27개 URL, 광고가 붙은 페이지 19개, 툴이 붙은 글 3개.

세 칸이 서로 안 맞는다. 사이트맵이 발행 글보다 8개 많고, 광고는 발행 글 수와 같은데 독자가 실제로 조작하는 툴은 3개에만 붙어 있다. 8개가 무엇인지는 모른다. 원인 모름, 재현 조건은 같은 디렉터리에서 상태 점검을 다시 돌려 사이트맵 URL 목록과 발행 글 목록을 나란히 놓고 빼보는 것이다.
사이트 상태를 한 번에 찍는 출력에 발행 글 수와 사이트맵 URL 수와 기능이 붙은 페이지 수를 나란히 두기 전까지, 나는 이 셋이 서로 벌어져 있다는 사실 자체를 몰랐다. 상태 점검에 숫자를 하나 더 넣는 비용은 한 줄이고, 그 한 줄이 없으면 격차는 몇 달이든 그대로 남는다.
FAQ는 아직 비어 있다
목록을 본 게 20시 24분이고 세션은 20시 28분에 끝났다. FAQ를 채우는 작업은 손도 못 댔다. 툴 두 개(ArrivalCardChecker, SimChooser)를 고친 게 그날의 실제 작업이었고, 판정 함수는 브라우저를 열지 않고 node로 직접 호출해서 확인했다.
다음은 기후동행카드 두 편에 FAQ를 붙이고 같은 상태 점검을 다시 돌려 종료 코드가 0으로 떨어지는지 보는 것이다.