Skip to content

Search Index Build 연속 3회 실패: canary 기대 ref 와 인덱스 세그먼트의 버전 skew 의심 #107

Description

@eddmpython

실측 (2026-08-07)

run 31149750083 (05:10) / 31155489978 (06:52) / 31158763974 (07:43 트리거, Data Sync 완료 직후) 3회 연속 동일 실패. 실패 step 은 모두 Audit source/no-answer canary pack 이고 이후 ops gate·cutover 평가가 연쇄 실패, promote 2단계는 스킵.

evidence artifact (search-index-build-evidence-31158763974) 의 searchCanary.build.json:

  • metrics: passRate 0.8 (4/5), sourceHitRate 1.0, sourceRefHitRate 0.0, noAnswerFalseAccept 0.0
  • 실패 row 1건: query "공시 원문 주요사항보고서(유상증자결정) 6.4 주식회사 벡트 정 정 신 고", expectedSourceRef dart:allFilings:20260806000547#section=0, failureType sourceRefMiss
  • top10 은 전부 allFilings 이되 rcept 가 20260722 이전. 세 run 의 top10 이 완전 동일 (결정론, flaky 아님)
  • 같은 artifact 의 searchProofBundle.build/localIndexInfo.json: 러너가 pull 한 인덱스는 builtAt 2026-08-04T17:45:19, dataAsOf 20260804, hasDelta true, nDocs 590731

즉 canary 는 08-06 공시를 기대하는데 러너 로컬 인덱스 본체는 08-04 까지다.

구조 (코드 직독)

  • canary 팩은 manifest 소유이고 인덱스 아티팩트 자신의 meta 에서 생성된다 (fieldIndexRebuild.py:1142, delta 반영은 localUpdate.py).
  • 평가는 evaluateSearchCanary.py_injectRefResolution 이 러너 로컬 인덱스의 effective meta (main+delta, tombstone 반영) 를 직독해 _refResolved 결정론 신호를 주입하고, canaryPack.py_refResolved False 를 sourceRefMiss 로 판정한다. 랭킹 top-K 멤버십은 무결성 proxy 로 쓰지 않는 것이 이미 확립된 설계다 (bigram 토크나이저의 보일러플레이트 self-retrieval 구조 한계).

유력 원인 2갈래

  1. 버전 skew (유력): full build 의 pull 단계가 delta 갱신된 manifest (canary 팩에 08-06 문서 포함) 와 08-04 본체 세그먼트를 함께 두면서 delta 세그먼트가 로컬에 없거나 적용되지 않음. effectiveMeta 에 08-06 문서가 없어 _refResolved False. 결정론 실패 패턴과 정합.
  2. 주입 폴백: _injectRefResolution 이 예외를 삼키고 BM25 폴백으로 진행하면 (evaluateSearchCanary.py except 절) 보일러플레이트 self-retrieval 구조 실패가 그대로 RED 로 나온다. 현재 report 에 주입 성공/폴백 여부가 기록되지 않아 로그만으로는 1과 구분 불가.

다음 검증 (완료 조건)

  • canary report row 에 _refResolved 값과 주입 모드 (deterministic / bm25Fallback) 를 echo 해 두 갈래를 로그에서 구분 가능하게
  • 러너의 Pull existing content index from HF 가 delta 세그먼트 파일까지 가져오는지 실측 (파일 목록)
  • skew 확인 시: full 빌드가 소비하는 manifest 와 세그먼트의 버전 원자성 복구 (같은 커밋의 쌍만 소비)
  • 3회 연속 실패로 promote 가 계속 스킵되는 중이라 full lane 인덱스가 08-04 에 고착. 장기화 시 신선도 저하가 사용자 표면에 닿는다

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions