D-4 공백 리포트 조회·집계 — 쌓인 신고를 읽는 경로

무엇을

w4-knowledge-gap-intake입구만 만들었다. 신고는 쌓이는데 읽는 경로가 없어 아무도 볼 수 없었다status 컬럼(open/resolved)까지 있는데 옮길 방법도 없었다. 2.5절 D-4가 정한 “B·C·F 를 같은 루프로 누적” 에서 루프가 닫히지 않은 상태였다.

GET   /hub/knowledge-gaps           목록 (module·status 필터 + 페이지네이션)
GET   /hub/knowledge-gaps/summary   모듈 축 · 도메인 축 집계
PATCH /hub/knowledge-gaps/{id}      open ↔ resolved

엔드포인트 11 → 14개.

판단한 것

⚠ 집계에 우선순위·심각도를 두지 않는다

부록 A-1. 건수가 많다는 사실과 그것이 중요하다는 판단은 다르고, 후자는 사람이 지식베이스를 보고 정한다. 응답 스키마에 priority·severity·risk 필드가 아예 없어서 화면이 그런 표현을 만들 재료가 없다 — 테스트로 고정했다.

검증

server 288 → 311개 통과, 계약 4종 KEPT. 실제 PostgreSQL 로 integration 통과 — 가짜 커서로는 FILTER (WHERE ...) 집계·LEFT JOIN· 필터 조합이 문법이 틀려도 통과하므로 실제 DB 로 확인했다(통화 없는 신고가 살아남는 것, 집계 두 축, 상태 전이, 없는 id 가 False 인 것).