데이터무결성 ★ 2026-07-15
v1.36.28
미검토 표면 헌트: 데이터 유실 클래스(손상 스토어 클로버 · URL 덮어쓰기) + 정확성(impact 전이 · alias 경계)
제외
핵심 변경
**#3 P1 (데이터 유실 클래스) — 손상 JSON 스토어를 빈 값으로 오인해 덮어쓰기**: state.json/teams.json/platform-constraints.json 이 손상되면 fail-open 으로 빈 기본값이 되어 기존 데이터(진행 중 run·팀·커스텀 제약)를 소실시켰다. _assertStoreParsable(파일 "없음"과 "있으나 손상" 구분) + _guardStore 로 **변경(저장)을 거부하고 원본 보존** + store_corrupt 구조화 에러. 설계: SAVE 진입점에서만 던짐(handoff 등 비변경 읽기는 resilient 유지) — 단 state 는 카운터 리셋이 run 파일 클로버를 유발해 load 에서 던지고 stateCmd 를 감쌈.
**#4 P2 (데이터 유실) — api-skill 이 쿼리 다른 URL 을 같은 id 로 덮어씀**: ?doc=alpha 와 ?doc=beta 가 둘 다 example.md 로 슬러그돼 앞 URL·방향이 소실. 같은 id 파일의 저장 URL 이 다르면 정규화 URL 해시(_shortHash)를 붙여 분리, 같은 URL 재등록은 멱등 갱신 유지.
**#8 P2 (정확성) — feature impact 역의존 전이 누락**: A←B←C 에서 impact A 가 B 만 반환(C 누락). 역방향 depends-on 을 BFS 종료 후 1-홉이 아니라 BFS **안**에서 확장(visited 로 사이클 안전) → C 가 depth 2 로 포착.