증상 — 판례 검색 결과가 0건으로 나왔다
채무 분쟁 상담 사안을 진단하는 도중, 법제처 판례 검색 조회 창구에 '가사채무 연대책임'이라는 검색어를 넣었다. 가족 간 채무를 은닉하고 상대에게 연대책임을 물을 수 있는지가 쟁점인 사안이었고, 같은 쟁점을 다룬 판례가 있는지 먼저 확인하는 단계였다. 진단서를 쓰기 전에 근거가 되는 판례를 먼저 찾아 두려는 통상적인 순서였다.
결과는 0건이었다. 오류 메시지가 아니라 정상적으로 끝난 조회였고, 화면에는 그냥 빈 목록만 떠 있었다.
이 결과를 그대로 받아들이면 이 사안에는 참고할 만한 판례가 전혀 없다는 진단이 그대로 나가게 된다. 법률 사안에서 이런 문장 하나는 상담자가 다음에 무엇을 할지를 크게 바꾼다 — 판례가 없다는 말을 들으면 사람은 그 경로를 아예 접는다.
비슷한 시기에 다른 증상도 하나 더 있었다. 조문 원문을 가져오는 다른 조회 경로에서 '상법 제1조'를 검색했더니, 전혀 다른 법의 조문이 경고 하나 없이 돌아왔다. 돌아온 것은 「1980년해직공무원의보상등에관한특별조치법」 제1조였다. 조문 번호도, 형식도 완벽했다.

처음 의심한 것 — 정말 판례가 없는 사안일까?
0건이라는 결과를 보고 가장 먼저 든 생각은 단순했다. 이 사안에는 정말로 판례가 없는 것 아닐까 하는 의심이었다. 가족 간 채무를 은닉하고 연대책임을 다투는 사안은 법원까지 가는 일 자체가 드물고, 간다 해도 판결문으로 남기보다 조정으로 끝나는 경우가 많으리라는 짐작이 그 의심을 뒷받침했다.
두 번째 증상, 즉 '상법 제1조'가 엉뚱한 법으로 돌아온 일에 대해서는 처음엔 다른 의심이 들었다. 조회 창구 자체가 일시적으로 오류를 낸 것 아닌가 하는 의심이었다. 조문 번호와 형식이 완벽했기 때문에, 데이터를 가져오는 쪽이 아니라 데이터 자체가 어딘가에서 잘못 저장돼 있는 게 아닐까 생각했다.
두 의심 모두 그 자리에서는 그럴듯했다. 하나는 '이 사안의 특성상 판례가 드물다'는 법률적 직관이었고, 다른 하나는 '도구가 한 번 삐끗했다'는 기술적 직관이었다. 둘 다 결과를 그대로 믿고, 그 결과가 나온 이유를 결과 바깥에서 찾는 방식이었다.
확인 수단 — 검색어를 쪼개고, 명령을 바꿔 다시 조회하다
첫 번째 의심을 확인하는 수단은 단순했다. 검색어를 바꿔서 같은 조회 창구에 다시 묻는 방법이다. '가사채무 연대책임'처럼 단어 세 개를 묶은 복합 키워드 대신, 단어를 하나씩 쪼개 '배우자 채무'로 다시 검색했다.
이 판례 조회는 법제처 Open API를 직접 부르는 프로그램(`law.py`)으로 한다. 이 프로그램의 판례 검색 명령은 `python3 $S/law.py prec "배우자 채무" 20` 형태로 쓰고, 뒤의 숫자는 결과를 몇 건까지 가져올지 지정하는 인자다.
두 번째 의심을 확인하는 수단은 달랐다. 같은 법령명을 다른 명령(`law.py article`)으로 다시 조회하는 방법이었다. 이 명령은 법령명이 정확히 일치할 때만 조문을 통과시키고, 일치하지 않으면 후보 목록을 보여주며 멈추도록 이미 만들어져 있던 도구였다.
관측 수단은 결국 같은 원리다. 결과가 이상하면 그 결과를 낳은 질의 자체를 바꿔서, 같은 사실을 다른 경로로 다시 확인하는 방법을 쓴다. 결과만 다시 쳐다봐서는 검증이 되지 않고, 질의를 바꿔야 검증이 된다.

