포스팅 목록 헤더 링크·빈 상태 버튼을 canWrite 로 감싸 권한 없는 세션엔
노출되지 않도록 함. 신규 권한 로직 없이 create()/edit 에서 이미 쓰던
gate.has(session, PermissionKeys.POST_WRITE) 를 list() 에서도 재사용.
docs/graph/index.md: PostController.java 변경분 incremental 반영
(1477→1507 노드). JSP 는 여전히 그래프 스캔 범위 밖(기존 한계).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UqyLwTxF3FmW1eJCWN8yAo
/atp:task 세션 20260701-113509 — Artifact 샘플 제시(4안) → 사용자 선택
(C. 타이틀 내부 통합형 + 요약 그래프-only) → game-detail.jsp 반영(0c8da40)
까지의 결정 로그·검증 결과 기록.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011h6etRXJLx1xdfxmVcHjBg
세션 회고 반영. 두 교훈 모두 이번 세션에서 실제 재질의 왕복 비용을
발생시킨 구조적 결함:
1. 한글을 \u 코드포인트로 수동 타이핑하다 오타로 2회 깨짐 → 리터럴
UTF-8 작성 규칙 명문화.
2. "각 그래프"(복수) 지적을 미터바 단수로 임의 축소 해석 → 사용자
정정("내가 말한건 육각 그래프였어") 발생 → 복수 표현 시 전체
후보 나열 규칙 명문화.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011h6etRXJLx1xdfxmVcHjBg
graph-refresh-checker partial-stale 판정(buildHexRadar 시그니처 변경) 후
재생성 시도 — fork 위임이 graphify SKILL 의 서브에이전트 필수 병렬
디스패치 요구와 정면충돌해 무산(248k 토큰 소모, 결과 0). 사용자 확인
후 이번 세션은 open_items 로 이관, 다음 구조적 변경 배치에서 처리.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011h6etRXJLx1xdfxmVcHjBg
미터바 픽스와 별개로 실제 지적 대상은 레이더 차트였음 — 육각형만으론
어떤 축인지, 꼭지점이 어떤 점수인지 식별 불가. buildHexRadar 에
withLabels 옵션 추가(요약 레이더만 적용, 리뷰카드 소형 레이더는
밀도 문제로 제외)해 각 축 끝에 이름을, 꼭지점 옆에 점수를 SVG
text로 배치. 동심 그리드도 4단→5단으로 바꿔 0~5점 정수 스케일과
1:1 대응시킴.
구현 중 우측 축 라벨이 옆 범례(dl)와 겹치는 문제 발견 — 원인은
범례가 radar wrapper 내부에 append되는 구조라 `.game-reviews__radar`
자체에 gap이 없었던 것. gap 추가로 해결, 라이트/다크 양쪽 스크린샷
재확인.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011h6etRXJLx1xdfxmVcHjBg
retrospective-advisor 회고(세션 20260701-100731) 반영:
- "버그 범주 → L 레벨" 표에 'SQL data-only(DML)' 행 추가 — L1 해당없음
명시 + L2(API/DB 값 일치) 필수. 매 seed/백필 세션마다 즉흥 재정당화
하던 스킵 근거를 레지스트리에 고정.
- needs_user_verification 이월 시 최근 세션에 docs화된 렌더 관련
known pitfall(예: JSP stale 렌더링)과 경로가 겹치면 명시 인용하는
규약 추가. 직전 세션(20260701-093754)의 JSP 즉시반영 실패 교훈이
후속 세션에 인용 안 된 사례를 근거로 신설, 이번 report.md 에도
소급 적용.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162BaZnrbiYgWc9JJMZ9Czb
/game/3 더미 리뷰 5건이 6축 리뷰 스펙(GameReviewController.AXIS_KEYS)
도입 이전 데이터라 game_review_axes 행이 0개였음. parseAxes 는 6축
전부 필수라 신규 리뷰는 항상 축을 갖는데, 시드 더미만 예외 상태 —
game-detail.jsp 레이더 차트가 더미 리뷰에 빈 값으로 렌더됐다.
- db/seed-dev.sql: 리뷰 5건 각각 6축(immersion/creativity/controls/
completeness/sound/visual) INSERT 추가. 평균 반올림이 기존 rating과
일치하도록 설계 + 리뷰 본문 뉘앙스 반영. 멱등(NOT EXISTS 가드),
구버전 seed 재실행 시에도 axis 백필되도록 처리.
- 라이브 dev DB(game_id=3)에 즉시 재적용해 백필 완료.
검증: seed-dev.sql 재실행 에러 0 / GET /game/3/reviews 200, 6건 전부
axes 6키 채움 / GET /game/3 200, 레이더 마크업 서빙 확인.
graph-refresh-checker: fresh(재생성 불필요, DML-only 변경).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162BaZnrbiYgWc9JJMZ9Czb
카드 여백 수정 세션에서 JSP CSS 수정이 "저장 즉시 반영" 문서 설명과
달리 컴파일 캐시로 반영 안 되는 사례 발견. 브라우저 스크린샷만으로
검증한 1차 확인이 stale 렌더링을 보고 false pass를 냄(사용자가
재캡처 스샷 대조로 발견). docker compose restart app으로 해소.
향후 JSP 수정 검증 시 curl로 서빙 CSS/마크업을 파일과 직접 대조하는
단계를 local-dev-setup.md 함정 항목으로 추가.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bn6vdHrUHqVzzUfC9da6fS
직전 커밋(b11546a)에서 늘린 여백이 과도하다는 사용자 피드백.
단순 롤백 대신 frontend-design 원칙 적용:
- .card__likes margin-top 0.45rem(고정) → auto (flex 하단 앵커링)
제목 1줄/2줄 무관하게 좋아요 줄이 항상 카드 바닥에 정렬
- .card__body padding 0.7·0.75·0.75 → 0.65·0.75·0.7rem 소폭 축소
런타임 스모크: docker compose 컨테이너 기동 상태에서 GET / 200,
브라우저 fork로 라이트/다크 시각 확인 PASS.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bn6vdHrUHqVzzUfC9da6fS
외부 디자인 툴 산출물(리디자인 zip: 7 JSP + bibimbap.css + 3 jspf + error.jsp)을
전수 검토하고 우리 실제 코드와 design↔reality 매핑을 확정. 코드 변경 없음(검토 세션).
핵심: 산출물은 라우트(/games 복수 vs 실제 /game 단수), 폼 제출(classic POST vs
JSON API+AJAX), CSRF(전무 vs CsrfTokens/_csrf/window.BibimbapCsrf), contextPath
(${ctx} vs ${pageContext.request.contextPath}), include(common/ 가정 vs 평면),
에러(web.xml/error.jsp vs errer 뷰), css 디렉토리(없음) 가 모두 불일치 →
파일 통째 교체 금지, 공유 bibimbap.css 신설 + 비주얼 레이어 이식으로 결론.
산출물: artifacts/handoff-prompt.md (새 세션 작업 프롬프트 + 매핑표 + 하드 제약 + 순서).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162BaZnrbiYgWc9JJMZ9Czb
- docs/changes/2026-06-30-screenshot-guide-auth.md 신규 작성
- docs/changes/index.md 링크 추가
- docs/development/screenshot-guide.md 변경 이력 섹션 추가
- .atp/work-session/20260630-141415/ 세션 보고서 포함
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162BaZnrbiYgWc9JJMZ9Czb
src↔docs 교차 엣지 단절 문제로 분리 scope 폐기.
merge-graphs로 2038노드/4685엣지 full 그래프 생성.
규모 비대화 시 재검토 노트 work-session에 기록.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3FeMrbtxfTScjrwUukyHD
work-session 은 추적 대상(durable history)이나 3개 디렉토리가 untracked 로
남아 있던 것을 소급 기록 — 추적 관행 일관성 복원.
- 20260622-162345: 이번 세션(로컬 DDL 적용 + 커밋 정책).
- 20260622-092800: 오늘 선행 세션.
- 20260618-145152: 6/18 orphan(후속 W3-2 작업에 이미 계승됨).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
W3 합의 세션 회고 교훈을 MEMORY 대신 docs/development/ 에 반영(사용자 지시).
사용자 대면 의사결정 제시문은 배경+선택지+권장 풀어쓰기, 압축은 내부 산출물 한정.
발원: 20260617-174635 세션 W3-1 마무리 질문 과압축 → 사용자 파악 실패.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
W3-1~W3-5 골자를 기능별·항목별 합의해 status draft→confirmed.
- W3-1 태그+검색: 통합 1테이블, 정렬 매트릭스(태그 일치도 가중×2차키), 개발자 검색
- W3-2 댓글/리뷰: 리뷰=별점5+서술(다축 후속), 권한 작성자+운영자, 수정=이력보존+'수정됨' 표시
- W3-3 포스팅: W1 완료 후 착수, 카테고리 DB, 마크다운, OG 미리보기, 유니티블로그 외부 피드 감시
- W3-4 메인 허브: 잼 노출=검색창 아래 배너→잼 태그 검색 라우팅, 페이지네이션 도입
- W3-5 WebGL: deferred 유지, 조사 항목 7개·권한·QG-3 조사 단계로
합의 중 새 결합 3건 발굴: W3-1↔W3-2 양방향 / W3-4→W3-1 잼태그 라우팅 / W3-3 외부 fetch 인프라.
착수순서 W3-2→W3-1→W3-4→W3-3→W3-5 확정. 미결질문은 해소 않고 합의 목록으로 유지.
세션 산출 동봉(20260617-172407 초안 생성 + 20260617-174635 합의).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
20260617-150635 로드맵(S1~S7, 의존성축)을 목적축("왜 존재/누구를 위한가")으로
재검토. 모든 항목이 단일 "게임잼" 프레임에 묶여 있던 것을 4개 목적 워크스트림으로 분해:
- W1 거버넌스/RBAC — 사이트 거버넌스, 게임잼은 소비자, 독립
- W2 게임잼 — 본체(엔티티+심사위원역할+잼평가설계+심사/투표/시상)
- W3 사이트 플랫폼 — 태그검색·댓글리뷰·포스팅·메인허브·Unity, 전부 잼일정 독립
- W4 유저 배지/평판 — 신규 발굴(리뷰어/기술자가 RBAC 플래그로 오분류됐던 것)
150635 대비 핵심 교정 5건 + S→W 매핑표 + 의존성 그래프(빌드순서) 유지.
번들(이전 잔여 정리): 오늘 work-session durable history
(094450/143315/150635/162536), serena 설정·메모리, 분석문서 교차링크.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
docs/ 카테고리 트리(adr·analysis·architecture 등)와 ATP 워크플로 문서를 신규 추가하고,
4축(아키텍처·보안·품질·도메인) read-only 종합 분석을
docs/analysis/2026-06-16-project-analysis.md 로 기록한다.
- 신규 분석 문서 + docs/analysis/index.md 링크
- 기존 docs 2건(db-update-query-generator, user-signup-schema)에 교차링크 추가
- CLAUDE.md 프로젝트 지침, .atp/work-session 분석 세션 기록, .serena 프로젝트 설정 포함
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>