코드 리뷰에서 잡은 검색·그래프 경계 결함 일곱 건을 한 장으로 응축해 확정

문제 (Context)

코드 리뷰에서 잡은 HIGH 등급 결함과 검색·그래프 경계 결정이 일곱 개의 개별 노드로 흩어져 있었다. 같은 묶음을 한 장의 결정으로 응축해, 완료 레인에는 종합 노드 하나만 남기고 원본은 보관으로 보존한다.

시도한 해결 (Decision)

일곱 결정을 한 묶음으로 확정했다.

  1. 노드 렌더가 콜론이 든 제목에도 깨지지 않도록 YAML을 안전하게 직렬화한다.
  2. 그래프가 평행한 타입 엣지를 보존한다(같은 노드쌍에 depends_on과 contradicts가 함께 존재).
  3. 검색 후보는 어휘 일치만 받고, 그래프는 재랭킹에만 쓴다.
  4. 검색이 읽기 시점에 폐기 노드를 제외한다(supersede-not-delete를 읽기 경로에서도 지킴).
  5. 증거맵이 소스에 없는 게이트 심볼을 가리키지 못하도록 드리프트 가드를 둔다.
  6. 회상이 읽기 시점에 경계를 재검사해 누수 노드를 제외한다.
  7. 회상이 폐기된 결정을 되살리지 않는다.

손댄 곳: wiki_chain/node_contract.py, md_graph.py, retrieval.py, kanban_wiki.py(render·recall).

수정 내역:

  • 콜론 제목 깨짐: yaml.safe_dump로 전환.
  • 엣지 덮어쓰기: MultiDiGraph로 교체.
  • 비어휘 노드 주입: 후보를 어휘 일치로 한정.
  • 폐기 노드 검색됨: terminal 필터 추가.
  • 게이트 심볼 드리프트: 존재 검사 추가.

근거·결과 (Consequences)

완료 레인에는 이 응축 노드 한 장과 0.0.2.5 마일스톤 결정만 남는다. 원본 일곱 결정 노드는 supersede-not-delete 원칙대로 보관 레인에 남겨 두며, recall로 여전히 질의할 수 있다. 남은 0.0.2.5 GUI 검증과 사인오프는 사람 몫이다.

노드 계약 (contract)

필드
type결정(decision)
Statusaccepted
source_count1
confidence미설정(구 엔진 격차)
confidence_reason_codes미설정(구 엔진 격차)
stalefresh
이슈(feature)RAG·지식엔진

시행착오 타임라인 (supersede)

상호참조


이슈 wiki_chain 코드 리뷰 · Status accepted · 2026-06-25