알리바이 — 두 가설은 왜 둘 다 틀렸나?
'이 사안엔 판례가 없다'는 첫 가설은 재검색 한 번으로 무너졌다. 검색어를 '배우자 채무'로 쪼개 다시 돌리자 같은 법리를 다루는 판례가 85건 나왔다. 판례가 없는 게 아니라, 검색어가 너무 복합적이어서 0건이 나온 것이었다.
0건은 부존재의 증거가 아니라 검색어 문제의 증거다.
'조회 도구 자체가 오류를 낸 것'이라는 두 번째 가설도 알리바이가 있었다. `law.py article` 명령으로 같은 법령명을 정확한 이름으로 다시 조회하면 조문이 정상적으로 나왔다. 도구가 망가진 게 아니라, 짧은 이름으로 검색했을 때 조회 로직이 다른 법을 집어 왔다는 점이 드러났다.
두 알리바이는 방향이 같았다. 둘 다 처음엔 '결과가 이상하니 그 위쪽 시스템(사안의 성격, 또는 도구의 정상 작동 여부)이 잘못됐을 것'이라는 의심이었는데, 실제로는 그 시스템에 넣은 질의 자체가 시스템이 감당하기 어려운 형태였다.
진짜 원인 — 검색 로직이 예상과 다르게 동작했다
두 사고의 진짜 원인은 하나로 모인다. 법제처의 검색 방식이 상식적으로 예상한 바와 다르게 동작했다는 뜻이다. 두 조회 모두 겉으로는 멀쩡했고, 안쪽 매칭 규칙만 예상과 어긋나 있었다.
판례 검색은 두 단어 이상을 조합하면 0건이 흔하게 나오는 특성이 있었다. '가사채무 연대책임' 같은 세 단어 조합은 그 세 단어가 모두 정확히 들어간 문서를 찾는 방식이라, 실제로는 같은 쟁점을 다루는 판례가 있어도 조합이 정확히 맞지 않으면 걸리지 않는다.
법령명 검색은 반대 방향의 문제였다. 정확 일치가 아니라 부분문자열로 매칭됐다. 짧은 이름일수록 그 이름을 포함하는 엉뚱한 법이 1순위로 올라온다. '상법'이라는 두 글자는 「1980년해직공무원의보상등에관한특별조치법」이라는 훨씬 긴 이름 안의 '보상법'이라는 부분에도 걸렸다.
두 경우 모두 결과의 형식은 멀쩡했다. 판례 0건은 오류 메시지가 아니라 정상적인 검색 결과였고, 엉뚱한 법의 조문은 번호와 형식이 완벽했다. 형식이 멀쩡하면 사람은 그 결과를 의심하지 않고 그대로 받아들이기 쉽다.

고친 방법 — 정확 일치만 통과시키는 도구를 따로 만들다
두 사고를 겪은 뒤로 이 도구가 애초에 왜 만들어졌는지를 다시 새겼다. 법률 답변이 망가지는 방식은 대체로 셋으로 갈린다 — 조문을 기억으로 인용하는 것, 여러 쟁점을 하나로 뭉뚱그려 진단하는 것, 요건이 맞는 것과 실제로 효과가 있는 것을 착각하는 것이다. 조문·판례를 기억이 아니라 매번 실조회하고 출처를 다는 규칙은 이 셋 중 첫 번째를 막으려고 세운 규칙이었는데, 이번 두 사고는 그 실조회 결과 자체도 곧이곧대로 믿으면 안 된다는 사실을 보여줬다.
판례 0건 문제는 검색 습관을 바꾸는 방식으로 고쳤다. 복합 키워드로 0건이 나오면 그 자리에서 결론을 내리지 않고, 단어를 쪼개 다시 조회하는 절차를 함정 목록 문서에 명문화했다.
- 0건이 나오면 '판례 없음'으로 바로 결론 내리지 않는다
- 복합 키워드를 단어 단위로 쪼개 다시 조회한다
- 법률·시행령·고시·유권해석·실무관행까지 층을 다 훑었는지 확인한다
- '그럼 이걸 업으로 하는 사람들은 실제로 어떻게 하고 있나'에 답할 수 있는지 확인한다
법령명 오인용 문제는 검색 습관이 아니라 도구 자체를 나눠서 고쳤다. 법령 조문을 조회하는 경로를 `law.py article`이라는 별도 명령으로 좁혔다. 이 명령은 법령명이 정확히 일치할 때만 조문을 통과시키고, 일치하지 않으면 후보 목록을 보여주며 멈춘다.
다른 경로로 조문을 얻었을 때를 대비한 장치도 하나 남겨 뒀다. 응답에 찍히는 '법령명:' 줄을 사람이 눈으로 확인하는 절차다. 자동으로 걸러지지 않는 경로에서는 이 한 줄이 유일한 안전장치였다.
같은 실수를 막는 장치 — 발송 직전에 전 문서를 다시 대조하다
이 두 사고가 만든 재발 방지 장치는 한 번의 조회 시점에서 끝나지 않았다. 문서가 여러 차례에 걸쳐 쌓이는 실제 사안에서는, 각 조회 하나하나는 정확했어도 전체를 모아 보면 다른 층의 오류가 남을 수 있었다. 앞 단계의 결론이 재검증 없이 뒤 단계 문서에 그대로 옮겨지는 경우가 그런 자리다.
그래서 문서 뭉치가 완성돼 실제 상담자에게 발송하기 직전, 정규식으로 전 문서의 사건번호·조문번호를 추출해 법제처와 일괄로 다시 대조하는 절차를 추가했다.
- 명령: `grep -rEoh '[0-9]{4}[도므가나다카타파하][0-9]{2,6}' analysis/ | sort -u`
- 추출된 사건번호를 판례 전문 조회 명령(`law.py prectext`)으로 하나씩 다시 확인
2026년 8월 23일, 실제 채무 관련 사건 문서를 이 절차로 감사하다가 사건번호 36건 중 실제 오류 2건을 잡았다. 하나는 사건명이 일치하지 않는 오인용이었고, 다른 하나는 판결 주문에는 없는 벌금 액수가 여러 문서에 그대로 반복된 경우였다.

