--- kind: graphify-meta last_generated_at: 2026-07-24T09:43:00+0900 source_commit: 6154826 scopes: - full --- # Graph — graphify 산출물 메타 이 디렉토리는 `/graphify` 가 생성하는 지식 그래프 산출물의 **메타 정보만** 커밋한다. HTML/JSON/audit 본체는 `.gitignore` 대상이며 재생성 가능하다. > 설치·적용 가이드는 `atp-graphify` add-on 번들의 `graphify-usage.md` 참조. ## 엔트리포인트 사용법 - 구조 탐색이 필요한 작업 전에 이 파일의 `last_generated_at` 과 `source_commit` 을 확인한다. - 메인 브랜치 기준 마지막 소스 커밋보다 뒤쳐져 있다면 `graph-refresh-checker` 서브에이전트를 호출해 staleness 판정을 받는다. - 판정 결과가 `partial-stale` / `fully-stale` 이면 메인 에이전트가 `/graphify` 를 호출해 재생성하고, 이 파일을 갱신한다. - 더 이상 관련 없는 scope (제거된 모듈 등) 의 산출물은 재생성 전 **삭제** 한다. ## 산출물 레이아웃 ``` docs/graph/ ├── index.md # 이 파일 — 메타, 커밋 대상 ├── .gitignore # 본체 무시 └── / # scope 별 산출물 디렉토리 (무시됨) ├── graph.html ├── graph.json └── audit.md ``` scope 예시: `full`, `src`, `docs`, `src-features` 등. > **scope 전략**: 이 프로젝트는 `full` 단일 scope를 기본으로 한다 (src 1840노드 + docs 198노드 = 2038노드 수준은 단일 그래프로 감당 가능). src↔docs 교차 엣지(코드↔설계문서 관계)가 살아있어야 작업 컨텍스트가 끊기지 않기 때문. 규모가 수만 노드 수준으로 비대해지면 scope 분리 재검토. ## Scopes | scope | 마지막 생성 | 소스 커밋 | 대상 경로 | 요약 | | --- | --- | --- | --- | --- | | `full` | 2026-07-24 | `6154826` | `src/` + `docs/` | **incremental update** — 3커밋분 변경(4 파일: PostController.java + docs 3건) 재추출 후 `build_merge` 병합 시 고스트 중복 20 exact + 11 fuzzy 추가 제거(1477→1507 노드, 4570 엣지, 76 커뮤니티 — 커뮤니티 수 불변이라 기존 라벨 재사용). `posts-list.jsp`/`posts-empty.jspf` 는 canWrite 권한 조건부 렌더 추가했으나 JSP 확장자가 여전히 스캔 범위 밖이라 그래프 미반영. | ## 알려진 한계 (영속 — Scopes 표와 달리 재생성해도 덮어쓰지 않음) - **JSP/JSPF 는 graphify 스캔 범위 밖.** `/graphify` 의 code 확장자 판정 목록(`.py .ts .js .go .rs .java .cpp ...`)에 `.jsp`/`.jspf` 가 없어 AST 추출 대상이 아니고, semantic(LLM) 청크로도 code 파일 취급되지 않는다. `src/main/webapp/WEB-INF/views/**` 의 뷰 로직 변경(조건부 렌더, `<%@ include %>` 관계 등)은 구조적으로 그래프에 반영되지 않는다. - 재확인 세션: `20260701-083240`, `20260724-092601`(PostController.list() ↔ posts-list.jsp/posts-empty.jspf 의 `canWrite` 바인딩 — 컨트롤러측만 반영, 뷰측 미반영). - **적용**: 컨트롤러↔JSP 매핑, 뷰 조건부 렌더 등은 graphify query 로 찾지 말고 `grep`/`Read` 로 직접 확인한다. `graph-refresh-checker` 는 변경분이 JSP/JSPF 뿐이면 incremental 재추출을 시도하지 않고 "그래프 미반영(알려진 한계)"로 즉시 판정해도 된다(no-scope-change 취급). ## 갱신 시 체크리스트 - [ ] frontmatter 의 `last_generated_at`, `source_commit`, `scopes` 갱신 - [ ] 아래 "Scopes" 표에 한 줄 추가/갱신 - [ ] 폐기된 scope 가 있다면 해당 디렉토리 `rm -rf` + 표에서 제거