From c2daee8e6da73965c998a44d0e94739a710d0caf Mon Sep 17 00:00:00 2001 From: art Date: Fri, 24 Jul 2026 09:47:52 +0900 Subject: [PATCH] =?UTF-8?q?docs(graph):=20JSP/JSPF=20graphify=20=EC=8A=A4?= =?UTF-8?q?=EC=BA=94=20=EB=B2=94=EC=9C=84=20=EB=B0=96=20=EC=95=8C=EB=A0=A4?= =?UTF-8?q?=EC=A7=84=20=ED=95=9C=EA=B3=84=20=EC=A0=88=20=EB=93=B1=EC=9E=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Scopes 표는 재생성 때마다 덮어써져 이 사실이 매번 사라짐 — 20260701/20260724 두 세션에서 재확인된 재발 이슈라 영속 절로 분리. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01UqyLwTxF3FmW1eJCWN8yAo --- .atp/work-session/20260724-092601/report.md | 48 +++++++++++++++++++++ docs/graph/index.md | 6 +++ 2 files changed, 54 insertions(+) diff --git a/.atp/work-session/20260724-092601/report.md b/.atp/work-session/20260724-092601/report.md index 3252bf1..e1b7ef3 100644 --- a/.atp/work-session/20260724-092601/report.md +++ b/.atp/work-session/20260724-092601/report.md @@ -50,8 +50,56 @@ POST_WRITE 권한 없는 세션엔 노출되지 않도록 변경. 서버측 신 ## Needs_user_verification - (없음) — dev 컨테이너 재시작으로 즉시 반영 확인 완료. 운영 배포 시엔 일반 배포 절차(재빌드/재시작)만 필요. +## user_signals +positive: [] +negative: [] + ## graph_refresh decision: handled_inline judgment: partial-stale scopes_processed: [full] reason: '변경 4파일(≤5) → B-1 인스턴스 내 즉시 처리. incremental update로 1477→1507 노드(고스트 중복 20 exact+11 fuzzy 제거), 76 커뮤니티 불변이라 기존 라벨 재사용. docs/graph/index.md 메타 갱신 완료. JSP/JSPF 확장자는 graphify 스캔 범위 밖이라 posts-list.jsp/posts-empty.jspf 변경은 그래프 미반영(기존 한계, 이번 세션 이슈 아님).' + +## Retrospective + +```yaml +Retrospective: + signals: + positive: [] + negative: [] + what_went_well: + - '요구 명확성 판정이 정확했다 — 4개 advisor 전원 스킵(요구/조사/설계/구현) 근거가 각각 자명했고(기존 POST_WRITE 게이트 재사용, 영향 파일 3개 확정, 신규 로직 0), SKILL §5.1 마이크로 편집 예외 조건(파일 수 소규모·경합 없음)에 부합 — 결과적으로 L1 compile GREEN + 수동 스모크 2건(익명 미노출/admin 노출) 1라운드 통과, 재작업 0.' + - 'graph_refresh 가 변경 파일 중 posts-list.jsp/posts-empty.jspf 가 그래프에 반영되지 않는다는 사실을 숨기지 않고 reason 필드에 명시 — "판정 근거를 투명하게 남긴다" 원칙에 부합.' + what_to_improve: + - 'JSP/JSPF 가 graphify 스캔 범위 밖이라는 사실이 세션 20260701-083240(§285 인용)에 이어 이번 세션(20260724-092601)까지 최소 2회 재확인됐으나, 두 번 다 해당 세션의 report.md 및 docs/graph/index.md "Scopes" 표(매 graphify 실행마다 덮어써짐)에만 1회성으로 기록됐다 — 영속 위치에 없어 다음 JSP 변경 세션이 또 한 번 관찰/재확인 비용을 치를 가능성이 높다.' + memory_candidates: + - name: graphify-jsp-scan-gap + type: reference + description: 'graphify 는 .jsp/.jspf 를 code 확장자로 인식하지 않아 JSP 기반 뷰 변경이 그래프에 구조적으로 반영되지 않음 (2회 재확인: 20260701-083240, 20260724-092601)' + body_draft: | + Why: graphify SKILL.md 의 code_only 판정 목록(`--update` 절, code_exts 셋)은 + `.py .ts .js .go .rs .java .cpp .c .rb .swift .kt .cs .scala .php ...` 등 + 고정 확장자만 code 로 인식한다. `.jsp`/`.jspf`는 이 목록에 없어 AST 추출 대상이 + 아니고, semantic(LLM) 청크로도 code 파일 취급되지 않는다. bibimbap 은 뷰 레이어가 + JSP 라서 화면 로직 변경(예: canWrite 조건부 렌더)은 구조적으로 그래프에 반영될 수 + 없다 — 세션마다 새로 관찰하는 대신 알고 시작해야 하는 사실. + + How to apply: + 1. graph_refresh 판단 시 변경 파일이 JSP/JSPF **뿐**이면 incremental 재추출을 + 시도하지 말고 "그래프 미반영(알려진 한계)"로 즉시 판정 — no-scope-change 취급. + 2. 뷰 레이어 구조(컨트롤러↔JSP 매핑, `<%@ include %>` 관계 등)를 그래프로 질의하지 + 않는다 — grep/Read 로 직접 확인. + 3. docs/graph/index.md 에 "Scopes" 표(매 실행마다 덮어써짐)와 분리된 영속 + "알려진 한계" 절을 두어 이 사실이 재생성 때마다 사라지지 않게 한다. + rationale_for_saving: '23일 간격으로 2회 재발(재현성 확인), 코드/git log만으로는 유도 불가(그래프 산출물을 직접 열어봐야 드러남), 어디에도 영속 기록이 없음(ephemeral report.md·매회 덮어써지는 Scopes 표에만 산발).' + signal_source: observation + docs_sync_target: /Users/wemadeplay/workspace/stz/bibimbap/docs/graph/index.md + memory_optional: true + protocol_feedback: + - 'graph_refresh 판단 절차(§graph_refresh)에 "변경 파일 전체가 graphify 미인식 확장자(JSP/JSPF 등 템플릿 계열)일 때 incremental 추출을 생략하고 즉시 no-scope-change 로 판정" 하는 명시적 fast-path 를 추가 제안 — 이번 세션은 코드(PostController.java)가 섞여 있어 낭비가 없었지만, 순수 JSP-only 변경 세션에서는 매번 동일 관찰을 반복할 위험.' + - 'docs/graph/index.md 템플릿(atp-graphify add-on 산출물 규약)에 "Scopes" 표와 별도로 영속되는 "알려진 한계"(Known limitations) 절 슬롯을 표준 포함 제안 — 표는 매 재생성 때 덮어써지므로 도구 경계에 대한 사실은 다른 곳에 살아야 한다.' + applied_changes: + - 'docs/graph/index.md 에 "알려진 한계" 영속 절 신설 — JSP/JSPF graphify 스캔 범위 밖 사실 기록(docs-first, memory 는 사용자 설정 미확인이라 미기재)' +``` + +ended_at: 2026-07-24T09:52:00+09:00 diff --git a/docs/graph/index.md b/docs/graph/index.md index c77db7c..bb82855 100644 --- a/docs/graph/index.md +++ b/docs/graph/index.md @@ -41,6 +41,12 @@ scope 예시: `full`, `src`, `docs`, `src-features` 등. | --- | --- | --- | --- | --- | | `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` 갱신