조회 시점의 검증과 발송 직전의 전수 감사는 서로 다른 오류를 잡는다. 하나가 다른 하나를 대체하지 않고, 둘 다 있어야 문서 뭉치 전체가 안전해진다.
같은 실수를 막는 장치 — 기억도 원자료와 대조해야 했다
두 사고 모두 결과의 형식이 멀쩡해서 사람이 의심하지 않는다는 공통점이 있었다. 같은 함정은 조문·판례 조회가 아니라 사람의 기억을 다룰 때도 나타났다. 상담자의 기억이나 메모를 근거로 삼기 전에, 통화 녹음을 행 번호가 붙은 전사문으로 만들고 그 전사와 대조표를 만드는 절차가 그래서 따로 있다.
이 대조에서 실제로 18개 항목 중 4개 항목이 수치·종목명에서 어긋난 적이 있었다. 사람의 기억은 방향은 맞아도 숫자와 시점이 자주 틀린다는 뜻이다. 대조 없이 쓴 진단서는 상담자의 착오를 그대로 법적 결론으로 승격시킬 위험이 있고, 확정되지 않은 사실은 다툼 없는 상위 표현으로 낮춰 적는 규칙도 이때 함께 생겼다.
확정되지 않은 사실을 다루는 방식도 이때 함께 정해졌다. 대조표에서 '부분일치'로 판정된 항목, 그러니까 방향은 맞지만 수치·시점이 아직 확정되지 않은 항목은 진단서에 단정문으로 적지 않고, 다툼 없는 상위 표현으로 낮춰 적는다. 예를 들어 특정 종목명 대신 그 종목이 속한 테마 이름 정도로 적는 식이다.
법률 사안에서 제일 나쁜 산출물은 '모르겠다'가 아니라 자신 있게 틀린 답이다. 그게 실제 행동을 바꾸기 때문이다.
정리하면 두 조회 사고와 한 기억 대조 사고가 가리키는 방향은 같다. 결과의 형식이 완벽해 보인다고 해서 그 결과가 맞다는 뜻은 아니다. 조회든 기억이든, 원자료와 직접 대조하는 절차가 없으면 그 형식은 그냥 그럴듯해 보이는 겉모습일 뿐이다.
비슷하게 법령이나 판례를 인용해야 하는 문서를 AI로 만들고 있다면, 국내가 아니라 해외 법령을 다루는 경우의 검증 장치는 AI 법령 인용 검증 — 5개국 중 3개국이 없는 법이었다에 따로 정리해 뒀다. 국내·해외를 막론하고 이런 조회 로직을 직접 점검받고 싶다면 상담에서 어디부터 봐야 하는지 물어볼 수 있다.